vulkanalia_sys/
structs.rs

1// SPDX-License-Identifier: Apache-2.0
2
3// DO NOT EDIT.
4//
5// This file has been generated by the Kotlin project in the `generator`
6// directory from a Vulkan API registry.
7
8#![allow(
9    non_camel_case_types,
10    non_snake_case,
11    clippy::bad_bit_mask,
12    clippy::let_unit_value,
13    clippy::missing_safety_doc,
14    clippy::missing_transmute_annotations,
15    clippy::needless_lifetimes,
16    clippy::too_many_arguments,
17    clippy::type_complexity,
18    clippy::unnecessary_cast,
19    clippy::upper_case_acronyms,
20    clippy::useless_transmute
21)]
22
23use core::ffi::{c_char, c_int, c_void};
24use core::fmt;
25use core::ptr;
26
27use crate::*;
28
29/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAabbPositionsKHR.html>
30#[repr(C)]
31#[derive(Copy, Clone, Default, Debug, PartialEq)]
32pub struct AabbPositionsKHR {
33    pub min_x: f32,
34    pub min_y: f32,
35    pub min_z: f32,
36    pub max_x: f32,
37    pub max_y: f32,
38    pub max_z: f32,
39}
40
41/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureBuildGeometryInfoKHR.html>
42#[repr(C)]
43#[derive(Copy, Clone, Debug)]
44pub struct AccelerationStructureBuildGeometryInfoKHR {
45    pub s_type: StructureType,
46    pub next: *const c_void,
47    pub type_: AccelerationStructureTypeKHR,
48    pub flags: BuildAccelerationStructureFlagsKHR,
49    pub mode: BuildAccelerationStructureModeKHR,
50    pub src_acceleration_structure: AccelerationStructureKHR,
51    pub dst_acceleration_structure: AccelerationStructureKHR,
52    pub geometry_count: u32,
53    pub geometries: *const AccelerationStructureGeometryKHR,
54    pub pointer_geometries: *const *const AccelerationStructureGeometryKHR,
55    pub scratch_data: DeviceOrHostAddressKHR,
56}
57
58impl Default for AccelerationStructureBuildGeometryInfoKHR {
59    #[inline]
60    fn default() -> Self {
61        Self {
62            s_type: StructureType::ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR,
63            next: ptr::null(),
64            type_: AccelerationStructureTypeKHR::default(),
65            flags: BuildAccelerationStructureFlagsKHR::default(),
66            mode: BuildAccelerationStructureModeKHR::default(),
67            src_acceleration_structure: AccelerationStructureKHR::default(),
68            dst_acceleration_structure: AccelerationStructureKHR::default(),
69            geometry_count: u32::default(),
70            geometries: ptr::null(),
71            pointer_geometries: ptr::null(),
72            scratch_data: DeviceOrHostAddressKHR::default(),
73        }
74    }
75}
76
77unsafe impl Send for AccelerationStructureBuildGeometryInfoKHR {}
78unsafe impl Sync for AccelerationStructureBuildGeometryInfoKHR {}
79
80/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureBuildRangeInfoKHR.html>
81#[repr(C)]
82#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
83pub struct AccelerationStructureBuildRangeInfoKHR {
84    pub primitive_count: u32,
85    pub primitive_offset: u32,
86    pub first_vertex: u32,
87    pub transform_offset: u32,
88}
89
90/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureBuildSizesInfoKHR.html>
91#[repr(C)]
92#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
93pub struct AccelerationStructureBuildSizesInfoKHR {
94    pub s_type: StructureType,
95    pub next: *const c_void,
96    pub acceleration_structure_size: DeviceSize,
97    pub update_scratch_size: DeviceSize,
98    pub build_scratch_size: DeviceSize,
99}
100
101impl Default for AccelerationStructureBuildSizesInfoKHR {
102    #[inline]
103    fn default() -> Self {
104        Self {
105            s_type: StructureType::ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR,
106            next: ptr::null(),
107            acceleration_structure_size: DeviceSize::default(),
108            update_scratch_size: DeviceSize::default(),
109            build_scratch_size: DeviceSize::default(),
110        }
111    }
112}
113
114unsafe impl Send for AccelerationStructureBuildSizesInfoKHR {}
115unsafe impl Sync for AccelerationStructureBuildSizesInfoKHR {}
116
117/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureCaptureDescriptorDataInfoEXT.html>
118#[repr(C)]
119#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
120pub struct AccelerationStructureCaptureDescriptorDataInfoEXT {
121    pub s_type: StructureType,
122    pub next: *const c_void,
123    pub acceleration_structure: AccelerationStructureKHR,
124    pub acceleration_structure_nv: AccelerationStructureNV,
125}
126
127impl Default for AccelerationStructureCaptureDescriptorDataInfoEXT {
128    #[inline]
129    fn default() -> Self {
130        Self {
131            s_type: StructureType::ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
132            next: ptr::null(),
133            acceleration_structure: AccelerationStructureKHR::default(),
134            acceleration_structure_nv: AccelerationStructureNV::default(),
135        }
136    }
137}
138
139unsafe impl Send for AccelerationStructureCaptureDescriptorDataInfoEXT {}
140unsafe impl Sync for AccelerationStructureCaptureDescriptorDataInfoEXT {}
141
142/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureCreateInfoKHR.html>
143#[repr(C)]
144#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
145pub struct AccelerationStructureCreateInfoKHR {
146    pub s_type: StructureType,
147    pub next: *const c_void,
148    pub create_flags: AccelerationStructureCreateFlagsKHR,
149    pub buffer: Buffer,
150    pub offset: DeviceSize,
151    pub size: DeviceSize,
152    pub type_: AccelerationStructureTypeKHR,
153    pub device_address: DeviceAddress,
154}
155
156impl Default for AccelerationStructureCreateInfoKHR {
157    #[inline]
158    fn default() -> Self {
159        Self {
160            s_type: StructureType::ACCELERATION_STRUCTURE_CREATE_INFO_KHR,
161            next: ptr::null(),
162            create_flags: AccelerationStructureCreateFlagsKHR::default(),
163            buffer: Buffer::default(),
164            offset: DeviceSize::default(),
165            size: DeviceSize::default(),
166            type_: AccelerationStructureTypeKHR::default(),
167            device_address: DeviceAddress::default(),
168        }
169    }
170}
171
172unsafe impl Send for AccelerationStructureCreateInfoKHR {}
173unsafe impl Sync for AccelerationStructureCreateInfoKHR {}
174
175/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureCreateInfoNV.html>
176#[repr(C)]
177#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
178pub struct AccelerationStructureCreateInfoNV {
179    pub s_type: StructureType,
180    pub next: *const c_void,
181    pub compacted_size: DeviceSize,
182    pub info: AccelerationStructureInfoNV,
183}
184
185impl Default for AccelerationStructureCreateInfoNV {
186    #[inline]
187    fn default() -> Self {
188        Self {
189            s_type: StructureType::ACCELERATION_STRUCTURE_CREATE_INFO_NV,
190            next: ptr::null(),
191            compacted_size: DeviceSize::default(),
192            info: AccelerationStructureInfoNV::default(),
193        }
194    }
195}
196
197unsafe impl Send for AccelerationStructureCreateInfoNV {}
198unsafe impl Sync for AccelerationStructureCreateInfoNV {}
199
200/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX.html>
201#[repr(C)]
202#[derive(Copy, Clone, Debug)]
203pub struct AccelerationStructureDenseGeometryFormatTrianglesDataAMDX {
204    pub s_type: StructureType,
205    pub next: *const c_void,
206    pub compressed_data: DeviceOrHostAddressConstKHR,
207    pub data_size: DeviceSize,
208    pub num_triangles: u32,
209    pub num_vertices: u32,
210    pub max_primitive_index: u32,
211    pub max_geometry_index: u32,
212    pub format: CompressedTriangleFormatAMDX,
213}
214
215impl Default for AccelerationStructureDenseGeometryFormatTrianglesDataAMDX {
216    #[inline]
217    fn default() -> Self {
218        Self {
219            s_type: StructureType::ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX,
220            next: ptr::null(),
221            compressed_data: DeviceOrHostAddressConstKHR::default(),
222            data_size: DeviceSize::default(),
223            num_triangles: u32::default(),
224            num_vertices: u32::default(),
225            max_primitive_index: u32::default(),
226            max_geometry_index: u32::default(),
227            format: CompressedTriangleFormatAMDX::default(),
228        }
229    }
230}
231
232unsafe impl Send for AccelerationStructureDenseGeometryFormatTrianglesDataAMDX {}
233unsafe impl Sync for AccelerationStructureDenseGeometryFormatTrianglesDataAMDX {}
234
235/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureDeviceAddressInfoKHR.html>
236#[repr(C)]
237#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
238pub struct AccelerationStructureDeviceAddressInfoKHR {
239    pub s_type: StructureType,
240    pub next: *const c_void,
241    pub acceleration_structure: AccelerationStructureKHR,
242}
243
244impl Default for AccelerationStructureDeviceAddressInfoKHR {
245    #[inline]
246    fn default() -> Self {
247        Self {
248            s_type: StructureType::ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR,
249            next: ptr::null(),
250            acceleration_structure: AccelerationStructureKHR::default(),
251        }
252    }
253}
254
255unsafe impl Send for AccelerationStructureDeviceAddressInfoKHR {}
256unsafe impl Sync for AccelerationStructureDeviceAddressInfoKHR {}
257
258/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryAabbsDataKHR.html>
259#[repr(C)]
260#[derive(Copy, Clone, Debug)]
261pub struct AccelerationStructureGeometryAabbsDataKHR {
262    pub s_type: StructureType,
263    pub next: *const c_void,
264    pub data: DeviceOrHostAddressConstKHR,
265    pub stride: DeviceSize,
266}
267
268impl Default for AccelerationStructureGeometryAabbsDataKHR {
269    #[inline]
270    fn default() -> Self {
271        Self {
272            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR,
273            next: ptr::null(),
274            data: DeviceOrHostAddressConstKHR::default(),
275            stride: DeviceSize::default(),
276        }
277    }
278}
279
280unsafe impl Send for AccelerationStructureGeometryAabbsDataKHR {}
281unsafe impl Sync for AccelerationStructureGeometryAabbsDataKHR {}
282
283/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryInstancesDataKHR.html>
284#[repr(C)]
285#[derive(Copy, Clone, Debug)]
286pub struct AccelerationStructureGeometryInstancesDataKHR {
287    pub s_type: StructureType,
288    pub next: *const c_void,
289    pub array_of_pointers: Bool32,
290    pub data: DeviceOrHostAddressConstKHR,
291}
292
293impl Default for AccelerationStructureGeometryInstancesDataKHR {
294    #[inline]
295    fn default() -> Self {
296        Self {
297            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR,
298            next: ptr::null(),
299            array_of_pointers: Bool32::default(),
300            data: DeviceOrHostAddressConstKHR::default(),
301        }
302    }
303}
304
305unsafe impl Send for AccelerationStructureGeometryInstancesDataKHR {}
306unsafe impl Sync for AccelerationStructureGeometryInstancesDataKHR {}
307
308/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryKHR.html>
309#[repr(C)]
310#[derive(Copy, Clone, Debug)]
311pub struct AccelerationStructureGeometryKHR {
312    pub s_type: StructureType,
313    pub next: *const c_void,
314    pub geometry_type: GeometryTypeKHR,
315    pub geometry: AccelerationStructureGeometryDataKHR,
316    pub flags: GeometryFlagsKHR,
317}
318
319impl Default for AccelerationStructureGeometryKHR {
320    #[inline]
321    fn default() -> Self {
322        Self {
323            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_KHR,
324            next: ptr::null(),
325            geometry_type: GeometryTypeKHR::default(),
326            geometry: AccelerationStructureGeometryDataKHR::default(),
327            flags: GeometryFlagsKHR::default(),
328        }
329    }
330}
331
332unsafe impl Send for AccelerationStructureGeometryKHR {}
333unsafe impl Sync for AccelerationStructureGeometryKHR {}
334
335/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryLinearSweptSpheresDataNV.html>
336#[repr(C)]
337#[derive(Copy, Clone, Debug)]
338pub struct AccelerationStructureGeometryLinearSweptSpheresDataNV {
339    pub s_type: StructureType,
340    pub next: *const c_void,
341    pub vertex_format: Format,
342    pub vertex_data: DeviceOrHostAddressConstKHR,
343    pub vertex_stride: DeviceSize,
344    pub radius_format: Format,
345    pub radius_data: DeviceOrHostAddressConstKHR,
346    pub radius_stride: DeviceSize,
347    pub index_type: IndexType,
348    pub index_data: DeviceOrHostAddressConstKHR,
349    pub index_stride: DeviceSize,
350    pub indexing_mode: RayTracingLssIndexingModeNV,
351    pub end_caps_mode: RayTracingLssPrimitiveEndCapsModeNV,
352}
353
354impl Default for AccelerationStructureGeometryLinearSweptSpheresDataNV {
355    #[inline]
356    fn default() -> Self {
357        Self {
358            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV,
359            next: ptr::null(),
360            vertex_format: Format::default(),
361            vertex_data: DeviceOrHostAddressConstKHR::default(),
362            vertex_stride: DeviceSize::default(),
363            radius_format: Format::default(),
364            radius_data: DeviceOrHostAddressConstKHR::default(),
365            radius_stride: DeviceSize::default(),
366            index_type: IndexType::default(),
367            index_data: DeviceOrHostAddressConstKHR::default(),
368            index_stride: DeviceSize::default(),
369            indexing_mode: RayTracingLssIndexingModeNV::default(),
370            end_caps_mode: RayTracingLssPrimitiveEndCapsModeNV::default(),
371        }
372    }
373}
374
375unsafe impl Send for AccelerationStructureGeometryLinearSweptSpheresDataNV {}
376unsafe impl Sync for AccelerationStructureGeometryLinearSweptSpheresDataNV {}
377
378/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryMotionTrianglesDataNV.html>
379#[repr(C)]
380#[derive(Copy, Clone, Debug)]
381pub struct AccelerationStructureGeometryMotionTrianglesDataNV {
382    pub s_type: StructureType,
383    pub next: *const c_void,
384    pub vertex_data: DeviceOrHostAddressConstKHR,
385}
386
387impl Default for AccelerationStructureGeometryMotionTrianglesDataNV {
388    #[inline]
389    fn default() -> Self {
390        Self {
391            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV,
392            next: ptr::null(),
393            vertex_data: DeviceOrHostAddressConstKHR::default(),
394        }
395    }
396}
397
398unsafe impl Send for AccelerationStructureGeometryMotionTrianglesDataNV {}
399unsafe impl Sync for AccelerationStructureGeometryMotionTrianglesDataNV {}
400
401/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometrySpheresDataNV.html>
402#[repr(C)]
403#[derive(Copy, Clone, Debug)]
404pub struct AccelerationStructureGeometrySpheresDataNV {
405    pub s_type: StructureType,
406    pub next: *const c_void,
407    pub vertex_format: Format,
408    pub vertex_data: DeviceOrHostAddressConstKHR,
409    pub vertex_stride: DeviceSize,
410    pub radius_format: Format,
411    pub radius_data: DeviceOrHostAddressConstKHR,
412    pub radius_stride: DeviceSize,
413    pub index_type: IndexType,
414    pub index_data: DeviceOrHostAddressConstKHR,
415    pub index_stride: DeviceSize,
416}
417
418impl Default for AccelerationStructureGeometrySpheresDataNV {
419    #[inline]
420    fn default() -> Self {
421        Self {
422            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV,
423            next: ptr::null(),
424            vertex_format: Format::default(),
425            vertex_data: DeviceOrHostAddressConstKHR::default(),
426            vertex_stride: DeviceSize::default(),
427            radius_format: Format::default(),
428            radius_data: DeviceOrHostAddressConstKHR::default(),
429            radius_stride: DeviceSize::default(),
430            index_type: IndexType::default(),
431            index_data: DeviceOrHostAddressConstKHR::default(),
432            index_stride: DeviceSize::default(),
433        }
434    }
435}
436
437unsafe impl Send for AccelerationStructureGeometrySpheresDataNV {}
438unsafe impl Sync for AccelerationStructureGeometrySpheresDataNV {}
439
440/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryTrianglesDataKHR.html>
441#[repr(C)]
442#[derive(Copy, Clone, Debug)]
443pub struct AccelerationStructureGeometryTrianglesDataKHR {
444    pub s_type: StructureType,
445    pub next: *const c_void,
446    pub vertex_format: Format,
447    pub vertex_data: DeviceOrHostAddressConstKHR,
448    pub vertex_stride: DeviceSize,
449    pub max_vertex: u32,
450    pub index_type: IndexType,
451    pub index_data: DeviceOrHostAddressConstKHR,
452    pub transform_data: DeviceOrHostAddressConstKHR,
453}
454
455impl Default for AccelerationStructureGeometryTrianglesDataKHR {
456    #[inline]
457    fn default() -> Self {
458        Self {
459            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR,
460            next: ptr::null(),
461            vertex_format: Format::default(),
462            vertex_data: DeviceOrHostAddressConstKHR::default(),
463            vertex_stride: DeviceSize::default(),
464            max_vertex: u32::default(),
465            index_type: IndexType::default(),
466            index_data: DeviceOrHostAddressConstKHR::default(),
467            transform_data: DeviceOrHostAddressConstKHR::default(),
468        }
469    }
470}
471
472unsafe impl Send for AccelerationStructureGeometryTrianglesDataKHR {}
473unsafe impl Sync for AccelerationStructureGeometryTrianglesDataKHR {}
474
475/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureInfoNV.html>
476#[repr(C)]
477#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
478pub struct AccelerationStructureInfoNV {
479    pub s_type: StructureType,
480    pub next: *const c_void,
481    pub type_: AccelerationStructureTypeNV,
482    pub flags: BuildAccelerationStructureFlagsNV,
483    pub instance_count: u32,
484    pub geometry_count: u32,
485    pub geometries: *const GeometryNV,
486}
487
488impl Default for AccelerationStructureInfoNV {
489    #[inline]
490    fn default() -> Self {
491        Self {
492            s_type: StructureType::ACCELERATION_STRUCTURE_INFO_NV,
493            next: ptr::null(),
494            type_: AccelerationStructureTypeNV::default(),
495            flags: BuildAccelerationStructureFlagsNV::default(),
496            instance_count: u32::default(),
497            geometry_count: u32::default(),
498            geometries: ptr::null(),
499        }
500    }
501}
502
503unsafe impl Send for AccelerationStructureInfoNV {}
504unsafe impl Sync for AccelerationStructureInfoNV {}
505
506bitfields32! {
507    struct AccelerationStructureInstanceKHRBitfields0 {
508        (instance_custom_index, with_instance_custom_index)[0 .. 24],
509        (mask, with_mask)[24 .. 32],
510    }
511}
512
513bitfields32! {
514    struct AccelerationStructureInstanceKHRBitfields1 {
515        (instance_shader_binding_table_record_offset, with_instance_shader_binding_table_record_offset)[0 .. 24],
516        (flags, with_flags)[24 .. 32],
517    }
518}
519
520/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureInstanceKHR.html>
521#[repr(C)]
522#[derive(Copy, Clone, Default, Debug, PartialEq)]
523pub struct AccelerationStructureInstanceKHR {
524    pub transform: TransformMatrixKHR,
525    pub acceleration_structure_reference: u64,
526    pub bitfields0: AccelerationStructureInstanceKHRBitfields0,
527    pub bitfields1: AccelerationStructureInstanceKHRBitfields1,
528}
529
530bitfields32! {
531    struct AccelerationStructureMatrixMotionInstanceNVBitfields0 {
532        (instance_custom_index, with_instance_custom_index)[0 .. 24],
533        (mask, with_mask)[24 .. 32],
534    }
535}
536
537bitfields32! {
538    struct AccelerationStructureMatrixMotionInstanceNVBitfields1 {
539        (instance_shader_binding_table_record_offset, with_instance_shader_binding_table_record_offset)[0 .. 24],
540        (flags, with_flags)[24 .. 32],
541    }
542}
543
544/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureMatrixMotionInstanceNV.html>
545#[repr(C)]
546#[derive(Copy, Clone, Default, Debug, PartialEq)]
547pub struct AccelerationStructureMatrixMotionInstanceNV {
548    pub transform_t0: TransformMatrixKHR,
549    pub transform_t1: TransformMatrixKHR,
550    pub acceleration_structure_reference: u64,
551    pub bitfields0: AccelerationStructureMatrixMotionInstanceNVBitfields0,
552    pub bitfields1: AccelerationStructureMatrixMotionInstanceNVBitfields1,
553}
554
555/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureMemoryRequirementsInfoNV.html>
556#[repr(C)]
557#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
558pub struct AccelerationStructureMemoryRequirementsInfoNV {
559    pub s_type: StructureType,
560    pub next: *const c_void,
561    pub type_: AccelerationStructureMemoryRequirementsTypeNV,
562    pub acceleration_structure: AccelerationStructureNV,
563}
564
565impl Default for AccelerationStructureMemoryRequirementsInfoNV {
566    #[inline]
567    fn default() -> Self {
568        Self {
569            s_type: StructureType::ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV,
570            next: ptr::null(),
571            type_: AccelerationStructureMemoryRequirementsTypeNV::default(),
572            acceleration_structure: AccelerationStructureNV::default(),
573        }
574    }
575}
576
577unsafe impl Send for AccelerationStructureMemoryRequirementsInfoNV {}
578unsafe impl Sync for AccelerationStructureMemoryRequirementsInfoNV {}
579
580/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureMotionInfoNV.html>
581#[repr(C)]
582#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
583pub struct AccelerationStructureMotionInfoNV {
584    pub s_type: StructureType,
585    pub next: *const c_void,
586    pub max_instances: u32,
587    pub flags: AccelerationStructureMotionInfoFlagsNV,
588}
589
590impl Default for AccelerationStructureMotionInfoNV {
591    #[inline]
592    fn default() -> Self {
593        Self {
594            s_type: StructureType::ACCELERATION_STRUCTURE_MOTION_INFO_NV,
595            next: ptr::null(),
596            max_instances: u32::default(),
597            flags: AccelerationStructureMotionInfoFlagsNV::default(),
598        }
599    }
600}
601
602unsafe impl Send for AccelerationStructureMotionInfoNV {}
603unsafe impl Sync for AccelerationStructureMotionInfoNV {}
604
605/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureMotionInstanceNV.html>
606#[repr(C)]
607#[derive(Copy, Clone, Default, Debug)]
608pub struct AccelerationStructureMotionInstanceNV {
609    pub type_: AccelerationStructureMotionInstanceTypeNV,
610    pub flags: AccelerationStructureMotionInstanceFlagsNV,
611    pub data: AccelerationStructureMotionInstanceDataNV,
612}
613
614bitfields32! {
615    struct AccelerationStructureSRTMotionInstanceNVBitfields0 {
616        (instance_custom_index, with_instance_custom_index)[0 .. 24],
617        (mask, with_mask)[24 .. 32],
618    }
619}
620
621bitfields32! {
622    struct AccelerationStructureSRTMotionInstanceNVBitfields1 {
623        (instance_shader_binding_table_record_offset, with_instance_shader_binding_table_record_offset)[0 .. 24],
624        (flags, with_flags)[24 .. 32],
625    }
626}
627
628/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureSRTMotionInstanceNV.html>
629#[repr(C)]
630#[derive(Copy, Clone, Default, Debug, PartialEq)]
631pub struct AccelerationStructureSRTMotionInstanceNV {
632    pub transform_t0: SRTDataNV,
633    pub transform_t1: SRTDataNV,
634    pub acceleration_structure_reference: u64,
635    pub bitfields0: AccelerationStructureSRTMotionInstanceNVBitfields0,
636    pub bitfields1: AccelerationStructureSRTMotionInstanceNVBitfields1,
637}
638
639/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureTrianglesDisplacementMicromapNV.html>
640#[repr(C)]
641#[derive(Copy, Clone, Debug)]
642pub struct AccelerationStructureTrianglesDisplacementMicromapNV {
643    pub s_type: StructureType,
644    pub next: *mut c_void,
645    pub displacement_bias_and_scale_format: Format,
646    pub displacement_vector_format: Format,
647    pub displacement_bias_and_scale_buffer: DeviceOrHostAddressConstKHR,
648    pub displacement_bias_and_scale_stride: DeviceSize,
649    pub displacement_vector_buffer: DeviceOrHostAddressConstKHR,
650    pub displacement_vector_stride: DeviceSize,
651    pub displaced_micromap_primitive_flags: DeviceOrHostAddressConstKHR,
652    pub displaced_micromap_primitive_flags_stride: DeviceSize,
653    pub index_type: IndexType,
654    pub index_buffer: DeviceOrHostAddressConstKHR,
655    pub index_stride: DeviceSize,
656    pub base_triangle: u32,
657    pub usage_counts_count: u32,
658    pub usage_counts: *const MicromapUsageEXT,
659    pub pointer_usage_counts: *const *const MicromapUsageEXT,
660    pub micromap: MicromapEXT,
661}
662
663impl Default for AccelerationStructureTrianglesDisplacementMicromapNV {
664    #[inline]
665    fn default() -> Self {
666        Self {
667            s_type: StructureType::ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV,
668            next: ptr::null_mut(),
669            displacement_bias_and_scale_format: Format::default(),
670            displacement_vector_format: Format::default(),
671            displacement_bias_and_scale_buffer: DeviceOrHostAddressConstKHR::default(),
672            displacement_bias_and_scale_stride: DeviceSize::default(),
673            displacement_vector_buffer: DeviceOrHostAddressConstKHR::default(),
674            displacement_vector_stride: DeviceSize::default(),
675            displaced_micromap_primitive_flags: DeviceOrHostAddressConstKHR::default(),
676            displaced_micromap_primitive_flags_stride: DeviceSize::default(),
677            index_type: IndexType::default(),
678            index_buffer: DeviceOrHostAddressConstKHR::default(),
679            index_stride: DeviceSize::default(),
680            base_triangle: u32::default(),
681            usage_counts_count: u32::default(),
682            usage_counts: ptr::null(),
683            pointer_usage_counts: ptr::null(),
684            micromap: MicromapEXT::default(),
685        }
686    }
687}
688
689unsafe impl Send for AccelerationStructureTrianglesDisplacementMicromapNV {}
690unsafe impl Sync for AccelerationStructureTrianglesDisplacementMicromapNV {}
691
692/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureTrianglesOpacityMicromapEXT.html>
693#[repr(C)]
694#[derive(Copy, Clone, Debug)]
695pub struct AccelerationStructureTrianglesOpacityMicromapEXT {
696    pub s_type: StructureType,
697    pub next: *mut c_void,
698    pub index_type: IndexType,
699    pub index_buffer: DeviceOrHostAddressConstKHR,
700    pub index_stride: DeviceSize,
701    pub base_triangle: u32,
702    pub usage_counts_count: u32,
703    pub usage_counts: *const MicromapUsageEXT,
704    pub pointer_usage_counts: *const *const MicromapUsageEXT,
705    pub micromap: MicromapEXT,
706}
707
708impl Default for AccelerationStructureTrianglesOpacityMicromapEXT {
709    #[inline]
710    fn default() -> Self {
711        Self {
712            s_type: StructureType::ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT,
713            next: ptr::null_mut(),
714            index_type: IndexType::default(),
715            index_buffer: DeviceOrHostAddressConstKHR::default(),
716            index_stride: DeviceSize::default(),
717            base_triangle: u32::default(),
718            usage_counts_count: u32::default(),
719            usage_counts: ptr::null(),
720            pointer_usage_counts: ptr::null(),
721            micromap: MicromapEXT::default(),
722        }
723    }
724}
725
726unsafe impl Send for AccelerationStructureTrianglesOpacityMicromapEXT {}
727unsafe impl Sync for AccelerationStructureTrianglesOpacityMicromapEXT {}
728
729/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureVersionInfoKHR.html>
730#[repr(C)]
731#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
732pub struct AccelerationStructureVersionInfoKHR {
733    pub s_type: StructureType,
734    pub next: *const c_void,
735    pub version_data: *const u8,
736}
737
738impl Default for AccelerationStructureVersionInfoKHR {
739    #[inline]
740    fn default() -> Self {
741        Self {
742            s_type: StructureType::ACCELERATION_STRUCTURE_VERSION_INFO_KHR,
743            next: ptr::null(),
744            version_data: ptr::null(),
745        }
746    }
747}
748
749unsafe impl Send for AccelerationStructureVersionInfoKHR {}
750unsafe impl Sync for AccelerationStructureVersionInfoKHR {}
751
752/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAcquireNextImageInfoKHR.html>
753#[repr(C)]
754#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
755pub struct AcquireNextImageInfoKHR {
756    pub s_type: StructureType,
757    pub next: *const c_void,
758    pub swapchain: SwapchainKHR,
759    pub timeout: u64,
760    pub semaphore: Semaphore,
761    pub fence: Fence,
762    pub device_mask: u32,
763}
764
765impl Default for AcquireNextImageInfoKHR {
766    #[inline]
767    fn default() -> Self {
768        Self {
769            s_type: StructureType::ACQUIRE_NEXT_IMAGE_INFO_KHR,
770            next: ptr::null(),
771            swapchain: SwapchainKHR::default(),
772            timeout: u64::default(),
773            semaphore: Semaphore::default(),
774            fence: Fence::default(),
775            device_mask: u32::default(),
776        }
777    }
778}
779
780unsafe impl Send for AcquireNextImageInfoKHR {}
781unsafe impl Sync for AcquireNextImageInfoKHR {}
782
783/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAcquireProfilingLockInfoKHR.html>
784#[repr(C)]
785#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
786pub struct AcquireProfilingLockInfoKHR {
787    pub s_type: StructureType,
788    pub next: *const c_void,
789    pub flags: AcquireProfilingLockFlagsKHR,
790    pub timeout: u64,
791}
792
793impl Default for AcquireProfilingLockInfoKHR {
794    #[inline]
795    fn default() -> Self {
796        Self {
797            s_type: StructureType::ACQUIRE_PROFILING_LOCK_INFO_KHR,
798            next: ptr::null(),
799            flags: AcquireProfilingLockFlagsKHR::default(),
800            timeout: u64::default(),
801        }
802    }
803}
804
805unsafe impl Send for AcquireProfilingLockInfoKHR {}
806unsafe impl Sync for AcquireProfilingLockInfoKHR {}
807
808/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAllocationCallbacks.html>
809#[repr(C)]
810#[derive(Copy, Clone)]
811pub struct AllocationCallbacks {
812    pub user_data: *mut c_void,
813    pub allocation: PFN_vkAllocationFunction,
814    pub reallocation: PFN_vkReallocationFunction,
815    pub free: PFN_vkFreeFunction,
816    pub internal_allocation: PFN_vkInternalAllocationNotification,
817    pub internal_free: PFN_vkInternalFreeNotification,
818}
819
820impl fmt::Debug for AllocationCallbacks {
821    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
822        f.debug_struct("AllocationCallbacks")
823            .field("user_data", &self.user_data)
824            .field("allocation", &(self.allocation.map(|f| f as *const u8)))
825            .field("reallocation", &(self.reallocation.map(|f| f as *const u8)))
826            .field("free", &(self.free.map(|f| f as *const u8)))
827            .field(
828                "internal_allocation",
829                &(self.internal_allocation.map(|f| f as *const u8)),
830            )
831            .field(
832                "internal_free",
833                &(self.internal_free.map(|f| f as *const u8)),
834            )
835            .finish()
836    }
837}
838
839impl Default for AllocationCallbacks {
840    #[inline]
841    fn default() -> Self {
842        Self {
843            user_data: ptr::null_mut(),
844            allocation: PFN_vkAllocationFunction::default(),
845            reallocation: PFN_vkReallocationFunction::default(),
846            free: PFN_vkFreeFunction::default(),
847            internal_allocation: PFN_vkInternalAllocationNotification::default(),
848            internal_free: PFN_vkInternalFreeNotification::default(),
849        }
850    }
851}
852
853unsafe impl Send for AllocationCallbacks {}
854unsafe impl Sync for AllocationCallbacks {}
855
856/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAmigoProfilingSubmitInfoSEC.html>
857#[repr(C)]
858#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
859pub struct AmigoProfilingSubmitInfoSEC {
860    pub s_type: StructureType,
861    pub next: *const c_void,
862    pub first_draw_timestamp: u64,
863    pub swap_buffer_timestamp: u64,
864}
865
866impl Default for AmigoProfilingSubmitInfoSEC {
867    #[inline]
868    fn default() -> Self {
869        Self {
870            s_type: StructureType::AMIGO_PROFILING_SUBMIT_INFO_SEC,
871            next: ptr::null(),
872            first_draw_timestamp: u64::default(),
873            swap_buffer_timestamp: u64::default(),
874        }
875    }
876}
877
878unsafe impl Send for AmigoProfilingSubmitInfoSEC {}
879unsafe impl Sync for AmigoProfilingSubmitInfoSEC {}
880
881/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidHardwareBufferFormatProperties2ANDROID.html>
882#[repr(C)]
883#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
884pub struct AndroidHardwareBufferFormatProperties2ANDROID {
885    pub s_type: StructureType,
886    pub next: *mut c_void,
887    pub format: Format,
888    pub external_format: u64,
889    pub format_features: FormatFeatureFlags2,
890    pub sampler_ycbcr_conversion_components: ComponentMapping,
891    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
892    pub suggested_ycbcr_range: SamplerYcbcrRange,
893    pub suggested_x_chroma_offset: ChromaLocation,
894    pub suggested_y_chroma_offset: ChromaLocation,
895}
896
897impl Default for AndroidHardwareBufferFormatProperties2ANDROID {
898    #[inline]
899    fn default() -> Self {
900        Self {
901            s_type: StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID,
902            next: ptr::null_mut(),
903            format: Format::default(),
904            external_format: u64::default(),
905            format_features: FormatFeatureFlags2::default(),
906            sampler_ycbcr_conversion_components: ComponentMapping::default(),
907            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
908            suggested_ycbcr_range: SamplerYcbcrRange::default(),
909            suggested_x_chroma_offset: ChromaLocation::default(),
910            suggested_y_chroma_offset: ChromaLocation::default(),
911        }
912    }
913}
914
915unsafe impl Send for AndroidHardwareBufferFormatProperties2ANDROID {}
916unsafe impl Sync for AndroidHardwareBufferFormatProperties2ANDROID {}
917
918/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidHardwareBufferFormatPropertiesANDROID.html>
919#[repr(C)]
920#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
921pub struct AndroidHardwareBufferFormatPropertiesANDROID {
922    pub s_type: StructureType,
923    pub next: *mut c_void,
924    pub format: Format,
925    pub external_format: u64,
926    pub format_features: FormatFeatureFlags,
927    pub sampler_ycbcr_conversion_components: ComponentMapping,
928    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
929    pub suggested_ycbcr_range: SamplerYcbcrRange,
930    pub suggested_x_chroma_offset: ChromaLocation,
931    pub suggested_y_chroma_offset: ChromaLocation,
932}
933
934impl Default for AndroidHardwareBufferFormatPropertiesANDROID {
935    #[inline]
936    fn default() -> Self {
937        Self {
938            s_type: StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID,
939            next: ptr::null_mut(),
940            format: Format::default(),
941            external_format: u64::default(),
942            format_features: FormatFeatureFlags::default(),
943            sampler_ycbcr_conversion_components: ComponentMapping::default(),
944            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
945            suggested_ycbcr_range: SamplerYcbcrRange::default(),
946            suggested_x_chroma_offset: ChromaLocation::default(),
947            suggested_y_chroma_offset: ChromaLocation::default(),
948        }
949    }
950}
951
952unsafe impl Send for AndroidHardwareBufferFormatPropertiesANDROID {}
953unsafe impl Sync for AndroidHardwareBufferFormatPropertiesANDROID {}
954
955/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidHardwareBufferFormatResolvePropertiesANDROID.html>
956#[repr(C)]
957#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
958pub struct AndroidHardwareBufferFormatResolvePropertiesANDROID {
959    pub s_type: StructureType,
960    pub next: *mut c_void,
961    pub color_attachment_format: Format,
962}
963
964impl Default for AndroidHardwareBufferFormatResolvePropertiesANDROID {
965    #[inline]
966    fn default() -> Self {
967        Self {
968            s_type: StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID,
969            next: ptr::null_mut(),
970            color_attachment_format: Format::default(),
971        }
972    }
973}
974
975unsafe impl Send for AndroidHardwareBufferFormatResolvePropertiesANDROID {}
976unsafe impl Sync for AndroidHardwareBufferFormatResolvePropertiesANDROID {}
977
978/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidHardwareBufferPropertiesANDROID.html>
979#[repr(C)]
980#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
981pub struct AndroidHardwareBufferPropertiesANDROID {
982    pub s_type: StructureType,
983    pub next: *mut c_void,
984    pub allocation_size: DeviceSize,
985    pub memory_type_bits: u32,
986}
987
988impl Default for AndroidHardwareBufferPropertiesANDROID {
989    #[inline]
990    fn default() -> Self {
991        Self {
992            s_type: StructureType::ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID,
993            next: ptr::null_mut(),
994            allocation_size: DeviceSize::default(),
995            memory_type_bits: u32::default(),
996        }
997    }
998}
999
1000unsafe impl Send for AndroidHardwareBufferPropertiesANDROID {}
1001unsafe impl Sync for AndroidHardwareBufferPropertiesANDROID {}
1002
1003/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidHardwareBufferUsageANDROID.html>
1004#[repr(C)]
1005#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1006pub struct AndroidHardwareBufferUsageANDROID {
1007    pub s_type: StructureType,
1008    pub next: *mut c_void,
1009    pub android_hardware_buffer_usage: u64,
1010}
1011
1012impl Default for AndroidHardwareBufferUsageANDROID {
1013    #[inline]
1014    fn default() -> Self {
1015        Self {
1016            s_type: StructureType::ANDROID_HARDWARE_BUFFER_USAGE_ANDROID,
1017            next: ptr::null_mut(),
1018            android_hardware_buffer_usage: u64::default(),
1019        }
1020    }
1021}
1022
1023unsafe impl Send for AndroidHardwareBufferUsageANDROID {}
1024unsafe impl Sync for AndroidHardwareBufferUsageANDROID {}
1025
1026/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidSurfaceCreateInfoKHR.html>
1027#[repr(C)]
1028#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1029pub struct AndroidSurfaceCreateInfoKHR {
1030    pub s_type: StructureType,
1031    pub next: *const c_void,
1032    pub flags: AndroidSurfaceCreateFlagsKHR,
1033    pub window: *mut ANativeWindow,
1034}
1035
1036impl Default for AndroidSurfaceCreateInfoKHR {
1037    #[inline]
1038    fn default() -> Self {
1039        Self {
1040            s_type: StructureType::ANDROID_SURFACE_CREATE_INFO_KHR,
1041            next: ptr::null(),
1042            flags: AndroidSurfaceCreateFlagsKHR::default(),
1043            window: ptr::null_mut(),
1044        }
1045    }
1046}
1047
1048unsafe impl Send for AndroidSurfaceCreateInfoKHR {}
1049unsafe impl Sync for AndroidSurfaceCreateInfoKHR {}
1050
1051/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAntiLagDataAMD.html>
1052#[repr(C)]
1053#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1054pub struct AntiLagDataAMD {
1055    pub s_type: StructureType,
1056    pub next: *const c_void,
1057    pub mode: AntiLagModeAMD,
1058    pub max_fps: u32,
1059    pub presentation_info: *const AntiLagPresentationInfoAMD,
1060}
1061
1062impl Default for AntiLagDataAMD {
1063    #[inline]
1064    fn default() -> Self {
1065        Self {
1066            s_type: StructureType::ANTI_LAG_DATA_AMD,
1067            next: ptr::null(),
1068            mode: AntiLagModeAMD::default(),
1069            max_fps: u32::default(),
1070            presentation_info: ptr::null(),
1071        }
1072    }
1073}
1074
1075unsafe impl Send for AntiLagDataAMD {}
1076unsafe impl Sync for AntiLagDataAMD {}
1077
1078/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAntiLagPresentationInfoAMD.html>
1079#[repr(C)]
1080#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1081pub struct AntiLagPresentationInfoAMD {
1082    pub s_type: StructureType,
1083    pub next: *mut c_void,
1084    pub stage: AntiLagStageAMD,
1085    pub frame_index: u64,
1086}
1087
1088impl Default for AntiLagPresentationInfoAMD {
1089    #[inline]
1090    fn default() -> Self {
1091        Self {
1092            s_type: StructureType::ANTI_LAG_PRESENTATION_INFO_AMD,
1093            next: ptr::null_mut(),
1094            stage: AntiLagStageAMD::default(),
1095            frame_index: u64::default(),
1096        }
1097    }
1098}
1099
1100unsafe impl Send for AntiLagPresentationInfoAMD {}
1101unsafe impl Sync for AntiLagPresentationInfoAMD {}
1102
1103/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkApplicationInfo.html>
1104#[repr(C)]
1105#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1106pub struct ApplicationInfo {
1107    pub s_type: StructureType,
1108    pub next: *const c_void,
1109    pub application_name: *const c_char,
1110    pub application_version: u32,
1111    pub engine_name: *const c_char,
1112    pub engine_version: u32,
1113    pub api_version: u32,
1114}
1115
1116impl Default for ApplicationInfo {
1117    #[inline]
1118    fn default() -> Self {
1119        Self {
1120            s_type: StructureType::APPLICATION_INFO,
1121            next: ptr::null(),
1122            application_name: ptr::null(),
1123            application_version: u32::default(),
1124            engine_name: ptr::null(),
1125            engine_version: u32::default(),
1126            api_version: u32::default(),
1127        }
1128    }
1129}
1130
1131unsafe impl Send for ApplicationInfo {}
1132unsafe impl Sync for ApplicationInfo {}
1133
1134/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkApplicationParametersEXT.html>
1135#[repr(C)]
1136#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1137pub struct ApplicationParametersEXT {
1138    pub s_type: StructureType,
1139    pub next: *const c_void,
1140    pub vendor_id: u32,
1141    pub device_id: u32,
1142    pub key: u32,
1143    pub value: u64,
1144}
1145
1146impl Default for ApplicationParametersEXT {
1147    #[inline]
1148    fn default() -> Self {
1149        Self {
1150            s_type: StructureType::APPLICATION_PARAMETERS_EXT,
1151            next: ptr::null(),
1152            vendor_id: u32::default(),
1153            device_id: u32::default(),
1154            key: u32::default(),
1155            value: u64::default(),
1156        }
1157    }
1158}
1159
1160unsafe impl Send for ApplicationParametersEXT {}
1161unsafe impl Sync for ApplicationParametersEXT {}
1162
1163/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescription.html>
1164#[repr(C)]
1165#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1166pub struct AttachmentDescription {
1167    pub flags: AttachmentDescriptionFlags,
1168    pub format: Format,
1169    pub samples: SampleCountFlags,
1170    pub load_op: AttachmentLoadOp,
1171    pub store_op: AttachmentStoreOp,
1172    pub stencil_load_op: AttachmentLoadOp,
1173    pub stencil_store_op: AttachmentStoreOp,
1174    pub initial_layout: ImageLayout,
1175    pub final_layout: ImageLayout,
1176}
1177
1178/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescription2.html>
1179#[repr(C)]
1180#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1181pub struct AttachmentDescription2 {
1182    pub s_type: StructureType,
1183    pub next: *const c_void,
1184    pub flags: AttachmentDescriptionFlags,
1185    pub format: Format,
1186    pub samples: SampleCountFlags,
1187    pub load_op: AttachmentLoadOp,
1188    pub store_op: AttachmentStoreOp,
1189    pub stencil_load_op: AttachmentLoadOp,
1190    pub stencil_store_op: AttachmentStoreOp,
1191    pub initial_layout: ImageLayout,
1192    pub final_layout: ImageLayout,
1193}
1194
1195impl Default for AttachmentDescription2 {
1196    #[inline]
1197    fn default() -> Self {
1198        Self {
1199            s_type: StructureType::ATTACHMENT_DESCRIPTION_2,
1200            next: ptr::null(),
1201            flags: AttachmentDescriptionFlags::default(),
1202            format: Format::default(),
1203            samples: SampleCountFlags::default(),
1204            load_op: AttachmentLoadOp::default(),
1205            store_op: AttachmentStoreOp::default(),
1206            stencil_load_op: AttachmentLoadOp::default(),
1207            stencil_store_op: AttachmentStoreOp::default(),
1208            initial_layout: ImageLayout::default(),
1209            final_layout: ImageLayout::default(),
1210        }
1211    }
1212}
1213
1214unsafe impl Send for AttachmentDescription2 {}
1215unsafe impl Sync for AttachmentDescription2 {}
1216
1217/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescriptionStencilLayout.html>
1218#[repr(C)]
1219#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1220pub struct AttachmentDescriptionStencilLayout {
1221    pub s_type: StructureType,
1222    pub next: *mut c_void,
1223    pub stencil_initial_layout: ImageLayout,
1224    pub stencil_final_layout: ImageLayout,
1225}
1226
1227impl Default for AttachmentDescriptionStencilLayout {
1228    #[inline]
1229    fn default() -> Self {
1230        Self {
1231            s_type: StructureType::ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,
1232            next: ptr::null_mut(),
1233            stencil_initial_layout: ImageLayout::default(),
1234            stencil_final_layout: ImageLayout::default(),
1235        }
1236    }
1237}
1238
1239unsafe impl Send for AttachmentDescriptionStencilLayout {}
1240unsafe impl Sync for AttachmentDescriptionStencilLayout {}
1241
1242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentFeedbackLoopInfoEXT.html>
1243#[repr(C)]
1244#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1245pub struct AttachmentFeedbackLoopInfoEXT {
1246    pub s_type: StructureType,
1247    pub next: *const c_void,
1248    pub feedback_loop_enable: Bool32,
1249}
1250
1251impl Default for AttachmentFeedbackLoopInfoEXT {
1252    #[inline]
1253    fn default() -> Self {
1254        Self {
1255            s_type: StructureType::ATTACHMENT_FEEDBACK_LOOP_INFO_EXT,
1256            next: ptr::null(),
1257            feedback_loop_enable: Bool32::default(),
1258        }
1259    }
1260}
1261
1262unsafe impl Send for AttachmentFeedbackLoopInfoEXT {}
1263unsafe impl Sync for AttachmentFeedbackLoopInfoEXT {}
1264
1265/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReference.html>
1266#[repr(C)]
1267#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1268pub struct AttachmentReference {
1269    pub attachment: u32,
1270    pub layout: ImageLayout,
1271}
1272
1273/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReference2.html>
1274#[repr(C)]
1275#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1276pub struct AttachmentReference2 {
1277    pub s_type: StructureType,
1278    pub next: *const c_void,
1279    pub attachment: u32,
1280    pub layout: ImageLayout,
1281    pub aspect_mask: ImageAspectFlags,
1282}
1283
1284impl Default for AttachmentReference2 {
1285    #[inline]
1286    fn default() -> Self {
1287        Self {
1288            s_type: StructureType::ATTACHMENT_REFERENCE_2,
1289            next: ptr::null(),
1290            attachment: u32::default(),
1291            layout: ImageLayout::default(),
1292            aspect_mask: ImageAspectFlags::default(),
1293        }
1294    }
1295}
1296
1297unsafe impl Send for AttachmentReference2 {}
1298unsafe impl Sync for AttachmentReference2 {}
1299
1300/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReferenceStencilLayout.html>
1301#[repr(C)]
1302#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1303pub struct AttachmentReferenceStencilLayout {
1304    pub s_type: StructureType,
1305    pub next: *mut c_void,
1306    pub stencil_layout: ImageLayout,
1307}
1308
1309impl Default for AttachmentReferenceStencilLayout {
1310    #[inline]
1311    fn default() -> Self {
1312        Self {
1313            s_type: StructureType::ATTACHMENT_REFERENCE_STENCIL_LAYOUT,
1314            next: ptr::null_mut(),
1315            stencil_layout: ImageLayout::default(),
1316        }
1317    }
1318}
1319
1320unsafe impl Send for AttachmentReferenceStencilLayout {}
1321unsafe impl Sync for AttachmentReferenceStencilLayout {}
1322
1323/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentSampleCountInfoAMD.html>
1324#[repr(C)]
1325#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1326pub struct AttachmentSampleCountInfoAMD {
1327    pub s_type: StructureType,
1328    pub next: *const c_void,
1329    pub color_attachment_count: u32,
1330    pub color_attachment_samples: *const SampleCountFlags,
1331    pub depth_stencil_attachment_samples: SampleCountFlags,
1332}
1333
1334impl Default for AttachmentSampleCountInfoAMD {
1335    #[inline]
1336    fn default() -> Self {
1337        Self {
1338            s_type: StructureType::ATTACHMENT_SAMPLE_COUNT_INFO_AMD,
1339            next: ptr::null(),
1340            color_attachment_count: u32::default(),
1341            color_attachment_samples: ptr::null(),
1342            depth_stencil_attachment_samples: SampleCountFlags::default(),
1343        }
1344    }
1345}
1346
1347unsafe impl Send for AttachmentSampleCountInfoAMD {}
1348unsafe impl Sync for AttachmentSampleCountInfoAMD {}
1349
1350/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentSampleLocationsEXT.html>
1351#[repr(C)]
1352#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1353pub struct AttachmentSampleLocationsEXT {
1354    pub attachment_index: u32,
1355    pub sample_locations_info: SampleLocationsInfoEXT,
1356}
1357
1358/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBaseInStructure.html>
1359#[repr(C)]
1360#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1361pub struct BaseInStructure {
1362    pub s_type: StructureType,
1363    pub next: *const BaseInStructure,
1364}
1365
1366impl Default for BaseInStructure {
1367    #[inline]
1368    fn default() -> Self {
1369        Self {
1370            s_type: StructureType::default(),
1371            next: ptr::null(),
1372        }
1373    }
1374}
1375
1376unsafe impl Send for BaseInStructure {}
1377unsafe impl Sync for BaseInStructure {}
1378
1379/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBaseOutStructure.html>
1380#[repr(C)]
1381#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1382pub struct BaseOutStructure {
1383    pub s_type: StructureType,
1384    pub next: *mut BaseOutStructure,
1385}
1386
1387impl Default for BaseOutStructure {
1388    #[inline]
1389    fn default() -> Self {
1390        Self {
1391            s_type: StructureType::default(),
1392            next: ptr::null_mut(),
1393        }
1394    }
1395}
1396
1397unsafe impl Send for BaseOutStructure {}
1398unsafe impl Sync for BaseOutStructure {}
1399
1400/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindAccelerationStructureMemoryInfoNV.html>
1401#[repr(C)]
1402#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1403pub struct BindAccelerationStructureMemoryInfoNV {
1404    pub s_type: StructureType,
1405    pub next: *const c_void,
1406    pub acceleration_structure: AccelerationStructureNV,
1407    pub memory: DeviceMemory,
1408    pub memory_offset: DeviceSize,
1409    pub device_index_count: u32,
1410    pub device_indices: *const u32,
1411}
1412
1413impl Default for BindAccelerationStructureMemoryInfoNV {
1414    #[inline]
1415    fn default() -> Self {
1416        Self {
1417            s_type: StructureType::BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV,
1418            next: ptr::null(),
1419            acceleration_structure: AccelerationStructureNV::default(),
1420            memory: DeviceMemory::default(),
1421            memory_offset: DeviceSize::default(),
1422            device_index_count: u32::default(),
1423            device_indices: ptr::null(),
1424        }
1425    }
1426}
1427
1428unsafe impl Send for BindAccelerationStructureMemoryInfoNV {}
1429unsafe impl Sync for BindAccelerationStructureMemoryInfoNV {}
1430
1431/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryDeviceGroupInfo.html>
1432#[repr(C)]
1433#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1434pub struct BindBufferMemoryDeviceGroupInfo {
1435    pub s_type: StructureType,
1436    pub next: *const c_void,
1437    pub device_index_count: u32,
1438    pub device_indices: *const u32,
1439}
1440
1441impl Default for BindBufferMemoryDeviceGroupInfo {
1442    #[inline]
1443    fn default() -> Self {
1444        Self {
1445            s_type: StructureType::BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
1446            next: ptr::null(),
1447            device_index_count: u32::default(),
1448            device_indices: ptr::null(),
1449        }
1450    }
1451}
1452
1453unsafe impl Send for BindBufferMemoryDeviceGroupInfo {}
1454unsafe impl Sync for BindBufferMemoryDeviceGroupInfo {}
1455
1456/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryInfo.html>
1457#[repr(C)]
1458#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1459pub struct BindBufferMemoryInfo {
1460    pub s_type: StructureType,
1461    pub next: *const c_void,
1462    pub buffer: Buffer,
1463    pub memory: DeviceMemory,
1464    pub memory_offset: DeviceSize,
1465}
1466
1467impl Default for BindBufferMemoryInfo {
1468    #[inline]
1469    fn default() -> Self {
1470        Self {
1471            s_type: StructureType::BIND_BUFFER_MEMORY_INFO,
1472            next: ptr::null(),
1473            buffer: Buffer::default(),
1474            memory: DeviceMemory::default(),
1475            memory_offset: DeviceSize::default(),
1476        }
1477    }
1478}
1479
1480unsafe impl Send for BindBufferMemoryInfo {}
1481unsafe impl Sync for BindBufferMemoryInfo {}
1482
1483/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDataGraphPipelineSessionMemoryInfoARM.html>
1484#[repr(C)]
1485#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1486pub struct BindDataGraphPipelineSessionMemoryInfoARM {
1487    pub s_type: StructureType,
1488    pub next: *const c_void,
1489    pub session: DataGraphPipelineSessionARM,
1490    pub bind_point: DataGraphPipelineSessionBindPointARM,
1491    pub object_index: u32,
1492    pub memory: DeviceMemory,
1493    pub memory_offset: DeviceSize,
1494}
1495
1496impl Default for BindDataGraphPipelineSessionMemoryInfoARM {
1497    #[inline]
1498    fn default() -> Self {
1499        Self {
1500            s_type: StructureType::BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM,
1501            next: ptr::null(),
1502            session: DataGraphPipelineSessionARM::default(),
1503            bind_point: DataGraphPipelineSessionBindPointARM::default(),
1504            object_index: u32::default(),
1505            memory: DeviceMemory::default(),
1506            memory_offset: DeviceSize::default(),
1507        }
1508    }
1509}
1510
1511unsafe impl Send for BindDataGraphPipelineSessionMemoryInfoARM {}
1512unsafe impl Sync for BindDataGraphPipelineSessionMemoryInfoARM {}
1513
1514/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDescriptorBufferEmbeddedSamplersInfoEXT.html>
1515#[repr(C)]
1516#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1517pub struct BindDescriptorBufferEmbeddedSamplersInfoEXT {
1518    pub s_type: StructureType,
1519    pub next: *const c_void,
1520    pub stage_flags: ShaderStageFlags,
1521    pub layout: PipelineLayout,
1522    pub set: u32,
1523}
1524
1525impl Default for BindDescriptorBufferEmbeddedSamplersInfoEXT {
1526    #[inline]
1527    fn default() -> Self {
1528        Self {
1529            s_type: StructureType::BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT,
1530            next: ptr::null(),
1531            stage_flags: ShaderStageFlags::default(),
1532            layout: PipelineLayout::default(),
1533            set: u32::default(),
1534        }
1535    }
1536}
1537
1538unsafe impl Send for BindDescriptorBufferEmbeddedSamplersInfoEXT {}
1539unsafe impl Sync for BindDescriptorBufferEmbeddedSamplersInfoEXT {}
1540
1541/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDescriptorSetsInfo.html>
1542#[repr(C)]
1543#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1544pub struct BindDescriptorSetsInfo {
1545    pub s_type: StructureType,
1546    pub next: *const c_void,
1547    pub stage_flags: ShaderStageFlags,
1548    pub layout: PipelineLayout,
1549    pub first_set: u32,
1550    pub descriptor_set_count: u32,
1551    pub descriptor_sets: *const DescriptorSet,
1552    pub dynamic_offset_count: u32,
1553    pub dynamic_offsets: *const u32,
1554}
1555
1556impl Default for BindDescriptorSetsInfo {
1557    #[inline]
1558    fn default() -> Self {
1559        Self {
1560            s_type: StructureType::BIND_DESCRIPTOR_SETS_INFO,
1561            next: ptr::null(),
1562            stage_flags: ShaderStageFlags::default(),
1563            layout: PipelineLayout::default(),
1564            first_set: u32::default(),
1565            descriptor_set_count: u32::default(),
1566            descriptor_sets: ptr::null(),
1567            dynamic_offset_count: u32::default(),
1568            dynamic_offsets: ptr::null(),
1569        }
1570    }
1571}
1572
1573unsafe impl Send for BindDescriptorSetsInfo {}
1574unsafe impl Sync for BindDescriptorSetsInfo {}
1575
1576/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryDeviceGroupInfo.html>
1577#[repr(C)]
1578#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1579pub struct BindImageMemoryDeviceGroupInfo {
1580    pub s_type: StructureType,
1581    pub next: *const c_void,
1582    pub device_index_count: u32,
1583    pub device_indices: *const u32,
1584    pub split_instance_bind_region_count: u32,
1585    pub split_instance_bind_regions: *const Rect2D,
1586}
1587
1588impl Default for BindImageMemoryDeviceGroupInfo {
1589    #[inline]
1590    fn default() -> Self {
1591        Self {
1592            s_type: StructureType::BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
1593            next: ptr::null(),
1594            device_index_count: u32::default(),
1595            device_indices: ptr::null(),
1596            split_instance_bind_region_count: u32::default(),
1597            split_instance_bind_regions: ptr::null(),
1598        }
1599    }
1600}
1601
1602unsafe impl Send for BindImageMemoryDeviceGroupInfo {}
1603unsafe impl Sync for BindImageMemoryDeviceGroupInfo {}
1604
1605/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryInfo.html>
1606#[repr(C)]
1607#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1608pub struct BindImageMemoryInfo {
1609    pub s_type: StructureType,
1610    pub next: *const c_void,
1611    pub image: Image,
1612    pub memory: DeviceMemory,
1613    pub memory_offset: DeviceSize,
1614}
1615
1616impl Default for BindImageMemoryInfo {
1617    #[inline]
1618    fn default() -> Self {
1619        Self {
1620            s_type: StructureType::BIND_IMAGE_MEMORY_INFO,
1621            next: ptr::null(),
1622            image: Image::default(),
1623            memory: DeviceMemory::default(),
1624            memory_offset: DeviceSize::default(),
1625        }
1626    }
1627}
1628
1629unsafe impl Send for BindImageMemoryInfo {}
1630unsafe impl Sync for BindImageMemoryInfo {}
1631
1632/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemorySwapchainInfoKHR.html>
1633#[repr(C)]
1634#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1635pub struct BindImageMemorySwapchainInfoKHR {
1636    pub s_type: StructureType,
1637    pub next: *const c_void,
1638    pub swapchain: SwapchainKHR,
1639    pub image_index: u32,
1640}
1641
1642impl Default for BindImageMemorySwapchainInfoKHR {
1643    #[inline]
1644    fn default() -> Self {
1645        Self {
1646            s_type: StructureType::BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR,
1647            next: ptr::null(),
1648            swapchain: SwapchainKHR::default(),
1649            image_index: u32::default(),
1650        }
1651    }
1652}
1653
1654unsafe impl Send for BindImageMemorySwapchainInfoKHR {}
1655unsafe impl Sync for BindImageMemorySwapchainInfoKHR {}
1656
1657/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImagePlaneMemoryInfo.html>
1658#[repr(C)]
1659#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1660pub struct BindImagePlaneMemoryInfo {
1661    pub s_type: StructureType,
1662    pub next: *const c_void,
1663    pub plane_aspect: ImageAspectFlags,
1664}
1665
1666impl Default for BindImagePlaneMemoryInfo {
1667    #[inline]
1668    fn default() -> Self {
1669        Self {
1670            s_type: StructureType::BIND_IMAGE_PLANE_MEMORY_INFO,
1671            next: ptr::null(),
1672            plane_aspect: ImageAspectFlags::default(),
1673        }
1674    }
1675}
1676
1677unsafe impl Send for BindImagePlaneMemoryInfo {}
1678unsafe impl Sync for BindImagePlaneMemoryInfo {}
1679
1680/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindIndexBufferIndirectCommandEXT.html>
1681#[repr(C)]
1682#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1683pub struct BindIndexBufferIndirectCommandEXT {
1684    pub buffer_address: DeviceAddress,
1685    pub size: u32,
1686    pub index_type: IndexType,
1687}
1688
1689/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindIndexBufferIndirectCommandNV.html>
1690#[repr(C)]
1691#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1692pub struct BindIndexBufferIndirectCommandNV {
1693    pub buffer_address: DeviceAddress,
1694    pub size: u32,
1695    pub index_type: IndexType,
1696}
1697
1698/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindMemoryStatus.html>
1699#[repr(C)]
1700#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1701pub struct BindMemoryStatus {
1702    pub s_type: StructureType,
1703    pub next: *const c_void,
1704    pub result: *mut Result,
1705}
1706
1707impl Default for BindMemoryStatus {
1708    #[inline]
1709    fn default() -> Self {
1710        Self {
1711            s_type: StructureType::BIND_MEMORY_STATUS,
1712            next: ptr::null(),
1713            result: ptr::null_mut(),
1714        }
1715    }
1716}
1717
1718unsafe impl Send for BindMemoryStatus {}
1719unsafe impl Sync for BindMemoryStatus {}
1720
1721/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindPipelineIndirectCommandNV.html>
1722#[repr(C)]
1723#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1724pub struct BindPipelineIndirectCommandNV {
1725    pub pipeline_address: DeviceAddress,
1726}
1727
1728/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindShaderGroupIndirectCommandNV.html>
1729#[repr(C)]
1730#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1731pub struct BindShaderGroupIndirectCommandNV {
1732    pub group_index: u32,
1733}
1734
1735/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindSparseInfo.html>
1736#[repr(C)]
1737#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1738pub struct BindSparseInfo {
1739    pub s_type: StructureType,
1740    pub next: *const c_void,
1741    pub wait_semaphore_count: u32,
1742    pub wait_semaphores: *const Semaphore,
1743    pub buffer_bind_count: u32,
1744    pub buffer_binds: *const SparseBufferMemoryBindInfo,
1745    pub image_opaque_bind_count: u32,
1746    pub image_opaque_binds: *const SparseImageOpaqueMemoryBindInfo,
1747    pub image_bind_count: u32,
1748    pub image_binds: *const SparseImageMemoryBindInfo,
1749    pub signal_semaphore_count: u32,
1750    pub signal_semaphores: *const Semaphore,
1751}
1752
1753impl Default for BindSparseInfo {
1754    #[inline]
1755    fn default() -> Self {
1756        Self {
1757            s_type: StructureType::BIND_SPARSE_INFO,
1758            next: ptr::null(),
1759            wait_semaphore_count: u32::default(),
1760            wait_semaphores: ptr::null(),
1761            buffer_bind_count: u32::default(),
1762            buffer_binds: ptr::null(),
1763            image_opaque_bind_count: u32::default(),
1764            image_opaque_binds: ptr::null(),
1765            image_bind_count: u32::default(),
1766            image_binds: ptr::null(),
1767            signal_semaphore_count: u32::default(),
1768            signal_semaphores: ptr::null(),
1769        }
1770    }
1771}
1772
1773unsafe impl Send for BindSparseInfo {}
1774unsafe impl Sync for BindSparseInfo {}
1775
1776/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindTensorMemoryInfoARM.html>
1777#[repr(C)]
1778#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1779pub struct BindTensorMemoryInfoARM {
1780    pub s_type: StructureType,
1781    pub next: *const c_void,
1782    pub tensor: TensorARM,
1783    pub memory: DeviceMemory,
1784    pub memory_offset: DeviceSize,
1785}
1786
1787impl Default for BindTensorMemoryInfoARM {
1788    #[inline]
1789    fn default() -> Self {
1790        Self {
1791            s_type: StructureType::BIND_TENSOR_MEMORY_INFO_ARM,
1792            next: ptr::null(),
1793            tensor: TensorARM::default(),
1794            memory: DeviceMemory::default(),
1795            memory_offset: DeviceSize::default(),
1796        }
1797    }
1798}
1799
1800unsafe impl Send for BindTensorMemoryInfoARM {}
1801unsafe impl Sync for BindTensorMemoryInfoARM {}
1802
1803/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindVertexBufferIndirectCommandEXT.html>
1804#[repr(C)]
1805#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1806pub struct BindVertexBufferIndirectCommandEXT {
1807    pub buffer_address: DeviceAddress,
1808    pub size: u32,
1809    pub stride: u32,
1810}
1811
1812/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindVertexBufferIndirectCommandNV.html>
1813#[repr(C)]
1814#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1815pub struct BindVertexBufferIndirectCommandNV {
1816    pub buffer_address: DeviceAddress,
1817    pub size: u32,
1818    pub stride: u32,
1819}
1820
1821/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindVideoSessionMemoryInfoKHR.html>
1822#[repr(C)]
1823#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1824pub struct BindVideoSessionMemoryInfoKHR {
1825    pub s_type: StructureType,
1826    pub next: *const c_void,
1827    pub memory_bind_index: u32,
1828    pub memory: DeviceMemory,
1829    pub memory_offset: DeviceSize,
1830    pub memory_size: DeviceSize,
1831}
1832
1833impl Default for BindVideoSessionMemoryInfoKHR {
1834    #[inline]
1835    fn default() -> Self {
1836        Self {
1837            s_type: StructureType::BIND_VIDEO_SESSION_MEMORY_INFO_KHR,
1838            next: ptr::null(),
1839            memory_bind_index: u32::default(),
1840            memory: DeviceMemory::default(),
1841            memory_offset: DeviceSize::default(),
1842            memory_size: DeviceSize::default(),
1843        }
1844    }
1845}
1846
1847unsafe impl Send for BindVideoSessionMemoryInfoKHR {}
1848unsafe impl Sync for BindVideoSessionMemoryInfoKHR {}
1849
1850/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBlitImageCubicWeightsInfoQCOM.html>
1851#[repr(C)]
1852#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1853pub struct BlitImageCubicWeightsInfoQCOM {
1854    pub s_type: StructureType,
1855    pub next: *const c_void,
1856    pub cubic_weights: CubicFilterWeightsQCOM,
1857}
1858
1859impl Default for BlitImageCubicWeightsInfoQCOM {
1860    #[inline]
1861    fn default() -> Self {
1862        Self {
1863            s_type: StructureType::BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM,
1864            next: ptr::null(),
1865            cubic_weights: CubicFilterWeightsQCOM::default(),
1866        }
1867    }
1868}
1869
1870unsafe impl Send for BlitImageCubicWeightsInfoQCOM {}
1871unsafe impl Sync for BlitImageCubicWeightsInfoQCOM {}
1872
1873/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBlitImageInfo2.html>
1874#[repr(C)]
1875#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1876pub struct BlitImageInfo2 {
1877    pub s_type: StructureType,
1878    pub next: *const c_void,
1879    pub src_image: Image,
1880    pub src_image_layout: ImageLayout,
1881    pub dst_image: Image,
1882    pub dst_image_layout: ImageLayout,
1883    pub region_count: u32,
1884    pub regions: *const ImageBlit2,
1885    pub filter: Filter,
1886}
1887
1888impl Default for BlitImageInfo2 {
1889    #[inline]
1890    fn default() -> Self {
1891        Self {
1892            s_type: StructureType::BLIT_IMAGE_INFO_2,
1893            next: ptr::null(),
1894            src_image: Image::default(),
1895            src_image_layout: ImageLayout::default(),
1896            dst_image: Image::default(),
1897            dst_image_layout: ImageLayout::default(),
1898            region_count: u32::default(),
1899            regions: ptr::null(),
1900            filter: Filter::default(),
1901        }
1902    }
1903}
1904
1905unsafe impl Send for BlitImageInfo2 {}
1906unsafe impl Sync for BlitImageInfo2 {}
1907
1908/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCaptureDescriptorDataInfoEXT.html>
1909#[repr(C)]
1910#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1911pub struct BufferCaptureDescriptorDataInfoEXT {
1912    pub s_type: StructureType,
1913    pub next: *const c_void,
1914    pub buffer: Buffer,
1915}
1916
1917impl Default for BufferCaptureDescriptorDataInfoEXT {
1918    #[inline]
1919    fn default() -> Self {
1920        Self {
1921            s_type: StructureType::BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
1922            next: ptr::null(),
1923            buffer: Buffer::default(),
1924        }
1925    }
1926}
1927
1928unsafe impl Send for BufferCaptureDescriptorDataInfoEXT {}
1929unsafe impl Sync for BufferCaptureDescriptorDataInfoEXT {}
1930
1931/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionBufferCreateInfoFUCHSIA.html>
1932#[repr(C)]
1933#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1934pub struct BufferCollectionBufferCreateInfoFUCHSIA {
1935    pub s_type: StructureType,
1936    pub next: *const c_void,
1937    pub collection: BufferCollectionFUCHSIA,
1938    pub index: u32,
1939}
1940
1941impl Default for BufferCollectionBufferCreateInfoFUCHSIA {
1942    #[inline]
1943    fn default() -> Self {
1944        Self {
1945            s_type: StructureType::BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA,
1946            next: ptr::null(),
1947            collection: BufferCollectionFUCHSIA::default(),
1948            index: u32::default(),
1949        }
1950    }
1951}
1952
1953unsafe impl Send for BufferCollectionBufferCreateInfoFUCHSIA {}
1954unsafe impl Sync for BufferCollectionBufferCreateInfoFUCHSIA {}
1955
1956/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionConstraintsInfoFUCHSIA.html>
1957#[repr(C)]
1958#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1959pub struct BufferCollectionConstraintsInfoFUCHSIA {
1960    pub s_type: StructureType,
1961    pub next: *const c_void,
1962    pub min_buffer_count: u32,
1963    pub max_buffer_count: u32,
1964    pub min_buffer_count_for_camping: u32,
1965    pub min_buffer_count_for_dedicated_slack: u32,
1966    pub min_buffer_count_for_shared_slack: u32,
1967}
1968
1969impl Default for BufferCollectionConstraintsInfoFUCHSIA {
1970    #[inline]
1971    fn default() -> Self {
1972        Self {
1973            s_type: StructureType::BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA,
1974            next: ptr::null(),
1975            min_buffer_count: u32::default(),
1976            max_buffer_count: u32::default(),
1977            min_buffer_count_for_camping: u32::default(),
1978            min_buffer_count_for_dedicated_slack: u32::default(),
1979            min_buffer_count_for_shared_slack: u32::default(),
1980        }
1981    }
1982}
1983
1984unsafe impl Send for BufferCollectionConstraintsInfoFUCHSIA {}
1985unsafe impl Sync for BufferCollectionConstraintsInfoFUCHSIA {}
1986
1987/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionCreateInfoFUCHSIA.html>
1988#[repr(C)]
1989#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1990pub struct BufferCollectionCreateInfoFUCHSIA {
1991    pub s_type: StructureType,
1992    pub next: *const c_void,
1993    pub collection_token: zx_handle_t,
1994}
1995
1996impl Default for BufferCollectionCreateInfoFUCHSIA {
1997    #[inline]
1998    fn default() -> Self {
1999        Self {
2000            s_type: StructureType::BUFFER_COLLECTION_CREATE_INFO_FUCHSIA,
2001            next: ptr::null(),
2002            collection_token: zx_handle_t::default(),
2003        }
2004    }
2005}
2006
2007unsafe impl Send for BufferCollectionCreateInfoFUCHSIA {}
2008unsafe impl Sync for BufferCollectionCreateInfoFUCHSIA {}
2009
2010/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionImageCreateInfoFUCHSIA.html>
2011#[repr(C)]
2012#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2013pub struct BufferCollectionImageCreateInfoFUCHSIA {
2014    pub s_type: StructureType,
2015    pub next: *const c_void,
2016    pub collection: BufferCollectionFUCHSIA,
2017    pub index: u32,
2018}
2019
2020impl Default for BufferCollectionImageCreateInfoFUCHSIA {
2021    #[inline]
2022    fn default() -> Self {
2023        Self {
2024            s_type: StructureType::BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA,
2025            next: ptr::null(),
2026            collection: BufferCollectionFUCHSIA::default(),
2027            index: u32::default(),
2028        }
2029    }
2030}
2031
2032unsafe impl Send for BufferCollectionImageCreateInfoFUCHSIA {}
2033unsafe impl Sync for BufferCollectionImageCreateInfoFUCHSIA {}
2034
2035/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionPropertiesFUCHSIA.html>
2036#[repr(C)]
2037#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2038pub struct BufferCollectionPropertiesFUCHSIA {
2039    pub s_type: StructureType,
2040    pub next: *mut c_void,
2041    pub memory_type_bits: u32,
2042    pub buffer_count: u32,
2043    pub create_info_index: u32,
2044    pub sysmem_pixel_format: u64,
2045    pub format_features: FormatFeatureFlags,
2046    pub sysmem_color_space_index: SysmemColorSpaceFUCHSIA,
2047    pub sampler_ycbcr_conversion_components: ComponentMapping,
2048    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
2049    pub suggested_ycbcr_range: SamplerYcbcrRange,
2050    pub suggested_x_chroma_offset: ChromaLocation,
2051    pub suggested_y_chroma_offset: ChromaLocation,
2052}
2053
2054impl Default for BufferCollectionPropertiesFUCHSIA {
2055    #[inline]
2056    fn default() -> Self {
2057        Self {
2058            s_type: StructureType::BUFFER_COLLECTION_PROPERTIES_FUCHSIA,
2059            next: ptr::null_mut(),
2060            memory_type_bits: u32::default(),
2061            buffer_count: u32::default(),
2062            create_info_index: u32::default(),
2063            sysmem_pixel_format: u64::default(),
2064            format_features: FormatFeatureFlags::default(),
2065            sysmem_color_space_index: SysmemColorSpaceFUCHSIA::default(),
2066            sampler_ycbcr_conversion_components: ComponentMapping::default(),
2067            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
2068            suggested_ycbcr_range: SamplerYcbcrRange::default(),
2069            suggested_x_chroma_offset: ChromaLocation::default(),
2070            suggested_y_chroma_offset: ChromaLocation::default(),
2071        }
2072    }
2073}
2074
2075unsafe impl Send for BufferCollectionPropertiesFUCHSIA {}
2076unsafe impl Sync for BufferCollectionPropertiesFUCHSIA {}
2077
2078/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferConstraintsInfoFUCHSIA.html>
2079#[repr(C)]
2080#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2081pub struct BufferConstraintsInfoFUCHSIA {
2082    pub s_type: StructureType,
2083    pub next: *const c_void,
2084    pub create_info: BufferCreateInfo,
2085    pub required_format_features: FormatFeatureFlags,
2086    pub buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA,
2087}
2088
2089impl Default for BufferConstraintsInfoFUCHSIA {
2090    #[inline]
2091    fn default() -> Self {
2092        Self {
2093            s_type: StructureType::BUFFER_CONSTRAINTS_INFO_FUCHSIA,
2094            next: ptr::null(),
2095            create_info: BufferCreateInfo::default(),
2096            required_format_features: FormatFeatureFlags::default(),
2097            buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA::default(),
2098        }
2099    }
2100}
2101
2102unsafe impl Send for BufferConstraintsInfoFUCHSIA {}
2103unsafe impl Sync for BufferConstraintsInfoFUCHSIA {}
2104
2105/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCopy.html>
2106#[repr(C)]
2107#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2108pub struct BufferCopy {
2109    pub src_offset: DeviceSize,
2110    pub dst_offset: DeviceSize,
2111    pub size: DeviceSize,
2112}
2113
2114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCopy2.html>
2115#[repr(C)]
2116#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2117pub struct BufferCopy2 {
2118    pub s_type: StructureType,
2119    pub next: *const c_void,
2120    pub src_offset: DeviceSize,
2121    pub dst_offset: DeviceSize,
2122    pub size: DeviceSize,
2123}
2124
2125impl Default for BufferCopy2 {
2126    #[inline]
2127    fn default() -> Self {
2128        Self {
2129            s_type: StructureType::BUFFER_COPY_2,
2130            next: ptr::null(),
2131            src_offset: DeviceSize::default(),
2132            dst_offset: DeviceSize::default(),
2133            size: DeviceSize::default(),
2134        }
2135    }
2136}
2137
2138unsafe impl Send for BufferCopy2 {}
2139unsafe impl Sync for BufferCopy2 {}
2140
2141/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCreateInfo.html>
2142#[repr(C)]
2143#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2144pub struct BufferCreateInfo {
2145    pub s_type: StructureType,
2146    pub next: *const c_void,
2147    pub flags: BufferCreateFlags,
2148    pub size: DeviceSize,
2149    pub usage: BufferUsageFlags,
2150    pub sharing_mode: SharingMode,
2151    pub queue_family_index_count: u32,
2152    pub queue_family_indices: *const u32,
2153}
2154
2155impl Default for BufferCreateInfo {
2156    #[inline]
2157    fn default() -> Self {
2158        Self {
2159            s_type: StructureType::BUFFER_CREATE_INFO,
2160            next: ptr::null(),
2161            flags: BufferCreateFlags::default(),
2162            size: DeviceSize::default(),
2163            usage: BufferUsageFlags::default(),
2164            sharing_mode: SharingMode::default(),
2165            queue_family_index_count: u32::default(),
2166            queue_family_indices: ptr::null(),
2167        }
2168    }
2169}
2170
2171unsafe impl Send for BufferCreateInfo {}
2172unsafe impl Sync for BufferCreateInfo {}
2173
2174/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressCreateInfoEXT.html>
2175#[repr(C)]
2176#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2177pub struct BufferDeviceAddressCreateInfoEXT {
2178    pub s_type: StructureType,
2179    pub next: *const c_void,
2180    pub device_address: DeviceAddress,
2181}
2182
2183impl Default for BufferDeviceAddressCreateInfoEXT {
2184    #[inline]
2185    fn default() -> Self {
2186        Self {
2187            s_type: StructureType::BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT,
2188            next: ptr::null(),
2189            device_address: DeviceAddress::default(),
2190        }
2191    }
2192}
2193
2194unsafe impl Send for BufferDeviceAddressCreateInfoEXT {}
2195unsafe impl Sync for BufferDeviceAddressCreateInfoEXT {}
2196
2197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfo.html>
2198#[repr(C)]
2199#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2200pub struct BufferDeviceAddressInfo {
2201    pub s_type: StructureType,
2202    pub next: *const c_void,
2203    pub buffer: Buffer,
2204}
2205
2206impl Default for BufferDeviceAddressInfo {
2207    #[inline]
2208    fn default() -> Self {
2209        Self {
2210            s_type: StructureType::BUFFER_DEVICE_ADDRESS_INFO,
2211            next: ptr::null(),
2212            buffer: Buffer::default(),
2213        }
2214    }
2215}
2216
2217unsafe impl Send for BufferDeviceAddressInfo {}
2218unsafe impl Sync for BufferDeviceAddressInfo {}
2219
2220/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferImageCopy.html>
2221#[repr(C)]
2222#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2223pub struct BufferImageCopy {
2224    pub buffer_offset: DeviceSize,
2225    pub buffer_row_length: u32,
2226    pub buffer_image_height: u32,
2227    pub image_subresource: ImageSubresourceLayers,
2228    pub image_offset: Offset3D,
2229    pub image_extent: Extent3D,
2230}
2231
2232/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferImageCopy2.html>
2233#[repr(C)]
2234#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2235pub struct BufferImageCopy2 {
2236    pub s_type: StructureType,
2237    pub next: *const c_void,
2238    pub buffer_offset: DeviceSize,
2239    pub buffer_row_length: u32,
2240    pub buffer_image_height: u32,
2241    pub image_subresource: ImageSubresourceLayers,
2242    pub image_offset: Offset3D,
2243    pub image_extent: Extent3D,
2244}
2245
2246impl Default for BufferImageCopy2 {
2247    #[inline]
2248    fn default() -> Self {
2249        Self {
2250            s_type: StructureType::BUFFER_IMAGE_COPY_2,
2251            next: ptr::null(),
2252            buffer_offset: DeviceSize::default(),
2253            buffer_row_length: u32::default(),
2254            buffer_image_height: u32::default(),
2255            image_subresource: ImageSubresourceLayers::default(),
2256            image_offset: Offset3D::default(),
2257            image_extent: Extent3D::default(),
2258        }
2259    }
2260}
2261
2262unsafe impl Send for BufferImageCopy2 {}
2263unsafe impl Sync for BufferImageCopy2 {}
2264
2265/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryBarrier.html>
2266#[repr(C)]
2267#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2268pub struct BufferMemoryBarrier {
2269    pub s_type: StructureType,
2270    pub next: *const c_void,
2271    pub src_access_mask: AccessFlags,
2272    pub dst_access_mask: AccessFlags,
2273    pub src_queue_family_index: u32,
2274    pub dst_queue_family_index: u32,
2275    pub buffer: Buffer,
2276    pub offset: DeviceSize,
2277    pub size: DeviceSize,
2278}
2279
2280impl Default for BufferMemoryBarrier {
2281    #[inline]
2282    fn default() -> Self {
2283        Self {
2284            s_type: StructureType::BUFFER_MEMORY_BARRIER,
2285            next: ptr::null(),
2286            src_access_mask: AccessFlags::default(),
2287            dst_access_mask: AccessFlags::default(),
2288            src_queue_family_index: u32::default(),
2289            dst_queue_family_index: u32::default(),
2290            buffer: Buffer::default(),
2291            offset: DeviceSize::default(),
2292            size: DeviceSize::default(),
2293        }
2294    }
2295}
2296
2297unsafe impl Send for BufferMemoryBarrier {}
2298unsafe impl Sync for BufferMemoryBarrier {}
2299
2300/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryBarrier2.html>
2301#[repr(C)]
2302#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2303pub struct BufferMemoryBarrier2 {
2304    pub s_type: StructureType,
2305    pub next: *const c_void,
2306    pub src_stage_mask: PipelineStageFlags2,
2307    pub src_access_mask: AccessFlags2,
2308    pub dst_stage_mask: PipelineStageFlags2,
2309    pub dst_access_mask: AccessFlags2,
2310    pub src_queue_family_index: u32,
2311    pub dst_queue_family_index: u32,
2312    pub buffer: Buffer,
2313    pub offset: DeviceSize,
2314    pub size: DeviceSize,
2315}
2316
2317impl Default for BufferMemoryBarrier2 {
2318    #[inline]
2319    fn default() -> Self {
2320        Self {
2321            s_type: StructureType::BUFFER_MEMORY_BARRIER_2,
2322            next: ptr::null(),
2323            src_stage_mask: PipelineStageFlags2::default(),
2324            src_access_mask: AccessFlags2::default(),
2325            dst_stage_mask: PipelineStageFlags2::default(),
2326            dst_access_mask: AccessFlags2::default(),
2327            src_queue_family_index: u32::default(),
2328            dst_queue_family_index: u32::default(),
2329            buffer: Buffer::default(),
2330            offset: DeviceSize::default(),
2331            size: DeviceSize::default(),
2332        }
2333    }
2334}
2335
2336unsafe impl Send for BufferMemoryBarrier2 {}
2337unsafe impl Sync for BufferMemoryBarrier2 {}
2338
2339/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryRequirementsInfo2.html>
2340#[repr(C)]
2341#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2342pub struct BufferMemoryRequirementsInfo2 {
2343    pub s_type: StructureType,
2344    pub next: *const c_void,
2345    pub buffer: Buffer,
2346}
2347
2348impl Default for BufferMemoryRequirementsInfo2 {
2349    #[inline]
2350    fn default() -> Self {
2351        Self {
2352            s_type: StructureType::BUFFER_MEMORY_REQUIREMENTS_INFO_2,
2353            next: ptr::null(),
2354            buffer: Buffer::default(),
2355        }
2356    }
2357}
2358
2359unsafe impl Send for BufferMemoryRequirementsInfo2 {}
2360unsafe impl Sync for BufferMemoryRequirementsInfo2 {}
2361
2362/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferOpaqueCaptureAddressCreateInfo.html>
2363#[repr(C)]
2364#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2365pub struct BufferOpaqueCaptureAddressCreateInfo {
2366    pub s_type: StructureType,
2367    pub next: *const c_void,
2368    pub opaque_capture_address: u64,
2369}
2370
2371impl Default for BufferOpaqueCaptureAddressCreateInfo {
2372    #[inline]
2373    fn default() -> Self {
2374        Self {
2375            s_type: StructureType::BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
2376            next: ptr::null(),
2377            opaque_capture_address: u64::default(),
2378        }
2379    }
2380}
2381
2382unsafe impl Send for BufferOpaqueCaptureAddressCreateInfo {}
2383unsafe impl Sync for BufferOpaqueCaptureAddressCreateInfo {}
2384
2385/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferUsageFlags2CreateInfo.html>
2386#[repr(C)]
2387#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2388pub struct BufferUsageFlags2CreateInfo {
2389    pub s_type: StructureType,
2390    pub next: *const c_void,
2391    pub usage: BufferUsageFlags2,
2392}
2393
2394impl Default for BufferUsageFlags2CreateInfo {
2395    #[inline]
2396    fn default() -> Self {
2397        Self {
2398            s_type: StructureType::BUFFER_USAGE_FLAGS_2_CREATE_INFO,
2399            next: ptr::null(),
2400            usage: BufferUsageFlags2::default(),
2401        }
2402    }
2403}
2404
2405unsafe impl Send for BufferUsageFlags2CreateInfo {}
2406unsafe impl Sync for BufferUsageFlags2CreateInfo {}
2407
2408/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferViewCreateInfo.html>
2409#[repr(C)]
2410#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2411pub struct BufferViewCreateInfo {
2412    pub s_type: StructureType,
2413    pub next: *const c_void,
2414    pub flags: BufferViewCreateFlags,
2415    pub buffer: Buffer,
2416    pub format: Format,
2417    pub offset: DeviceSize,
2418    pub range: DeviceSize,
2419}
2420
2421impl Default for BufferViewCreateInfo {
2422    #[inline]
2423    fn default() -> Self {
2424        Self {
2425            s_type: StructureType::BUFFER_VIEW_CREATE_INFO,
2426            next: ptr::null(),
2427            flags: BufferViewCreateFlags::default(),
2428            buffer: Buffer::default(),
2429            format: Format::default(),
2430            offset: DeviceSize::default(),
2431            range: DeviceSize::default(),
2432        }
2433    }
2434}
2435
2436unsafe impl Send for BufferViewCreateInfo {}
2437unsafe impl Sync for BufferViewCreateInfo {}
2438
2439/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBuildPartitionedAccelerationStructureIndirectCommandNV.html>
2440#[repr(C)]
2441#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2442pub struct BuildPartitionedAccelerationStructureIndirectCommandNV {
2443    pub op_type: PartitionedAccelerationStructureOpTypeNV,
2444    pub arg_count: u32,
2445    pub arg_data: StridedDeviceAddressNV,
2446}
2447
2448/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBuildPartitionedAccelerationStructureInfoNV.html>
2449#[repr(C)]
2450#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2451pub struct BuildPartitionedAccelerationStructureInfoNV {
2452    pub s_type: StructureType,
2453    pub next: *mut c_void,
2454    pub input: PartitionedAccelerationStructureInstancesInputNV,
2455    pub src_acceleration_structure_data: DeviceAddress,
2456    pub dst_acceleration_structure_data: DeviceAddress,
2457    pub scratch_data: DeviceAddress,
2458    pub src_infos: DeviceAddress,
2459    pub src_infos_count: DeviceAddress,
2460}
2461
2462impl Default for BuildPartitionedAccelerationStructureInfoNV {
2463    #[inline]
2464    fn default() -> Self {
2465        Self {
2466            s_type: StructureType::BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV,
2467            next: ptr::null_mut(),
2468            input: PartitionedAccelerationStructureInstancesInputNV::default(),
2469            src_acceleration_structure_data: DeviceAddress::default(),
2470            dst_acceleration_structure_data: DeviceAddress::default(),
2471            scratch_data: DeviceAddress::default(),
2472            src_infos: DeviceAddress::default(),
2473            src_infos_count: DeviceAddress::default(),
2474        }
2475    }
2476}
2477
2478unsafe impl Send for BuildPartitionedAccelerationStructureInfoNV {}
2479unsafe impl Sync for BuildPartitionedAccelerationStructureInfoNV {}
2480
2481/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCalibratedTimestampInfoKHR.html>
2482#[repr(C)]
2483#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2484pub struct CalibratedTimestampInfoKHR {
2485    pub s_type: StructureType,
2486    pub next: *const c_void,
2487    pub time_domain: TimeDomainKHR,
2488}
2489
2490impl Default for CalibratedTimestampInfoKHR {
2491    #[inline]
2492    fn default() -> Self {
2493        Self {
2494            s_type: StructureType::CALIBRATED_TIMESTAMP_INFO_KHR,
2495            next: ptr::null(),
2496            time_domain: TimeDomainKHR::default(),
2497        }
2498    }
2499}
2500
2501unsafe impl Send for CalibratedTimestampInfoKHR {}
2502unsafe impl Sync for CalibratedTimestampInfoKHR {}
2503
2504/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCheckpointData2NV.html>
2505#[repr(C)]
2506#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2507pub struct CheckpointData2NV {
2508    pub s_type: StructureType,
2509    pub next: *mut c_void,
2510    pub stage: PipelineStageFlags2,
2511    pub checkpoint_marker: *mut c_void,
2512}
2513
2514impl Default for CheckpointData2NV {
2515    #[inline]
2516    fn default() -> Self {
2517        Self {
2518            s_type: StructureType::CHECKPOINT_DATA_2_NV,
2519            next: ptr::null_mut(),
2520            stage: PipelineStageFlags2::default(),
2521            checkpoint_marker: ptr::null_mut(),
2522        }
2523    }
2524}
2525
2526unsafe impl Send for CheckpointData2NV {}
2527unsafe impl Sync for CheckpointData2NV {}
2528
2529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCheckpointDataNV.html>
2530#[repr(C)]
2531#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2532pub struct CheckpointDataNV {
2533    pub s_type: StructureType,
2534    pub next: *mut c_void,
2535    pub stage: PipelineStageFlags,
2536    pub checkpoint_marker: *mut c_void,
2537}
2538
2539impl Default for CheckpointDataNV {
2540    #[inline]
2541    fn default() -> Self {
2542        Self {
2543            s_type: StructureType::CHECKPOINT_DATA_NV,
2544            next: ptr::null_mut(),
2545            stage: PipelineStageFlags::default(),
2546            checkpoint_marker: ptr::null_mut(),
2547        }
2548    }
2549}
2550
2551unsafe impl Send for CheckpointDataNV {}
2552unsafe impl Sync for CheckpointDataNV {}
2553
2554/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClearAttachment.html>
2555#[repr(C)]
2556#[derive(Copy, Clone, Default, Debug)]
2557pub struct ClearAttachment {
2558    pub aspect_mask: ImageAspectFlags,
2559    pub color_attachment: u32,
2560    pub clear_value: ClearValue,
2561}
2562
2563/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClearDepthStencilValue.html>
2564#[repr(C)]
2565#[derive(Copy, Clone, Default, Debug, PartialEq)]
2566pub struct ClearDepthStencilValue {
2567    pub depth: f32,
2568    pub stencil: u32,
2569}
2570
2571/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClearRect.html>
2572#[repr(C)]
2573#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2574pub struct ClearRect {
2575    pub rect: Rect2D,
2576    pub base_array_layer: u32,
2577    pub layer_count: u32,
2578}
2579
2580/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV.html>
2581#[repr(C)]
2582#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2583pub struct ClusterAccelerationStructureBuildClustersBottomLevelInfoNV {
2584    pub cluster_references_count: u32,
2585    pub cluster_references_stride: u32,
2586    pub cluster_references: DeviceAddress,
2587}
2588
2589bitfields32! {
2590    struct ClusterAccelerationStructureBuildTriangleClusterInfoNVBitfields0 {
2591        (triangle_count, with_triangle_count)[0 .. 9],
2592        (vertex_count, with_vertex_count)[9 .. 18],
2593        (position_truncate_bit_count, with_position_truncate_bit_count)[18 .. 24],
2594        (index_type, with_index_type)[24 .. 28],
2595        (opacity_micromap_index_type, with_opacity_micromap_index_type)[28 .. 32],
2596    }
2597}
2598
2599/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildTriangleClusterInfoNV.html>
2600#[repr(C)]
2601#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2602pub struct ClusterAccelerationStructureBuildTriangleClusterInfoNV {
2603    pub cluster_id: u32,
2604    pub cluster_flags: ClusterAccelerationStructureClusterFlagsNV,
2605    pub base_geometry_index_and_geometry_flags:
2606        ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV,
2607    pub index_buffer_stride: u16,
2608    pub vertex_buffer_stride: u16,
2609    pub geometry_index_and_flags_buffer_stride: u16,
2610    pub opacity_micromap_index_buffer_stride: u16,
2611    pub index_buffer: DeviceAddress,
2612    pub vertex_buffer: DeviceAddress,
2613    pub geometry_index_and_flags_buffer: DeviceAddress,
2614    pub opacity_micromap_array: DeviceAddress,
2615    pub opacity_micromap_index_buffer: DeviceAddress,
2616    pub bitfields0: ClusterAccelerationStructureBuildTriangleClusterInfoNVBitfields0,
2617}
2618
2619bitfields32! {
2620    struct ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNVBitfields0 {
2621        (triangle_count, with_triangle_count)[0 .. 9],
2622        (vertex_count, with_vertex_count)[9 .. 18],
2623        (position_truncate_bit_count, with_position_truncate_bit_count)[18 .. 24],
2624        (index_type, with_index_type)[24 .. 28],
2625        (opacity_micromap_index_type, with_opacity_micromap_index_type)[28 .. 32],
2626    }
2627}
2628
2629/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.html>
2630#[repr(C)]
2631#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2632pub struct ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV {
2633    pub cluster_id: u32,
2634    pub cluster_flags: ClusterAccelerationStructureClusterFlagsNV,
2635    pub base_geometry_index_and_geometry_flags:
2636        ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV,
2637    pub index_buffer_stride: u16,
2638    pub vertex_buffer_stride: u16,
2639    pub geometry_index_and_flags_buffer_stride: u16,
2640    pub opacity_micromap_index_buffer_stride: u16,
2641    pub index_buffer: DeviceAddress,
2642    pub vertex_buffer: DeviceAddress,
2643    pub geometry_index_and_flags_buffer: DeviceAddress,
2644    pub opacity_micromap_array: DeviceAddress,
2645    pub opacity_micromap_index_buffer: DeviceAddress,
2646    pub instantiation_bounding_box_limit: DeviceAddress,
2647    pub bitfields0: ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNVBitfields0,
2648}
2649
2650/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureClustersBottomLevelInputNV.html>
2651#[repr(C)]
2652#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2653pub struct ClusterAccelerationStructureClustersBottomLevelInputNV {
2654    pub s_type: StructureType,
2655    pub next: *mut c_void,
2656    pub max_total_cluster_count: u32,
2657    pub max_cluster_count_per_acceleration_structure: u32,
2658}
2659
2660impl Default for ClusterAccelerationStructureClustersBottomLevelInputNV {
2661    #[inline]
2662    fn default() -> Self {
2663        Self {
2664            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV,
2665            next: ptr::null_mut(),
2666            max_total_cluster_count: u32::default(),
2667            max_cluster_count_per_acceleration_structure: u32::default(),
2668        }
2669    }
2670}
2671
2672unsafe impl Send for ClusterAccelerationStructureClustersBottomLevelInputNV {}
2673unsafe impl Sync for ClusterAccelerationStructureClustersBottomLevelInputNV {}
2674
2675/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureCommandsInfoNV.html>
2676#[repr(C)]
2677#[derive(Copy, Clone, Debug)]
2678pub struct ClusterAccelerationStructureCommandsInfoNV {
2679    pub s_type: StructureType,
2680    pub next: *mut c_void,
2681    pub input: ClusterAccelerationStructureInputInfoNV,
2682    pub dst_implicit_data: DeviceAddress,
2683    pub scratch_data: DeviceAddress,
2684    pub dst_addresses_array: StridedDeviceAddressRegionKHR,
2685    pub dst_sizes_array: StridedDeviceAddressRegionKHR,
2686    pub src_infos_array: StridedDeviceAddressRegionKHR,
2687    pub src_infos_count: DeviceAddress,
2688    pub address_resolution_flags: ClusterAccelerationStructureAddressResolutionFlagsNV,
2689}
2690
2691impl Default for ClusterAccelerationStructureCommandsInfoNV {
2692    #[inline]
2693    fn default() -> Self {
2694        Self {
2695            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV,
2696            next: ptr::null_mut(),
2697            input: ClusterAccelerationStructureInputInfoNV::default(),
2698            dst_implicit_data: DeviceAddress::default(),
2699            scratch_data: DeviceAddress::default(),
2700            dst_addresses_array: StridedDeviceAddressRegionKHR::default(),
2701            dst_sizes_array: StridedDeviceAddressRegionKHR::default(),
2702            src_infos_array: StridedDeviceAddressRegionKHR::default(),
2703            src_infos_count: DeviceAddress::default(),
2704            address_resolution_flags: ClusterAccelerationStructureAddressResolutionFlagsNV::default(
2705            ),
2706        }
2707    }
2708}
2709
2710unsafe impl Send for ClusterAccelerationStructureCommandsInfoNV {}
2711unsafe impl Sync for ClusterAccelerationStructureCommandsInfoNV {}
2712
2713bitfields32! {
2714    struct ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNVBitfields0 {
2715        (geometry_index, with_geometry_index)[0 .. 24],
2716        (reserved, with_reserved)[24 .. 29],
2717        (geometry_flags, with_geometry_flags)[29 .. 32],
2718    }
2719}
2720
2721/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV.html>
2722#[repr(C)]
2723#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2724pub struct ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV {
2725    pub bitfields0: ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNVBitfields0,
2726}
2727
2728/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureGetTemplateIndicesInfoNV.html>
2729#[repr(C)]
2730#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2731pub struct ClusterAccelerationStructureGetTemplateIndicesInfoNV {
2732    pub cluster_template_address: DeviceAddress,
2733}
2734
2735/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureInputInfoNV.html>
2736#[repr(C)]
2737#[derive(Copy, Clone, Debug)]
2738pub struct ClusterAccelerationStructureInputInfoNV {
2739    pub s_type: StructureType,
2740    pub next: *mut c_void,
2741    pub max_acceleration_structure_count: u32,
2742    pub flags: BuildAccelerationStructureFlagsKHR,
2743    pub op_type: ClusterAccelerationStructureOpTypeNV,
2744    pub op_mode: ClusterAccelerationStructureOpModeNV,
2745    pub op_input: ClusterAccelerationStructureOpInputNV,
2746}
2747
2748impl Default for ClusterAccelerationStructureInputInfoNV {
2749    #[inline]
2750    fn default() -> Self {
2751        Self {
2752            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV,
2753            next: ptr::null_mut(),
2754            max_acceleration_structure_count: u32::default(),
2755            flags: BuildAccelerationStructureFlagsKHR::default(),
2756            op_type: ClusterAccelerationStructureOpTypeNV::default(),
2757            op_mode: ClusterAccelerationStructureOpModeNV::default(),
2758            op_input: ClusterAccelerationStructureOpInputNV::default(),
2759        }
2760    }
2761}
2762
2763unsafe impl Send for ClusterAccelerationStructureInputInfoNV {}
2764unsafe impl Sync for ClusterAccelerationStructureInputInfoNV {}
2765
2766bitfields32! {
2767    struct ClusterAccelerationStructureInstantiateClusterInfoNVBitfields0 {
2768        (geometry_index_offset, with_geometry_index_offset)[0 .. 24],
2769        (reserved, with_reserved)[24 .. 32],
2770    }
2771}
2772
2773/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureInstantiateClusterInfoNV.html>
2774#[repr(C)]
2775#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2776pub struct ClusterAccelerationStructureInstantiateClusterInfoNV {
2777    pub cluster_id_offset: u32,
2778    pub cluster_template_address: DeviceAddress,
2779    pub vertex_buffer: StridedDeviceAddressNV,
2780    pub bitfields0: ClusterAccelerationStructureInstantiateClusterInfoNVBitfields0,
2781}
2782
2783/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureMoveObjectsInfoNV.html>
2784#[repr(C)]
2785#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2786pub struct ClusterAccelerationStructureMoveObjectsInfoNV {
2787    pub src_acceleration_structure: DeviceAddress,
2788}
2789
2790/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureMoveObjectsInputNV.html>
2791#[repr(C)]
2792#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2793pub struct ClusterAccelerationStructureMoveObjectsInputNV {
2794    pub s_type: StructureType,
2795    pub next: *mut c_void,
2796    pub type_: ClusterAccelerationStructureTypeNV,
2797    pub no_move_overlap: Bool32,
2798    pub max_moved_bytes: DeviceSize,
2799}
2800
2801impl Default for ClusterAccelerationStructureMoveObjectsInputNV {
2802    #[inline]
2803    fn default() -> Self {
2804        Self {
2805            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV,
2806            next: ptr::null_mut(),
2807            type_: ClusterAccelerationStructureTypeNV::default(),
2808            no_move_overlap: Bool32::default(),
2809            max_moved_bytes: DeviceSize::default(),
2810        }
2811    }
2812}
2813
2814unsafe impl Send for ClusterAccelerationStructureMoveObjectsInputNV {}
2815unsafe impl Sync for ClusterAccelerationStructureMoveObjectsInputNV {}
2816
2817/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureTriangleClusterInputNV.html>
2818#[repr(C)]
2819#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2820pub struct ClusterAccelerationStructureTriangleClusterInputNV {
2821    pub s_type: StructureType,
2822    pub next: *mut c_void,
2823    pub vertex_format: Format,
2824    pub max_geometry_index_value: u32,
2825    pub max_cluster_unique_geometry_count: u32,
2826    pub max_cluster_triangle_count: u32,
2827    pub max_cluster_vertex_count: u32,
2828    pub max_total_triangle_count: u32,
2829    pub max_total_vertex_count: u32,
2830    pub min_position_truncate_bit_count: u32,
2831}
2832
2833impl Default for ClusterAccelerationStructureTriangleClusterInputNV {
2834    #[inline]
2835    fn default() -> Self {
2836        Self {
2837            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV,
2838            next: ptr::null_mut(),
2839            vertex_format: Format::default(),
2840            max_geometry_index_value: u32::default(),
2841            max_cluster_unique_geometry_count: u32::default(),
2842            max_cluster_triangle_count: u32::default(),
2843            max_cluster_vertex_count: u32::default(),
2844            max_total_triangle_count: u32::default(),
2845            max_total_vertex_count: u32::default(),
2846            min_position_truncate_bit_count: u32::default(),
2847        }
2848    }
2849}
2850
2851unsafe impl Send for ClusterAccelerationStructureTriangleClusterInputNV {}
2852unsafe impl Sync for ClusterAccelerationStructureTriangleClusterInputNV {}
2853
2854/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCoarseSampleLocationNV.html>
2855#[repr(C)]
2856#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2857pub struct CoarseSampleLocationNV {
2858    pub pixel_x: u32,
2859    pub pixel_y: u32,
2860    pub sample: u32,
2861}
2862
2863/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCoarseSampleOrderCustomNV.html>
2864#[repr(C)]
2865#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2866pub struct CoarseSampleOrderCustomNV {
2867    pub shading_rate: ShadingRatePaletteEntryNV,
2868    pub sample_count: u32,
2869    pub sample_location_count: u32,
2870    pub sample_locations: *const CoarseSampleLocationNV,
2871}
2872
2873impl Default for CoarseSampleOrderCustomNV {
2874    #[inline]
2875    fn default() -> Self {
2876        Self {
2877            shading_rate: ShadingRatePaletteEntryNV::default(),
2878            sample_count: u32::default(),
2879            sample_location_count: u32::default(),
2880            sample_locations: ptr::null(),
2881        }
2882    }
2883}
2884
2885unsafe impl Send for CoarseSampleOrderCustomNV {}
2886unsafe impl Sync for CoarseSampleOrderCustomNV {}
2887
2888/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkColorBlendAdvancedEXT.html>
2889#[repr(C)]
2890#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2891pub struct ColorBlendAdvancedEXT {
2892    pub advanced_blend_op: BlendOp,
2893    pub src_premultiplied: Bool32,
2894    pub dst_premultiplied: Bool32,
2895    pub blend_overlap: BlendOverlapEXT,
2896    pub clamp_results: Bool32,
2897}
2898
2899/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkColorBlendEquationEXT.html>
2900#[repr(C)]
2901#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2902pub struct ColorBlendEquationEXT {
2903    pub src_color_blend_factor: BlendFactor,
2904    pub dst_color_blend_factor: BlendFactor,
2905    pub color_blend_op: BlendOp,
2906    pub src_alpha_blend_factor: BlendFactor,
2907    pub dst_alpha_blend_factor: BlendFactor,
2908    pub alpha_blend_op: BlendOp,
2909}
2910
2911/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferAllocateInfo.html>
2912#[repr(C)]
2913#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2914pub struct CommandBufferAllocateInfo {
2915    pub s_type: StructureType,
2916    pub next: *const c_void,
2917    pub command_pool: CommandPool,
2918    pub level: CommandBufferLevel,
2919    pub command_buffer_count: u32,
2920}
2921
2922impl Default for CommandBufferAllocateInfo {
2923    #[inline]
2924    fn default() -> Self {
2925        Self {
2926            s_type: StructureType::COMMAND_BUFFER_ALLOCATE_INFO,
2927            next: ptr::null(),
2928            command_pool: CommandPool::default(),
2929            level: CommandBufferLevel::default(),
2930            command_buffer_count: u32::default(),
2931        }
2932    }
2933}
2934
2935unsafe impl Send for CommandBufferAllocateInfo {}
2936unsafe impl Sync for CommandBufferAllocateInfo {}
2937
2938/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferBeginInfo.html>
2939#[repr(C)]
2940#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2941pub struct CommandBufferBeginInfo {
2942    pub s_type: StructureType,
2943    pub next: *const c_void,
2944    pub flags: CommandBufferUsageFlags,
2945    pub inheritance_info: *const CommandBufferInheritanceInfo,
2946}
2947
2948impl Default for CommandBufferBeginInfo {
2949    #[inline]
2950    fn default() -> Self {
2951        Self {
2952            s_type: StructureType::COMMAND_BUFFER_BEGIN_INFO,
2953            next: ptr::null(),
2954            flags: CommandBufferUsageFlags::default(),
2955            inheritance_info: ptr::null(),
2956        }
2957    }
2958}
2959
2960unsafe impl Send for CommandBufferBeginInfo {}
2961unsafe impl Sync for CommandBufferBeginInfo {}
2962
2963/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceConditionalRenderingInfoEXT.html>
2964#[repr(C)]
2965#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2966pub struct CommandBufferInheritanceConditionalRenderingInfoEXT {
2967    pub s_type: StructureType,
2968    pub next: *const c_void,
2969    pub conditional_rendering_enable: Bool32,
2970}
2971
2972impl Default for CommandBufferInheritanceConditionalRenderingInfoEXT {
2973    #[inline]
2974    fn default() -> Self {
2975        Self {
2976            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT,
2977            next: ptr::null(),
2978            conditional_rendering_enable: Bool32::default(),
2979        }
2980    }
2981}
2982
2983unsafe impl Send for CommandBufferInheritanceConditionalRenderingInfoEXT {}
2984unsafe impl Sync for CommandBufferInheritanceConditionalRenderingInfoEXT {}
2985
2986/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceInfo.html>
2987#[repr(C)]
2988#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2989pub struct CommandBufferInheritanceInfo {
2990    pub s_type: StructureType,
2991    pub next: *const c_void,
2992    pub render_pass: RenderPass,
2993    pub subpass: u32,
2994    pub framebuffer: Framebuffer,
2995    pub occlusion_query_enable: Bool32,
2996    pub query_flags: QueryControlFlags,
2997    pub pipeline_statistics: QueryPipelineStatisticFlags,
2998}
2999
3000impl Default for CommandBufferInheritanceInfo {
3001    #[inline]
3002    fn default() -> Self {
3003        Self {
3004            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_INFO,
3005            next: ptr::null(),
3006            render_pass: RenderPass::default(),
3007            subpass: u32::default(),
3008            framebuffer: Framebuffer::default(),
3009            occlusion_query_enable: Bool32::default(),
3010            query_flags: QueryControlFlags::default(),
3011            pipeline_statistics: QueryPipelineStatisticFlags::default(),
3012        }
3013    }
3014}
3015
3016unsafe impl Send for CommandBufferInheritanceInfo {}
3017unsafe impl Sync for CommandBufferInheritanceInfo {}
3018
3019/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderPassTransformInfoQCOM.html>
3020#[repr(C)]
3021#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3022pub struct CommandBufferInheritanceRenderPassTransformInfoQCOM {
3023    pub s_type: StructureType,
3024    pub next: *const c_void,
3025    pub transform: SurfaceTransformFlagsKHR,
3026    pub render_area: Rect2D,
3027}
3028
3029impl Default for CommandBufferInheritanceRenderPassTransformInfoQCOM {
3030    #[inline]
3031    fn default() -> Self {
3032        Self {
3033            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM,
3034            next: ptr::null(),
3035            transform: SurfaceTransformFlagsKHR::default(),
3036            render_area: Rect2D::default(),
3037        }
3038    }
3039}
3040
3041unsafe impl Send for CommandBufferInheritanceRenderPassTransformInfoQCOM {}
3042unsafe impl Sync for CommandBufferInheritanceRenderPassTransformInfoQCOM {}
3043
3044/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderingInfo.html>
3045#[repr(C)]
3046#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3047pub struct CommandBufferInheritanceRenderingInfo {
3048    pub s_type: StructureType,
3049    pub next: *const c_void,
3050    pub flags: RenderingFlags,
3051    pub view_mask: u32,
3052    pub color_attachment_count: u32,
3053    pub color_attachment_formats: *const Format,
3054    pub depth_attachment_format: Format,
3055    pub stencil_attachment_format: Format,
3056    pub rasterization_samples: SampleCountFlags,
3057}
3058
3059impl Default for CommandBufferInheritanceRenderingInfo {
3060    #[inline]
3061    fn default() -> Self {
3062        Self {
3063            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_RENDERING_INFO,
3064            next: ptr::null(),
3065            flags: RenderingFlags::default(),
3066            view_mask: u32::default(),
3067            color_attachment_count: u32::default(),
3068            color_attachment_formats: ptr::null(),
3069            depth_attachment_format: Format::default(),
3070            stencil_attachment_format: Format::default(),
3071            rasterization_samples: SampleCountFlags::default(),
3072        }
3073    }
3074}
3075
3076unsafe impl Send for CommandBufferInheritanceRenderingInfo {}
3077unsafe impl Sync for CommandBufferInheritanceRenderingInfo {}
3078
3079/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceViewportScissorInfoNV.html>
3080#[repr(C)]
3081#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3082pub struct CommandBufferInheritanceViewportScissorInfoNV {
3083    pub s_type: StructureType,
3084    pub next: *const c_void,
3085    pub viewport_scissor_2d: Bool32,
3086    pub viewport_depth_count: u32,
3087    pub viewport_depths: *const Viewport,
3088}
3089
3090impl Default for CommandBufferInheritanceViewportScissorInfoNV {
3091    #[inline]
3092    fn default() -> Self {
3093        Self {
3094            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV,
3095            next: ptr::null(),
3096            viewport_scissor_2d: Bool32::default(),
3097            viewport_depth_count: u32::default(),
3098            viewport_depths: ptr::null(),
3099        }
3100    }
3101}
3102
3103unsafe impl Send for CommandBufferInheritanceViewportScissorInfoNV {}
3104unsafe impl Sync for CommandBufferInheritanceViewportScissorInfoNV {}
3105
3106/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferSubmitInfo.html>
3107#[repr(C)]
3108#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3109pub struct CommandBufferSubmitInfo {
3110    pub s_type: StructureType,
3111    pub next: *const c_void,
3112    pub command_buffer: CommandBuffer,
3113    pub device_mask: u32,
3114}
3115
3116impl Default for CommandBufferSubmitInfo {
3117    #[inline]
3118    fn default() -> Self {
3119        Self {
3120            s_type: StructureType::COMMAND_BUFFER_SUBMIT_INFO,
3121            next: ptr::null(),
3122            command_buffer: CommandBuffer::default(),
3123            device_mask: u32::default(),
3124        }
3125    }
3126}
3127
3128unsafe impl Send for CommandBufferSubmitInfo {}
3129unsafe impl Sync for CommandBufferSubmitInfo {}
3130
3131/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandPoolCreateInfo.html>
3132#[repr(C)]
3133#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3134pub struct CommandPoolCreateInfo {
3135    pub s_type: StructureType,
3136    pub next: *const c_void,
3137    pub flags: CommandPoolCreateFlags,
3138    pub queue_family_index: u32,
3139}
3140
3141impl Default for CommandPoolCreateInfo {
3142    #[inline]
3143    fn default() -> Self {
3144        Self {
3145            s_type: StructureType::COMMAND_POOL_CREATE_INFO,
3146            next: ptr::null(),
3147            flags: CommandPoolCreateFlags::default(),
3148            queue_family_index: u32::default(),
3149        }
3150    }
3151}
3152
3153unsafe impl Send for CommandPoolCreateInfo {}
3154unsafe impl Sync for CommandPoolCreateInfo {}
3155
3156/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComponentMapping.html>
3157#[repr(C)]
3158#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3159pub struct ComponentMapping {
3160    pub r: ComponentSwizzle,
3161    pub g: ComponentSwizzle,
3162    pub b: ComponentSwizzle,
3163    pub a: ComponentSwizzle,
3164}
3165
3166/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComputePipelineCreateInfo.html>
3167#[repr(C)]
3168#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3169pub struct ComputePipelineCreateInfo {
3170    pub s_type: StructureType,
3171    pub next: *const c_void,
3172    pub flags: PipelineCreateFlags,
3173    pub stage: PipelineShaderStageCreateInfo,
3174    pub layout: PipelineLayout,
3175    pub base_pipeline_handle: Pipeline,
3176    pub base_pipeline_index: i32,
3177}
3178
3179impl Default for ComputePipelineCreateInfo {
3180    #[inline]
3181    fn default() -> Self {
3182        Self {
3183            s_type: StructureType::COMPUTE_PIPELINE_CREATE_INFO,
3184            next: ptr::null(),
3185            flags: PipelineCreateFlags::default(),
3186            stage: PipelineShaderStageCreateInfo::default(),
3187            layout: PipelineLayout::default(),
3188            base_pipeline_handle: Pipeline::default(),
3189            base_pipeline_index: i32::default(),
3190        }
3191    }
3192}
3193
3194unsafe impl Send for ComputePipelineCreateInfo {}
3195unsafe impl Sync for ComputePipelineCreateInfo {}
3196
3197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComputePipelineIndirectBufferInfoNV.html>
3198#[repr(C)]
3199#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3200pub struct ComputePipelineIndirectBufferInfoNV {
3201    pub s_type: StructureType,
3202    pub next: *const c_void,
3203    pub device_address: DeviceAddress,
3204    pub size: DeviceSize,
3205    pub pipeline_device_address_capture_replay: DeviceAddress,
3206}
3207
3208impl Default for ComputePipelineIndirectBufferInfoNV {
3209    #[inline]
3210    fn default() -> Self {
3211        Self {
3212            s_type: StructureType::COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV,
3213            next: ptr::null(),
3214            device_address: DeviceAddress::default(),
3215            size: DeviceSize::default(),
3216            pipeline_device_address_capture_replay: DeviceAddress::default(),
3217        }
3218    }
3219}
3220
3221unsafe impl Send for ComputePipelineIndirectBufferInfoNV {}
3222unsafe impl Sync for ComputePipelineIndirectBufferInfoNV {}
3223
3224/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConditionalRenderingBeginInfoEXT.html>
3225#[repr(C)]
3226#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3227pub struct ConditionalRenderingBeginInfoEXT {
3228    pub s_type: StructureType,
3229    pub next: *const c_void,
3230    pub buffer: Buffer,
3231    pub offset: DeviceSize,
3232    pub flags: ConditionalRenderingFlagsEXT,
3233}
3234
3235impl Default for ConditionalRenderingBeginInfoEXT {
3236    #[inline]
3237    fn default() -> Self {
3238        Self {
3239            s_type: StructureType::CONDITIONAL_RENDERING_BEGIN_INFO_EXT,
3240            next: ptr::null(),
3241            buffer: Buffer::default(),
3242            offset: DeviceSize::default(),
3243            flags: ConditionalRenderingFlagsEXT::default(),
3244        }
3245    }
3246}
3247
3248unsafe impl Send for ConditionalRenderingBeginInfoEXT {}
3249unsafe impl Sync for ConditionalRenderingBeginInfoEXT {}
3250
3251/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConformanceVersion.html>
3252#[repr(C)]
3253#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3254pub struct ConformanceVersion {
3255    pub major: u8,
3256    pub minor: u8,
3257    pub subminor: u8,
3258    pub patch: u8,
3259}
3260
3261/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConvertCooperativeVectorMatrixInfoNV.html>
3262#[repr(C)]
3263#[derive(Copy, Clone, Debug)]
3264pub struct ConvertCooperativeVectorMatrixInfoNV {
3265    pub s_type: StructureType,
3266    pub next: *const c_void,
3267    pub src_size: usize,
3268    pub src_data: DeviceOrHostAddressConstKHR,
3269    pub dst_size: *mut usize,
3270    pub dst_data: DeviceOrHostAddressKHR,
3271    pub src_component_type: ComponentTypeKHR,
3272    pub dst_component_type: ComponentTypeKHR,
3273    pub num_rows: u32,
3274    pub num_columns: u32,
3275    pub src_layout: CooperativeVectorMatrixLayoutNV,
3276    pub src_stride: usize,
3277    pub dst_layout: CooperativeVectorMatrixLayoutNV,
3278    pub dst_stride: usize,
3279}
3280
3281impl Default for ConvertCooperativeVectorMatrixInfoNV {
3282    #[inline]
3283    fn default() -> Self {
3284        Self {
3285            s_type: StructureType::CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV,
3286            next: ptr::null(),
3287            src_size: usize::default(),
3288            src_data: DeviceOrHostAddressConstKHR::default(),
3289            dst_size: ptr::null_mut(),
3290            dst_data: DeviceOrHostAddressKHR::default(),
3291            src_component_type: ComponentTypeKHR::default(),
3292            dst_component_type: ComponentTypeKHR::default(),
3293            num_rows: u32::default(),
3294            num_columns: u32::default(),
3295            src_layout: CooperativeVectorMatrixLayoutNV::default(),
3296            src_stride: usize::default(),
3297            dst_layout: CooperativeVectorMatrixLayoutNV::default(),
3298            dst_stride: usize::default(),
3299        }
3300    }
3301}
3302
3303unsafe impl Send for ConvertCooperativeVectorMatrixInfoNV {}
3304unsafe impl Sync for ConvertCooperativeVectorMatrixInfoNV {}
3305
3306/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeMatrixFlexibleDimensionsPropertiesNV.html>
3307#[repr(C)]
3308#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3309pub struct CooperativeMatrixFlexibleDimensionsPropertiesNV {
3310    pub s_type: StructureType,
3311    pub next: *mut c_void,
3312    pub m_granularity: u32,
3313    pub n_granularity: u32,
3314    pub k_granularity: u32,
3315    pub a_type: ComponentTypeKHR,
3316    pub b_type: ComponentTypeKHR,
3317    pub c_type: ComponentTypeKHR,
3318    pub result_type: ComponentTypeKHR,
3319    pub saturating_accumulation: Bool32,
3320    pub scope: ScopeKHR,
3321    pub workgroup_invocations: u32,
3322}
3323
3324impl Default for CooperativeMatrixFlexibleDimensionsPropertiesNV {
3325    #[inline]
3326    fn default() -> Self {
3327        Self {
3328            s_type: StructureType::COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV,
3329            next: ptr::null_mut(),
3330            m_granularity: u32::default(),
3331            n_granularity: u32::default(),
3332            k_granularity: u32::default(),
3333            a_type: ComponentTypeKHR::default(),
3334            b_type: ComponentTypeKHR::default(),
3335            c_type: ComponentTypeKHR::default(),
3336            result_type: ComponentTypeKHR::default(),
3337            saturating_accumulation: Bool32::default(),
3338            scope: ScopeKHR::default(),
3339            workgroup_invocations: u32::default(),
3340        }
3341    }
3342}
3343
3344unsafe impl Send for CooperativeMatrixFlexibleDimensionsPropertiesNV {}
3345unsafe impl Sync for CooperativeMatrixFlexibleDimensionsPropertiesNV {}
3346
3347/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeMatrixPropertiesKHR.html>
3348#[repr(C)]
3349#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3350pub struct CooperativeMatrixPropertiesKHR {
3351    pub s_type: StructureType,
3352    pub next: *mut c_void,
3353    pub m_size: u32,
3354    pub n_size: u32,
3355    pub k_size: u32,
3356    pub a_type: ComponentTypeKHR,
3357    pub b_type: ComponentTypeKHR,
3358    pub c_type: ComponentTypeKHR,
3359    pub result_type: ComponentTypeKHR,
3360    pub saturating_accumulation: Bool32,
3361    pub scope: ScopeKHR,
3362}
3363
3364impl Default for CooperativeMatrixPropertiesKHR {
3365    #[inline]
3366    fn default() -> Self {
3367        Self {
3368            s_type: StructureType::COOPERATIVE_MATRIX_PROPERTIES_KHR,
3369            next: ptr::null_mut(),
3370            m_size: u32::default(),
3371            n_size: u32::default(),
3372            k_size: u32::default(),
3373            a_type: ComponentTypeKHR::default(),
3374            b_type: ComponentTypeKHR::default(),
3375            c_type: ComponentTypeKHR::default(),
3376            result_type: ComponentTypeKHR::default(),
3377            saturating_accumulation: Bool32::default(),
3378            scope: ScopeKHR::default(),
3379        }
3380    }
3381}
3382
3383unsafe impl Send for CooperativeMatrixPropertiesKHR {}
3384unsafe impl Sync for CooperativeMatrixPropertiesKHR {}
3385
3386/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeMatrixPropertiesNV.html>
3387#[repr(C)]
3388#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3389pub struct CooperativeMatrixPropertiesNV {
3390    pub s_type: StructureType,
3391    pub next: *mut c_void,
3392    pub m_size: u32,
3393    pub n_size: u32,
3394    pub k_size: u32,
3395    pub a_type: ComponentTypeNV,
3396    pub b_type: ComponentTypeNV,
3397    pub c_type: ComponentTypeNV,
3398    pub d_type: ComponentTypeNV,
3399    pub scope: ScopeNV,
3400}
3401
3402impl Default for CooperativeMatrixPropertiesNV {
3403    #[inline]
3404    fn default() -> Self {
3405        Self {
3406            s_type: StructureType::COOPERATIVE_MATRIX_PROPERTIES_NV,
3407            next: ptr::null_mut(),
3408            m_size: u32::default(),
3409            n_size: u32::default(),
3410            k_size: u32::default(),
3411            a_type: ComponentTypeNV::default(),
3412            b_type: ComponentTypeNV::default(),
3413            c_type: ComponentTypeNV::default(),
3414            d_type: ComponentTypeNV::default(),
3415            scope: ScopeNV::default(),
3416        }
3417    }
3418}
3419
3420unsafe impl Send for CooperativeMatrixPropertiesNV {}
3421unsafe impl Sync for CooperativeMatrixPropertiesNV {}
3422
3423/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeVectorPropertiesNV.html>
3424#[repr(C)]
3425#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3426pub struct CooperativeVectorPropertiesNV {
3427    pub s_type: StructureType,
3428    pub next: *mut c_void,
3429    pub input_type: ComponentTypeKHR,
3430    pub input_interpretation: ComponentTypeKHR,
3431    pub matrix_interpretation: ComponentTypeKHR,
3432    pub bias_interpretation: ComponentTypeKHR,
3433    pub result_type: ComponentTypeKHR,
3434    pub transpose: Bool32,
3435}
3436
3437impl Default for CooperativeVectorPropertiesNV {
3438    #[inline]
3439    fn default() -> Self {
3440        Self {
3441            s_type: StructureType::COOPERATIVE_VECTOR_PROPERTIES_NV,
3442            next: ptr::null_mut(),
3443            input_type: ComponentTypeKHR::default(),
3444            input_interpretation: ComponentTypeKHR::default(),
3445            matrix_interpretation: ComponentTypeKHR::default(),
3446            bias_interpretation: ComponentTypeKHR::default(),
3447            result_type: ComponentTypeKHR::default(),
3448            transpose: Bool32::default(),
3449        }
3450    }
3451}
3452
3453unsafe impl Send for CooperativeVectorPropertiesNV {}
3454unsafe impl Sync for CooperativeVectorPropertiesNV {}
3455
3456/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyAccelerationStructureInfoKHR.html>
3457#[repr(C)]
3458#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3459pub struct CopyAccelerationStructureInfoKHR {
3460    pub s_type: StructureType,
3461    pub next: *const c_void,
3462    pub src: AccelerationStructureKHR,
3463    pub dst: AccelerationStructureKHR,
3464    pub mode: CopyAccelerationStructureModeKHR,
3465}
3466
3467impl Default for CopyAccelerationStructureInfoKHR {
3468    #[inline]
3469    fn default() -> Self {
3470        Self {
3471            s_type: StructureType::COPY_ACCELERATION_STRUCTURE_INFO_KHR,
3472            next: ptr::null(),
3473            src: AccelerationStructureKHR::default(),
3474            dst: AccelerationStructureKHR::default(),
3475            mode: CopyAccelerationStructureModeKHR::default(),
3476        }
3477    }
3478}
3479
3480unsafe impl Send for CopyAccelerationStructureInfoKHR {}
3481unsafe impl Sync for CopyAccelerationStructureInfoKHR {}
3482
3483/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyAccelerationStructureToMemoryInfoKHR.html>
3484#[repr(C)]
3485#[derive(Copy, Clone, Debug)]
3486pub struct CopyAccelerationStructureToMemoryInfoKHR {
3487    pub s_type: StructureType,
3488    pub next: *const c_void,
3489    pub src: AccelerationStructureKHR,
3490    pub dst: DeviceOrHostAddressKHR,
3491    pub mode: CopyAccelerationStructureModeKHR,
3492}
3493
3494impl Default for CopyAccelerationStructureToMemoryInfoKHR {
3495    #[inline]
3496    fn default() -> Self {
3497        Self {
3498            s_type: StructureType::COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR,
3499            next: ptr::null(),
3500            src: AccelerationStructureKHR::default(),
3501            dst: DeviceOrHostAddressKHR::default(),
3502            mode: CopyAccelerationStructureModeKHR::default(),
3503        }
3504    }
3505}
3506
3507unsafe impl Send for CopyAccelerationStructureToMemoryInfoKHR {}
3508unsafe impl Sync for CopyAccelerationStructureToMemoryInfoKHR {}
3509
3510/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferInfo2.html>
3511#[repr(C)]
3512#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3513pub struct CopyBufferInfo2 {
3514    pub s_type: StructureType,
3515    pub next: *const c_void,
3516    pub src_buffer: Buffer,
3517    pub dst_buffer: Buffer,
3518    pub region_count: u32,
3519    pub regions: *const BufferCopy2,
3520}
3521
3522impl Default for CopyBufferInfo2 {
3523    #[inline]
3524    fn default() -> Self {
3525        Self {
3526            s_type: StructureType::COPY_BUFFER_INFO_2,
3527            next: ptr::null(),
3528            src_buffer: Buffer::default(),
3529            dst_buffer: Buffer::default(),
3530            region_count: u32::default(),
3531            regions: ptr::null(),
3532        }
3533    }
3534}
3535
3536unsafe impl Send for CopyBufferInfo2 {}
3537unsafe impl Sync for CopyBufferInfo2 {}
3538
3539/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferToImageInfo2.html>
3540#[repr(C)]
3541#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3542pub struct CopyBufferToImageInfo2 {
3543    pub s_type: StructureType,
3544    pub next: *const c_void,
3545    pub src_buffer: Buffer,
3546    pub dst_image: Image,
3547    pub dst_image_layout: ImageLayout,
3548    pub region_count: u32,
3549    pub regions: *const BufferImageCopy2,
3550}
3551
3552impl Default for CopyBufferToImageInfo2 {
3553    #[inline]
3554    fn default() -> Self {
3555        Self {
3556            s_type: StructureType::COPY_BUFFER_TO_IMAGE_INFO_2,
3557            next: ptr::null(),
3558            src_buffer: Buffer::default(),
3559            dst_image: Image::default(),
3560            dst_image_layout: ImageLayout::default(),
3561            region_count: u32::default(),
3562            regions: ptr::null(),
3563        }
3564    }
3565}
3566
3567unsafe impl Send for CopyBufferToImageInfo2 {}
3568unsafe impl Sync for CopyBufferToImageInfo2 {}
3569
3570/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyCommandTransformInfoQCOM.html>
3571#[repr(C)]
3572#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3573pub struct CopyCommandTransformInfoQCOM {
3574    pub s_type: StructureType,
3575    pub next: *const c_void,
3576    pub transform: SurfaceTransformFlagsKHR,
3577}
3578
3579impl Default for CopyCommandTransformInfoQCOM {
3580    #[inline]
3581    fn default() -> Self {
3582        Self {
3583            s_type: StructureType::COPY_COMMAND_TRANSFORM_INFO_QCOM,
3584            next: ptr::null(),
3585            transform: SurfaceTransformFlagsKHR::default(),
3586        }
3587    }
3588}
3589
3590unsafe impl Send for CopyCommandTransformInfoQCOM {}
3591unsafe impl Sync for CopyCommandTransformInfoQCOM {}
3592
3593/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyDescriptorSet.html>
3594#[repr(C)]
3595#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3596pub struct CopyDescriptorSet {
3597    pub s_type: StructureType,
3598    pub next: *const c_void,
3599    pub src_set: DescriptorSet,
3600    pub src_binding: u32,
3601    pub src_array_element: u32,
3602    pub dst_set: DescriptorSet,
3603    pub dst_binding: u32,
3604    pub dst_array_element: u32,
3605    pub descriptor_count: u32,
3606}
3607
3608impl Default for CopyDescriptorSet {
3609    #[inline]
3610    fn default() -> Self {
3611        Self {
3612            s_type: StructureType::COPY_DESCRIPTOR_SET,
3613            next: ptr::null(),
3614            src_set: DescriptorSet::default(),
3615            src_binding: u32::default(),
3616            src_array_element: u32::default(),
3617            dst_set: DescriptorSet::default(),
3618            dst_binding: u32::default(),
3619            dst_array_element: u32::default(),
3620            descriptor_count: u32::default(),
3621        }
3622    }
3623}
3624
3625unsafe impl Send for CopyDescriptorSet {}
3626unsafe impl Sync for CopyDescriptorSet {}
3627
3628/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageInfo2.html>
3629#[repr(C)]
3630#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3631pub struct CopyImageInfo2 {
3632    pub s_type: StructureType,
3633    pub next: *const c_void,
3634    pub src_image: Image,
3635    pub src_image_layout: ImageLayout,
3636    pub dst_image: Image,
3637    pub dst_image_layout: ImageLayout,
3638    pub region_count: u32,
3639    pub regions: *const ImageCopy2,
3640}
3641
3642impl Default for CopyImageInfo2 {
3643    #[inline]
3644    fn default() -> Self {
3645        Self {
3646            s_type: StructureType::COPY_IMAGE_INFO_2,
3647            next: ptr::null(),
3648            src_image: Image::default(),
3649            src_image_layout: ImageLayout::default(),
3650            dst_image: Image::default(),
3651            dst_image_layout: ImageLayout::default(),
3652            region_count: u32::default(),
3653            regions: ptr::null(),
3654        }
3655    }
3656}
3657
3658unsafe impl Send for CopyImageInfo2 {}
3659unsafe impl Sync for CopyImageInfo2 {}
3660
3661/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToBufferInfo2.html>
3662#[repr(C)]
3663#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3664pub struct CopyImageToBufferInfo2 {
3665    pub s_type: StructureType,
3666    pub next: *const c_void,
3667    pub src_image: Image,
3668    pub src_image_layout: ImageLayout,
3669    pub dst_buffer: Buffer,
3670    pub region_count: u32,
3671    pub regions: *const BufferImageCopy2,
3672}
3673
3674impl Default for CopyImageToBufferInfo2 {
3675    #[inline]
3676    fn default() -> Self {
3677        Self {
3678            s_type: StructureType::COPY_IMAGE_TO_BUFFER_INFO_2,
3679            next: ptr::null(),
3680            src_image: Image::default(),
3681            src_image_layout: ImageLayout::default(),
3682            dst_buffer: Buffer::default(),
3683            region_count: u32::default(),
3684            regions: ptr::null(),
3685        }
3686    }
3687}
3688
3689unsafe impl Send for CopyImageToBufferInfo2 {}
3690unsafe impl Sync for CopyImageToBufferInfo2 {}
3691
3692/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToImageInfo.html>
3693#[repr(C)]
3694#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3695pub struct CopyImageToImageInfo {
3696    pub s_type: StructureType,
3697    pub next: *const c_void,
3698    pub flags: HostImageCopyFlags,
3699    pub src_image: Image,
3700    pub src_image_layout: ImageLayout,
3701    pub dst_image: Image,
3702    pub dst_image_layout: ImageLayout,
3703    pub region_count: u32,
3704    pub regions: *const ImageCopy2,
3705}
3706
3707impl Default for CopyImageToImageInfo {
3708    #[inline]
3709    fn default() -> Self {
3710        Self {
3711            s_type: StructureType::COPY_IMAGE_TO_IMAGE_INFO,
3712            next: ptr::null(),
3713            flags: HostImageCopyFlags::default(),
3714            src_image: Image::default(),
3715            src_image_layout: ImageLayout::default(),
3716            dst_image: Image::default(),
3717            dst_image_layout: ImageLayout::default(),
3718            region_count: u32::default(),
3719            regions: ptr::null(),
3720        }
3721    }
3722}
3723
3724unsafe impl Send for CopyImageToImageInfo {}
3725unsafe impl Sync for CopyImageToImageInfo {}
3726
3727/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToMemoryInfo.html>
3728#[repr(C)]
3729#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3730pub struct CopyImageToMemoryInfo {
3731    pub s_type: StructureType,
3732    pub next: *const c_void,
3733    pub flags: HostImageCopyFlags,
3734    pub src_image: Image,
3735    pub src_image_layout: ImageLayout,
3736    pub region_count: u32,
3737    pub regions: *const ImageToMemoryCopy,
3738}
3739
3740impl Default for CopyImageToMemoryInfo {
3741    #[inline]
3742    fn default() -> Self {
3743        Self {
3744            s_type: StructureType::COPY_IMAGE_TO_MEMORY_INFO,
3745            next: ptr::null(),
3746            flags: HostImageCopyFlags::default(),
3747            src_image: Image::default(),
3748            src_image_layout: ImageLayout::default(),
3749            region_count: u32::default(),
3750            regions: ptr::null(),
3751        }
3752    }
3753}
3754
3755unsafe impl Send for CopyImageToMemoryInfo {}
3756unsafe impl Sync for CopyImageToMemoryInfo {}
3757
3758/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryIndirectCommandKHR.html>
3759#[repr(C)]
3760#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3761pub struct CopyMemoryIndirectCommandKHR {
3762    pub src_address: DeviceAddress,
3763    pub dst_address: DeviceAddress,
3764    pub size: DeviceSize,
3765}
3766
3767/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryIndirectInfoKHR.html>
3768#[repr(C)]
3769#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3770pub struct CopyMemoryIndirectInfoKHR {
3771    pub s_type: StructureType,
3772    pub next: *const c_void,
3773    pub src_copy_flags: AddressCopyFlagsKHR,
3774    pub dst_copy_flags: AddressCopyFlagsKHR,
3775    pub copy_count: u32,
3776    pub copy_address_range: StridedDeviceAddressRangeKHR,
3777}
3778
3779impl Default for CopyMemoryIndirectInfoKHR {
3780    #[inline]
3781    fn default() -> Self {
3782        Self {
3783            s_type: StructureType::COPY_MEMORY_INDIRECT_INFO_KHR,
3784            next: ptr::null(),
3785            src_copy_flags: AddressCopyFlagsKHR::default(),
3786            dst_copy_flags: AddressCopyFlagsKHR::default(),
3787            copy_count: u32::default(),
3788            copy_address_range: StridedDeviceAddressRangeKHR::default(),
3789        }
3790    }
3791}
3792
3793unsafe impl Send for CopyMemoryIndirectInfoKHR {}
3794unsafe impl Sync for CopyMemoryIndirectInfoKHR {}
3795
3796/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToAccelerationStructureInfoKHR.html>
3797#[repr(C)]
3798#[derive(Copy, Clone, Debug)]
3799pub struct CopyMemoryToAccelerationStructureInfoKHR {
3800    pub s_type: StructureType,
3801    pub next: *const c_void,
3802    pub src: DeviceOrHostAddressConstKHR,
3803    pub dst: AccelerationStructureKHR,
3804    pub mode: CopyAccelerationStructureModeKHR,
3805}
3806
3807impl Default for CopyMemoryToAccelerationStructureInfoKHR {
3808    #[inline]
3809    fn default() -> Self {
3810        Self {
3811            s_type: StructureType::COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR,
3812            next: ptr::null(),
3813            src: DeviceOrHostAddressConstKHR::default(),
3814            dst: AccelerationStructureKHR::default(),
3815            mode: CopyAccelerationStructureModeKHR::default(),
3816        }
3817    }
3818}
3819
3820unsafe impl Send for CopyMemoryToAccelerationStructureInfoKHR {}
3821unsafe impl Sync for CopyMemoryToAccelerationStructureInfoKHR {}
3822
3823/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageIndirectCommandKHR.html>
3824#[repr(C)]
3825#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3826pub struct CopyMemoryToImageIndirectCommandKHR {
3827    pub src_address: DeviceAddress,
3828    pub buffer_row_length: u32,
3829    pub buffer_image_height: u32,
3830    pub image_subresource: ImageSubresourceLayers,
3831    pub image_offset: Offset3D,
3832    pub image_extent: Extent3D,
3833}
3834
3835/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageIndirectInfoKHR.html>
3836#[repr(C)]
3837#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3838pub struct CopyMemoryToImageIndirectInfoKHR {
3839    pub s_type: StructureType,
3840    pub next: *const c_void,
3841    pub src_copy_flags: AddressCopyFlagsKHR,
3842    pub copy_count: u32,
3843    pub copy_address_range: StridedDeviceAddressRangeKHR,
3844    pub dst_image: Image,
3845    pub dst_image_layout: ImageLayout,
3846    pub image_subresources: *const ImageSubresourceLayers,
3847}
3848
3849impl Default for CopyMemoryToImageIndirectInfoKHR {
3850    #[inline]
3851    fn default() -> Self {
3852        Self {
3853            s_type: StructureType::COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR,
3854            next: ptr::null(),
3855            src_copy_flags: AddressCopyFlagsKHR::default(),
3856            copy_count: u32::default(),
3857            copy_address_range: StridedDeviceAddressRangeKHR::default(),
3858            dst_image: Image::default(),
3859            dst_image_layout: ImageLayout::default(),
3860            image_subresources: ptr::null(),
3861        }
3862    }
3863}
3864
3865unsafe impl Send for CopyMemoryToImageIndirectInfoKHR {}
3866unsafe impl Sync for CopyMemoryToImageIndirectInfoKHR {}
3867
3868/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageInfo.html>
3869#[repr(C)]
3870#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3871pub struct CopyMemoryToImageInfo {
3872    pub s_type: StructureType,
3873    pub next: *const c_void,
3874    pub flags: HostImageCopyFlags,
3875    pub dst_image: Image,
3876    pub dst_image_layout: ImageLayout,
3877    pub region_count: u32,
3878    pub regions: *const MemoryToImageCopy,
3879}
3880
3881impl Default for CopyMemoryToImageInfo {
3882    #[inline]
3883    fn default() -> Self {
3884        Self {
3885            s_type: StructureType::COPY_MEMORY_TO_IMAGE_INFO,
3886            next: ptr::null(),
3887            flags: HostImageCopyFlags::default(),
3888            dst_image: Image::default(),
3889            dst_image_layout: ImageLayout::default(),
3890            region_count: u32::default(),
3891            regions: ptr::null(),
3892        }
3893    }
3894}
3895
3896unsafe impl Send for CopyMemoryToImageInfo {}
3897unsafe impl Sync for CopyMemoryToImageInfo {}
3898
3899/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToMicromapInfoEXT.html>
3900#[repr(C)]
3901#[derive(Copy, Clone, Debug)]
3902pub struct CopyMemoryToMicromapInfoEXT {
3903    pub s_type: StructureType,
3904    pub next: *const c_void,
3905    pub src: DeviceOrHostAddressConstKHR,
3906    pub dst: MicromapEXT,
3907    pub mode: CopyMicromapModeEXT,
3908}
3909
3910impl Default for CopyMemoryToMicromapInfoEXT {
3911    #[inline]
3912    fn default() -> Self {
3913        Self {
3914            s_type: StructureType::COPY_MEMORY_TO_MICROMAP_INFO_EXT,
3915            next: ptr::null(),
3916            src: DeviceOrHostAddressConstKHR::default(),
3917            dst: MicromapEXT::default(),
3918            mode: CopyMicromapModeEXT::default(),
3919        }
3920    }
3921}
3922
3923unsafe impl Send for CopyMemoryToMicromapInfoEXT {}
3924unsafe impl Sync for CopyMemoryToMicromapInfoEXT {}
3925
3926/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMicromapInfoEXT.html>
3927#[repr(C)]
3928#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3929pub struct CopyMicromapInfoEXT {
3930    pub s_type: StructureType,
3931    pub next: *const c_void,
3932    pub src: MicromapEXT,
3933    pub dst: MicromapEXT,
3934    pub mode: CopyMicromapModeEXT,
3935}
3936
3937impl Default for CopyMicromapInfoEXT {
3938    #[inline]
3939    fn default() -> Self {
3940        Self {
3941            s_type: StructureType::COPY_MICROMAP_INFO_EXT,
3942            next: ptr::null(),
3943            src: MicromapEXT::default(),
3944            dst: MicromapEXT::default(),
3945            mode: CopyMicromapModeEXT::default(),
3946        }
3947    }
3948}
3949
3950unsafe impl Send for CopyMicromapInfoEXT {}
3951unsafe impl Sync for CopyMicromapInfoEXT {}
3952
3953/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMicromapToMemoryInfoEXT.html>
3954#[repr(C)]
3955#[derive(Copy, Clone, Debug)]
3956pub struct CopyMicromapToMemoryInfoEXT {
3957    pub s_type: StructureType,
3958    pub next: *const c_void,
3959    pub src: MicromapEXT,
3960    pub dst: DeviceOrHostAddressKHR,
3961    pub mode: CopyMicromapModeEXT,
3962}
3963
3964impl Default for CopyMicromapToMemoryInfoEXT {
3965    #[inline]
3966    fn default() -> Self {
3967        Self {
3968            s_type: StructureType::COPY_MICROMAP_TO_MEMORY_INFO_EXT,
3969            next: ptr::null(),
3970            src: MicromapEXT::default(),
3971            dst: DeviceOrHostAddressKHR::default(),
3972            mode: CopyMicromapModeEXT::default(),
3973        }
3974    }
3975}
3976
3977unsafe impl Send for CopyMicromapToMemoryInfoEXT {}
3978unsafe impl Sync for CopyMicromapToMemoryInfoEXT {}
3979
3980/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyTensorInfoARM.html>
3981#[repr(C)]
3982#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3983pub struct CopyTensorInfoARM {
3984    pub s_type: StructureType,
3985    pub next: *const c_void,
3986    pub src_tensor: TensorARM,
3987    pub dst_tensor: TensorARM,
3988    pub region_count: u32,
3989    pub regions: *const TensorCopyARM,
3990}
3991
3992impl Default for CopyTensorInfoARM {
3993    #[inline]
3994    fn default() -> Self {
3995        Self {
3996            s_type: StructureType::COPY_TENSOR_INFO_ARM,
3997            next: ptr::null(),
3998            src_tensor: TensorARM::default(),
3999            dst_tensor: TensorARM::default(),
4000            region_count: u32::default(),
4001            regions: ptr::null(),
4002        }
4003    }
4004}
4005
4006unsafe impl Send for CopyTensorInfoARM {}
4007unsafe impl Sync for CopyTensorInfoARM {}
4008
4009/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuFunctionCreateInfoNVX.html>
4010#[repr(C)]
4011#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4012pub struct CuFunctionCreateInfoNVX {
4013    pub s_type: StructureType,
4014    pub next: *const c_void,
4015    pub module: CuModuleNVX,
4016    pub name: *const c_char,
4017}
4018
4019impl Default for CuFunctionCreateInfoNVX {
4020    #[inline]
4021    fn default() -> Self {
4022        Self {
4023            s_type: StructureType::CU_FUNCTION_CREATE_INFO_NVX,
4024            next: ptr::null(),
4025            module: CuModuleNVX::default(),
4026            name: ptr::null(),
4027        }
4028    }
4029}
4030
4031unsafe impl Send for CuFunctionCreateInfoNVX {}
4032unsafe impl Sync for CuFunctionCreateInfoNVX {}
4033
4034/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuLaunchInfoNVX.html>
4035#[repr(C)]
4036#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4037pub struct CuLaunchInfoNVX {
4038    pub s_type: StructureType,
4039    pub next: *const c_void,
4040    pub function: CuFunctionNVX,
4041    pub grid_dim_x: u32,
4042    pub grid_dim_y: u32,
4043    pub grid_dim_z: u32,
4044    pub block_dim_x: u32,
4045    pub block_dim_y: u32,
4046    pub block_dim_z: u32,
4047    pub shared_mem_bytes: u32,
4048    pub param_count: usize,
4049    pub params: *const c_void,
4050    pub extra_count: usize,
4051    pub extras: *const c_void,
4052}
4053
4054impl Default for CuLaunchInfoNVX {
4055    #[inline]
4056    fn default() -> Self {
4057        Self {
4058            s_type: StructureType::CU_LAUNCH_INFO_NVX,
4059            next: ptr::null(),
4060            function: CuFunctionNVX::default(),
4061            grid_dim_x: u32::default(),
4062            grid_dim_y: u32::default(),
4063            grid_dim_z: u32::default(),
4064            block_dim_x: u32::default(),
4065            block_dim_y: u32::default(),
4066            block_dim_z: u32::default(),
4067            shared_mem_bytes: u32::default(),
4068            param_count: usize::default(),
4069            params: ptr::null(),
4070            extra_count: usize::default(),
4071            extras: ptr::null(),
4072        }
4073    }
4074}
4075
4076unsafe impl Send for CuLaunchInfoNVX {}
4077unsafe impl Sync for CuLaunchInfoNVX {}
4078
4079/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuModuleCreateInfoNVX.html>
4080#[repr(C)]
4081#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4082pub struct CuModuleCreateInfoNVX {
4083    pub s_type: StructureType,
4084    pub next: *const c_void,
4085    pub data_size: usize,
4086    pub data: *const c_void,
4087}
4088
4089impl Default for CuModuleCreateInfoNVX {
4090    #[inline]
4091    fn default() -> Self {
4092        Self {
4093            s_type: StructureType::CU_MODULE_CREATE_INFO_NVX,
4094            next: ptr::null(),
4095            data_size: usize::default(),
4096            data: ptr::null(),
4097        }
4098    }
4099}
4100
4101unsafe impl Send for CuModuleCreateInfoNVX {}
4102unsafe impl Sync for CuModuleCreateInfoNVX {}
4103
4104/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuModuleTexturingModeCreateInfoNVX.html>
4105#[repr(C)]
4106#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4107pub struct CuModuleTexturingModeCreateInfoNVX {
4108    pub s_type: StructureType,
4109    pub next: *const c_void,
4110    pub use64bit_texturing: Bool32,
4111}
4112
4113impl Default for CuModuleTexturingModeCreateInfoNVX {
4114    #[inline]
4115    fn default() -> Self {
4116        Self {
4117            s_type: StructureType::CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX,
4118            next: ptr::null(),
4119            use64bit_texturing: Bool32::default(),
4120        }
4121    }
4122}
4123
4124unsafe impl Send for CuModuleTexturingModeCreateInfoNVX {}
4125unsafe impl Sync for CuModuleTexturingModeCreateInfoNVX {}
4126
4127/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCudaFunctionCreateInfoNV.html>
4128#[repr(C)]
4129#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4130pub struct CudaFunctionCreateInfoNV {
4131    pub s_type: StructureType,
4132    pub next: *const c_void,
4133    pub module: CudaModuleNV,
4134    pub name: *const c_char,
4135}
4136
4137impl Default for CudaFunctionCreateInfoNV {
4138    #[inline]
4139    fn default() -> Self {
4140        Self {
4141            s_type: StructureType::CUDA_FUNCTION_CREATE_INFO_NV,
4142            next: ptr::null(),
4143            module: CudaModuleNV::default(),
4144            name: ptr::null(),
4145        }
4146    }
4147}
4148
4149unsafe impl Send for CudaFunctionCreateInfoNV {}
4150unsafe impl Sync for CudaFunctionCreateInfoNV {}
4151
4152/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCudaLaunchInfoNV.html>
4153#[repr(C)]
4154#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4155pub struct CudaLaunchInfoNV {
4156    pub s_type: StructureType,
4157    pub next: *const c_void,
4158    pub function: CudaFunctionNV,
4159    pub grid_dim_x: u32,
4160    pub grid_dim_y: u32,
4161    pub grid_dim_z: u32,
4162    pub block_dim_x: u32,
4163    pub block_dim_y: u32,
4164    pub block_dim_z: u32,
4165    pub shared_mem_bytes: u32,
4166    pub param_count: usize,
4167    pub params: *const c_void,
4168    pub extra_count: usize,
4169    pub extras: *const c_void,
4170}
4171
4172impl Default for CudaLaunchInfoNV {
4173    #[inline]
4174    fn default() -> Self {
4175        Self {
4176            s_type: StructureType::CUDA_LAUNCH_INFO_NV,
4177            next: ptr::null(),
4178            function: CudaFunctionNV::default(),
4179            grid_dim_x: u32::default(),
4180            grid_dim_y: u32::default(),
4181            grid_dim_z: u32::default(),
4182            block_dim_x: u32::default(),
4183            block_dim_y: u32::default(),
4184            block_dim_z: u32::default(),
4185            shared_mem_bytes: u32::default(),
4186            param_count: usize::default(),
4187            params: ptr::null(),
4188            extra_count: usize::default(),
4189            extras: ptr::null(),
4190        }
4191    }
4192}
4193
4194unsafe impl Send for CudaLaunchInfoNV {}
4195unsafe impl Sync for CudaLaunchInfoNV {}
4196
4197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCudaModuleCreateInfoNV.html>
4198#[repr(C)]
4199#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4200pub struct CudaModuleCreateInfoNV {
4201    pub s_type: StructureType,
4202    pub next: *const c_void,
4203    pub data_size: usize,
4204    pub data: *const c_void,
4205}
4206
4207impl Default for CudaModuleCreateInfoNV {
4208    #[inline]
4209    fn default() -> Self {
4210        Self {
4211            s_type: StructureType::CUDA_MODULE_CREATE_INFO_NV,
4212            next: ptr::null(),
4213            data_size: usize::default(),
4214            data: ptr::null(),
4215        }
4216    }
4217}
4218
4219unsafe impl Send for CudaModuleCreateInfoNV {}
4220unsafe impl Sync for CudaModuleCreateInfoNV {}
4221
4222/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkD3D12FenceSubmitInfoKHR.html>
4223#[repr(C)]
4224#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4225pub struct D3D12FenceSubmitInfoKHR {
4226    pub s_type: StructureType,
4227    pub next: *const c_void,
4228    pub wait_semaphore_values_count: u32,
4229    pub wait_semaphore_values: *const u64,
4230    pub signal_semaphore_values_count: u32,
4231    pub signal_semaphore_values: *const u64,
4232}
4233
4234impl Default for D3D12FenceSubmitInfoKHR {
4235    #[inline]
4236    fn default() -> Self {
4237        Self {
4238            s_type: StructureType::D3D12_FENCE_SUBMIT_INFO_KHR,
4239            next: ptr::null(),
4240            wait_semaphore_values_count: u32::default(),
4241            wait_semaphore_values: ptr::null(),
4242            signal_semaphore_values_count: u32::default(),
4243            signal_semaphore_values: ptr::null(),
4244        }
4245    }
4246}
4247
4248unsafe impl Send for D3D12FenceSubmitInfoKHR {}
4249unsafe impl Sync for D3D12FenceSubmitInfoKHR {}
4250
4251/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineCompilerControlCreateInfoARM.html>
4252#[repr(C)]
4253#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4254pub struct DataGraphPipelineCompilerControlCreateInfoARM {
4255    pub s_type: StructureType,
4256    pub next: *const c_void,
4257    pub vendor_options: *const c_char,
4258}
4259
4260impl Default for DataGraphPipelineCompilerControlCreateInfoARM {
4261    #[inline]
4262    fn default() -> Self {
4263        Self {
4264            s_type: StructureType::DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM,
4265            next: ptr::null(),
4266            vendor_options: ptr::null(),
4267        }
4268    }
4269}
4270
4271unsafe impl Send for DataGraphPipelineCompilerControlCreateInfoARM {}
4272unsafe impl Sync for DataGraphPipelineCompilerControlCreateInfoARM {}
4273
4274/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineConstantARM.html>
4275#[repr(C)]
4276#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4277pub struct DataGraphPipelineConstantARM {
4278    pub s_type: StructureType,
4279    pub next: *const c_void,
4280    pub id: u32,
4281    pub constant_data: *const c_void,
4282}
4283
4284impl Default for DataGraphPipelineConstantARM {
4285    #[inline]
4286    fn default() -> Self {
4287        Self {
4288            s_type: StructureType::DATA_GRAPH_PIPELINE_CONSTANT_ARM,
4289            next: ptr::null(),
4290            id: u32::default(),
4291            constant_data: ptr::null(),
4292        }
4293    }
4294}
4295
4296unsafe impl Send for DataGraphPipelineConstantARM {}
4297unsafe impl Sync for DataGraphPipelineConstantARM {}
4298
4299/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM.html>
4300#[repr(C)]
4301#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4302pub struct DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {
4303    pub s_type: StructureType,
4304    pub next: *const c_void,
4305    pub dimension: u32,
4306    pub zero_count: u32,
4307    pub group_size: u32,
4308}
4309
4310impl Default for DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {
4311    #[inline]
4312    fn default() -> Self {
4313        Self {
4314            s_type:
4315                StructureType::DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM,
4316            next: ptr::null(),
4317            dimension: u32::default(),
4318            zero_count: u32::default(),
4319            group_size: u32::default(),
4320        }
4321    }
4322}
4323
4324unsafe impl Send for DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {}
4325unsafe impl Sync for DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {}
4326
4327/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineCreateInfoARM.html>
4328#[repr(C)]
4329#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4330pub struct DataGraphPipelineCreateInfoARM {
4331    pub s_type: StructureType,
4332    pub next: *const c_void,
4333    pub flags: PipelineCreateFlags2KHR,
4334    pub layout: PipelineLayout,
4335    pub resource_info_count: u32,
4336    pub resource_infos: *const DataGraphPipelineResourceInfoARM,
4337}
4338
4339impl Default for DataGraphPipelineCreateInfoARM {
4340    #[inline]
4341    fn default() -> Self {
4342        Self {
4343            s_type: StructureType::DATA_GRAPH_PIPELINE_CREATE_INFO_ARM,
4344            next: ptr::null(),
4345            flags: PipelineCreateFlags2KHR::default(),
4346            layout: PipelineLayout::default(),
4347            resource_info_count: u32::default(),
4348            resource_infos: ptr::null(),
4349        }
4350    }
4351}
4352
4353unsafe impl Send for DataGraphPipelineCreateInfoARM {}
4354unsafe impl Sync for DataGraphPipelineCreateInfoARM {}
4355
4356/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineDispatchInfoARM.html>
4357#[repr(C)]
4358#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4359pub struct DataGraphPipelineDispatchInfoARM {
4360    pub s_type: StructureType,
4361    pub next: *mut c_void,
4362    pub flags: DataGraphPipelineDispatchFlagsARM,
4363}
4364
4365impl Default for DataGraphPipelineDispatchInfoARM {
4366    #[inline]
4367    fn default() -> Self {
4368        Self {
4369            s_type: StructureType::DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM,
4370            next: ptr::null_mut(),
4371            flags: DataGraphPipelineDispatchFlagsARM::default(),
4372        }
4373    }
4374}
4375
4376unsafe impl Send for DataGraphPipelineDispatchInfoARM {}
4377unsafe impl Sync for DataGraphPipelineDispatchInfoARM {}
4378
4379/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineIdentifierCreateInfoARM.html>
4380#[repr(C)]
4381#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4382pub struct DataGraphPipelineIdentifierCreateInfoARM {
4383    pub s_type: StructureType,
4384    pub next: *const c_void,
4385    pub identifier_size: u32,
4386    pub identifier: *const u8,
4387}
4388
4389impl Default for DataGraphPipelineIdentifierCreateInfoARM {
4390    #[inline]
4391    fn default() -> Self {
4392        Self {
4393            s_type: StructureType::DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM,
4394            next: ptr::null(),
4395            identifier_size: u32::default(),
4396            identifier: ptr::null(),
4397        }
4398    }
4399}
4400
4401unsafe impl Send for DataGraphPipelineIdentifierCreateInfoARM {}
4402unsafe impl Sync for DataGraphPipelineIdentifierCreateInfoARM {}
4403
4404/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineInfoARM.html>
4405#[repr(C)]
4406#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4407pub struct DataGraphPipelineInfoARM {
4408    pub s_type: StructureType,
4409    pub next: *const c_void,
4410    pub data_graph_pipeline: Pipeline,
4411}
4412
4413impl Default for DataGraphPipelineInfoARM {
4414    #[inline]
4415    fn default() -> Self {
4416        Self {
4417            s_type: StructureType::DATA_GRAPH_PIPELINE_INFO_ARM,
4418            next: ptr::null(),
4419            data_graph_pipeline: Pipeline::default(),
4420        }
4421    }
4422}
4423
4424unsafe impl Send for DataGraphPipelineInfoARM {}
4425unsafe impl Sync for DataGraphPipelineInfoARM {}
4426
4427/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelinePropertyQueryResultARM.html>
4428#[repr(C)]
4429#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4430pub struct DataGraphPipelinePropertyQueryResultARM {
4431    pub s_type: StructureType,
4432    pub next: *const c_void,
4433    pub property: DataGraphPipelinePropertyARM,
4434    pub is_text: Bool32,
4435    pub data_size: usize,
4436    pub data: *mut c_void,
4437}
4438
4439impl Default for DataGraphPipelinePropertyQueryResultARM {
4440    #[inline]
4441    fn default() -> Self {
4442        Self {
4443            s_type: StructureType::DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM,
4444            next: ptr::null(),
4445            property: DataGraphPipelinePropertyARM::default(),
4446            is_text: Bool32::default(),
4447            data_size: usize::default(),
4448            data: ptr::null_mut(),
4449        }
4450    }
4451}
4452
4453unsafe impl Send for DataGraphPipelinePropertyQueryResultARM {}
4454unsafe impl Sync for DataGraphPipelinePropertyQueryResultARM {}
4455
4456/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineResourceInfoARM.html>
4457#[repr(C)]
4458#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4459pub struct DataGraphPipelineResourceInfoARM {
4460    pub s_type: StructureType,
4461    pub next: *const c_void,
4462    pub descriptor_set: u32,
4463    pub binding: u32,
4464    pub array_element: u32,
4465}
4466
4467impl Default for DataGraphPipelineResourceInfoARM {
4468    #[inline]
4469    fn default() -> Self {
4470        Self {
4471            s_type: StructureType::DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM,
4472            next: ptr::null(),
4473            descriptor_set: u32::default(),
4474            binding: u32::default(),
4475            array_element: u32::default(),
4476        }
4477    }
4478}
4479
4480unsafe impl Send for DataGraphPipelineResourceInfoARM {}
4481unsafe impl Sync for DataGraphPipelineResourceInfoARM {}
4482
4483/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionBindPointRequirementARM.html>
4484#[repr(C)]
4485#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4486pub struct DataGraphPipelineSessionBindPointRequirementARM {
4487    pub s_type: StructureType,
4488    pub next: *const c_void,
4489    pub bind_point: DataGraphPipelineSessionBindPointARM,
4490    pub bind_point_type: DataGraphPipelineSessionBindPointTypeARM,
4491    pub num_objects: u32,
4492}
4493
4494impl Default for DataGraphPipelineSessionBindPointRequirementARM {
4495    #[inline]
4496    fn default() -> Self {
4497        Self {
4498            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM,
4499            next: ptr::null(),
4500            bind_point: DataGraphPipelineSessionBindPointARM::default(),
4501            bind_point_type: DataGraphPipelineSessionBindPointTypeARM::default(),
4502            num_objects: u32::default(),
4503        }
4504    }
4505}
4506
4507unsafe impl Send for DataGraphPipelineSessionBindPointRequirementARM {}
4508unsafe impl Sync for DataGraphPipelineSessionBindPointRequirementARM {}
4509
4510/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionBindPointRequirementsInfoARM.html>
4511#[repr(C)]
4512#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4513pub struct DataGraphPipelineSessionBindPointRequirementsInfoARM {
4514    pub s_type: StructureType,
4515    pub next: *const c_void,
4516    pub session: DataGraphPipelineSessionARM,
4517}
4518
4519impl Default for DataGraphPipelineSessionBindPointRequirementsInfoARM {
4520    #[inline]
4521    fn default() -> Self {
4522        Self {
4523            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM,
4524            next: ptr::null(),
4525            session: DataGraphPipelineSessionARM::default(),
4526        }
4527    }
4528}
4529
4530unsafe impl Send for DataGraphPipelineSessionBindPointRequirementsInfoARM {}
4531unsafe impl Sync for DataGraphPipelineSessionBindPointRequirementsInfoARM {}
4532
4533/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionCreateInfoARM.html>
4534#[repr(C)]
4535#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4536pub struct DataGraphPipelineSessionCreateInfoARM {
4537    pub s_type: StructureType,
4538    pub next: *const c_void,
4539    pub flags: DataGraphPipelineSessionCreateFlagsARM,
4540    pub data_graph_pipeline: Pipeline,
4541}
4542
4543impl Default for DataGraphPipelineSessionCreateInfoARM {
4544    #[inline]
4545    fn default() -> Self {
4546        Self {
4547            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM,
4548            next: ptr::null(),
4549            flags: DataGraphPipelineSessionCreateFlagsARM::default(),
4550            data_graph_pipeline: Pipeline::default(),
4551        }
4552    }
4553}
4554
4555unsafe impl Send for DataGraphPipelineSessionCreateInfoARM {}
4556unsafe impl Sync for DataGraphPipelineSessionCreateInfoARM {}
4557
4558/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionMemoryRequirementsInfoARM.html>
4559#[repr(C)]
4560#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4561pub struct DataGraphPipelineSessionMemoryRequirementsInfoARM {
4562    pub s_type: StructureType,
4563    pub next: *const c_void,
4564    pub session: DataGraphPipelineSessionARM,
4565    pub bind_point: DataGraphPipelineSessionBindPointARM,
4566    pub object_index: u32,
4567}
4568
4569impl Default for DataGraphPipelineSessionMemoryRequirementsInfoARM {
4570    #[inline]
4571    fn default() -> Self {
4572        Self {
4573            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM,
4574            next: ptr::null(),
4575            session: DataGraphPipelineSessionARM::default(),
4576            bind_point: DataGraphPipelineSessionBindPointARM::default(),
4577            object_index: u32::default(),
4578        }
4579    }
4580}
4581
4582unsafe impl Send for DataGraphPipelineSessionMemoryRequirementsInfoARM {}
4583unsafe impl Sync for DataGraphPipelineSessionMemoryRequirementsInfoARM {}
4584
4585/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineShaderModuleCreateInfoARM.html>
4586#[repr(C)]
4587#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4588pub struct DataGraphPipelineShaderModuleCreateInfoARM {
4589    pub s_type: StructureType,
4590    pub next: *const c_void,
4591    pub module: ShaderModule,
4592    pub name: *const c_char,
4593    pub specialization_info: *const SpecializationInfo,
4594    pub constant_count: u32,
4595    pub constants: *const DataGraphPipelineConstantARM,
4596}
4597
4598impl Default for DataGraphPipelineShaderModuleCreateInfoARM {
4599    #[inline]
4600    fn default() -> Self {
4601        Self {
4602            s_type: StructureType::DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM,
4603            next: ptr::null(),
4604            module: ShaderModule::default(),
4605            name: ptr::null(),
4606            specialization_info: ptr::null(),
4607            constant_count: u32::default(),
4608            constants: ptr::null(),
4609        }
4610    }
4611}
4612
4613unsafe impl Send for DataGraphPipelineShaderModuleCreateInfoARM {}
4614unsafe impl Sync for DataGraphPipelineShaderModuleCreateInfoARM {}
4615
4616/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphProcessingEngineCreateInfoARM.html>
4617#[repr(C)]
4618#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4619pub struct DataGraphProcessingEngineCreateInfoARM {
4620    pub s_type: StructureType,
4621    pub next: *const c_void,
4622    pub processing_engine_count: u32,
4623    pub processing_engines: *mut PhysicalDeviceDataGraphProcessingEngineARM,
4624}
4625
4626impl Default for DataGraphProcessingEngineCreateInfoARM {
4627    #[inline]
4628    fn default() -> Self {
4629        Self {
4630            s_type: StructureType::DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM,
4631            next: ptr::null(),
4632            processing_engine_count: u32::default(),
4633            processing_engines: ptr::null_mut(),
4634        }
4635    }
4636}
4637
4638unsafe impl Send for DataGraphProcessingEngineCreateInfoARM {}
4639unsafe impl Sync for DataGraphProcessingEngineCreateInfoARM {}
4640
4641/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugMarkerMarkerInfoEXT.html>
4642#[repr(C)]
4643#[derive(Copy, Clone, Debug, PartialEq)]
4644pub struct DebugMarkerMarkerInfoEXT {
4645    pub s_type: StructureType,
4646    pub next: *const c_void,
4647    pub marker_name: *const c_char,
4648    pub color: [f32; 4],
4649}
4650
4651impl Default for DebugMarkerMarkerInfoEXT {
4652    #[inline]
4653    fn default() -> Self {
4654        Self {
4655            s_type: StructureType::DEBUG_MARKER_MARKER_INFO_EXT,
4656            next: ptr::null(),
4657            marker_name: ptr::null(),
4658            color: [f32::default(); 4],
4659        }
4660    }
4661}
4662
4663unsafe impl Send for DebugMarkerMarkerInfoEXT {}
4664unsafe impl Sync for DebugMarkerMarkerInfoEXT {}
4665
4666/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugMarkerObjectNameInfoEXT.html>
4667#[repr(C)]
4668#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4669pub struct DebugMarkerObjectNameInfoEXT {
4670    pub s_type: StructureType,
4671    pub next: *const c_void,
4672    pub object_type: DebugReportObjectTypeEXT,
4673    pub object: u64,
4674    pub object_name: *const c_char,
4675}
4676
4677impl Default for DebugMarkerObjectNameInfoEXT {
4678    #[inline]
4679    fn default() -> Self {
4680        Self {
4681            s_type: StructureType::DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
4682            next: ptr::null(),
4683            object_type: DebugReportObjectTypeEXT::default(),
4684            object: u64::default(),
4685            object_name: ptr::null(),
4686        }
4687    }
4688}
4689
4690unsafe impl Send for DebugMarkerObjectNameInfoEXT {}
4691unsafe impl Sync for DebugMarkerObjectNameInfoEXT {}
4692
4693/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugMarkerObjectTagInfoEXT.html>
4694#[repr(C)]
4695#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4696pub struct DebugMarkerObjectTagInfoEXT {
4697    pub s_type: StructureType,
4698    pub next: *const c_void,
4699    pub object_type: DebugReportObjectTypeEXT,
4700    pub object: u64,
4701    pub tag_name: u64,
4702    pub tag_size: usize,
4703    pub tag: *const c_void,
4704}
4705
4706impl Default for DebugMarkerObjectTagInfoEXT {
4707    #[inline]
4708    fn default() -> Self {
4709        Self {
4710            s_type: StructureType::DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
4711            next: ptr::null(),
4712            object_type: DebugReportObjectTypeEXT::default(),
4713            object: u64::default(),
4714            tag_name: u64::default(),
4715            tag_size: usize::default(),
4716            tag: ptr::null(),
4717        }
4718    }
4719}
4720
4721unsafe impl Send for DebugMarkerObjectTagInfoEXT {}
4722unsafe impl Sync for DebugMarkerObjectTagInfoEXT {}
4723
4724/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugReportCallbackCreateInfoEXT.html>
4725#[repr(C)]
4726#[derive(Copy, Clone)]
4727pub struct DebugReportCallbackCreateInfoEXT {
4728    pub s_type: StructureType,
4729    pub next: *const c_void,
4730    pub flags: DebugReportFlagsEXT,
4731    pub callback: PFN_vkDebugReportCallbackEXT,
4732    pub user_data: *mut c_void,
4733}
4734
4735impl fmt::Debug for DebugReportCallbackCreateInfoEXT {
4736    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4737        f.debug_struct("DebugReportCallbackCreateInfoEXT")
4738            .field("s_type", &self.s_type)
4739            .field("next", &self.next)
4740            .field("flags", &self.flags)
4741            .field("callback", &(self.callback.map(|f| f as *const u8)))
4742            .field("user_data", &self.user_data)
4743            .finish()
4744    }
4745}
4746
4747impl Default for DebugReportCallbackCreateInfoEXT {
4748    #[inline]
4749    fn default() -> Self {
4750        Self {
4751            s_type: StructureType::DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
4752            next: ptr::null(),
4753            flags: DebugReportFlagsEXT::default(),
4754            callback: PFN_vkDebugReportCallbackEXT::default(),
4755            user_data: ptr::null_mut(),
4756        }
4757    }
4758}
4759
4760unsafe impl Send for DebugReportCallbackCreateInfoEXT {}
4761unsafe impl Sync for DebugReportCallbackCreateInfoEXT {}
4762
4763/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsLabelEXT.html>
4764#[repr(C)]
4765#[derive(Copy, Clone, Debug, PartialEq)]
4766pub struct DebugUtilsLabelEXT {
4767    pub s_type: StructureType,
4768    pub next: *const c_void,
4769    pub label_name: *const c_char,
4770    pub color: [f32; 4],
4771}
4772
4773impl Default for DebugUtilsLabelEXT {
4774    #[inline]
4775    fn default() -> Self {
4776        Self {
4777            s_type: StructureType::DEBUG_UTILS_LABEL_EXT,
4778            next: ptr::null(),
4779            label_name: ptr::null(),
4780            color: [f32::default(); 4],
4781        }
4782    }
4783}
4784
4785unsafe impl Send for DebugUtilsLabelEXT {}
4786unsafe impl Sync for DebugUtilsLabelEXT {}
4787
4788/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsMessengerCallbackDataEXT.html>
4789#[repr(C)]
4790#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4791pub struct DebugUtilsMessengerCallbackDataEXT {
4792    pub s_type: StructureType,
4793    pub next: *const c_void,
4794    pub flags: DebugUtilsMessengerCallbackDataFlagsEXT,
4795    pub message_id_name: *const c_char,
4796    pub message_id_number: i32,
4797    pub message: *const c_char,
4798    pub queue_label_count: u32,
4799    pub queue_labels: *const DebugUtilsLabelEXT,
4800    pub cmd_buf_label_count: u32,
4801    pub cmd_buf_labels: *const DebugUtilsLabelEXT,
4802    pub object_count: u32,
4803    pub objects: *const DebugUtilsObjectNameInfoEXT,
4804}
4805
4806impl Default for DebugUtilsMessengerCallbackDataEXT {
4807    #[inline]
4808    fn default() -> Self {
4809        Self {
4810            s_type: StructureType::DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT,
4811            next: ptr::null(),
4812            flags: DebugUtilsMessengerCallbackDataFlagsEXT::default(),
4813            message_id_name: ptr::null(),
4814            message_id_number: i32::default(),
4815            message: ptr::null(),
4816            queue_label_count: u32::default(),
4817            queue_labels: ptr::null(),
4818            cmd_buf_label_count: u32::default(),
4819            cmd_buf_labels: ptr::null(),
4820            object_count: u32::default(),
4821            objects: ptr::null(),
4822        }
4823    }
4824}
4825
4826unsafe impl Send for DebugUtilsMessengerCallbackDataEXT {}
4827unsafe impl Sync for DebugUtilsMessengerCallbackDataEXT {}
4828
4829/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsMessengerCreateInfoEXT.html>
4830#[repr(C)]
4831#[derive(Copy, Clone)]
4832pub struct DebugUtilsMessengerCreateInfoEXT {
4833    pub s_type: StructureType,
4834    pub next: *const c_void,
4835    pub flags: DebugUtilsMessengerCreateFlagsEXT,
4836    pub message_severity: DebugUtilsMessageSeverityFlagsEXT,
4837    pub message_type: DebugUtilsMessageTypeFlagsEXT,
4838    pub user_callback: PFN_vkDebugUtilsMessengerCallbackEXT,
4839    pub user_data: *mut c_void,
4840}
4841
4842impl fmt::Debug for DebugUtilsMessengerCreateInfoEXT {
4843    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4844        f.debug_struct("DebugUtilsMessengerCreateInfoEXT")
4845            .field("s_type", &self.s_type)
4846            .field("next", &self.next)
4847            .field("flags", &self.flags)
4848            .field("message_severity", &self.message_severity)
4849            .field("message_type", &self.message_type)
4850            .field(
4851                "user_callback",
4852                &(self.user_callback.map(|f| f as *const u8)),
4853            )
4854            .field("user_data", &self.user_data)
4855            .finish()
4856    }
4857}
4858
4859impl Default for DebugUtilsMessengerCreateInfoEXT {
4860    #[inline]
4861    fn default() -> Self {
4862        Self {
4863            s_type: StructureType::DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,
4864            next: ptr::null(),
4865            flags: DebugUtilsMessengerCreateFlagsEXT::default(),
4866            message_severity: DebugUtilsMessageSeverityFlagsEXT::default(),
4867            message_type: DebugUtilsMessageTypeFlagsEXT::default(),
4868            user_callback: PFN_vkDebugUtilsMessengerCallbackEXT::default(),
4869            user_data: ptr::null_mut(),
4870        }
4871    }
4872}
4873
4874unsafe impl Send for DebugUtilsMessengerCreateInfoEXT {}
4875unsafe impl Sync for DebugUtilsMessengerCreateInfoEXT {}
4876
4877/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsObjectNameInfoEXT.html>
4878#[repr(C)]
4879#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4880pub struct DebugUtilsObjectNameInfoEXT {
4881    pub s_type: StructureType,
4882    pub next: *const c_void,
4883    pub object_type: ObjectType,
4884    pub object_handle: u64,
4885    pub object_name: *const c_char,
4886}
4887
4888impl Default for DebugUtilsObjectNameInfoEXT {
4889    #[inline]
4890    fn default() -> Self {
4891        Self {
4892            s_type: StructureType::DEBUG_UTILS_OBJECT_NAME_INFO_EXT,
4893            next: ptr::null(),
4894            object_type: ObjectType::default(),
4895            object_handle: u64::default(),
4896            object_name: ptr::null(),
4897        }
4898    }
4899}
4900
4901unsafe impl Send for DebugUtilsObjectNameInfoEXT {}
4902unsafe impl Sync for DebugUtilsObjectNameInfoEXT {}
4903
4904/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsObjectTagInfoEXT.html>
4905#[repr(C)]
4906#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4907pub struct DebugUtilsObjectTagInfoEXT {
4908    pub s_type: StructureType,
4909    pub next: *const c_void,
4910    pub object_type: ObjectType,
4911    pub object_handle: u64,
4912    pub tag_name: u64,
4913    pub tag_size: usize,
4914    pub tag: *const c_void,
4915}
4916
4917impl Default for DebugUtilsObjectTagInfoEXT {
4918    #[inline]
4919    fn default() -> Self {
4920        Self {
4921            s_type: StructureType::DEBUG_UTILS_OBJECT_TAG_INFO_EXT,
4922            next: ptr::null(),
4923            object_type: ObjectType::default(),
4924            object_handle: u64::default(),
4925            tag_name: u64::default(),
4926            tag_size: usize::default(),
4927            tag: ptr::null(),
4928        }
4929    }
4930}
4931
4932unsafe impl Send for DebugUtilsObjectTagInfoEXT {}
4933unsafe impl Sync for DebugUtilsObjectTagInfoEXT {}
4934
4935/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDecompressMemoryInfoEXT.html>
4936#[repr(C)]
4937#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4938pub struct DecompressMemoryInfoEXT {
4939    pub s_type: StructureType,
4940    pub next: *const c_void,
4941    pub decompression_method: MemoryDecompressionMethodFlagsEXT,
4942    pub region_count: u32,
4943    pub regions: *const DecompressMemoryRegionEXT,
4944}
4945
4946impl Default for DecompressMemoryInfoEXT {
4947    #[inline]
4948    fn default() -> Self {
4949        Self {
4950            s_type: StructureType::DECOMPRESS_MEMORY_INFO_EXT,
4951            next: ptr::null(),
4952            decompression_method: MemoryDecompressionMethodFlagsEXT::default(),
4953            region_count: u32::default(),
4954            regions: ptr::null(),
4955        }
4956    }
4957}
4958
4959unsafe impl Send for DecompressMemoryInfoEXT {}
4960unsafe impl Sync for DecompressMemoryInfoEXT {}
4961
4962/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDecompressMemoryRegionEXT.html>
4963#[repr(C)]
4964#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
4965pub struct DecompressMemoryRegionEXT {
4966    pub src_address: DeviceAddress,
4967    pub dst_address: DeviceAddress,
4968    pub compressed_size: DeviceSize,
4969    pub decompressed_size: DeviceSize,
4970}
4971
4972/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDecompressMemoryRegionNV.html>
4973#[repr(C)]
4974#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
4975pub struct DecompressMemoryRegionNV {
4976    pub src_address: DeviceAddress,
4977    pub dst_address: DeviceAddress,
4978    pub compressed_size: DeviceSize,
4979    pub decompressed_size: DeviceSize,
4980    pub decompression_method: MemoryDecompressionMethodFlagsNV,
4981}
4982
4983/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDedicatedAllocationBufferCreateInfoNV.html>
4984#[repr(C)]
4985#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4986pub struct DedicatedAllocationBufferCreateInfoNV {
4987    pub s_type: StructureType,
4988    pub next: *const c_void,
4989    pub dedicated_allocation: Bool32,
4990}
4991
4992impl Default for DedicatedAllocationBufferCreateInfoNV {
4993    #[inline]
4994    fn default() -> Self {
4995        Self {
4996            s_type: StructureType::DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
4997            next: ptr::null(),
4998            dedicated_allocation: Bool32::default(),
4999        }
5000    }
5001}
5002
5003unsafe impl Send for DedicatedAllocationBufferCreateInfoNV {}
5004unsafe impl Sync for DedicatedAllocationBufferCreateInfoNV {}
5005
5006/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDedicatedAllocationImageCreateInfoNV.html>
5007#[repr(C)]
5008#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5009pub struct DedicatedAllocationImageCreateInfoNV {
5010    pub s_type: StructureType,
5011    pub next: *const c_void,
5012    pub dedicated_allocation: Bool32,
5013}
5014
5015impl Default for DedicatedAllocationImageCreateInfoNV {
5016    #[inline]
5017    fn default() -> Self {
5018        Self {
5019            s_type: StructureType::DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
5020            next: ptr::null(),
5021            dedicated_allocation: Bool32::default(),
5022        }
5023    }
5024}
5025
5026unsafe impl Send for DedicatedAllocationImageCreateInfoNV {}
5027unsafe impl Sync for DedicatedAllocationImageCreateInfoNV {}
5028
5029/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDedicatedAllocationMemoryAllocateInfoNV.html>
5030#[repr(C)]
5031#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5032pub struct DedicatedAllocationMemoryAllocateInfoNV {
5033    pub s_type: StructureType,
5034    pub next: *const c_void,
5035    pub image: Image,
5036    pub buffer: Buffer,
5037}
5038
5039impl Default for DedicatedAllocationMemoryAllocateInfoNV {
5040    #[inline]
5041    fn default() -> Self {
5042        Self {
5043            s_type: StructureType::DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
5044            next: ptr::null(),
5045            image: Image::default(),
5046            buffer: Buffer::default(),
5047        }
5048    }
5049}
5050
5051unsafe impl Send for DedicatedAllocationMemoryAllocateInfoNV {}
5052unsafe impl Sync for DedicatedAllocationMemoryAllocateInfoNV {}
5053
5054/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDependencyInfo.html>
5055#[repr(C)]
5056#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5057pub struct DependencyInfo {
5058    pub s_type: StructureType,
5059    pub next: *const c_void,
5060    pub dependency_flags: DependencyFlags,
5061    pub memory_barrier_count: u32,
5062    pub memory_barriers: *const MemoryBarrier2,
5063    pub buffer_memory_barrier_count: u32,
5064    pub buffer_memory_barriers: *const BufferMemoryBarrier2,
5065    pub image_memory_barrier_count: u32,
5066    pub image_memory_barriers: *const ImageMemoryBarrier2,
5067}
5068
5069impl Default for DependencyInfo {
5070    #[inline]
5071    fn default() -> Self {
5072        Self {
5073            s_type: StructureType::DEPENDENCY_INFO,
5074            next: ptr::null(),
5075            dependency_flags: DependencyFlags::default(),
5076            memory_barrier_count: u32::default(),
5077            memory_barriers: ptr::null(),
5078            buffer_memory_barrier_count: u32::default(),
5079            buffer_memory_barriers: ptr::null(),
5080            image_memory_barrier_count: u32::default(),
5081            image_memory_barriers: ptr::null(),
5082        }
5083    }
5084}
5085
5086unsafe impl Send for DependencyInfo {}
5087unsafe impl Sync for DependencyInfo {}
5088
5089/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDepthBiasInfoEXT.html>
5090#[repr(C)]
5091#[derive(Copy, Clone, Debug, PartialEq)]
5092pub struct DepthBiasInfoEXT {
5093    pub s_type: StructureType,
5094    pub next: *const c_void,
5095    pub depth_bias_constant_factor: f32,
5096    pub depth_bias_clamp: f32,
5097    pub depth_bias_slope_factor: f32,
5098}
5099
5100impl Default for DepthBiasInfoEXT {
5101    #[inline]
5102    fn default() -> Self {
5103        Self {
5104            s_type: StructureType::DEPTH_BIAS_INFO_EXT,
5105            next: ptr::null(),
5106            depth_bias_constant_factor: f32::default(),
5107            depth_bias_clamp: f32::default(),
5108            depth_bias_slope_factor: f32::default(),
5109        }
5110    }
5111}
5112
5113unsafe impl Send for DepthBiasInfoEXT {}
5114unsafe impl Sync for DepthBiasInfoEXT {}
5115
5116/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDepthBiasRepresentationInfoEXT.html>
5117#[repr(C)]
5118#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5119pub struct DepthBiasRepresentationInfoEXT {
5120    pub s_type: StructureType,
5121    pub next: *const c_void,
5122    pub depth_bias_representation: DepthBiasRepresentationEXT,
5123    pub depth_bias_exact: Bool32,
5124}
5125
5126impl Default for DepthBiasRepresentationInfoEXT {
5127    #[inline]
5128    fn default() -> Self {
5129        Self {
5130            s_type: StructureType::DEPTH_BIAS_REPRESENTATION_INFO_EXT,
5131            next: ptr::null(),
5132            depth_bias_representation: DepthBiasRepresentationEXT::default(),
5133            depth_bias_exact: Bool32::default(),
5134        }
5135    }
5136}
5137
5138unsafe impl Send for DepthBiasRepresentationInfoEXT {}
5139unsafe impl Sync for DepthBiasRepresentationInfoEXT {}
5140
5141/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDepthClampRangeEXT.html>
5142#[repr(C)]
5143#[derive(Copy, Clone, Default, Debug, PartialEq)]
5144pub struct DepthClampRangeEXT {
5145    pub min_depth_clamp: f32,
5146    pub max_depth_clamp: f32,
5147}
5148
5149/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorAddressInfoEXT.html>
5150#[repr(C)]
5151#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5152pub struct DescriptorAddressInfoEXT {
5153    pub s_type: StructureType,
5154    pub next: *mut c_void,
5155    pub address: DeviceAddress,
5156    pub range: DeviceSize,
5157    pub format: Format,
5158}
5159
5160impl Default for DescriptorAddressInfoEXT {
5161    #[inline]
5162    fn default() -> Self {
5163        Self {
5164            s_type: StructureType::DESCRIPTOR_ADDRESS_INFO_EXT,
5165            next: ptr::null_mut(),
5166            address: DeviceAddress::default(),
5167            range: DeviceSize::default(),
5168            format: Format::default(),
5169        }
5170    }
5171}
5172
5173unsafe impl Send for DescriptorAddressInfoEXT {}
5174unsafe impl Sync for DescriptorAddressInfoEXT {}
5175
5176/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBufferBindingInfoEXT.html>
5177#[repr(C)]
5178#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5179pub struct DescriptorBufferBindingInfoEXT {
5180    pub s_type: StructureType,
5181    pub next: *const c_void,
5182    pub address: DeviceAddress,
5183    pub usage: BufferUsageFlags,
5184}
5185
5186impl Default for DescriptorBufferBindingInfoEXT {
5187    #[inline]
5188    fn default() -> Self {
5189        Self {
5190            s_type: StructureType::DESCRIPTOR_BUFFER_BINDING_INFO_EXT,
5191            next: ptr::null(),
5192            address: DeviceAddress::default(),
5193            usage: BufferUsageFlags::default(),
5194        }
5195    }
5196}
5197
5198unsafe impl Send for DescriptorBufferBindingInfoEXT {}
5199unsafe impl Sync for DescriptorBufferBindingInfoEXT {}
5200
5201/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBufferBindingPushDescriptorBufferHandleEXT.html>
5202#[repr(C)]
5203#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5204pub struct DescriptorBufferBindingPushDescriptorBufferHandleEXT {
5205    pub s_type: StructureType,
5206    pub next: *const c_void,
5207    pub buffer: Buffer,
5208}
5209
5210impl Default for DescriptorBufferBindingPushDescriptorBufferHandleEXT {
5211    #[inline]
5212    fn default() -> Self {
5213        Self {
5214            s_type: StructureType::DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT,
5215            next: ptr::null(),
5216            buffer: Buffer::default(),
5217        }
5218    }
5219}
5220
5221unsafe impl Send for DescriptorBufferBindingPushDescriptorBufferHandleEXT {}
5222unsafe impl Sync for DescriptorBufferBindingPushDescriptorBufferHandleEXT {}
5223
5224/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBufferInfo.html>
5225#[repr(C)]
5226#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5227pub struct DescriptorBufferInfo {
5228    pub buffer: Buffer,
5229    pub offset: DeviceSize,
5230    pub range: DeviceSize,
5231}
5232
5233/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorGetInfoEXT.html>
5234#[repr(C)]
5235#[derive(Copy, Clone, Debug)]
5236pub struct DescriptorGetInfoEXT {
5237    pub s_type: StructureType,
5238    pub next: *const c_void,
5239    pub type_: DescriptorType,
5240    pub data: DescriptorDataEXT,
5241}
5242
5243impl Default for DescriptorGetInfoEXT {
5244    #[inline]
5245    fn default() -> Self {
5246        Self {
5247            s_type: StructureType::DESCRIPTOR_GET_INFO_EXT,
5248            next: ptr::null(),
5249            type_: DescriptorType::default(),
5250            data: DescriptorDataEXT::default(),
5251        }
5252    }
5253}
5254
5255unsafe impl Send for DescriptorGetInfoEXT {}
5256unsafe impl Sync for DescriptorGetInfoEXT {}
5257
5258/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorGetTensorInfoARM.html>
5259#[repr(C)]
5260#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5261pub struct DescriptorGetTensorInfoARM {
5262    pub s_type: StructureType,
5263    pub next: *const c_void,
5264    pub tensor_view: TensorViewARM,
5265}
5266
5267impl Default for DescriptorGetTensorInfoARM {
5268    #[inline]
5269    fn default() -> Self {
5270        Self {
5271            s_type: StructureType::DESCRIPTOR_GET_TENSOR_INFO_ARM,
5272            next: ptr::null(),
5273            tensor_view: TensorViewARM::default(),
5274        }
5275    }
5276}
5277
5278unsafe impl Send for DescriptorGetTensorInfoARM {}
5279unsafe impl Sync for DescriptorGetTensorInfoARM {}
5280
5281/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorImageInfo.html>
5282#[repr(C)]
5283#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5284pub struct DescriptorImageInfo {
5285    pub sampler: Sampler,
5286    pub image_view: ImageView,
5287    pub image_layout: ImageLayout,
5288}
5289
5290/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolCreateInfo.html>
5291#[repr(C)]
5292#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5293pub struct DescriptorPoolCreateInfo {
5294    pub s_type: StructureType,
5295    pub next: *const c_void,
5296    pub flags: DescriptorPoolCreateFlags,
5297    pub max_sets: u32,
5298    pub pool_size_count: u32,
5299    pub pool_sizes: *const DescriptorPoolSize,
5300}
5301
5302impl Default for DescriptorPoolCreateInfo {
5303    #[inline]
5304    fn default() -> Self {
5305        Self {
5306            s_type: StructureType::DESCRIPTOR_POOL_CREATE_INFO,
5307            next: ptr::null(),
5308            flags: DescriptorPoolCreateFlags::default(),
5309            max_sets: u32::default(),
5310            pool_size_count: u32::default(),
5311            pool_sizes: ptr::null(),
5312        }
5313    }
5314}
5315
5316unsafe impl Send for DescriptorPoolCreateInfo {}
5317unsafe impl Sync for DescriptorPoolCreateInfo {}
5318
5319/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolInlineUniformBlockCreateInfo.html>
5320#[repr(C)]
5321#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5322pub struct DescriptorPoolInlineUniformBlockCreateInfo {
5323    pub s_type: StructureType,
5324    pub next: *const c_void,
5325    pub max_inline_uniform_block_bindings: u32,
5326}
5327
5328impl Default for DescriptorPoolInlineUniformBlockCreateInfo {
5329    #[inline]
5330    fn default() -> Self {
5331        Self {
5332            s_type: StructureType::DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO,
5333            next: ptr::null(),
5334            max_inline_uniform_block_bindings: u32::default(),
5335        }
5336    }
5337}
5338
5339unsafe impl Send for DescriptorPoolInlineUniformBlockCreateInfo {}
5340unsafe impl Sync for DescriptorPoolInlineUniformBlockCreateInfo {}
5341
5342/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolSize.html>
5343#[repr(C)]
5344#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5345pub struct DescriptorPoolSize {
5346    pub type_: DescriptorType,
5347    pub descriptor_count: u32,
5348}
5349
5350/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetAllocateInfo.html>
5351#[repr(C)]
5352#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5353pub struct DescriptorSetAllocateInfo {
5354    pub s_type: StructureType,
5355    pub next: *const c_void,
5356    pub descriptor_pool: DescriptorPool,
5357    pub descriptor_set_count: u32,
5358    pub set_layouts: *const DescriptorSetLayout,
5359}
5360
5361impl Default for DescriptorSetAllocateInfo {
5362    #[inline]
5363    fn default() -> Self {
5364        Self {
5365            s_type: StructureType::DESCRIPTOR_SET_ALLOCATE_INFO,
5366            next: ptr::null(),
5367            descriptor_pool: DescriptorPool::default(),
5368            descriptor_set_count: u32::default(),
5369            set_layouts: ptr::null(),
5370        }
5371    }
5372}
5373
5374unsafe impl Send for DescriptorSetAllocateInfo {}
5375unsafe impl Sync for DescriptorSetAllocateInfo {}
5376
5377/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetBindingReferenceVALVE.html>
5378#[repr(C)]
5379#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5380pub struct DescriptorSetBindingReferenceVALVE {
5381    pub s_type: StructureType,
5382    pub next: *const c_void,
5383    pub descriptor_set_layout: DescriptorSetLayout,
5384    pub binding: u32,
5385}
5386
5387impl Default for DescriptorSetBindingReferenceVALVE {
5388    #[inline]
5389    fn default() -> Self {
5390        Self {
5391            s_type: StructureType::DESCRIPTOR_SET_BINDING_REFERENCE_VALVE,
5392            next: ptr::null(),
5393            descriptor_set_layout: DescriptorSetLayout::default(),
5394            binding: u32::default(),
5395        }
5396    }
5397}
5398
5399unsafe impl Send for DescriptorSetBindingReferenceVALVE {}
5400unsafe impl Sync for DescriptorSetBindingReferenceVALVE {}
5401
5402/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBinding.html>
5403#[repr(C)]
5404#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5405pub struct DescriptorSetLayoutBinding {
5406    pub binding: u32,
5407    pub descriptor_type: DescriptorType,
5408    pub descriptor_count: u32,
5409    pub stage_flags: ShaderStageFlags,
5410    pub immutable_samplers: *const Sampler,
5411}
5412
5413impl Default for DescriptorSetLayoutBinding {
5414    #[inline]
5415    fn default() -> Self {
5416        Self {
5417            binding: u32::default(),
5418            descriptor_type: DescriptorType::default(),
5419            descriptor_count: u32::default(),
5420            stage_flags: ShaderStageFlags::default(),
5421            immutable_samplers: ptr::null(),
5422        }
5423    }
5424}
5425
5426unsafe impl Send for DescriptorSetLayoutBinding {}
5427unsafe impl Sync for DescriptorSetLayoutBinding {}
5428
5429/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBindingFlagsCreateInfo.html>
5430#[repr(C)]
5431#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5432pub struct DescriptorSetLayoutBindingFlagsCreateInfo {
5433    pub s_type: StructureType,
5434    pub next: *const c_void,
5435    pub binding_count: u32,
5436    pub binding_flags: *const DescriptorBindingFlags,
5437}
5438
5439impl Default for DescriptorSetLayoutBindingFlagsCreateInfo {
5440    #[inline]
5441    fn default() -> Self {
5442        Self {
5443            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
5444            next: ptr::null(),
5445            binding_count: u32::default(),
5446            binding_flags: ptr::null(),
5447        }
5448    }
5449}
5450
5451unsafe impl Send for DescriptorSetLayoutBindingFlagsCreateInfo {}
5452unsafe impl Sync for DescriptorSetLayoutBindingFlagsCreateInfo {}
5453
5454/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutCreateInfo.html>
5455#[repr(C)]
5456#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5457pub struct DescriptorSetLayoutCreateInfo {
5458    pub s_type: StructureType,
5459    pub next: *const c_void,
5460    pub flags: DescriptorSetLayoutCreateFlags,
5461    pub binding_count: u32,
5462    pub bindings: *const DescriptorSetLayoutBinding,
5463}
5464
5465impl Default for DescriptorSetLayoutCreateInfo {
5466    #[inline]
5467    fn default() -> Self {
5468        Self {
5469            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
5470            next: ptr::null(),
5471            flags: DescriptorSetLayoutCreateFlags::default(),
5472            binding_count: u32::default(),
5473            bindings: ptr::null(),
5474        }
5475    }
5476}
5477
5478unsafe impl Send for DescriptorSetLayoutCreateInfo {}
5479unsafe impl Sync for DescriptorSetLayoutCreateInfo {}
5480
5481/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutHostMappingInfoVALVE.html>
5482#[repr(C)]
5483#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5484pub struct DescriptorSetLayoutHostMappingInfoVALVE {
5485    pub s_type: StructureType,
5486    pub next: *mut c_void,
5487    pub descriptor_offset: usize,
5488    pub descriptor_size: u32,
5489}
5490
5491impl Default for DescriptorSetLayoutHostMappingInfoVALVE {
5492    #[inline]
5493    fn default() -> Self {
5494        Self {
5495            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE,
5496            next: ptr::null_mut(),
5497            descriptor_offset: usize::default(),
5498            descriptor_size: u32::default(),
5499        }
5500    }
5501}
5502
5503unsafe impl Send for DescriptorSetLayoutHostMappingInfoVALVE {}
5504unsafe impl Sync for DescriptorSetLayoutHostMappingInfoVALVE {}
5505
5506/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutSupport.html>
5507#[repr(C)]
5508#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5509pub struct DescriptorSetLayoutSupport {
5510    pub s_type: StructureType,
5511    pub next: *mut c_void,
5512    pub supported: Bool32,
5513}
5514
5515impl Default for DescriptorSetLayoutSupport {
5516    #[inline]
5517    fn default() -> Self {
5518        Self {
5519            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_SUPPORT,
5520            next: ptr::null_mut(),
5521            supported: Bool32::default(),
5522        }
5523    }
5524}
5525
5526unsafe impl Send for DescriptorSetLayoutSupport {}
5527unsafe impl Sync for DescriptorSetLayoutSupport {}
5528
5529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountAllocateInfo.html>
5530#[repr(C)]
5531#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5532pub struct DescriptorSetVariableDescriptorCountAllocateInfo {
5533    pub s_type: StructureType,
5534    pub next: *const c_void,
5535    pub descriptor_set_count: u32,
5536    pub descriptor_counts: *const u32,
5537}
5538
5539impl Default for DescriptorSetVariableDescriptorCountAllocateInfo {
5540    #[inline]
5541    fn default() -> Self {
5542        Self {
5543            s_type: StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
5544            next: ptr::null(),
5545            descriptor_set_count: u32::default(),
5546            descriptor_counts: ptr::null(),
5547        }
5548    }
5549}
5550
5551unsafe impl Send for DescriptorSetVariableDescriptorCountAllocateInfo {}
5552unsafe impl Sync for DescriptorSetVariableDescriptorCountAllocateInfo {}
5553
5554/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountLayoutSupport.html>
5555#[repr(C)]
5556#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5557pub struct DescriptorSetVariableDescriptorCountLayoutSupport {
5558    pub s_type: StructureType,
5559    pub next: *mut c_void,
5560    pub max_variable_descriptor_count: u32,
5561}
5562
5563impl Default for DescriptorSetVariableDescriptorCountLayoutSupport {
5564    #[inline]
5565    fn default() -> Self {
5566        Self {
5567            s_type: StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
5568            next: ptr::null_mut(),
5569            max_variable_descriptor_count: u32::default(),
5570        }
5571    }
5572}
5573
5574unsafe impl Send for DescriptorSetVariableDescriptorCountLayoutSupport {}
5575unsafe impl Sync for DescriptorSetVariableDescriptorCountLayoutSupport {}
5576
5577/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateCreateInfo.html>
5578#[repr(C)]
5579#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5580pub struct DescriptorUpdateTemplateCreateInfo {
5581    pub s_type: StructureType,
5582    pub next: *const c_void,
5583    pub flags: DescriptorUpdateTemplateCreateFlags,
5584    pub descriptor_update_entry_count: u32,
5585    pub descriptor_update_entries: *const DescriptorUpdateTemplateEntry,
5586    pub template_type: DescriptorUpdateTemplateType,
5587    pub descriptor_set_layout: DescriptorSetLayout,
5588    pub pipeline_bind_point: PipelineBindPoint,
5589    pub pipeline_layout: PipelineLayout,
5590    pub set: u32,
5591}
5592
5593impl Default for DescriptorUpdateTemplateCreateInfo {
5594    #[inline]
5595    fn default() -> Self {
5596        Self {
5597            s_type: StructureType::DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
5598            next: ptr::null(),
5599            flags: DescriptorUpdateTemplateCreateFlags::default(),
5600            descriptor_update_entry_count: u32::default(),
5601            descriptor_update_entries: ptr::null(),
5602            template_type: DescriptorUpdateTemplateType::default(),
5603            descriptor_set_layout: DescriptorSetLayout::default(),
5604            pipeline_bind_point: PipelineBindPoint::default(),
5605            pipeline_layout: PipelineLayout::default(),
5606            set: u32::default(),
5607        }
5608    }
5609}
5610
5611unsafe impl Send for DescriptorUpdateTemplateCreateInfo {}
5612unsafe impl Sync for DescriptorUpdateTemplateCreateInfo {}
5613
5614/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateEntry.html>
5615#[repr(C)]
5616#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5617pub struct DescriptorUpdateTemplateEntry {
5618    pub dst_binding: u32,
5619    pub dst_array_element: u32,
5620    pub descriptor_count: u32,
5621    pub descriptor_type: DescriptorType,
5622    pub offset: usize,
5623    pub stride: usize,
5624}
5625
5626/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceAddressBindingCallbackDataEXT.html>
5627#[repr(C)]
5628#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5629pub struct DeviceAddressBindingCallbackDataEXT {
5630    pub s_type: StructureType,
5631    pub next: *mut c_void,
5632    pub flags: DeviceAddressBindingFlagsEXT,
5633    pub base_address: DeviceAddress,
5634    pub size: DeviceSize,
5635    pub binding_type: DeviceAddressBindingTypeEXT,
5636}
5637
5638impl Default for DeviceAddressBindingCallbackDataEXT {
5639    #[inline]
5640    fn default() -> Self {
5641        Self {
5642            s_type: StructureType::DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT,
5643            next: ptr::null_mut(),
5644            flags: DeviceAddressBindingFlagsEXT::default(),
5645            base_address: DeviceAddress::default(),
5646            size: DeviceSize::default(),
5647            binding_type: DeviceAddressBindingTypeEXT::default(),
5648        }
5649    }
5650}
5651
5652unsafe impl Send for DeviceAddressBindingCallbackDataEXT {}
5653unsafe impl Sync for DeviceAddressBindingCallbackDataEXT {}
5654
5655/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceBufferMemoryRequirements.html>
5656#[repr(C)]
5657#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5658pub struct DeviceBufferMemoryRequirements {
5659    pub s_type: StructureType,
5660    pub next: *const c_void,
5661    pub create_info: *const BufferCreateInfo,
5662}
5663
5664impl Default for DeviceBufferMemoryRequirements {
5665    #[inline]
5666    fn default() -> Self {
5667        Self {
5668            s_type: StructureType::DEVICE_BUFFER_MEMORY_REQUIREMENTS,
5669            next: ptr::null(),
5670            create_info: ptr::null(),
5671        }
5672    }
5673}
5674
5675unsafe impl Send for DeviceBufferMemoryRequirements {}
5676unsafe impl Sync for DeviceBufferMemoryRequirements {}
5677
5678/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceCreateInfo.html>
5679#[repr(C)]
5680#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5681pub struct DeviceCreateInfo {
5682    pub s_type: StructureType,
5683    pub next: *const c_void,
5684    pub flags: DeviceCreateFlags,
5685    pub queue_create_info_count: u32,
5686    pub queue_create_infos: *const DeviceQueueCreateInfo,
5687    pub enabled_layer_count: u32,
5688    pub enabled_layer_names: *const *const c_char,
5689    pub enabled_extension_count: u32,
5690    pub enabled_extension_names: *const *const c_char,
5691    pub enabled_features: *const PhysicalDeviceFeatures,
5692}
5693
5694impl Default for DeviceCreateInfo {
5695    #[inline]
5696    fn default() -> Self {
5697        Self {
5698            s_type: StructureType::DEVICE_CREATE_INFO,
5699            next: ptr::null(),
5700            flags: DeviceCreateFlags::default(),
5701            queue_create_info_count: u32::default(),
5702            queue_create_infos: ptr::null(),
5703            enabled_layer_count: u32::default(),
5704            enabled_layer_names: ptr::null(),
5705            enabled_extension_count: u32::default(),
5706            enabled_extension_names: ptr::null(),
5707            enabled_features: ptr::null(),
5708        }
5709    }
5710}
5711
5712unsafe impl Send for DeviceCreateInfo {}
5713unsafe impl Sync for DeviceCreateInfo {}
5714
5715/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceDeviceMemoryReportCreateInfoEXT.html>
5716#[repr(C)]
5717#[derive(Copy, Clone)]
5718pub struct DeviceDeviceMemoryReportCreateInfoEXT {
5719    pub s_type: StructureType,
5720    pub next: *const c_void,
5721    pub flags: DeviceMemoryReportFlagsEXT,
5722    pub user_callback: PFN_vkDeviceMemoryReportCallbackEXT,
5723    pub user_data: *mut c_void,
5724}
5725
5726impl fmt::Debug for DeviceDeviceMemoryReportCreateInfoEXT {
5727    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5728        f.debug_struct("DeviceDeviceMemoryReportCreateInfoEXT")
5729            .field("s_type", &self.s_type)
5730            .field("next", &self.next)
5731            .field("flags", &self.flags)
5732            .field(
5733                "user_callback",
5734                &(self.user_callback.map(|f| f as *const u8)),
5735            )
5736            .field("user_data", &self.user_data)
5737            .finish()
5738    }
5739}
5740
5741impl Default for DeviceDeviceMemoryReportCreateInfoEXT {
5742    #[inline]
5743    fn default() -> Self {
5744        Self {
5745            s_type: StructureType::DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT,
5746            next: ptr::null(),
5747            flags: DeviceMemoryReportFlagsEXT::default(),
5748            user_callback: PFN_vkDeviceMemoryReportCallbackEXT::default(),
5749            user_data: ptr::null_mut(),
5750        }
5751    }
5752}
5753
5754unsafe impl Send for DeviceDeviceMemoryReportCreateInfoEXT {}
5755unsafe impl Sync for DeviceDeviceMemoryReportCreateInfoEXT {}
5756
5757/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceDiagnosticsConfigCreateInfoNV.html>
5758#[repr(C)]
5759#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5760pub struct DeviceDiagnosticsConfigCreateInfoNV {
5761    pub s_type: StructureType,
5762    pub next: *const c_void,
5763    pub flags: DeviceDiagnosticsConfigFlagsNV,
5764}
5765
5766impl Default for DeviceDiagnosticsConfigCreateInfoNV {
5767    #[inline]
5768    fn default() -> Self {
5769        Self {
5770            s_type: StructureType::DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV,
5771            next: ptr::null(),
5772            flags: DeviceDiagnosticsConfigFlagsNV::default(),
5773        }
5774    }
5775}
5776
5777unsafe impl Send for DeviceDiagnosticsConfigCreateInfoNV {}
5778unsafe impl Sync for DeviceDiagnosticsConfigCreateInfoNV {}
5779
5780/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceEventInfoEXT.html>
5781#[repr(C)]
5782#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5783pub struct DeviceEventInfoEXT {
5784    pub s_type: StructureType,
5785    pub next: *const c_void,
5786    pub device_event: DeviceEventTypeEXT,
5787}
5788
5789impl Default for DeviceEventInfoEXT {
5790    #[inline]
5791    fn default() -> Self {
5792        Self {
5793            s_type: StructureType::DEVICE_EVENT_INFO_EXT,
5794            next: ptr::null(),
5795            device_event: DeviceEventTypeEXT::default(),
5796        }
5797    }
5798}
5799
5800unsafe impl Send for DeviceEventInfoEXT {}
5801unsafe impl Sync for DeviceEventInfoEXT {}
5802
5803/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultAddressInfoEXT.html>
5804#[repr(C)]
5805#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5806pub struct DeviceFaultAddressInfoEXT {
5807    pub address_type: DeviceFaultAddressTypeEXT,
5808    pub reported_address: DeviceAddress,
5809    pub address_precision: DeviceSize,
5810}
5811
5812/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultCountsEXT.html>
5813#[repr(C)]
5814#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5815pub struct DeviceFaultCountsEXT {
5816    pub s_type: StructureType,
5817    pub next: *mut c_void,
5818    pub address_info_count: u32,
5819    pub vendor_info_count: u32,
5820    pub vendor_binary_size: DeviceSize,
5821}
5822
5823impl Default for DeviceFaultCountsEXT {
5824    #[inline]
5825    fn default() -> Self {
5826        Self {
5827            s_type: StructureType::DEVICE_FAULT_COUNTS_EXT,
5828            next: ptr::null_mut(),
5829            address_info_count: u32::default(),
5830            vendor_info_count: u32::default(),
5831            vendor_binary_size: DeviceSize::default(),
5832        }
5833    }
5834}
5835
5836unsafe impl Send for DeviceFaultCountsEXT {}
5837unsafe impl Sync for DeviceFaultCountsEXT {}
5838
5839/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultInfoEXT.html>
5840#[repr(C)]
5841#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5842pub struct DeviceFaultInfoEXT {
5843    pub s_type: StructureType,
5844    pub next: *mut c_void,
5845    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
5846    pub address_infos: *mut DeviceFaultAddressInfoEXT,
5847    pub vendor_infos: *mut DeviceFaultVendorInfoEXT,
5848    pub vendor_binary_data: *mut c_void,
5849}
5850
5851impl Default for DeviceFaultInfoEXT {
5852    #[inline]
5853    fn default() -> Self {
5854        Self {
5855            s_type: StructureType::DEVICE_FAULT_INFO_EXT,
5856            next: ptr::null_mut(),
5857            description: StringArray::default(),
5858            address_infos: ptr::null_mut(),
5859            vendor_infos: ptr::null_mut(),
5860            vendor_binary_data: ptr::null_mut(),
5861        }
5862    }
5863}
5864
5865unsafe impl Send for DeviceFaultInfoEXT {}
5866unsafe impl Sync for DeviceFaultInfoEXT {}
5867
5868/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultVendorBinaryHeaderVersionOneEXT.html>
5869#[repr(C)]
5870#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5871pub struct DeviceFaultVendorBinaryHeaderVersionOneEXT {
5872    pub header_size: u32,
5873    pub header_version: DeviceFaultVendorBinaryHeaderVersionEXT,
5874    pub vendor_id: u32,
5875    pub device_id: u32,
5876    pub driver_version: u32,
5877    pub pipeline_cache_uuid: ByteArray<UUID_SIZE>,
5878    pub application_name_offset: u32,
5879    pub application_version: u32,
5880    pub engine_name_offset: u32,
5881    pub engine_version: u32,
5882    pub api_version: u32,
5883}
5884
5885/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultVendorInfoEXT.html>
5886#[repr(C)]
5887#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5888pub struct DeviceFaultVendorInfoEXT {
5889    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
5890    pub vendor_fault_code: u64,
5891    pub vendor_fault_data: u64,
5892}
5893
5894/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupBindSparseInfo.html>
5895#[repr(C)]
5896#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5897pub struct DeviceGroupBindSparseInfo {
5898    pub s_type: StructureType,
5899    pub next: *const c_void,
5900    pub resource_device_index: u32,
5901    pub memory_device_index: u32,
5902}
5903
5904impl Default for DeviceGroupBindSparseInfo {
5905    #[inline]
5906    fn default() -> Self {
5907        Self {
5908            s_type: StructureType::DEVICE_GROUP_BIND_SPARSE_INFO,
5909            next: ptr::null(),
5910            resource_device_index: u32::default(),
5911            memory_device_index: u32::default(),
5912        }
5913    }
5914}
5915
5916unsafe impl Send for DeviceGroupBindSparseInfo {}
5917unsafe impl Sync for DeviceGroupBindSparseInfo {}
5918
5919/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupCommandBufferBeginInfo.html>
5920#[repr(C)]
5921#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5922pub struct DeviceGroupCommandBufferBeginInfo {
5923    pub s_type: StructureType,
5924    pub next: *const c_void,
5925    pub device_mask: u32,
5926}
5927
5928impl Default for DeviceGroupCommandBufferBeginInfo {
5929    #[inline]
5930    fn default() -> Self {
5931        Self {
5932            s_type: StructureType::DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
5933            next: ptr::null(),
5934            device_mask: u32::default(),
5935        }
5936    }
5937}
5938
5939unsafe impl Send for DeviceGroupCommandBufferBeginInfo {}
5940unsafe impl Sync for DeviceGroupCommandBufferBeginInfo {}
5941
5942/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupDeviceCreateInfo.html>
5943#[repr(C)]
5944#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5945pub struct DeviceGroupDeviceCreateInfo {
5946    pub s_type: StructureType,
5947    pub next: *const c_void,
5948    pub physical_device_count: u32,
5949    pub physical_devices: *const PhysicalDevice,
5950}
5951
5952impl Default for DeviceGroupDeviceCreateInfo {
5953    #[inline]
5954    fn default() -> Self {
5955        Self {
5956            s_type: StructureType::DEVICE_GROUP_DEVICE_CREATE_INFO,
5957            next: ptr::null(),
5958            physical_device_count: u32::default(),
5959            physical_devices: ptr::null(),
5960        }
5961    }
5962}
5963
5964unsafe impl Send for DeviceGroupDeviceCreateInfo {}
5965unsafe impl Sync for DeviceGroupDeviceCreateInfo {}
5966
5967/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupPresentCapabilitiesKHR.html>
5968#[repr(C)]
5969#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5970pub struct DeviceGroupPresentCapabilitiesKHR {
5971    pub s_type: StructureType,
5972    pub next: *mut c_void,
5973    pub present_mask: [u32; MAX_DEVICE_GROUP_SIZE],
5974    pub modes: DeviceGroupPresentModeFlagsKHR,
5975}
5976
5977impl Default for DeviceGroupPresentCapabilitiesKHR {
5978    #[inline]
5979    fn default() -> Self {
5980        Self {
5981            s_type: StructureType::DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
5982            next: ptr::null_mut(),
5983            present_mask: [u32::default(); MAX_DEVICE_GROUP_SIZE],
5984            modes: DeviceGroupPresentModeFlagsKHR::default(),
5985        }
5986    }
5987}
5988
5989unsafe impl Send for DeviceGroupPresentCapabilitiesKHR {}
5990unsafe impl Sync for DeviceGroupPresentCapabilitiesKHR {}
5991
5992/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupPresentInfoKHR.html>
5993#[repr(C)]
5994#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5995pub struct DeviceGroupPresentInfoKHR {
5996    pub s_type: StructureType,
5997    pub next: *const c_void,
5998    pub swapchain_count: u32,
5999    pub device_masks: *const u32,
6000    pub mode: DeviceGroupPresentModeFlagsKHR,
6001}
6002
6003impl Default for DeviceGroupPresentInfoKHR {
6004    #[inline]
6005    fn default() -> Self {
6006        Self {
6007            s_type: StructureType::DEVICE_GROUP_PRESENT_INFO_KHR,
6008            next: ptr::null(),
6009            swapchain_count: u32::default(),
6010            device_masks: ptr::null(),
6011            mode: DeviceGroupPresentModeFlagsKHR::default(),
6012        }
6013    }
6014}
6015
6016unsafe impl Send for DeviceGroupPresentInfoKHR {}
6017unsafe impl Sync for DeviceGroupPresentInfoKHR {}
6018
6019/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupRenderPassBeginInfo.html>
6020#[repr(C)]
6021#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6022pub struct DeviceGroupRenderPassBeginInfo {
6023    pub s_type: StructureType,
6024    pub next: *const c_void,
6025    pub device_mask: u32,
6026    pub device_render_area_count: u32,
6027    pub device_render_areas: *const Rect2D,
6028}
6029
6030impl Default for DeviceGroupRenderPassBeginInfo {
6031    #[inline]
6032    fn default() -> Self {
6033        Self {
6034            s_type: StructureType::DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
6035            next: ptr::null(),
6036            device_mask: u32::default(),
6037            device_render_area_count: u32::default(),
6038            device_render_areas: ptr::null(),
6039        }
6040    }
6041}
6042
6043unsafe impl Send for DeviceGroupRenderPassBeginInfo {}
6044unsafe impl Sync for DeviceGroupRenderPassBeginInfo {}
6045
6046/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupSubmitInfo.html>
6047#[repr(C)]
6048#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6049pub struct DeviceGroupSubmitInfo {
6050    pub s_type: StructureType,
6051    pub next: *const c_void,
6052    pub wait_semaphore_count: u32,
6053    pub wait_semaphore_device_indices: *const u32,
6054    pub command_buffer_count: u32,
6055    pub command_buffer_device_masks: *const u32,
6056    pub signal_semaphore_count: u32,
6057    pub signal_semaphore_device_indices: *const u32,
6058}
6059
6060impl Default for DeviceGroupSubmitInfo {
6061    #[inline]
6062    fn default() -> Self {
6063        Self {
6064            s_type: StructureType::DEVICE_GROUP_SUBMIT_INFO,
6065            next: ptr::null(),
6066            wait_semaphore_count: u32::default(),
6067            wait_semaphore_device_indices: ptr::null(),
6068            command_buffer_count: u32::default(),
6069            command_buffer_device_masks: ptr::null(),
6070            signal_semaphore_count: u32::default(),
6071            signal_semaphore_device_indices: ptr::null(),
6072        }
6073    }
6074}
6075
6076unsafe impl Send for DeviceGroupSubmitInfo {}
6077unsafe impl Sync for DeviceGroupSubmitInfo {}
6078
6079/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupSwapchainCreateInfoKHR.html>
6080#[repr(C)]
6081#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6082pub struct DeviceGroupSwapchainCreateInfoKHR {
6083    pub s_type: StructureType,
6084    pub next: *const c_void,
6085    pub modes: DeviceGroupPresentModeFlagsKHR,
6086}
6087
6088impl Default for DeviceGroupSwapchainCreateInfoKHR {
6089    #[inline]
6090    fn default() -> Self {
6091        Self {
6092            s_type: StructureType::DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,
6093            next: ptr::null(),
6094            modes: DeviceGroupPresentModeFlagsKHR::default(),
6095        }
6096    }
6097}
6098
6099unsafe impl Send for DeviceGroupSwapchainCreateInfoKHR {}
6100unsafe impl Sync for DeviceGroupSwapchainCreateInfoKHR {}
6101
6102/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageMemoryRequirements.html>
6103#[repr(C)]
6104#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6105pub struct DeviceImageMemoryRequirements {
6106    pub s_type: StructureType,
6107    pub next: *const c_void,
6108    pub create_info: *const ImageCreateInfo,
6109    pub plane_aspect: ImageAspectFlags,
6110}
6111
6112impl Default for DeviceImageMemoryRequirements {
6113    #[inline]
6114    fn default() -> Self {
6115        Self {
6116            s_type: StructureType::DEVICE_IMAGE_MEMORY_REQUIREMENTS,
6117            next: ptr::null(),
6118            create_info: ptr::null(),
6119            plane_aspect: ImageAspectFlags::default(),
6120        }
6121    }
6122}
6123
6124unsafe impl Send for DeviceImageMemoryRequirements {}
6125unsafe impl Sync for DeviceImageMemoryRequirements {}
6126
6127/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageSubresourceInfo.html>
6128#[repr(C)]
6129#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6130pub struct DeviceImageSubresourceInfo {
6131    pub s_type: StructureType,
6132    pub next: *const c_void,
6133    pub create_info: *const ImageCreateInfo,
6134    pub subresource: *const ImageSubresource2,
6135}
6136
6137impl Default for DeviceImageSubresourceInfo {
6138    #[inline]
6139    fn default() -> Self {
6140        Self {
6141            s_type: StructureType::DEVICE_IMAGE_SUBRESOURCE_INFO,
6142            next: ptr::null(),
6143            create_info: ptr::null(),
6144            subresource: ptr::null(),
6145        }
6146    }
6147}
6148
6149unsafe impl Send for DeviceImageSubresourceInfo {}
6150unsafe impl Sync for DeviceImageSubresourceInfo {}
6151
6152/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryOpaqueCaptureAddressInfo.html>
6153#[repr(C)]
6154#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6155pub struct DeviceMemoryOpaqueCaptureAddressInfo {
6156    pub s_type: StructureType,
6157    pub next: *const c_void,
6158    pub memory: DeviceMemory,
6159}
6160
6161impl Default for DeviceMemoryOpaqueCaptureAddressInfo {
6162    #[inline]
6163    fn default() -> Self {
6164        Self {
6165            s_type: StructureType::DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
6166            next: ptr::null(),
6167            memory: DeviceMemory::default(),
6168        }
6169    }
6170}
6171
6172unsafe impl Send for DeviceMemoryOpaqueCaptureAddressInfo {}
6173unsafe impl Sync for DeviceMemoryOpaqueCaptureAddressInfo {}
6174
6175/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryOverallocationCreateInfoAMD.html>
6176#[repr(C)]
6177#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6178pub struct DeviceMemoryOverallocationCreateInfoAMD {
6179    pub s_type: StructureType,
6180    pub next: *const c_void,
6181    pub overallocation_behavior: MemoryOverallocationBehaviorAMD,
6182}
6183
6184impl Default for DeviceMemoryOverallocationCreateInfoAMD {
6185    #[inline]
6186    fn default() -> Self {
6187        Self {
6188            s_type: StructureType::DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD,
6189            next: ptr::null(),
6190            overallocation_behavior: MemoryOverallocationBehaviorAMD::default(),
6191        }
6192    }
6193}
6194
6195unsafe impl Send for DeviceMemoryOverallocationCreateInfoAMD {}
6196unsafe impl Sync for DeviceMemoryOverallocationCreateInfoAMD {}
6197
6198/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryReportCallbackDataEXT.html>
6199#[repr(C)]
6200#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6201pub struct DeviceMemoryReportCallbackDataEXT {
6202    pub s_type: StructureType,
6203    pub next: *mut c_void,
6204    pub flags: DeviceMemoryReportFlagsEXT,
6205    pub type_: DeviceMemoryReportEventTypeEXT,
6206    pub memory_object_id: u64,
6207    pub size: DeviceSize,
6208    pub object_type: ObjectType,
6209    pub object_handle: u64,
6210    pub heap_index: u32,
6211}
6212
6213impl Default for DeviceMemoryReportCallbackDataEXT {
6214    #[inline]
6215    fn default() -> Self {
6216        Self {
6217            s_type: StructureType::DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT,
6218            next: ptr::null_mut(),
6219            flags: DeviceMemoryReportFlagsEXT::default(),
6220            type_: DeviceMemoryReportEventTypeEXT::default(),
6221            memory_object_id: u64::default(),
6222            size: DeviceSize::default(),
6223            object_type: ObjectType::default(),
6224            object_handle: u64::default(),
6225            heap_index: u32::default(),
6226        }
6227    }
6228}
6229
6230unsafe impl Send for DeviceMemoryReportCallbackDataEXT {}
6231unsafe impl Sync for DeviceMemoryReportCallbackDataEXT {}
6232
6233/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDevicePipelineBinaryInternalCacheControlKHR.html>
6234#[repr(C)]
6235#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6236pub struct DevicePipelineBinaryInternalCacheControlKHR {
6237    pub s_type: StructureType,
6238    pub next: *const c_void,
6239    pub disable_internal_cache: Bool32,
6240}
6241
6242impl Default for DevicePipelineBinaryInternalCacheControlKHR {
6243    #[inline]
6244    fn default() -> Self {
6245        Self {
6246            s_type: StructureType::DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR,
6247            next: ptr::null(),
6248            disable_internal_cache: Bool32::default(),
6249        }
6250    }
6251}
6252
6253unsafe impl Send for DevicePipelineBinaryInternalCacheControlKHR {}
6254unsafe impl Sync for DevicePipelineBinaryInternalCacheControlKHR {}
6255
6256/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDevicePrivateDataCreateInfo.html>
6257#[repr(C)]
6258#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6259pub struct DevicePrivateDataCreateInfo {
6260    pub s_type: StructureType,
6261    pub next: *const c_void,
6262    pub private_data_slot_request_count: u32,
6263}
6264
6265impl Default for DevicePrivateDataCreateInfo {
6266    #[inline]
6267    fn default() -> Self {
6268        Self {
6269            s_type: StructureType::DEVICE_PRIVATE_DATA_CREATE_INFO,
6270            next: ptr::null(),
6271            private_data_slot_request_count: u32::default(),
6272        }
6273    }
6274}
6275
6276unsafe impl Send for DevicePrivateDataCreateInfo {}
6277unsafe impl Sync for DevicePrivateDataCreateInfo {}
6278
6279/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueCreateInfo.html>
6280#[repr(C)]
6281#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6282pub struct DeviceQueueCreateInfo {
6283    pub s_type: StructureType,
6284    pub next: *const c_void,
6285    pub flags: DeviceQueueCreateFlags,
6286    pub queue_family_index: u32,
6287    pub queue_count: u32,
6288    pub queue_priorities: *const f32,
6289}
6290
6291impl Default for DeviceQueueCreateInfo {
6292    #[inline]
6293    fn default() -> Self {
6294        Self {
6295            s_type: StructureType::DEVICE_QUEUE_CREATE_INFO,
6296            next: ptr::null(),
6297            flags: DeviceQueueCreateFlags::default(),
6298            queue_family_index: u32::default(),
6299            queue_count: u32::default(),
6300            queue_priorities: ptr::null(),
6301        }
6302    }
6303}
6304
6305unsafe impl Send for DeviceQueueCreateInfo {}
6306unsafe impl Sync for DeviceQueueCreateInfo {}
6307
6308/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfo.html>
6309#[repr(C)]
6310#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6311pub struct DeviceQueueGlobalPriorityCreateInfo {
6312    pub s_type: StructureType,
6313    pub next: *const c_void,
6314    pub global_priority: QueueGlobalPriority,
6315}
6316
6317impl Default for DeviceQueueGlobalPriorityCreateInfo {
6318    #[inline]
6319    fn default() -> Self {
6320        Self {
6321            s_type: StructureType::DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO,
6322            next: ptr::null(),
6323            global_priority: QueueGlobalPriority::default(),
6324        }
6325    }
6326}
6327
6328unsafe impl Send for DeviceQueueGlobalPriorityCreateInfo {}
6329unsafe impl Sync for DeviceQueueGlobalPriorityCreateInfo {}
6330
6331/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueInfo2.html>
6332#[repr(C)]
6333#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6334pub struct DeviceQueueInfo2 {
6335    pub s_type: StructureType,
6336    pub next: *const c_void,
6337    pub flags: DeviceQueueCreateFlags,
6338    pub queue_family_index: u32,
6339    pub queue_index: u32,
6340}
6341
6342impl Default for DeviceQueueInfo2 {
6343    #[inline]
6344    fn default() -> Self {
6345        Self {
6346            s_type: StructureType::DEVICE_QUEUE_INFO_2,
6347            next: ptr::null(),
6348            flags: DeviceQueueCreateFlags::default(),
6349            queue_family_index: u32::default(),
6350            queue_index: u32::default(),
6351        }
6352    }
6353}
6354
6355unsafe impl Send for DeviceQueueInfo2 {}
6356unsafe impl Sync for DeviceQueueInfo2 {}
6357
6358/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueShaderCoreControlCreateInfoARM.html>
6359#[repr(C)]
6360#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6361pub struct DeviceQueueShaderCoreControlCreateInfoARM {
6362    pub s_type: StructureType,
6363    pub next: *mut c_void,
6364    pub shader_core_count: u32,
6365}
6366
6367impl Default for DeviceQueueShaderCoreControlCreateInfoARM {
6368    #[inline]
6369    fn default() -> Self {
6370        Self {
6371            s_type: StructureType::DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM,
6372            next: ptr::null_mut(),
6373            shader_core_count: u32::default(),
6374        }
6375    }
6376}
6377
6378unsafe impl Send for DeviceQueueShaderCoreControlCreateInfoARM {}
6379unsafe impl Sync for DeviceQueueShaderCoreControlCreateInfoARM {}
6380
6381/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV.html>
6382#[repr(C)]
6383#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6384pub struct DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {
6385    pub s_type: StructureType,
6386    pub next: *const c_void,
6387    pub semaphore_sci_sync_pool_request_count: u32,
6388}
6389
6390impl Default for DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {
6391    #[inline]
6392    fn default() -> Self {
6393        Self {
6394            s_type: StructureType::DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV,
6395            next: ptr::null(),
6396            semaphore_sci_sync_pool_request_count: u32::default(),
6397        }
6398    }
6399}
6400
6401unsafe impl Send for DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {}
6402unsafe impl Sync for DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {}
6403
6404/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceTensorMemoryRequirementsARM.html>
6405#[repr(C)]
6406#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6407pub struct DeviceTensorMemoryRequirementsARM {
6408    pub s_type: StructureType,
6409    pub next: *const c_void,
6410    pub create_info: *const TensorCreateInfoARM,
6411}
6412
6413impl Default for DeviceTensorMemoryRequirementsARM {
6414    #[inline]
6415    fn default() -> Self {
6416        Self {
6417            s_type: StructureType::DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM,
6418            next: ptr::null(),
6419            create_info: ptr::null(),
6420        }
6421    }
6422}
6423
6424unsafe impl Send for DeviceTensorMemoryRequirementsARM {}
6425unsafe impl Sync for DeviceTensorMemoryRequirementsARM {}
6426
6427/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectDriverLoadingInfoLUNARG.html>
6428#[repr(C)]
6429#[derive(Copy, Clone)]
6430pub struct DirectDriverLoadingInfoLUNARG {
6431    pub s_type: StructureType,
6432    pub next: *mut c_void,
6433    pub flags: DirectDriverLoadingFlagsLUNARG,
6434    pub get_instance_proc_addr: PFN_vkGetInstanceProcAddrLUNARG,
6435}
6436
6437impl fmt::Debug for DirectDriverLoadingInfoLUNARG {
6438    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6439        f.debug_struct("DirectDriverLoadingInfoLUNARG")
6440            .field("s_type", &self.s_type)
6441            .field("next", &self.next)
6442            .field("flags", &self.flags)
6443            .field(
6444                "get_instance_proc_addr",
6445                &(self.get_instance_proc_addr.map(|f| f as *const u8)),
6446            )
6447            .finish()
6448    }
6449}
6450
6451impl Default for DirectDriverLoadingInfoLUNARG {
6452    #[inline]
6453    fn default() -> Self {
6454        Self {
6455            s_type: StructureType::DIRECT_DRIVER_LOADING_INFO_LUNARG,
6456            next: ptr::null_mut(),
6457            flags: DirectDriverLoadingFlagsLUNARG::default(),
6458            get_instance_proc_addr: PFN_vkGetInstanceProcAddrLUNARG::default(),
6459        }
6460    }
6461}
6462
6463unsafe impl Send for DirectDriverLoadingInfoLUNARG {}
6464unsafe impl Sync for DirectDriverLoadingInfoLUNARG {}
6465
6466/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectDriverLoadingListLUNARG.html>
6467#[repr(C)]
6468#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6469pub struct DirectDriverLoadingListLUNARG {
6470    pub s_type: StructureType,
6471    pub next: *const c_void,
6472    pub mode: DirectDriverLoadingModeLUNARG,
6473    pub driver_count: u32,
6474    pub drivers: *const DirectDriverLoadingInfoLUNARG,
6475}
6476
6477impl Default for DirectDriverLoadingListLUNARG {
6478    #[inline]
6479    fn default() -> Self {
6480        Self {
6481            s_type: StructureType::DIRECT_DRIVER_LOADING_LIST_LUNARG,
6482            next: ptr::null(),
6483            mode: DirectDriverLoadingModeLUNARG::default(),
6484            driver_count: u32::default(),
6485            drivers: ptr::null(),
6486        }
6487    }
6488}
6489
6490unsafe impl Send for DirectDriverLoadingListLUNARG {}
6491unsafe impl Sync for DirectDriverLoadingListLUNARG {}
6492
6493/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectFBSurfaceCreateInfoEXT.html>
6494#[repr(C)]
6495#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6496pub struct DirectFBSurfaceCreateInfoEXT {
6497    pub s_type: StructureType,
6498    pub next: *const c_void,
6499    pub flags: DirectFBSurfaceCreateFlagsEXT,
6500    pub dfb: *mut IDirectFB,
6501    pub surface: *mut IDirectFBSurface,
6502}
6503
6504impl Default for DirectFBSurfaceCreateInfoEXT {
6505    #[inline]
6506    fn default() -> Self {
6507        Self {
6508            s_type: StructureType::DIRECTFB_SURFACE_CREATE_INFO_EXT,
6509            next: ptr::null(),
6510            flags: DirectFBSurfaceCreateFlagsEXT::default(),
6511            dfb: ptr::null_mut(),
6512            surface: ptr::null_mut(),
6513        }
6514    }
6515}
6516
6517unsafe impl Send for DirectFBSurfaceCreateInfoEXT {}
6518unsafe impl Sync for DirectFBSurfaceCreateInfoEXT {}
6519
6520/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchGraphCountInfoAMDX.html>
6521#[repr(C)]
6522#[derive(Copy, Clone, Default, Debug)]
6523pub struct DispatchGraphCountInfoAMDX {
6524    pub count: u32,
6525    pub infos: DeviceOrHostAddressConstAMDX,
6526    pub stride: u64,
6527}
6528
6529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchGraphInfoAMDX.html>
6530#[repr(C)]
6531#[derive(Copy, Clone, Default, Debug)]
6532pub struct DispatchGraphInfoAMDX {
6533    pub node_index: u32,
6534    pub payload_count: u32,
6535    pub payloads: DeviceOrHostAddressConstAMDX,
6536    pub payload_stride: u64,
6537}
6538
6539/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchIndirectCommand.html>
6540#[repr(C)]
6541#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6542pub struct DispatchIndirectCommand {
6543    pub x: u32,
6544    pub y: u32,
6545    pub z: u32,
6546}
6547
6548/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchTileInfoQCOM.html>
6549#[repr(C)]
6550#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6551pub struct DispatchTileInfoQCOM {
6552    pub s_type: StructureType,
6553    pub next: *const c_void,
6554}
6555
6556impl Default for DispatchTileInfoQCOM {
6557    #[inline]
6558    fn default() -> Self {
6559        Self {
6560            s_type: StructureType::DISPATCH_TILE_INFO_QCOM,
6561            next: ptr::null(),
6562        }
6563    }
6564}
6565
6566unsafe impl Send for DispatchTileInfoQCOM {}
6567unsafe impl Sync for DispatchTileInfoQCOM {}
6568
6569/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayEventInfoEXT.html>
6570#[repr(C)]
6571#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6572pub struct DisplayEventInfoEXT {
6573    pub s_type: StructureType,
6574    pub next: *const c_void,
6575    pub display_event: DisplayEventTypeEXT,
6576}
6577
6578impl Default for DisplayEventInfoEXT {
6579    #[inline]
6580    fn default() -> Self {
6581        Self {
6582            s_type: StructureType::DISPLAY_EVENT_INFO_EXT,
6583            next: ptr::null(),
6584            display_event: DisplayEventTypeEXT::default(),
6585        }
6586    }
6587}
6588
6589unsafe impl Send for DisplayEventInfoEXT {}
6590unsafe impl Sync for DisplayEventInfoEXT {}
6591
6592/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeCreateInfoKHR.html>
6593#[repr(C)]
6594#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6595pub struct DisplayModeCreateInfoKHR {
6596    pub s_type: StructureType,
6597    pub next: *const c_void,
6598    pub flags: DisplayModeCreateFlagsKHR,
6599    pub parameters: DisplayModeParametersKHR,
6600}
6601
6602impl Default for DisplayModeCreateInfoKHR {
6603    #[inline]
6604    fn default() -> Self {
6605        Self {
6606            s_type: StructureType::DISPLAY_MODE_CREATE_INFO_KHR,
6607            next: ptr::null(),
6608            flags: DisplayModeCreateFlagsKHR::default(),
6609            parameters: DisplayModeParametersKHR::default(),
6610        }
6611    }
6612}
6613
6614unsafe impl Send for DisplayModeCreateInfoKHR {}
6615unsafe impl Sync for DisplayModeCreateInfoKHR {}
6616
6617/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeParametersKHR.html>
6618#[repr(C)]
6619#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6620pub struct DisplayModeParametersKHR {
6621    pub visible_region: Extent2D,
6622    pub refresh_rate: u32,
6623}
6624
6625/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeProperties2KHR.html>
6626#[repr(C)]
6627#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6628pub struct DisplayModeProperties2KHR {
6629    pub s_type: StructureType,
6630    pub next: *mut c_void,
6631    pub display_mode_properties: DisplayModePropertiesKHR,
6632}
6633
6634impl Default for DisplayModeProperties2KHR {
6635    #[inline]
6636    fn default() -> Self {
6637        Self {
6638            s_type: StructureType::DISPLAY_MODE_PROPERTIES_2_KHR,
6639            next: ptr::null_mut(),
6640            display_mode_properties: DisplayModePropertiesKHR::default(),
6641        }
6642    }
6643}
6644
6645unsafe impl Send for DisplayModeProperties2KHR {}
6646unsafe impl Sync for DisplayModeProperties2KHR {}
6647
6648/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModePropertiesKHR.html>
6649#[repr(C)]
6650#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6651pub struct DisplayModePropertiesKHR {
6652    pub display_mode: DisplayModeKHR,
6653    pub parameters: DisplayModeParametersKHR,
6654}
6655
6656/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeStereoPropertiesNV.html>
6657#[repr(C)]
6658#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6659pub struct DisplayModeStereoPropertiesNV {
6660    pub s_type: StructureType,
6661    pub next: *const c_void,
6662    pub hdmi_3d_supported: Bool32,
6663}
6664
6665impl Default for DisplayModeStereoPropertiesNV {
6666    #[inline]
6667    fn default() -> Self {
6668        Self {
6669            s_type: StructureType::DISPLAY_MODE_STEREO_PROPERTIES_NV,
6670            next: ptr::null(),
6671            hdmi_3d_supported: Bool32::default(),
6672        }
6673    }
6674}
6675
6676unsafe impl Send for DisplayModeStereoPropertiesNV {}
6677unsafe impl Sync for DisplayModeStereoPropertiesNV {}
6678
6679/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayNativeHdrSurfaceCapabilitiesAMD.html>
6680#[repr(C)]
6681#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6682pub struct DisplayNativeHdrSurfaceCapabilitiesAMD {
6683    pub s_type: StructureType,
6684    pub next: *mut c_void,
6685    pub local_dimming_support: Bool32,
6686}
6687
6688impl Default for DisplayNativeHdrSurfaceCapabilitiesAMD {
6689    #[inline]
6690    fn default() -> Self {
6691        Self {
6692            s_type: StructureType::DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD,
6693            next: ptr::null_mut(),
6694            local_dimming_support: Bool32::default(),
6695        }
6696    }
6697}
6698
6699unsafe impl Send for DisplayNativeHdrSurfaceCapabilitiesAMD {}
6700unsafe impl Sync for DisplayNativeHdrSurfaceCapabilitiesAMD {}
6701
6702/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneCapabilities2KHR.html>
6703#[repr(C)]
6704#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6705pub struct DisplayPlaneCapabilities2KHR {
6706    pub s_type: StructureType,
6707    pub next: *mut c_void,
6708    pub capabilities: DisplayPlaneCapabilitiesKHR,
6709}
6710
6711impl Default for DisplayPlaneCapabilities2KHR {
6712    #[inline]
6713    fn default() -> Self {
6714        Self {
6715            s_type: StructureType::DISPLAY_PLANE_CAPABILITIES_2_KHR,
6716            next: ptr::null_mut(),
6717            capabilities: DisplayPlaneCapabilitiesKHR::default(),
6718        }
6719    }
6720}
6721
6722unsafe impl Send for DisplayPlaneCapabilities2KHR {}
6723unsafe impl Sync for DisplayPlaneCapabilities2KHR {}
6724
6725/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneCapabilitiesKHR.html>
6726#[repr(C)]
6727#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6728pub struct DisplayPlaneCapabilitiesKHR {
6729    pub supported_alpha: DisplayPlaneAlphaFlagsKHR,
6730    pub min_src_position: Offset2D,
6731    pub max_src_position: Offset2D,
6732    pub min_src_extent: Extent2D,
6733    pub max_src_extent: Extent2D,
6734    pub min_dst_position: Offset2D,
6735    pub max_dst_position: Offset2D,
6736    pub min_dst_extent: Extent2D,
6737    pub max_dst_extent: Extent2D,
6738}
6739
6740/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneInfo2KHR.html>
6741#[repr(C)]
6742#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6743pub struct DisplayPlaneInfo2KHR {
6744    pub s_type: StructureType,
6745    pub next: *const c_void,
6746    pub mode: DisplayModeKHR,
6747    pub plane_index: u32,
6748}
6749
6750impl Default for DisplayPlaneInfo2KHR {
6751    #[inline]
6752    fn default() -> Self {
6753        Self {
6754            s_type: StructureType::DISPLAY_PLANE_INFO_2_KHR,
6755            next: ptr::null(),
6756            mode: DisplayModeKHR::default(),
6757            plane_index: u32::default(),
6758        }
6759    }
6760}
6761
6762unsafe impl Send for DisplayPlaneInfo2KHR {}
6763unsafe impl Sync for DisplayPlaneInfo2KHR {}
6764
6765/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneProperties2KHR.html>
6766#[repr(C)]
6767#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6768pub struct DisplayPlaneProperties2KHR {
6769    pub s_type: StructureType,
6770    pub next: *mut c_void,
6771    pub display_plane_properties: DisplayPlanePropertiesKHR,
6772}
6773
6774impl Default for DisplayPlaneProperties2KHR {
6775    #[inline]
6776    fn default() -> Self {
6777        Self {
6778            s_type: StructureType::DISPLAY_PLANE_PROPERTIES_2_KHR,
6779            next: ptr::null_mut(),
6780            display_plane_properties: DisplayPlanePropertiesKHR::default(),
6781        }
6782    }
6783}
6784
6785unsafe impl Send for DisplayPlaneProperties2KHR {}
6786unsafe impl Sync for DisplayPlaneProperties2KHR {}
6787
6788/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlanePropertiesKHR.html>
6789#[repr(C)]
6790#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6791pub struct DisplayPlanePropertiesKHR {
6792    pub current_display: DisplayKHR,
6793    pub current_stack_index: u32,
6794}
6795
6796/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPowerInfoEXT.html>
6797#[repr(C)]
6798#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6799pub struct DisplayPowerInfoEXT {
6800    pub s_type: StructureType,
6801    pub next: *const c_void,
6802    pub power_state: DisplayPowerStateEXT,
6803}
6804
6805impl Default for DisplayPowerInfoEXT {
6806    #[inline]
6807    fn default() -> Self {
6808        Self {
6809            s_type: StructureType::DISPLAY_POWER_INFO_EXT,
6810            next: ptr::null(),
6811            power_state: DisplayPowerStateEXT::default(),
6812        }
6813    }
6814}
6815
6816unsafe impl Send for DisplayPowerInfoEXT {}
6817unsafe impl Sync for DisplayPowerInfoEXT {}
6818
6819/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPresentInfoKHR.html>
6820#[repr(C)]
6821#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6822pub struct DisplayPresentInfoKHR {
6823    pub s_type: StructureType,
6824    pub next: *const c_void,
6825    pub src_rect: Rect2D,
6826    pub dst_rect: Rect2D,
6827    pub persistent: Bool32,
6828}
6829
6830impl Default for DisplayPresentInfoKHR {
6831    #[inline]
6832    fn default() -> Self {
6833        Self {
6834            s_type: StructureType::DISPLAY_PRESENT_INFO_KHR,
6835            next: ptr::null(),
6836            src_rect: Rect2D::default(),
6837            dst_rect: Rect2D::default(),
6838            persistent: Bool32::default(),
6839        }
6840    }
6841}
6842
6843unsafe impl Send for DisplayPresentInfoKHR {}
6844unsafe impl Sync for DisplayPresentInfoKHR {}
6845
6846/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayProperties2KHR.html>
6847#[repr(C)]
6848#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6849pub struct DisplayProperties2KHR {
6850    pub s_type: StructureType,
6851    pub next: *mut c_void,
6852    pub display_properties: DisplayPropertiesKHR,
6853}
6854
6855impl Default for DisplayProperties2KHR {
6856    #[inline]
6857    fn default() -> Self {
6858        Self {
6859            s_type: StructureType::DISPLAY_PROPERTIES_2_KHR,
6860            next: ptr::null_mut(),
6861            display_properties: DisplayPropertiesKHR::default(),
6862        }
6863    }
6864}
6865
6866unsafe impl Send for DisplayProperties2KHR {}
6867unsafe impl Sync for DisplayProperties2KHR {}
6868
6869/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPropertiesKHR.html>
6870#[repr(C)]
6871#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6872pub struct DisplayPropertiesKHR {
6873    pub display: DisplayKHR,
6874    pub display_name: *const c_char,
6875    pub physical_dimensions: Extent2D,
6876    pub physical_resolution: Extent2D,
6877    pub supported_transforms: SurfaceTransformFlagsKHR,
6878    pub plane_reorder_possible: Bool32,
6879    pub persistent_content: Bool32,
6880}
6881
6882impl Default for DisplayPropertiesKHR {
6883    #[inline]
6884    fn default() -> Self {
6885        Self {
6886            display: DisplayKHR::default(),
6887            display_name: ptr::null(),
6888            physical_dimensions: Extent2D::default(),
6889            physical_resolution: Extent2D::default(),
6890            supported_transforms: SurfaceTransformFlagsKHR::default(),
6891            plane_reorder_possible: Bool32::default(),
6892            persistent_content: Bool32::default(),
6893        }
6894    }
6895}
6896
6897unsafe impl Send for DisplayPropertiesKHR {}
6898unsafe impl Sync for DisplayPropertiesKHR {}
6899
6900/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplaySurfaceCreateInfoKHR.html>
6901#[repr(C)]
6902#[derive(Copy, Clone, Debug, PartialEq)]
6903pub struct DisplaySurfaceCreateInfoKHR {
6904    pub s_type: StructureType,
6905    pub next: *const c_void,
6906    pub flags: DisplaySurfaceCreateFlagsKHR,
6907    pub display_mode: DisplayModeKHR,
6908    pub plane_index: u32,
6909    pub plane_stack_index: u32,
6910    pub transform: SurfaceTransformFlagsKHR,
6911    pub global_alpha: f32,
6912    pub alpha_mode: DisplayPlaneAlphaFlagsKHR,
6913    pub image_extent: Extent2D,
6914}
6915
6916impl Default for DisplaySurfaceCreateInfoKHR {
6917    #[inline]
6918    fn default() -> Self {
6919        Self {
6920            s_type: StructureType::DISPLAY_SURFACE_CREATE_INFO_KHR,
6921            next: ptr::null(),
6922            flags: DisplaySurfaceCreateFlagsKHR::default(),
6923            display_mode: DisplayModeKHR::default(),
6924            plane_index: u32::default(),
6925            plane_stack_index: u32::default(),
6926            transform: SurfaceTransformFlagsKHR::default(),
6927            global_alpha: f32::default(),
6928            alpha_mode: DisplayPlaneAlphaFlagsKHR::default(),
6929            image_extent: Extent2D::default(),
6930        }
6931    }
6932}
6933
6934unsafe impl Send for DisplaySurfaceCreateInfoKHR {}
6935unsafe impl Sync for DisplaySurfaceCreateInfoKHR {}
6936
6937/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplaySurfaceStereoCreateInfoNV.html>
6938#[repr(C)]
6939#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6940pub struct DisplaySurfaceStereoCreateInfoNV {
6941    pub s_type: StructureType,
6942    pub next: *const c_void,
6943    pub stereo_type: DisplaySurfaceStereoTypeNV,
6944}
6945
6946impl Default for DisplaySurfaceStereoCreateInfoNV {
6947    #[inline]
6948    fn default() -> Self {
6949        Self {
6950            s_type: StructureType::DISPLAY_SURFACE_STEREO_CREATE_INFO_NV,
6951            next: ptr::null(),
6952            stereo_type: DisplaySurfaceStereoTypeNV::default(),
6953        }
6954    }
6955}
6956
6957unsafe impl Send for DisplaySurfaceStereoCreateInfoNV {}
6958unsafe impl Sync for DisplaySurfaceStereoCreateInfoNV {}
6959
6960/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawIndexedIndirectCommand.html>
6961#[repr(C)]
6962#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6963pub struct DrawIndexedIndirectCommand {
6964    pub index_count: u32,
6965    pub instance_count: u32,
6966    pub first_index: u32,
6967    pub vertex_offset: i32,
6968    pub first_instance: u32,
6969}
6970
6971/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawIndirectCommand.html>
6972#[repr(C)]
6973#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6974pub struct DrawIndirectCommand {
6975    pub vertex_count: u32,
6976    pub instance_count: u32,
6977    pub first_vertex: u32,
6978    pub first_instance: u32,
6979}
6980
6981/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawIndirectCountIndirectCommandEXT.html>
6982#[repr(C)]
6983#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6984pub struct DrawIndirectCountIndirectCommandEXT {
6985    pub buffer_address: DeviceAddress,
6986    pub stride: u32,
6987    pub command_count: u32,
6988}
6989
6990/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawMeshTasksIndirectCommandEXT.html>
6991#[repr(C)]
6992#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6993pub struct DrawMeshTasksIndirectCommandEXT {
6994    pub group_count_x: u32,
6995    pub group_count_y: u32,
6996    pub group_count_z: u32,
6997}
6998
6999/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawMeshTasksIndirectCommandNV.html>
7000#[repr(C)]
7001#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7002pub struct DrawMeshTasksIndirectCommandNV {
7003    pub task_count: u32,
7004    pub first_task: u32,
7005}
7006
7007/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierProperties2EXT.html>
7008#[repr(C)]
7009#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7010pub struct DrmFormatModifierProperties2EXT {
7011    pub drm_format_modifier: u64,
7012    pub drm_format_modifier_plane_count: u32,
7013    pub drm_format_modifier_tiling_features: FormatFeatureFlags2,
7014}
7015
7016/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesEXT.html>
7017#[repr(C)]
7018#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7019pub struct DrmFormatModifierPropertiesEXT {
7020    pub drm_format_modifier: u64,
7021    pub drm_format_modifier_plane_count: u32,
7022    pub drm_format_modifier_tiling_features: FormatFeatureFlags,
7023}
7024
7025/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesList2EXT.html>
7026#[repr(C)]
7027#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7028pub struct DrmFormatModifierPropertiesList2EXT {
7029    pub s_type: StructureType,
7030    pub next: *mut c_void,
7031    pub drm_format_modifier_count: u32,
7032    pub drm_format_modifier_properties: *mut DrmFormatModifierProperties2EXT,
7033}
7034
7035impl Default for DrmFormatModifierPropertiesList2EXT {
7036    #[inline]
7037    fn default() -> Self {
7038        Self {
7039            s_type: StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT,
7040            next: ptr::null_mut(),
7041            drm_format_modifier_count: u32::default(),
7042            drm_format_modifier_properties: ptr::null_mut(),
7043        }
7044    }
7045}
7046
7047unsafe impl Send for DrmFormatModifierPropertiesList2EXT {}
7048unsafe impl Sync for DrmFormatModifierPropertiesList2EXT {}
7049
7050/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesListEXT.html>
7051#[repr(C)]
7052#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7053pub struct DrmFormatModifierPropertiesListEXT {
7054    pub s_type: StructureType,
7055    pub next: *mut c_void,
7056    pub drm_format_modifier_count: u32,
7057    pub drm_format_modifier_properties: *mut DrmFormatModifierPropertiesEXT,
7058}
7059
7060impl Default for DrmFormatModifierPropertiesListEXT {
7061    #[inline]
7062    fn default() -> Self {
7063        Self {
7064            s_type: StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT,
7065            next: ptr::null_mut(),
7066            drm_format_modifier_count: u32::default(),
7067            drm_format_modifier_properties: ptr::null_mut(),
7068        }
7069    }
7070}
7071
7072unsafe impl Send for DrmFormatModifierPropertiesListEXT {}
7073unsafe impl Sync for DrmFormatModifierPropertiesListEXT {}
7074
7075/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkEventCreateInfo.html>
7076#[repr(C)]
7077#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7078pub struct EventCreateInfo {
7079    pub s_type: StructureType,
7080    pub next: *const c_void,
7081    pub flags: EventCreateFlags,
7082}
7083
7084impl Default for EventCreateInfo {
7085    #[inline]
7086    fn default() -> Self {
7087        Self {
7088            s_type: StructureType::EVENT_CREATE_INFO,
7089            next: ptr::null(),
7090            flags: EventCreateFlags::default(),
7091        }
7092    }
7093}
7094
7095unsafe impl Send for EventCreateInfo {}
7096unsafe impl Sync for EventCreateInfo {}
7097
7098/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExecutionGraphPipelineCreateInfoAMDX.html>
7099#[repr(C)]
7100#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7101pub struct ExecutionGraphPipelineCreateInfoAMDX {
7102    pub s_type: StructureType,
7103    pub next: *const c_void,
7104    pub flags: PipelineCreateFlags,
7105    pub stage_count: u32,
7106    pub stages: *const PipelineShaderStageCreateInfo,
7107    pub library_info: *const PipelineLibraryCreateInfoKHR,
7108    pub layout: PipelineLayout,
7109    pub base_pipeline_handle: Pipeline,
7110    pub base_pipeline_index: i32,
7111}
7112
7113impl Default for ExecutionGraphPipelineCreateInfoAMDX {
7114    #[inline]
7115    fn default() -> Self {
7116        Self {
7117            s_type: StructureType::EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX,
7118            next: ptr::null(),
7119            flags: PipelineCreateFlags::default(),
7120            stage_count: u32::default(),
7121            stages: ptr::null(),
7122            library_info: ptr::null(),
7123            layout: PipelineLayout::default(),
7124            base_pipeline_handle: Pipeline::default(),
7125            base_pipeline_index: i32::default(),
7126        }
7127    }
7128}
7129
7130unsafe impl Send for ExecutionGraphPipelineCreateInfoAMDX {}
7131unsafe impl Sync for ExecutionGraphPipelineCreateInfoAMDX {}
7132
7133/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExecutionGraphPipelineScratchSizeAMDX.html>
7134#[repr(C)]
7135#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7136pub struct ExecutionGraphPipelineScratchSizeAMDX {
7137    pub s_type: StructureType,
7138    pub next: *mut c_void,
7139    pub min_size: DeviceSize,
7140    pub max_size: DeviceSize,
7141    pub size_granularity: DeviceSize,
7142}
7143
7144impl Default for ExecutionGraphPipelineScratchSizeAMDX {
7145    #[inline]
7146    fn default() -> Self {
7147        Self {
7148            s_type: StructureType::EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX,
7149            next: ptr::null_mut(),
7150            min_size: DeviceSize::default(),
7151            max_size: DeviceSize::default(),
7152            size_granularity: DeviceSize::default(),
7153        }
7154    }
7155}
7156
7157unsafe impl Send for ExecutionGraphPipelineScratchSizeAMDX {}
7158unsafe impl Sync for ExecutionGraphPipelineScratchSizeAMDX {}
7159
7160/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceCreateInfo.html>
7161#[repr(C)]
7162#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7163pub struct ExportFenceCreateInfo {
7164    pub s_type: StructureType,
7165    pub next: *const c_void,
7166    pub handle_types: ExternalFenceHandleTypeFlags,
7167}
7168
7169impl Default for ExportFenceCreateInfo {
7170    #[inline]
7171    fn default() -> Self {
7172        Self {
7173            s_type: StructureType::EXPORT_FENCE_CREATE_INFO,
7174            next: ptr::null(),
7175            handle_types: ExternalFenceHandleTypeFlags::default(),
7176        }
7177    }
7178}
7179
7180unsafe impl Send for ExportFenceCreateInfo {}
7181unsafe impl Sync for ExportFenceCreateInfo {}
7182
7183/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceSciSyncInfoNV.html>
7184#[repr(C)]
7185#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7186pub struct ExportFenceSciSyncInfoNV {
7187    pub s_type: StructureType,
7188    pub next: *const c_void,
7189    pub attributes: NvSciSyncAttrList,
7190}
7191
7192impl Default for ExportFenceSciSyncInfoNV {
7193    #[inline]
7194    fn default() -> Self {
7195        Self {
7196            s_type: StructureType::EXPORT_FENCE_SCI_SYNC_INFO_NV,
7197            next: ptr::null(),
7198            attributes: ptr::null_mut(),
7199        }
7200    }
7201}
7202
7203unsafe impl Send for ExportFenceSciSyncInfoNV {}
7204unsafe impl Sync for ExportFenceSciSyncInfoNV {}
7205
7206/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceWin32HandleInfoKHR.html>
7207#[repr(C)]
7208#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7209pub struct ExportFenceWin32HandleInfoKHR {
7210    pub s_type: StructureType,
7211    pub next: *const c_void,
7212    pub attributes: *const SECURITY_ATTRIBUTES,
7213    pub dw_access: DWORD,
7214    pub name: LPCWSTR,
7215}
7216
7217impl Default for ExportFenceWin32HandleInfoKHR {
7218    #[inline]
7219    fn default() -> Self {
7220        Self {
7221            s_type: StructureType::EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,
7222            next: ptr::null(),
7223            attributes: ptr::null(),
7224            dw_access: DWORD::default(),
7225            name: ptr::null_mut(),
7226        }
7227    }
7228}
7229
7230unsafe impl Send for ExportFenceWin32HandleInfoKHR {}
7231unsafe impl Sync for ExportFenceWin32HandleInfoKHR {}
7232
7233/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfo.html>
7234#[repr(C)]
7235#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7236pub struct ExportMemoryAllocateInfo {
7237    pub s_type: StructureType,
7238    pub next: *const c_void,
7239    pub handle_types: ExternalMemoryHandleTypeFlags,
7240}
7241
7242impl Default for ExportMemoryAllocateInfo {
7243    #[inline]
7244    fn default() -> Self {
7245        Self {
7246            s_type: StructureType::EXPORT_MEMORY_ALLOCATE_INFO,
7247            next: ptr::null(),
7248            handle_types: ExternalMemoryHandleTypeFlags::default(),
7249        }
7250    }
7251}
7252
7253unsafe impl Send for ExportMemoryAllocateInfo {}
7254unsafe impl Sync for ExportMemoryAllocateInfo {}
7255
7256/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfoNV.html>
7257#[repr(C)]
7258#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7259pub struct ExportMemoryAllocateInfoNV {
7260    pub s_type: StructureType,
7261    pub next: *const c_void,
7262    pub handle_types: ExternalMemoryHandleTypeFlagsNV,
7263}
7264
7265impl Default for ExportMemoryAllocateInfoNV {
7266    #[inline]
7267    fn default() -> Self {
7268        Self {
7269            s_type: StructureType::EXPORT_MEMORY_ALLOCATE_INFO_NV,
7270            next: ptr::null(),
7271            handle_types: ExternalMemoryHandleTypeFlagsNV::default(),
7272        }
7273    }
7274}
7275
7276unsafe impl Send for ExportMemoryAllocateInfoNV {}
7277unsafe impl Sync for ExportMemoryAllocateInfoNV {}
7278
7279/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemorySciBufInfoNV.html>
7280#[repr(C)]
7281#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7282pub struct ExportMemorySciBufInfoNV {
7283    pub s_type: StructureType,
7284    pub next: *const c_void,
7285    pub attributes: NvSciBufAttrList,
7286}
7287
7288impl Default for ExportMemorySciBufInfoNV {
7289    #[inline]
7290    fn default() -> Self {
7291        Self {
7292            s_type: StructureType::EXPORT_MEMORY_SCI_BUF_INFO_NV,
7293            next: ptr::null(),
7294            attributes: ptr::null_mut(),
7295        }
7296    }
7297}
7298
7299unsafe impl Send for ExportMemorySciBufInfoNV {}
7300unsafe impl Sync for ExportMemorySciBufInfoNV {}
7301
7302/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryWin32HandleInfoKHR.html>
7303#[repr(C)]
7304#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7305pub struct ExportMemoryWin32HandleInfoKHR {
7306    pub s_type: StructureType,
7307    pub next: *const c_void,
7308    pub attributes: *const SECURITY_ATTRIBUTES,
7309    pub dw_access: DWORD,
7310    pub name: LPCWSTR,
7311}
7312
7313impl Default for ExportMemoryWin32HandleInfoKHR {
7314    #[inline]
7315    fn default() -> Self {
7316        Self {
7317            s_type: StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
7318            next: ptr::null(),
7319            attributes: ptr::null(),
7320            dw_access: DWORD::default(),
7321            name: ptr::null_mut(),
7322        }
7323    }
7324}
7325
7326unsafe impl Send for ExportMemoryWin32HandleInfoKHR {}
7327unsafe impl Sync for ExportMemoryWin32HandleInfoKHR {}
7328
7329/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryWin32HandleInfoNV.html>
7330#[repr(C)]
7331#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7332pub struct ExportMemoryWin32HandleInfoNV {
7333    pub s_type: StructureType,
7334    pub next: *const c_void,
7335    pub attributes: *const SECURITY_ATTRIBUTES,
7336    pub dw_access: DWORD,
7337}
7338
7339impl Default for ExportMemoryWin32HandleInfoNV {
7340    #[inline]
7341    fn default() -> Self {
7342        Self {
7343            s_type: StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
7344            next: ptr::null(),
7345            attributes: ptr::null(),
7346            dw_access: DWORD::default(),
7347        }
7348    }
7349}
7350
7351unsafe impl Send for ExportMemoryWin32HandleInfoNV {}
7352unsafe impl Sync for ExportMemoryWin32HandleInfoNV {}
7353
7354/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalBufferInfoEXT.html>
7355#[repr(C)]
7356#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7357pub struct ExportMetalBufferInfoEXT {
7358    pub s_type: StructureType,
7359    pub next: *const c_void,
7360    pub memory: DeviceMemory,
7361    pub mtl_buffer: MTLBuffer_id,
7362}
7363
7364impl Default for ExportMetalBufferInfoEXT {
7365    #[inline]
7366    fn default() -> Self {
7367        Self {
7368            s_type: StructureType::EXPORT_METAL_BUFFER_INFO_EXT,
7369            next: ptr::null(),
7370            memory: DeviceMemory::default(),
7371            mtl_buffer: ptr::null_mut(),
7372        }
7373    }
7374}
7375
7376unsafe impl Send for ExportMetalBufferInfoEXT {}
7377unsafe impl Sync for ExportMetalBufferInfoEXT {}
7378
7379/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalCommandQueueInfoEXT.html>
7380#[repr(C)]
7381#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7382pub struct ExportMetalCommandQueueInfoEXT {
7383    pub s_type: StructureType,
7384    pub next: *const c_void,
7385    pub queue: Queue,
7386    pub mtl_command_queue: MTLCommandQueue_id,
7387}
7388
7389impl Default for ExportMetalCommandQueueInfoEXT {
7390    #[inline]
7391    fn default() -> Self {
7392        Self {
7393            s_type: StructureType::EXPORT_METAL_COMMAND_QUEUE_INFO_EXT,
7394            next: ptr::null(),
7395            queue: Queue::default(),
7396            mtl_command_queue: ptr::null_mut(),
7397        }
7398    }
7399}
7400
7401unsafe impl Send for ExportMetalCommandQueueInfoEXT {}
7402unsafe impl Sync for ExportMetalCommandQueueInfoEXT {}
7403
7404/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalDeviceInfoEXT.html>
7405#[repr(C)]
7406#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7407pub struct ExportMetalDeviceInfoEXT {
7408    pub s_type: StructureType,
7409    pub next: *const c_void,
7410    pub mtl_device: MTLDevice_id,
7411}
7412
7413impl Default for ExportMetalDeviceInfoEXT {
7414    #[inline]
7415    fn default() -> Self {
7416        Self {
7417            s_type: StructureType::EXPORT_METAL_DEVICE_INFO_EXT,
7418            next: ptr::null(),
7419            mtl_device: ptr::null_mut(),
7420        }
7421    }
7422}
7423
7424unsafe impl Send for ExportMetalDeviceInfoEXT {}
7425unsafe impl Sync for ExportMetalDeviceInfoEXT {}
7426
7427/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalIOSurfaceInfoEXT.html>
7428#[repr(C)]
7429#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7430pub struct ExportMetalIOSurfaceInfoEXT {
7431    pub s_type: StructureType,
7432    pub next: *const c_void,
7433    pub image: Image,
7434    pub io_surface: IOSurfaceRef,
7435}
7436
7437impl Default for ExportMetalIOSurfaceInfoEXT {
7438    #[inline]
7439    fn default() -> Self {
7440        Self {
7441            s_type: StructureType::EXPORT_METAL_IO_SURFACE_INFO_EXT,
7442            next: ptr::null(),
7443            image: Image::default(),
7444            io_surface: ptr::null_mut(),
7445        }
7446    }
7447}
7448
7449unsafe impl Send for ExportMetalIOSurfaceInfoEXT {}
7450unsafe impl Sync for ExportMetalIOSurfaceInfoEXT {}
7451
7452/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalObjectCreateInfoEXT.html>
7453#[repr(C)]
7454#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7455pub struct ExportMetalObjectCreateInfoEXT {
7456    pub s_type: StructureType,
7457    pub next: *const c_void,
7458    pub export_object_type: ExportMetalObjectTypeFlagsEXT,
7459}
7460
7461impl Default for ExportMetalObjectCreateInfoEXT {
7462    #[inline]
7463    fn default() -> Self {
7464        Self {
7465            s_type: StructureType::EXPORT_METAL_OBJECT_CREATE_INFO_EXT,
7466            next: ptr::null(),
7467            export_object_type: ExportMetalObjectTypeFlagsEXT::default(),
7468        }
7469    }
7470}
7471
7472unsafe impl Send for ExportMetalObjectCreateInfoEXT {}
7473unsafe impl Sync for ExportMetalObjectCreateInfoEXT {}
7474
7475/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalObjectsInfoEXT.html>
7476#[repr(C)]
7477#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7478pub struct ExportMetalObjectsInfoEXT {
7479    pub s_type: StructureType,
7480    pub next: *const c_void,
7481}
7482
7483impl Default for ExportMetalObjectsInfoEXT {
7484    #[inline]
7485    fn default() -> Self {
7486        Self {
7487            s_type: StructureType::EXPORT_METAL_OBJECTS_INFO_EXT,
7488            next: ptr::null(),
7489        }
7490    }
7491}
7492
7493unsafe impl Send for ExportMetalObjectsInfoEXT {}
7494unsafe impl Sync for ExportMetalObjectsInfoEXT {}
7495
7496/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalSharedEventInfoEXT.html>
7497#[repr(C)]
7498#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7499pub struct ExportMetalSharedEventInfoEXT {
7500    pub s_type: StructureType,
7501    pub next: *const c_void,
7502    pub semaphore: Semaphore,
7503    pub event: Event,
7504    pub mtl_shared_event: MTLSharedEvent_id,
7505}
7506
7507impl Default for ExportMetalSharedEventInfoEXT {
7508    #[inline]
7509    fn default() -> Self {
7510        Self {
7511            s_type: StructureType::EXPORT_METAL_SHARED_EVENT_INFO_EXT,
7512            next: ptr::null(),
7513            semaphore: Semaphore::default(),
7514            event: Event::default(),
7515            mtl_shared_event: ptr::null_mut(),
7516        }
7517    }
7518}
7519
7520unsafe impl Send for ExportMetalSharedEventInfoEXT {}
7521unsafe impl Sync for ExportMetalSharedEventInfoEXT {}
7522
7523/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalTextureInfoEXT.html>
7524#[repr(C)]
7525#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7526pub struct ExportMetalTextureInfoEXT {
7527    pub s_type: StructureType,
7528    pub next: *const c_void,
7529    pub image: Image,
7530    pub image_view: ImageView,
7531    pub buffer_view: BufferView,
7532    pub plane: ImageAspectFlags,
7533    pub mtl_texture: MTLTexture_id,
7534}
7535
7536impl Default for ExportMetalTextureInfoEXT {
7537    #[inline]
7538    fn default() -> Self {
7539        Self {
7540            s_type: StructureType::EXPORT_METAL_TEXTURE_INFO_EXT,
7541            next: ptr::null(),
7542            image: Image::default(),
7543            image_view: ImageView::default(),
7544            buffer_view: BufferView::default(),
7545            plane: ImageAspectFlags::default(),
7546            mtl_texture: ptr::null_mut(),
7547        }
7548    }
7549}
7550
7551unsafe impl Send for ExportMetalTextureInfoEXT {}
7552unsafe impl Sync for ExportMetalTextureInfoEXT {}
7553
7554/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreCreateInfo.html>
7555#[repr(C)]
7556#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7557pub struct ExportSemaphoreCreateInfo {
7558    pub s_type: StructureType,
7559    pub next: *const c_void,
7560    pub handle_types: ExternalSemaphoreHandleTypeFlags,
7561}
7562
7563impl Default for ExportSemaphoreCreateInfo {
7564    #[inline]
7565    fn default() -> Self {
7566        Self {
7567            s_type: StructureType::EXPORT_SEMAPHORE_CREATE_INFO,
7568            next: ptr::null(),
7569            handle_types: ExternalSemaphoreHandleTypeFlags::default(),
7570        }
7571    }
7572}
7573
7574unsafe impl Send for ExportSemaphoreCreateInfo {}
7575unsafe impl Sync for ExportSemaphoreCreateInfo {}
7576
7577/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreSciSyncInfoNV.html>
7578#[repr(C)]
7579#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7580pub struct ExportSemaphoreSciSyncInfoNV {
7581    pub s_type: StructureType,
7582    pub next: *const c_void,
7583    pub attributes: NvSciSyncAttrList,
7584}
7585
7586impl Default for ExportSemaphoreSciSyncInfoNV {
7587    #[inline]
7588    fn default() -> Self {
7589        Self {
7590            s_type: StructureType::EXPORT_SEMAPHORE_SCI_SYNC_INFO_NV,
7591            next: ptr::null(),
7592            attributes: ptr::null_mut(),
7593        }
7594    }
7595}
7596
7597unsafe impl Send for ExportSemaphoreSciSyncInfoNV {}
7598unsafe impl Sync for ExportSemaphoreSciSyncInfoNV {}
7599
7600/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreWin32HandleInfoKHR.html>
7601#[repr(C)]
7602#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7603pub struct ExportSemaphoreWin32HandleInfoKHR {
7604    pub s_type: StructureType,
7605    pub next: *const c_void,
7606    pub attributes: *const SECURITY_ATTRIBUTES,
7607    pub dw_access: DWORD,
7608    pub name: LPCWSTR,
7609}
7610
7611impl Default for ExportSemaphoreWin32HandleInfoKHR {
7612    #[inline]
7613    fn default() -> Self {
7614        Self {
7615            s_type: StructureType::EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
7616            next: ptr::null(),
7617            attributes: ptr::null(),
7618            dw_access: DWORD::default(),
7619            name: ptr::null_mut(),
7620        }
7621    }
7622}
7623
7624unsafe impl Send for ExportSemaphoreWin32HandleInfoKHR {}
7625unsafe impl Sync for ExportSemaphoreWin32HandleInfoKHR {}
7626
7627/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExtensionProperties.html>
7628#[repr(C)]
7629#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7630pub struct ExtensionProperties {
7631    pub extension_name: StringArray<MAX_EXTENSION_NAME_SIZE>,
7632    pub spec_version: u32,
7633}
7634
7635/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExtent2D.html>
7636#[repr(C)]
7637#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7638pub struct Extent2D {
7639    pub width: u32,
7640    pub height: u32,
7641}
7642
7643/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExtent3D.html>
7644#[repr(C)]
7645#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7646pub struct Extent3D {
7647    pub width: u32,
7648    pub height: u32,
7649    pub depth: u32,
7650}
7651
7652/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalBufferProperties.html>
7653#[repr(C)]
7654#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7655pub struct ExternalBufferProperties {
7656    pub s_type: StructureType,
7657    pub next: *mut c_void,
7658    pub external_memory_properties: ExternalMemoryProperties,
7659}
7660
7661impl Default for ExternalBufferProperties {
7662    #[inline]
7663    fn default() -> Self {
7664        Self {
7665            s_type: StructureType::EXTERNAL_BUFFER_PROPERTIES,
7666            next: ptr::null_mut(),
7667            external_memory_properties: ExternalMemoryProperties::default(),
7668        }
7669    }
7670}
7671
7672unsafe impl Send for ExternalBufferProperties {}
7673unsafe impl Sync for ExternalBufferProperties {}
7674
7675/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalComputeQueueCreateInfoNV.html>
7676#[repr(C)]
7677#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7678pub struct ExternalComputeQueueCreateInfoNV {
7679    pub s_type: StructureType,
7680    pub next: *const c_void,
7681    pub preferred_queue: Queue,
7682}
7683
7684impl Default for ExternalComputeQueueCreateInfoNV {
7685    #[inline]
7686    fn default() -> Self {
7687        Self {
7688            s_type: StructureType::EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV,
7689            next: ptr::null(),
7690            preferred_queue: Queue::default(),
7691        }
7692    }
7693}
7694
7695unsafe impl Send for ExternalComputeQueueCreateInfoNV {}
7696unsafe impl Sync for ExternalComputeQueueCreateInfoNV {}
7697
7698/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalComputeQueueDataParamsNV.html>
7699#[repr(C)]
7700#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7701pub struct ExternalComputeQueueDataParamsNV {
7702    pub s_type: StructureType,
7703    pub next: *const c_void,
7704    pub device_index: u32,
7705}
7706
7707impl Default for ExternalComputeQueueDataParamsNV {
7708    #[inline]
7709    fn default() -> Self {
7710        Self {
7711            s_type: StructureType::EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV,
7712            next: ptr::null(),
7713            device_index: u32::default(),
7714        }
7715    }
7716}
7717
7718unsafe impl Send for ExternalComputeQueueDataParamsNV {}
7719unsafe impl Sync for ExternalComputeQueueDataParamsNV {}
7720
7721/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalComputeQueueDeviceCreateInfoNV.html>
7722#[repr(C)]
7723#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7724pub struct ExternalComputeQueueDeviceCreateInfoNV {
7725    pub s_type: StructureType,
7726    pub next: *const c_void,
7727    pub reserved_external_queues: u32,
7728}
7729
7730impl Default for ExternalComputeQueueDeviceCreateInfoNV {
7731    #[inline]
7732    fn default() -> Self {
7733        Self {
7734            s_type: StructureType::EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV,
7735            next: ptr::null(),
7736            reserved_external_queues: u32::default(),
7737        }
7738    }
7739}
7740
7741unsafe impl Send for ExternalComputeQueueDeviceCreateInfoNV {}
7742unsafe impl Sync for ExternalComputeQueueDeviceCreateInfoNV {}
7743
7744/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFenceProperties.html>
7745#[repr(C)]
7746#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7747pub struct ExternalFenceProperties {
7748    pub s_type: StructureType,
7749    pub next: *mut c_void,
7750    pub export_from_imported_handle_types: ExternalFenceHandleTypeFlags,
7751    pub compatible_handle_types: ExternalFenceHandleTypeFlags,
7752    pub external_fence_features: ExternalFenceFeatureFlags,
7753}
7754
7755impl Default for ExternalFenceProperties {
7756    #[inline]
7757    fn default() -> Self {
7758        Self {
7759            s_type: StructureType::EXTERNAL_FENCE_PROPERTIES,
7760            next: ptr::null_mut(),
7761            export_from_imported_handle_types: ExternalFenceHandleTypeFlags::default(),
7762            compatible_handle_types: ExternalFenceHandleTypeFlags::default(),
7763            external_fence_features: ExternalFenceFeatureFlags::default(),
7764        }
7765    }
7766}
7767
7768unsafe impl Send for ExternalFenceProperties {}
7769unsafe impl Sync for ExternalFenceProperties {}
7770
7771/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFormatANDROID.html>
7772#[repr(C)]
7773#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7774pub struct ExternalFormatANDROID {
7775    pub s_type: StructureType,
7776    pub next: *mut c_void,
7777    pub external_format: u64,
7778}
7779
7780impl Default for ExternalFormatANDROID {
7781    #[inline]
7782    fn default() -> Self {
7783        Self {
7784            s_type: StructureType::EXTERNAL_FORMAT_ANDROID,
7785            next: ptr::null_mut(),
7786            external_format: u64::default(),
7787        }
7788    }
7789}
7790
7791unsafe impl Send for ExternalFormatANDROID {}
7792unsafe impl Sync for ExternalFormatANDROID {}
7793
7794/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFormatOHOS.html>
7795#[repr(C)]
7796#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7797pub struct ExternalFormatOHOS {
7798    pub s_type: StructureType,
7799    pub next: *mut c_void,
7800    pub external_format: u64,
7801}
7802
7803impl Default for ExternalFormatOHOS {
7804    #[inline]
7805    fn default() -> Self {
7806        Self {
7807            s_type: StructureType::EXTERNAL_FORMAT_OHOS,
7808            next: ptr::null_mut(),
7809            external_format: u64::default(),
7810        }
7811    }
7812}
7813
7814unsafe impl Send for ExternalFormatOHOS {}
7815unsafe impl Sync for ExternalFormatOHOS {}
7816
7817/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFormatQNX.html>
7818#[repr(C)]
7819#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7820pub struct ExternalFormatQNX {
7821    pub s_type: StructureType,
7822    pub next: *mut c_void,
7823    pub external_format: u64,
7824}
7825
7826impl Default for ExternalFormatQNX {
7827    #[inline]
7828    fn default() -> Self {
7829        Self {
7830            s_type: StructureType::EXTERNAL_FORMAT_QNX,
7831            next: ptr::null_mut(),
7832            external_format: u64::default(),
7833        }
7834    }
7835}
7836
7837unsafe impl Send for ExternalFormatQNX {}
7838unsafe impl Sync for ExternalFormatQNX {}
7839
7840/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalImageFormatProperties.html>
7841#[repr(C)]
7842#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7843pub struct ExternalImageFormatProperties {
7844    pub s_type: StructureType,
7845    pub next: *mut c_void,
7846    pub external_memory_properties: ExternalMemoryProperties,
7847}
7848
7849impl Default for ExternalImageFormatProperties {
7850    #[inline]
7851    fn default() -> Self {
7852        Self {
7853            s_type: StructureType::EXTERNAL_IMAGE_FORMAT_PROPERTIES,
7854            next: ptr::null_mut(),
7855            external_memory_properties: ExternalMemoryProperties::default(),
7856        }
7857    }
7858}
7859
7860unsafe impl Send for ExternalImageFormatProperties {}
7861unsafe impl Sync for ExternalImageFormatProperties {}
7862
7863/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalImageFormatPropertiesNV.html>
7864#[repr(C)]
7865#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7866pub struct ExternalImageFormatPropertiesNV {
7867    pub image_format_properties: ImageFormatProperties,
7868    pub external_memory_features: ExternalMemoryFeatureFlagsNV,
7869    pub export_from_imported_handle_types: ExternalMemoryHandleTypeFlagsNV,
7870    pub compatible_handle_types: ExternalMemoryHandleTypeFlagsNV,
7871}
7872
7873/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryAcquireUnmodifiedEXT.html>
7874#[repr(C)]
7875#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7876pub struct ExternalMemoryAcquireUnmodifiedEXT {
7877    pub s_type: StructureType,
7878    pub next: *const c_void,
7879    pub acquire_unmodified_memory: Bool32,
7880}
7881
7882impl Default for ExternalMemoryAcquireUnmodifiedEXT {
7883    #[inline]
7884    fn default() -> Self {
7885        Self {
7886            s_type: StructureType::EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT,
7887            next: ptr::null(),
7888            acquire_unmodified_memory: Bool32::default(),
7889        }
7890    }
7891}
7892
7893unsafe impl Send for ExternalMemoryAcquireUnmodifiedEXT {}
7894unsafe impl Sync for ExternalMemoryAcquireUnmodifiedEXT {}
7895
7896/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryBufferCreateInfo.html>
7897#[repr(C)]
7898#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7899pub struct ExternalMemoryBufferCreateInfo {
7900    pub s_type: StructureType,
7901    pub next: *const c_void,
7902    pub handle_types: ExternalMemoryHandleTypeFlags,
7903}
7904
7905impl Default for ExternalMemoryBufferCreateInfo {
7906    #[inline]
7907    fn default() -> Self {
7908        Self {
7909            s_type: StructureType::EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
7910            next: ptr::null(),
7911            handle_types: ExternalMemoryHandleTypeFlags::default(),
7912        }
7913    }
7914}
7915
7916unsafe impl Send for ExternalMemoryBufferCreateInfo {}
7917unsafe impl Sync for ExternalMemoryBufferCreateInfo {}
7918
7919/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfo.html>
7920#[repr(C)]
7921#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7922pub struct ExternalMemoryImageCreateInfo {
7923    pub s_type: StructureType,
7924    pub next: *const c_void,
7925    pub handle_types: ExternalMemoryHandleTypeFlags,
7926}
7927
7928impl Default for ExternalMemoryImageCreateInfo {
7929    #[inline]
7930    fn default() -> Self {
7931        Self {
7932            s_type: StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
7933            next: ptr::null(),
7934            handle_types: ExternalMemoryHandleTypeFlags::default(),
7935        }
7936    }
7937}
7938
7939unsafe impl Send for ExternalMemoryImageCreateInfo {}
7940unsafe impl Sync for ExternalMemoryImageCreateInfo {}
7941
7942/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfoNV.html>
7943#[repr(C)]
7944#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7945pub struct ExternalMemoryImageCreateInfoNV {
7946    pub s_type: StructureType,
7947    pub next: *const c_void,
7948    pub handle_types: ExternalMemoryHandleTypeFlagsNV,
7949}
7950
7951impl Default for ExternalMemoryImageCreateInfoNV {
7952    #[inline]
7953    fn default() -> Self {
7954        Self {
7955            s_type: StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
7956            next: ptr::null(),
7957            handle_types: ExternalMemoryHandleTypeFlagsNV::default(),
7958        }
7959    }
7960}
7961
7962unsafe impl Send for ExternalMemoryImageCreateInfoNV {}
7963unsafe impl Sync for ExternalMemoryImageCreateInfoNV {}
7964
7965/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryProperties.html>
7966#[repr(C)]
7967#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7968pub struct ExternalMemoryProperties {
7969    pub external_memory_features: ExternalMemoryFeatureFlags,
7970    pub export_from_imported_handle_types: ExternalMemoryHandleTypeFlags,
7971    pub compatible_handle_types: ExternalMemoryHandleTypeFlags,
7972}
7973
7974/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryTensorCreateInfoARM.html>
7975#[repr(C)]
7976#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7977pub struct ExternalMemoryTensorCreateInfoARM {
7978    pub s_type: StructureType,
7979    pub next: *const c_void,
7980    pub handle_types: ExternalMemoryHandleTypeFlags,
7981}
7982
7983impl Default for ExternalMemoryTensorCreateInfoARM {
7984    #[inline]
7985    fn default() -> Self {
7986        Self {
7987            s_type: StructureType::EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM,
7988            next: ptr::null(),
7989            handle_types: ExternalMemoryHandleTypeFlags::default(),
7990        }
7991    }
7992}
7993
7994unsafe impl Send for ExternalMemoryTensorCreateInfoARM {}
7995unsafe impl Sync for ExternalMemoryTensorCreateInfoARM {}
7996
7997/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalSemaphoreProperties.html>
7998#[repr(C)]
7999#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8000pub struct ExternalSemaphoreProperties {
8001    pub s_type: StructureType,
8002    pub next: *mut c_void,
8003    pub export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags,
8004    pub compatible_handle_types: ExternalSemaphoreHandleTypeFlags,
8005    pub external_semaphore_features: ExternalSemaphoreFeatureFlags,
8006}
8007
8008impl Default for ExternalSemaphoreProperties {
8009    #[inline]
8010    fn default() -> Self {
8011        Self {
8012            s_type: StructureType::EXTERNAL_SEMAPHORE_PROPERTIES,
8013            next: ptr::null_mut(),
8014            export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
8015            compatible_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
8016            external_semaphore_features: ExternalSemaphoreFeatureFlags::default(),
8017        }
8018    }
8019}
8020
8021unsafe impl Send for ExternalSemaphoreProperties {}
8022unsafe impl Sync for ExternalSemaphoreProperties {}
8023
8024/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalTensorPropertiesARM.html>
8025#[repr(C)]
8026#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8027pub struct ExternalTensorPropertiesARM {
8028    pub s_type: StructureType,
8029    pub next: *const c_void,
8030    pub external_memory_properties: ExternalMemoryProperties,
8031}
8032
8033impl Default for ExternalTensorPropertiesARM {
8034    #[inline]
8035    fn default() -> Self {
8036        Self {
8037            s_type: StructureType::EXTERNAL_TENSOR_PROPERTIES_ARM,
8038            next: ptr::null(),
8039            external_memory_properties: ExternalMemoryProperties::default(),
8040        }
8041    }
8042}
8043
8044unsafe impl Send for ExternalTensorPropertiesARM {}
8045unsafe impl Sync for ExternalTensorPropertiesARM {}
8046
8047/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceCreateInfo.html>
8048#[repr(C)]
8049#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8050pub struct FenceCreateInfo {
8051    pub s_type: StructureType,
8052    pub next: *const c_void,
8053    pub flags: FenceCreateFlags,
8054}
8055
8056impl Default for FenceCreateInfo {
8057    #[inline]
8058    fn default() -> Self {
8059        Self {
8060            s_type: StructureType::FENCE_CREATE_INFO,
8061            next: ptr::null(),
8062            flags: FenceCreateFlags::default(),
8063        }
8064    }
8065}
8066
8067unsafe impl Send for FenceCreateInfo {}
8068unsafe impl Sync for FenceCreateInfo {}
8069
8070/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceGetFdInfoKHR.html>
8071#[repr(C)]
8072#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8073pub struct FenceGetFdInfoKHR {
8074    pub s_type: StructureType,
8075    pub next: *const c_void,
8076    pub fence: Fence,
8077    pub handle_type: ExternalFenceHandleTypeFlags,
8078}
8079
8080impl Default for FenceGetFdInfoKHR {
8081    #[inline]
8082    fn default() -> Self {
8083        Self {
8084            s_type: StructureType::FENCE_GET_FD_INFO_KHR,
8085            next: ptr::null(),
8086            fence: Fence::default(),
8087            handle_type: ExternalFenceHandleTypeFlags::default(),
8088        }
8089    }
8090}
8091
8092unsafe impl Send for FenceGetFdInfoKHR {}
8093unsafe impl Sync for FenceGetFdInfoKHR {}
8094
8095/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceGetSciSyncInfoNV.html>
8096#[repr(C)]
8097#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8098pub struct FenceGetSciSyncInfoNV {
8099    pub s_type: StructureType,
8100    pub next: *const c_void,
8101    pub fence: Fence,
8102    pub handle_type: ExternalFenceHandleTypeFlags,
8103}
8104
8105impl Default for FenceGetSciSyncInfoNV {
8106    #[inline]
8107    fn default() -> Self {
8108        Self {
8109            s_type: StructureType::FENCE_GET_SCI_SYNC_INFO_NV,
8110            next: ptr::null(),
8111            fence: Fence::default(),
8112            handle_type: ExternalFenceHandleTypeFlags::default(),
8113        }
8114    }
8115}
8116
8117unsafe impl Send for FenceGetSciSyncInfoNV {}
8118unsafe impl Sync for FenceGetSciSyncInfoNV {}
8119
8120/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceGetWin32HandleInfoKHR.html>
8121#[repr(C)]
8122#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8123pub struct FenceGetWin32HandleInfoKHR {
8124    pub s_type: StructureType,
8125    pub next: *const c_void,
8126    pub fence: Fence,
8127    pub handle_type: ExternalFenceHandleTypeFlags,
8128}
8129
8130impl Default for FenceGetWin32HandleInfoKHR {
8131    #[inline]
8132    fn default() -> Self {
8133        Self {
8134            s_type: StructureType::FENCE_GET_WIN32_HANDLE_INFO_KHR,
8135            next: ptr::null(),
8136            fence: Fence::default(),
8137            handle_type: ExternalFenceHandleTypeFlags::default(),
8138        }
8139    }
8140}
8141
8142unsafe impl Send for FenceGetWin32HandleInfoKHR {}
8143unsafe impl Sync for FenceGetWin32HandleInfoKHR {}
8144
8145/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFilterCubicImageViewImageFormatPropertiesEXT.html>
8146#[repr(C)]
8147#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8148pub struct FilterCubicImageViewImageFormatPropertiesEXT {
8149    pub s_type: StructureType,
8150    pub next: *mut c_void,
8151    pub filter_cubic: Bool32,
8152    pub filter_cubic_minmax: Bool32,
8153}
8154
8155impl Default for FilterCubicImageViewImageFormatPropertiesEXT {
8156    #[inline]
8157    fn default() -> Self {
8158        Self {
8159            s_type: StructureType::FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT,
8160            next: ptr::null_mut(),
8161            filter_cubic: Bool32::default(),
8162            filter_cubic_minmax: Bool32::default(),
8163        }
8164    }
8165}
8166
8167unsafe impl Send for FilterCubicImageViewImageFormatPropertiesEXT {}
8168unsafe impl Sync for FilterCubicImageViewImageFormatPropertiesEXT {}
8169
8170/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties.html>
8171#[repr(C)]
8172#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8173pub struct FormatProperties {
8174    pub linear_tiling_features: FormatFeatureFlags,
8175    pub optimal_tiling_features: FormatFeatureFlags,
8176    pub buffer_features: FormatFeatureFlags,
8177}
8178
8179/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties2.html>
8180#[repr(C)]
8181#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8182pub struct FormatProperties2 {
8183    pub s_type: StructureType,
8184    pub next: *mut c_void,
8185    pub format_properties: FormatProperties,
8186}
8187
8188impl Default for FormatProperties2 {
8189    #[inline]
8190    fn default() -> Self {
8191        Self {
8192            s_type: StructureType::FORMAT_PROPERTIES_2,
8193            next: ptr::null_mut(),
8194            format_properties: FormatProperties::default(),
8195        }
8196    }
8197}
8198
8199unsafe impl Send for FormatProperties2 {}
8200unsafe impl Sync for FormatProperties2 {}
8201
8202/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties3.html>
8203#[repr(C)]
8204#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8205pub struct FormatProperties3 {
8206    pub s_type: StructureType,
8207    pub next: *mut c_void,
8208    pub linear_tiling_features: FormatFeatureFlags2,
8209    pub optimal_tiling_features: FormatFeatureFlags2,
8210    pub buffer_features: FormatFeatureFlags2,
8211}
8212
8213impl Default for FormatProperties3 {
8214    #[inline]
8215    fn default() -> Self {
8216        Self {
8217            s_type: StructureType::FORMAT_PROPERTIES_3,
8218            next: ptr::null_mut(),
8219            linear_tiling_features: FormatFeatureFlags2::default(),
8220            optimal_tiling_features: FormatFeatureFlags2::default(),
8221            buffer_features: FormatFeatureFlags2::default(),
8222        }
8223    }
8224}
8225
8226unsafe impl Send for FormatProperties3 {}
8227unsafe impl Sync for FormatProperties3 {}
8228
8229/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFragmentShadingRateAttachmentInfoKHR.html>
8230#[repr(C)]
8231#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8232pub struct FragmentShadingRateAttachmentInfoKHR {
8233    pub s_type: StructureType,
8234    pub next: *const c_void,
8235    pub fragment_shading_rate_attachment: *const AttachmentReference2,
8236    pub shading_rate_attachment_texel_size: Extent2D,
8237}
8238
8239impl Default for FragmentShadingRateAttachmentInfoKHR {
8240    #[inline]
8241    fn default() -> Self {
8242        Self {
8243            s_type: StructureType::FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,
8244            next: ptr::null(),
8245            fragment_shading_rate_attachment: ptr::null(),
8246            shading_rate_attachment_texel_size: Extent2D::default(),
8247        }
8248    }
8249}
8250
8251unsafe impl Send for FragmentShadingRateAttachmentInfoKHR {}
8252unsafe impl Sync for FragmentShadingRateAttachmentInfoKHR {}
8253
8254/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFrameBoundaryEXT.html>
8255#[repr(C)]
8256#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8257pub struct FrameBoundaryEXT {
8258    pub s_type: StructureType,
8259    pub next: *const c_void,
8260    pub flags: FrameBoundaryFlagsEXT,
8261    pub frame_id: u64,
8262    pub image_count: u32,
8263    pub images: *const Image,
8264    pub buffer_count: u32,
8265    pub buffers: *const Buffer,
8266    pub tag_name: u64,
8267    pub tag_size: usize,
8268    pub tag: *const c_void,
8269}
8270
8271impl Default for FrameBoundaryEXT {
8272    #[inline]
8273    fn default() -> Self {
8274        Self {
8275            s_type: StructureType::FRAME_BOUNDARY_EXT,
8276            next: ptr::null(),
8277            flags: FrameBoundaryFlagsEXT::default(),
8278            frame_id: u64::default(),
8279            image_count: u32::default(),
8280            images: ptr::null(),
8281            buffer_count: u32::default(),
8282            buffers: ptr::null(),
8283            tag_name: u64::default(),
8284            tag_size: usize::default(),
8285            tag: ptr::null(),
8286        }
8287    }
8288}
8289
8290unsafe impl Send for FrameBoundaryEXT {}
8291unsafe impl Sync for FrameBoundaryEXT {}
8292
8293/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFrameBoundaryTensorsARM.html>
8294#[repr(C)]
8295#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8296pub struct FrameBoundaryTensorsARM {
8297    pub s_type: StructureType,
8298    pub next: *const c_void,
8299    pub tensor_count: u32,
8300    pub tensors: *const TensorARM,
8301}
8302
8303impl Default for FrameBoundaryTensorsARM {
8304    #[inline]
8305    fn default() -> Self {
8306        Self {
8307            s_type: StructureType::FRAME_BOUNDARY_TENSORS_ARM,
8308            next: ptr::null(),
8309            tensor_count: u32::default(),
8310            tensors: ptr::null(),
8311        }
8312    }
8313}
8314
8315unsafe impl Send for FrameBoundaryTensorsARM {}
8316unsafe impl Sync for FrameBoundaryTensorsARM {}
8317
8318/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentImageInfo.html>
8319#[repr(C)]
8320#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8321pub struct FramebufferAttachmentImageInfo {
8322    pub s_type: StructureType,
8323    pub next: *const c_void,
8324    pub flags: ImageCreateFlags,
8325    pub usage: ImageUsageFlags,
8326    pub width: u32,
8327    pub height: u32,
8328    pub layer_count: u32,
8329    pub view_format_count: u32,
8330    pub view_formats: *const Format,
8331}
8332
8333impl Default for FramebufferAttachmentImageInfo {
8334    #[inline]
8335    fn default() -> Self {
8336        Self {
8337            s_type: StructureType::FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,
8338            next: ptr::null(),
8339            flags: ImageCreateFlags::default(),
8340            usage: ImageUsageFlags::default(),
8341            width: u32::default(),
8342            height: u32::default(),
8343            layer_count: u32::default(),
8344            view_format_count: u32::default(),
8345            view_formats: ptr::null(),
8346        }
8347    }
8348}
8349
8350unsafe impl Send for FramebufferAttachmentImageInfo {}
8351unsafe impl Sync for FramebufferAttachmentImageInfo {}
8352
8353/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentsCreateInfo.html>
8354#[repr(C)]
8355#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8356pub struct FramebufferAttachmentsCreateInfo {
8357    pub s_type: StructureType,
8358    pub next: *const c_void,
8359    pub attachment_image_info_count: u32,
8360    pub attachment_image_infos: *const FramebufferAttachmentImageInfo,
8361}
8362
8363impl Default for FramebufferAttachmentsCreateInfo {
8364    #[inline]
8365    fn default() -> Self {
8366        Self {
8367            s_type: StructureType::FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,
8368            next: ptr::null(),
8369            attachment_image_info_count: u32::default(),
8370            attachment_image_infos: ptr::null(),
8371        }
8372    }
8373}
8374
8375unsafe impl Send for FramebufferAttachmentsCreateInfo {}
8376unsafe impl Sync for FramebufferAttachmentsCreateInfo {}
8377
8378/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferCreateInfo.html>
8379#[repr(C)]
8380#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8381pub struct FramebufferCreateInfo {
8382    pub s_type: StructureType,
8383    pub next: *const c_void,
8384    pub flags: FramebufferCreateFlags,
8385    pub render_pass: RenderPass,
8386    pub attachment_count: u32,
8387    pub attachments: *const ImageView,
8388    pub width: u32,
8389    pub height: u32,
8390    pub layers: u32,
8391}
8392
8393impl Default for FramebufferCreateInfo {
8394    #[inline]
8395    fn default() -> Self {
8396        Self {
8397            s_type: StructureType::FRAMEBUFFER_CREATE_INFO,
8398            next: ptr::null(),
8399            flags: FramebufferCreateFlags::default(),
8400            render_pass: RenderPass::default(),
8401            attachment_count: u32::default(),
8402            attachments: ptr::null(),
8403            width: u32::default(),
8404            height: u32::default(),
8405            layers: u32::default(),
8406        }
8407    }
8408}
8409
8410unsafe impl Send for FramebufferCreateInfo {}
8411unsafe impl Sync for FramebufferCreateInfo {}
8412
8413/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferMixedSamplesCombinationNV.html>
8414#[repr(C)]
8415#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8416pub struct FramebufferMixedSamplesCombinationNV {
8417    pub s_type: StructureType,
8418    pub next: *mut c_void,
8419    pub coverage_reduction_mode: CoverageReductionModeNV,
8420    pub rasterization_samples: SampleCountFlags,
8421    pub depth_stencil_samples: SampleCountFlags,
8422    pub color_samples: SampleCountFlags,
8423}
8424
8425impl Default for FramebufferMixedSamplesCombinationNV {
8426    #[inline]
8427    fn default() -> Self {
8428        Self {
8429            s_type: StructureType::FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV,
8430            next: ptr::null_mut(),
8431            coverage_reduction_mode: CoverageReductionModeNV::default(),
8432            rasterization_samples: SampleCountFlags::default(),
8433            depth_stencil_samples: SampleCountFlags::default(),
8434            color_samples: SampleCountFlags::default(),
8435        }
8436    }
8437}
8438
8439unsafe impl Send for FramebufferMixedSamplesCombinationNV {}
8440unsafe impl Sync for FramebufferMixedSamplesCombinationNV {}
8441
8442/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsInfoEXT.html>
8443#[repr(C)]
8444#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8445pub struct GeneratedCommandsInfoEXT {
8446    pub s_type: StructureType,
8447    pub next: *const c_void,
8448    pub shader_stages: ShaderStageFlags,
8449    pub indirect_execution_set: IndirectExecutionSetEXT,
8450    pub indirect_commands_layout: IndirectCommandsLayoutEXT,
8451    pub indirect_address: DeviceAddress,
8452    pub indirect_address_size: DeviceSize,
8453    pub preprocess_address: DeviceAddress,
8454    pub preprocess_size: DeviceSize,
8455    pub max_sequence_count: u32,
8456    pub sequence_count_address: DeviceAddress,
8457    pub max_draw_count: u32,
8458}
8459
8460impl Default for GeneratedCommandsInfoEXT {
8461    #[inline]
8462    fn default() -> Self {
8463        Self {
8464            s_type: StructureType::GENERATED_COMMANDS_INFO_EXT,
8465            next: ptr::null(),
8466            shader_stages: ShaderStageFlags::default(),
8467            indirect_execution_set: IndirectExecutionSetEXT::default(),
8468            indirect_commands_layout: IndirectCommandsLayoutEXT::default(),
8469            indirect_address: DeviceAddress::default(),
8470            indirect_address_size: DeviceSize::default(),
8471            preprocess_address: DeviceAddress::default(),
8472            preprocess_size: DeviceSize::default(),
8473            max_sequence_count: u32::default(),
8474            sequence_count_address: DeviceAddress::default(),
8475            max_draw_count: u32::default(),
8476        }
8477    }
8478}
8479
8480unsafe impl Send for GeneratedCommandsInfoEXT {}
8481unsafe impl Sync for GeneratedCommandsInfoEXT {}
8482
8483/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsInfoNV.html>
8484#[repr(C)]
8485#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8486pub struct GeneratedCommandsInfoNV {
8487    pub s_type: StructureType,
8488    pub next: *const c_void,
8489    pub pipeline_bind_point: PipelineBindPoint,
8490    pub pipeline: Pipeline,
8491    pub indirect_commands_layout: IndirectCommandsLayoutNV,
8492    pub stream_count: u32,
8493    pub streams: *const IndirectCommandsStreamNV,
8494    pub sequences_count: u32,
8495    pub preprocess_buffer: Buffer,
8496    pub preprocess_offset: DeviceSize,
8497    pub preprocess_size: DeviceSize,
8498    pub sequences_count_buffer: Buffer,
8499    pub sequences_count_offset: DeviceSize,
8500    pub sequences_index_buffer: Buffer,
8501    pub sequences_index_offset: DeviceSize,
8502}
8503
8504impl Default for GeneratedCommandsInfoNV {
8505    #[inline]
8506    fn default() -> Self {
8507        Self {
8508            s_type: StructureType::GENERATED_COMMANDS_INFO_NV,
8509            next: ptr::null(),
8510            pipeline_bind_point: PipelineBindPoint::default(),
8511            pipeline: Pipeline::default(),
8512            indirect_commands_layout: IndirectCommandsLayoutNV::default(),
8513            stream_count: u32::default(),
8514            streams: ptr::null(),
8515            sequences_count: u32::default(),
8516            preprocess_buffer: Buffer::default(),
8517            preprocess_offset: DeviceSize::default(),
8518            preprocess_size: DeviceSize::default(),
8519            sequences_count_buffer: Buffer::default(),
8520            sequences_count_offset: DeviceSize::default(),
8521            sequences_index_buffer: Buffer::default(),
8522            sequences_index_offset: DeviceSize::default(),
8523        }
8524    }
8525}
8526
8527unsafe impl Send for GeneratedCommandsInfoNV {}
8528unsafe impl Sync for GeneratedCommandsInfoNV {}
8529
8530/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsMemoryRequirementsInfoEXT.html>
8531#[repr(C)]
8532#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8533pub struct GeneratedCommandsMemoryRequirementsInfoEXT {
8534    pub s_type: StructureType,
8535    pub next: *const c_void,
8536    pub indirect_execution_set: IndirectExecutionSetEXT,
8537    pub indirect_commands_layout: IndirectCommandsLayoutEXT,
8538    pub max_sequence_count: u32,
8539    pub max_draw_count: u32,
8540}
8541
8542impl Default for GeneratedCommandsMemoryRequirementsInfoEXT {
8543    #[inline]
8544    fn default() -> Self {
8545        Self {
8546            s_type: StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT,
8547            next: ptr::null(),
8548            indirect_execution_set: IndirectExecutionSetEXT::default(),
8549            indirect_commands_layout: IndirectCommandsLayoutEXT::default(),
8550            max_sequence_count: u32::default(),
8551            max_draw_count: u32::default(),
8552        }
8553    }
8554}
8555
8556unsafe impl Send for GeneratedCommandsMemoryRequirementsInfoEXT {}
8557unsafe impl Sync for GeneratedCommandsMemoryRequirementsInfoEXT {}
8558
8559/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsMemoryRequirementsInfoNV.html>
8560#[repr(C)]
8561#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8562pub struct GeneratedCommandsMemoryRequirementsInfoNV {
8563    pub s_type: StructureType,
8564    pub next: *const c_void,
8565    pub pipeline_bind_point: PipelineBindPoint,
8566    pub pipeline: Pipeline,
8567    pub indirect_commands_layout: IndirectCommandsLayoutNV,
8568    pub max_sequences_count: u32,
8569}
8570
8571impl Default for GeneratedCommandsMemoryRequirementsInfoNV {
8572    #[inline]
8573    fn default() -> Self {
8574        Self {
8575            s_type: StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV,
8576            next: ptr::null(),
8577            pipeline_bind_point: PipelineBindPoint::default(),
8578            pipeline: Pipeline::default(),
8579            indirect_commands_layout: IndirectCommandsLayoutNV::default(),
8580            max_sequences_count: u32::default(),
8581        }
8582    }
8583}
8584
8585unsafe impl Send for GeneratedCommandsMemoryRequirementsInfoNV {}
8586unsafe impl Sync for GeneratedCommandsMemoryRequirementsInfoNV {}
8587
8588/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsPipelineInfoEXT.html>
8589#[repr(C)]
8590#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8591pub struct GeneratedCommandsPipelineInfoEXT {
8592    pub s_type: StructureType,
8593    pub next: *mut c_void,
8594    pub pipeline: Pipeline,
8595}
8596
8597impl Default for GeneratedCommandsPipelineInfoEXT {
8598    #[inline]
8599    fn default() -> Self {
8600        Self {
8601            s_type: StructureType::GENERATED_COMMANDS_PIPELINE_INFO_EXT,
8602            next: ptr::null_mut(),
8603            pipeline: Pipeline::default(),
8604        }
8605    }
8606}
8607
8608unsafe impl Send for GeneratedCommandsPipelineInfoEXT {}
8609unsafe impl Sync for GeneratedCommandsPipelineInfoEXT {}
8610
8611/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsShaderInfoEXT.html>
8612#[repr(C)]
8613#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8614pub struct GeneratedCommandsShaderInfoEXT {
8615    pub s_type: StructureType,
8616    pub next: *mut c_void,
8617    pub shader_count: u32,
8618    pub shaders: *const ShaderEXT,
8619}
8620
8621impl Default for GeneratedCommandsShaderInfoEXT {
8622    #[inline]
8623    fn default() -> Self {
8624        Self {
8625            s_type: StructureType::GENERATED_COMMANDS_SHADER_INFO_EXT,
8626            next: ptr::null_mut(),
8627            shader_count: u32::default(),
8628            shaders: ptr::null(),
8629        }
8630    }
8631}
8632
8633unsafe impl Send for GeneratedCommandsShaderInfoEXT {}
8634unsafe impl Sync for GeneratedCommandsShaderInfoEXT {}
8635
8636/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryAABBNV.html>
8637#[repr(C)]
8638#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8639pub struct GeometryAABBNV {
8640    pub s_type: StructureType,
8641    pub next: *const c_void,
8642    pub aabb_data: Buffer,
8643    pub num_aab_bs: u32,
8644    pub stride: u32,
8645    pub offset: DeviceSize,
8646}
8647
8648impl Default for GeometryAABBNV {
8649    #[inline]
8650    fn default() -> Self {
8651        Self {
8652            s_type: StructureType::GEOMETRY_AABB_NV,
8653            next: ptr::null(),
8654            aabb_data: Buffer::default(),
8655            num_aab_bs: u32::default(),
8656            stride: u32::default(),
8657            offset: DeviceSize::default(),
8658        }
8659    }
8660}
8661
8662unsafe impl Send for GeometryAABBNV {}
8663unsafe impl Sync for GeometryAABBNV {}
8664
8665/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryDataNV.html>
8666#[repr(C)]
8667#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8668pub struct GeometryDataNV {
8669    pub triangles: GeometryTrianglesNV,
8670    pub aabbs: GeometryAABBNV,
8671}
8672
8673/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryNV.html>
8674#[repr(C)]
8675#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8676pub struct GeometryNV {
8677    pub s_type: StructureType,
8678    pub next: *const c_void,
8679    pub geometry_type: GeometryTypeKHR,
8680    pub geometry: GeometryDataNV,
8681    pub flags: GeometryFlagsKHR,
8682}
8683
8684impl Default for GeometryNV {
8685    #[inline]
8686    fn default() -> Self {
8687        Self {
8688            s_type: StructureType::GEOMETRY_NV,
8689            next: ptr::null(),
8690            geometry_type: GeometryTypeKHR::default(),
8691            geometry: GeometryDataNV::default(),
8692            flags: GeometryFlagsKHR::default(),
8693        }
8694    }
8695}
8696
8697unsafe impl Send for GeometryNV {}
8698unsafe impl Sync for GeometryNV {}
8699
8700/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryTrianglesNV.html>
8701#[repr(C)]
8702#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8703pub struct GeometryTrianglesNV {
8704    pub s_type: StructureType,
8705    pub next: *const c_void,
8706    pub vertex_data: Buffer,
8707    pub vertex_offset: DeviceSize,
8708    pub vertex_count: u32,
8709    pub vertex_stride: DeviceSize,
8710    pub vertex_format: Format,
8711    pub index_data: Buffer,
8712    pub index_offset: DeviceSize,
8713    pub index_count: u32,
8714    pub index_type: IndexType,
8715    pub transform_data: Buffer,
8716    pub transform_offset: DeviceSize,
8717}
8718
8719impl Default for GeometryTrianglesNV {
8720    #[inline]
8721    fn default() -> Self {
8722        Self {
8723            s_type: StructureType::GEOMETRY_TRIANGLES_NV,
8724            next: ptr::null(),
8725            vertex_data: Buffer::default(),
8726            vertex_offset: DeviceSize::default(),
8727            vertex_count: u32::default(),
8728            vertex_stride: DeviceSize::default(),
8729            vertex_format: Format::default(),
8730            index_data: Buffer::default(),
8731            index_offset: DeviceSize::default(),
8732            index_count: u32::default(),
8733            index_type: IndexType::default(),
8734            transform_data: Buffer::default(),
8735            transform_offset: DeviceSize::default(),
8736        }
8737    }
8738}
8739
8740unsafe impl Send for GeometryTrianglesNV {}
8741unsafe impl Sync for GeometryTrianglesNV {}
8742
8743/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGetLatencyMarkerInfoNV.html>
8744#[repr(C)]
8745#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8746pub struct GetLatencyMarkerInfoNV {
8747    pub s_type: StructureType,
8748    pub next: *const c_void,
8749    pub timing_count: u32,
8750    pub timings: *mut LatencyTimingsFrameReportNV,
8751}
8752
8753impl Default for GetLatencyMarkerInfoNV {
8754    #[inline]
8755    fn default() -> Self {
8756        Self {
8757            s_type: StructureType::GET_LATENCY_MARKER_INFO_NV,
8758            next: ptr::null(),
8759            timing_count: u32::default(),
8760            timings: ptr::null_mut(),
8761        }
8762    }
8763}
8764
8765unsafe impl Send for GetLatencyMarkerInfoNV {}
8766unsafe impl Sync for GetLatencyMarkerInfoNV {}
8767
8768/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineCreateInfo.html>
8769#[repr(C)]
8770#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8771pub struct GraphicsPipelineCreateInfo {
8772    pub s_type: StructureType,
8773    pub next: *const c_void,
8774    pub flags: PipelineCreateFlags,
8775    pub stage_count: u32,
8776    pub stages: *const PipelineShaderStageCreateInfo,
8777    pub vertex_input_state: *const PipelineVertexInputStateCreateInfo,
8778    pub input_assembly_state: *const PipelineInputAssemblyStateCreateInfo,
8779    pub tessellation_state: *const PipelineTessellationStateCreateInfo,
8780    pub viewport_state: *const PipelineViewportStateCreateInfo,
8781    pub rasterization_state: *const PipelineRasterizationStateCreateInfo,
8782    pub multisample_state: *const PipelineMultisampleStateCreateInfo,
8783    pub depth_stencil_state: *const PipelineDepthStencilStateCreateInfo,
8784    pub color_blend_state: *const PipelineColorBlendStateCreateInfo,
8785    pub dynamic_state: *const PipelineDynamicStateCreateInfo,
8786    pub layout: PipelineLayout,
8787    pub render_pass: RenderPass,
8788    pub subpass: u32,
8789    pub base_pipeline_handle: Pipeline,
8790    pub base_pipeline_index: i32,
8791}
8792
8793impl Default for GraphicsPipelineCreateInfo {
8794    #[inline]
8795    fn default() -> Self {
8796        Self {
8797            s_type: StructureType::GRAPHICS_PIPELINE_CREATE_INFO,
8798            next: ptr::null(),
8799            flags: PipelineCreateFlags::default(),
8800            stage_count: u32::default(),
8801            stages: ptr::null(),
8802            vertex_input_state: ptr::null(),
8803            input_assembly_state: ptr::null(),
8804            tessellation_state: ptr::null(),
8805            viewport_state: ptr::null(),
8806            rasterization_state: ptr::null(),
8807            multisample_state: ptr::null(),
8808            depth_stencil_state: ptr::null(),
8809            color_blend_state: ptr::null(),
8810            dynamic_state: ptr::null(),
8811            layout: PipelineLayout::default(),
8812            render_pass: RenderPass::default(),
8813            subpass: u32::default(),
8814            base_pipeline_handle: Pipeline::default(),
8815            base_pipeline_index: i32::default(),
8816        }
8817    }
8818}
8819
8820unsafe impl Send for GraphicsPipelineCreateInfo {}
8821unsafe impl Sync for GraphicsPipelineCreateInfo {}
8822
8823/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineLibraryCreateInfoEXT.html>
8824#[repr(C)]
8825#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8826pub struct GraphicsPipelineLibraryCreateInfoEXT {
8827    pub s_type: StructureType,
8828    pub next: *const c_void,
8829    pub flags: GraphicsPipelineLibraryFlagsEXT,
8830}
8831
8832impl Default for GraphicsPipelineLibraryCreateInfoEXT {
8833    #[inline]
8834    fn default() -> Self {
8835        Self {
8836            s_type: StructureType::GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT,
8837            next: ptr::null(),
8838            flags: GraphicsPipelineLibraryFlagsEXT::default(),
8839        }
8840    }
8841}
8842
8843unsafe impl Send for GraphicsPipelineLibraryCreateInfoEXT {}
8844unsafe impl Sync for GraphicsPipelineLibraryCreateInfoEXT {}
8845
8846/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineShaderGroupsCreateInfoNV.html>
8847#[repr(C)]
8848#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8849pub struct GraphicsPipelineShaderGroupsCreateInfoNV {
8850    pub s_type: StructureType,
8851    pub next: *const c_void,
8852    pub group_count: u32,
8853    pub groups: *const GraphicsShaderGroupCreateInfoNV,
8854    pub pipeline_count: u32,
8855    pub pipelines: *const Pipeline,
8856}
8857
8858impl Default for GraphicsPipelineShaderGroupsCreateInfoNV {
8859    #[inline]
8860    fn default() -> Self {
8861        Self {
8862            s_type: StructureType::GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV,
8863            next: ptr::null(),
8864            group_count: u32::default(),
8865            groups: ptr::null(),
8866            pipeline_count: u32::default(),
8867            pipelines: ptr::null(),
8868        }
8869    }
8870}
8871
8872unsafe impl Send for GraphicsPipelineShaderGroupsCreateInfoNV {}
8873unsafe impl Sync for GraphicsPipelineShaderGroupsCreateInfoNV {}
8874
8875/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsShaderGroupCreateInfoNV.html>
8876#[repr(C)]
8877#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8878pub struct GraphicsShaderGroupCreateInfoNV {
8879    pub s_type: StructureType,
8880    pub next: *const c_void,
8881    pub stage_count: u32,
8882    pub stages: *const PipelineShaderStageCreateInfo,
8883    pub vertex_input_state: *const PipelineVertexInputStateCreateInfo,
8884    pub tessellation_state: *const PipelineTessellationStateCreateInfo,
8885}
8886
8887impl Default for GraphicsShaderGroupCreateInfoNV {
8888    #[inline]
8889    fn default() -> Self {
8890        Self {
8891            s_type: StructureType::GRAPHICS_SHADER_GROUP_CREATE_INFO_NV,
8892            next: ptr::null(),
8893            stage_count: u32::default(),
8894            stages: ptr::null(),
8895            vertex_input_state: ptr::null(),
8896            tessellation_state: ptr::null(),
8897        }
8898    }
8899}
8900
8901unsafe impl Send for GraphicsShaderGroupCreateInfoNV {}
8902unsafe impl Sync for GraphicsShaderGroupCreateInfoNV {}
8903
8904/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHdrMetadataEXT.html>
8905#[repr(C)]
8906#[derive(Copy, Clone, Debug, PartialEq)]
8907pub struct HdrMetadataEXT {
8908    pub s_type: StructureType,
8909    pub next: *const c_void,
8910    pub display_primary_red: XYColorEXT,
8911    pub display_primary_green: XYColorEXT,
8912    pub display_primary_blue: XYColorEXT,
8913    pub white_point: XYColorEXT,
8914    pub max_luminance: f32,
8915    pub min_luminance: f32,
8916    pub max_content_light_level: f32,
8917    pub max_frame_average_light_level: f32,
8918}
8919
8920impl Default for HdrMetadataEXT {
8921    #[inline]
8922    fn default() -> Self {
8923        Self {
8924            s_type: StructureType::HDR_METADATA_EXT,
8925            next: ptr::null(),
8926            display_primary_red: XYColorEXT::default(),
8927            display_primary_green: XYColorEXT::default(),
8928            display_primary_blue: XYColorEXT::default(),
8929            white_point: XYColorEXT::default(),
8930            max_luminance: f32::default(),
8931            min_luminance: f32::default(),
8932            max_content_light_level: f32::default(),
8933            max_frame_average_light_level: f32::default(),
8934        }
8935    }
8936}
8937
8938unsafe impl Send for HdrMetadataEXT {}
8939unsafe impl Sync for HdrMetadataEXT {}
8940
8941/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHdrVividDynamicMetadataHUAWEI.html>
8942#[repr(C)]
8943#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8944pub struct HdrVividDynamicMetadataHUAWEI {
8945    pub s_type: StructureType,
8946    pub next: *const c_void,
8947    pub dynamic_metadata_size: usize,
8948    pub dynamic_metadata: *const c_void,
8949}
8950
8951impl Default for HdrVividDynamicMetadataHUAWEI {
8952    #[inline]
8953    fn default() -> Self {
8954        Self {
8955            s_type: StructureType::HDR_VIVID_DYNAMIC_METADATA_HUAWEI,
8956            next: ptr::null(),
8957            dynamic_metadata_size: usize::default(),
8958            dynamic_metadata: ptr::null(),
8959        }
8960    }
8961}
8962
8963unsafe impl Send for HdrVividDynamicMetadataHUAWEI {}
8964unsafe impl Sync for HdrVividDynamicMetadataHUAWEI {}
8965
8966/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHeadlessSurfaceCreateInfoEXT.html>
8967#[repr(C)]
8968#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8969pub struct HeadlessSurfaceCreateInfoEXT {
8970    pub s_type: StructureType,
8971    pub next: *const c_void,
8972    pub flags: HeadlessSurfaceCreateFlagsEXT,
8973}
8974
8975impl Default for HeadlessSurfaceCreateInfoEXT {
8976    #[inline]
8977    fn default() -> Self {
8978        Self {
8979            s_type: StructureType::HEADLESS_SURFACE_CREATE_INFO_EXT,
8980            next: ptr::null(),
8981            flags: HeadlessSurfaceCreateFlagsEXT::default(),
8982        }
8983    }
8984}
8985
8986unsafe impl Send for HeadlessSurfaceCreateInfoEXT {}
8987unsafe impl Sync for HeadlessSurfaceCreateInfoEXT {}
8988
8989/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageCopyDevicePerformanceQuery.html>
8990#[repr(C)]
8991#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8992pub struct HostImageCopyDevicePerformanceQuery {
8993    pub s_type: StructureType,
8994    pub next: *mut c_void,
8995    pub optimal_device_access: Bool32,
8996    pub identical_memory_layout: Bool32,
8997}
8998
8999impl Default for HostImageCopyDevicePerformanceQuery {
9000    #[inline]
9001    fn default() -> Self {
9002        Self {
9003            s_type: StructureType::HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY,
9004            next: ptr::null_mut(),
9005            optimal_device_access: Bool32::default(),
9006            identical_memory_layout: Bool32::default(),
9007        }
9008    }
9009}
9010
9011unsafe impl Send for HostImageCopyDevicePerformanceQuery {}
9012unsafe impl Sync for HostImageCopyDevicePerformanceQuery {}
9013
9014/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageLayoutTransitionInfo.html>
9015#[repr(C)]
9016#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9017pub struct HostImageLayoutTransitionInfo {
9018    pub s_type: StructureType,
9019    pub next: *const c_void,
9020    pub image: Image,
9021    pub old_layout: ImageLayout,
9022    pub new_layout: ImageLayout,
9023    pub subresource_range: ImageSubresourceRange,
9024}
9025
9026impl Default for HostImageLayoutTransitionInfo {
9027    #[inline]
9028    fn default() -> Self {
9029        Self {
9030            s_type: StructureType::HOST_IMAGE_LAYOUT_TRANSITION_INFO,
9031            next: ptr::null(),
9032            image: Image::default(),
9033            old_layout: ImageLayout::default(),
9034            new_layout: ImageLayout::default(),
9035            subresource_range: ImageSubresourceRange::default(),
9036        }
9037    }
9038}
9039
9040unsafe impl Send for HostImageLayoutTransitionInfo {}
9041unsafe impl Sync for HostImageLayoutTransitionInfo {}
9042
9043/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIOSSurfaceCreateInfoMVK.html>
9044#[repr(C)]
9045#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9046pub struct IOSSurfaceCreateInfoMVK {
9047    pub s_type: StructureType,
9048    pub next: *const c_void,
9049    pub flags: IOSSurfaceCreateFlagsMVK,
9050    pub view: *const c_void,
9051}
9052
9053impl Default for IOSSurfaceCreateInfoMVK {
9054    #[inline]
9055    fn default() -> Self {
9056        Self {
9057            s_type: StructureType::IOS_SURFACE_CREATE_INFO_MVK,
9058            next: ptr::null(),
9059            flags: IOSSurfaceCreateFlagsMVK::default(),
9060            view: ptr::null(),
9061        }
9062    }
9063}
9064
9065unsafe impl Send for IOSSurfaceCreateInfoMVK {}
9066unsafe impl Sync for IOSSurfaceCreateInfoMVK {}
9067
9068/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageAlignmentControlCreateInfoMESA.html>
9069#[repr(C)]
9070#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9071pub struct ImageAlignmentControlCreateInfoMESA {
9072    pub s_type: StructureType,
9073    pub next: *const c_void,
9074    pub maximum_requested_alignment: u32,
9075}
9076
9077impl Default for ImageAlignmentControlCreateInfoMESA {
9078    #[inline]
9079    fn default() -> Self {
9080        Self {
9081            s_type: StructureType::IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA,
9082            next: ptr::null(),
9083            maximum_requested_alignment: u32::default(),
9084        }
9085    }
9086}
9087
9088unsafe impl Send for ImageAlignmentControlCreateInfoMESA {}
9089unsafe impl Sync for ImageAlignmentControlCreateInfoMESA {}
9090
9091/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageBlit.html>
9092#[repr(C)]
9093#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9094pub struct ImageBlit {
9095    pub src_subresource: ImageSubresourceLayers,
9096    pub src_offsets: [Offset3D; 2],
9097    pub dst_subresource: ImageSubresourceLayers,
9098    pub dst_offsets: [Offset3D; 2],
9099}
9100
9101/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageBlit2.html>
9102#[repr(C)]
9103#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9104pub struct ImageBlit2 {
9105    pub s_type: StructureType,
9106    pub next: *const c_void,
9107    pub src_subresource: ImageSubresourceLayers,
9108    pub src_offsets: [Offset3D; 2],
9109    pub dst_subresource: ImageSubresourceLayers,
9110    pub dst_offsets: [Offset3D; 2],
9111}
9112
9113impl Default for ImageBlit2 {
9114    #[inline]
9115    fn default() -> Self {
9116        Self {
9117            s_type: StructureType::IMAGE_BLIT_2,
9118            next: ptr::null(),
9119            src_subresource: ImageSubresourceLayers::default(),
9120            src_offsets: [Offset3D::default(); 2],
9121            dst_subresource: ImageSubresourceLayers::default(),
9122            dst_offsets: [Offset3D::default(); 2],
9123        }
9124    }
9125}
9126
9127unsafe impl Send for ImageBlit2 {}
9128unsafe impl Sync for ImageBlit2 {}
9129
9130/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCaptureDescriptorDataInfoEXT.html>
9131#[repr(C)]
9132#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9133pub struct ImageCaptureDescriptorDataInfoEXT {
9134    pub s_type: StructureType,
9135    pub next: *const c_void,
9136    pub image: Image,
9137}
9138
9139impl Default for ImageCaptureDescriptorDataInfoEXT {
9140    #[inline]
9141    fn default() -> Self {
9142        Self {
9143            s_type: StructureType::IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
9144            next: ptr::null(),
9145            image: Image::default(),
9146        }
9147    }
9148}
9149
9150unsafe impl Send for ImageCaptureDescriptorDataInfoEXT {}
9151unsafe impl Sync for ImageCaptureDescriptorDataInfoEXT {}
9152
9153/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCompressionControlEXT.html>
9154#[repr(C)]
9155#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9156pub struct ImageCompressionControlEXT {
9157    pub s_type: StructureType,
9158    pub next: *const c_void,
9159    pub flags: ImageCompressionFlagsEXT,
9160    pub compression_control_plane_count: u32,
9161    pub fixed_rate_flags: *mut ImageCompressionFixedRateFlagsEXT,
9162}
9163
9164impl Default for ImageCompressionControlEXT {
9165    #[inline]
9166    fn default() -> Self {
9167        Self {
9168            s_type: StructureType::IMAGE_COMPRESSION_CONTROL_EXT,
9169            next: ptr::null(),
9170            flags: ImageCompressionFlagsEXT::default(),
9171            compression_control_plane_count: u32::default(),
9172            fixed_rate_flags: ptr::null_mut(),
9173        }
9174    }
9175}
9176
9177unsafe impl Send for ImageCompressionControlEXT {}
9178unsafe impl Sync for ImageCompressionControlEXT {}
9179
9180/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCompressionPropertiesEXT.html>
9181#[repr(C)]
9182#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9183pub struct ImageCompressionPropertiesEXT {
9184    pub s_type: StructureType,
9185    pub next: *mut c_void,
9186    pub image_compression_flags: ImageCompressionFlagsEXT,
9187    pub image_compression_fixed_rate_flags: ImageCompressionFixedRateFlagsEXT,
9188}
9189
9190impl Default for ImageCompressionPropertiesEXT {
9191    #[inline]
9192    fn default() -> Self {
9193        Self {
9194            s_type: StructureType::IMAGE_COMPRESSION_PROPERTIES_EXT,
9195            next: ptr::null_mut(),
9196            image_compression_flags: ImageCompressionFlagsEXT::default(),
9197            image_compression_fixed_rate_flags: ImageCompressionFixedRateFlagsEXT::default(),
9198        }
9199    }
9200}
9201
9202unsafe impl Send for ImageCompressionPropertiesEXT {}
9203unsafe impl Sync for ImageCompressionPropertiesEXT {}
9204
9205/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageConstraintsInfoFUCHSIA.html>
9206#[repr(C)]
9207#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9208pub struct ImageConstraintsInfoFUCHSIA {
9209    pub s_type: StructureType,
9210    pub next: *const c_void,
9211    pub format_constraints_count: u32,
9212    pub format_constraints: *const ImageFormatConstraintsInfoFUCHSIA,
9213    pub buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA,
9214    pub flags: ImageConstraintsInfoFlagsFUCHSIA,
9215}
9216
9217impl Default for ImageConstraintsInfoFUCHSIA {
9218    #[inline]
9219    fn default() -> Self {
9220        Self {
9221            s_type: StructureType::IMAGE_CONSTRAINTS_INFO_FUCHSIA,
9222            next: ptr::null(),
9223            format_constraints_count: u32::default(),
9224            format_constraints: ptr::null(),
9225            buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA::default(),
9226            flags: ImageConstraintsInfoFlagsFUCHSIA::default(),
9227        }
9228    }
9229}
9230
9231unsafe impl Send for ImageConstraintsInfoFUCHSIA {}
9232unsafe impl Sync for ImageConstraintsInfoFUCHSIA {}
9233
9234/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCopy.html>
9235#[repr(C)]
9236#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9237pub struct ImageCopy {
9238    pub src_subresource: ImageSubresourceLayers,
9239    pub src_offset: Offset3D,
9240    pub dst_subresource: ImageSubresourceLayers,
9241    pub dst_offset: Offset3D,
9242    pub extent: Extent3D,
9243}
9244
9245/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCopy2.html>
9246#[repr(C)]
9247#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9248pub struct ImageCopy2 {
9249    pub s_type: StructureType,
9250    pub next: *const c_void,
9251    pub src_subresource: ImageSubresourceLayers,
9252    pub src_offset: Offset3D,
9253    pub dst_subresource: ImageSubresourceLayers,
9254    pub dst_offset: Offset3D,
9255    pub extent: Extent3D,
9256}
9257
9258impl Default for ImageCopy2 {
9259    #[inline]
9260    fn default() -> Self {
9261        Self {
9262            s_type: StructureType::IMAGE_COPY_2,
9263            next: ptr::null(),
9264            src_subresource: ImageSubresourceLayers::default(),
9265            src_offset: Offset3D::default(),
9266            dst_subresource: ImageSubresourceLayers::default(),
9267            dst_offset: Offset3D::default(),
9268            extent: Extent3D::default(),
9269        }
9270    }
9271}
9272
9273unsafe impl Send for ImageCopy2 {}
9274unsafe impl Sync for ImageCopy2 {}
9275
9276/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCreateInfo.html>
9277#[repr(C)]
9278#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9279pub struct ImageCreateInfo {
9280    pub s_type: StructureType,
9281    pub next: *const c_void,
9282    pub flags: ImageCreateFlags,
9283    pub image_type: ImageType,
9284    pub format: Format,
9285    pub extent: Extent3D,
9286    pub mip_levels: u32,
9287    pub array_layers: u32,
9288    pub samples: SampleCountFlags,
9289    pub tiling: ImageTiling,
9290    pub usage: ImageUsageFlags,
9291    pub sharing_mode: SharingMode,
9292    pub queue_family_index_count: u32,
9293    pub queue_family_indices: *const u32,
9294    pub initial_layout: ImageLayout,
9295}
9296
9297impl Default for ImageCreateInfo {
9298    #[inline]
9299    fn default() -> Self {
9300        Self {
9301            s_type: StructureType::IMAGE_CREATE_INFO,
9302            next: ptr::null(),
9303            flags: ImageCreateFlags::default(),
9304            image_type: ImageType::default(),
9305            format: Format::default(),
9306            extent: Extent3D::default(),
9307            mip_levels: u32::default(),
9308            array_layers: u32::default(),
9309            samples: SampleCountFlags::default(),
9310            tiling: ImageTiling::default(),
9311            usage: ImageUsageFlags::default(),
9312            sharing_mode: SharingMode::default(),
9313            queue_family_index_count: u32::default(),
9314            queue_family_indices: ptr::null(),
9315            initial_layout: ImageLayout::default(),
9316        }
9317    }
9318}
9319
9320unsafe impl Send for ImageCreateInfo {}
9321unsafe impl Sync for ImageCreateInfo {}
9322
9323/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDrmFormatModifierExplicitCreateInfoEXT.html>
9324#[repr(C)]
9325#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9326pub struct ImageDrmFormatModifierExplicitCreateInfoEXT {
9327    pub s_type: StructureType,
9328    pub next: *const c_void,
9329    pub drm_format_modifier: u64,
9330    pub drm_format_modifier_plane_count: u32,
9331    pub plane_layouts: *const SubresourceLayout,
9332}
9333
9334impl Default for ImageDrmFormatModifierExplicitCreateInfoEXT {
9335    #[inline]
9336    fn default() -> Self {
9337        Self {
9338            s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT,
9339            next: ptr::null(),
9340            drm_format_modifier: u64::default(),
9341            drm_format_modifier_plane_count: u32::default(),
9342            plane_layouts: ptr::null(),
9343        }
9344    }
9345}
9346
9347unsafe impl Send for ImageDrmFormatModifierExplicitCreateInfoEXT {}
9348unsafe impl Sync for ImageDrmFormatModifierExplicitCreateInfoEXT {}
9349
9350/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDrmFormatModifierListCreateInfoEXT.html>
9351#[repr(C)]
9352#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9353pub struct ImageDrmFormatModifierListCreateInfoEXT {
9354    pub s_type: StructureType,
9355    pub next: *const c_void,
9356    pub drm_format_modifier_count: u32,
9357    pub drm_format_modifiers: *const u64,
9358}
9359
9360impl Default for ImageDrmFormatModifierListCreateInfoEXT {
9361    #[inline]
9362    fn default() -> Self {
9363        Self {
9364            s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT,
9365            next: ptr::null(),
9366            drm_format_modifier_count: u32::default(),
9367            drm_format_modifiers: ptr::null(),
9368        }
9369    }
9370}
9371
9372unsafe impl Send for ImageDrmFormatModifierListCreateInfoEXT {}
9373unsafe impl Sync for ImageDrmFormatModifierListCreateInfoEXT {}
9374
9375/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDrmFormatModifierPropertiesEXT.html>
9376#[repr(C)]
9377#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9378pub struct ImageDrmFormatModifierPropertiesEXT {
9379    pub s_type: StructureType,
9380    pub next: *mut c_void,
9381    pub drm_format_modifier: u64,
9382}
9383
9384impl Default for ImageDrmFormatModifierPropertiesEXT {
9385    #[inline]
9386    fn default() -> Self {
9387        Self {
9388            s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT,
9389            next: ptr::null_mut(),
9390            drm_format_modifier: u64::default(),
9391        }
9392    }
9393}
9394
9395unsafe impl Send for ImageDrmFormatModifierPropertiesEXT {}
9396unsafe impl Sync for ImageDrmFormatModifierPropertiesEXT {}
9397
9398/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatConstraintsInfoFUCHSIA.html>
9399#[repr(C)]
9400#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9401pub struct ImageFormatConstraintsInfoFUCHSIA {
9402    pub s_type: StructureType,
9403    pub next: *const c_void,
9404    pub image_create_info: ImageCreateInfo,
9405    pub required_format_features: FormatFeatureFlags,
9406    pub flags: ImageFormatConstraintsFlagsFUCHSIA,
9407    pub sysmem_pixel_format: u64,
9408    pub color_space_count: u32,
9409    pub color_spaces: *const SysmemColorSpaceFUCHSIA,
9410}
9411
9412impl Default for ImageFormatConstraintsInfoFUCHSIA {
9413    #[inline]
9414    fn default() -> Self {
9415        Self {
9416            s_type: StructureType::IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA,
9417            next: ptr::null(),
9418            image_create_info: ImageCreateInfo::default(),
9419            required_format_features: FormatFeatureFlags::default(),
9420            flags: ImageFormatConstraintsFlagsFUCHSIA::default(),
9421            sysmem_pixel_format: u64::default(),
9422            color_space_count: u32::default(),
9423            color_spaces: ptr::null(),
9424        }
9425    }
9426}
9427
9428unsafe impl Send for ImageFormatConstraintsInfoFUCHSIA {}
9429unsafe impl Sync for ImageFormatConstraintsInfoFUCHSIA {}
9430
9431/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatListCreateInfo.html>
9432#[repr(C)]
9433#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9434pub struct ImageFormatListCreateInfo {
9435    pub s_type: StructureType,
9436    pub next: *const c_void,
9437    pub view_format_count: u32,
9438    pub view_formats: *const Format,
9439}
9440
9441impl Default for ImageFormatListCreateInfo {
9442    #[inline]
9443    fn default() -> Self {
9444        Self {
9445            s_type: StructureType::IMAGE_FORMAT_LIST_CREATE_INFO,
9446            next: ptr::null(),
9447            view_format_count: u32::default(),
9448            view_formats: ptr::null(),
9449        }
9450    }
9451}
9452
9453unsafe impl Send for ImageFormatListCreateInfo {}
9454unsafe impl Sync for ImageFormatListCreateInfo {}
9455
9456/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatProperties.html>
9457#[repr(C)]
9458#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9459pub struct ImageFormatProperties {
9460    pub max_extent: Extent3D,
9461    pub max_mip_levels: u32,
9462    pub max_array_layers: u32,
9463    pub sample_counts: SampleCountFlags,
9464    pub max_resource_size: DeviceSize,
9465}
9466
9467/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatProperties2.html>
9468#[repr(C)]
9469#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9470pub struct ImageFormatProperties2 {
9471    pub s_type: StructureType,
9472    pub next: *mut c_void,
9473    pub image_format_properties: ImageFormatProperties,
9474}
9475
9476impl Default for ImageFormatProperties2 {
9477    #[inline]
9478    fn default() -> Self {
9479        Self {
9480            s_type: StructureType::IMAGE_FORMAT_PROPERTIES_2,
9481            next: ptr::null_mut(),
9482            image_format_properties: ImageFormatProperties::default(),
9483        }
9484    }
9485}
9486
9487unsafe impl Send for ImageFormatProperties2 {}
9488unsafe impl Sync for ImageFormatProperties2 {}
9489
9490/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryBarrier.html>
9491#[repr(C)]
9492#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9493pub struct ImageMemoryBarrier {
9494    pub s_type: StructureType,
9495    pub next: *const c_void,
9496    pub src_access_mask: AccessFlags,
9497    pub dst_access_mask: AccessFlags,
9498    pub old_layout: ImageLayout,
9499    pub new_layout: ImageLayout,
9500    pub src_queue_family_index: u32,
9501    pub dst_queue_family_index: u32,
9502    pub image: Image,
9503    pub subresource_range: ImageSubresourceRange,
9504}
9505
9506impl Default for ImageMemoryBarrier {
9507    #[inline]
9508    fn default() -> Self {
9509        Self {
9510            s_type: StructureType::IMAGE_MEMORY_BARRIER,
9511            next: ptr::null(),
9512            src_access_mask: AccessFlags::default(),
9513            dst_access_mask: AccessFlags::default(),
9514            old_layout: ImageLayout::default(),
9515            new_layout: ImageLayout::default(),
9516            src_queue_family_index: u32::default(),
9517            dst_queue_family_index: u32::default(),
9518            image: Image::default(),
9519            subresource_range: ImageSubresourceRange::default(),
9520        }
9521    }
9522}
9523
9524unsafe impl Send for ImageMemoryBarrier {}
9525unsafe impl Sync for ImageMemoryBarrier {}
9526
9527/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryBarrier2.html>
9528#[repr(C)]
9529#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9530pub struct ImageMemoryBarrier2 {
9531    pub s_type: StructureType,
9532    pub next: *const c_void,
9533    pub src_stage_mask: PipelineStageFlags2,
9534    pub src_access_mask: AccessFlags2,
9535    pub dst_stage_mask: PipelineStageFlags2,
9536    pub dst_access_mask: AccessFlags2,
9537    pub old_layout: ImageLayout,
9538    pub new_layout: ImageLayout,
9539    pub src_queue_family_index: u32,
9540    pub dst_queue_family_index: u32,
9541    pub image: Image,
9542    pub subresource_range: ImageSubresourceRange,
9543}
9544
9545impl Default for ImageMemoryBarrier2 {
9546    #[inline]
9547    fn default() -> Self {
9548        Self {
9549            s_type: StructureType::IMAGE_MEMORY_BARRIER_2,
9550            next: ptr::null(),
9551            src_stage_mask: PipelineStageFlags2::default(),
9552            src_access_mask: AccessFlags2::default(),
9553            dst_stage_mask: PipelineStageFlags2::default(),
9554            dst_access_mask: AccessFlags2::default(),
9555            old_layout: ImageLayout::default(),
9556            new_layout: ImageLayout::default(),
9557            src_queue_family_index: u32::default(),
9558            dst_queue_family_index: u32::default(),
9559            image: Image::default(),
9560            subresource_range: ImageSubresourceRange::default(),
9561        }
9562    }
9563}
9564
9565unsafe impl Send for ImageMemoryBarrier2 {}
9566unsafe impl Sync for ImageMemoryBarrier2 {}
9567
9568/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryRequirementsInfo2.html>
9569#[repr(C)]
9570#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9571pub struct ImageMemoryRequirementsInfo2 {
9572    pub s_type: StructureType,
9573    pub next: *const c_void,
9574    pub image: Image,
9575}
9576
9577impl Default for ImageMemoryRequirementsInfo2 {
9578    #[inline]
9579    fn default() -> Self {
9580        Self {
9581            s_type: StructureType::IMAGE_MEMORY_REQUIREMENTS_INFO_2,
9582            next: ptr::null(),
9583            image: Image::default(),
9584        }
9585    }
9586}
9587
9588unsafe impl Send for ImageMemoryRequirementsInfo2 {}
9589unsafe impl Sync for ImageMemoryRequirementsInfo2 {}
9590
9591/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePipeSurfaceCreateInfoFUCHSIA.html>
9592#[repr(C)]
9593#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9594pub struct ImagePipeSurfaceCreateInfoFUCHSIA {
9595    pub s_type: StructureType,
9596    pub next: *const c_void,
9597    pub flags: ImagePipeSurfaceCreateFlagsFUCHSIA,
9598    pub image_pipe_handle: zx_handle_t,
9599}
9600
9601impl Default for ImagePipeSurfaceCreateInfoFUCHSIA {
9602    #[inline]
9603    fn default() -> Self {
9604        Self {
9605            s_type: StructureType::IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA,
9606            next: ptr::null(),
9607            flags: ImagePipeSurfaceCreateFlagsFUCHSIA::default(),
9608            image_pipe_handle: zx_handle_t::default(),
9609        }
9610    }
9611}
9612
9613unsafe impl Send for ImagePipeSurfaceCreateInfoFUCHSIA {}
9614unsafe impl Sync for ImagePipeSurfaceCreateInfoFUCHSIA {}
9615
9616/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePlaneMemoryRequirementsInfo.html>
9617#[repr(C)]
9618#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9619pub struct ImagePlaneMemoryRequirementsInfo {
9620    pub s_type: StructureType,
9621    pub next: *const c_void,
9622    pub plane_aspect: ImageAspectFlags,
9623}
9624
9625impl Default for ImagePlaneMemoryRequirementsInfo {
9626    #[inline]
9627    fn default() -> Self {
9628        Self {
9629            s_type: StructureType::IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
9630            next: ptr::null(),
9631            plane_aspect: ImageAspectFlags::default(),
9632        }
9633    }
9634}
9635
9636unsafe impl Send for ImagePlaneMemoryRequirementsInfo {}
9637unsafe impl Sync for ImagePlaneMemoryRequirementsInfo {}
9638
9639/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageResolve.html>
9640#[repr(C)]
9641#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9642pub struct ImageResolve {
9643    pub src_subresource: ImageSubresourceLayers,
9644    pub src_offset: Offset3D,
9645    pub dst_subresource: ImageSubresourceLayers,
9646    pub dst_offset: Offset3D,
9647    pub extent: Extent3D,
9648}
9649
9650/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageResolve2.html>
9651#[repr(C)]
9652#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9653pub struct ImageResolve2 {
9654    pub s_type: StructureType,
9655    pub next: *const c_void,
9656    pub src_subresource: ImageSubresourceLayers,
9657    pub src_offset: Offset3D,
9658    pub dst_subresource: ImageSubresourceLayers,
9659    pub dst_offset: Offset3D,
9660    pub extent: Extent3D,
9661}
9662
9663impl Default for ImageResolve2 {
9664    #[inline]
9665    fn default() -> Self {
9666        Self {
9667            s_type: StructureType::IMAGE_RESOLVE_2,
9668            next: ptr::null(),
9669            src_subresource: ImageSubresourceLayers::default(),
9670            src_offset: Offset3D::default(),
9671            dst_subresource: ImageSubresourceLayers::default(),
9672            dst_offset: Offset3D::default(),
9673            extent: Extent3D::default(),
9674        }
9675    }
9676}
9677
9678unsafe impl Send for ImageResolve2 {}
9679unsafe impl Sync for ImageResolve2 {}
9680
9681/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSparseMemoryRequirementsInfo2.html>
9682#[repr(C)]
9683#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9684pub struct ImageSparseMemoryRequirementsInfo2 {
9685    pub s_type: StructureType,
9686    pub next: *const c_void,
9687    pub image: Image,
9688}
9689
9690impl Default for ImageSparseMemoryRequirementsInfo2 {
9691    #[inline]
9692    fn default() -> Self {
9693        Self {
9694            s_type: StructureType::IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
9695            next: ptr::null(),
9696            image: Image::default(),
9697        }
9698    }
9699}
9700
9701unsafe impl Send for ImageSparseMemoryRequirementsInfo2 {}
9702unsafe impl Sync for ImageSparseMemoryRequirementsInfo2 {}
9703
9704/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageStencilUsageCreateInfo.html>
9705#[repr(C)]
9706#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9707pub struct ImageStencilUsageCreateInfo {
9708    pub s_type: StructureType,
9709    pub next: *const c_void,
9710    pub stencil_usage: ImageUsageFlags,
9711}
9712
9713impl Default for ImageStencilUsageCreateInfo {
9714    #[inline]
9715    fn default() -> Self {
9716        Self {
9717            s_type: StructureType::IMAGE_STENCIL_USAGE_CREATE_INFO,
9718            next: ptr::null(),
9719            stencil_usage: ImageUsageFlags::default(),
9720        }
9721    }
9722}
9723
9724unsafe impl Send for ImageStencilUsageCreateInfo {}
9725unsafe impl Sync for ImageStencilUsageCreateInfo {}
9726
9727/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource.html>
9728#[repr(C)]
9729#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9730pub struct ImageSubresource {
9731    pub aspect_mask: ImageAspectFlags,
9732    pub mip_level: u32,
9733    pub array_layer: u32,
9734}
9735
9736/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource2.html>
9737#[repr(C)]
9738#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9739pub struct ImageSubresource2 {
9740    pub s_type: StructureType,
9741    pub next: *mut c_void,
9742    pub image_subresource: ImageSubresource,
9743}
9744
9745impl Default for ImageSubresource2 {
9746    #[inline]
9747    fn default() -> Self {
9748        Self {
9749            s_type: StructureType::IMAGE_SUBRESOURCE_2,
9750            next: ptr::null_mut(),
9751            image_subresource: ImageSubresource::default(),
9752        }
9753    }
9754}
9755
9756unsafe impl Send for ImageSubresource2 {}
9757unsafe impl Sync for ImageSubresource2 {}
9758
9759/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresourceLayers.html>
9760#[repr(C)]
9761#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9762pub struct ImageSubresourceLayers {
9763    pub aspect_mask: ImageAspectFlags,
9764    pub mip_level: u32,
9765    pub base_array_layer: u32,
9766    pub layer_count: u32,
9767}
9768
9769/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresourceRange.html>
9770#[repr(C)]
9771#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9772pub struct ImageSubresourceRange {
9773    pub aspect_mask: ImageAspectFlags,
9774    pub base_mip_level: u32,
9775    pub level_count: u32,
9776    pub base_array_layer: u32,
9777    pub layer_count: u32,
9778}
9779
9780/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSwapchainCreateInfoKHR.html>
9781#[repr(C)]
9782#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9783pub struct ImageSwapchainCreateInfoKHR {
9784    pub s_type: StructureType,
9785    pub next: *const c_void,
9786    pub swapchain: SwapchainKHR,
9787}
9788
9789impl Default for ImageSwapchainCreateInfoKHR {
9790    #[inline]
9791    fn default() -> Self {
9792        Self {
9793            s_type: StructureType::IMAGE_SWAPCHAIN_CREATE_INFO_KHR,
9794            next: ptr::null(),
9795            swapchain: SwapchainKHR::default(),
9796        }
9797    }
9798}
9799
9800unsafe impl Send for ImageSwapchainCreateInfoKHR {}
9801unsafe impl Sync for ImageSwapchainCreateInfoKHR {}
9802
9803/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageToMemoryCopy.html>
9804#[repr(C)]
9805#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9806pub struct ImageToMemoryCopy {
9807    pub s_type: StructureType,
9808    pub next: *const c_void,
9809    pub host_pointer: *mut c_void,
9810    pub memory_row_length: u32,
9811    pub memory_image_height: u32,
9812    pub image_subresource: ImageSubresourceLayers,
9813    pub image_offset: Offset3D,
9814    pub image_extent: Extent3D,
9815}
9816
9817impl Default for ImageToMemoryCopy {
9818    #[inline]
9819    fn default() -> Self {
9820        Self {
9821            s_type: StructureType::IMAGE_TO_MEMORY_COPY,
9822            next: ptr::null(),
9823            host_pointer: ptr::null_mut(),
9824            memory_row_length: u32::default(),
9825            memory_image_height: u32::default(),
9826            image_subresource: ImageSubresourceLayers::default(),
9827            image_offset: Offset3D::default(),
9828            image_extent: Extent3D::default(),
9829        }
9830    }
9831}
9832
9833unsafe impl Send for ImageToMemoryCopy {}
9834unsafe impl Sync for ImageToMemoryCopy {}
9835
9836/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewASTCDecodeModeEXT.html>
9837#[repr(C)]
9838#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9839pub struct ImageViewASTCDecodeModeEXT {
9840    pub s_type: StructureType,
9841    pub next: *const c_void,
9842    pub decode_mode: Format,
9843}
9844
9845impl Default for ImageViewASTCDecodeModeEXT {
9846    #[inline]
9847    fn default() -> Self {
9848        Self {
9849            s_type: StructureType::IMAGE_VIEW_ASTC_DECODE_MODE_EXT,
9850            next: ptr::null(),
9851            decode_mode: Format::default(),
9852        }
9853    }
9854}
9855
9856unsafe impl Send for ImageViewASTCDecodeModeEXT {}
9857unsafe impl Sync for ImageViewASTCDecodeModeEXT {}
9858
9859/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewAddressPropertiesNVX.html>
9860#[repr(C)]
9861#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9862pub struct ImageViewAddressPropertiesNVX {
9863    pub s_type: StructureType,
9864    pub next: *mut c_void,
9865    pub device_address: DeviceAddress,
9866    pub size: DeviceSize,
9867}
9868
9869impl Default for ImageViewAddressPropertiesNVX {
9870    #[inline]
9871    fn default() -> Self {
9872        Self {
9873            s_type: StructureType::IMAGE_VIEW_ADDRESS_PROPERTIES_NVX,
9874            next: ptr::null_mut(),
9875            device_address: DeviceAddress::default(),
9876            size: DeviceSize::default(),
9877        }
9878    }
9879}
9880
9881unsafe impl Send for ImageViewAddressPropertiesNVX {}
9882unsafe impl Sync for ImageViewAddressPropertiesNVX {}
9883
9884/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewCaptureDescriptorDataInfoEXT.html>
9885#[repr(C)]
9886#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9887pub struct ImageViewCaptureDescriptorDataInfoEXT {
9888    pub s_type: StructureType,
9889    pub next: *const c_void,
9890    pub image_view: ImageView,
9891}
9892
9893impl Default for ImageViewCaptureDescriptorDataInfoEXT {
9894    #[inline]
9895    fn default() -> Self {
9896        Self {
9897            s_type: StructureType::IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
9898            next: ptr::null(),
9899            image_view: ImageView::default(),
9900        }
9901    }
9902}
9903
9904unsafe impl Send for ImageViewCaptureDescriptorDataInfoEXT {}
9905unsafe impl Sync for ImageViewCaptureDescriptorDataInfoEXT {}
9906
9907/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewCreateInfo.html>
9908#[repr(C)]
9909#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9910pub struct ImageViewCreateInfo {
9911    pub s_type: StructureType,
9912    pub next: *const c_void,
9913    pub flags: ImageViewCreateFlags,
9914    pub image: Image,
9915    pub view_type: ImageViewType,
9916    pub format: Format,
9917    pub components: ComponentMapping,
9918    pub subresource_range: ImageSubresourceRange,
9919}
9920
9921impl Default for ImageViewCreateInfo {
9922    #[inline]
9923    fn default() -> Self {
9924        Self {
9925            s_type: StructureType::IMAGE_VIEW_CREATE_INFO,
9926            next: ptr::null(),
9927            flags: ImageViewCreateFlags::default(),
9928            image: Image::default(),
9929            view_type: ImageViewType::default(),
9930            format: Format::default(),
9931            components: ComponentMapping::default(),
9932            subresource_range: ImageSubresourceRange::default(),
9933        }
9934    }
9935}
9936
9937unsafe impl Send for ImageViewCreateInfo {}
9938unsafe impl Sync for ImageViewCreateInfo {}
9939
9940/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewHandleInfoNVX.html>
9941#[repr(C)]
9942#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9943pub struct ImageViewHandleInfoNVX {
9944    pub s_type: StructureType,
9945    pub next: *const c_void,
9946    pub image_view: ImageView,
9947    pub descriptor_type: DescriptorType,
9948    pub sampler: Sampler,
9949}
9950
9951impl Default for ImageViewHandleInfoNVX {
9952    #[inline]
9953    fn default() -> Self {
9954        Self {
9955            s_type: StructureType::IMAGE_VIEW_HANDLE_INFO_NVX,
9956            next: ptr::null(),
9957            image_view: ImageView::default(),
9958            descriptor_type: DescriptorType::default(),
9959            sampler: Sampler::default(),
9960        }
9961    }
9962}
9963
9964unsafe impl Send for ImageViewHandleInfoNVX {}
9965unsafe impl Sync for ImageViewHandleInfoNVX {}
9966
9967/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewMinLodCreateInfoEXT.html>
9968#[repr(C)]
9969#[derive(Copy, Clone, Debug, PartialEq)]
9970pub struct ImageViewMinLodCreateInfoEXT {
9971    pub s_type: StructureType,
9972    pub next: *const c_void,
9973    pub min_lod: f32,
9974}
9975
9976impl Default for ImageViewMinLodCreateInfoEXT {
9977    #[inline]
9978    fn default() -> Self {
9979        Self {
9980            s_type: StructureType::IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT,
9981            next: ptr::null(),
9982            min_lod: f32::default(),
9983        }
9984    }
9985}
9986
9987unsafe impl Send for ImageViewMinLodCreateInfoEXT {}
9988unsafe impl Sync for ImageViewMinLodCreateInfoEXT {}
9989
9990/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewSampleWeightCreateInfoQCOM.html>
9991#[repr(C)]
9992#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9993pub struct ImageViewSampleWeightCreateInfoQCOM {
9994    pub s_type: StructureType,
9995    pub next: *const c_void,
9996    pub filter_center: Offset2D,
9997    pub filter_size: Extent2D,
9998    pub num_phases: u32,
9999}
10000
10001impl Default for ImageViewSampleWeightCreateInfoQCOM {
10002    #[inline]
10003    fn default() -> Self {
10004        Self {
10005            s_type: StructureType::IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM,
10006            next: ptr::null(),
10007            filter_center: Offset2D::default(),
10008            filter_size: Extent2D::default(),
10009            num_phases: u32::default(),
10010        }
10011    }
10012}
10013
10014unsafe impl Send for ImageViewSampleWeightCreateInfoQCOM {}
10015unsafe impl Sync for ImageViewSampleWeightCreateInfoQCOM {}
10016
10017/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewSlicedCreateInfoEXT.html>
10018#[repr(C)]
10019#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10020pub struct ImageViewSlicedCreateInfoEXT {
10021    pub s_type: StructureType,
10022    pub next: *const c_void,
10023    pub slice_offset: u32,
10024    pub slice_count: u32,
10025}
10026
10027impl Default for ImageViewSlicedCreateInfoEXT {
10028    #[inline]
10029    fn default() -> Self {
10030        Self {
10031            s_type: StructureType::IMAGE_VIEW_SLICED_CREATE_INFO_EXT,
10032            next: ptr::null(),
10033            slice_offset: u32::default(),
10034            slice_count: u32::default(),
10035        }
10036    }
10037}
10038
10039unsafe impl Send for ImageViewSlicedCreateInfoEXT {}
10040unsafe impl Sync for ImageViewSlicedCreateInfoEXT {}
10041
10042/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewUsageCreateInfo.html>
10043#[repr(C)]
10044#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10045pub struct ImageViewUsageCreateInfo {
10046    pub s_type: StructureType,
10047    pub next: *const c_void,
10048    pub usage: ImageUsageFlags,
10049}
10050
10051impl Default for ImageViewUsageCreateInfo {
10052    #[inline]
10053    fn default() -> Self {
10054        Self {
10055            s_type: StructureType::IMAGE_VIEW_USAGE_CREATE_INFO,
10056            next: ptr::null(),
10057            usage: ImageUsageFlags::default(),
10058        }
10059    }
10060}
10061
10062unsafe impl Send for ImageViewUsageCreateInfo {}
10063unsafe impl Sync for ImageViewUsageCreateInfo {}
10064
10065/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportAndroidHardwareBufferInfoANDROID.html>
10066#[repr(C)]
10067#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10068pub struct ImportAndroidHardwareBufferInfoANDROID {
10069    pub s_type: StructureType,
10070    pub next: *const c_void,
10071    pub buffer: *mut AHardwareBuffer,
10072}
10073
10074impl Default for ImportAndroidHardwareBufferInfoANDROID {
10075    #[inline]
10076    fn default() -> Self {
10077        Self {
10078            s_type: StructureType::IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
10079            next: ptr::null(),
10080            buffer: ptr::null_mut(),
10081        }
10082    }
10083}
10084
10085unsafe impl Send for ImportAndroidHardwareBufferInfoANDROID {}
10086unsafe impl Sync for ImportAndroidHardwareBufferInfoANDROID {}
10087
10088/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportFenceFdInfoKHR.html>
10089#[repr(C)]
10090#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10091pub struct ImportFenceFdInfoKHR {
10092    pub s_type: StructureType,
10093    pub next: *const c_void,
10094    pub fence: Fence,
10095    pub flags: FenceImportFlags,
10096    pub handle_type: ExternalFenceHandleTypeFlags,
10097    pub fd: c_int,
10098}
10099
10100impl Default for ImportFenceFdInfoKHR {
10101    #[inline]
10102    fn default() -> Self {
10103        Self {
10104            s_type: StructureType::IMPORT_FENCE_FD_INFO_KHR,
10105            next: ptr::null(),
10106            fence: Fence::default(),
10107            flags: FenceImportFlags::default(),
10108            handle_type: ExternalFenceHandleTypeFlags::default(),
10109            fd: c_int::default(),
10110        }
10111    }
10112}
10113
10114unsafe impl Send for ImportFenceFdInfoKHR {}
10115unsafe impl Sync for ImportFenceFdInfoKHR {}
10116
10117/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportFenceSciSyncInfoNV.html>
10118#[repr(C)]
10119#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10120pub struct ImportFenceSciSyncInfoNV {
10121    pub s_type: StructureType,
10122    pub next: *const c_void,
10123    pub fence: Fence,
10124    pub handle_type: ExternalFenceHandleTypeFlags,
10125    pub handle: *mut c_void,
10126}
10127
10128impl Default for ImportFenceSciSyncInfoNV {
10129    #[inline]
10130    fn default() -> Self {
10131        Self {
10132            s_type: StructureType::IMPORT_FENCE_SCI_SYNC_INFO_NV,
10133            next: ptr::null(),
10134            fence: Fence::default(),
10135            handle_type: ExternalFenceHandleTypeFlags::default(),
10136            handle: ptr::null_mut(),
10137        }
10138    }
10139}
10140
10141unsafe impl Send for ImportFenceSciSyncInfoNV {}
10142unsafe impl Sync for ImportFenceSciSyncInfoNV {}
10143
10144/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportFenceWin32HandleInfoKHR.html>
10145#[repr(C)]
10146#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10147pub struct ImportFenceWin32HandleInfoKHR {
10148    pub s_type: StructureType,
10149    pub next: *const c_void,
10150    pub fence: Fence,
10151    pub flags: FenceImportFlags,
10152    pub handle_type: ExternalFenceHandleTypeFlags,
10153    pub handle: HANDLE,
10154    pub name: LPCWSTR,
10155}
10156
10157impl Default for ImportFenceWin32HandleInfoKHR {
10158    #[inline]
10159    fn default() -> Self {
10160        Self {
10161            s_type: StructureType::IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,
10162            next: ptr::null(),
10163            fence: Fence::default(),
10164            flags: FenceImportFlags::default(),
10165            handle_type: ExternalFenceHandleTypeFlags::default(),
10166            handle: ptr::null_mut(),
10167            name: ptr::null_mut(),
10168        }
10169    }
10170}
10171
10172unsafe impl Send for ImportFenceWin32HandleInfoKHR {}
10173unsafe impl Sync for ImportFenceWin32HandleInfoKHR {}
10174
10175/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryBufferCollectionFUCHSIA.html>
10176#[repr(C)]
10177#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10178pub struct ImportMemoryBufferCollectionFUCHSIA {
10179    pub s_type: StructureType,
10180    pub next: *const c_void,
10181    pub collection: BufferCollectionFUCHSIA,
10182    pub index: u32,
10183}
10184
10185impl Default for ImportMemoryBufferCollectionFUCHSIA {
10186    #[inline]
10187    fn default() -> Self {
10188        Self {
10189            s_type: StructureType::IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA,
10190            next: ptr::null(),
10191            collection: BufferCollectionFUCHSIA::default(),
10192            index: u32::default(),
10193        }
10194    }
10195}
10196
10197unsafe impl Send for ImportMemoryBufferCollectionFUCHSIA {}
10198unsafe impl Sync for ImportMemoryBufferCollectionFUCHSIA {}
10199
10200/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryFdInfoKHR.html>
10201#[repr(C)]
10202#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10203pub struct ImportMemoryFdInfoKHR {
10204    pub s_type: StructureType,
10205    pub next: *const c_void,
10206    pub handle_type: ExternalMemoryHandleTypeFlags,
10207    pub fd: c_int,
10208}
10209
10210impl Default for ImportMemoryFdInfoKHR {
10211    #[inline]
10212    fn default() -> Self {
10213        Self {
10214            s_type: StructureType::IMPORT_MEMORY_FD_INFO_KHR,
10215            next: ptr::null(),
10216            handle_type: ExternalMemoryHandleTypeFlags::default(),
10217            fd: c_int::default(),
10218        }
10219    }
10220}
10221
10222unsafe impl Send for ImportMemoryFdInfoKHR {}
10223unsafe impl Sync for ImportMemoryFdInfoKHR {}
10224
10225/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryHostPointerInfoEXT.html>
10226#[repr(C)]
10227#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10228pub struct ImportMemoryHostPointerInfoEXT {
10229    pub s_type: StructureType,
10230    pub next: *const c_void,
10231    pub handle_type: ExternalMemoryHandleTypeFlags,
10232    pub host_pointer: *mut c_void,
10233}
10234
10235impl Default for ImportMemoryHostPointerInfoEXT {
10236    #[inline]
10237    fn default() -> Self {
10238        Self {
10239            s_type: StructureType::IMPORT_MEMORY_HOST_POINTER_INFO_EXT,
10240            next: ptr::null(),
10241            handle_type: ExternalMemoryHandleTypeFlags::default(),
10242            host_pointer: ptr::null_mut(),
10243        }
10244    }
10245}
10246
10247unsafe impl Send for ImportMemoryHostPointerInfoEXT {}
10248unsafe impl Sync for ImportMemoryHostPointerInfoEXT {}
10249
10250/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryMetalHandleInfoEXT.html>
10251#[repr(C)]
10252#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10253pub struct ImportMemoryMetalHandleInfoEXT {
10254    pub s_type: StructureType,
10255    pub next: *const c_void,
10256    pub handle_type: ExternalMemoryHandleTypeFlags,
10257    pub handle: *mut c_void,
10258}
10259
10260impl Default for ImportMemoryMetalHandleInfoEXT {
10261    #[inline]
10262    fn default() -> Self {
10263        Self {
10264            s_type: StructureType::IMPORT_MEMORY_METAL_HANDLE_INFO_EXT,
10265            next: ptr::null(),
10266            handle_type: ExternalMemoryHandleTypeFlags::default(),
10267            handle: ptr::null_mut(),
10268        }
10269    }
10270}
10271
10272unsafe impl Send for ImportMemoryMetalHandleInfoEXT {}
10273unsafe impl Sync for ImportMemoryMetalHandleInfoEXT {}
10274
10275/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemorySciBufInfoNV.html>
10276#[repr(C)]
10277#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10278pub struct ImportMemorySciBufInfoNV {
10279    pub s_type: StructureType,
10280    pub next: *const c_void,
10281    pub handle_type: ExternalMemoryHandleTypeFlags,
10282    pub handle: NvSciBufObj,
10283}
10284
10285impl Default for ImportMemorySciBufInfoNV {
10286    #[inline]
10287    fn default() -> Self {
10288        Self {
10289            s_type: StructureType::IMPORT_MEMORY_SCI_BUF_INFO_NV,
10290            next: ptr::null(),
10291            handle_type: ExternalMemoryHandleTypeFlags::default(),
10292            handle: ptr::null_mut(),
10293        }
10294    }
10295}
10296
10297unsafe impl Send for ImportMemorySciBufInfoNV {}
10298unsafe impl Sync for ImportMemorySciBufInfoNV {}
10299
10300/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryWin32HandleInfoKHR.html>
10301#[repr(C)]
10302#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10303pub struct ImportMemoryWin32HandleInfoKHR {
10304    pub s_type: StructureType,
10305    pub next: *const c_void,
10306    pub handle_type: ExternalMemoryHandleTypeFlags,
10307    pub handle: HANDLE,
10308    pub name: LPCWSTR,
10309}
10310
10311impl Default for ImportMemoryWin32HandleInfoKHR {
10312    #[inline]
10313    fn default() -> Self {
10314        Self {
10315            s_type: StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
10316            next: ptr::null(),
10317            handle_type: ExternalMemoryHandleTypeFlags::default(),
10318            handle: ptr::null_mut(),
10319            name: ptr::null_mut(),
10320        }
10321    }
10322}
10323
10324unsafe impl Send for ImportMemoryWin32HandleInfoKHR {}
10325unsafe impl Sync for ImportMemoryWin32HandleInfoKHR {}
10326
10327/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryWin32HandleInfoNV.html>
10328#[repr(C)]
10329#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10330pub struct ImportMemoryWin32HandleInfoNV {
10331    pub s_type: StructureType,
10332    pub next: *const c_void,
10333    pub handle_type: ExternalMemoryHandleTypeFlagsNV,
10334    pub handle: HANDLE,
10335}
10336
10337impl Default for ImportMemoryWin32HandleInfoNV {
10338    #[inline]
10339    fn default() -> Self {
10340        Self {
10341            s_type: StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
10342            next: ptr::null(),
10343            handle_type: ExternalMemoryHandleTypeFlagsNV::default(),
10344            handle: ptr::null_mut(),
10345        }
10346    }
10347}
10348
10349unsafe impl Send for ImportMemoryWin32HandleInfoNV {}
10350unsafe impl Sync for ImportMemoryWin32HandleInfoNV {}
10351
10352/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryZirconHandleInfoFUCHSIA.html>
10353#[repr(C)]
10354#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10355pub struct ImportMemoryZirconHandleInfoFUCHSIA {
10356    pub s_type: StructureType,
10357    pub next: *const c_void,
10358    pub handle_type: ExternalMemoryHandleTypeFlags,
10359    pub handle: zx_handle_t,
10360}
10361
10362impl Default for ImportMemoryZirconHandleInfoFUCHSIA {
10363    #[inline]
10364    fn default() -> Self {
10365        Self {
10366            s_type: StructureType::IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA,
10367            next: ptr::null(),
10368            handle_type: ExternalMemoryHandleTypeFlags::default(),
10369            handle: zx_handle_t::default(),
10370        }
10371    }
10372}
10373
10374unsafe impl Send for ImportMemoryZirconHandleInfoFUCHSIA {}
10375unsafe impl Sync for ImportMemoryZirconHandleInfoFUCHSIA {}
10376
10377/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalBufferInfoEXT.html>
10378#[repr(C)]
10379#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10380pub struct ImportMetalBufferInfoEXT {
10381    pub s_type: StructureType,
10382    pub next: *const c_void,
10383    pub mtl_buffer: MTLBuffer_id,
10384}
10385
10386impl Default for ImportMetalBufferInfoEXT {
10387    #[inline]
10388    fn default() -> Self {
10389        Self {
10390            s_type: StructureType::IMPORT_METAL_BUFFER_INFO_EXT,
10391            next: ptr::null(),
10392            mtl_buffer: ptr::null_mut(),
10393        }
10394    }
10395}
10396
10397unsafe impl Send for ImportMetalBufferInfoEXT {}
10398unsafe impl Sync for ImportMetalBufferInfoEXT {}
10399
10400/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalIOSurfaceInfoEXT.html>
10401#[repr(C)]
10402#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10403pub struct ImportMetalIOSurfaceInfoEXT {
10404    pub s_type: StructureType,
10405    pub next: *const c_void,
10406    pub io_surface: IOSurfaceRef,
10407}
10408
10409impl Default for ImportMetalIOSurfaceInfoEXT {
10410    #[inline]
10411    fn default() -> Self {
10412        Self {
10413            s_type: StructureType::IMPORT_METAL_IO_SURFACE_INFO_EXT,
10414            next: ptr::null(),
10415            io_surface: ptr::null_mut(),
10416        }
10417    }
10418}
10419
10420unsafe impl Send for ImportMetalIOSurfaceInfoEXT {}
10421unsafe impl Sync for ImportMetalIOSurfaceInfoEXT {}
10422
10423/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalSharedEventInfoEXT.html>
10424#[repr(C)]
10425#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10426pub struct ImportMetalSharedEventInfoEXT {
10427    pub s_type: StructureType,
10428    pub next: *const c_void,
10429    pub mtl_shared_event: MTLSharedEvent_id,
10430}
10431
10432impl Default for ImportMetalSharedEventInfoEXT {
10433    #[inline]
10434    fn default() -> Self {
10435        Self {
10436            s_type: StructureType::IMPORT_METAL_SHARED_EVENT_INFO_EXT,
10437            next: ptr::null(),
10438            mtl_shared_event: ptr::null_mut(),
10439        }
10440    }
10441}
10442
10443unsafe impl Send for ImportMetalSharedEventInfoEXT {}
10444unsafe impl Sync for ImportMetalSharedEventInfoEXT {}
10445
10446/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalTextureInfoEXT.html>
10447#[repr(C)]
10448#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10449pub struct ImportMetalTextureInfoEXT {
10450    pub s_type: StructureType,
10451    pub next: *const c_void,
10452    pub plane: ImageAspectFlags,
10453    pub mtl_texture: MTLTexture_id,
10454}
10455
10456impl Default for ImportMetalTextureInfoEXT {
10457    #[inline]
10458    fn default() -> Self {
10459        Self {
10460            s_type: StructureType::IMPORT_METAL_TEXTURE_INFO_EXT,
10461            next: ptr::null(),
10462            plane: ImageAspectFlags::default(),
10463            mtl_texture: ptr::null_mut(),
10464        }
10465    }
10466}
10467
10468unsafe impl Send for ImportMetalTextureInfoEXT {}
10469unsafe impl Sync for ImportMetalTextureInfoEXT {}
10470
10471/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportNativeBufferInfoOHOS.html>
10472#[repr(C)]
10473#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10474pub struct ImportNativeBufferInfoOHOS {
10475    pub s_type: StructureType,
10476    pub next: *const c_void,
10477    pub buffer: *mut OH_NativeBuffer,
10478}
10479
10480impl Default for ImportNativeBufferInfoOHOS {
10481    #[inline]
10482    fn default() -> Self {
10483        Self {
10484            s_type: StructureType::IMPORT_NATIVE_BUFFER_INFO_OHOS,
10485            next: ptr::null(),
10486            buffer: ptr::null_mut(),
10487        }
10488    }
10489}
10490
10491unsafe impl Send for ImportNativeBufferInfoOHOS {}
10492unsafe impl Sync for ImportNativeBufferInfoOHOS {}
10493
10494/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportScreenBufferInfoQNX.html>
10495#[repr(C)]
10496#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10497pub struct ImportScreenBufferInfoQNX {
10498    pub s_type: StructureType,
10499    pub next: *const c_void,
10500    pub buffer: *mut _screen_buffer,
10501}
10502
10503impl Default for ImportScreenBufferInfoQNX {
10504    #[inline]
10505    fn default() -> Self {
10506        Self {
10507            s_type: StructureType::IMPORT_SCREEN_BUFFER_INFO_QNX,
10508            next: ptr::null(),
10509            buffer: ptr::null_mut(),
10510        }
10511    }
10512}
10513
10514unsafe impl Send for ImportScreenBufferInfoQNX {}
10515unsafe impl Sync for ImportScreenBufferInfoQNX {}
10516
10517/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreFdInfoKHR.html>
10518#[repr(C)]
10519#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10520pub struct ImportSemaphoreFdInfoKHR {
10521    pub s_type: StructureType,
10522    pub next: *const c_void,
10523    pub semaphore: Semaphore,
10524    pub flags: SemaphoreImportFlags,
10525    pub handle_type: ExternalSemaphoreHandleTypeFlags,
10526    pub fd: c_int,
10527}
10528
10529impl Default for ImportSemaphoreFdInfoKHR {
10530    #[inline]
10531    fn default() -> Self {
10532        Self {
10533            s_type: StructureType::IMPORT_SEMAPHORE_FD_INFO_KHR,
10534            next: ptr::null(),
10535            semaphore: Semaphore::default(),
10536            flags: SemaphoreImportFlags::default(),
10537            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
10538            fd: c_int::default(),
10539        }
10540    }
10541}
10542
10543unsafe impl Send for ImportSemaphoreFdInfoKHR {}
10544unsafe impl Sync for ImportSemaphoreFdInfoKHR {}
10545
10546/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreSciSyncInfoNV.html>
10547#[repr(C)]
10548#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10549pub struct ImportSemaphoreSciSyncInfoNV {
10550    pub s_type: StructureType,
10551    pub next: *const c_void,
10552    pub semaphore: Semaphore,
10553    pub handle_type: ExternalSemaphoreHandleTypeFlags,
10554    pub handle: *mut c_void,
10555}
10556
10557impl Default for ImportSemaphoreSciSyncInfoNV {
10558    #[inline]
10559    fn default() -> Self {
10560        Self {
10561            s_type: StructureType::IMPORT_SEMAPHORE_SCI_SYNC_INFO_NV,
10562            next: ptr::null(),
10563            semaphore: Semaphore::default(),
10564            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
10565            handle: ptr::null_mut(),
10566        }
10567    }
10568}
10569
10570unsafe impl Send for ImportSemaphoreSciSyncInfoNV {}
10571unsafe impl Sync for ImportSemaphoreSciSyncInfoNV {}
10572
10573/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreWin32HandleInfoKHR.html>
10574#[repr(C)]
10575#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10576pub struct ImportSemaphoreWin32HandleInfoKHR {
10577    pub s_type: StructureType,
10578    pub next: *const c_void,
10579    pub semaphore: Semaphore,
10580    pub flags: SemaphoreImportFlags,
10581    pub handle_type: ExternalSemaphoreHandleTypeFlags,
10582    pub handle: HANDLE,
10583    pub name: LPCWSTR,
10584}
10585
10586impl Default for ImportSemaphoreWin32HandleInfoKHR {
10587    #[inline]
10588    fn default() -> Self {
10589        Self {
10590            s_type: StructureType::IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
10591            next: ptr::null(),
10592            semaphore: Semaphore::default(),
10593            flags: SemaphoreImportFlags::default(),
10594            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
10595            handle: ptr::null_mut(),
10596            name: ptr::null_mut(),
10597        }
10598    }
10599}
10600
10601unsafe impl Send for ImportSemaphoreWin32HandleInfoKHR {}
10602unsafe impl Sync for ImportSemaphoreWin32HandleInfoKHR {}
10603
10604/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreZirconHandleInfoFUCHSIA.html>
10605#[repr(C)]
10606#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10607pub struct ImportSemaphoreZirconHandleInfoFUCHSIA {
10608    pub s_type: StructureType,
10609    pub next: *const c_void,
10610    pub semaphore: Semaphore,
10611    pub flags: SemaphoreImportFlags,
10612    pub handle_type: ExternalSemaphoreHandleTypeFlags,
10613    pub zircon_handle: zx_handle_t,
10614}
10615
10616impl Default for ImportSemaphoreZirconHandleInfoFUCHSIA {
10617    #[inline]
10618    fn default() -> Self {
10619        Self {
10620            s_type: StructureType::IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA,
10621            next: ptr::null(),
10622            semaphore: Semaphore::default(),
10623            flags: SemaphoreImportFlags::default(),
10624            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
10625            zircon_handle: zx_handle_t::default(),
10626        }
10627    }
10628}
10629
10630unsafe impl Send for ImportSemaphoreZirconHandleInfoFUCHSIA {}
10631unsafe impl Sync for ImportSemaphoreZirconHandleInfoFUCHSIA {}
10632
10633/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsExecutionSetTokenEXT.html>
10634#[repr(C)]
10635#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10636pub struct IndirectCommandsExecutionSetTokenEXT {
10637    pub type_: IndirectExecutionSetInfoTypeEXT,
10638    pub shader_stages: ShaderStageFlags,
10639}
10640
10641/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsIndexBufferTokenEXT.html>
10642#[repr(C)]
10643#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10644pub struct IndirectCommandsIndexBufferTokenEXT {
10645    pub mode: IndirectCommandsInputModeFlagsEXT,
10646}
10647
10648/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutCreateInfoEXT.html>
10649#[repr(C)]
10650#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10651pub struct IndirectCommandsLayoutCreateInfoEXT {
10652    pub s_type: StructureType,
10653    pub next: *const c_void,
10654    pub flags: IndirectCommandsLayoutUsageFlagsEXT,
10655    pub shader_stages: ShaderStageFlags,
10656    pub indirect_stride: u32,
10657    pub pipeline_layout: PipelineLayout,
10658    pub token_count: u32,
10659    pub tokens: *const IndirectCommandsLayoutTokenEXT,
10660}
10661
10662impl Default for IndirectCommandsLayoutCreateInfoEXT {
10663    #[inline]
10664    fn default() -> Self {
10665        Self {
10666            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT,
10667            next: ptr::null(),
10668            flags: IndirectCommandsLayoutUsageFlagsEXT::default(),
10669            shader_stages: ShaderStageFlags::default(),
10670            indirect_stride: u32::default(),
10671            pipeline_layout: PipelineLayout::default(),
10672            token_count: u32::default(),
10673            tokens: ptr::null(),
10674        }
10675    }
10676}
10677
10678unsafe impl Send for IndirectCommandsLayoutCreateInfoEXT {}
10679unsafe impl Sync for IndirectCommandsLayoutCreateInfoEXT {}
10680
10681/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutCreateInfoNV.html>
10682#[repr(C)]
10683#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10684pub struct IndirectCommandsLayoutCreateInfoNV {
10685    pub s_type: StructureType,
10686    pub next: *const c_void,
10687    pub flags: IndirectCommandsLayoutUsageFlagsNV,
10688    pub pipeline_bind_point: PipelineBindPoint,
10689    pub token_count: u32,
10690    pub tokens: *const IndirectCommandsLayoutTokenNV,
10691    pub stream_count: u32,
10692    pub stream_strides: *const u32,
10693}
10694
10695impl Default for IndirectCommandsLayoutCreateInfoNV {
10696    #[inline]
10697    fn default() -> Self {
10698        Self {
10699            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV,
10700            next: ptr::null(),
10701            flags: IndirectCommandsLayoutUsageFlagsNV::default(),
10702            pipeline_bind_point: PipelineBindPoint::default(),
10703            token_count: u32::default(),
10704            tokens: ptr::null(),
10705            stream_count: u32::default(),
10706            stream_strides: ptr::null(),
10707        }
10708    }
10709}
10710
10711unsafe impl Send for IndirectCommandsLayoutCreateInfoNV {}
10712unsafe impl Sync for IndirectCommandsLayoutCreateInfoNV {}
10713
10714/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutTokenEXT.html>
10715#[repr(C)]
10716#[derive(Copy, Clone, Debug)]
10717pub struct IndirectCommandsLayoutTokenEXT {
10718    pub s_type: StructureType,
10719    pub next: *const c_void,
10720    pub type_: IndirectCommandsTokenTypeEXT,
10721    pub data: IndirectCommandsTokenDataEXT,
10722    pub offset: u32,
10723}
10724
10725impl Default for IndirectCommandsLayoutTokenEXT {
10726    #[inline]
10727    fn default() -> Self {
10728        Self {
10729            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT,
10730            next: ptr::null(),
10731            type_: IndirectCommandsTokenTypeEXT::default(),
10732            data: IndirectCommandsTokenDataEXT::default(),
10733            offset: u32::default(),
10734        }
10735    }
10736}
10737
10738unsafe impl Send for IndirectCommandsLayoutTokenEXT {}
10739unsafe impl Sync for IndirectCommandsLayoutTokenEXT {}
10740
10741/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutTokenNV.html>
10742#[repr(C)]
10743#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10744pub struct IndirectCommandsLayoutTokenNV {
10745    pub s_type: StructureType,
10746    pub next: *const c_void,
10747    pub token_type: IndirectCommandsTokenTypeNV,
10748    pub stream: u32,
10749    pub offset: u32,
10750    pub vertex_binding_unit: u32,
10751    pub vertex_dynamic_stride: Bool32,
10752    pub pushconstant_pipeline_layout: PipelineLayout,
10753    pub pushconstant_shader_stage_flags: ShaderStageFlags,
10754    pub pushconstant_offset: u32,
10755    pub pushconstant_size: u32,
10756    pub indirect_state_flags: IndirectStateFlagsNV,
10757    pub index_type_count: u32,
10758    pub index_types: *const IndexType,
10759    pub index_type_values: *const u32,
10760}
10761
10762impl Default for IndirectCommandsLayoutTokenNV {
10763    #[inline]
10764    fn default() -> Self {
10765        Self {
10766            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_TOKEN_NV,
10767            next: ptr::null(),
10768            token_type: IndirectCommandsTokenTypeNV::default(),
10769            stream: u32::default(),
10770            offset: u32::default(),
10771            vertex_binding_unit: u32::default(),
10772            vertex_dynamic_stride: Bool32::default(),
10773            pushconstant_pipeline_layout: PipelineLayout::default(),
10774            pushconstant_shader_stage_flags: ShaderStageFlags::default(),
10775            pushconstant_offset: u32::default(),
10776            pushconstant_size: u32::default(),
10777            indirect_state_flags: IndirectStateFlagsNV::default(),
10778            index_type_count: u32::default(),
10779            index_types: ptr::null(),
10780            index_type_values: ptr::null(),
10781        }
10782    }
10783}
10784
10785unsafe impl Send for IndirectCommandsLayoutTokenNV {}
10786unsafe impl Sync for IndirectCommandsLayoutTokenNV {}
10787
10788/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsPushConstantTokenEXT.html>
10789#[repr(C)]
10790#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10791pub struct IndirectCommandsPushConstantTokenEXT {
10792    pub update_range: PushConstantRange,
10793}
10794
10795/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsStreamNV.html>
10796#[repr(C)]
10797#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10798pub struct IndirectCommandsStreamNV {
10799    pub buffer: Buffer,
10800    pub offset: DeviceSize,
10801}
10802
10803/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsVertexBufferTokenEXT.html>
10804#[repr(C)]
10805#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10806pub struct IndirectCommandsVertexBufferTokenEXT {
10807    pub vertex_binding_unit: u32,
10808}
10809
10810/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetCreateInfoEXT.html>
10811#[repr(C)]
10812#[derive(Copy, Clone, Debug)]
10813pub struct IndirectExecutionSetCreateInfoEXT {
10814    pub s_type: StructureType,
10815    pub next: *const c_void,
10816    pub type_: IndirectExecutionSetInfoTypeEXT,
10817    pub info: IndirectExecutionSetInfoEXT,
10818}
10819
10820impl Default for IndirectExecutionSetCreateInfoEXT {
10821    #[inline]
10822    fn default() -> Self {
10823        Self {
10824            s_type: StructureType::INDIRECT_EXECUTION_SET_CREATE_INFO_EXT,
10825            next: ptr::null(),
10826            type_: IndirectExecutionSetInfoTypeEXT::default(),
10827            info: IndirectExecutionSetInfoEXT::default(),
10828        }
10829    }
10830}
10831
10832unsafe impl Send for IndirectExecutionSetCreateInfoEXT {}
10833unsafe impl Sync for IndirectExecutionSetCreateInfoEXT {}
10834
10835/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetPipelineInfoEXT.html>
10836#[repr(C)]
10837#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10838pub struct IndirectExecutionSetPipelineInfoEXT {
10839    pub s_type: StructureType,
10840    pub next: *const c_void,
10841    pub initial_pipeline: Pipeline,
10842    pub max_pipeline_count: u32,
10843}
10844
10845impl Default for IndirectExecutionSetPipelineInfoEXT {
10846    #[inline]
10847    fn default() -> Self {
10848        Self {
10849            s_type: StructureType::INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT,
10850            next: ptr::null(),
10851            initial_pipeline: Pipeline::default(),
10852            max_pipeline_count: u32::default(),
10853        }
10854    }
10855}
10856
10857unsafe impl Send for IndirectExecutionSetPipelineInfoEXT {}
10858unsafe impl Sync for IndirectExecutionSetPipelineInfoEXT {}
10859
10860/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetShaderInfoEXT.html>
10861#[repr(C)]
10862#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10863pub struct IndirectExecutionSetShaderInfoEXT {
10864    pub s_type: StructureType,
10865    pub next: *const c_void,
10866    pub shader_count: u32,
10867    pub initial_shaders: *const ShaderEXT,
10868    pub set_layout_infos: *const IndirectExecutionSetShaderLayoutInfoEXT,
10869    pub max_shader_count: u32,
10870    pub push_constant_range_count: u32,
10871    pub push_constant_ranges: *const PushConstantRange,
10872}
10873
10874impl Default for IndirectExecutionSetShaderInfoEXT {
10875    #[inline]
10876    fn default() -> Self {
10877        Self {
10878            s_type: StructureType::INDIRECT_EXECUTION_SET_SHADER_INFO_EXT,
10879            next: ptr::null(),
10880            shader_count: u32::default(),
10881            initial_shaders: ptr::null(),
10882            set_layout_infos: ptr::null(),
10883            max_shader_count: u32::default(),
10884            push_constant_range_count: u32::default(),
10885            push_constant_ranges: ptr::null(),
10886        }
10887    }
10888}
10889
10890unsafe impl Send for IndirectExecutionSetShaderInfoEXT {}
10891unsafe impl Sync for IndirectExecutionSetShaderInfoEXT {}
10892
10893/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetShaderLayoutInfoEXT.html>
10894#[repr(C)]
10895#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10896pub struct IndirectExecutionSetShaderLayoutInfoEXT {
10897    pub s_type: StructureType,
10898    pub next: *const c_void,
10899    pub set_layout_count: u32,
10900    pub set_layouts: *const DescriptorSetLayout,
10901}
10902
10903impl Default for IndirectExecutionSetShaderLayoutInfoEXT {
10904    #[inline]
10905    fn default() -> Self {
10906        Self {
10907            s_type: StructureType::INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT,
10908            next: ptr::null(),
10909            set_layout_count: u32::default(),
10910            set_layouts: ptr::null(),
10911        }
10912    }
10913}
10914
10915unsafe impl Send for IndirectExecutionSetShaderLayoutInfoEXT {}
10916unsafe impl Sync for IndirectExecutionSetShaderLayoutInfoEXT {}
10917
10918/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInitializePerformanceApiInfoINTEL.html>
10919#[repr(C)]
10920#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10921pub struct InitializePerformanceApiInfoINTEL {
10922    pub s_type: StructureType,
10923    pub next: *const c_void,
10924    pub user_data: *mut c_void,
10925}
10926
10927impl Default for InitializePerformanceApiInfoINTEL {
10928    #[inline]
10929    fn default() -> Self {
10930        Self {
10931            s_type: StructureType::INITIALIZE_PERFORMANCE_API_INFO_INTEL,
10932            next: ptr::null(),
10933            user_data: ptr::null_mut(),
10934        }
10935    }
10936}
10937
10938unsafe impl Send for InitializePerformanceApiInfoINTEL {}
10939unsafe impl Sync for InitializePerformanceApiInfoINTEL {}
10940
10941/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInputAttachmentAspectReference.html>
10942#[repr(C)]
10943#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10944pub struct InputAttachmentAspectReference {
10945    pub subpass: u32,
10946    pub input_attachment_index: u32,
10947    pub aspect_mask: ImageAspectFlags,
10948}
10949
10950/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInstanceCreateInfo.html>
10951#[repr(C)]
10952#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10953pub struct InstanceCreateInfo {
10954    pub s_type: StructureType,
10955    pub next: *const c_void,
10956    pub flags: InstanceCreateFlags,
10957    pub application_info: *const ApplicationInfo,
10958    pub enabled_layer_count: u32,
10959    pub enabled_layer_names: *const *const c_char,
10960    pub enabled_extension_count: u32,
10961    pub enabled_extension_names: *const *const c_char,
10962}
10963
10964impl Default for InstanceCreateInfo {
10965    #[inline]
10966    fn default() -> Self {
10967        Self {
10968            s_type: StructureType::INSTANCE_CREATE_INFO,
10969            next: ptr::null(),
10970            flags: InstanceCreateFlags::default(),
10971            application_info: ptr::null(),
10972            enabled_layer_count: u32::default(),
10973            enabled_layer_names: ptr::null(),
10974            enabled_extension_count: u32::default(),
10975            enabled_extension_names: ptr::null(),
10976        }
10977    }
10978}
10979
10980unsafe impl Send for InstanceCreateInfo {}
10981unsafe impl Sync for InstanceCreateInfo {}
10982
10983/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySleepInfoNV.html>
10984#[repr(C)]
10985#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10986pub struct LatencySleepInfoNV {
10987    pub s_type: StructureType,
10988    pub next: *const c_void,
10989    pub signal_semaphore: Semaphore,
10990    pub value: u64,
10991}
10992
10993impl Default for LatencySleepInfoNV {
10994    #[inline]
10995    fn default() -> Self {
10996        Self {
10997            s_type: StructureType::LATENCY_SLEEP_INFO_NV,
10998            next: ptr::null(),
10999            signal_semaphore: Semaphore::default(),
11000            value: u64::default(),
11001        }
11002    }
11003}
11004
11005unsafe impl Send for LatencySleepInfoNV {}
11006unsafe impl Sync for LatencySleepInfoNV {}
11007
11008/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySleepModeInfoNV.html>
11009#[repr(C)]
11010#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11011pub struct LatencySleepModeInfoNV {
11012    pub s_type: StructureType,
11013    pub next: *const c_void,
11014    pub low_latency_mode: Bool32,
11015    pub low_latency_boost: Bool32,
11016    pub minimum_interval_us: u32,
11017}
11018
11019impl Default for LatencySleepModeInfoNV {
11020    #[inline]
11021    fn default() -> Self {
11022        Self {
11023            s_type: StructureType::LATENCY_SLEEP_MODE_INFO_NV,
11024            next: ptr::null(),
11025            low_latency_mode: Bool32::default(),
11026            low_latency_boost: Bool32::default(),
11027            minimum_interval_us: u32::default(),
11028        }
11029    }
11030}
11031
11032unsafe impl Send for LatencySleepModeInfoNV {}
11033unsafe impl Sync for LatencySleepModeInfoNV {}
11034
11035/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySubmissionPresentIdNV.html>
11036#[repr(C)]
11037#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11038pub struct LatencySubmissionPresentIdNV {
11039    pub s_type: StructureType,
11040    pub next: *const c_void,
11041    pub present_id: u64,
11042}
11043
11044impl Default for LatencySubmissionPresentIdNV {
11045    #[inline]
11046    fn default() -> Self {
11047        Self {
11048            s_type: StructureType::LATENCY_SUBMISSION_PRESENT_ID_NV,
11049            next: ptr::null(),
11050            present_id: u64::default(),
11051        }
11052    }
11053}
11054
11055unsafe impl Send for LatencySubmissionPresentIdNV {}
11056unsafe impl Sync for LatencySubmissionPresentIdNV {}
11057
11058/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySurfaceCapabilitiesNV.html>
11059#[repr(C)]
11060#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11061pub struct LatencySurfaceCapabilitiesNV {
11062    pub s_type: StructureType,
11063    pub next: *const c_void,
11064    pub present_mode_count: u32,
11065    pub present_modes: *mut PresentModeKHR,
11066}
11067
11068impl Default for LatencySurfaceCapabilitiesNV {
11069    #[inline]
11070    fn default() -> Self {
11071        Self {
11072            s_type: StructureType::LATENCY_SURFACE_CAPABILITIES_NV,
11073            next: ptr::null(),
11074            present_mode_count: u32::default(),
11075            present_modes: ptr::null_mut(),
11076        }
11077    }
11078}
11079
11080unsafe impl Send for LatencySurfaceCapabilitiesNV {}
11081unsafe impl Sync for LatencySurfaceCapabilitiesNV {}
11082
11083/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencyTimingsFrameReportNV.html>
11084#[repr(C)]
11085#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11086pub struct LatencyTimingsFrameReportNV {
11087    pub s_type: StructureType,
11088    pub next: *const c_void,
11089    pub present_id: u64,
11090    pub input_sample_time_us: u64,
11091    pub sim_start_time_us: u64,
11092    pub sim_end_time_us: u64,
11093    pub render_submit_start_time_us: u64,
11094    pub render_submit_end_time_us: u64,
11095    pub present_start_time_us: u64,
11096    pub present_end_time_us: u64,
11097    pub driver_start_time_us: u64,
11098    pub driver_end_time_us: u64,
11099    pub os_render_queue_start_time_us: u64,
11100    pub os_render_queue_end_time_us: u64,
11101    pub gpu_render_start_time_us: u64,
11102    pub gpu_render_end_time_us: u64,
11103}
11104
11105impl Default for LatencyTimingsFrameReportNV {
11106    #[inline]
11107    fn default() -> Self {
11108        Self {
11109            s_type: StructureType::LATENCY_TIMINGS_FRAME_REPORT_NV,
11110            next: ptr::null(),
11111            present_id: u64::default(),
11112            input_sample_time_us: u64::default(),
11113            sim_start_time_us: u64::default(),
11114            sim_end_time_us: u64::default(),
11115            render_submit_start_time_us: u64::default(),
11116            render_submit_end_time_us: u64::default(),
11117            present_start_time_us: u64::default(),
11118            present_end_time_us: u64::default(),
11119            driver_start_time_us: u64::default(),
11120            driver_end_time_us: u64::default(),
11121            os_render_queue_start_time_us: u64::default(),
11122            os_render_queue_end_time_us: u64::default(),
11123            gpu_render_start_time_us: u64::default(),
11124            gpu_render_end_time_us: u64::default(),
11125        }
11126    }
11127}
11128
11129unsafe impl Send for LatencyTimingsFrameReportNV {}
11130unsafe impl Sync for LatencyTimingsFrameReportNV {}
11131
11132/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLayerProperties.html>
11133#[repr(C)]
11134#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11135pub struct LayerProperties {
11136    pub layer_name: StringArray<MAX_EXTENSION_NAME_SIZE>,
11137    pub spec_version: u32,
11138    pub implementation_version: u32,
11139    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
11140}
11141
11142/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLayerSettingEXT.html>
11143#[repr(C)]
11144#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11145pub struct LayerSettingEXT {
11146    pub layer_name: *const c_char,
11147    pub setting_name: *const c_char,
11148    pub type_: LayerSettingTypeEXT,
11149    pub value_count: u32,
11150    pub values: *const c_void,
11151}
11152
11153impl Default for LayerSettingEXT {
11154    #[inline]
11155    fn default() -> Self {
11156        Self {
11157            layer_name: ptr::null(),
11158            setting_name: ptr::null(),
11159            type_: LayerSettingTypeEXT::default(),
11160            value_count: u32::default(),
11161            values: ptr::null(),
11162        }
11163    }
11164}
11165
11166unsafe impl Send for LayerSettingEXT {}
11167unsafe impl Sync for LayerSettingEXT {}
11168
11169/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLayerSettingsCreateInfoEXT.html>
11170#[repr(C)]
11171#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11172pub struct LayerSettingsCreateInfoEXT {
11173    pub s_type: StructureType,
11174    pub next: *const c_void,
11175    pub setting_count: u32,
11176    pub settings: *const LayerSettingEXT,
11177}
11178
11179impl Default for LayerSettingsCreateInfoEXT {
11180    #[inline]
11181    fn default() -> Self {
11182        Self {
11183            s_type: StructureType::LAYER_SETTINGS_CREATE_INFO_EXT,
11184            next: ptr::null(),
11185            setting_count: u32::default(),
11186            settings: ptr::null(),
11187        }
11188    }
11189}
11190
11191unsafe impl Send for LayerSettingsCreateInfoEXT {}
11192unsafe impl Sync for LayerSettingsCreateInfoEXT {}
11193
11194/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMacOSSurfaceCreateInfoMVK.html>
11195#[repr(C)]
11196#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11197pub struct MacOSSurfaceCreateInfoMVK {
11198    pub s_type: StructureType,
11199    pub next: *const c_void,
11200    pub flags: MacOSSurfaceCreateFlagsMVK,
11201    pub view: *const c_void,
11202}
11203
11204impl Default for MacOSSurfaceCreateInfoMVK {
11205    #[inline]
11206    fn default() -> Self {
11207        Self {
11208            s_type: StructureType::MACOS_SURFACE_CREATE_INFO_MVK,
11209            next: ptr::null(),
11210            flags: MacOSSurfaceCreateFlagsMVK::default(),
11211            view: ptr::null(),
11212        }
11213    }
11214}
11215
11216unsafe impl Send for MacOSSurfaceCreateInfoMVK {}
11217unsafe impl Sync for MacOSSurfaceCreateInfoMVK {}
11218
11219/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMappedMemoryRange.html>
11220#[repr(C)]
11221#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11222pub struct MappedMemoryRange {
11223    pub s_type: StructureType,
11224    pub next: *const c_void,
11225    pub memory: DeviceMemory,
11226    pub offset: DeviceSize,
11227    pub size: DeviceSize,
11228}
11229
11230impl Default for MappedMemoryRange {
11231    #[inline]
11232    fn default() -> Self {
11233        Self {
11234            s_type: StructureType::MAPPED_MEMORY_RANGE,
11235            next: ptr::null(),
11236            memory: DeviceMemory::default(),
11237            offset: DeviceSize::default(),
11238            size: DeviceSize::default(),
11239        }
11240    }
11241}
11242
11243unsafe impl Send for MappedMemoryRange {}
11244unsafe impl Sync for MappedMemoryRange {}
11245
11246/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateFlagsInfo.html>
11247#[repr(C)]
11248#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11249pub struct MemoryAllocateFlagsInfo {
11250    pub s_type: StructureType,
11251    pub next: *const c_void,
11252    pub flags: MemoryAllocateFlags,
11253    pub device_mask: u32,
11254}
11255
11256impl Default for MemoryAllocateFlagsInfo {
11257    #[inline]
11258    fn default() -> Self {
11259        Self {
11260            s_type: StructureType::MEMORY_ALLOCATE_FLAGS_INFO,
11261            next: ptr::null(),
11262            flags: MemoryAllocateFlags::default(),
11263            device_mask: u32::default(),
11264        }
11265    }
11266}
11267
11268unsafe impl Send for MemoryAllocateFlagsInfo {}
11269unsafe impl Sync for MemoryAllocateFlagsInfo {}
11270
11271/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateInfo.html>
11272#[repr(C)]
11273#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11274pub struct MemoryAllocateInfo {
11275    pub s_type: StructureType,
11276    pub next: *const c_void,
11277    pub allocation_size: DeviceSize,
11278    pub memory_type_index: u32,
11279}
11280
11281impl Default for MemoryAllocateInfo {
11282    #[inline]
11283    fn default() -> Self {
11284        Self {
11285            s_type: StructureType::MEMORY_ALLOCATE_INFO,
11286            next: ptr::null(),
11287            allocation_size: DeviceSize::default(),
11288            memory_type_index: u32::default(),
11289        }
11290    }
11291}
11292
11293unsafe impl Send for MemoryAllocateInfo {}
11294unsafe impl Sync for MemoryAllocateInfo {}
11295
11296/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrier.html>
11297#[repr(C)]
11298#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11299pub struct MemoryBarrier {
11300    pub s_type: StructureType,
11301    pub next: *const c_void,
11302    pub src_access_mask: AccessFlags,
11303    pub dst_access_mask: AccessFlags,
11304}
11305
11306impl Default for MemoryBarrier {
11307    #[inline]
11308    fn default() -> Self {
11309        Self {
11310            s_type: StructureType::MEMORY_BARRIER,
11311            next: ptr::null(),
11312            src_access_mask: AccessFlags::default(),
11313            dst_access_mask: AccessFlags::default(),
11314        }
11315    }
11316}
11317
11318unsafe impl Send for MemoryBarrier {}
11319unsafe impl Sync for MemoryBarrier {}
11320
11321/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrier2.html>
11322#[repr(C)]
11323#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11324pub struct MemoryBarrier2 {
11325    pub s_type: StructureType,
11326    pub next: *const c_void,
11327    pub src_stage_mask: PipelineStageFlags2,
11328    pub src_access_mask: AccessFlags2,
11329    pub dst_stage_mask: PipelineStageFlags2,
11330    pub dst_access_mask: AccessFlags2,
11331}
11332
11333impl Default for MemoryBarrier2 {
11334    #[inline]
11335    fn default() -> Self {
11336        Self {
11337            s_type: StructureType::MEMORY_BARRIER_2,
11338            next: ptr::null(),
11339            src_stage_mask: PipelineStageFlags2::default(),
11340            src_access_mask: AccessFlags2::default(),
11341            dst_stage_mask: PipelineStageFlags2::default(),
11342            dst_access_mask: AccessFlags2::default(),
11343        }
11344    }
11345}
11346
11347unsafe impl Send for MemoryBarrier2 {}
11348unsafe impl Sync for MemoryBarrier2 {}
11349
11350/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrierAccessFlags3KHR.html>
11351#[repr(C)]
11352#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11353pub struct MemoryBarrierAccessFlags3KHR {
11354    pub s_type: StructureType,
11355    pub next: *const c_void,
11356    pub src_access_mask3: AccessFlags3KHR,
11357    pub dst_access_mask3: AccessFlags3KHR,
11358}
11359
11360impl Default for MemoryBarrierAccessFlags3KHR {
11361    #[inline]
11362    fn default() -> Self {
11363        Self {
11364            s_type: StructureType::MEMORY_BARRIER_ACCESS_FLAGS_3_KHR,
11365            next: ptr::null(),
11366            src_access_mask3: AccessFlags3KHR::default(),
11367            dst_access_mask3: AccessFlags3KHR::default(),
11368        }
11369    }
11370}
11371
11372unsafe impl Send for MemoryBarrierAccessFlags3KHR {}
11373unsafe impl Sync for MemoryBarrierAccessFlags3KHR {}
11374
11375/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfo.html>
11376#[repr(C)]
11377#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11378pub struct MemoryDedicatedAllocateInfo {
11379    pub s_type: StructureType,
11380    pub next: *const c_void,
11381    pub image: Image,
11382    pub buffer: Buffer,
11383}
11384
11385impl Default for MemoryDedicatedAllocateInfo {
11386    #[inline]
11387    fn default() -> Self {
11388        Self {
11389            s_type: StructureType::MEMORY_DEDICATED_ALLOCATE_INFO,
11390            next: ptr::null(),
11391            image: Image::default(),
11392            buffer: Buffer::default(),
11393        }
11394    }
11395}
11396
11397unsafe impl Send for MemoryDedicatedAllocateInfo {}
11398unsafe impl Sync for MemoryDedicatedAllocateInfo {}
11399
11400/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfoTensorARM.html>
11401#[repr(C)]
11402#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11403pub struct MemoryDedicatedAllocateInfoTensorARM {
11404    pub s_type: StructureType,
11405    pub next: *const c_void,
11406    pub tensor: TensorARM,
11407}
11408
11409impl Default for MemoryDedicatedAllocateInfoTensorARM {
11410    #[inline]
11411    fn default() -> Self {
11412        Self {
11413            s_type: StructureType::MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM,
11414            next: ptr::null(),
11415            tensor: TensorARM::default(),
11416        }
11417    }
11418}
11419
11420unsafe impl Send for MemoryDedicatedAllocateInfoTensorARM {}
11421unsafe impl Sync for MemoryDedicatedAllocateInfoTensorARM {}
11422
11423/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedRequirements.html>
11424#[repr(C)]
11425#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11426pub struct MemoryDedicatedRequirements {
11427    pub s_type: StructureType,
11428    pub next: *mut c_void,
11429    pub prefers_dedicated_allocation: Bool32,
11430    pub requires_dedicated_allocation: Bool32,
11431}
11432
11433impl Default for MemoryDedicatedRequirements {
11434    #[inline]
11435    fn default() -> Self {
11436        Self {
11437            s_type: StructureType::MEMORY_DEDICATED_REQUIREMENTS,
11438            next: ptr::null_mut(),
11439            prefers_dedicated_allocation: Bool32::default(),
11440            requires_dedicated_allocation: Bool32::default(),
11441        }
11442    }
11443}
11444
11445unsafe impl Send for MemoryDedicatedRequirements {}
11446unsafe impl Sync for MemoryDedicatedRequirements {}
11447
11448/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryFdPropertiesKHR.html>
11449#[repr(C)]
11450#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11451pub struct MemoryFdPropertiesKHR {
11452    pub s_type: StructureType,
11453    pub next: *mut c_void,
11454    pub memory_type_bits: u32,
11455}
11456
11457impl Default for MemoryFdPropertiesKHR {
11458    #[inline]
11459    fn default() -> Self {
11460        Self {
11461            s_type: StructureType::MEMORY_FD_PROPERTIES_KHR,
11462            next: ptr::null_mut(),
11463            memory_type_bits: u32::default(),
11464        }
11465    }
11466}
11467
11468unsafe impl Send for MemoryFdPropertiesKHR {}
11469unsafe impl Sync for MemoryFdPropertiesKHR {}
11470
11471/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetAndroidHardwareBufferInfoANDROID.html>
11472#[repr(C)]
11473#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11474pub struct MemoryGetAndroidHardwareBufferInfoANDROID {
11475    pub s_type: StructureType,
11476    pub next: *const c_void,
11477    pub memory: DeviceMemory,
11478}
11479
11480impl Default for MemoryGetAndroidHardwareBufferInfoANDROID {
11481    #[inline]
11482    fn default() -> Self {
11483        Self {
11484            s_type: StructureType::MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
11485            next: ptr::null(),
11486            memory: DeviceMemory::default(),
11487        }
11488    }
11489}
11490
11491unsafe impl Send for MemoryGetAndroidHardwareBufferInfoANDROID {}
11492unsafe impl Sync for MemoryGetAndroidHardwareBufferInfoANDROID {}
11493
11494/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetFdInfoKHR.html>
11495#[repr(C)]
11496#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11497pub struct MemoryGetFdInfoKHR {
11498    pub s_type: StructureType,
11499    pub next: *const c_void,
11500    pub memory: DeviceMemory,
11501    pub handle_type: ExternalMemoryHandleTypeFlags,
11502}
11503
11504impl Default for MemoryGetFdInfoKHR {
11505    #[inline]
11506    fn default() -> Self {
11507        Self {
11508            s_type: StructureType::MEMORY_GET_FD_INFO_KHR,
11509            next: ptr::null(),
11510            memory: DeviceMemory::default(),
11511            handle_type: ExternalMemoryHandleTypeFlags::default(),
11512        }
11513    }
11514}
11515
11516unsafe impl Send for MemoryGetFdInfoKHR {}
11517unsafe impl Sync for MemoryGetFdInfoKHR {}
11518
11519/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetMetalHandleInfoEXT.html>
11520#[repr(C)]
11521#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11522pub struct MemoryGetMetalHandleInfoEXT {
11523    pub s_type: StructureType,
11524    pub next: *const c_void,
11525    pub memory: DeviceMemory,
11526    pub handle_type: ExternalMemoryHandleTypeFlags,
11527}
11528
11529impl Default for MemoryGetMetalHandleInfoEXT {
11530    #[inline]
11531    fn default() -> Self {
11532        Self {
11533            s_type: StructureType::MEMORY_GET_METAL_HANDLE_INFO_EXT,
11534            next: ptr::null(),
11535            memory: DeviceMemory::default(),
11536            handle_type: ExternalMemoryHandleTypeFlags::default(),
11537        }
11538    }
11539}
11540
11541unsafe impl Send for MemoryGetMetalHandleInfoEXT {}
11542unsafe impl Sync for MemoryGetMetalHandleInfoEXT {}
11543
11544/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetNativeBufferInfoOHOS.html>
11545#[repr(C)]
11546#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11547pub struct MemoryGetNativeBufferInfoOHOS {
11548    pub s_type: StructureType,
11549    pub next: *const c_void,
11550    pub memory: DeviceMemory,
11551}
11552
11553impl Default for MemoryGetNativeBufferInfoOHOS {
11554    #[inline]
11555    fn default() -> Self {
11556        Self {
11557            s_type: StructureType::MEMORY_GET_NATIVE_BUFFER_INFO_OHOS,
11558            next: ptr::null(),
11559            memory: DeviceMemory::default(),
11560        }
11561    }
11562}
11563
11564unsafe impl Send for MemoryGetNativeBufferInfoOHOS {}
11565unsafe impl Sync for MemoryGetNativeBufferInfoOHOS {}
11566
11567/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetRemoteAddressInfoNV.html>
11568#[repr(C)]
11569#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11570pub struct MemoryGetRemoteAddressInfoNV {
11571    pub s_type: StructureType,
11572    pub next: *const c_void,
11573    pub memory: DeviceMemory,
11574    pub handle_type: ExternalMemoryHandleTypeFlags,
11575}
11576
11577impl Default for MemoryGetRemoteAddressInfoNV {
11578    #[inline]
11579    fn default() -> Self {
11580        Self {
11581            s_type: StructureType::MEMORY_GET_REMOTE_ADDRESS_INFO_NV,
11582            next: ptr::null(),
11583            memory: DeviceMemory::default(),
11584            handle_type: ExternalMemoryHandleTypeFlags::default(),
11585        }
11586    }
11587}
11588
11589unsafe impl Send for MemoryGetRemoteAddressInfoNV {}
11590unsafe impl Sync for MemoryGetRemoteAddressInfoNV {}
11591
11592/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetSciBufInfoNV.html>
11593#[repr(C)]
11594#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11595pub struct MemoryGetSciBufInfoNV {
11596    pub s_type: StructureType,
11597    pub next: *const c_void,
11598    pub memory: DeviceMemory,
11599    pub handle_type: ExternalMemoryHandleTypeFlags,
11600}
11601
11602impl Default for MemoryGetSciBufInfoNV {
11603    #[inline]
11604    fn default() -> Self {
11605        Self {
11606            s_type: StructureType::MEMORY_GET_SCI_BUF_INFO_NV,
11607            next: ptr::null(),
11608            memory: DeviceMemory::default(),
11609            handle_type: ExternalMemoryHandleTypeFlags::default(),
11610        }
11611    }
11612}
11613
11614unsafe impl Send for MemoryGetSciBufInfoNV {}
11615unsafe impl Sync for MemoryGetSciBufInfoNV {}
11616
11617/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetWin32HandleInfoKHR.html>
11618#[repr(C)]
11619#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11620pub struct MemoryGetWin32HandleInfoKHR {
11621    pub s_type: StructureType,
11622    pub next: *const c_void,
11623    pub memory: DeviceMemory,
11624    pub handle_type: ExternalMemoryHandleTypeFlags,
11625}
11626
11627impl Default for MemoryGetWin32HandleInfoKHR {
11628    #[inline]
11629    fn default() -> Self {
11630        Self {
11631            s_type: StructureType::MEMORY_GET_WIN32_HANDLE_INFO_KHR,
11632            next: ptr::null(),
11633            memory: DeviceMemory::default(),
11634            handle_type: ExternalMemoryHandleTypeFlags::default(),
11635        }
11636    }
11637}
11638
11639unsafe impl Send for MemoryGetWin32HandleInfoKHR {}
11640unsafe impl Sync for MemoryGetWin32HandleInfoKHR {}
11641
11642/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetZirconHandleInfoFUCHSIA.html>
11643#[repr(C)]
11644#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11645pub struct MemoryGetZirconHandleInfoFUCHSIA {
11646    pub s_type: StructureType,
11647    pub next: *const c_void,
11648    pub memory: DeviceMemory,
11649    pub handle_type: ExternalMemoryHandleTypeFlags,
11650}
11651
11652impl Default for MemoryGetZirconHandleInfoFUCHSIA {
11653    #[inline]
11654    fn default() -> Self {
11655        Self {
11656            s_type: StructureType::MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
11657            next: ptr::null(),
11658            memory: DeviceMemory::default(),
11659            handle_type: ExternalMemoryHandleTypeFlags::default(),
11660        }
11661    }
11662}
11663
11664unsafe impl Send for MemoryGetZirconHandleInfoFUCHSIA {}
11665unsafe impl Sync for MemoryGetZirconHandleInfoFUCHSIA {}
11666
11667/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryHeap.html>
11668#[repr(C)]
11669#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11670pub struct MemoryHeap {
11671    pub size: DeviceSize,
11672    pub flags: MemoryHeapFlags,
11673}
11674
11675/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryHostPointerPropertiesEXT.html>
11676#[repr(C)]
11677#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11678pub struct MemoryHostPointerPropertiesEXT {
11679    pub s_type: StructureType,
11680    pub next: *mut c_void,
11681    pub memory_type_bits: u32,
11682}
11683
11684impl Default for MemoryHostPointerPropertiesEXT {
11685    #[inline]
11686    fn default() -> Self {
11687        Self {
11688            s_type: StructureType::MEMORY_HOST_POINTER_PROPERTIES_EXT,
11689            next: ptr::null_mut(),
11690            memory_type_bits: u32::default(),
11691        }
11692    }
11693}
11694
11695unsafe impl Send for MemoryHostPointerPropertiesEXT {}
11696unsafe impl Sync for MemoryHostPointerPropertiesEXT {}
11697
11698/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapInfo.html>
11699#[repr(C)]
11700#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11701pub struct MemoryMapInfo {
11702    pub s_type: StructureType,
11703    pub next: *const c_void,
11704    pub flags: MemoryMapFlags,
11705    pub memory: DeviceMemory,
11706    pub offset: DeviceSize,
11707    pub size: DeviceSize,
11708}
11709
11710impl Default for MemoryMapInfo {
11711    #[inline]
11712    fn default() -> Self {
11713        Self {
11714            s_type: StructureType::MEMORY_MAP_INFO,
11715            next: ptr::null(),
11716            flags: MemoryMapFlags::default(),
11717            memory: DeviceMemory::default(),
11718            offset: DeviceSize::default(),
11719            size: DeviceSize::default(),
11720        }
11721    }
11722}
11723
11724unsafe impl Send for MemoryMapInfo {}
11725unsafe impl Sync for MemoryMapInfo {}
11726
11727/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapPlacedInfoEXT.html>
11728#[repr(C)]
11729#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11730pub struct MemoryMapPlacedInfoEXT {
11731    pub s_type: StructureType,
11732    pub next: *const c_void,
11733    pub placed_address: *mut c_void,
11734}
11735
11736impl Default for MemoryMapPlacedInfoEXT {
11737    #[inline]
11738    fn default() -> Self {
11739        Self {
11740            s_type: StructureType::MEMORY_MAP_PLACED_INFO_EXT,
11741            next: ptr::null(),
11742            placed_address: ptr::null_mut(),
11743        }
11744    }
11745}
11746
11747unsafe impl Send for MemoryMapPlacedInfoEXT {}
11748unsafe impl Sync for MemoryMapPlacedInfoEXT {}
11749
11750/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMetalHandlePropertiesEXT.html>
11751#[repr(C)]
11752#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11753pub struct MemoryMetalHandlePropertiesEXT {
11754    pub s_type: StructureType,
11755    pub next: *mut c_void,
11756    pub memory_type_bits: u32,
11757}
11758
11759impl Default for MemoryMetalHandlePropertiesEXT {
11760    #[inline]
11761    fn default() -> Self {
11762        Self {
11763            s_type: StructureType::MEMORY_METAL_HANDLE_PROPERTIES_EXT,
11764            next: ptr::null_mut(),
11765            memory_type_bits: u32::default(),
11766        }
11767    }
11768}
11769
11770unsafe impl Send for MemoryMetalHandlePropertiesEXT {}
11771unsafe impl Sync for MemoryMetalHandlePropertiesEXT {}
11772
11773/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryOpaqueCaptureAddressAllocateInfo.html>
11774#[repr(C)]
11775#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11776pub struct MemoryOpaqueCaptureAddressAllocateInfo {
11777    pub s_type: StructureType,
11778    pub next: *const c_void,
11779    pub opaque_capture_address: u64,
11780}
11781
11782impl Default for MemoryOpaqueCaptureAddressAllocateInfo {
11783    #[inline]
11784    fn default() -> Self {
11785        Self {
11786            s_type: StructureType::MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
11787            next: ptr::null(),
11788            opaque_capture_address: u64::default(),
11789        }
11790    }
11791}
11792
11793unsafe impl Send for MemoryOpaqueCaptureAddressAllocateInfo {}
11794unsafe impl Sync for MemoryOpaqueCaptureAddressAllocateInfo {}
11795
11796/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryPriorityAllocateInfoEXT.html>
11797#[repr(C)]
11798#[derive(Copy, Clone, Debug, PartialEq)]
11799pub struct MemoryPriorityAllocateInfoEXT {
11800    pub s_type: StructureType,
11801    pub next: *const c_void,
11802    pub priority: f32,
11803}
11804
11805impl Default for MemoryPriorityAllocateInfoEXT {
11806    #[inline]
11807    fn default() -> Self {
11808        Self {
11809            s_type: StructureType::MEMORY_PRIORITY_ALLOCATE_INFO_EXT,
11810            next: ptr::null(),
11811            priority: f32::default(),
11812        }
11813    }
11814}
11815
11816unsafe impl Send for MemoryPriorityAllocateInfoEXT {}
11817unsafe impl Sync for MemoryPriorityAllocateInfoEXT {}
11818
11819/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryRequirements.html>
11820#[repr(C)]
11821#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11822pub struct MemoryRequirements {
11823    pub size: DeviceSize,
11824    pub alignment: DeviceSize,
11825    pub memory_type_bits: u32,
11826}
11827
11828/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryRequirements2.html>
11829#[repr(C)]
11830#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11831pub struct MemoryRequirements2 {
11832    pub s_type: StructureType,
11833    pub next: *mut c_void,
11834    pub memory_requirements: MemoryRequirements,
11835}
11836
11837impl Default for MemoryRequirements2 {
11838    #[inline]
11839    fn default() -> Self {
11840        Self {
11841            s_type: StructureType::MEMORY_REQUIREMENTS_2,
11842            next: ptr::null_mut(),
11843            memory_requirements: MemoryRequirements::default(),
11844        }
11845    }
11846}
11847
11848unsafe impl Send for MemoryRequirements2 {}
11849unsafe impl Sync for MemoryRequirements2 {}
11850
11851/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemorySciBufPropertiesNV.html>
11852#[repr(C)]
11853#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11854pub struct MemorySciBufPropertiesNV {
11855    pub s_type: StructureType,
11856    pub next: *const c_void,
11857    pub memory_type_bits: u32,
11858}
11859
11860impl Default for MemorySciBufPropertiesNV {
11861    #[inline]
11862    fn default() -> Self {
11863        Self {
11864            s_type: StructureType::MEMORY_SCI_BUF_PROPERTIES_NV,
11865            next: ptr::null(),
11866            memory_type_bits: u32::default(),
11867        }
11868    }
11869}
11870
11871unsafe impl Send for MemorySciBufPropertiesNV {}
11872unsafe impl Sync for MemorySciBufPropertiesNV {}
11873
11874/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryToImageCopy.html>
11875#[repr(C)]
11876#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11877pub struct MemoryToImageCopy {
11878    pub s_type: StructureType,
11879    pub next: *const c_void,
11880    pub host_pointer: *const c_void,
11881    pub memory_row_length: u32,
11882    pub memory_image_height: u32,
11883    pub image_subresource: ImageSubresourceLayers,
11884    pub image_offset: Offset3D,
11885    pub image_extent: Extent3D,
11886}
11887
11888impl Default for MemoryToImageCopy {
11889    #[inline]
11890    fn default() -> Self {
11891        Self {
11892            s_type: StructureType::MEMORY_TO_IMAGE_COPY,
11893            next: ptr::null(),
11894            host_pointer: ptr::null(),
11895            memory_row_length: u32::default(),
11896            memory_image_height: u32::default(),
11897            image_subresource: ImageSubresourceLayers::default(),
11898            image_offset: Offset3D::default(),
11899            image_extent: Extent3D::default(),
11900        }
11901    }
11902}
11903
11904unsafe impl Send for MemoryToImageCopy {}
11905unsafe impl Sync for MemoryToImageCopy {}
11906
11907/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryType.html>
11908#[repr(C)]
11909#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11910pub struct MemoryType {
11911    pub property_flags: MemoryPropertyFlags,
11912    pub heap_index: u32,
11913}
11914
11915/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryUnmapInfo.html>
11916#[repr(C)]
11917#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11918pub struct MemoryUnmapInfo {
11919    pub s_type: StructureType,
11920    pub next: *const c_void,
11921    pub flags: MemoryUnmapFlags,
11922    pub memory: DeviceMemory,
11923}
11924
11925impl Default for MemoryUnmapInfo {
11926    #[inline]
11927    fn default() -> Self {
11928        Self {
11929            s_type: StructureType::MEMORY_UNMAP_INFO,
11930            next: ptr::null(),
11931            flags: MemoryUnmapFlags::default(),
11932            memory: DeviceMemory::default(),
11933        }
11934    }
11935}
11936
11937unsafe impl Send for MemoryUnmapInfo {}
11938unsafe impl Sync for MemoryUnmapInfo {}
11939
11940/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryWin32HandlePropertiesKHR.html>
11941#[repr(C)]
11942#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11943pub struct MemoryWin32HandlePropertiesKHR {
11944    pub s_type: StructureType,
11945    pub next: *mut c_void,
11946    pub memory_type_bits: u32,
11947}
11948
11949impl Default for MemoryWin32HandlePropertiesKHR {
11950    #[inline]
11951    fn default() -> Self {
11952        Self {
11953            s_type: StructureType::MEMORY_WIN32_HANDLE_PROPERTIES_KHR,
11954            next: ptr::null_mut(),
11955            memory_type_bits: u32::default(),
11956        }
11957    }
11958}
11959
11960unsafe impl Send for MemoryWin32HandlePropertiesKHR {}
11961unsafe impl Sync for MemoryWin32HandlePropertiesKHR {}
11962
11963/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryZirconHandlePropertiesFUCHSIA.html>
11964#[repr(C)]
11965#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11966pub struct MemoryZirconHandlePropertiesFUCHSIA {
11967    pub s_type: StructureType,
11968    pub next: *mut c_void,
11969    pub memory_type_bits: u32,
11970}
11971
11972impl Default for MemoryZirconHandlePropertiesFUCHSIA {
11973    #[inline]
11974    fn default() -> Self {
11975        Self {
11976            s_type: StructureType::MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA,
11977            next: ptr::null_mut(),
11978            memory_type_bits: u32::default(),
11979        }
11980    }
11981}
11982
11983unsafe impl Send for MemoryZirconHandlePropertiesFUCHSIA {}
11984unsafe impl Sync for MemoryZirconHandlePropertiesFUCHSIA {}
11985
11986/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMetalSurfaceCreateInfoEXT.html>
11987#[repr(C)]
11988#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11989pub struct MetalSurfaceCreateInfoEXT {
11990    pub s_type: StructureType,
11991    pub next: *const c_void,
11992    pub flags: MetalSurfaceCreateFlagsEXT,
11993    pub layer: *const CAMetalLayer,
11994}
11995
11996impl Default for MetalSurfaceCreateInfoEXT {
11997    #[inline]
11998    fn default() -> Self {
11999        Self {
12000            s_type: StructureType::METAL_SURFACE_CREATE_INFO_EXT,
12001            next: ptr::null(),
12002            flags: MetalSurfaceCreateFlagsEXT::default(),
12003            layer: ptr::null(),
12004        }
12005    }
12006}
12007
12008unsafe impl Send for MetalSurfaceCreateInfoEXT {}
12009unsafe impl Sync for MetalSurfaceCreateInfoEXT {}
12010
12011/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapBuildInfoEXT.html>
12012#[repr(C)]
12013#[derive(Copy, Clone, Debug)]
12014pub struct MicromapBuildInfoEXT {
12015    pub s_type: StructureType,
12016    pub next: *const c_void,
12017    pub type_: MicromapTypeEXT,
12018    pub flags: BuildMicromapFlagsEXT,
12019    pub mode: BuildMicromapModeEXT,
12020    pub dst_micromap: MicromapEXT,
12021    pub usage_counts_count: u32,
12022    pub usage_counts: *const MicromapUsageEXT,
12023    pub pointer_usage_counts: *const *const MicromapUsageEXT,
12024    pub data: DeviceOrHostAddressConstKHR,
12025    pub scratch_data: DeviceOrHostAddressKHR,
12026    pub triangle_array: DeviceOrHostAddressConstKHR,
12027    pub triangle_array_stride: DeviceSize,
12028}
12029
12030impl Default for MicromapBuildInfoEXT {
12031    #[inline]
12032    fn default() -> Self {
12033        Self {
12034            s_type: StructureType::MICROMAP_BUILD_INFO_EXT,
12035            next: ptr::null(),
12036            type_: MicromapTypeEXT::default(),
12037            flags: BuildMicromapFlagsEXT::default(),
12038            mode: BuildMicromapModeEXT::default(),
12039            dst_micromap: MicromapEXT::default(),
12040            usage_counts_count: u32::default(),
12041            usage_counts: ptr::null(),
12042            pointer_usage_counts: ptr::null(),
12043            data: DeviceOrHostAddressConstKHR::default(),
12044            scratch_data: DeviceOrHostAddressKHR::default(),
12045            triangle_array: DeviceOrHostAddressConstKHR::default(),
12046            triangle_array_stride: DeviceSize::default(),
12047        }
12048    }
12049}
12050
12051unsafe impl Send for MicromapBuildInfoEXT {}
12052unsafe impl Sync for MicromapBuildInfoEXT {}
12053
12054/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapBuildSizesInfoEXT.html>
12055#[repr(C)]
12056#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12057pub struct MicromapBuildSizesInfoEXT {
12058    pub s_type: StructureType,
12059    pub next: *const c_void,
12060    pub micromap_size: DeviceSize,
12061    pub build_scratch_size: DeviceSize,
12062    pub discardable: Bool32,
12063}
12064
12065impl Default for MicromapBuildSizesInfoEXT {
12066    #[inline]
12067    fn default() -> Self {
12068        Self {
12069            s_type: StructureType::MICROMAP_BUILD_SIZES_INFO_EXT,
12070            next: ptr::null(),
12071            micromap_size: DeviceSize::default(),
12072            build_scratch_size: DeviceSize::default(),
12073            discardable: Bool32::default(),
12074        }
12075    }
12076}
12077
12078unsafe impl Send for MicromapBuildSizesInfoEXT {}
12079unsafe impl Sync for MicromapBuildSizesInfoEXT {}
12080
12081/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapCreateInfoEXT.html>
12082#[repr(C)]
12083#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12084pub struct MicromapCreateInfoEXT {
12085    pub s_type: StructureType,
12086    pub next: *const c_void,
12087    pub create_flags: MicromapCreateFlagsEXT,
12088    pub buffer: Buffer,
12089    pub offset: DeviceSize,
12090    pub size: DeviceSize,
12091    pub type_: MicromapTypeEXT,
12092    pub device_address: DeviceAddress,
12093}
12094
12095impl Default for MicromapCreateInfoEXT {
12096    #[inline]
12097    fn default() -> Self {
12098        Self {
12099            s_type: StructureType::MICROMAP_CREATE_INFO_EXT,
12100            next: ptr::null(),
12101            create_flags: MicromapCreateFlagsEXT::default(),
12102            buffer: Buffer::default(),
12103            offset: DeviceSize::default(),
12104            size: DeviceSize::default(),
12105            type_: MicromapTypeEXT::default(),
12106            device_address: DeviceAddress::default(),
12107        }
12108    }
12109}
12110
12111unsafe impl Send for MicromapCreateInfoEXT {}
12112unsafe impl Sync for MicromapCreateInfoEXT {}
12113
12114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapTriangleEXT.html>
12115#[repr(C)]
12116#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12117pub struct MicromapTriangleEXT {
12118    pub data_offset: u32,
12119    pub subdivision_level: u16,
12120    pub format: u16,
12121}
12122
12123/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapUsageEXT.html>
12124#[repr(C)]
12125#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12126pub struct MicromapUsageEXT {
12127    pub count: u32,
12128    pub subdivision_level: u32,
12129    pub format: u32,
12130}
12131
12132/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapVersionInfoEXT.html>
12133#[repr(C)]
12134#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12135pub struct MicromapVersionInfoEXT {
12136    pub s_type: StructureType,
12137    pub next: *const c_void,
12138    pub version_data: *const u8,
12139}
12140
12141impl Default for MicromapVersionInfoEXT {
12142    #[inline]
12143    fn default() -> Self {
12144        Self {
12145            s_type: StructureType::MICROMAP_VERSION_INFO_EXT,
12146            next: ptr::null(),
12147            version_data: ptr::null(),
12148        }
12149    }
12150}
12151
12152unsafe impl Send for MicromapVersionInfoEXT {}
12153unsafe impl Sync for MicromapVersionInfoEXT {}
12154
12155/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiDrawIndexedInfoEXT.html>
12156#[repr(C)]
12157#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12158pub struct MultiDrawIndexedInfoEXT {
12159    pub first_index: u32,
12160    pub index_count: u32,
12161    pub vertex_offset: i32,
12162}
12163
12164/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiDrawInfoEXT.html>
12165#[repr(C)]
12166#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12167pub struct MultiDrawInfoEXT {
12168    pub first_vertex: u32,
12169    pub vertex_count: u32,
12170}
12171
12172/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultisamplePropertiesEXT.html>
12173#[repr(C)]
12174#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12175pub struct MultisamplePropertiesEXT {
12176    pub s_type: StructureType,
12177    pub next: *mut c_void,
12178    pub max_sample_location_grid_size: Extent2D,
12179}
12180
12181impl Default for MultisamplePropertiesEXT {
12182    #[inline]
12183    fn default() -> Self {
12184        Self {
12185            s_type: StructureType::MULTISAMPLE_PROPERTIES_EXT,
12186            next: ptr::null_mut(),
12187            max_sample_location_grid_size: Extent2D::default(),
12188        }
12189    }
12190}
12191
12192unsafe impl Send for MultisamplePropertiesEXT {}
12193unsafe impl Sync for MultisamplePropertiesEXT {}
12194
12195/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultisampledRenderToSingleSampledInfoEXT.html>
12196#[repr(C)]
12197#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12198pub struct MultisampledRenderToSingleSampledInfoEXT {
12199    pub s_type: StructureType,
12200    pub next: *const c_void,
12201    pub multisampled_render_to_single_sampled_enable: Bool32,
12202    pub rasterization_samples: SampleCountFlags,
12203}
12204
12205impl Default for MultisampledRenderToSingleSampledInfoEXT {
12206    #[inline]
12207    fn default() -> Self {
12208        Self {
12209            s_type: StructureType::MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT,
12210            next: ptr::null(),
12211            multisampled_render_to_single_sampled_enable: Bool32::default(),
12212            rasterization_samples: SampleCountFlags::default(),
12213        }
12214    }
12215}
12216
12217unsafe impl Send for MultisampledRenderToSingleSampledInfoEXT {}
12218unsafe impl Sync for MultisampledRenderToSingleSampledInfoEXT {}
12219
12220/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiviewPerViewAttributesInfoNVX.html>
12221#[repr(C)]
12222#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12223pub struct MultiviewPerViewAttributesInfoNVX {
12224    pub s_type: StructureType,
12225    pub next: *const c_void,
12226    pub per_view_attributes: Bool32,
12227    pub per_view_attributes_position_x_only: Bool32,
12228}
12229
12230impl Default for MultiviewPerViewAttributesInfoNVX {
12231    #[inline]
12232    fn default() -> Self {
12233        Self {
12234            s_type: StructureType::MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX,
12235            next: ptr::null(),
12236            per_view_attributes: Bool32::default(),
12237            per_view_attributes_position_x_only: Bool32::default(),
12238        }
12239    }
12240}
12241
12242unsafe impl Send for MultiviewPerViewAttributesInfoNVX {}
12243unsafe impl Sync for MultiviewPerViewAttributesInfoNVX {}
12244
12245/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM.html>
12246#[repr(C)]
12247#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12248pub struct MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {
12249    pub s_type: StructureType,
12250    pub next: *const c_void,
12251    pub per_view_render_area_count: u32,
12252    pub per_view_render_areas: *const Rect2D,
12253}
12254
12255impl Default for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {
12256    #[inline]
12257    fn default() -> Self {
12258        Self {
12259            s_type: StructureType::MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM,
12260            next: ptr::null(),
12261            per_view_render_area_count: u32::default(),
12262            per_view_render_areas: ptr::null(),
12263        }
12264    }
12265}
12266
12267unsafe impl Send for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {}
12268unsafe impl Sync for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {}
12269
12270/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeCreateInfoEXT.html>
12271#[repr(C)]
12272#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12273pub struct MutableDescriptorTypeCreateInfoEXT {
12274    pub s_type: StructureType,
12275    pub next: *const c_void,
12276    pub mutable_descriptor_type_list_count: u32,
12277    pub mutable_descriptor_type_lists: *const MutableDescriptorTypeListEXT,
12278}
12279
12280impl Default for MutableDescriptorTypeCreateInfoEXT {
12281    #[inline]
12282    fn default() -> Self {
12283        Self {
12284            s_type: StructureType::MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT,
12285            next: ptr::null(),
12286            mutable_descriptor_type_list_count: u32::default(),
12287            mutable_descriptor_type_lists: ptr::null(),
12288        }
12289    }
12290}
12291
12292unsafe impl Send for MutableDescriptorTypeCreateInfoEXT {}
12293unsafe impl Sync for MutableDescriptorTypeCreateInfoEXT {}
12294
12295/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeListEXT.html>
12296#[repr(C)]
12297#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12298pub struct MutableDescriptorTypeListEXT {
12299    pub descriptor_type_count: u32,
12300    pub descriptor_types: *const DescriptorType,
12301}
12302
12303impl Default for MutableDescriptorTypeListEXT {
12304    #[inline]
12305    fn default() -> Self {
12306        Self {
12307            descriptor_type_count: u32::default(),
12308            descriptor_types: ptr::null(),
12309        }
12310    }
12311}
12312
12313unsafe impl Send for MutableDescriptorTypeListEXT {}
12314unsafe impl Sync for MutableDescriptorTypeListEXT {}
12315
12316/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkNativeBufferFormatPropertiesOHOS.html>
12317#[repr(C)]
12318#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12319pub struct NativeBufferFormatPropertiesOHOS {
12320    pub s_type: StructureType,
12321    pub next: *mut c_void,
12322    pub format: Format,
12323    pub external_format: u64,
12324    pub format_features: FormatFeatureFlags,
12325    pub sampler_ycbcr_conversion_components: ComponentMapping,
12326    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
12327    pub suggested_ycbcr_range: SamplerYcbcrRange,
12328    pub suggested_x_chroma_offset: ChromaLocation,
12329    pub suggested_y_chroma_offset: ChromaLocation,
12330}
12331
12332impl Default for NativeBufferFormatPropertiesOHOS {
12333    #[inline]
12334    fn default() -> Self {
12335        Self {
12336            s_type: StructureType::NATIVE_BUFFER_FORMAT_PROPERTIES_OHOS,
12337            next: ptr::null_mut(),
12338            format: Format::default(),
12339            external_format: u64::default(),
12340            format_features: FormatFeatureFlags::default(),
12341            sampler_ycbcr_conversion_components: ComponentMapping::default(),
12342            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
12343            suggested_ycbcr_range: SamplerYcbcrRange::default(),
12344            suggested_x_chroma_offset: ChromaLocation::default(),
12345            suggested_y_chroma_offset: ChromaLocation::default(),
12346        }
12347    }
12348}
12349
12350unsafe impl Send for NativeBufferFormatPropertiesOHOS {}
12351unsafe impl Sync for NativeBufferFormatPropertiesOHOS {}
12352
12353/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkNativeBufferOHOS.html>
12354#[repr(C)]
12355#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12356pub struct NativeBufferOHOS {
12357    pub s_type: StructureType,
12358    pub next: *const c_void,
12359    pub handle: *mut OHBufferHandle,
12360}
12361
12362impl Default for NativeBufferOHOS {
12363    #[inline]
12364    fn default() -> Self {
12365        Self {
12366            s_type: StructureType::NATIVE_BUFFER_OHOS,
12367            next: ptr::null(),
12368            handle: ptr::null_mut(),
12369        }
12370    }
12371}
12372
12373unsafe impl Send for NativeBufferOHOS {}
12374unsafe impl Sync for NativeBufferOHOS {}
12375
12376/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkNativeBufferPropertiesOHOS.html>
12377#[repr(C)]
12378#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12379pub struct NativeBufferPropertiesOHOS {
12380    pub s_type: StructureType,
12381    pub next: *mut c_void,
12382    pub allocation_size: DeviceSize,
12383    pub memory_type_bits: u32,
12384}
12385
12386impl Default for NativeBufferPropertiesOHOS {
12387    #[inline]
12388    fn default() -> Self {
12389        Self {
12390            s_type: StructureType::NATIVE_BUFFER_PROPERTIES_OHOS,
12391            next: ptr::null_mut(),
12392            allocation_size: DeviceSize::default(),
12393            memory_type_bits: u32::default(),
12394        }
12395    }
12396}
12397
12398unsafe impl Send for NativeBufferPropertiesOHOS {}
12399unsafe impl Sync for NativeBufferPropertiesOHOS {}
12400
12401/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkNativeBufferUsageOHOS.html>
12402#[repr(C)]
12403#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12404pub struct NativeBufferUsageOHOS {
12405    pub s_type: StructureType,
12406    pub next: *mut c_void,
12407    pub ohos_native_buffer_usage: u64,
12408}
12409
12410impl Default for NativeBufferUsageOHOS {
12411    #[inline]
12412    fn default() -> Self {
12413        Self {
12414            s_type: StructureType::NATIVE_BUFFER_USAGE_OHOS,
12415            next: ptr::null_mut(),
12416            ohos_native_buffer_usage: u64::default(),
12417        }
12418    }
12419}
12420
12421unsafe impl Send for NativeBufferUsageOHOS {}
12422unsafe impl Sync for NativeBufferUsageOHOS {}
12423
12424/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOffset2D.html>
12425#[repr(C)]
12426#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12427pub struct Offset2D {
12428    pub x: i32,
12429    pub y: i32,
12430}
12431
12432/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOffset3D.html>
12433#[repr(C)]
12434#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12435pub struct Offset3D {
12436    pub x: i32,
12437    pub y: i32,
12438    pub z: i32,
12439}
12440
12441/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpaqueCaptureDescriptorDataCreateInfoEXT.html>
12442#[repr(C)]
12443#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12444pub struct OpaqueCaptureDescriptorDataCreateInfoEXT {
12445    pub s_type: StructureType,
12446    pub next: *const c_void,
12447    pub opaque_capture_descriptor_data: *const c_void,
12448}
12449
12450impl Default for OpaqueCaptureDescriptorDataCreateInfoEXT {
12451    #[inline]
12452    fn default() -> Self {
12453        Self {
12454            s_type: StructureType::OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT,
12455            next: ptr::null(),
12456            opaque_capture_descriptor_data: ptr::null(),
12457        }
12458    }
12459}
12460
12461unsafe impl Send for OpaqueCaptureDescriptorDataCreateInfoEXT {}
12462unsafe impl Sync for OpaqueCaptureDescriptorDataCreateInfoEXT {}
12463
12464/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowExecuteInfoNV.html>
12465#[repr(C)]
12466#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12467pub struct OpticalFlowExecuteInfoNV {
12468    pub s_type: StructureType,
12469    pub next: *mut c_void,
12470    pub flags: OpticalFlowExecuteFlagsNV,
12471    pub region_count: u32,
12472    pub regions: *const Rect2D,
12473}
12474
12475impl Default for OpticalFlowExecuteInfoNV {
12476    #[inline]
12477    fn default() -> Self {
12478        Self {
12479            s_type: StructureType::OPTICAL_FLOW_EXECUTE_INFO_NV,
12480            next: ptr::null_mut(),
12481            flags: OpticalFlowExecuteFlagsNV::default(),
12482            region_count: u32::default(),
12483            regions: ptr::null(),
12484        }
12485    }
12486}
12487
12488unsafe impl Send for OpticalFlowExecuteInfoNV {}
12489unsafe impl Sync for OpticalFlowExecuteInfoNV {}
12490
12491/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowImageFormatInfoNV.html>
12492#[repr(C)]
12493#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12494pub struct OpticalFlowImageFormatInfoNV {
12495    pub s_type: StructureType,
12496    pub next: *const c_void,
12497    pub usage: OpticalFlowUsageFlagsNV,
12498}
12499
12500impl Default for OpticalFlowImageFormatInfoNV {
12501    #[inline]
12502    fn default() -> Self {
12503        Self {
12504            s_type: StructureType::OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV,
12505            next: ptr::null(),
12506            usage: OpticalFlowUsageFlagsNV::default(),
12507        }
12508    }
12509}
12510
12511unsafe impl Send for OpticalFlowImageFormatInfoNV {}
12512unsafe impl Sync for OpticalFlowImageFormatInfoNV {}
12513
12514/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowImageFormatPropertiesNV.html>
12515#[repr(C)]
12516#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12517pub struct OpticalFlowImageFormatPropertiesNV {
12518    pub s_type: StructureType,
12519    pub next: *const c_void,
12520    pub format: Format,
12521}
12522
12523impl Default for OpticalFlowImageFormatPropertiesNV {
12524    #[inline]
12525    fn default() -> Self {
12526        Self {
12527            s_type: StructureType::OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV,
12528            next: ptr::null(),
12529            format: Format::default(),
12530        }
12531    }
12532}
12533
12534unsafe impl Send for OpticalFlowImageFormatPropertiesNV {}
12535unsafe impl Sync for OpticalFlowImageFormatPropertiesNV {}
12536
12537/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowSessionCreateInfoNV.html>
12538#[repr(C)]
12539#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12540pub struct OpticalFlowSessionCreateInfoNV {
12541    pub s_type: StructureType,
12542    pub next: *mut c_void,
12543    pub width: u32,
12544    pub height: u32,
12545    pub image_format: Format,
12546    pub flow_vector_format: Format,
12547    pub cost_format: Format,
12548    pub output_grid_size: OpticalFlowGridSizeFlagsNV,
12549    pub hint_grid_size: OpticalFlowGridSizeFlagsNV,
12550    pub performance_level: OpticalFlowPerformanceLevelNV,
12551    pub flags: OpticalFlowSessionCreateFlagsNV,
12552}
12553
12554impl Default for OpticalFlowSessionCreateInfoNV {
12555    #[inline]
12556    fn default() -> Self {
12557        Self {
12558            s_type: StructureType::OPTICAL_FLOW_SESSION_CREATE_INFO_NV,
12559            next: ptr::null_mut(),
12560            width: u32::default(),
12561            height: u32::default(),
12562            image_format: Format::default(),
12563            flow_vector_format: Format::default(),
12564            cost_format: Format::default(),
12565            output_grid_size: OpticalFlowGridSizeFlagsNV::default(),
12566            hint_grid_size: OpticalFlowGridSizeFlagsNV::default(),
12567            performance_level: OpticalFlowPerformanceLevelNV::default(),
12568            flags: OpticalFlowSessionCreateFlagsNV::default(),
12569        }
12570    }
12571}
12572
12573unsafe impl Send for OpticalFlowSessionCreateInfoNV {}
12574unsafe impl Sync for OpticalFlowSessionCreateInfoNV {}
12575
12576/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowSessionCreatePrivateDataInfoNV.html>
12577#[repr(C)]
12578#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12579pub struct OpticalFlowSessionCreatePrivateDataInfoNV {
12580    pub s_type: StructureType,
12581    pub next: *mut c_void,
12582    pub id: u32,
12583    pub size: u32,
12584    pub private_data: *const c_void,
12585}
12586
12587impl Default for OpticalFlowSessionCreatePrivateDataInfoNV {
12588    #[inline]
12589    fn default() -> Self {
12590        Self {
12591            s_type: StructureType::OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV,
12592            next: ptr::null_mut(),
12593            id: u32::default(),
12594            size: u32::default(),
12595            private_data: ptr::null(),
12596        }
12597    }
12598}
12599
12600unsafe impl Send for OpticalFlowSessionCreatePrivateDataInfoNV {}
12601unsafe impl Sync for OpticalFlowSessionCreatePrivateDataInfoNV {}
12602
12603/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOutOfBandQueueTypeInfoNV.html>
12604#[repr(C)]
12605#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12606pub struct OutOfBandQueueTypeInfoNV {
12607    pub s_type: StructureType,
12608    pub next: *const c_void,
12609    pub queue_type: OutOfBandQueueTypeNV,
12610}
12611
12612impl Default for OutOfBandQueueTypeInfoNV {
12613    #[inline]
12614    fn default() -> Self {
12615        Self {
12616            s_type: StructureType::OUT_OF_BAND_QUEUE_TYPE_INFO_NV,
12617            next: ptr::null(),
12618            queue_type: OutOfBandQueueTypeNV::default(),
12619        }
12620    }
12621}
12622
12623unsafe impl Send for OutOfBandQueueTypeInfoNV {}
12624unsafe impl Sync for OutOfBandQueueTypeInfoNV {}
12625
12626/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureFlagsNV.html>
12627#[repr(C)]
12628#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12629pub struct PartitionedAccelerationStructureFlagsNV {
12630    pub s_type: StructureType,
12631    pub next: *mut c_void,
12632    pub enable_partition_translation: Bool32,
12633}
12634
12635impl Default for PartitionedAccelerationStructureFlagsNV {
12636    #[inline]
12637    fn default() -> Self {
12638        Self {
12639            s_type: StructureType::PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV,
12640            next: ptr::null_mut(),
12641            enable_partition_translation: Bool32::default(),
12642        }
12643    }
12644}
12645
12646unsafe impl Send for PartitionedAccelerationStructureFlagsNV {}
12647unsafe impl Sync for PartitionedAccelerationStructureFlagsNV {}
12648
12649/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureInstancesInputNV.html>
12650#[repr(C)]
12651#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12652pub struct PartitionedAccelerationStructureInstancesInputNV {
12653    pub s_type: StructureType,
12654    pub next: *mut c_void,
12655    pub flags: BuildAccelerationStructureFlagsKHR,
12656    pub instance_count: u32,
12657    pub max_instance_per_partition_count: u32,
12658    pub partition_count: u32,
12659    pub max_instance_in_global_partition_count: u32,
12660}
12661
12662impl Default for PartitionedAccelerationStructureInstancesInputNV {
12663    #[inline]
12664    fn default() -> Self {
12665        Self {
12666            s_type: StructureType::PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV,
12667            next: ptr::null_mut(),
12668            flags: BuildAccelerationStructureFlagsKHR::default(),
12669            instance_count: u32::default(),
12670            max_instance_per_partition_count: u32::default(),
12671            partition_count: u32::default(),
12672            max_instance_in_global_partition_count: u32::default(),
12673        }
12674    }
12675}
12676
12677unsafe impl Send for PartitionedAccelerationStructureInstancesInputNV {}
12678unsafe impl Sync for PartitionedAccelerationStructureInstancesInputNV {}
12679
12680/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureUpdateInstanceDataNV.html>
12681#[repr(C)]
12682#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12683pub struct PartitionedAccelerationStructureUpdateInstanceDataNV {
12684    pub instance_index: u32,
12685    pub instance_contribution_to_hit_group_index: u32,
12686    pub acceleration_structure: DeviceAddress,
12687}
12688
12689/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureWriteInstanceDataNV.html>
12690#[repr(C)]
12691#[derive(Copy, Clone, Default, Debug, PartialEq)]
12692pub struct PartitionedAccelerationStructureWriteInstanceDataNV {
12693    pub transform: TransformMatrixKHR,
12694    pub explicit_aabb: [f32; 6],
12695    pub instance_id: u32,
12696    pub instance_mask: u32,
12697    pub instance_contribution_to_hit_group_index: u32,
12698    pub instance_flags: PartitionedAccelerationStructureInstanceFlagsNV,
12699    pub instance_index: u32,
12700    pub partition_index: u32,
12701    pub acceleration_structure: DeviceAddress,
12702}
12703
12704/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureWritePartitionTranslationDataNV.html>
12705#[repr(C)]
12706#[derive(Copy, Clone, Default, Debug, PartialEq)]
12707pub struct PartitionedAccelerationStructureWritePartitionTranslationDataNV {
12708    pub partition_index: u32,
12709    pub partition_translation: [f32; 3],
12710}
12711
12712/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPastPresentationTimingGOOGLE.html>
12713#[repr(C)]
12714#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12715pub struct PastPresentationTimingGOOGLE {
12716    pub present_id: u32,
12717    pub desired_present_time: u64,
12718    pub actual_present_time: u64,
12719    pub earliest_present_time: u64,
12720    pub present_margin: u64,
12721}
12722
12723/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerTileBeginInfoQCOM.html>
12724#[repr(C)]
12725#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12726pub struct PerTileBeginInfoQCOM {
12727    pub s_type: StructureType,
12728    pub next: *const c_void,
12729}
12730
12731impl Default for PerTileBeginInfoQCOM {
12732    #[inline]
12733    fn default() -> Self {
12734        Self {
12735            s_type: StructureType::PER_TILE_BEGIN_INFO_QCOM,
12736            next: ptr::null(),
12737        }
12738    }
12739}
12740
12741unsafe impl Send for PerTileBeginInfoQCOM {}
12742unsafe impl Sync for PerTileBeginInfoQCOM {}
12743
12744/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerTileEndInfoQCOM.html>
12745#[repr(C)]
12746#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12747pub struct PerTileEndInfoQCOM {
12748    pub s_type: StructureType,
12749    pub next: *const c_void,
12750}
12751
12752impl Default for PerTileEndInfoQCOM {
12753    #[inline]
12754    fn default() -> Self {
12755        Self {
12756            s_type: StructureType::PER_TILE_END_INFO_QCOM,
12757            next: ptr::null(),
12758        }
12759    }
12760}
12761
12762unsafe impl Send for PerTileEndInfoQCOM {}
12763unsafe impl Sync for PerTileEndInfoQCOM {}
12764
12765/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceConfigurationAcquireInfoINTEL.html>
12766#[repr(C)]
12767#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12768pub struct PerformanceConfigurationAcquireInfoINTEL {
12769    pub s_type: StructureType,
12770    pub next: *const c_void,
12771    pub type_: PerformanceConfigurationTypeINTEL,
12772}
12773
12774impl Default for PerformanceConfigurationAcquireInfoINTEL {
12775    #[inline]
12776    fn default() -> Self {
12777        Self {
12778            s_type: StructureType::PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL,
12779            next: ptr::null(),
12780            type_: PerformanceConfigurationTypeINTEL::default(),
12781        }
12782    }
12783}
12784
12785unsafe impl Send for PerformanceConfigurationAcquireInfoINTEL {}
12786unsafe impl Sync for PerformanceConfigurationAcquireInfoINTEL {}
12787
12788/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterARM.html>
12789#[repr(C)]
12790#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12791pub struct PerformanceCounterARM {
12792    pub s_type: StructureType,
12793    pub next: *mut c_void,
12794    pub counter_id: u32,
12795}
12796
12797impl Default for PerformanceCounterARM {
12798    #[inline]
12799    fn default() -> Self {
12800        Self {
12801            s_type: StructureType::PERFORMANCE_COUNTER_ARM,
12802            next: ptr::null_mut(),
12803            counter_id: u32::default(),
12804        }
12805    }
12806}
12807
12808unsafe impl Send for PerformanceCounterARM {}
12809unsafe impl Sync for PerformanceCounterARM {}
12810
12811/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterDescriptionARM.html>
12812#[repr(C)]
12813#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12814pub struct PerformanceCounterDescriptionARM {
12815    pub s_type: StructureType,
12816    pub next: *mut c_void,
12817    pub flags: PerformanceCounterDescriptionFlagsARM,
12818    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
12819}
12820
12821impl Default for PerformanceCounterDescriptionARM {
12822    #[inline]
12823    fn default() -> Self {
12824        Self {
12825            s_type: StructureType::PERFORMANCE_COUNTER_DESCRIPTION_ARM,
12826            next: ptr::null_mut(),
12827            flags: PerformanceCounterDescriptionFlagsARM::default(),
12828            name: StringArray::default(),
12829        }
12830    }
12831}
12832
12833unsafe impl Send for PerformanceCounterDescriptionARM {}
12834unsafe impl Sync for PerformanceCounterDescriptionARM {}
12835
12836/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterDescriptionKHR.html>
12837#[repr(C)]
12838#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12839pub struct PerformanceCounterDescriptionKHR {
12840    pub s_type: StructureType,
12841    pub next: *mut c_void,
12842    pub flags: PerformanceCounterDescriptionFlagsKHR,
12843    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
12844    pub category: StringArray<MAX_DESCRIPTION_SIZE>,
12845    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
12846}
12847
12848impl Default for PerformanceCounterDescriptionKHR {
12849    #[inline]
12850    fn default() -> Self {
12851        Self {
12852            s_type: StructureType::PERFORMANCE_COUNTER_DESCRIPTION_KHR,
12853            next: ptr::null_mut(),
12854            flags: PerformanceCounterDescriptionFlagsKHR::default(),
12855            name: StringArray::default(),
12856            category: StringArray::default(),
12857            description: StringArray::default(),
12858        }
12859    }
12860}
12861
12862unsafe impl Send for PerformanceCounterDescriptionKHR {}
12863unsafe impl Sync for PerformanceCounterDescriptionKHR {}
12864
12865/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterKHR.html>
12866#[repr(C)]
12867#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12868pub struct PerformanceCounterKHR {
12869    pub s_type: StructureType,
12870    pub next: *mut c_void,
12871    pub unit: PerformanceCounterUnitKHR,
12872    pub scope: PerformanceCounterScopeKHR,
12873    pub storage: PerformanceCounterStorageKHR,
12874    pub uuid: ByteArray<UUID_SIZE>,
12875}
12876
12877impl Default for PerformanceCounterKHR {
12878    #[inline]
12879    fn default() -> Self {
12880        Self {
12881            s_type: StructureType::PERFORMANCE_COUNTER_KHR,
12882            next: ptr::null_mut(),
12883            unit: PerformanceCounterUnitKHR::default(),
12884            scope: PerformanceCounterScopeKHR::default(),
12885            storage: PerformanceCounterStorageKHR::default(),
12886            uuid: ByteArray::default(),
12887        }
12888    }
12889}
12890
12891unsafe impl Send for PerformanceCounterKHR {}
12892unsafe impl Sync for PerformanceCounterKHR {}
12893
12894/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceMarkerInfoINTEL.html>
12895#[repr(C)]
12896#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12897pub struct PerformanceMarkerInfoINTEL {
12898    pub s_type: StructureType,
12899    pub next: *const c_void,
12900    pub marker: u64,
12901}
12902
12903impl Default for PerformanceMarkerInfoINTEL {
12904    #[inline]
12905    fn default() -> Self {
12906        Self {
12907            s_type: StructureType::PERFORMANCE_MARKER_INFO_INTEL,
12908            next: ptr::null(),
12909            marker: u64::default(),
12910        }
12911    }
12912}
12913
12914unsafe impl Send for PerformanceMarkerInfoINTEL {}
12915unsafe impl Sync for PerformanceMarkerInfoINTEL {}
12916
12917/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceOverrideInfoINTEL.html>
12918#[repr(C)]
12919#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12920pub struct PerformanceOverrideInfoINTEL {
12921    pub s_type: StructureType,
12922    pub next: *const c_void,
12923    pub type_: PerformanceOverrideTypeINTEL,
12924    pub enable: Bool32,
12925    pub parameter: u64,
12926}
12927
12928impl Default for PerformanceOverrideInfoINTEL {
12929    #[inline]
12930    fn default() -> Self {
12931        Self {
12932            s_type: StructureType::PERFORMANCE_OVERRIDE_INFO_INTEL,
12933            next: ptr::null(),
12934            type_: PerformanceOverrideTypeINTEL::default(),
12935            enable: Bool32::default(),
12936            parameter: u64::default(),
12937        }
12938    }
12939}
12940
12941unsafe impl Send for PerformanceOverrideInfoINTEL {}
12942unsafe impl Sync for PerformanceOverrideInfoINTEL {}
12943
12944/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceQueryReservationInfoKHR.html>
12945#[repr(C)]
12946#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12947pub struct PerformanceQueryReservationInfoKHR {
12948    pub s_type: StructureType,
12949    pub next: *const c_void,
12950    pub max_performance_queries_per_pool: u32,
12951}
12952
12953impl Default for PerformanceQueryReservationInfoKHR {
12954    #[inline]
12955    fn default() -> Self {
12956        Self {
12957            s_type: StructureType::PERFORMANCE_QUERY_RESERVATION_INFO_KHR,
12958            next: ptr::null(),
12959            max_performance_queries_per_pool: u32::default(),
12960        }
12961    }
12962}
12963
12964unsafe impl Send for PerformanceQueryReservationInfoKHR {}
12965unsafe impl Sync for PerformanceQueryReservationInfoKHR {}
12966
12967/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceQuerySubmitInfoKHR.html>
12968#[repr(C)]
12969#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12970pub struct PerformanceQuerySubmitInfoKHR {
12971    pub s_type: StructureType,
12972    pub next: *const c_void,
12973    pub counter_pass_index: u32,
12974}
12975
12976impl Default for PerformanceQuerySubmitInfoKHR {
12977    #[inline]
12978    fn default() -> Self {
12979        Self {
12980            s_type: StructureType::PERFORMANCE_QUERY_SUBMIT_INFO_KHR,
12981            next: ptr::null(),
12982            counter_pass_index: u32::default(),
12983        }
12984    }
12985}
12986
12987unsafe impl Send for PerformanceQuerySubmitInfoKHR {}
12988unsafe impl Sync for PerformanceQuerySubmitInfoKHR {}
12989
12990/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceStreamMarkerInfoINTEL.html>
12991#[repr(C)]
12992#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12993pub struct PerformanceStreamMarkerInfoINTEL {
12994    pub s_type: StructureType,
12995    pub next: *const c_void,
12996    pub marker: u32,
12997}
12998
12999impl Default for PerformanceStreamMarkerInfoINTEL {
13000    #[inline]
13001    fn default() -> Self {
13002        Self {
13003            s_type: StructureType::PERFORMANCE_STREAM_MARKER_INFO_INTEL,
13004            next: ptr::null(),
13005            marker: u32::default(),
13006        }
13007    }
13008}
13009
13010unsafe impl Send for PerformanceStreamMarkerInfoINTEL {}
13011unsafe impl Sync for PerformanceStreamMarkerInfoINTEL {}
13012
13013/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceValueINTEL.html>
13014#[repr(C)]
13015#[derive(Copy, Clone, Default, Debug)]
13016pub struct PerformanceValueINTEL {
13017    pub type_: PerformanceValueTypeINTEL,
13018    pub data: PerformanceValueDataINTEL,
13019}
13020
13021/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice16BitStorageFeatures.html>
13022#[repr(C)]
13023#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13024pub struct PhysicalDevice16BitStorageFeatures {
13025    pub s_type: StructureType,
13026    pub next: *mut c_void,
13027    pub storage_buffer_16bit_access: Bool32,
13028    pub uniform_and_storage_buffer_16bit_access: Bool32,
13029    pub storage_push_constant16: Bool32,
13030    pub storage_input_output16: Bool32,
13031}
13032
13033impl Default for PhysicalDevice16BitStorageFeatures {
13034    #[inline]
13035    fn default() -> Self {
13036        Self {
13037            s_type: StructureType::PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
13038            next: ptr::null_mut(),
13039            storage_buffer_16bit_access: Bool32::default(),
13040            uniform_and_storage_buffer_16bit_access: Bool32::default(),
13041            storage_push_constant16: Bool32::default(),
13042            storage_input_output16: Bool32::default(),
13043        }
13044    }
13045}
13046
13047unsafe impl Send for PhysicalDevice16BitStorageFeatures {}
13048unsafe impl Sync for PhysicalDevice16BitStorageFeatures {}
13049
13050/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice4444FormatsFeaturesEXT.html>
13051#[repr(C)]
13052#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13053pub struct PhysicalDevice4444FormatsFeaturesEXT {
13054    pub s_type: StructureType,
13055    pub next: *mut c_void,
13056    pub format_a4_r4_g4_b4: Bool32,
13057    pub format_a4_b4_g4_r4: Bool32,
13058}
13059
13060impl Default for PhysicalDevice4444FormatsFeaturesEXT {
13061    #[inline]
13062    fn default() -> Self {
13063        Self {
13064            s_type: StructureType::PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT,
13065            next: ptr::null_mut(),
13066            format_a4_r4_g4_b4: Bool32::default(),
13067            format_a4_b4_g4_r4: Bool32::default(),
13068        }
13069    }
13070}
13071
13072unsafe impl Send for PhysicalDevice4444FormatsFeaturesEXT {}
13073unsafe impl Sync for PhysicalDevice4444FormatsFeaturesEXT {}
13074
13075/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice8BitStorageFeatures.html>
13076#[repr(C)]
13077#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13078pub struct PhysicalDevice8BitStorageFeatures {
13079    pub s_type: StructureType,
13080    pub next: *mut c_void,
13081    pub storage_buffer_8bit_access: Bool32,
13082    pub uniform_and_storage_buffer_8bit_access: Bool32,
13083    pub storage_push_constant8: Bool32,
13084}
13085
13086impl Default for PhysicalDevice8BitStorageFeatures {
13087    #[inline]
13088    fn default() -> Self {
13089        Self {
13090            s_type: StructureType::PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
13091            next: ptr::null_mut(),
13092            storage_buffer_8bit_access: Bool32::default(),
13093            uniform_and_storage_buffer_8bit_access: Bool32::default(),
13094            storage_push_constant8: Bool32::default(),
13095        }
13096    }
13097}
13098
13099unsafe impl Send for PhysicalDevice8BitStorageFeatures {}
13100unsafe impl Sync for PhysicalDevice8BitStorageFeatures {}
13101
13102/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceASTCDecodeFeaturesEXT.html>
13103#[repr(C)]
13104#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13105pub struct PhysicalDeviceASTCDecodeFeaturesEXT {
13106    pub s_type: StructureType,
13107    pub next: *mut c_void,
13108    pub decode_mode_shared_exponent: Bool32,
13109}
13110
13111impl Default for PhysicalDeviceASTCDecodeFeaturesEXT {
13112    #[inline]
13113    fn default() -> Self {
13114        Self {
13115            s_type: StructureType::PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT,
13116            next: ptr::null_mut(),
13117            decode_mode_shared_exponent: Bool32::default(),
13118        }
13119    }
13120}
13121
13122unsafe impl Send for PhysicalDeviceASTCDecodeFeaturesEXT {}
13123unsafe impl Sync for PhysicalDeviceASTCDecodeFeaturesEXT {}
13124
13125/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html>
13126#[repr(C)]
13127#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13128pub struct PhysicalDeviceAccelerationStructureFeaturesKHR {
13129    pub s_type: StructureType,
13130    pub next: *mut c_void,
13131    pub acceleration_structure: Bool32,
13132    pub acceleration_structure_capture_replay: Bool32,
13133    pub acceleration_structure_indirect_build: Bool32,
13134    pub acceleration_structure_host_commands: Bool32,
13135    pub descriptor_binding_acceleration_structure_update_after_bind: Bool32,
13136}
13137
13138impl Default for PhysicalDeviceAccelerationStructureFeaturesKHR {
13139    #[inline]
13140    fn default() -> Self {
13141        Self {
13142            s_type: StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR,
13143            next: ptr::null_mut(),
13144            acceleration_structure: Bool32::default(),
13145            acceleration_structure_capture_replay: Bool32::default(),
13146            acceleration_structure_indirect_build: Bool32::default(),
13147            acceleration_structure_host_commands: Bool32::default(),
13148            descriptor_binding_acceleration_structure_update_after_bind: Bool32::default(),
13149        }
13150    }
13151}
13152
13153unsafe impl Send for PhysicalDeviceAccelerationStructureFeaturesKHR {}
13154unsafe impl Sync for PhysicalDeviceAccelerationStructureFeaturesKHR {}
13155
13156/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html>
13157#[repr(C)]
13158#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13159pub struct PhysicalDeviceAccelerationStructurePropertiesKHR {
13160    pub s_type: StructureType,
13161    pub next: *mut c_void,
13162    pub max_geometry_count: u64,
13163    pub max_instance_count: u64,
13164    pub max_primitive_count: u64,
13165    pub max_per_stage_descriptor_acceleration_structures: u32,
13166    pub max_per_stage_descriptor_update_after_bind_acceleration_structures: u32,
13167    pub max_descriptor_set_acceleration_structures: u32,
13168    pub max_descriptor_set_update_after_bind_acceleration_structures: u32,
13169    pub min_acceleration_structure_scratch_offset_alignment: u32,
13170}
13171
13172impl Default for PhysicalDeviceAccelerationStructurePropertiesKHR {
13173    #[inline]
13174    fn default() -> Self {
13175        Self {
13176            s_type: StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR,
13177            next: ptr::null_mut(),
13178            max_geometry_count: u64::default(),
13179            max_instance_count: u64::default(),
13180            max_primitive_count: u64::default(),
13181            max_per_stage_descriptor_acceleration_structures: u32::default(),
13182            max_per_stage_descriptor_update_after_bind_acceleration_structures: u32::default(),
13183            max_descriptor_set_acceleration_structures: u32::default(),
13184            max_descriptor_set_update_after_bind_acceleration_structures: u32::default(),
13185            min_acceleration_structure_scratch_offset_alignment: u32::default(),
13186        }
13187    }
13188}
13189
13190unsafe impl Send for PhysicalDeviceAccelerationStructurePropertiesKHR {}
13191unsafe impl Sync for PhysicalDeviceAccelerationStructurePropertiesKHR {}
13192
13193/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAddressBindingReportFeaturesEXT.html>
13194#[repr(C)]
13195#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13196pub struct PhysicalDeviceAddressBindingReportFeaturesEXT {
13197    pub s_type: StructureType,
13198    pub next: *mut c_void,
13199    pub report_address_binding: Bool32,
13200}
13201
13202impl Default for PhysicalDeviceAddressBindingReportFeaturesEXT {
13203    #[inline]
13204    fn default() -> Self {
13205        Self {
13206            s_type: StructureType::PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT,
13207            next: ptr::null_mut(),
13208            report_address_binding: Bool32::default(),
13209        }
13210    }
13211}
13212
13213unsafe impl Send for PhysicalDeviceAddressBindingReportFeaturesEXT {}
13214unsafe impl Sync for PhysicalDeviceAddressBindingReportFeaturesEXT {}
13215
13216/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAmigoProfilingFeaturesSEC.html>
13217#[repr(C)]
13218#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13219pub struct PhysicalDeviceAmigoProfilingFeaturesSEC {
13220    pub s_type: StructureType,
13221    pub next: *mut c_void,
13222    pub amigo_profiling: Bool32,
13223}
13224
13225impl Default for PhysicalDeviceAmigoProfilingFeaturesSEC {
13226    #[inline]
13227    fn default() -> Self {
13228        Self {
13229            s_type: StructureType::PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC,
13230            next: ptr::null_mut(),
13231            amigo_profiling: Bool32::default(),
13232        }
13233    }
13234}
13235
13236unsafe impl Send for PhysicalDeviceAmigoProfilingFeaturesSEC {}
13237unsafe impl Sync for PhysicalDeviceAmigoProfilingFeaturesSEC {}
13238
13239/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAntiLagFeaturesAMD.html>
13240#[repr(C)]
13241#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13242pub struct PhysicalDeviceAntiLagFeaturesAMD {
13243    pub s_type: StructureType,
13244    pub next: *mut c_void,
13245    pub anti_lag: Bool32,
13246}
13247
13248impl Default for PhysicalDeviceAntiLagFeaturesAMD {
13249    #[inline]
13250    fn default() -> Self {
13251        Self {
13252            s_type: StructureType::PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD,
13253            next: ptr::null_mut(),
13254            anti_lag: Bool32::default(),
13255        }
13256    }
13257}
13258
13259unsafe impl Send for PhysicalDeviceAntiLagFeaturesAMD {}
13260unsafe impl Sync for PhysicalDeviceAntiLagFeaturesAMD {}
13261
13262/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT.html>
13263#[repr(C)]
13264#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13265pub struct PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
13266    pub s_type: StructureType,
13267    pub next: *mut c_void,
13268    pub attachment_feedback_loop_dynamic_state: Bool32,
13269}
13270
13271impl Default for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
13272    #[inline]
13273    fn default() -> Self {
13274        Self {
13275            s_type:
13276                StructureType::PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT,
13277            next: ptr::null_mut(),
13278            attachment_feedback_loop_dynamic_state: Bool32::default(),
13279        }
13280    }
13281}
13282
13283unsafe impl Send for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {}
13284unsafe impl Sync for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {}
13285
13286/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.html>
13287#[repr(C)]
13288#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13289pub struct PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
13290    pub s_type: StructureType,
13291    pub next: *mut c_void,
13292    pub attachment_feedback_loop_layout: Bool32,
13293}
13294
13295impl Default for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
13296    #[inline]
13297    fn default() -> Self {
13298        Self {
13299            s_type: StructureType::PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT,
13300            next: ptr::null_mut(),
13301            attachment_feedback_loop_layout: Bool32::default(),
13302        }
13303    }
13304}
13305
13306unsafe impl Send for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {}
13307unsafe impl Sync for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {}
13308
13309/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.html>
13310#[repr(C)]
13311#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13312pub struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
13313    pub s_type: StructureType,
13314    pub next: *mut c_void,
13315    pub advanced_blend_coherent_operations: Bool32,
13316}
13317
13318impl Default for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
13319    #[inline]
13320    fn default() -> Self {
13321        Self {
13322            s_type: StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,
13323            next: ptr::null_mut(),
13324            advanced_blend_coherent_operations: Bool32::default(),
13325        }
13326    }
13327}
13328
13329unsafe impl Send for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {}
13330unsafe impl Sync for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {}
13331
13332/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html>
13333#[repr(C)]
13334#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13335pub struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
13336    pub s_type: StructureType,
13337    pub next: *mut c_void,
13338    pub advanced_blend_max_color_attachments: u32,
13339    pub advanced_blend_independent_blend: Bool32,
13340    pub advanced_blend_non_premultiplied_src_color: Bool32,
13341    pub advanced_blend_non_premultiplied_dst_color: Bool32,
13342    pub advanced_blend_correlated_overlap: Bool32,
13343    pub advanced_blend_all_operations: Bool32,
13344}
13345
13346impl Default for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
13347    #[inline]
13348    fn default() -> Self {
13349        Self {
13350            s_type: StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,
13351            next: ptr::null_mut(),
13352            advanced_blend_max_color_attachments: u32::default(),
13353            advanced_blend_independent_blend: Bool32::default(),
13354            advanced_blend_non_premultiplied_src_color: Bool32::default(),
13355            advanced_blend_non_premultiplied_dst_color: Bool32::default(),
13356            advanced_blend_correlated_overlap: Bool32::default(),
13357            advanced_blend_all_operations: Bool32::default(),
13358        }
13359    }
13360}
13361
13362unsafe impl Send for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {}
13363unsafe impl Sync for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {}
13364
13365/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.html>
13366#[repr(C)]
13367#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13368pub struct PhysicalDeviceBorderColorSwizzleFeaturesEXT {
13369    pub s_type: StructureType,
13370    pub next: *mut c_void,
13371    pub border_color_swizzle: Bool32,
13372    pub border_color_swizzle_from_image: Bool32,
13373}
13374
13375impl Default for PhysicalDeviceBorderColorSwizzleFeaturesEXT {
13376    #[inline]
13377    fn default() -> Self {
13378        Self {
13379            s_type: StructureType::PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT,
13380            next: ptr::null_mut(),
13381            border_color_swizzle: Bool32::default(),
13382            border_color_swizzle_from_image: Bool32::default(),
13383        }
13384    }
13385}
13386
13387unsafe impl Send for PhysicalDeviceBorderColorSwizzleFeaturesEXT {}
13388unsafe impl Sync for PhysicalDeviceBorderColorSwizzleFeaturesEXT {}
13389
13390/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeatures.html>
13391#[repr(C)]
13392#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13393pub struct PhysicalDeviceBufferDeviceAddressFeatures {
13394    pub s_type: StructureType,
13395    pub next: *mut c_void,
13396    pub buffer_device_address: Bool32,
13397    pub buffer_device_address_capture_replay: Bool32,
13398    pub buffer_device_address_multi_device: Bool32,
13399}
13400
13401impl Default for PhysicalDeviceBufferDeviceAddressFeatures {
13402    #[inline]
13403    fn default() -> Self {
13404        Self {
13405            s_type: StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
13406            next: ptr::null_mut(),
13407            buffer_device_address: Bool32::default(),
13408            buffer_device_address_capture_replay: Bool32::default(),
13409            buffer_device_address_multi_device: Bool32::default(),
13410        }
13411    }
13412}
13413
13414unsafe impl Send for PhysicalDeviceBufferDeviceAddressFeatures {}
13415unsafe impl Sync for PhysicalDeviceBufferDeviceAddressFeatures {}
13416
13417/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeaturesEXT.html>
13418#[repr(C)]
13419#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13420pub struct PhysicalDeviceBufferDeviceAddressFeaturesEXT {
13421    pub s_type: StructureType,
13422    pub next: *mut c_void,
13423    pub buffer_device_address: Bool32,
13424    pub buffer_device_address_capture_replay: Bool32,
13425    pub buffer_device_address_multi_device: Bool32,
13426}
13427
13428impl Default for PhysicalDeviceBufferDeviceAddressFeaturesEXT {
13429    #[inline]
13430    fn default() -> Self {
13431        Self {
13432            s_type: StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
13433            next: ptr::null_mut(),
13434            buffer_device_address: Bool32::default(),
13435            buffer_device_address_capture_replay: Bool32::default(),
13436            buffer_device_address_multi_device: Bool32::default(),
13437        }
13438    }
13439}
13440
13441unsafe impl Send for PhysicalDeviceBufferDeviceAddressFeaturesEXT {}
13442unsafe impl Sync for PhysicalDeviceBufferDeviceAddressFeaturesEXT {}
13443
13444/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterAccelerationStructureFeaturesNV.html>
13445#[repr(C)]
13446#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13447pub struct PhysicalDeviceClusterAccelerationStructureFeaturesNV {
13448    pub s_type: StructureType,
13449    pub next: *mut c_void,
13450    pub cluster_acceleration_structure: Bool32,
13451}
13452
13453impl Default for PhysicalDeviceClusterAccelerationStructureFeaturesNV {
13454    #[inline]
13455    fn default() -> Self {
13456        Self {
13457            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV,
13458            next: ptr::null_mut(),
13459            cluster_acceleration_structure: Bool32::default(),
13460        }
13461    }
13462}
13463
13464unsafe impl Send for PhysicalDeviceClusterAccelerationStructureFeaturesNV {}
13465unsafe impl Sync for PhysicalDeviceClusterAccelerationStructureFeaturesNV {}
13466
13467/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterAccelerationStructurePropertiesNV.html>
13468#[repr(C)]
13469#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13470pub struct PhysicalDeviceClusterAccelerationStructurePropertiesNV {
13471    pub s_type: StructureType,
13472    pub next: *mut c_void,
13473    pub max_vertices_per_cluster: u32,
13474    pub max_triangles_per_cluster: u32,
13475    pub cluster_scratch_byte_alignment: u32,
13476    pub cluster_byte_alignment: u32,
13477    pub cluster_template_byte_alignment: u32,
13478    pub cluster_bottom_level_byte_alignment: u32,
13479    pub cluster_template_bounds_byte_alignment: u32,
13480    pub max_cluster_geometry_index: u32,
13481}
13482
13483impl Default for PhysicalDeviceClusterAccelerationStructurePropertiesNV {
13484    #[inline]
13485    fn default() -> Self {
13486        Self {
13487            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV,
13488            next: ptr::null_mut(),
13489            max_vertices_per_cluster: u32::default(),
13490            max_triangles_per_cluster: u32::default(),
13491            cluster_scratch_byte_alignment: u32::default(),
13492            cluster_byte_alignment: u32::default(),
13493            cluster_template_byte_alignment: u32::default(),
13494            cluster_bottom_level_byte_alignment: u32::default(),
13495            cluster_template_bounds_byte_alignment: u32::default(),
13496            max_cluster_geometry_index: u32::default(),
13497        }
13498    }
13499}
13500
13501unsafe impl Send for PhysicalDeviceClusterAccelerationStructurePropertiesNV {}
13502unsafe impl Sync for PhysicalDeviceClusterAccelerationStructurePropertiesNV {}
13503
13504/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.html>
13505#[repr(C)]
13506#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13507pub struct PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
13508    pub s_type: StructureType,
13509    pub next: *mut c_void,
13510    pub clusterculling_shader: Bool32,
13511    pub multiview_cluster_culling_shader: Bool32,
13512}
13513
13514impl Default for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
13515    #[inline]
13516    fn default() -> Self {
13517        Self {
13518            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI,
13519            next: ptr::null_mut(),
13520            clusterculling_shader: Bool32::default(),
13521            multiview_cluster_culling_shader: Bool32::default(),
13522        }
13523    }
13524}
13525
13526unsafe impl Send for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {}
13527unsafe impl Sync for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {}
13528
13529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.html>
13530#[repr(C)]
13531#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13532pub struct PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
13533    pub s_type: StructureType,
13534    pub next: *mut c_void,
13535    pub max_work_group_count: [u32; 3],
13536    pub max_work_group_size: [u32; 3],
13537    pub max_output_cluster_count: u32,
13538    pub indirect_buffer_offset_alignment: DeviceSize,
13539}
13540
13541impl Default for PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
13542    #[inline]
13543    fn default() -> Self {
13544        Self {
13545            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI,
13546            next: ptr::null_mut(),
13547            max_work_group_count: [u32::default(); 3],
13548            max_work_group_size: [u32::default(); 3],
13549            max_output_cluster_count: u32::default(),
13550            indirect_buffer_offset_alignment: DeviceSize::default(),
13551        }
13552    }
13553}
13554
13555unsafe impl Send for PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {}
13556unsafe impl Sync for PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {}
13557
13558/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI.html>
13559#[repr(C)]
13560#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13561pub struct PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
13562    pub s_type: StructureType,
13563    pub next: *mut c_void,
13564    pub cluster_shading_rate: Bool32,
13565}
13566
13567impl Default for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
13568    #[inline]
13569    fn default() -> Self {
13570        Self {
13571            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI,
13572            next: ptr::null_mut(),
13573            cluster_shading_rate: Bool32::default(),
13574        }
13575    }
13576}
13577
13578unsafe impl Send for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {}
13579unsafe impl Sync for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {}
13580
13581/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCoherentMemoryFeaturesAMD.html>
13582#[repr(C)]
13583#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13584pub struct PhysicalDeviceCoherentMemoryFeaturesAMD {
13585    pub s_type: StructureType,
13586    pub next: *mut c_void,
13587    pub device_coherent_memory: Bool32,
13588}
13589
13590impl Default for PhysicalDeviceCoherentMemoryFeaturesAMD {
13591    #[inline]
13592    fn default() -> Self {
13593        Self {
13594            s_type: StructureType::PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD,
13595            next: ptr::null_mut(),
13596            device_coherent_memory: Bool32::default(),
13597        }
13598    }
13599}
13600
13601unsafe impl Send for PhysicalDeviceCoherentMemoryFeaturesAMD {}
13602unsafe impl Sync for PhysicalDeviceCoherentMemoryFeaturesAMD {}
13603
13604/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceColorWriteEnableFeaturesEXT.html>
13605#[repr(C)]
13606#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13607pub struct PhysicalDeviceColorWriteEnableFeaturesEXT {
13608    pub s_type: StructureType,
13609    pub next: *mut c_void,
13610    pub color_write_enable: Bool32,
13611}
13612
13613impl Default for PhysicalDeviceColorWriteEnableFeaturesEXT {
13614    #[inline]
13615    fn default() -> Self {
13616        Self {
13617            s_type: StructureType::PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT,
13618            next: ptr::null_mut(),
13619            color_write_enable: Bool32::default(),
13620        }
13621    }
13622}
13623
13624unsafe impl Send for PhysicalDeviceColorWriteEnableFeaturesEXT {}
13625unsafe impl Sync for PhysicalDeviceColorWriteEnableFeaturesEXT {}
13626
13627/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCommandBufferInheritanceFeaturesNV.html>
13628#[repr(C)]
13629#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13630pub struct PhysicalDeviceCommandBufferInheritanceFeaturesNV {
13631    pub s_type: StructureType,
13632    pub next: *mut c_void,
13633    pub command_buffer_inheritance: Bool32,
13634}
13635
13636impl Default for PhysicalDeviceCommandBufferInheritanceFeaturesNV {
13637    #[inline]
13638    fn default() -> Self {
13639        Self {
13640            s_type: StructureType::PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV,
13641            next: ptr::null_mut(),
13642            command_buffer_inheritance: Bool32::default(),
13643        }
13644    }
13645}
13646
13647unsafe impl Send for PhysicalDeviceCommandBufferInheritanceFeaturesNV {}
13648unsafe impl Sync for PhysicalDeviceCommandBufferInheritanceFeaturesNV {}
13649
13650/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR.html>
13651#[repr(C)]
13652#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13653pub struct PhysicalDeviceComputeShaderDerivativesFeaturesKHR {
13654    pub s_type: StructureType,
13655    pub next: *mut c_void,
13656    pub compute_derivative_group_quads: Bool32,
13657    pub compute_derivative_group_linear: Bool32,
13658}
13659
13660impl Default for PhysicalDeviceComputeShaderDerivativesFeaturesKHR {
13661    #[inline]
13662    fn default() -> Self {
13663        Self {
13664            s_type: StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR,
13665            next: ptr::null_mut(),
13666            compute_derivative_group_quads: Bool32::default(),
13667            compute_derivative_group_linear: Bool32::default(),
13668        }
13669    }
13670}
13671
13672unsafe impl Send for PhysicalDeviceComputeShaderDerivativesFeaturesKHR {}
13673unsafe impl Sync for PhysicalDeviceComputeShaderDerivativesFeaturesKHR {}
13674
13675/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR.html>
13676#[repr(C)]
13677#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13678pub struct PhysicalDeviceComputeShaderDerivativesPropertiesKHR {
13679    pub s_type: StructureType,
13680    pub next: *mut c_void,
13681    pub mesh_and_task_shader_derivatives: Bool32,
13682}
13683
13684impl Default for PhysicalDeviceComputeShaderDerivativesPropertiesKHR {
13685    #[inline]
13686    fn default() -> Self {
13687        Self {
13688            s_type: StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR,
13689            next: ptr::null_mut(),
13690            mesh_and_task_shader_derivatives: Bool32::default(),
13691        }
13692    }
13693}
13694
13695unsafe impl Send for PhysicalDeviceComputeShaderDerivativesPropertiesKHR {}
13696unsafe impl Sync for PhysicalDeviceComputeShaderDerivativesPropertiesKHR {}
13697
13698/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceConditionalRenderingFeaturesEXT.html>
13699#[repr(C)]
13700#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13701pub struct PhysicalDeviceConditionalRenderingFeaturesEXT {
13702    pub s_type: StructureType,
13703    pub next: *mut c_void,
13704    pub conditional_rendering: Bool32,
13705    pub inherited_conditional_rendering: Bool32,
13706}
13707
13708impl Default for PhysicalDeviceConditionalRenderingFeaturesEXT {
13709    #[inline]
13710    fn default() -> Self {
13711        Self {
13712            s_type: StructureType::PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT,
13713            next: ptr::null_mut(),
13714            conditional_rendering: Bool32::default(),
13715            inherited_conditional_rendering: Bool32::default(),
13716        }
13717    }
13718}
13719
13720unsafe impl Send for PhysicalDeviceConditionalRenderingFeaturesEXT {}
13721unsafe impl Sync for PhysicalDeviceConditionalRenderingFeaturesEXT {}
13722
13723/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html>
13724#[repr(C)]
13725#[derive(Copy, Clone, Debug, PartialEq)]
13726pub struct PhysicalDeviceConservativeRasterizationPropertiesEXT {
13727    pub s_type: StructureType,
13728    pub next: *mut c_void,
13729    pub primitive_overestimation_size: f32,
13730    pub max_extra_primitive_overestimation_size: f32,
13731    pub extra_primitive_overestimation_size_granularity: f32,
13732    pub primitive_underestimation: Bool32,
13733    pub conservative_point_and_line_rasterization: Bool32,
13734    pub degenerate_triangles_rasterized: Bool32,
13735    pub degenerate_lines_rasterized: Bool32,
13736    pub fully_covered_fragment_shader_input_variable: Bool32,
13737    pub conservative_rasterization_post_depth_coverage: Bool32,
13738}
13739
13740impl Default for PhysicalDeviceConservativeRasterizationPropertiesEXT {
13741    #[inline]
13742    fn default() -> Self {
13743        Self {
13744            s_type: StructureType::PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT,
13745            next: ptr::null_mut(),
13746            primitive_overestimation_size: f32::default(),
13747            max_extra_primitive_overestimation_size: f32::default(),
13748            extra_primitive_overestimation_size_granularity: f32::default(),
13749            primitive_underestimation: Bool32::default(),
13750            conservative_point_and_line_rasterization: Bool32::default(),
13751            degenerate_triangles_rasterized: Bool32::default(),
13752            degenerate_lines_rasterized: Bool32::default(),
13753            fully_covered_fragment_shader_input_variable: Bool32::default(),
13754            conservative_rasterization_post_depth_coverage: Bool32::default(),
13755        }
13756    }
13757}
13758
13759unsafe impl Send for PhysicalDeviceConservativeRasterizationPropertiesEXT {}
13760unsafe impl Sync for PhysicalDeviceConservativeRasterizationPropertiesEXT {}
13761
13762/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrix2FeaturesNV.html>
13763#[repr(C)]
13764#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13765pub struct PhysicalDeviceCooperativeMatrix2FeaturesNV {
13766    pub s_type: StructureType,
13767    pub next: *mut c_void,
13768    pub cooperative_matrix_workgroup_scope: Bool32,
13769    pub cooperative_matrix_flexible_dimensions: Bool32,
13770    pub cooperative_matrix_reductions: Bool32,
13771    pub cooperative_matrix_conversions: Bool32,
13772    pub cooperative_matrix_per_element_operations: Bool32,
13773    pub cooperative_matrix_tensor_addressing: Bool32,
13774    pub cooperative_matrix_block_loads: Bool32,
13775}
13776
13777impl Default for PhysicalDeviceCooperativeMatrix2FeaturesNV {
13778    #[inline]
13779    fn default() -> Self {
13780        Self {
13781            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV,
13782            next: ptr::null_mut(),
13783            cooperative_matrix_workgroup_scope: Bool32::default(),
13784            cooperative_matrix_flexible_dimensions: Bool32::default(),
13785            cooperative_matrix_reductions: Bool32::default(),
13786            cooperative_matrix_conversions: Bool32::default(),
13787            cooperative_matrix_per_element_operations: Bool32::default(),
13788            cooperative_matrix_tensor_addressing: Bool32::default(),
13789            cooperative_matrix_block_loads: Bool32::default(),
13790        }
13791    }
13792}
13793
13794unsafe impl Send for PhysicalDeviceCooperativeMatrix2FeaturesNV {}
13795unsafe impl Sync for PhysicalDeviceCooperativeMatrix2FeaturesNV {}
13796
13797/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrix2PropertiesNV.html>
13798#[repr(C)]
13799#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13800pub struct PhysicalDeviceCooperativeMatrix2PropertiesNV {
13801    pub s_type: StructureType,
13802    pub next: *mut c_void,
13803    pub cooperative_matrix_workgroup_scope_max_workgroup_size: u32,
13804    pub cooperative_matrix_flexible_dimensions_max_dimension: u32,
13805    pub cooperative_matrix_workgroup_scope_reserved_shared_memory: u32,
13806}
13807
13808impl Default for PhysicalDeviceCooperativeMatrix2PropertiesNV {
13809    #[inline]
13810    fn default() -> Self {
13811        Self {
13812            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV,
13813            next: ptr::null_mut(),
13814            cooperative_matrix_workgroup_scope_max_workgroup_size: u32::default(),
13815            cooperative_matrix_flexible_dimensions_max_dimension: u32::default(),
13816            cooperative_matrix_workgroup_scope_reserved_shared_memory: u32::default(),
13817        }
13818    }
13819}
13820
13821unsafe impl Send for PhysicalDeviceCooperativeMatrix2PropertiesNV {}
13822unsafe impl Sync for PhysicalDeviceCooperativeMatrix2PropertiesNV {}
13823
13824/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesKHR.html>
13825#[repr(C)]
13826#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13827pub struct PhysicalDeviceCooperativeMatrixFeaturesKHR {
13828    pub s_type: StructureType,
13829    pub next: *mut c_void,
13830    pub cooperative_matrix: Bool32,
13831    pub cooperative_matrix_robust_buffer_access: Bool32,
13832}
13833
13834impl Default for PhysicalDeviceCooperativeMatrixFeaturesKHR {
13835    #[inline]
13836    fn default() -> Self {
13837        Self {
13838            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR,
13839            next: ptr::null_mut(),
13840            cooperative_matrix: Bool32::default(),
13841            cooperative_matrix_robust_buffer_access: Bool32::default(),
13842        }
13843    }
13844}
13845
13846unsafe impl Send for PhysicalDeviceCooperativeMatrixFeaturesKHR {}
13847unsafe impl Sync for PhysicalDeviceCooperativeMatrixFeaturesKHR {}
13848
13849/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesNV.html>
13850#[repr(C)]
13851#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13852pub struct PhysicalDeviceCooperativeMatrixFeaturesNV {
13853    pub s_type: StructureType,
13854    pub next: *mut c_void,
13855    pub cooperative_matrix: Bool32,
13856    pub cooperative_matrix_robust_buffer_access: Bool32,
13857}
13858
13859impl Default for PhysicalDeviceCooperativeMatrixFeaturesNV {
13860    #[inline]
13861    fn default() -> Self {
13862        Self {
13863            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV,
13864            next: ptr::null_mut(),
13865            cooperative_matrix: Bool32::default(),
13866            cooperative_matrix_robust_buffer_access: Bool32::default(),
13867        }
13868    }
13869}
13870
13871unsafe impl Send for PhysicalDeviceCooperativeMatrixFeaturesNV {}
13872unsafe impl Sync for PhysicalDeviceCooperativeMatrixFeaturesNV {}
13873
13874/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixPropertiesKHR.html>
13875#[repr(C)]
13876#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13877pub struct PhysicalDeviceCooperativeMatrixPropertiesKHR {
13878    pub s_type: StructureType,
13879    pub next: *mut c_void,
13880    pub cooperative_matrix_supported_stages: ShaderStageFlags,
13881}
13882
13883impl Default for PhysicalDeviceCooperativeMatrixPropertiesKHR {
13884    #[inline]
13885    fn default() -> Self {
13886        Self {
13887            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR,
13888            next: ptr::null_mut(),
13889            cooperative_matrix_supported_stages: ShaderStageFlags::default(),
13890        }
13891    }
13892}
13893
13894unsafe impl Send for PhysicalDeviceCooperativeMatrixPropertiesKHR {}
13895unsafe impl Sync for PhysicalDeviceCooperativeMatrixPropertiesKHR {}
13896
13897/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixPropertiesNV.html>
13898#[repr(C)]
13899#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13900pub struct PhysicalDeviceCooperativeMatrixPropertiesNV {
13901    pub s_type: StructureType,
13902    pub next: *mut c_void,
13903    pub cooperative_matrix_supported_stages: ShaderStageFlags,
13904}
13905
13906impl Default for PhysicalDeviceCooperativeMatrixPropertiesNV {
13907    #[inline]
13908    fn default() -> Self {
13909        Self {
13910            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV,
13911            next: ptr::null_mut(),
13912            cooperative_matrix_supported_stages: ShaderStageFlags::default(),
13913        }
13914    }
13915}
13916
13917unsafe impl Send for PhysicalDeviceCooperativeMatrixPropertiesNV {}
13918unsafe impl Sync for PhysicalDeviceCooperativeMatrixPropertiesNV {}
13919
13920/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeVectorFeaturesNV.html>
13921#[repr(C)]
13922#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13923pub struct PhysicalDeviceCooperativeVectorFeaturesNV {
13924    pub s_type: StructureType,
13925    pub next: *mut c_void,
13926    pub cooperative_vector: Bool32,
13927    pub cooperative_vector_training: Bool32,
13928}
13929
13930impl Default for PhysicalDeviceCooperativeVectorFeaturesNV {
13931    #[inline]
13932    fn default() -> Self {
13933        Self {
13934            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV,
13935            next: ptr::null_mut(),
13936            cooperative_vector: Bool32::default(),
13937            cooperative_vector_training: Bool32::default(),
13938        }
13939    }
13940}
13941
13942unsafe impl Send for PhysicalDeviceCooperativeVectorFeaturesNV {}
13943unsafe impl Sync for PhysicalDeviceCooperativeVectorFeaturesNV {}
13944
13945/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeVectorPropertiesNV.html>
13946#[repr(C)]
13947#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13948pub struct PhysicalDeviceCooperativeVectorPropertiesNV {
13949    pub s_type: StructureType,
13950    pub next: *mut c_void,
13951    pub cooperative_vector_supported_stages: ShaderStageFlags,
13952    pub cooperative_vector_training_float16_accumulation: Bool32,
13953    pub cooperative_vector_training_float32_accumulation: Bool32,
13954    pub max_cooperative_vector_components: u32,
13955}
13956
13957impl Default for PhysicalDeviceCooperativeVectorPropertiesNV {
13958    #[inline]
13959    fn default() -> Self {
13960        Self {
13961            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV,
13962            next: ptr::null_mut(),
13963            cooperative_vector_supported_stages: ShaderStageFlags::default(),
13964            cooperative_vector_training_float16_accumulation: Bool32::default(),
13965            cooperative_vector_training_float32_accumulation: Bool32::default(),
13966            max_cooperative_vector_components: u32::default(),
13967        }
13968    }
13969}
13970
13971unsafe impl Send for PhysicalDeviceCooperativeVectorPropertiesNV {}
13972unsafe impl Sync for PhysicalDeviceCooperativeVectorPropertiesNV {}
13973
13974/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR.html>
13975#[repr(C)]
13976#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13977pub struct PhysicalDeviceCopyMemoryIndirectFeaturesKHR {
13978    pub s_type: StructureType,
13979    pub next: *mut c_void,
13980    pub indirect_memory_copy: Bool32,
13981    pub indirect_memory_to_image_copy: Bool32,
13982}
13983
13984impl Default for PhysicalDeviceCopyMemoryIndirectFeaturesKHR {
13985    #[inline]
13986    fn default() -> Self {
13987        Self {
13988            s_type: StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR,
13989            next: ptr::null_mut(),
13990            indirect_memory_copy: Bool32::default(),
13991            indirect_memory_to_image_copy: Bool32::default(),
13992        }
13993    }
13994}
13995
13996unsafe impl Send for PhysicalDeviceCopyMemoryIndirectFeaturesKHR {}
13997unsafe impl Sync for PhysicalDeviceCopyMemoryIndirectFeaturesKHR {}
13998
13999/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectFeaturesNV.html>
14000#[repr(C)]
14001#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14002pub struct PhysicalDeviceCopyMemoryIndirectFeaturesNV {
14003    pub s_type: StructureType,
14004    pub next: *mut c_void,
14005    pub indirect_copy: Bool32,
14006}
14007
14008impl Default for PhysicalDeviceCopyMemoryIndirectFeaturesNV {
14009    #[inline]
14010    fn default() -> Self {
14011        Self {
14012            s_type: StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV,
14013            next: ptr::null_mut(),
14014            indirect_copy: Bool32::default(),
14015        }
14016    }
14017}
14018
14019unsafe impl Send for PhysicalDeviceCopyMemoryIndirectFeaturesNV {}
14020unsafe impl Sync for PhysicalDeviceCopyMemoryIndirectFeaturesNV {}
14021
14022/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR.html>
14023#[repr(C)]
14024#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14025pub struct PhysicalDeviceCopyMemoryIndirectPropertiesKHR {
14026    pub s_type: StructureType,
14027    pub next: *mut c_void,
14028    pub supported_queues: QueueFlags,
14029}
14030
14031impl Default for PhysicalDeviceCopyMemoryIndirectPropertiesKHR {
14032    #[inline]
14033    fn default() -> Self {
14034        Self {
14035            s_type: StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR,
14036            next: ptr::null_mut(),
14037            supported_queues: QueueFlags::default(),
14038        }
14039    }
14040}
14041
14042unsafe impl Send for PhysicalDeviceCopyMemoryIndirectPropertiesKHR {}
14043unsafe impl Sync for PhysicalDeviceCopyMemoryIndirectPropertiesKHR {}
14044
14045/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCornerSampledImageFeaturesNV.html>
14046#[repr(C)]
14047#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14048pub struct PhysicalDeviceCornerSampledImageFeaturesNV {
14049    pub s_type: StructureType,
14050    pub next: *mut c_void,
14051    pub corner_sampled_image: Bool32,
14052}
14053
14054impl Default for PhysicalDeviceCornerSampledImageFeaturesNV {
14055    #[inline]
14056    fn default() -> Self {
14057        Self {
14058            s_type: StructureType::PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV,
14059            next: ptr::null_mut(),
14060            corner_sampled_image: Bool32::default(),
14061        }
14062    }
14063}
14064
14065unsafe impl Send for PhysicalDeviceCornerSampledImageFeaturesNV {}
14066unsafe impl Sync for PhysicalDeviceCornerSampledImageFeaturesNV {}
14067
14068/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCoverageReductionModeFeaturesNV.html>
14069#[repr(C)]
14070#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14071pub struct PhysicalDeviceCoverageReductionModeFeaturesNV {
14072    pub s_type: StructureType,
14073    pub next: *mut c_void,
14074    pub coverage_reduction_mode: Bool32,
14075}
14076
14077impl Default for PhysicalDeviceCoverageReductionModeFeaturesNV {
14078    #[inline]
14079    fn default() -> Self {
14080        Self {
14081            s_type: StructureType::PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV,
14082            next: ptr::null_mut(),
14083            coverage_reduction_mode: Bool32::default(),
14084        }
14085    }
14086}
14087
14088unsafe impl Send for PhysicalDeviceCoverageReductionModeFeaturesNV {}
14089unsafe impl Sync for PhysicalDeviceCoverageReductionModeFeaturesNV {}
14090
14091/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCubicClampFeaturesQCOM.html>
14092#[repr(C)]
14093#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14094pub struct PhysicalDeviceCubicClampFeaturesQCOM {
14095    pub s_type: StructureType,
14096    pub next: *mut c_void,
14097    pub cubic_range_clamp: Bool32,
14098}
14099
14100impl Default for PhysicalDeviceCubicClampFeaturesQCOM {
14101    #[inline]
14102    fn default() -> Self {
14103        Self {
14104            s_type: StructureType::PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM,
14105            next: ptr::null_mut(),
14106            cubic_range_clamp: Bool32::default(),
14107        }
14108    }
14109}
14110
14111unsafe impl Send for PhysicalDeviceCubicClampFeaturesQCOM {}
14112unsafe impl Sync for PhysicalDeviceCubicClampFeaturesQCOM {}
14113
14114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCubicWeightsFeaturesQCOM.html>
14115#[repr(C)]
14116#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14117pub struct PhysicalDeviceCubicWeightsFeaturesQCOM {
14118    pub s_type: StructureType,
14119    pub next: *mut c_void,
14120    pub selectable_cubic_weights: Bool32,
14121}
14122
14123impl Default for PhysicalDeviceCubicWeightsFeaturesQCOM {
14124    #[inline]
14125    fn default() -> Self {
14126        Self {
14127            s_type: StructureType::PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM,
14128            next: ptr::null_mut(),
14129            selectable_cubic_weights: Bool32::default(),
14130        }
14131    }
14132}
14133
14134unsafe impl Send for PhysicalDeviceCubicWeightsFeaturesQCOM {}
14135unsafe impl Sync for PhysicalDeviceCubicWeightsFeaturesQCOM {}
14136
14137/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCudaKernelLaunchFeaturesNV.html>
14138#[repr(C)]
14139#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14140pub struct PhysicalDeviceCudaKernelLaunchFeaturesNV {
14141    pub s_type: StructureType,
14142    pub next: *mut c_void,
14143    pub cuda_kernel_launch_features: Bool32,
14144}
14145
14146impl Default for PhysicalDeviceCudaKernelLaunchFeaturesNV {
14147    #[inline]
14148    fn default() -> Self {
14149        Self {
14150            s_type: StructureType::PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV,
14151            next: ptr::null_mut(),
14152            cuda_kernel_launch_features: Bool32::default(),
14153        }
14154    }
14155}
14156
14157unsafe impl Send for PhysicalDeviceCudaKernelLaunchFeaturesNV {}
14158unsafe impl Sync for PhysicalDeviceCudaKernelLaunchFeaturesNV {}
14159
14160/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCudaKernelLaunchPropertiesNV.html>
14161#[repr(C)]
14162#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14163pub struct PhysicalDeviceCudaKernelLaunchPropertiesNV {
14164    pub s_type: StructureType,
14165    pub next: *mut c_void,
14166    pub compute_capability_minor: u32,
14167    pub compute_capability_major: u32,
14168}
14169
14170impl Default for PhysicalDeviceCudaKernelLaunchPropertiesNV {
14171    #[inline]
14172    fn default() -> Self {
14173        Self {
14174            s_type: StructureType::PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV,
14175            next: ptr::null_mut(),
14176            compute_capability_minor: u32::default(),
14177            compute_capability_major: u32::default(),
14178        }
14179    }
14180}
14181
14182unsafe impl Send for PhysicalDeviceCudaKernelLaunchPropertiesNV {}
14183unsafe impl Sync for PhysicalDeviceCudaKernelLaunchPropertiesNV {}
14184
14185/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCustomBorderColorFeaturesEXT.html>
14186#[repr(C)]
14187#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14188pub struct PhysicalDeviceCustomBorderColorFeaturesEXT {
14189    pub s_type: StructureType,
14190    pub next: *mut c_void,
14191    pub custom_border_colors: Bool32,
14192    pub custom_border_color_without_format: Bool32,
14193}
14194
14195impl Default for PhysicalDeviceCustomBorderColorFeaturesEXT {
14196    #[inline]
14197    fn default() -> Self {
14198        Self {
14199            s_type: StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT,
14200            next: ptr::null_mut(),
14201            custom_border_colors: Bool32::default(),
14202            custom_border_color_without_format: Bool32::default(),
14203        }
14204    }
14205}
14206
14207unsafe impl Send for PhysicalDeviceCustomBorderColorFeaturesEXT {}
14208unsafe impl Sync for PhysicalDeviceCustomBorderColorFeaturesEXT {}
14209
14210/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCustomBorderColorPropertiesEXT.html>
14211#[repr(C)]
14212#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14213pub struct PhysicalDeviceCustomBorderColorPropertiesEXT {
14214    pub s_type: StructureType,
14215    pub next: *mut c_void,
14216    pub max_custom_border_color_samplers: u32,
14217}
14218
14219impl Default for PhysicalDeviceCustomBorderColorPropertiesEXT {
14220    #[inline]
14221    fn default() -> Self {
14222        Self {
14223            s_type: StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT,
14224            next: ptr::null_mut(),
14225            max_custom_border_color_samplers: u32::default(),
14226        }
14227    }
14228}
14229
14230unsafe impl Send for PhysicalDeviceCustomBorderColorPropertiesEXT {}
14231unsafe impl Sync for PhysicalDeviceCustomBorderColorPropertiesEXT {}
14232
14233/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphFeaturesARM.html>
14234#[repr(C)]
14235#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14236pub struct PhysicalDeviceDataGraphFeaturesARM {
14237    pub s_type: StructureType,
14238    pub next: *mut c_void,
14239    pub data_graph: Bool32,
14240    pub data_graph_update_after_bind: Bool32,
14241    pub data_graph_specialization_constants: Bool32,
14242    pub data_graph_descriptor_buffer: Bool32,
14243    pub data_graph_shader_module: Bool32,
14244}
14245
14246impl Default for PhysicalDeviceDataGraphFeaturesARM {
14247    #[inline]
14248    fn default() -> Self {
14249        Self {
14250            s_type: StructureType::PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM,
14251            next: ptr::null_mut(),
14252            data_graph: Bool32::default(),
14253            data_graph_update_after_bind: Bool32::default(),
14254            data_graph_specialization_constants: Bool32::default(),
14255            data_graph_descriptor_buffer: Bool32::default(),
14256            data_graph_shader_module: Bool32::default(),
14257        }
14258    }
14259}
14260
14261unsafe impl Send for PhysicalDeviceDataGraphFeaturesARM {}
14262unsafe impl Sync for PhysicalDeviceDataGraphFeaturesARM {}
14263
14264/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphOperationSupportARM.html>
14265#[repr(C)]
14266#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
14267pub struct PhysicalDeviceDataGraphOperationSupportARM {
14268    pub operation_type: PhysicalDeviceDataGraphOperationTypeARM,
14269    pub name: StringArray<MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM>,
14270    pub version: u32,
14271}
14272
14273/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphProcessingEngineARM.html>
14274#[repr(C)]
14275#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
14276pub struct PhysicalDeviceDataGraphProcessingEngineARM {
14277    pub type_: PhysicalDeviceDataGraphProcessingEngineTypeARM,
14278    pub is_foreign: Bool32,
14279}
14280
14281/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.html>
14282#[repr(C)]
14283#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14284pub struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
14285    pub s_type: StructureType,
14286    pub next: *mut c_void,
14287    pub dedicated_allocation_image_aliasing: Bool32,
14288}
14289
14290impl Default for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
14291    #[inline]
14292    fn default() -> Self {
14293        Self {
14294            s_type: StructureType::PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV,
14295            next: ptr::null_mut(),
14296            dedicated_allocation_image_aliasing: Bool32::default(),
14297        }
14298    }
14299}
14300
14301unsafe impl Send for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {}
14302unsafe impl Sync for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {}
14303
14304/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX.html>
14305#[repr(C)]
14306#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14307pub struct PhysicalDeviceDenseGeometryFormatFeaturesAMDX {
14308    pub s_type: StructureType,
14309    pub next: *mut c_void,
14310    pub dense_geometry_format: Bool32,
14311}
14312
14313impl Default for PhysicalDeviceDenseGeometryFormatFeaturesAMDX {
14314    #[inline]
14315    fn default() -> Self {
14316        Self {
14317            s_type: StructureType::PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX,
14318            next: ptr::null_mut(),
14319            dense_geometry_format: Bool32::default(),
14320        }
14321    }
14322}
14323
14324unsafe impl Send for PhysicalDeviceDenseGeometryFormatFeaturesAMDX {}
14325unsafe impl Sync for PhysicalDeviceDenseGeometryFormatFeaturesAMDX {}
14326
14327/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthBiasControlFeaturesEXT.html>
14328#[repr(C)]
14329#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14330pub struct PhysicalDeviceDepthBiasControlFeaturesEXT {
14331    pub s_type: StructureType,
14332    pub next: *mut c_void,
14333    pub depth_bias_control: Bool32,
14334    pub least_representable_value_force_unorm_representation: Bool32,
14335    pub float_representation: Bool32,
14336    pub depth_bias_exact: Bool32,
14337}
14338
14339impl Default for PhysicalDeviceDepthBiasControlFeaturesEXT {
14340    #[inline]
14341    fn default() -> Self {
14342        Self {
14343            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT,
14344            next: ptr::null_mut(),
14345            depth_bias_control: Bool32::default(),
14346            least_representable_value_force_unorm_representation: Bool32::default(),
14347            float_representation: Bool32::default(),
14348            depth_bias_exact: Bool32::default(),
14349        }
14350    }
14351}
14352
14353unsafe impl Send for PhysicalDeviceDepthBiasControlFeaturesEXT {}
14354unsafe impl Sync for PhysicalDeviceDepthBiasControlFeaturesEXT {}
14355
14356/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampControlFeaturesEXT.html>
14357#[repr(C)]
14358#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14359pub struct PhysicalDeviceDepthClampControlFeaturesEXT {
14360    pub s_type: StructureType,
14361    pub next: *mut c_void,
14362    pub depth_clamp_control: Bool32,
14363}
14364
14365impl Default for PhysicalDeviceDepthClampControlFeaturesEXT {
14366    #[inline]
14367    fn default() -> Self {
14368        Self {
14369            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT,
14370            next: ptr::null_mut(),
14371            depth_clamp_control: Bool32::default(),
14372        }
14373    }
14374}
14375
14376unsafe impl Send for PhysicalDeviceDepthClampControlFeaturesEXT {}
14377unsafe impl Sync for PhysicalDeviceDepthClampControlFeaturesEXT {}
14378
14379/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampZeroOneFeaturesKHR.html>
14380#[repr(C)]
14381#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14382pub struct PhysicalDeviceDepthClampZeroOneFeaturesKHR {
14383    pub s_type: StructureType,
14384    pub next: *mut c_void,
14385    pub depth_clamp_zero_one: Bool32,
14386}
14387
14388impl Default for PhysicalDeviceDepthClampZeroOneFeaturesKHR {
14389    #[inline]
14390    fn default() -> Self {
14391        Self {
14392            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR,
14393            next: ptr::null_mut(),
14394            depth_clamp_zero_one: Bool32::default(),
14395        }
14396    }
14397}
14398
14399unsafe impl Send for PhysicalDeviceDepthClampZeroOneFeaturesKHR {}
14400unsafe impl Sync for PhysicalDeviceDepthClampZeroOneFeaturesKHR {}
14401
14402/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClipControlFeaturesEXT.html>
14403#[repr(C)]
14404#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14405pub struct PhysicalDeviceDepthClipControlFeaturesEXT {
14406    pub s_type: StructureType,
14407    pub next: *mut c_void,
14408    pub depth_clip_control: Bool32,
14409}
14410
14411impl Default for PhysicalDeviceDepthClipControlFeaturesEXT {
14412    #[inline]
14413    fn default() -> Self {
14414        Self {
14415            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT,
14416            next: ptr::null_mut(),
14417            depth_clip_control: Bool32::default(),
14418        }
14419    }
14420}
14421
14422unsafe impl Send for PhysicalDeviceDepthClipControlFeaturesEXT {}
14423unsafe impl Sync for PhysicalDeviceDepthClipControlFeaturesEXT {}
14424
14425/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClipEnableFeaturesEXT.html>
14426#[repr(C)]
14427#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14428pub struct PhysicalDeviceDepthClipEnableFeaturesEXT {
14429    pub s_type: StructureType,
14430    pub next: *mut c_void,
14431    pub depth_clip_enable: Bool32,
14432}
14433
14434impl Default for PhysicalDeviceDepthClipEnableFeaturesEXT {
14435    #[inline]
14436    fn default() -> Self {
14437        Self {
14438            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT,
14439            next: ptr::null_mut(),
14440            depth_clip_enable: Bool32::default(),
14441        }
14442    }
14443}
14444
14445unsafe impl Send for PhysicalDeviceDepthClipEnableFeaturesEXT {}
14446unsafe impl Sync for PhysicalDeviceDepthClipEnableFeaturesEXT {}
14447
14448/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthStencilResolveProperties.html>
14449#[repr(C)]
14450#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14451pub struct PhysicalDeviceDepthStencilResolveProperties {
14452    pub s_type: StructureType,
14453    pub next: *mut c_void,
14454    pub supported_depth_resolve_modes: ResolveModeFlags,
14455    pub supported_stencil_resolve_modes: ResolveModeFlags,
14456    pub independent_resolve_none: Bool32,
14457    pub independent_resolve: Bool32,
14458}
14459
14460impl Default for PhysicalDeviceDepthStencilResolveProperties {
14461    #[inline]
14462    fn default() -> Self {
14463        Self {
14464            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
14465            next: ptr::null_mut(),
14466            supported_depth_resolve_modes: ResolveModeFlags::default(),
14467            supported_stencil_resolve_modes: ResolveModeFlags::default(),
14468            independent_resolve_none: Bool32::default(),
14469            independent_resolve: Bool32::default(),
14470        }
14471    }
14472}
14473
14474unsafe impl Send for PhysicalDeviceDepthStencilResolveProperties {}
14475unsafe impl Sync for PhysicalDeviceDepthStencilResolveProperties {}
14476
14477/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT.html>
14478#[repr(C)]
14479#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14480pub struct PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {
14481    pub s_type: StructureType,
14482    pub next: *mut c_void,
14483    pub combined_image_sampler_density_map_descriptor_size: usize,
14484}
14485
14486impl Default for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {
14487    #[inline]
14488    fn default() -> Self {
14489        Self {
14490            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT,
14491            next: ptr::null_mut(),
14492            combined_image_sampler_density_map_descriptor_size: usize::default(),
14493        }
14494    }
14495}
14496
14497unsafe impl Send for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {}
14498unsafe impl Sync for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {}
14499
14500/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html>
14501#[repr(C)]
14502#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14503pub struct PhysicalDeviceDescriptorBufferFeaturesEXT {
14504    pub s_type: StructureType,
14505    pub next: *mut c_void,
14506    pub descriptor_buffer: Bool32,
14507    pub descriptor_buffer_capture_replay: Bool32,
14508    pub descriptor_buffer_image_layout_ignored: Bool32,
14509    pub descriptor_buffer_push_descriptors: Bool32,
14510}
14511
14512impl Default for PhysicalDeviceDescriptorBufferFeaturesEXT {
14513    #[inline]
14514    fn default() -> Self {
14515        Self {
14516            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT,
14517            next: ptr::null_mut(),
14518            descriptor_buffer: Bool32::default(),
14519            descriptor_buffer_capture_replay: Bool32::default(),
14520            descriptor_buffer_image_layout_ignored: Bool32::default(),
14521            descriptor_buffer_push_descriptors: Bool32::default(),
14522        }
14523    }
14524}
14525
14526unsafe impl Send for PhysicalDeviceDescriptorBufferFeaturesEXT {}
14527unsafe impl Sync for PhysicalDeviceDescriptorBufferFeaturesEXT {}
14528
14529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html>
14530#[repr(C)]
14531#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14532pub struct PhysicalDeviceDescriptorBufferPropertiesEXT {
14533    pub s_type: StructureType,
14534    pub next: *mut c_void,
14535    pub combined_image_sampler_descriptor_single_array: Bool32,
14536    pub bufferless_push_descriptors: Bool32,
14537    pub allow_sampler_image_view_post_submit_creation: Bool32,
14538    pub descriptor_buffer_offset_alignment: DeviceSize,
14539    pub max_descriptor_buffer_bindings: u32,
14540    pub max_resource_descriptor_buffer_bindings: u32,
14541    pub max_sampler_descriptor_buffer_bindings: u32,
14542    pub max_embedded_immutable_sampler_bindings: u32,
14543    pub max_embedded_immutable_samplers: u32,
14544    pub buffer_capture_replay_descriptor_data_size: usize,
14545    pub image_capture_replay_descriptor_data_size: usize,
14546    pub image_view_capture_replay_descriptor_data_size: usize,
14547    pub sampler_capture_replay_descriptor_data_size: usize,
14548    pub acceleration_structure_capture_replay_descriptor_data_size: usize,
14549    pub sampler_descriptor_size: usize,
14550    pub combined_image_sampler_descriptor_size: usize,
14551    pub sampled_image_descriptor_size: usize,
14552    pub storage_image_descriptor_size: usize,
14553    pub uniform_texel_buffer_descriptor_size: usize,
14554    pub robust_uniform_texel_buffer_descriptor_size: usize,
14555    pub storage_texel_buffer_descriptor_size: usize,
14556    pub robust_storage_texel_buffer_descriptor_size: usize,
14557    pub uniform_buffer_descriptor_size: usize,
14558    pub robust_uniform_buffer_descriptor_size: usize,
14559    pub storage_buffer_descriptor_size: usize,
14560    pub robust_storage_buffer_descriptor_size: usize,
14561    pub input_attachment_descriptor_size: usize,
14562    pub acceleration_structure_descriptor_size: usize,
14563    pub max_sampler_descriptor_buffer_range: DeviceSize,
14564    pub max_resource_descriptor_buffer_range: DeviceSize,
14565    pub sampler_descriptor_buffer_address_space_size: DeviceSize,
14566    pub resource_descriptor_buffer_address_space_size: DeviceSize,
14567    pub descriptor_buffer_address_space_size: DeviceSize,
14568}
14569
14570impl Default for PhysicalDeviceDescriptorBufferPropertiesEXT {
14571    #[inline]
14572    fn default() -> Self {
14573        Self {
14574            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT,
14575            next: ptr::null_mut(),
14576            combined_image_sampler_descriptor_single_array: Bool32::default(),
14577            bufferless_push_descriptors: Bool32::default(),
14578            allow_sampler_image_view_post_submit_creation: Bool32::default(),
14579            descriptor_buffer_offset_alignment: DeviceSize::default(),
14580            max_descriptor_buffer_bindings: u32::default(),
14581            max_resource_descriptor_buffer_bindings: u32::default(),
14582            max_sampler_descriptor_buffer_bindings: u32::default(),
14583            max_embedded_immutable_sampler_bindings: u32::default(),
14584            max_embedded_immutable_samplers: u32::default(),
14585            buffer_capture_replay_descriptor_data_size: usize::default(),
14586            image_capture_replay_descriptor_data_size: usize::default(),
14587            image_view_capture_replay_descriptor_data_size: usize::default(),
14588            sampler_capture_replay_descriptor_data_size: usize::default(),
14589            acceleration_structure_capture_replay_descriptor_data_size: usize::default(),
14590            sampler_descriptor_size: usize::default(),
14591            combined_image_sampler_descriptor_size: usize::default(),
14592            sampled_image_descriptor_size: usize::default(),
14593            storage_image_descriptor_size: usize::default(),
14594            uniform_texel_buffer_descriptor_size: usize::default(),
14595            robust_uniform_texel_buffer_descriptor_size: usize::default(),
14596            storage_texel_buffer_descriptor_size: usize::default(),
14597            robust_storage_texel_buffer_descriptor_size: usize::default(),
14598            uniform_buffer_descriptor_size: usize::default(),
14599            robust_uniform_buffer_descriptor_size: usize::default(),
14600            storage_buffer_descriptor_size: usize::default(),
14601            robust_storage_buffer_descriptor_size: usize::default(),
14602            input_attachment_descriptor_size: usize::default(),
14603            acceleration_structure_descriptor_size: usize::default(),
14604            max_sampler_descriptor_buffer_range: DeviceSize::default(),
14605            max_resource_descriptor_buffer_range: DeviceSize::default(),
14606            sampler_descriptor_buffer_address_space_size: DeviceSize::default(),
14607            resource_descriptor_buffer_address_space_size: DeviceSize::default(),
14608            descriptor_buffer_address_space_size: DeviceSize::default(),
14609        }
14610    }
14611}
14612
14613unsafe impl Send for PhysicalDeviceDescriptorBufferPropertiesEXT {}
14614unsafe impl Sync for PhysicalDeviceDescriptorBufferPropertiesEXT {}
14615
14616/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferTensorFeaturesARM.html>
14617#[repr(C)]
14618#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14619pub struct PhysicalDeviceDescriptorBufferTensorFeaturesARM {
14620    pub s_type: StructureType,
14621    pub next: *mut c_void,
14622    pub descriptor_buffer_tensor_descriptors: Bool32,
14623}
14624
14625impl Default for PhysicalDeviceDescriptorBufferTensorFeaturesARM {
14626    #[inline]
14627    fn default() -> Self {
14628        Self {
14629            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM,
14630            next: ptr::null_mut(),
14631            descriptor_buffer_tensor_descriptors: Bool32::default(),
14632        }
14633    }
14634}
14635
14636unsafe impl Send for PhysicalDeviceDescriptorBufferTensorFeaturesARM {}
14637unsafe impl Sync for PhysicalDeviceDescriptorBufferTensorFeaturesARM {}
14638
14639/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferTensorPropertiesARM.html>
14640#[repr(C)]
14641#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14642pub struct PhysicalDeviceDescriptorBufferTensorPropertiesARM {
14643    pub s_type: StructureType,
14644    pub next: *mut c_void,
14645    pub tensor_capture_replay_descriptor_data_size: usize,
14646    pub tensor_view_capture_replay_descriptor_data_size: usize,
14647    pub tensor_descriptor_size: usize,
14648}
14649
14650impl Default for PhysicalDeviceDescriptorBufferTensorPropertiesARM {
14651    #[inline]
14652    fn default() -> Self {
14653        Self {
14654            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM,
14655            next: ptr::null_mut(),
14656            tensor_capture_replay_descriptor_data_size: usize::default(),
14657            tensor_view_capture_replay_descriptor_data_size: usize::default(),
14658            tensor_descriptor_size: usize::default(),
14659        }
14660    }
14661}
14662
14663unsafe impl Send for PhysicalDeviceDescriptorBufferTensorPropertiesARM {}
14664unsafe impl Sync for PhysicalDeviceDescriptorBufferTensorPropertiesARM {}
14665
14666/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingFeatures.html>
14667#[repr(C)]
14668#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14669pub struct PhysicalDeviceDescriptorIndexingFeatures {
14670    pub s_type: StructureType,
14671    pub next: *mut c_void,
14672    pub shader_input_attachment_array_dynamic_indexing: Bool32,
14673    pub shader_uniform_texel_buffer_array_dynamic_indexing: Bool32,
14674    pub shader_storage_texel_buffer_array_dynamic_indexing: Bool32,
14675    pub shader_uniform_buffer_array_non_uniform_indexing: Bool32,
14676    pub shader_sampled_image_array_non_uniform_indexing: Bool32,
14677    pub shader_storage_buffer_array_non_uniform_indexing: Bool32,
14678    pub shader_storage_image_array_non_uniform_indexing: Bool32,
14679    pub shader_input_attachment_array_non_uniform_indexing: Bool32,
14680    pub shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32,
14681    pub shader_storage_texel_buffer_array_non_uniform_indexing: Bool32,
14682    pub descriptor_binding_uniform_buffer_update_after_bind: Bool32,
14683    pub descriptor_binding_sampled_image_update_after_bind: Bool32,
14684    pub descriptor_binding_storage_image_update_after_bind: Bool32,
14685    pub descriptor_binding_storage_buffer_update_after_bind: Bool32,
14686    pub descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32,
14687    pub descriptor_binding_storage_texel_buffer_update_after_bind: Bool32,
14688    pub descriptor_binding_update_unused_while_pending: Bool32,
14689    pub descriptor_binding_partially_bound: Bool32,
14690    pub descriptor_binding_variable_descriptor_count: Bool32,
14691    pub runtime_descriptor_array: Bool32,
14692}
14693
14694impl Default for PhysicalDeviceDescriptorIndexingFeatures {
14695    #[inline]
14696    fn default() -> Self {
14697        Self {
14698            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
14699            next: ptr::null_mut(),
14700            shader_input_attachment_array_dynamic_indexing: Bool32::default(),
14701            shader_uniform_texel_buffer_array_dynamic_indexing: Bool32::default(),
14702            shader_storage_texel_buffer_array_dynamic_indexing: Bool32::default(),
14703            shader_uniform_buffer_array_non_uniform_indexing: Bool32::default(),
14704            shader_sampled_image_array_non_uniform_indexing: Bool32::default(),
14705            shader_storage_buffer_array_non_uniform_indexing: Bool32::default(),
14706            shader_storage_image_array_non_uniform_indexing: Bool32::default(),
14707            shader_input_attachment_array_non_uniform_indexing: Bool32::default(),
14708            shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32::default(),
14709            shader_storage_texel_buffer_array_non_uniform_indexing: Bool32::default(),
14710            descriptor_binding_uniform_buffer_update_after_bind: Bool32::default(),
14711            descriptor_binding_sampled_image_update_after_bind: Bool32::default(),
14712            descriptor_binding_storage_image_update_after_bind: Bool32::default(),
14713            descriptor_binding_storage_buffer_update_after_bind: Bool32::default(),
14714            descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32::default(),
14715            descriptor_binding_storage_texel_buffer_update_after_bind: Bool32::default(),
14716            descriptor_binding_update_unused_while_pending: Bool32::default(),
14717            descriptor_binding_partially_bound: Bool32::default(),
14718            descriptor_binding_variable_descriptor_count: Bool32::default(),
14719            runtime_descriptor_array: Bool32::default(),
14720        }
14721    }
14722}
14723
14724unsafe impl Send for PhysicalDeviceDescriptorIndexingFeatures {}
14725unsafe impl Sync for PhysicalDeviceDescriptorIndexingFeatures {}
14726
14727/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingProperties.html>
14728#[repr(C)]
14729#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14730pub struct PhysicalDeviceDescriptorIndexingProperties {
14731    pub s_type: StructureType,
14732    pub next: *mut c_void,
14733    pub max_update_after_bind_descriptors_in_all_pools: u32,
14734    pub shader_uniform_buffer_array_non_uniform_indexing_native: Bool32,
14735    pub shader_sampled_image_array_non_uniform_indexing_native: Bool32,
14736    pub shader_storage_buffer_array_non_uniform_indexing_native: Bool32,
14737    pub shader_storage_image_array_non_uniform_indexing_native: Bool32,
14738    pub shader_input_attachment_array_non_uniform_indexing_native: Bool32,
14739    pub robust_buffer_access_update_after_bind: Bool32,
14740    pub quad_divergent_implicit_lod: Bool32,
14741    pub max_per_stage_descriptor_update_after_bind_samplers: u32,
14742    pub max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
14743    pub max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
14744    pub max_per_stage_descriptor_update_after_bind_sampled_images: u32,
14745    pub max_per_stage_descriptor_update_after_bind_storage_images: u32,
14746    pub max_per_stage_descriptor_update_after_bind_input_attachments: u32,
14747    pub max_per_stage_update_after_bind_resources: u32,
14748    pub max_descriptor_set_update_after_bind_samplers: u32,
14749    pub max_descriptor_set_update_after_bind_uniform_buffers: u32,
14750    pub max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
14751    pub max_descriptor_set_update_after_bind_storage_buffers: u32,
14752    pub max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
14753    pub max_descriptor_set_update_after_bind_sampled_images: u32,
14754    pub max_descriptor_set_update_after_bind_storage_images: u32,
14755    pub max_descriptor_set_update_after_bind_input_attachments: u32,
14756}
14757
14758impl Default for PhysicalDeviceDescriptorIndexingProperties {
14759    #[inline]
14760    fn default() -> Self {
14761        Self {
14762            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
14763            next: ptr::null_mut(),
14764            max_update_after_bind_descriptors_in_all_pools: u32::default(),
14765            shader_uniform_buffer_array_non_uniform_indexing_native: Bool32::default(),
14766            shader_sampled_image_array_non_uniform_indexing_native: Bool32::default(),
14767            shader_storage_buffer_array_non_uniform_indexing_native: Bool32::default(),
14768            shader_storage_image_array_non_uniform_indexing_native: Bool32::default(),
14769            shader_input_attachment_array_non_uniform_indexing_native: Bool32::default(),
14770            robust_buffer_access_update_after_bind: Bool32::default(),
14771            quad_divergent_implicit_lod: Bool32::default(),
14772            max_per_stage_descriptor_update_after_bind_samplers: u32::default(),
14773            max_per_stage_descriptor_update_after_bind_uniform_buffers: u32::default(),
14774            max_per_stage_descriptor_update_after_bind_storage_buffers: u32::default(),
14775            max_per_stage_descriptor_update_after_bind_sampled_images: u32::default(),
14776            max_per_stage_descriptor_update_after_bind_storage_images: u32::default(),
14777            max_per_stage_descriptor_update_after_bind_input_attachments: u32::default(),
14778            max_per_stage_update_after_bind_resources: u32::default(),
14779            max_descriptor_set_update_after_bind_samplers: u32::default(),
14780            max_descriptor_set_update_after_bind_uniform_buffers: u32::default(),
14781            max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32::default(),
14782            max_descriptor_set_update_after_bind_storage_buffers: u32::default(),
14783            max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32::default(),
14784            max_descriptor_set_update_after_bind_sampled_images: u32::default(),
14785            max_descriptor_set_update_after_bind_storage_images: u32::default(),
14786            max_descriptor_set_update_after_bind_input_attachments: u32::default(),
14787        }
14788    }
14789}
14790
14791unsafe impl Send for PhysicalDeviceDescriptorIndexingProperties {}
14792unsafe impl Sync for PhysicalDeviceDescriptorIndexingProperties {}
14793
14794/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV.html>
14795#[repr(C)]
14796#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14797pub struct PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
14798    pub s_type: StructureType,
14799    pub next: *mut c_void,
14800    pub descriptor_pool_overallocation: Bool32,
14801}
14802
14803impl Default for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
14804    #[inline]
14805    fn default() -> Self {
14806        Self {
14807            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV,
14808            next: ptr::null_mut(),
14809            descriptor_pool_overallocation: Bool32::default(),
14810        }
14811    }
14812}
14813
14814unsafe impl Send for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {}
14815unsafe impl Sync for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {}
14816
14817/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE.html>
14818#[repr(C)]
14819#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14820pub struct PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {
14821    pub s_type: StructureType,
14822    pub next: *mut c_void,
14823    pub descriptor_set_host_mapping: Bool32,
14824}
14825
14826impl Default for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {
14827    #[inline]
14828    fn default() -> Self {
14829        Self {
14830            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE,
14831            next: ptr::null_mut(),
14832            descriptor_set_host_mapping: Bool32::default(),
14833        }
14834    }
14835}
14836
14837unsafe impl Send for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {}
14838unsafe impl Sync for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {}
14839
14840/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV.html>
14841#[repr(C)]
14842#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14843pub struct PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {
14844    pub s_type: StructureType,
14845    pub next: *mut c_void,
14846    pub device_generated_compute: Bool32,
14847    pub device_generated_compute_pipelines: Bool32,
14848    pub device_generated_compute_capture_replay: Bool32,
14849}
14850
14851impl Default for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {
14852    #[inline]
14853    fn default() -> Self {
14854        Self {
14855            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV,
14856            next: ptr::null_mut(),
14857            device_generated_compute: Bool32::default(),
14858            device_generated_compute_pipelines: Bool32::default(),
14859            device_generated_compute_capture_replay: Bool32::default(),
14860        }
14861    }
14862}
14863
14864unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {}
14865unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {}
14866
14867/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT.html>
14868#[repr(C)]
14869#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14870pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {
14871    pub s_type: StructureType,
14872    pub next: *mut c_void,
14873    pub device_generated_commands: Bool32,
14874    pub dynamic_generated_pipeline_layout: Bool32,
14875}
14876
14877impl Default for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {
14878    #[inline]
14879    fn default() -> Self {
14880        Self {
14881            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT,
14882            next: ptr::null_mut(),
14883            device_generated_commands: Bool32::default(),
14884            dynamic_generated_pipeline_layout: Bool32::default(),
14885        }
14886    }
14887}
14888
14889unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {}
14890unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {}
14891
14892/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.html>
14893#[repr(C)]
14894#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14895pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
14896    pub s_type: StructureType,
14897    pub next: *mut c_void,
14898    pub device_generated_commands: Bool32,
14899}
14900
14901impl Default for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
14902    #[inline]
14903    fn default() -> Self {
14904        Self {
14905            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV,
14906            next: ptr::null_mut(),
14907            device_generated_commands: Bool32::default(),
14908        }
14909    }
14910}
14911
14912unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {}
14913unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {}
14914
14915/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT.html>
14916#[repr(C)]
14917#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14918pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {
14919    pub s_type: StructureType,
14920    pub next: *mut c_void,
14921    pub max_indirect_pipeline_count: u32,
14922    pub max_indirect_shader_object_count: u32,
14923    pub max_indirect_sequence_count: u32,
14924    pub max_indirect_commands_token_count: u32,
14925    pub max_indirect_commands_token_offset: u32,
14926    pub max_indirect_commands_indirect_stride: u32,
14927    pub supported_indirect_commands_input_modes: IndirectCommandsInputModeFlagsEXT,
14928    pub supported_indirect_commands_shader_stages: ShaderStageFlags,
14929    pub supported_indirect_commands_shader_stages_pipeline_binding: ShaderStageFlags,
14930    pub supported_indirect_commands_shader_stages_shader_binding: ShaderStageFlags,
14931    pub device_generated_commands_transform_feedback: Bool32,
14932    pub device_generated_commands_multi_draw_indirect_count: Bool32,
14933}
14934
14935impl Default for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {
14936    #[inline]
14937    fn default() -> Self {
14938        Self {
14939            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT,
14940            next: ptr::null_mut(),
14941            max_indirect_pipeline_count: u32::default(),
14942            max_indirect_shader_object_count: u32::default(),
14943            max_indirect_sequence_count: u32::default(),
14944            max_indirect_commands_token_count: u32::default(),
14945            max_indirect_commands_token_offset: u32::default(),
14946            max_indirect_commands_indirect_stride: u32::default(),
14947            supported_indirect_commands_input_modes: IndirectCommandsInputModeFlagsEXT::default(),
14948            supported_indirect_commands_shader_stages: ShaderStageFlags::default(),
14949            supported_indirect_commands_shader_stages_pipeline_binding: ShaderStageFlags::default(),
14950            supported_indirect_commands_shader_stages_shader_binding: ShaderStageFlags::default(),
14951            device_generated_commands_transform_feedback: Bool32::default(),
14952            device_generated_commands_multi_draw_indirect_count: Bool32::default(),
14953        }
14954    }
14955}
14956
14957unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {}
14958unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {}
14959
14960/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html>
14961#[repr(C)]
14962#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14963pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
14964    pub s_type: StructureType,
14965    pub next: *mut c_void,
14966    pub max_graphics_shader_group_count: u32,
14967    pub max_indirect_sequence_count: u32,
14968    pub max_indirect_commands_token_count: u32,
14969    pub max_indirect_commands_stream_count: u32,
14970    pub max_indirect_commands_token_offset: u32,
14971    pub max_indirect_commands_stream_stride: u32,
14972    pub min_sequences_count_buffer_offset_alignment: u32,
14973    pub min_sequences_index_buffer_offset_alignment: u32,
14974    pub min_indirect_commands_buffer_offset_alignment: u32,
14975}
14976
14977impl Default for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
14978    #[inline]
14979    fn default() -> Self {
14980        Self {
14981            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV,
14982            next: ptr::null_mut(),
14983            max_graphics_shader_group_count: u32::default(),
14984            max_indirect_sequence_count: u32::default(),
14985            max_indirect_commands_token_count: u32::default(),
14986            max_indirect_commands_stream_count: u32::default(),
14987            max_indirect_commands_token_offset: u32::default(),
14988            max_indirect_commands_stream_stride: u32::default(),
14989            min_sequences_count_buffer_offset_alignment: u32::default(),
14990            min_sequences_index_buffer_offset_alignment: u32::default(),
14991            min_indirect_commands_buffer_offset_alignment: u32::default(),
14992        }
14993    }
14994}
14995
14996unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {}
14997unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {}
14998
14999/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.html>
15000#[repr(C)]
15001#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15002pub struct PhysicalDeviceDeviceMemoryReportFeaturesEXT {
15003    pub s_type: StructureType,
15004    pub next: *mut c_void,
15005    pub device_memory_report: Bool32,
15006}
15007
15008impl Default for PhysicalDeviceDeviceMemoryReportFeaturesEXT {
15009    #[inline]
15010    fn default() -> Self {
15011        Self {
15012            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT,
15013            next: ptr::null_mut(),
15014            device_memory_report: Bool32::default(),
15015        }
15016    }
15017}
15018
15019unsafe impl Send for PhysicalDeviceDeviceMemoryReportFeaturesEXT {}
15020unsafe impl Sync for PhysicalDeviceDeviceMemoryReportFeaturesEXT {}
15021
15022/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.html>
15023#[repr(C)]
15024#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15025pub struct PhysicalDeviceDiagnosticsConfigFeaturesNV {
15026    pub s_type: StructureType,
15027    pub next: *mut c_void,
15028    pub diagnostics_config: Bool32,
15029}
15030
15031impl Default for PhysicalDeviceDiagnosticsConfigFeaturesNV {
15032    #[inline]
15033    fn default() -> Self {
15034        Self {
15035            s_type: StructureType::PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV,
15036            next: ptr::null_mut(),
15037            diagnostics_config: Bool32::default(),
15038        }
15039    }
15040}
15041
15042unsafe impl Send for PhysicalDeviceDiagnosticsConfigFeaturesNV {}
15043unsafe impl Sync for PhysicalDeviceDiagnosticsConfigFeaturesNV {}
15044
15045/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDiscardRectanglePropertiesEXT.html>
15046#[repr(C)]
15047#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15048pub struct PhysicalDeviceDiscardRectanglePropertiesEXT {
15049    pub s_type: StructureType,
15050    pub next: *mut c_void,
15051    pub max_discard_rectangles: u32,
15052}
15053
15054impl Default for PhysicalDeviceDiscardRectanglePropertiesEXT {
15055    #[inline]
15056    fn default() -> Self {
15057        Self {
15058            s_type: StructureType::PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
15059            next: ptr::null_mut(),
15060            max_discard_rectangles: u32::default(),
15061        }
15062    }
15063}
15064
15065unsafe impl Send for PhysicalDeviceDiscardRectanglePropertiesEXT {}
15066unsafe impl Sync for PhysicalDeviceDiscardRectanglePropertiesEXT {}
15067
15068/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDisplacementMicromapFeaturesNV.html>
15069#[repr(C)]
15070#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15071pub struct PhysicalDeviceDisplacementMicromapFeaturesNV {
15072    pub s_type: StructureType,
15073    pub next: *mut c_void,
15074    pub displacement_micromap: Bool32,
15075}
15076
15077impl Default for PhysicalDeviceDisplacementMicromapFeaturesNV {
15078    #[inline]
15079    fn default() -> Self {
15080        Self {
15081            s_type: StructureType::PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV,
15082            next: ptr::null_mut(),
15083            displacement_micromap: Bool32::default(),
15084        }
15085    }
15086}
15087
15088unsafe impl Send for PhysicalDeviceDisplacementMicromapFeaturesNV {}
15089unsafe impl Sync for PhysicalDeviceDisplacementMicromapFeaturesNV {}
15090
15091/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDisplacementMicromapPropertiesNV.html>
15092#[repr(C)]
15093#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15094pub struct PhysicalDeviceDisplacementMicromapPropertiesNV {
15095    pub s_type: StructureType,
15096    pub next: *mut c_void,
15097    pub max_displacement_micromap_subdivision_level: u32,
15098}
15099
15100impl Default for PhysicalDeviceDisplacementMicromapPropertiesNV {
15101    #[inline]
15102    fn default() -> Self {
15103        Self {
15104            s_type: StructureType::PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV,
15105            next: ptr::null_mut(),
15106            max_displacement_micromap_subdivision_level: u32::default(),
15107        }
15108    }
15109}
15110
15111unsafe impl Send for PhysicalDeviceDisplacementMicromapPropertiesNV {}
15112unsafe impl Sync for PhysicalDeviceDisplacementMicromapPropertiesNV {}
15113
15114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDriverProperties.html>
15115#[repr(C)]
15116#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15117pub struct PhysicalDeviceDriverProperties {
15118    pub s_type: StructureType,
15119    pub next: *mut c_void,
15120    pub driver_id: DriverId,
15121    pub driver_name: StringArray<MAX_DRIVER_NAME_SIZE>,
15122    pub driver_info: StringArray<MAX_DRIVER_INFO_SIZE>,
15123    pub conformance_version: ConformanceVersion,
15124}
15125
15126impl Default for PhysicalDeviceDriverProperties {
15127    #[inline]
15128    fn default() -> Self {
15129        Self {
15130            s_type: StructureType::PHYSICAL_DEVICE_DRIVER_PROPERTIES,
15131            next: ptr::null_mut(),
15132            driver_id: DriverId::default(),
15133            driver_name: StringArray::default(),
15134            driver_info: StringArray::default(),
15135            conformance_version: ConformanceVersion::default(),
15136        }
15137    }
15138}
15139
15140unsafe impl Send for PhysicalDeviceDriverProperties {}
15141unsafe impl Sync for PhysicalDeviceDriverProperties {}
15142
15143/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDrmPropertiesEXT.html>
15144#[repr(C)]
15145#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15146pub struct PhysicalDeviceDrmPropertiesEXT {
15147    pub s_type: StructureType,
15148    pub next: *mut c_void,
15149    pub has_primary: Bool32,
15150    pub has_render: Bool32,
15151    pub primary_major: i64,
15152    pub primary_minor: i64,
15153    pub render_major: i64,
15154    pub render_minor: i64,
15155}
15156
15157impl Default for PhysicalDeviceDrmPropertiesEXT {
15158    #[inline]
15159    fn default() -> Self {
15160        Self {
15161            s_type: StructureType::PHYSICAL_DEVICE_DRM_PROPERTIES_EXT,
15162            next: ptr::null_mut(),
15163            has_primary: Bool32::default(),
15164            has_render: Bool32::default(),
15165            primary_major: i64::default(),
15166            primary_minor: i64::default(),
15167            render_major: i64::default(),
15168            render_minor: i64::default(),
15169        }
15170    }
15171}
15172
15173unsafe impl Send for PhysicalDeviceDrmPropertiesEXT {}
15174unsafe impl Sync for PhysicalDeviceDrmPropertiesEXT {}
15175
15176/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingFeatures.html>
15177#[repr(C)]
15178#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15179pub struct PhysicalDeviceDynamicRenderingFeatures {
15180    pub s_type: StructureType,
15181    pub next: *mut c_void,
15182    pub dynamic_rendering: Bool32,
15183}
15184
15185impl Default for PhysicalDeviceDynamicRenderingFeatures {
15186    #[inline]
15187    fn default() -> Self {
15188        Self {
15189            s_type: StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES,
15190            next: ptr::null_mut(),
15191            dynamic_rendering: Bool32::default(),
15192        }
15193    }
15194}
15195
15196unsafe impl Send for PhysicalDeviceDynamicRenderingFeatures {}
15197unsafe impl Sync for PhysicalDeviceDynamicRenderingFeatures {}
15198
15199/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingLocalReadFeatures.html>
15200#[repr(C)]
15201#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15202pub struct PhysicalDeviceDynamicRenderingLocalReadFeatures {
15203    pub s_type: StructureType,
15204    pub next: *mut c_void,
15205    pub dynamic_rendering_local_read: Bool32,
15206}
15207
15208impl Default for PhysicalDeviceDynamicRenderingLocalReadFeatures {
15209    #[inline]
15210    fn default() -> Self {
15211        Self {
15212            s_type: StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES,
15213            next: ptr::null_mut(),
15214            dynamic_rendering_local_read: Bool32::default(),
15215        }
15216    }
15217}
15218
15219unsafe impl Send for PhysicalDeviceDynamicRenderingLocalReadFeatures {}
15220unsafe impl Sync for PhysicalDeviceDynamicRenderingLocalReadFeatures {}
15221
15222/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT.html>
15223#[repr(C)]
15224#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15225pub struct PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
15226    pub s_type: StructureType,
15227    pub next: *mut c_void,
15228    pub dynamic_rendering_unused_attachments: Bool32,
15229}
15230
15231impl Default for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
15232    #[inline]
15233    fn default() -> Self {
15234        Self {
15235            s_type:
15236                StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT,
15237            next: ptr::null_mut(),
15238            dynamic_rendering_unused_attachments: Bool32::default(),
15239        }
15240    }
15241}
15242
15243unsafe impl Send for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {}
15244unsafe impl Sync for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {}
15245
15246/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExclusiveScissorFeaturesNV.html>
15247#[repr(C)]
15248#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15249pub struct PhysicalDeviceExclusiveScissorFeaturesNV {
15250    pub s_type: StructureType,
15251    pub next: *mut c_void,
15252    pub exclusive_scissor: Bool32,
15253}
15254
15255impl Default for PhysicalDeviceExclusiveScissorFeaturesNV {
15256    #[inline]
15257    fn default() -> Self {
15258        Self {
15259            s_type: StructureType::PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV,
15260            next: ptr::null_mut(),
15261            exclusive_scissor: Bool32::default(),
15262        }
15263    }
15264}
15265
15266unsafe impl Send for PhysicalDeviceExclusiveScissorFeaturesNV {}
15267unsafe impl Sync for PhysicalDeviceExclusiveScissorFeaturesNV {}
15268
15269/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html>
15270#[repr(C)]
15271#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15272pub struct PhysicalDeviceExtendedDynamicState2FeaturesEXT {
15273    pub s_type: StructureType,
15274    pub next: *mut c_void,
15275    pub extended_dynamic_state2: Bool32,
15276    pub extended_dynamic_state2_logic_op: Bool32,
15277    pub extended_dynamic_state2_patch_control_points: Bool32,
15278}
15279
15280impl Default for PhysicalDeviceExtendedDynamicState2FeaturesEXT {
15281    #[inline]
15282    fn default() -> Self {
15283        Self {
15284            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT,
15285            next: ptr::null_mut(),
15286            extended_dynamic_state2: Bool32::default(),
15287            extended_dynamic_state2_logic_op: Bool32::default(),
15288            extended_dynamic_state2_patch_control_points: Bool32::default(),
15289        }
15290    }
15291}
15292
15293unsafe impl Send for PhysicalDeviceExtendedDynamicState2FeaturesEXT {}
15294unsafe impl Sync for PhysicalDeviceExtendedDynamicState2FeaturesEXT {}
15295
15296/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html>
15297#[repr(C)]
15298#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15299pub struct PhysicalDeviceExtendedDynamicState3FeaturesEXT {
15300    pub s_type: StructureType,
15301    pub next: *mut c_void,
15302    pub extended_dynamic_state3_tessellation_domain_origin: Bool32,
15303    pub extended_dynamic_state_3depth_clamp_enable: Bool32,
15304    pub extended_dynamic_state3_polygon_mode: Bool32,
15305    pub extended_dynamic_state3_rasterization_samples: Bool32,
15306    pub extended_dynamic_state3_sample_mask: Bool32,
15307    pub extended_dynamic_state3_alpha_to_coverage_enable: Bool32,
15308    pub extended_dynamic_state3_alpha_to_one_enable: Bool32,
15309    pub extended_dynamic_state3_logic_op_enable: Bool32,
15310    pub extended_dynamic_state3_color_blend_enable: Bool32,
15311    pub extended_dynamic_state3_color_blend_equation: Bool32,
15312    pub extended_dynamic_state3_color_write_mask: Bool32,
15313    pub extended_dynamic_state3_rasterization_stream: Bool32,
15314    pub extended_dynamic_state3_conservative_rasterization_mode: Bool32,
15315    pub extended_dynamic_state3_extra_primitive_overestimation_size: Bool32,
15316    pub extended_dynamic_state_3depth_clip_enable: Bool32,
15317    pub extended_dynamic_state3_sample_locations_enable: Bool32,
15318    pub extended_dynamic_state3_color_blend_advanced: Bool32,
15319    pub extended_dynamic_state3_provoking_vertex_mode: Bool32,
15320    pub extended_dynamic_state3_line_rasterization_mode: Bool32,
15321    pub extended_dynamic_state3_line_stipple_enable: Bool32,
15322    pub extended_dynamic_state_3depth_clip_negative_one_to_one: Bool32,
15323    pub extended_dynamic_state3_viewport_w_scaling_enable: Bool32,
15324    pub extended_dynamic_state3_viewport_swizzle: Bool32,
15325    pub extended_dynamic_state3_coverage_to_color_enable: Bool32,
15326    pub extended_dynamic_state3_coverage_to_color_location: Bool32,
15327    pub extended_dynamic_state3_coverage_modulation_mode: Bool32,
15328    pub extended_dynamic_state3_coverage_modulation_table_enable: Bool32,
15329    pub extended_dynamic_state3_coverage_modulation_table: Bool32,
15330    pub extended_dynamic_state3_coverage_reduction_mode: Bool32,
15331    pub extended_dynamic_state3_representative_fragment_test_enable: Bool32,
15332    pub extended_dynamic_state3_shading_rate_image_enable: Bool32,
15333}
15334
15335impl Default for PhysicalDeviceExtendedDynamicState3FeaturesEXT {
15336    #[inline]
15337    fn default() -> Self {
15338        Self {
15339            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT,
15340            next: ptr::null_mut(),
15341            extended_dynamic_state3_tessellation_domain_origin: Bool32::default(),
15342            extended_dynamic_state_3depth_clamp_enable: Bool32::default(),
15343            extended_dynamic_state3_polygon_mode: Bool32::default(),
15344            extended_dynamic_state3_rasterization_samples: Bool32::default(),
15345            extended_dynamic_state3_sample_mask: Bool32::default(),
15346            extended_dynamic_state3_alpha_to_coverage_enable: Bool32::default(),
15347            extended_dynamic_state3_alpha_to_one_enable: Bool32::default(),
15348            extended_dynamic_state3_logic_op_enable: Bool32::default(),
15349            extended_dynamic_state3_color_blend_enable: Bool32::default(),
15350            extended_dynamic_state3_color_blend_equation: Bool32::default(),
15351            extended_dynamic_state3_color_write_mask: Bool32::default(),
15352            extended_dynamic_state3_rasterization_stream: Bool32::default(),
15353            extended_dynamic_state3_conservative_rasterization_mode: Bool32::default(),
15354            extended_dynamic_state3_extra_primitive_overestimation_size: Bool32::default(),
15355            extended_dynamic_state_3depth_clip_enable: Bool32::default(),
15356            extended_dynamic_state3_sample_locations_enable: Bool32::default(),
15357            extended_dynamic_state3_color_blend_advanced: Bool32::default(),
15358            extended_dynamic_state3_provoking_vertex_mode: Bool32::default(),
15359            extended_dynamic_state3_line_rasterization_mode: Bool32::default(),
15360            extended_dynamic_state3_line_stipple_enable: Bool32::default(),
15361            extended_dynamic_state_3depth_clip_negative_one_to_one: Bool32::default(),
15362            extended_dynamic_state3_viewport_w_scaling_enable: Bool32::default(),
15363            extended_dynamic_state3_viewport_swizzle: Bool32::default(),
15364            extended_dynamic_state3_coverage_to_color_enable: Bool32::default(),
15365            extended_dynamic_state3_coverage_to_color_location: Bool32::default(),
15366            extended_dynamic_state3_coverage_modulation_mode: Bool32::default(),
15367            extended_dynamic_state3_coverage_modulation_table_enable: Bool32::default(),
15368            extended_dynamic_state3_coverage_modulation_table: Bool32::default(),
15369            extended_dynamic_state3_coverage_reduction_mode: Bool32::default(),
15370            extended_dynamic_state3_representative_fragment_test_enable: Bool32::default(),
15371            extended_dynamic_state3_shading_rate_image_enable: Bool32::default(),
15372        }
15373    }
15374}
15375
15376unsafe impl Send for PhysicalDeviceExtendedDynamicState3FeaturesEXT {}
15377unsafe impl Sync for PhysicalDeviceExtendedDynamicState3FeaturesEXT {}
15378
15379/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState3PropertiesEXT.html>
15380#[repr(C)]
15381#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15382pub struct PhysicalDeviceExtendedDynamicState3PropertiesEXT {
15383    pub s_type: StructureType,
15384    pub next: *mut c_void,
15385    pub dynamic_primitive_topology_unrestricted: Bool32,
15386}
15387
15388impl Default for PhysicalDeviceExtendedDynamicState3PropertiesEXT {
15389    #[inline]
15390    fn default() -> Self {
15391        Self {
15392            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT,
15393            next: ptr::null_mut(),
15394            dynamic_primitive_topology_unrestricted: Bool32::default(),
15395        }
15396    }
15397}
15398
15399unsafe impl Send for PhysicalDeviceExtendedDynamicState3PropertiesEXT {}
15400unsafe impl Sync for PhysicalDeviceExtendedDynamicState3PropertiesEXT {}
15401
15402/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.html>
15403#[repr(C)]
15404#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15405pub struct PhysicalDeviceExtendedDynamicStateFeaturesEXT {
15406    pub s_type: StructureType,
15407    pub next: *mut c_void,
15408    pub extended_dynamic_state: Bool32,
15409}
15410
15411impl Default for PhysicalDeviceExtendedDynamicStateFeaturesEXT {
15412    #[inline]
15413    fn default() -> Self {
15414        Self {
15415            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT,
15416            next: ptr::null_mut(),
15417            extended_dynamic_state: Bool32::default(),
15418        }
15419    }
15420}
15421
15422unsafe impl Send for PhysicalDeviceExtendedDynamicStateFeaturesEXT {}
15423unsafe impl Sync for PhysicalDeviceExtendedDynamicStateFeaturesEXT {}
15424
15425/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV.html>
15426#[repr(C)]
15427#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15428pub struct PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
15429    pub s_type: StructureType,
15430    pub next: *mut c_void,
15431    pub extended_sparse_address_space: Bool32,
15432}
15433
15434impl Default for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
15435    #[inline]
15436    fn default() -> Self {
15437        Self {
15438            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV,
15439            next: ptr::null_mut(),
15440            extended_sparse_address_space: Bool32::default(),
15441        }
15442    }
15443}
15444
15445unsafe impl Send for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {}
15446unsafe impl Sync for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {}
15447
15448/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV.html>
15449#[repr(C)]
15450#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15451pub struct PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {
15452    pub s_type: StructureType,
15453    pub next: *mut c_void,
15454    pub extended_sparse_address_space_size: DeviceSize,
15455    pub extended_sparse_image_usage_flags: ImageUsageFlags,
15456    pub extended_sparse_buffer_usage_flags: BufferUsageFlags,
15457}
15458
15459impl Default for PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {
15460    #[inline]
15461    fn default() -> Self {
15462        Self {
15463            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV,
15464            next: ptr::null_mut(),
15465            extended_sparse_address_space_size: DeviceSize::default(),
15466            extended_sparse_image_usage_flags: ImageUsageFlags::default(),
15467            extended_sparse_buffer_usage_flags: BufferUsageFlags::default(),
15468        }
15469    }
15470}
15471
15472unsafe impl Send for PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {}
15473unsafe impl Sync for PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {}
15474
15475/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalBufferInfo.html>
15476#[repr(C)]
15477#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15478pub struct PhysicalDeviceExternalBufferInfo {
15479    pub s_type: StructureType,
15480    pub next: *const c_void,
15481    pub flags: BufferCreateFlags,
15482    pub usage: BufferUsageFlags,
15483    pub handle_type: ExternalMemoryHandleTypeFlags,
15484}
15485
15486impl Default for PhysicalDeviceExternalBufferInfo {
15487    #[inline]
15488    fn default() -> Self {
15489        Self {
15490            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
15491            next: ptr::null(),
15492            flags: BufferCreateFlags::default(),
15493            usage: BufferUsageFlags::default(),
15494            handle_type: ExternalMemoryHandleTypeFlags::default(),
15495        }
15496    }
15497}
15498
15499unsafe impl Send for PhysicalDeviceExternalBufferInfo {}
15500unsafe impl Sync for PhysicalDeviceExternalBufferInfo {}
15501
15502/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalComputeQueuePropertiesNV.html>
15503#[repr(C)]
15504#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15505pub struct PhysicalDeviceExternalComputeQueuePropertiesNV {
15506    pub s_type: StructureType,
15507    pub next: *mut c_void,
15508    pub external_data_size: u32,
15509    pub max_external_queues: u32,
15510}
15511
15512impl Default for PhysicalDeviceExternalComputeQueuePropertiesNV {
15513    #[inline]
15514    fn default() -> Self {
15515        Self {
15516            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV,
15517            next: ptr::null_mut(),
15518            external_data_size: u32::default(),
15519            max_external_queues: u32::default(),
15520        }
15521    }
15522}
15523
15524unsafe impl Send for PhysicalDeviceExternalComputeQueuePropertiesNV {}
15525unsafe impl Sync for PhysicalDeviceExternalComputeQueuePropertiesNV {}
15526
15527/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFenceInfo.html>
15528#[repr(C)]
15529#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15530pub struct PhysicalDeviceExternalFenceInfo {
15531    pub s_type: StructureType,
15532    pub next: *const c_void,
15533    pub handle_type: ExternalFenceHandleTypeFlags,
15534}
15535
15536impl Default for PhysicalDeviceExternalFenceInfo {
15537    #[inline]
15538    fn default() -> Self {
15539        Self {
15540            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
15541            next: ptr::null(),
15542            handle_type: ExternalFenceHandleTypeFlags::default(),
15543        }
15544    }
15545}
15546
15547unsafe impl Send for PhysicalDeviceExternalFenceInfo {}
15548unsafe impl Sync for PhysicalDeviceExternalFenceInfo {}
15549
15550/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFormatResolveFeaturesANDROID.html>
15551#[repr(C)]
15552#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15553pub struct PhysicalDeviceExternalFormatResolveFeaturesANDROID {
15554    pub s_type: StructureType,
15555    pub next: *mut c_void,
15556    pub external_format_resolve: Bool32,
15557}
15558
15559impl Default for PhysicalDeviceExternalFormatResolveFeaturesANDROID {
15560    #[inline]
15561    fn default() -> Self {
15562        Self {
15563            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID,
15564            next: ptr::null_mut(),
15565            external_format_resolve: Bool32::default(),
15566        }
15567    }
15568}
15569
15570unsafe impl Send for PhysicalDeviceExternalFormatResolveFeaturesANDROID {}
15571unsafe impl Sync for PhysicalDeviceExternalFormatResolveFeaturesANDROID {}
15572
15573/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFormatResolvePropertiesANDROID.html>
15574#[repr(C)]
15575#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15576pub struct PhysicalDeviceExternalFormatResolvePropertiesANDROID {
15577    pub s_type: StructureType,
15578    pub next: *mut c_void,
15579    pub null_color_attachment_with_external_format_resolve: Bool32,
15580    pub external_format_resolve_chroma_offset_x: ChromaLocation,
15581    pub external_format_resolve_chroma_offset_y: ChromaLocation,
15582}
15583
15584impl Default for PhysicalDeviceExternalFormatResolvePropertiesANDROID {
15585    #[inline]
15586    fn default() -> Self {
15587        Self {
15588            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID,
15589            next: ptr::null_mut(),
15590            null_color_attachment_with_external_format_resolve: Bool32::default(),
15591            external_format_resolve_chroma_offset_x: ChromaLocation::default(),
15592            external_format_resolve_chroma_offset_y: ChromaLocation::default(),
15593        }
15594    }
15595}
15596
15597unsafe impl Send for PhysicalDeviceExternalFormatResolvePropertiesANDROID {}
15598unsafe impl Sync for PhysicalDeviceExternalFormatResolvePropertiesANDROID {}
15599
15600/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalImageFormatInfo.html>
15601#[repr(C)]
15602#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15603pub struct PhysicalDeviceExternalImageFormatInfo {
15604    pub s_type: StructureType,
15605    pub next: *const c_void,
15606    pub handle_type: ExternalMemoryHandleTypeFlags,
15607}
15608
15609impl Default for PhysicalDeviceExternalImageFormatInfo {
15610    #[inline]
15611    fn default() -> Self {
15612        Self {
15613            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
15614            next: ptr::null(),
15615            handle_type: ExternalMemoryHandleTypeFlags::default(),
15616        }
15617    }
15618}
15619
15620unsafe impl Send for PhysicalDeviceExternalImageFormatInfo {}
15621unsafe impl Sync for PhysicalDeviceExternalImageFormatInfo {}
15622
15623/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryHostPropertiesEXT.html>
15624#[repr(C)]
15625#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15626pub struct PhysicalDeviceExternalMemoryHostPropertiesEXT {
15627    pub s_type: StructureType,
15628    pub next: *mut c_void,
15629    pub min_imported_host_pointer_alignment: DeviceSize,
15630}
15631
15632impl Default for PhysicalDeviceExternalMemoryHostPropertiesEXT {
15633    #[inline]
15634    fn default() -> Self {
15635        Self {
15636            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT,
15637            next: ptr::null_mut(),
15638            min_imported_host_pointer_alignment: DeviceSize::default(),
15639        }
15640    }
15641}
15642
15643unsafe impl Send for PhysicalDeviceExternalMemoryHostPropertiesEXT {}
15644unsafe impl Sync for PhysicalDeviceExternalMemoryHostPropertiesEXT {}
15645
15646/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.html>
15647#[repr(C)]
15648#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15649pub struct PhysicalDeviceExternalMemoryRDMAFeaturesNV {
15650    pub s_type: StructureType,
15651    pub next: *mut c_void,
15652    pub external_memory_rdma: Bool32,
15653}
15654
15655impl Default for PhysicalDeviceExternalMemoryRDMAFeaturesNV {
15656    #[inline]
15657    fn default() -> Self {
15658        Self {
15659            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV,
15660            next: ptr::null_mut(),
15661            external_memory_rdma: Bool32::default(),
15662        }
15663    }
15664}
15665
15666unsafe impl Send for PhysicalDeviceExternalMemoryRDMAFeaturesNV {}
15667unsafe impl Sync for PhysicalDeviceExternalMemoryRDMAFeaturesNV {}
15668
15669/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemorySciBufFeaturesNV.html>
15670#[repr(C)]
15671#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15672pub struct PhysicalDeviceExternalMemorySciBufFeaturesNV {
15673    pub s_type: StructureType,
15674    pub next: *mut c_void,
15675    pub sci_buf_import: Bool32,
15676    pub sci_buf_export: Bool32,
15677}
15678
15679impl Default for PhysicalDeviceExternalMemorySciBufFeaturesNV {
15680    #[inline]
15681    fn default() -> Self {
15682        Self {
15683            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV,
15684            next: ptr::null_mut(),
15685            sci_buf_import: Bool32::default(),
15686            sci_buf_export: Bool32::default(),
15687        }
15688    }
15689}
15690
15691unsafe impl Send for PhysicalDeviceExternalMemorySciBufFeaturesNV {}
15692unsafe impl Sync for PhysicalDeviceExternalMemorySciBufFeaturesNV {}
15693
15694/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX.html>
15695#[repr(C)]
15696#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15697pub struct PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
15698    pub s_type: StructureType,
15699    pub next: *mut c_void,
15700    pub screen_buffer_import: Bool32,
15701}
15702
15703impl Default for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
15704    #[inline]
15705    fn default() -> Self {
15706        Self {
15707            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX,
15708            next: ptr::null_mut(),
15709            screen_buffer_import: Bool32::default(),
15710        }
15711    }
15712}
15713
15714unsafe impl Send for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {}
15715unsafe impl Sync for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {}
15716
15717/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSciSync2FeaturesNV.html>
15718#[repr(C)]
15719#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15720pub struct PhysicalDeviceExternalSciSync2FeaturesNV {
15721    pub s_type: StructureType,
15722    pub next: *mut c_void,
15723    pub sci_sync_fence: Bool32,
15724    pub sci_sync_semaphore2: Bool32,
15725    pub sci_sync_import: Bool32,
15726    pub sci_sync_export: Bool32,
15727}
15728
15729impl Default for PhysicalDeviceExternalSciSync2FeaturesNV {
15730    #[inline]
15731    fn default() -> Self {
15732        Self {
15733            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV,
15734            next: ptr::null_mut(),
15735            sci_sync_fence: Bool32::default(),
15736            sci_sync_semaphore2: Bool32::default(),
15737            sci_sync_import: Bool32::default(),
15738            sci_sync_export: Bool32::default(),
15739        }
15740    }
15741}
15742
15743unsafe impl Send for PhysicalDeviceExternalSciSync2FeaturesNV {}
15744unsafe impl Sync for PhysicalDeviceExternalSciSync2FeaturesNV {}
15745
15746/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSciSyncFeaturesNV.html>
15747#[repr(C)]
15748#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15749pub struct PhysicalDeviceExternalSciSyncFeaturesNV {
15750    pub s_type: StructureType,
15751    pub next: *mut c_void,
15752    pub sci_sync_fence: Bool32,
15753    pub sci_sync_semaphore: Bool32,
15754    pub sci_sync_import: Bool32,
15755    pub sci_sync_export: Bool32,
15756}
15757
15758impl Default for PhysicalDeviceExternalSciSyncFeaturesNV {
15759    #[inline]
15760    fn default() -> Self {
15761        Self {
15762            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_FEATURES_NV,
15763            next: ptr::null_mut(),
15764            sci_sync_fence: Bool32::default(),
15765            sci_sync_semaphore: Bool32::default(),
15766            sci_sync_import: Bool32::default(),
15767            sci_sync_export: Bool32::default(),
15768        }
15769    }
15770}
15771
15772unsafe impl Send for PhysicalDeviceExternalSciSyncFeaturesNV {}
15773unsafe impl Sync for PhysicalDeviceExternalSciSyncFeaturesNV {}
15774
15775/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSemaphoreInfo.html>
15776#[repr(C)]
15777#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15778pub struct PhysicalDeviceExternalSemaphoreInfo {
15779    pub s_type: StructureType,
15780    pub next: *const c_void,
15781    pub handle_type: ExternalSemaphoreHandleTypeFlags,
15782}
15783
15784impl Default for PhysicalDeviceExternalSemaphoreInfo {
15785    #[inline]
15786    fn default() -> Self {
15787        Self {
15788            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
15789            next: ptr::null(),
15790            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
15791        }
15792    }
15793}
15794
15795unsafe impl Send for PhysicalDeviceExternalSemaphoreInfo {}
15796unsafe impl Sync for PhysicalDeviceExternalSemaphoreInfo {}
15797
15798/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalTensorInfoARM.html>
15799#[repr(C)]
15800#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15801pub struct PhysicalDeviceExternalTensorInfoARM {
15802    pub s_type: StructureType,
15803    pub next: *const c_void,
15804    pub flags: TensorCreateFlagsARM,
15805    pub description: *const TensorDescriptionARM,
15806    pub handle_type: ExternalMemoryHandleTypeFlags,
15807}
15808
15809impl Default for PhysicalDeviceExternalTensorInfoARM {
15810    #[inline]
15811    fn default() -> Self {
15812        Self {
15813            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM,
15814            next: ptr::null(),
15815            flags: TensorCreateFlagsARM::default(),
15816            description: ptr::null(),
15817            handle_type: ExternalMemoryHandleTypeFlags::default(),
15818        }
15819    }
15820}
15821
15822unsafe impl Send for PhysicalDeviceExternalTensorInfoARM {}
15823unsafe impl Sync for PhysicalDeviceExternalTensorInfoARM {}
15824
15825/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFaultFeaturesEXT.html>
15826#[repr(C)]
15827#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15828pub struct PhysicalDeviceFaultFeaturesEXT {
15829    pub s_type: StructureType,
15830    pub next: *mut c_void,
15831    pub device_fault: Bool32,
15832    pub device_fault_vendor_binary: Bool32,
15833}
15834
15835impl Default for PhysicalDeviceFaultFeaturesEXT {
15836    #[inline]
15837    fn default() -> Self {
15838        Self {
15839            s_type: StructureType::PHYSICAL_DEVICE_FAULT_FEATURES_EXT,
15840            next: ptr::null_mut(),
15841            device_fault: Bool32::default(),
15842            device_fault_vendor_binary: Bool32::default(),
15843        }
15844    }
15845}
15846
15847unsafe impl Send for PhysicalDeviceFaultFeaturesEXT {}
15848unsafe impl Sync for PhysicalDeviceFaultFeaturesEXT {}
15849
15850/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures.html>
15851#[repr(C)]
15852#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
15853pub struct PhysicalDeviceFeatures {
15854    pub robust_buffer_access: Bool32,
15855    pub full_draw_index_uint32: Bool32,
15856    pub image_cube_array: Bool32,
15857    pub independent_blend: Bool32,
15858    pub geometry_shader: Bool32,
15859    pub tessellation_shader: Bool32,
15860    pub sample_rate_shading: Bool32,
15861    pub dual_src_blend: Bool32,
15862    pub logic_op: Bool32,
15863    pub multi_draw_indirect: Bool32,
15864    pub draw_indirect_first_instance: Bool32,
15865    pub depth_clamp: Bool32,
15866    pub depth_bias_clamp: Bool32,
15867    pub fill_mode_non_solid: Bool32,
15868    pub depth_bounds: Bool32,
15869    pub wide_lines: Bool32,
15870    pub large_points: Bool32,
15871    pub alpha_to_one: Bool32,
15872    pub multi_viewport: Bool32,
15873    pub sampler_anisotropy: Bool32,
15874    pub texture_compression_etc2: Bool32,
15875    pub texture_compression_astc_ldr: Bool32,
15876    pub texture_compression_bc: Bool32,
15877    pub occlusion_query_precise: Bool32,
15878    pub pipeline_statistics_query: Bool32,
15879    pub vertex_pipeline_stores_and_atomics: Bool32,
15880    pub fragment_stores_and_atomics: Bool32,
15881    pub shader_tessellation_and_geometry_point_size: Bool32,
15882    pub shader_image_gather_extended: Bool32,
15883    pub shader_storage_image_extended_formats: Bool32,
15884    pub shader_storage_image_multisample: Bool32,
15885    pub shader_storage_image_read_without_format: Bool32,
15886    pub shader_storage_image_write_without_format: Bool32,
15887    pub shader_uniform_buffer_array_dynamic_indexing: Bool32,
15888    pub shader_sampled_image_array_dynamic_indexing: Bool32,
15889    pub shader_storage_buffer_array_dynamic_indexing: Bool32,
15890    pub shader_storage_image_array_dynamic_indexing: Bool32,
15891    pub shader_clip_distance: Bool32,
15892    pub shader_cull_distance: Bool32,
15893    pub shader_float64: Bool32,
15894    pub shader_int64: Bool32,
15895    pub shader_int16: Bool32,
15896    pub shader_resource_residency: Bool32,
15897    pub shader_resource_min_lod: Bool32,
15898    pub sparse_binding: Bool32,
15899    pub sparse_residency_buffer: Bool32,
15900    pub sparse_residency_image_2d: Bool32,
15901    pub sparse_residency_image_3d: Bool32,
15902    pub sparse_residency2_samples: Bool32,
15903    pub sparse_residency4_samples: Bool32,
15904    pub sparse_residency8_samples: Bool32,
15905    pub sparse_residency16_samples: Bool32,
15906    pub sparse_residency_aliased: Bool32,
15907    pub variable_multisample_rate: Bool32,
15908    pub inherited_queries: Bool32,
15909}
15910
15911/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures2.html>
15912#[repr(C)]
15913#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15914pub struct PhysicalDeviceFeatures2 {
15915    pub s_type: StructureType,
15916    pub next: *mut c_void,
15917    pub features: PhysicalDeviceFeatures,
15918}
15919
15920impl Default for PhysicalDeviceFeatures2 {
15921    #[inline]
15922    fn default() -> Self {
15923        Self {
15924            s_type: StructureType::PHYSICAL_DEVICE_FEATURES_2,
15925            next: ptr::null_mut(),
15926            features: PhysicalDeviceFeatures::default(),
15927        }
15928    }
15929}
15930
15931unsafe impl Send for PhysicalDeviceFeatures2 {}
15932unsafe impl Sync for PhysicalDeviceFeatures2 {}
15933
15934/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFloatControlsProperties.html>
15935#[repr(C)]
15936#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15937pub struct PhysicalDeviceFloatControlsProperties {
15938    pub s_type: StructureType,
15939    pub next: *mut c_void,
15940    pub denorm_behavior_independence: ShaderFloatControlsIndependence,
15941    pub rounding_mode_independence: ShaderFloatControlsIndependence,
15942    pub shader_signed_zero_inf_nan_preserve_float16: Bool32,
15943    pub shader_signed_zero_inf_nan_preserve_float32: Bool32,
15944    pub shader_signed_zero_inf_nan_preserve_float64: Bool32,
15945    pub shader_denorm_preserve_float16: Bool32,
15946    pub shader_denorm_preserve_float32: Bool32,
15947    pub shader_denorm_preserve_float64: Bool32,
15948    pub shader_denorm_flush_to_zero_float16: Bool32,
15949    pub shader_denorm_flush_to_zero_float32: Bool32,
15950    pub shader_denorm_flush_to_zero_float64: Bool32,
15951    pub shader_rounding_mode_rte_float16: Bool32,
15952    pub shader_rounding_mode_rte_float32: Bool32,
15953    pub shader_rounding_mode_rte_float64: Bool32,
15954    pub shader_rounding_mode_rtz_float16: Bool32,
15955    pub shader_rounding_mode_rtz_float32: Bool32,
15956    pub shader_rounding_mode_rtz_float64: Bool32,
15957}
15958
15959impl Default for PhysicalDeviceFloatControlsProperties {
15960    #[inline]
15961    fn default() -> Self {
15962        Self {
15963            s_type: StructureType::PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
15964            next: ptr::null_mut(),
15965            denorm_behavior_independence: ShaderFloatControlsIndependence::default(),
15966            rounding_mode_independence: ShaderFloatControlsIndependence::default(),
15967            shader_signed_zero_inf_nan_preserve_float16: Bool32::default(),
15968            shader_signed_zero_inf_nan_preserve_float32: Bool32::default(),
15969            shader_signed_zero_inf_nan_preserve_float64: Bool32::default(),
15970            shader_denorm_preserve_float16: Bool32::default(),
15971            shader_denorm_preserve_float32: Bool32::default(),
15972            shader_denorm_preserve_float64: Bool32::default(),
15973            shader_denorm_flush_to_zero_float16: Bool32::default(),
15974            shader_denorm_flush_to_zero_float32: Bool32::default(),
15975            shader_denorm_flush_to_zero_float64: Bool32::default(),
15976            shader_rounding_mode_rte_float16: Bool32::default(),
15977            shader_rounding_mode_rte_float32: Bool32::default(),
15978            shader_rounding_mode_rte_float64: Bool32::default(),
15979            shader_rounding_mode_rtz_float16: Bool32::default(),
15980            shader_rounding_mode_rtz_float32: Bool32::default(),
15981            shader_rounding_mode_rtz_float64: Bool32::default(),
15982        }
15983    }
15984}
15985
15986unsafe impl Send for PhysicalDeviceFloatControlsProperties {}
15987unsafe impl Sync for PhysicalDeviceFloatControlsProperties {}
15988
15989/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFormatPackFeaturesARM.html>
15990#[repr(C)]
15991#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15992pub struct PhysicalDeviceFormatPackFeaturesARM {
15993    pub s_type: StructureType,
15994    pub next: *mut c_void,
15995    pub format_pack: Bool32,
15996}
15997
15998impl Default for PhysicalDeviceFormatPackFeaturesARM {
15999    #[inline]
16000    fn default() -> Self {
16001        Self {
16002            s_type: StructureType::PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM,
16003            next: ptr::null_mut(),
16004            format_pack: Bool32::default(),
16005        }
16006    }
16007}
16008
16009unsafe impl Send for PhysicalDeviceFormatPackFeaturesARM {}
16010unsafe impl Sync for PhysicalDeviceFormatPackFeaturesARM {}
16011
16012/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.html>
16013#[repr(C)]
16014#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16015pub struct PhysicalDeviceFragmentDensityMap2FeaturesEXT {
16016    pub s_type: StructureType,
16017    pub next: *mut c_void,
16018    pub fragment_density_map_deferred: Bool32,
16019}
16020
16021impl Default for PhysicalDeviceFragmentDensityMap2FeaturesEXT {
16022    #[inline]
16023    fn default() -> Self {
16024        Self {
16025            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT,
16026            next: ptr::null_mut(),
16027            fragment_density_map_deferred: Bool32::default(),
16028        }
16029    }
16030}
16031
16032unsafe impl Send for PhysicalDeviceFragmentDensityMap2FeaturesEXT {}
16033unsafe impl Sync for PhysicalDeviceFragmentDensityMap2FeaturesEXT {}
16034
16035/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMap2PropertiesEXT.html>
16036#[repr(C)]
16037#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16038pub struct PhysicalDeviceFragmentDensityMap2PropertiesEXT {
16039    pub s_type: StructureType,
16040    pub next: *mut c_void,
16041    pub subsampled_loads: Bool32,
16042    pub subsampled_coarse_reconstruction_early_access: Bool32,
16043    pub max_subsampled_array_layers: u32,
16044    pub max_descriptor_set_subsampled_samplers: u32,
16045}
16046
16047impl Default for PhysicalDeviceFragmentDensityMap2PropertiesEXT {
16048    #[inline]
16049    fn default() -> Self {
16050        Self {
16051            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT,
16052            next: ptr::null_mut(),
16053            subsampled_loads: Bool32::default(),
16054            subsampled_coarse_reconstruction_early_access: Bool32::default(),
16055            max_subsampled_array_layers: u32::default(),
16056            max_descriptor_set_subsampled_samplers: u32::default(),
16057        }
16058    }
16059}
16060
16061unsafe impl Send for PhysicalDeviceFragmentDensityMap2PropertiesEXT {}
16062unsafe impl Sync for PhysicalDeviceFragmentDensityMap2PropertiesEXT {}
16063
16064/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.html>
16065#[repr(C)]
16066#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16067pub struct PhysicalDeviceFragmentDensityMapFeaturesEXT {
16068    pub s_type: StructureType,
16069    pub next: *mut c_void,
16070    pub fragment_density_map: Bool32,
16071    pub fragment_density_map_dynamic: Bool32,
16072    pub fragment_density_map_non_subsampled_images: Bool32,
16073}
16074
16075impl Default for PhysicalDeviceFragmentDensityMapFeaturesEXT {
16076    #[inline]
16077    fn default() -> Self {
16078        Self {
16079            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT,
16080            next: ptr::null_mut(),
16081            fragment_density_map: Bool32::default(),
16082            fragment_density_map_dynamic: Bool32::default(),
16083            fragment_density_map_non_subsampled_images: Bool32::default(),
16084        }
16085    }
16086}
16087
16088unsafe impl Send for PhysicalDeviceFragmentDensityMapFeaturesEXT {}
16089unsafe impl Sync for PhysicalDeviceFragmentDensityMapFeaturesEXT {}
16090
16091/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE.html>
16092#[repr(C)]
16093#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16094pub struct PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {
16095    pub s_type: StructureType,
16096    pub next: *mut c_void,
16097    pub fragment_density_map_layered: Bool32,
16098}
16099
16100impl Default for PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {
16101    #[inline]
16102    fn default() -> Self {
16103        Self {
16104            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE,
16105            next: ptr::null_mut(),
16106            fragment_density_map_layered: Bool32::default(),
16107        }
16108    }
16109}
16110
16111unsafe impl Send for PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {}
16112unsafe impl Sync for PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {}
16113
16114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE.html>
16115#[repr(C)]
16116#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16117pub struct PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {
16118    pub s_type: StructureType,
16119    pub next: *mut c_void,
16120    pub max_fragment_density_map_layers: u32,
16121}
16122
16123impl Default for PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {
16124    #[inline]
16125    fn default() -> Self {
16126        Self {
16127            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE,
16128            next: ptr::null_mut(),
16129            max_fragment_density_map_layers: u32::default(),
16130        }
16131    }
16132}
16133
16134unsafe impl Send for PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {}
16135unsafe impl Sync for PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {}
16136
16137/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT.html>
16138#[repr(C)]
16139#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16140pub struct PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {
16141    pub s_type: StructureType,
16142    pub next: *mut c_void,
16143    pub fragment_density_map_offset: Bool32,
16144}
16145
16146impl Default for PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {
16147    #[inline]
16148    fn default() -> Self {
16149        Self {
16150            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT,
16151            next: ptr::null_mut(),
16152            fragment_density_map_offset: Bool32::default(),
16153        }
16154    }
16155}
16156
16157unsafe impl Send for PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {}
16158unsafe impl Sync for PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {}
16159
16160/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT.html>
16161#[repr(C)]
16162#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16163pub struct PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {
16164    pub s_type: StructureType,
16165    pub next: *mut c_void,
16166    pub fragment_density_offset_granularity: Extent2D,
16167}
16168
16169impl Default for PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {
16170    #[inline]
16171    fn default() -> Self {
16172        Self {
16173            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT,
16174            next: ptr::null_mut(),
16175            fragment_density_offset_granularity: Extent2D::default(),
16176        }
16177    }
16178}
16179
16180unsafe impl Send for PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {}
16181unsafe impl Sync for PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {}
16182
16183/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapPropertiesEXT.html>
16184#[repr(C)]
16185#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16186pub struct PhysicalDeviceFragmentDensityMapPropertiesEXT {
16187    pub s_type: StructureType,
16188    pub next: *mut c_void,
16189    pub min_fragment_density_texel_size: Extent2D,
16190    pub max_fragment_density_texel_size: Extent2D,
16191    pub fragment_density_invocations: Bool32,
16192}
16193
16194impl Default for PhysicalDeviceFragmentDensityMapPropertiesEXT {
16195    #[inline]
16196    fn default() -> Self {
16197        Self {
16198            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT,
16199            next: ptr::null_mut(),
16200            min_fragment_density_texel_size: Extent2D::default(),
16201            max_fragment_density_texel_size: Extent2D::default(),
16202            fragment_density_invocations: Bool32::default(),
16203        }
16204    }
16205}
16206
16207unsafe impl Send for PhysicalDeviceFragmentDensityMapPropertiesEXT {}
16208unsafe impl Sync for PhysicalDeviceFragmentDensityMapPropertiesEXT {}
16209
16210/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR.html>
16211#[repr(C)]
16212#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16213pub struct PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {
16214    pub s_type: StructureType,
16215    pub next: *mut c_void,
16216    pub fragment_shader_barycentric: Bool32,
16217}
16218
16219impl Default for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {
16220    #[inline]
16221    fn default() -> Self {
16222        Self {
16223            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR,
16224            next: ptr::null_mut(),
16225            fragment_shader_barycentric: Bool32::default(),
16226        }
16227    }
16228}
16229
16230unsafe impl Send for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {}
16231unsafe impl Sync for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {}
16232
16233/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR.html>
16234#[repr(C)]
16235#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16236pub struct PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {
16237    pub s_type: StructureType,
16238    pub next: *mut c_void,
16239    pub tri_strip_vertex_order_independent_of_provoking_vertex: Bool32,
16240}
16241
16242impl Default for PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {
16243    #[inline]
16244    fn default() -> Self {
16245        Self {
16246            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR,
16247            next: ptr::null_mut(),
16248            tri_strip_vertex_order_independent_of_provoking_vertex: Bool32::default(),
16249        }
16250    }
16251}
16252
16253unsafe impl Send for PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {}
16254unsafe impl Sync for PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {}
16255
16256/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html>
16257#[repr(C)]
16258#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16259pub struct PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
16260    pub s_type: StructureType,
16261    pub next: *mut c_void,
16262    pub fragment_shader_sample_interlock: Bool32,
16263    pub fragment_shader_pixel_interlock: Bool32,
16264    pub fragment_shader_shading_rate_interlock: Bool32,
16265}
16266
16267impl Default for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
16268    #[inline]
16269    fn default() -> Self {
16270        Self {
16271            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT,
16272            next: ptr::null_mut(),
16273            fragment_shader_sample_interlock: Bool32::default(),
16274            fragment_shader_pixel_interlock: Bool32::default(),
16275            fragment_shader_shading_rate_interlock: Bool32::default(),
16276        }
16277    }
16278}
16279
16280unsafe impl Send for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {}
16281unsafe impl Sync for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {}
16282
16283/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html>
16284#[repr(C)]
16285#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16286pub struct PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
16287    pub s_type: StructureType,
16288    pub next: *mut c_void,
16289    pub fragment_shading_rate_enums: Bool32,
16290    pub supersample_fragment_shading_rates: Bool32,
16291    pub no_invocation_fragment_shading_rates: Bool32,
16292}
16293
16294impl Default for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
16295    #[inline]
16296    fn default() -> Self {
16297        Self {
16298            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV,
16299            next: ptr::null_mut(),
16300            fragment_shading_rate_enums: Bool32::default(),
16301            supersample_fragment_shading_rates: Bool32::default(),
16302            no_invocation_fragment_shading_rates: Bool32::default(),
16303        }
16304    }
16305}
16306
16307unsafe impl Send for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {}
16308unsafe impl Sync for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {}
16309
16310/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV.html>
16311#[repr(C)]
16312#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16313pub struct PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
16314    pub s_type: StructureType,
16315    pub next: *mut c_void,
16316    pub max_fragment_shading_rate_invocation_count: SampleCountFlags,
16317}
16318
16319impl Default for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
16320    #[inline]
16321    fn default() -> Self {
16322        Self {
16323            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV,
16324            next: ptr::null_mut(),
16325            max_fragment_shading_rate_invocation_count: SampleCountFlags::default(),
16326        }
16327    }
16328}
16329
16330unsafe impl Send for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {}
16331unsafe impl Sync for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {}
16332
16333/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.html>
16334#[repr(C)]
16335#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16336pub struct PhysicalDeviceFragmentShadingRateFeaturesKHR {
16337    pub s_type: StructureType,
16338    pub next: *mut c_void,
16339    pub pipeline_fragment_shading_rate: Bool32,
16340    pub primitive_fragment_shading_rate: Bool32,
16341    pub attachment_fragment_shading_rate: Bool32,
16342}
16343
16344impl Default for PhysicalDeviceFragmentShadingRateFeaturesKHR {
16345    #[inline]
16346    fn default() -> Self {
16347        Self {
16348            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR,
16349            next: ptr::null_mut(),
16350            pipeline_fragment_shading_rate: Bool32::default(),
16351            primitive_fragment_shading_rate: Bool32::default(),
16352            attachment_fragment_shading_rate: Bool32::default(),
16353        }
16354    }
16355}
16356
16357unsafe impl Send for PhysicalDeviceFragmentShadingRateFeaturesKHR {}
16358unsafe impl Sync for PhysicalDeviceFragmentShadingRateFeaturesKHR {}
16359
16360/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateKHR.html>
16361#[repr(C)]
16362#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16363pub struct PhysicalDeviceFragmentShadingRateKHR {
16364    pub s_type: StructureType,
16365    pub next: *mut c_void,
16366    pub sample_counts: SampleCountFlags,
16367    pub fragment_size: Extent2D,
16368}
16369
16370impl Default for PhysicalDeviceFragmentShadingRateKHR {
16371    #[inline]
16372    fn default() -> Self {
16373        Self {
16374            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR,
16375            next: ptr::null_mut(),
16376            sample_counts: SampleCountFlags::default(),
16377            fragment_size: Extent2D::default(),
16378        }
16379    }
16380}
16381
16382unsafe impl Send for PhysicalDeviceFragmentShadingRateKHR {}
16383unsafe impl Sync for PhysicalDeviceFragmentShadingRateKHR {}
16384
16385/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html>
16386#[repr(C)]
16387#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16388pub struct PhysicalDeviceFragmentShadingRatePropertiesKHR {
16389    pub s_type: StructureType,
16390    pub next: *mut c_void,
16391    pub min_fragment_shading_rate_attachment_texel_size: Extent2D,
16392    pub max_fragment_shading_rate_attachment_texel_size: Extent2D,
16393    pub max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32,
16394    pub primitive_fragment_shading_rate_with_multiple_viewports: Bool32,
16395    pub layered_shading_rate_attachments: Bool32,
16396    pub fragment_shading_rate_non_trivial_combiner_ops: Bool32,
16397    pub max_fragment_size: Extent2D,
16398    pub max_fragment_size_aspect_ratio: u32,
16399    pub max_fragment_shading_rate_coverage_samples: u32,
16400    pub max_fragment_shading_rate_rasterization_samples: SampleCountFlags,
16401    pub fragment_shading_rate_with_shader_depth_stencil_writes: Bool32,
16402    pub fragment_shading_rate_with_sample_mask: Bool32,
16403    pub fragment_shading_rate_with_shader_sample_mask: Bool32,
16404    pub fragment_shading_rate_with_conservative_rasterization: Bool32,
16405    pub fragment_shading_rate_with_fragment_shader_interlock: Bool32,
16406    pub fragment_shading_rate_with_custom_sample_locations: Bool32,
16407    pub fragment_shading_rate_strict_multiply_combiner: Bool32,
16408}
16409
16410impl Default for PhysicalDeviceFragmentShadingRatePropertiesKHR {
16411    #[inline]
16412    fn default() -> Self {
16413        Self {
16414            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR,
16415            next: ptr::null_mut(),
16416            min_fragment_shading_rate_attachment_texel_size: Extent2D::default(),
16417            max_fragment_shading_rate_attachment_texel_size: Extent2D::default(),
16418            max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32::default(),
16419            primitive_fragment_shading_rate_with_multiple_viewports: Bool32::default(),
16420            layered_shading_rate_attachments: Bool32::default(),
16421            fragment_shading_rate_non_trivial_combiner_ops: Bool32::default(),
16422            max_fragment_size: Extent2D::default(),
16423            max_fragment_size_aspect_ratio: u32::default(),
16424            max_fragment_shading_rate_coverage_samples: u32::default(),
16425            max_fragment_shading_rate_rasterization_samples: SampleCountFlags::default(),
16426            fragment_shading_rate_with_shader_depth_stencil_writes: Bool32::default(),
16427            fragment_shading_rate_with_sample_mask: Bool32::default(),
16428            fragment_shading_rate_with_shader_sample_mask: Bool32::default(),
16429            fragment_shading_rate_with_conservative_rasterization: Bool32::default(),
16430            fragment_shading_rate_with_fragment_shader_interlock: Bool32::default(),
16431            fragment_shading_rate_with_custom_sample_locations: Bool32::default(),
16432            fragment_shading_rate_strict_multiply_combiner: Bool32::default(),
16433        }
16434    }
16435}
16436
16437unsafe impl Send for PhysicalDeviceFragmentShadingRatePropertiesKHR {}
16438unsafe impl Sync for PhysicalDeviceFragmentShadingRatePropertiesKHR {}
16439
16440/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFrameBoundaryFeaturesEXT.html>
16441#[repr(C)]
16442#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16443pub struct PhysicalDeviceFrameBoundaryFeaturesEXT {
16444    pub s_type: StructureType,
16445    pub next: *mut c_void,
16446    pub frame_boundary: Bool32,
16447}
16448
16449impl Default for PhysicalDeviceFrameBoundaryFeaturesEXT {
16450    #[inline]
16451    fn default() -> Self {
16452        Self {
16453            s_type: StructureType::PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT,
16454            next: ptr::null_mut(),
16455            frame_boundary: Bool32::default(),
16456        }
16457    }
16458}
16459
16460unsafe impl Send for PhysicalDeviceFrameBoundaryFeaturesEXT {}
16461unsafe impl Sync for PhysicalDeviceFrameBoundaryFeaturesEXT {}
16462
16463/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeatures.html>
16464#[repr(C)]
16465#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16466pub struct PhysicalDeviceGlobalPriorityQueryFeatures {
16467    pub s_type: StructureType,
16468    pub next: *mut c_void,
16469    pub global_priority_query: Bool32,
16470}
16471
16472impl Default for PhysicalDeviceGlobalPriorityQueryFeatures {
16473    #[inline]
16474    fn default() -> Self {
16475        Self {
16476            s_type: StructureType::PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES,
16477            next: ptr::null_mut(),
16478            global_priority_query: Bool32::default(),
16479        }
16480    }
16481}
16482
16483unsafe impl Send for PhysicalDeviceGlobalPriorityQueryFeatures {}
16484unsafe impl Sync for PhysicalDeviceGlobalPriorityQueryFeatures {}
16485
16486/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT.html>
16487#[repr(C)]
16488#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16489pub struct PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
16490    pub s_type: StructureType,
16491    pub next: *mut c_void,
16492    pub graphics_pipeline_library: Bool32,
16493}
16494
16495impl Default for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
16496    #[inline]
16497    fn default() -> Self {
16498        Self {
16499            s_type: StructureType::PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT,
16500            next: ptr::null_mut(),
16501            graphics_pipeline_library: Bool32::default(),
16502        }
16503    }
16504}
16505
16506unsafe impl Send for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {}
16507unsafe impl Sync for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {}
16508
16509/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT.html>
16510#[repr(C)]
16511#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16512pub struct PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {
16513    pub s_type: StructureType,
16514    pub next: *mut c_void,
16515    pub graphics_pipeline_library_fast_linking: Bool32,
16516    pub graphics_pipeline_library_independent_interpolation_decoration: Bool32,
16517}
16518
16519impl Default for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {
16520    #[inline]
16521    fn default() -> Self {
16522        Self {
16523            s_type: StructureType::PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT,
16524            next: ptr::null_mut(),
16525            graphics_pipeline_library_fast_linking: Bool32::default(),
16526            graphics_pipeline_library_independent_interpolation_decoration: Bool32::default(),
16527        }
16528    }
16529}
16530
16531unsafe impl Send for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {}
16532unsafe impl Sync for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {}
16533
16534/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGroupProperties.html>
16535#[repr(C)]
16536#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16537pub struct PhysicalDeviceGroupProperties {
16538    pub s_type: StructureType,
16539    pub next: *mut c_void,
16540    pub physical_device_count: u32,
16541    pub physical_devices: [PhysicalDevice; MAX_DEVICE_GROUP_SIZE],
16542    pub subset_allocation: Bool32,
16543}
16544
16545impl Default for PhysicalDeviceGroupProperties {
16546    #[inline]
16547    fn default() -> Self {
16548        Self {
16549            s_type: StructureType::PHYSICAL_DEVICE_GROUP_PROPERTIES,
16550            next: ptr::null_mut(),
16551            physical_device_count: u32::default(),
16552            physical_devices: [PhysicalDevice::default(); MAX_DEVICE_GROUP_SIZE],
16553            subset_allocation: Bool32::default(),
16554        }
16555    }
16556}
16557
16558unsafe impl Send for PhysicalDeviceGroupProperties {}
16559unsafe impl Sync for PhysicalDeviceGroupProperties {}
16560
16561/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHdrVividFeaturesHUAWEI.html>
16562#[repr(C)]
16563#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16564pub struct PhysicalDeviceHdrVividFeaturesHUAWEI {
16565    pub s_type: StructureType,
16566    pub next: *mut c_void,
16567    pub hdr_vivid: Bool32,
16568}
16569
16570impl Default for PhysicalDeviceHdrVividFeaturesHUAWEI {
16571    #[inline]
16572    fn default() -> Self {
16573        Self {
16574            s_type: StructureType::PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI,
16575            next: ptr::null_mut(),
16576            hdr_vivid: Bool32::default(),
16577        }
16578    }
16579}
16580
16581unsafe impl Send for PhysicalDeviceHdrVividFeaturesHUAWEI {}
16582unsafe impl Sync for PhysicalDeviceHdrVividFeaturesHUAWEI {}
16583
16584/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyFeatures.html>
16585#[repr(C)]
16586#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16587pub struct PhysicalDeviceHostImageCopyFeatures {
16588    pub s_type: StructureType,
16589    pub next: *mut c_void,
16590    pub host_image_copy: Bool32,
16591}
16592
16593impl Default for PhysicalDeviceHostImageCopyFeatures {
16594    #[inline]
16595    fn default() -> Self {
16596        Self {
16597            s_type: StructureType::PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES,
16598            next: ptr::null_mut(),
16599            host_image_copy: Bool32::default(),
16600        }
16601    }
16602}
16603
16604unsafe impl Send for PhysicalDeviceHostImageCopyFeatures {}
16605unsafe impl Sync for PhysicalDeviceHostImageCopyFeatures {}
16606
16607/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyProperties.html>
16608#[repr(C)]
16609#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16610pub struct PhysicalDeviceHostImageCopyProperties {
16611    pub s_type: StructureType,
16612    pub next: *mut c_void,
16613    pub copy_src_layout_count: u32,
16614    pub copy_src_layouts: *mut ImageLayout,
16615    pub copy_dst_layout_count: u32,
16616    pub copy_dst_layouts: *mut ImageLayout,
16617    pub optimal_tiling_layout_uuid: ByteArray<UUID_SIZE>,
16618    pub identical_memory_type_requirements: Bool32,
16619}
16620
16621impl Default for PhysicalDeviceHostImageCopyProperties {
16622    #[inline]
16623    fn default() -> Self {
16624        Self {
16625            s_type: StructureType::PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES,
16626            next: ptr::null_mut(),
16627            copy_src_layout_count: u32::default(),
16628            copy_src_layouts: ptr::null_mut(),
16629            copy_dst_layout_count: u32::default(),
16630            copy_dst_layouts: ptr::null_mut(),
16631            optimal_tiling_layout_uuid: ByteArray::default(),
16632            identical_memory_type_requirements: Bool32::default(),
16633        }
16634    }
16635}
16636
16637unsafe impl Send for PhysicalDeviceHostImageCopyProperties {}
16638unsafe impl Sync for PhysicalDeviceHostImageCopyProperties {}
16639
16640/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostQueryResetFeatures.html>
16641#[repr(C)]
16642#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16643pub struct PhysicalDeviceHostQueryResetFeatures {
16644    pub s_type: StructureType,
16645    pub next: *mut c_void,
16646    pub host_query_reset: Bool32,
16647}
16648
16649impl Default for PhysicalDeviceHostQueryResetFeatures {
16650    #[inline]
16651    fn default() -> Self {
16652        Self {
16653            s_type: StructureType::PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
16654            next: ptr::null_mut(),
16655            host_query_reset: Bool32::default(),
16656        }
16657    }
16658}
16659
16660unsafe impl Send for PhysicalDeviceHostQueryResetFeatures {}
16661unsafe impl Sync for PhysicalDeviceHostQueryResetFeatures {}
16662
16663/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIDProperties.html>
16664#[repr(C)]
16665#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16666pub struct PhysicalDeviceIDProperties {
16667    pub s_type: StructureType,
16668    pub next: *mut c_void,
16669    pub device_uuid: ByteArray<UUID_SIZE>,
16670    pub driver_uuid: ByteArray<UUID_SIZE>,
16671    pub device_luid: ByteArray<LUID_SIZE>,
16672    pub device_node_mask: u32,
16673    pub device_luid_valid: Bool32,
16674}
16675
16676impl Default for PhysicalDeviceIDProperties {
16677    #[inline]
16678    fn default() -> Self {
16679        Self {
16680            s_type: StructureType::PHYSICAL_DEVICE_ID_PROPERTIES,
16681            next: ptr::null_mut(),
16682            device_uuid: ByteArray::default(),
16683            driver_uuid: ByteArray::default(),
16684            device_luid: ByteArray::default(),
16685            device_node_mask: u32::default(),
16686            device_luid_valid: Bool32::default(),
16687        }
16688    }
16689}
16690
16691unsafe impl Send for PhysicalDeviceIDProperties {}
16692unsafe impl Sync for PhysicalDeviceIDProperties {}
16693
16694/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImage2DViewOf3DFeaturesEXT.html>
16695#[repr(C)]
16696#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16697pub struct PhysicalDeviceImage2DViewOf3DFeaturesEXT {
16698    pub s_type: StructureType,
16699    pub next: *mut c_void,
16700    pub image_2d_view_of_3d: Bool32,
16701    pub sampler_2d_view_of_3d: Bool32,
16702}
16703
16704impl Default for PhysicalDeviceImage2DViewOf3DFeaturesEXT {
16705    #[inline]
16706    fn default() -> Self {
16707        Self {
16708            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT,
16709            next: ptr::null_mut(),
16710            image_2d_view_of_3d: Bool32::default(),
16711            sampler_2d_view_of_3d: Bool32::default(),
16712        }
16713    }
16714}
16715
16716unsafe impl Send for PhysicalDeviceImage2DViewOf3DFeaturesEXT {}
16717unsafe impl Sync for PhysicalDeviceImage2DViewOf3DFeaturesEXT {}
16718
16719/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageAlignmentControlFeaturesMESA.html>
16720#[repr(C)]
16721#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16722pub struct PhysicalDeviceImageAlignmentControlFeaturesMESA {
16723    pub s_type: StructureType,
16724    pub next: *mut c_void,
16725    pub image_alignment_control: Bool32,
16726}
16727
16728impl Default for PhysicalDeviceImageAlignmentControlFeaturesMESA {
16729    #[inline]
16730    fn default() -> Self {
16731        Self {
16732            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA,
16733            next: ptr::null_mut(),
16734            image_alignment_control: Bool32::default(),
16735        }
16736    }
16737}
16738
16739unsafe impl Send for PhysicalDeviceImageAlignmentControlFeaturesMESA {}
16740unsafe impl Sync for PhysicalDeviceImageAlignmentControlFeaturesMESA {}
16741
16742/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageAlignmentControlPropertiesMESA.html>
16743#[repr(C)]
16744#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16745pub struct PhysicalDeviceImageAlignmentControlPropertiesMESA {
16746    pub s_type: StructureType,
16747    pub next: *mut c_void,
16748    pub supported_image_alignment_mask: u32,
16749}
16750
16751impl Default for PhysicalDeviceImageAlignmentControlPropertiesMESA {
16752    #[inline]
16753    fn default() -> Self {
16754        Self {
16755            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA,
16756            next: ptr::null_mut(),
16757            supported_image_alignment_mask: u32::default(),
16758        }
16759    }
16760}
16761
16762unsafe impl Send for PhysicalDeviceImageAlignmentControlPropertiesMESA {}
16763unsafe impl Sync for PhysicalDeviceImageAlignmentControlPropertiesMESA {}
16764
16765/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageCompressionControlFeaturesEXT.html>
16766#[repr(C)]
16767#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16768pub struct PhysicalDeviceImageCompressionControlFeaturesEXT {
16769    pub s_type: StructureType,
16770    pub next: *mut c_void,
16771    pub image_compression_control: Bool32,
16772}
16773
16774impl Default for PhysicalDeviceImageCompressionControlFeaturesEXT {
16775    #[inline]
16776    fn default() -> Self {
16777        Self {
16778            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT,
16779            next: ptr::null_mut(),
16780            image_compression_control: Bool32::default(),
16781        }
16782    }
16783}
16784
16785unsafe impl Send for PhysicalDeviceImageCompressionControlFeaturesEXT {}
16786unsafe impl Sync for PhysicalDeviceImageCompressionControlFeaturesEXT {}
16787
16788/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT.html>
16789#[repr(C)]
16790#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16791pub struct PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
16792    pub s_type: StructureType,
16793    pub next: *mut c_void,
16794    pub image_compression_control_swapchain: Bool32,
16795}
16796
16797impl Default for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
16798    #[inline]
16799    fn default() -> Self {
16800        Self {
16801            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT,
16802            next: ptr::null_mut(),
16803            image_compression_control_swapchain: Bool32::default(),
16804        }
16805    }
16806}
16807
16808unsafe impl Send for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {}
16809unsafe impl Sync for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {}
16810
16811/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageDrmFormatModifierInfoEXT.html>
16812#[repr(C)]
16813#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16814pub struct PhysicalDeviceImageDrmFormatModifierInfoEXT {
16815    pub s_type: StructureType,
16816    pub next: *const c_void,
16817    pub drm_format_modifier: u64,
16818    pub sharing_mode: SharingMode,
16819    pub queue_family_index_count: u32,
16820    pub queue_family_indices: *const u32,
16821}
16822
16823impl Default for PhysicalDeviceImageDrmFormatModifierInfoEXT {
16824    #[inline]
16825    fn default() -> Self {
16826        Self {
16827            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT,
16828            next: ptr::null(),
16829            drm_format_modifier: u64::default(),
16830            sharing_mode: SharingMode::default(),
16831            queue_family_index_count: u32::default(),
16832            queue_family_indices: ptr::null(),
16833        }
16834    }
16835}
16836
16837unsafe impl Send for PhysicalDeviceImageDrmFormatModifierInfoEXT {}
16838unsafe impl Sync for PhysicalDeviceImageDrmFormatModifierInfoEXT {}
16839
16840/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageFormatInfo2.html>
16841#[repr(C)]
16842#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16843pub struct PhysicalDeviceImageFormatInfo2 {
16844    pub s_type: StructureType,
16845    pub next: *const c_void,
16846    pub format: Format,
16847    pub type_: ImageType,
16848    pub tiling: ImageTiling,
16849    pub usage: ImageUsageFlags,
16850    pub flags: ImageCreateFlags,
16851}
16852
16853impl Default for PhysicalDeviceImageFormatInfo2 {
16854    #[inline]
16855    fn default() -> Self {
16856        Self {
16857            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
16858            next: ptr::null(),
16859            format: Format::default(),
16860            type_: ImageType::default(),
16861            tiling: ImageTiling::default(),
16862            usage: ImageUsageFlags::default(),
16863            flags: ImageCreateFlags::default(),
16864        }
16865    }
16866}
16867
16868unsafe impl Send for PhysicalDeviceImageFormatInfo2 {}
16869unsafe impl Sync for PhysicalDeviceImageFormatInfo2 {}
16870
16871/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessing2FeaturesQCOM.html>
16872#[repr(C)]
16873#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16874pub struct PhysicalDeviceImageProcessing2FeaturesQCOM {
16875    pub s_type: StructureType,
16876    pub next: *mut c_void,
16877    pub texture_block_match2: Bool32,
16878}
16879
16880impl Default for PhysicalDeviceImageProcessing2FeaturesQCOM {
16881    #[inline]
16882    fn default() -> Self {
16883        Self {
16884            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM,
16885            next: ptr::null_mut(),
16886            texture_block_match2: Bool32::default(),
16887        }
16888    }
16889}
16890
16891unsafe impl Send for PhysicalDeviceImageProcessing2FeaturesQCOM {}
16892unsafe impl Sync for PhysicalDeviceImageProcessing2FeaturesQCOM {}
16893
16894/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessing2PropertiesQCOM.html>
16895#[repr(C)]
16896#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16897pub struct PhysicalDeviceImageProcessing2PropertiesQCOM {
16898    pub s_type: StructureType,
16899    pub next: *mut c_void,
16900    pub max_block_match_window: Extent2D,
16901}
16902
16903impl Default for PhysicalDeviceImageProcessing2PropertiesQCOM {
16904    #[inline]
16905    fn default() -> Self {
16906        Self {
16907            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM,
16908            next: ptr::null_mut(),
16909            max_block_match_window: Extent2D::default(),
16910        }
16911    }
16912}
16913
16914unsafe impl Send for PhysicalDeviceImageProcessing2PropertiesQCOM {}
16915unsafe impl Sync for PhysicalDeviceImageProcessing2PropertiesQCOM {}
16916
16917/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessingFeaturesQCOM.html>
16918#[repr(C)]
16919#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16920pub struct PhysicalDeviceImageProcessingFeaturesQCOM {
16921    pub s_type: StructureType,
16922    pub next: *mut c_void,
16923    pub texture_sample_weighted: Bool32,
16924    pub texture_box_filter: Bool32,
16925    pub texture_block_match: Bool32,
16926}
16927
16928impl Default for PhysicalDeviceImageProcessingFeaturesQCOM {
16929    #[inline]
16930    fn default() -> Self {
16931        Self {
16932            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM,
16933            next: ptr::null_mut(),
16934            texture_sample_weighted: Bool32::default(),
16935            texture_box_filter: Bool32::default(),
16936            texture_block_match: Bool32::default(),
16937        }
16938    }
16939}
16940
16941unsafe impl Send for PhysicalDeviceImageProcessingFeaturesQCOM {}
16942unsafe impl Sync for PhysicalDeviceImageProcessingFeaturesQCOM {}
16943
16944/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessingPropertiesQCOM.html>
16945#[repr(C)]
16946#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16947pub struct PhysicalDeviceImageProcessingPropertiesQCOM {
16948    pub s_type: StructureType,
16949    pub next: *mut c_void,
16950    pub max_weight_filter_phases: u32,
16951    pub max_weight_filter_dimension: Extent2D,
16952    pub max_block_match_region: Extent2D,
16953    pub max_box_filter_block_size: Extent2D,
16954}
16955
16956impl Default for PhysicalDeviceImageProcessingPropertiesQCOM {
16957    #[inline]
16958    fn default() -> Self {
16959        Self {
16960            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM,
16961            next: ptr::null_mut(),
16962            max_weight_filter_phases: u32::default(),
16963            max_weight_filter_dimension: Extent2D::default(),
16964            max_block_match_region: Extent2D::default(),
16965            max_box_filter_block_size: Extent2D::default(),
16966        }
16967    }
16968}
16969
16970unsafe impl Send for PhysicalDeviceImageProcessingPropertiesQCOM {}
16971unsafe impl Sync for PhysicalDeviceImageProcessingPropertiesQCOM {}
16972
16973/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageRobustnessFeatures.html>
16974#[repr(C)]
16975#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16976pub struct PhysicalDeviceImageRobustnessFeatures {
16977    pub s_type: StructureType,
16978    pub next: *mut c_void,
16979    pub robust_image_access: Bool32,
16980}
16981
16982impl Default for PhysicalDeviceImageRobustnessFeatures {
16983    #[inline]
16984    fn default() -> Self {
16985        Self {
16986            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES,
16987            next: ptr::null_mut(),
16988            robust_image_access: Bool32::default(),
16989        }
16990    }
16991}
16992
16993unsafe impl Send for PhysicalDeviceImageRobustnessFeatures {}
16994unsafe impl Sync for PhysicalDeviceImageRobustnessFeatures {}
16995
16996/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT.html>
16997#[repr(C)]
16998#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16999pub struct PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {
17000    pub s_type: StructureType,
17001    pub next: *mut c_void,
17002    pub image_sliced_view_of_3d: Bool32,
17003}
17004
17005impl Default for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {
17006    #[inline]
17007    fn default() -> Self {
17008        Self {
17009            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT,
17010            next: ptr::null_mut(),
17011            image_sliced_view_of_3d: Bool32::default(),
17012        }
17013    }
17014}
17015
17016unsafe impl Send for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {}
17017unsafe impl Sync for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {}
17018
17019/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageViewImageFormatInfoEXT.html>
17020#[repr(C)]
17021#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17022pub struct PhysicalDeviceImageViewImageFormatInfoEXT {
17023    pub s_type: StructureType,
17024    pub next: *mut c_void,
17025    pub image_view_type: ImageViewType,
17026}
17027
17028impl Default for PhysicalDeviceImageViewImageFormatInfoEXT {
17029    #[inline]
17030    fn default() -> Self {
17031        Self {
17032            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT,
17033            next: ptr::null_mut(),
17034            image_view_type: ImageViewType::default(),
17035        }
17036    }
17037}
17038
17039unsafe impl Send for PhysicalDeviceImageViewImageFormatInfoEXT {}
17040unsafe impl Sync for PhysicalDeviceImageViewImageFormatInfoEXT {}
17041
17042/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageViewMinLodFeaturesEXT.html>
17043#[repr(C)]
17044#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17045pub struct PhysicalDeviceImageViewMinLodFeaturesEXT {
17046    pub s_type: StructureType,
17047    pub next: *mut c_void,
17048    pub min_lod: Bool32,
17049}
17050
17051impl Default for PhysicalDeviceImageViewMinLodFeaturesEXT {
17052    #[inline]
17053    fn default() -> Self {
17054        Self {
17055            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT,
17056            next: ptr::null_mut(),
17057            min_lod: Bool32::default(),
17058        }
17059    }
17060}
17061
17062unsafe impl Send for PhysicalDeviceImageViewMinLodFeaturesEXT {}
17063unsafe impl Sync for PhysicalDeviceImageViewMinLodFeaturesEXT {}
17064
17065/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImagelessFramebufferFeatures.html>
17066#[repr(C)]
17067#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17068pub struct PhysicalDeviceImagelessFramebufferFeatures {
17069    pub s_type: StructureType,
17070    pub next: *mut c_void,
17071    pub imageless_framebuffer: Bool32,
17072}
17073
17074impl Default for PhysicalDeviceImagelessFramebufferFeatures {
17075    #[inline]
17076    fn default() -> Self {
17077        Self {
17078            s_type: StructureType::PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
17079            next: ptr::null_mut(),
17080            imageless_framebuffer: Bool32::default(),
17081        }
17082    }
17083}
17084
17085unsafe impl Send for PhysicalDeviceImagelessFramebufferFeatures {}
17086unsafe impl Sync for PhysicalDeviceImagelessFramebufferFeatures {}
17087
17088/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8Features.html>
17089#[repr(C)]
17090#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17091pub struct PhysicalDeviceIndexTypeUint8Features {
17092    pub s_type: StructureType,
17093    pub next: *mut c_void,
17094    pub index_type_uint8: Bool32,
17095}
17096
17097impl Default for PhysicalDeviceIndexTypeUint8Features {
17098    #[inline]
17099    fn default() -> Self {
17100        Self {
17101            s_type: StructureType::PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES,
17102            next: ptr::null_mut(),
17103            index_type_uint8: Bool32::default(),
17104        }
17105    }
17106}
17107
17108unsafe impl Send for PhysicalDeviceIndexTypeUint8Features {}
17109unsafe impl Sync for PhysicalDeviceIndexTypeUint8Features {}
17110
17111/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.html>
17112#[repr(C)]
17113#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17114pub struct PhysicalDeviceInheritedViewportScissorFeaturesNV {
17115    pub s_type: StructureType,
17116    pub next: *mut c_void,
17117    pub inherited_viewport_scissor_2d: Bool32,
17118}
17119
17120impl Default for PhysicalDeviceInheritedViewportScissorFeaturesNV {
17121    #[inline]
17122    fn default() -> Self {
17123        Self {
17124            s_type: StructureType::PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV,
17125            next: ptr::null_mut(),
17126            inherited_viewport_scissor_2d: Bool32::default(),
17127        }
17128    }
17129}
17130
17131unsafe impl Send for PhysicalDeviceInheritedViewportScissorFeaturesNV {}
17132unsafe impl Sync for PhysicalDeviceInheritedViewportScissorFeaturesNV {}
17133
17134/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockFeatures.html>
17135#[repr(C)]
17136#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17137pub struct PhysicalDeviceInlineUniformBlockFeatures {
17138    pub s_type: StructureType,
17139    pub next: *mut c_void,
17140    pub inline_uniform_block: Bool32,
17141    pub descriptor_binding_inline_uniform_block_update_after_bind: Bool32,
17142}
17143
17144impl Default for PhysicalDeviceInlineUniformBlockFeatures {
17145    #[inline]
17146    fn default() -> Self {
17147        Self {
17148            s_type: StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES,
17149            next: ptr::null_mut(),
17150            inline_uniform_block: Bool32::default(),
17151            descriptor_binding_inline_uniform_block_update_after_bind: Bool32::default(),
17152        }
17153    }
17154}
17155
17156unsafe impl Send for PhysicalDeviceInlineUniformBlockFeatures {}
17157unsafe impl Sync for PhysicalDeviceInlineUniformBlockFeatures {}
17158
17159/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockProperties.html>
17160#[repr(C)]
17161#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17162pub struct PhysicalDeviceInlineUniformBlockProperties {
17163    pub s_type: StructureType,
17164    pub next: *mut c_void,
17165    pub max_inline_uniform_block_size: u32,
17166    pub max_per_stage_descriptor_inline_uniform_blocks: u32,
17167    pub max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32,
17168    pub max_descriptor_set_inline_uniform_blocks: u32,
17169    pub max_descriptor_set_update_after_bind_inline_uniform_blocks: u32,
17170}
17171
17172impl Default for PhysicalDeviceInlineUniformBlockProperties {
17173    #[inline]
17174    fn default() -> Self {
17175        Self {
17176            s_type: StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES,
17177            next: ptr::null_mut(),
17178            max_inline_uniform_block_size: u32::default(),
17179            max_per_stage_descriptor_inline_uniform_blocks: u32::default(),
17180            max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32::default(),
17181            max_descriptor_set_inline_uniform_blocks: u32::default(),
17182            max_descriptor_set_update_after_bind_inline_uniform_blocks: u32::default(),
17183        }
17184    }
17185}
17186
17187unsafe impl Send for PhysicalDeviceInlineUniformBlockProperties {}
17188unsafe impl Sync for PhysicalDeviceInlineUniformBlockProperties {}
17189
17190/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.html>
17191#[repr(C)]
17192#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17193pub struct PhysicalDeviceInvocationMaskFeaturesHUAWEI {
17194    pub s_type: StructureType,
17195    pub next: *mut c_void,
17196    pub invocation_mask: Bool32,
17197}
17198
17199impl Default for PhysicalDeviceInvocationMaskFeaturesHUAWEI {
17200    #[inline]
17201    fn default() -> Self {
17202        Self {
17203            s_type: StructureType::PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI,
17204            next: ptr::null_mut(),
17205            invocation_mask: Bool32::default(),
17206        }
17207    }
17208}
17209
17210unsafe impl Send for PhysicalDeviceInvocationMaskFeaturesHUAWEI {}
17211unsafe impl Sync for PhysicalDeviceInvocationMaskFeaturesHUAWEI {}
17212
17213/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiPropertiesKHR.html>
17214#[repr(C)]
17215#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17216pub struct PhysicalDeviceLayeredApiPropertiesKHR {
17217    pub s_type: StructureType,
17218    pub next: *mut c_void,
17219    pub vendor_id: u32,
17220    pub device_id: u32,
17221    pub layered_api: PhysicalDeviceLayeredApiKHR,
17222    pub device_name: StringArray<MAX_PHYSICAL_DEVICE_NAME_SIZE>,
17223}
17224
17225impl Default for PhysicalDeviceLayeredApiPropertiesKHR {
17226    #[inline]
17227    fn default() -> Self {
17228        Self {
17229            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR,
17230            next: ptr::null_mut(),
17231            vendor_id: u32::default(),
17232            device_id: u32::default(),
17233            layered_api: PhysicalDeviceLayeredApiKHR::default(),
17234            device_name: StringArray::default(),
17235        }
17236    }
17237}
17238
17239unsafe impl Send for PhysicalDeviceLayeredApiPropertiesKHR {}
17240unsafe impl Sync for PhysicalDeviceLayeredApiPropertiesKHR {}
17241
17242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiPropertiesListKHR.html>
17243#[repr(C)]
17244#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17245pub struct PhysicalDeviceLayeredApiPropertiesListKHR {
17246    pub s_type: StructureType,
17247    pub next: *mut c_void,
17248    pub layered_api_count: u32,
17249    pub layered_apis: *mut PhysicalDeviceLayeredApiPropertiesKHR,
17250}
17251
17252impl Default for PhysicalDeviceLayeredApiPropertiesListKHR {
17253    #[inline]
17254    fn default() -> Self {
17255        Self {
17256            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR,
17257            next: ptr::null_mut(),
17258            layered_api_count: u32::default(),
17259            layered_apis: ptr::null_mut(),
17260        }
17261    }
17262}
17263
17264unsafe impl Send for PhysicalDeviceLayeredApiPropertiesListKHR {}
17265unsafe impl Sync for PhysicalDeviceLayeredApiPropertiesListKHR {}
17266
17267/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiVulkanPropertiesKHR.html>
17268#[repr(C)]
17269#[derive(Copy, Clone, Debug, PartialEq)]
17270pub struct PhysicalDeviceLayeredApiVulkanPropertiesKHR {
17271    pub s_type: StructureType,
17272    pub next: *mut c_void,
17273    pub properties: PhysicalDeviceProperties2,
17274}
17275
17276impl Default for PhysicalDeviceLayeredApiVulkanPropertiesKHR {
17277    #[inline]
17278    fn default() -> Self {
17279        Self {
17280            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR,
17281            next: ptr::null_mut(),
17282            properties: PhysicalDeviceProperties2::default(),
17283        }
17284    }
17285}
17286
17287unsafe impl Send for PhysicalDeviceLayeredApiVulkanPropertiesKHR {}
17288unsafe impl Sync for PhysicalDeviceLayeredApiVulkanPropertiesKHR {}
17289
17290/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredDriverPropertiesMSFT.html>
17291#[repr(C)]
17292#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17293pub struct PhysicalDeviceLayeredDriverPropertiesMSFT {
17294    pub s_type: StructureType,
17295    pub next: *mut c_void,
17296    pub underlying_api: LayeredDriverUnderlyingApiMSFT,
17297}
17298
17299impl Default for PhysicalDeviceLayeredDriverPropertiesMSFT {
17300    #[inline]
17301    fn default() -> Self {
17302        Self {
17303            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT,
17304            next: ptr::null_mut(),
17305            underlying_api: LayeredDriverUnderlyingApiMSFT::default(),
17306        }
17307    }
17308}
17309
17310unsafe impl Send for PhysicalDeviceLayeredDriverPropertiesMSFT {}
17311unsafe impl Sync for PhysicalDeviceLayeredDriverPropertiesMSFT {}
17312
17313/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyDitheringFeaturesEXT.html>
17314#[repr(C)]
17315#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17316pub struct PhysicalDeviceLegacyDitheringFeaturesEXT {
17317    pub s_type: StructureType,
17318    pub next: *mut c_void,
17319    pub legacy_dithering: Bool32,
17320}
17321
17322impl Default for PhysicalDeviceLegacyDitheringFeaturesEXT {
17323    #[inline]
17324    fn default() -> Self {
17325        Self {
17326            s_type: StructureType::PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT,
17327            next: ptr::null_mut(),
17328            legacy_dithering: Bool32::default(),
17329        }
17330    }
17331}
17332
17333unsafe impl Send for PhysicalDeviceLegacyDitheringFeaturesEXT {}
17334unsafe impl Sync for PhysicalDeviceLegacyDitheringFeaturesEXT {}
17335
17336/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT.html>
17337#[repr(C)]
17338#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17339pub struct PhysicalDeviceLegacyVertexAttributesFeaturesEXT {
17340    pub s_type: StructureType,
17341    pub next: *mut c_void,
17342    pub legacy_vertex_attributes: Bool32,
17343}
17344
17345impl Default for PhysicalDeviceLegacyVertexAttributesFeaturesEXT {
17346    #[inline]
17347    fn default() -> Self {
17348        Self {
17349            s_type: StructureType::PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT,
17350            next: ptr::null_mut(),
17351            legacy_vertex_attributes: Bool32::default(),
17352        }
17353    }
17354}
17355
17356unsafe impl Send for PhysicalDeviceLegacyVertexAttributesFeaturesEXT {}
17357unsafe impl Sync for PhysicalDeviceLegacyVertexAttributesFeaturesEXT {}
17358
17359/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT.html>
17360#[repr(C)]
17361#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17362pub struct PhysicalDeviceLegacyVertexAttributesPropertiesEXT {
17363    pub s_type: StructureType,
17364    pub next: *mut c_void,
17365    pub native_unaligned_performance: Bool32,
17366}
17367
17368impl Default for PhysicalDeviceLegacyVertexAttributesPropertiesEXT {
17369    #[inline]
17370    fn default() -> Self {
17371        Self {
17372            s_type: StructureType::PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT,
17373            next: ptr::null_mut(),
17374            native_unaligned_performance: Bool32::default(),
17375        }
17376    }
17377}
17378
17379unsafe impl Send for PhysicalDeviceLegacyVertexAttributesPropertiesEXT {}
17380unsafe impl Sync for PhysicalDeviceLegacyVertexAttributesPropertiesEXT {}
17381
17382/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLimits.html>
17383#[repr(C)]
17384#[derive(Copy, Clone, Default, Debug, PartialEq)]
17385pub struct PhysicalDeviceLimits {
17386    pub max_image_dimension_1d: u32,
17387    pub max_image_dimension_2d: u32,
17388    pub max_image_dimension_3d: u32,
17389    pub max_image_dimension_cube: u32,
17390    pub max_image_array_layers: u32,
17391    pub max_texel_buffer_elements: u32,
17392    pub max_uniform_buffer_range: u32,
17393    pub max_storage_buffer_range: u32,
17394    pub max_push_constants_size: u32,
17395    pub max_memory_allocation_count: u32,
17396    pub max_sampler_allocation_count: u32,
17397    pub buffer_image_granularity: DeviceSize,
17398    pub sparse_address_space_size: DeviceSize,
17399    pub max_bound_descriptor_sets: u32,
17400    pub max_per_stage_descriptor_samplers: u32,
17401    pub max_per_stage_descriptor_uniform_buffers: u32,
17402    pub max_per_stage_descriptor_storage_buffers: u32,
17403    pub max_per_stage_descriptor_sampled_images: u32,
17404    pub max_per_stage_descriptor_storage_images: u32,
17405    pub max_per_stage_descriptor_input_attachments: u32,
17406    pub max_per_stage_resources: u32,
17407    pub max_descriptor_set_samplers: u32,
17408    pub max_descriptor_set_uniform_buffers: u32,
17409    pub max_descriptor_set_uniform_buffers_dynamic: u32,
17410    pub max_descriptor_set_storage_buffers: u32,
17411    pub max_descriptor_set_storage_buffers_dynamic: u32,
17412    pub max_descriptor_set_sampled_images: u32,
17413    pub max_descriptor_set_storage_images: u32,
17414    pub max_descriptor_set_input_attachments: u32,
17415    pub max_vertex_input_attributes: u32,
17416    pub max_vertex_input_bindings: u32,
17417    pub max_vertex_input_attribute_offset: u32,
17418    pub max_vertex_input_binding_stride: u32,
17419    pub max_vertex_output_components: u32,
17420    pub max_tessellation_generation_level: u32,
17421    pub max_tessellation_patch_size: u32,
17422    pub max_tessellation_control_per_vertex_input_components: u32,
17423    pub max_tessellation_control_per_vertex_output_components: u32,
17424    pub max_tessellation_control_per_patch_output_components: u32,
17425    pub max_tessellation_control_total_output_components: u32,
17426    pub max_tessellation_evaluation_input_components: u32,
17427    pub max_tessellation_evaluation_output_components: u32,
17428    pub max_geometry_shader_invocations: u32,
17429    pub max_geometry_input_components: u32,
17430    pub max_geometry_output_components: u32,
17431    pub max_geometry_output_vertices: u32,
17432    pub max_geometry_total_output_components: u32,
17433    pub max_fragment_input_components: u32,
17434    pub max_fragment_output_attachments: u32,
17435    pub max_fragment_dual_src_attachments: u32,
17436    pub max_fragment_combined_output_resources: u32,
17437    pub max_compute_shared_memory_size: u32,
17438    pub max_compute_work_group_count: [u32; 3],
17439    pub max_compute_work_group_invocations: u32,
17440    pub max_compute_work_group_size: [u32; 3],
17441    pub sub_pixel_precision_bits: u32,
17442    pub sub_texel_precision_bits: u32,
17443    pub mipmap_precision_bits: u32,
17444    pub max_draw_indexed_index_value: u32,
17445    pub max_draw_indirect_count: u32,
17446    pub max_sampler_lod_bias: f32,
17447    pub max_sampler_anisotropy: f32,
17448    pub max_viewports: u32,
17449    pub max_viewport_dimensions: [u32; 2],
17450    pub viewport_bounds_range: [f32; 2],
17451    pub viewport_sub_pixel_bits: u32,
17452    pub min_memory_map_alignment: usize,
17453    pub min_texel_buffer_offset_alignment: DeviceSize,
17454    pub min_uniform_buffer_offset_alignment: DeviceSize,
17455    pub min_storage_buffer_offset_alignment: DeviceSize,
17456    pub min_texel_offset: i32,
17457    pub max_texel_offset: u32,
17458    pub min_texel_gather_offset: i32,
17459    pub max_texel_gather_offset: u32,
17460    pub min_interpolation_offset: f32,
17461    pub max_interpolation_offset: f32,
17462    pub sub_pixel_interpolation_offset_bits: u32,
17463    pub max_framebuffer_width: u32,
17464    pub max_framebuffer_height: u32,
17465    pub max_framebuffer_layers: u32,
17466    pub framebuffer_color_sample_counts: SampleCountFlags,
17467    pub framebuffer_depth_sample_counts: SampleCountFlags,
17468    pub framebuffer_stencil_sample_counts: SampleCountFlags,
17469    pub framebuffer_no_attachments_sample_counts: SampleCountFlags,
17470    pub max_color_attachments: u32,
17471    pub sampled_image_color_sample_counts: SampleCountFlags,
17472    pub sampled_image_integer_sample_counts: SampleCountFlags,
17473    pub sampled_image_depth_sample_counts: SampleCountFlags,
17474    pub sampled_image_stencil_sample_counts: SampleCountFlags,
17475    pub storage_image_sample_counts: SampleCountFlags,
17476    pub max_sample_mask_words: u32,
17477    pub timestamp_compute_and_graphics: Bool32,
17478    pub timestamp_period: f32,
17479    pub max_clip_distances: u32,
17480    pub max_cull_distances: u32,
17481    pub max_combined_clip_and_cull_distances: u32,
17482    pub discrete_queue_priorities: u32,
17483    pub point_size_range: [f32; 2],
17484    pub line_width_range: [f32; 2],
17485    pub point_size_granularity: f32,
17486    pub line_width_granularity: f32,
17487    pub strict_lines: Bool32,
17488    pub standard_sample_locations: Bool32,
17489    pub optimal_buffer_copy_offset_alignment: DeviceSize,
17490    pub optimal_buffer_copy_row_pitch_alignment: DeviceSize,
17491    pub non_coherent_atom_size: DeviceSize,
17492}
17493
17494/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeatures.html>
17495#[repr(C)]
17496#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17497pub struct PhysicalDeviceLineRasterizationFeatures {
17498    pub s_type: StructureType,
17499    pub next: *mut c_void,
17500    pub rectangular_lines: Bool32,
17501    pub bresenham_lines: Bool32,
17502    pub smooth_lines: Bool32,
17503    pub stippled_rectangular_lines: Bool32,
17504    pub stippled_bresenham_lines: Bool32,
17505    pub stippled_smooth_lines: Bool32,
17506}
17507
17508impl Default for PhysicalDeviceLineRasterizationFeatures {
17509    #[inline]
17510    fn default() -> Self {
17511        Self {
17512            s_type: StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES,
17513            next: ptr::null_mut(),
17514            rectangular_lines: Bool32::default(),
17515            bresenham_lines: Bool32::default(),
17516            smooth_lines: Bool32::default(),
17517            stippled_rectangular_lines: Bool32::default(),
17518            stippled_bresenham_lines: Bool32::default(),
17519            stippled_smooth_lines: Bool32::default(),
17520        }
17521    }
17522}
17523
17524unsafe impl Send for PhysicalDeviceLineRasterizationFeatures {}
17525unsafe impl Sync for PhysicalDeviceLineRasterizationFeatures {}
17526
17527/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationProperties.html>
17528#[repr(C)]
17529#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17530pub struct PhysicalDeviceLineRasterizationProperties {
17531    pub s_type: StructureType,
17532    pub next: *mut c_void,
17533    pub line_sub_pixel_precision_bits: u32,
17534}
17535
17536impl Default for PhysicalDeviceLineRasterizationProperties {
17537    #[inline]
17538    fn default() -> Self {
17539        Self {
17540            s_type: StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES,
17541            next: ptr::null_mut(),
17542            line_sub_pixel_precision_bits: u32::default(),
17543        }
17544    }
17545}
17546
17547unsafe impl Send for PhysicalDeviceLineRasterizationProperties {}
17548unsafe impl Sync for PhysicalDeviceLineRasterizationProperties {}
17549
17550/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLinearColorAttachmentFeaturesNV.html>
17551#[repr(C)]
17552#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17553pub struct PhysicalDeviceLinearColorAttachmentFeaturesNV {
17554    pub s_type: StructureType,
17555    pub next: *mut c_void,
17556    pub linear_color_attachment: Bool32,
17557}
17558
17559impl Default for PhysicalDeviceLinearColorAttachmentFeaturesNV {
17560    #[inline]
17561    fn default() -> Self {
17562        Self {
17563            s_type: StructureType::PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV,
17564            next: ptr::null_mut(),
17565            linear_color_attachment: Bool32::default(),
17566        }
17567    }
17568}
17569
17570unsafe impl Send for PhysicalDeviceLinearColorAttachmentFeaturesNV {}
17571unsafe impl Sync for PhysicalDeviceLinearColorAttachmentFeaturesNV {}
17572
17573/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance10FeaturesKHR.html>
17574#[repr(C)]
17575#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17576pub struct PhysicalDeviceMaintenance10FeaturesKHR {
17577    pub s_type: StructureType,
17578    pub next: *mut c_void,
17579    pub maintenance10: Bool32,
17580}
17581
17582impl Default for PhysicalDeviceMaintenance10FeaturesKHR {
17583    #[inline]
17584    fn default() -> Self {
17585        Self {
17586            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR,
17587            next: ptr::null_mut(),
17588            maintenance10: Bool32::default(),
17589        }
17590    }
17591}
17592
17593unsafe impl Send for PhysicalDeviceMaintenance10FeaturesKHR {}
17594unsafe impl Sync for PhysicalDeviceMaintenance10FeaturesKHR {}
17595
17596/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance10PropertiesKHR.html>
17597#[repr(C)]
17598#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17599pub struct PhysicalDeviceMaintenance10PropertiesKHR {
17600    pub s_type: StructureType,
17601    pub next: *mut c_void,
17602    pub rgba4_opaque_black_swizzled: Bool32,
17603    pub resolve_srgb_format_applies_transfer_function: Bool32,
17604    pub resolve_srgb_format_supports_transfer_function_control: Bool32,
17605}
17606
17607impl Default for PhysicalDeviceMaintenance10PropertiesKHR {
17608    #[inline]
17609    fn default() -> Self {
17610        Self {
17611            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR,
17612            next: ptr::null_mut(),
17613            rgba4_opaque_black_swizzled: Bool32::default(),
17614            resolve_srgb_format_applies_transfer_function: Bool32::default(),
17615            resolve_srgb_format_supports_transfer_function_control: Bool32::default(),
17616        }
17617    }
17618}
17619
17620unsafe impl Send for PhysicalDeviceMaintenance10PropertiesKHR {}
17621unsafe impl Sync for PhysicalDeviceMaintenance10PropertiesKHR {}
17622
17623/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance3Properties.html>
17624#[repr(C)]
17625#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17626pub struct PhysicalDeviceMaintenance3Properties {
17627    pub s_type: StructureType,
17628    pub next: *mut c_void,
17629    pub max_per_set_descriptors: u32,
17630    pub max_memory_allocation_size: DeviceSize,
17631}
17632
17633impl Default for PhysicalDeviceMaintenance3Properties {
17634    #[inline]
17635    fn default() -> Self {
17636        Self {
17637            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
17638            next: ptr::null_mut(),
17639            max_per_set_descriptors: u32::default(),
17640            max_memory_allocation_size: DeviceSize::default(),
17641        }
17642    }
17643}
17644
17645unsafe impl Send for PhysicalDeviceMaintenance3Properties {}
17646unsafe impl Sync for PhysicalDeviceMaintenance3Properties {}
17647
17648/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4Features.html>
17649#[repr(C)]
17650#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17651pub struct PhysicalDeviceMaintenance4Features {
17652    pub s_type: StructureType,
17653    pub next: *mut c_void,
17654    pub maintenance4: Bool32,
17655}
17656
17657impl Default for PhysicalDeviceMaintenance4Features {
17658    #[inline]
17659    fn default() -> Self {
17660        Self {
17661            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES,
17662            next: ptr::null_mut(),
17663            maintenance4: Bool32::default(),
17664        }
17665    }
17666}
17667
17668unsafe impl Send for PhysicalDeviceMaintenance4Features {}
17669unsafe impl Sync for PhysicalDeviceMaintenance4Features {}
17670
17671/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4Properties.html>
17672#[repr(C)]
17673#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17674pub struct PhysicalDeviceMaintenance4Properties {
17675    pub s_type: StructureType,
17676    pub next: *mut c_void,
17677    pub max_buffer_size: DeviceSize,
17678}
17679
17680impl Default for PhysicalDeviceMaintenance4Properties {
17681    #[inline]
17682    fn default() -> Self {
17683        Self {
17684            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES,
17685            next: ptr::null_mut(),
17686            max_buffer_size: DeviceSize::default(),
17687        }
17688    }
17689}
17690
17691unsafe impl Send for PhysicalDeviceMaintenance4Properties {}
17692unsafe impl Sync for PhysicalDeviceMaintenance4Properties {}
17693
17694/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5Features.html>
17695#[repr(C)]
17696#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17697pub struct PhysicalDeviceMaintenance5Features {
17698    pub s_type: StructureType,
17699    pub next: *mut c_void,
17700    pub maintenance5: Bool32,
17701}
17702
17703impl Default for PhysicalDeviceMaintenance5Features {
17704    #[inline]
17705    fn default() -> Self {
17706        Self {
17707            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES,
17708            next: ptr::null_mut(),
17709            maintenance5: Bool32::default(),
17710        }
17711    }
17712}
17713
17714unsafe impl Send for PhysicalDeviceMaintenance5Features {}
17715unsafe impl Sync for PhysicalDeviceMaintenance5Features {}
17716
17717/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5Properties.html>
17718#[repr(C)]
17719#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17720pub struct PhysicalDeviceMaintenance5Properties {
17721    pub s_type: StructureType,
17722    pub next: *mut c_void,
17723    pub early_fragment_multisample_coverage_after_sample_counting: Bool32,
17724    pub early_fragment_sample_mask_test_before_sample_counting: Bool32,
17725    pub depth_stencil_swizzle_one_support: Bool32,
17726    pub polygon_mode_point_size: Bool32,
17727    pub non_strict_single_pixel_wide_lines_use_parallelogram: Bool32,
17728    pub non_strict_wide_lines_use_parallelogram: Bool32,
17729}
17730
17731impl Default for PhysicalDeviceMaintenance5Properties {
17732    #[inline]
17733    fn default() -> Self {
17734        Self {
17735            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES,
17736            next: ptr::null_mut(),
17737            early_fragment_multisample_coverage_after_sample_counting: Bool32::default(),
17738            early_fragment_sample_mask_test_before_sample_counting: Bool32::default(),
17739            depth_stencil_swizzle_one_support: Bool32::default(),
17740            polygon_mode_point_size: Bool32::default(),
17741            non_strict_single_pixel_wide_lines_use_parallelogram: Bool32::default(),
17742            non_strict_wide_lines_use_parallelogram: Bool32::default(),
17743        }
17744    }
17745}
17746
17747unsafe impl Send for PhysicalDeviceMaintenance5Properties {}
17748unsafe impl Sync for PhysicalDeviceMaintenance5Properties {}
17749
17750/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6Features.html>
17751#[repr(C)]
17752#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17753pub struct PhysicalDeviceMaintenance6Features {
17754    pub s_type: StructureType,
17755    pub next: *mut c_void,
17756    pub maintenance6: Bool32,
17757}
17758
17759impl Default for PhysicalDeviceMaintenance6Features {
17760    #[inline]
17761    fn default() -> Self {
17762        Self {
17763            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES,
17764            next: ptr::null_mut(),
17765            maintenance6: Bool32::default(),
17766        }
17767    }
17768}
17769
17770unsafe impl Send for PhysicalDeviceMaintenance6Features {}
17771unsafe impl Sync for PhysicalDeviceMaintenance6Features {}
17772
17773/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6Properties.html>
17774#[repr(C)]
17775#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17776pub struct PhysicalDeviceMaintenance6Properties {
17777    pub s_type: StructureType,
17778    pub next: *mut c_void,
17779    pub block_texel_view_compatible_multiple_layers: Bool32,
17780    pub max_combined_image_sampler_descriptor_count: u32,
17781    pub fragment_shading_rate_clamp_combiner_inputs: Bool32,
17782}
17783
17784impl Default for PhysicalDeviceMaintenance6Properties {
17785    #[inline]
17786    fn default() -> Self {
17787        Self {
17788            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES,
17789            next: ptr::null_mut(),
17790            block_texel_view_compatible_multiple_layers: Bool32::default(),
17791            max_combined_image_sampler_descriptor_count: u32::default(),
17792            fragment_shading_rate_clamp_combiner_inputs: Bool32::default(),
17793        }
17794    }
17795}
17796
17797unsafe impl Send for PhysicalDeviceMaintenance6Properties {}
17798unsafe impl Sync for PhysicalDeviceMaintenance6Properties {}
17799
17800/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance7FeaturesKHR.html>
17801#[repr(C)]
17802#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17803pub struct PhysicalDeviceMaintenance7FeaturesKHR {
17804    pub s_type: StructureType,
17805    pub next: *mut c_void,
17806    pub maintenance7: Bool32,
17807}
17808
17809impl Default for PhysicalDeviceMaintenance7FeaturesKHR {
17810    #[inline]
17811    fn default() -> Self {
17812        Self {
17813            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR,
17814            next: ptr::null_mut(),
17815            maintenance7: Bool32::default(),
17816        }
17817    }
17818}
17819
17820unsafe impl Send for PhysicalDeviceMaintenance7FeaturesKHR {}
17821unsafe impl Sync for PhysicalDeviceMaintenance7FeaturesKHR {}
17822
17823/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance7PropertiesKHR.html>
17824#[repr(C)]
17825#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17826pub struct PhysicalDeviceMaintenance7PropertiesKHR {
17827    pub s_type: StructureType,
17828    pub next: *mut c_void,
17829    pub robust_fragment_shading_rate_attachment_access: Bool32,
17830    pub separate_depth_stencil_attachment_access: Bool32,
17831    pub max_descriptor_set_total_uniform_buffers_dynamic: u32,
17832    pub max_descriptor_set_total_storage_buffers_dynamic: u32,
17833    pub max_descriptor_set_total_buffers_dynamic: u32,
17834    pub max_descriptor_set_update_after_bind_total_uniform_buffers_dynamic: u32,
17835    pub max_descriptor_set_update_after_bind_total_storage_buffers_dynamic: u32,
17836    pub max_descriptor_set_update_after_bind_total_buffers_dynamic: u32,
17837}
17838
17839impl Default for PhysicalDeviceMaintenance7PropertiesKHR {
17840    #[inline]
17841    fn default() -> Self {
17842        Self {
17843            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR,
17844            next: ptr::null_mut(),
17845            robust_fragment_shading_rate_attachment_access: Bool32::default(),
17846            separate_depth_stencil_attachment_access: Bool32::default(),
17847            max_descriptor_set_total_uniform_buffers_dynamic: u32::default(),
17848            max_descriptor_set_total_storage_buffers_dynamic: u32::default(),
17849            max_descriptor_set_total_buffers_dynamic: u32::default(),
17850            max_descriptor_set_update_after_bind_total_uniform_buffers_dynamic: u32::default(),
17851            max_descriptor_set_update_after_bind_total_storage_buffers_dynamic: u32::default(),
17852            max_descriptor_set_update_after_bind_total_buffers_dynamic: u32::default(),
17853        }
17854    }
17855}
17856
17857unsafe impl Send for PhysicalDeviceMaintenance7PropertiesKHR {}
17858unsafe impl Sync for PhysicalDeviceMaintenance7PropertiesKHR {}
17859
17860/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance8FeaturesKHR.html>
17861#[repr(C)]
17862#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17863pub struct PhysicalDeviceMaintenance8FeaturesKHR {
17864    pub s_type: StructureType,
17865    pub next: *mut c_void,
17866    pub maintenance8: Bool32,
17867}
17868
17869impl Default for PhysicalDeviceMaintenance8FeaturesKHR {
17870    #[inline]
17871    fn default() -> Self {
17872        Self {
17873            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR,
17874            next: ptr::null_mut(),
17875            maintenance8: Bool32::default(),
17876        }
17877    }
17878}
17879
17880unsafe impl Send for PhysicalDeviceMaintenance8FeaturesKHR {}
17881unsafe impl Sync for PhysicalDeviceMaintenance8FeaturesKHR {}
17882
17883/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance9FeaturesKHR.html>
17884#[repr(C)]
17885#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17886pub struct PhysicalDeviceMaintenance9FeaturesKHR {
17887    pub s_type: StructureType,
17888    pub next: *mut c_void,
17889    pub maintenance9: Bool32,
17890}
17891
17892impl Default for PhysicalDeviceMaintenance9FeaturesKHR {
17893    #[inline]
17894    fn default() -> Self {
17895        Self {
17896            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR,
17897            next: ptr::null_mut(),
17898            maintenance9: Bool32::default(),
17899        }
17900    }
17901}
17902
17903unsafe impl Send for PhysicalDeviceMaintenance9FeaturesKHR {}
17904unsafe impl Sync for PhysicalDeviceMaintenance9FeaturesKHR {}
17905
17906/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance9PropertiesKHR.html>
17907#[repr(C)]
17908#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17909pub struct PhysicalDeviceMaintenance9PropertiesKHR {
17910    pub s_type: StructureType,
17911    pub next: *mut c_void,
17912    pub image_2d_view_of_3d_sparse: Bool32,
17913    pub default_vertex_attribute_value: DefaultVertexAttributeValueKHR,
17914}
17915
17916impl Default for PhysicalDeviceMaintenance9PropertiesKHR {
17917    #[inline]
17918    fn default() -> Self {
17919        Self {
17920            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR,
17921            next: ptr::null_mut(),
17922            image_2d_view_of_3d_sparse: Bool32::default(),
17923            default_vertex_attribute_value: DefaultVertexAttributeValueKHR::default(),
17924        }
17925    }
17926}
17927
17928unsafe impl Send for PhysicalDeviceMaintenance9PropertiesKHR {}
17929unsafe impl Sync for PhysicalDeviceMaintenance9PropertiesKHR {}
17930
17931/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMapMemoryPlacedFeaturesEXT.html>
17932#[repr(C)]
17933#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17934pub struct PhysicalDeviceMapMemoryPlacedFeaturesEXT {
17935    pub s_type: StructureType,
17936    pub next: *mut c_void,
17937    pub memory_map_placed: Bool32,
17938    pub memory_map_range_placed: Bool32,
17939    pub memory_unmap_reserve: Bool32,
17940}
17941
17942impl Default for PhysicalDeviceMapMemoryPlacedFeaturesEXT {
17943    #[inline]
17944    fn default() -> Self {
17945        Self {
17946            s_type: StructureType::PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT,
17947            next: ptr::null_mut(),
17948            memory_map_placed: Bool32::default(),
17949            memory_map_range_placed: Bool32::default(),
17950            memory_unmap_reserve: Bool32::default(),
17951        }
17952    }
17953}
17954
17955unsafe impl Send for PhysicalDeviceMapMemoryPlacedFeaturesEXT {}
17956unsafe impl Sync for PhysicalDeviceMapMemoryPlacedFeaturesEXT {}
17957
17958/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMapMemoryPlacedPropertiesEXT.html>
17959#[repr(C)]
17960#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17961pub struct PhysicalDeviceMapMemoryPlacedPropertiesEXT {
17962    pub s_type: StructureType,
17963    pub next: *mut c_void,
17964    pub min_placed_memory_map_alignment: DeviceSize,
17965}
17966
17967impl Default for PhysicalDeviceMapMemoryPlacedPropertiesEXT {
17968    #[inline]
17969    fn default() -> Self {
17970        Self {
17971            s_type: StructureType::PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT,
17972            next: ptr::null_mut(),
17973            min_placed_memory_map_alignment: DeviceSize::default(),
17974        }
17975    }
17976}
17977
17978unsafe impl Send for PhysicalDeviceMapMemoryPlacedPropertiesEXT {}
17979unsafe impl Sync for PhysicalDeviceMapMemoryPlacedPropertiesEXT {}
17980
17981/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryBudgetPropertiesEXT.html>
17982#[repr(C)]
17983#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17984pub struct PhysicalDeviceMemoryBudgetPropertiesEXT {
17985    pub s_type: StructureType,
17986    pub next: *mut c_void,
17987    pub heap_budget: [DeviceSize; MAX_MEMORY_HEAPS],
17988    pub heap_usage: [DeviceSize; MAX_MEMORY_HEAPS],
17989}
17990
17991impl Default for PhysicalDeviceMemoryBudgetPropertiesEXT {
17992    #[inline]
17993    fn default() -> Self {
17994        Self {
17995            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT,
17996            next: ptr::null_mut(),
17997            heap_budget: [DeviceSize::default(); MAX_MEMORY_HEAPS],
17998            heap_usage: [DeviceSize::default(); MAX_MEMORY_HEAPS],
17999        }
18000    }
18001}
18002
18003unsafe impl Send for PhysicalDeviceMemoryBudgetPropertiesEXT {}
18004unsafe impl Sync for PhysicalDeviceMemoryBudgetPropertiesEXT {}
18005
18006/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionFeaturesEXT.html>
18007#[repr(C)]
18008#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18009pub struct PhysicalDeviceMemoryDecompressionFeaturesEXT {
18010    pub s_type: StructureType,
18011    pub next: *mut c_void,
18012    pub memory_decompression: Bool32,
18013}
18014
18015impl Default for PhysicalDeviceMemoryDecompressionFeaturesEXT {
18016    #[inline]
18017    fn default() -> Self {
18018        Self {
18019            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT,
18020            next: ptr::null_mut(),
18021            memory_decompression: Bool32::default(),
18022        }
18023    }
18024}
18025
18026unsafe impl Send for PhysicalDeviceMemoryDecompressionFeaturesEXT {}
18027unsafe impl Sync for PhysicalDeviceMemoryDecompressionFeaturesEXT {}
18028
18029/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionPropertiesEXT.html>
18030#[repr(C)]
18031#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18032pub struct PhysicalDeviceMemoryDecompressionPropertiesEXT {
18033    pub s_type: StructureType,
18034    pub next: *mut c_void,
18035    pub decompression_methods: MemoryDecompressionMethodFlagsEXT,
18036    pub max_decompression_indirect_count: u64,
18037}
18038
18039impl Default for PhysicalDeviceMemoryDecompressionPropertiesEXT {
18040    #[inline]
18041    fn default() -> Self {
18042        Self {
18043            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT,
18044            next: ptr::null_mut(),
18045            decompression_methods: MemoryDecompressionMethodFlagsEXT::default(),
18046            max_decompression_indirect_count: u64::default(),
18047        }
18048    }
18049}
18050
18051unsafe impl Send for PhysicalDeviceMemoryDecompressionPropertiesEXT {}
18052unsafe impl Sync for PhysicalDeviceMemoryDecompressionPropertiesEXT {}
18053
18054/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryPriorityFeaturesEXT.html>
18055#[repr(C)]
18056#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18057pub struct PhysicalDeviceMemoryPriorityFeaturesEXT {
18058    pub s_type: StructureType,
18059    pub next: *mut c_void,
18060    pub memory_priority: Bool32,
18061}
18062
18063impl Default for PhysicalDeviceMemoryPriorityFeaturesEXT {
18064    #[inline]
18065    fn default() -> Self {
18066        Self {
18067            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT,
18068            next: ptr::null_mut(),
18069            memory_priority: Bool32::default(),
18070        }
18071    }
18072}
18073
18074unsafe impl Send for PhysicalDeviceMemoryPriorityFeaturesEXT {}
18075unsafe impl Sync for PhysicalDeviceMemoryPriorityFeaturesEXT {}
18076
18077/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties.html>
18078#[repr(C)]
18079#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
18080pub struct PhysicalDeviceMemoryProperties {
18081    pub memory_type_count: u32,
18082    pub memory_types: [MemoryType; MAX_MEMORY_TYPES],
18083    pub memory_heap_count: u32,
18084    pub memory_heaps: [MemoryHeap; MAX_MEMORY_HEAPS],
18085}
18086
18087/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties2.html>
18088#[repr(C)]
18089#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18090pub struct PhysicalDeviceMemoryProperties2 {
18091    pub s_type: StructureType,
18092    pub next: *mut c_void,
18093    pub memory_properties: PhysicalDeviceMemoryProperties,
18094}
18095
18096impl Default for PhysicalDeviceMemoryProperties2 {
18097    #[inline]
18098    fn default() -> Self {
18099        Self {
18100            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
18101            next: ptr::null_mut(),
18102            memory_properties: PhysicalDeviceMemoryProperties::default(),
18103        }
18104    }
18105}
18106
18107unsafe impl Send for PhysicalDeviceMemoryProperties2 {}
18108unsafe impl Sync for PhysicalDeviceMemoryProperties2 {}
18109
18110/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html>
18111#[repr(C)]
18112#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18113pub struct PhysicalDeviceMeshShaderFeaturesEXT {
18114    pub s_type: StructureType,
18115    pub next: *mut c_void,
18116    pub task_shader: Bool32,
18117    pub mesh_shader: Bool32,
18118    pub multiview_mesh_shader: Bool32,
18119    pub primitive_fragment_shading_rate_mesh_shader: Bool32,
18120    pub mesh_shader_queries: Bool32,
18121}
18122
18123impl Default for PhysicalDeviceMeshShaderFeaturesEXT {
18124    #[inline]
18125    fn default() -> Self {
18126        Self {
18127            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT,
18128            next: ptr::null_mut(),
18129            task_shader: Bool32::default(),
18130            mesh_shader: Bool32::default(),
18131            multiview_mesh_shader: Bool32::default(),
18132            primitive_fragment_shading_rate_mesh_shader: Bool32::default(),
18133            mesh_shader_queries: Bool32::default(),
18134        }
18135    }
18136}
18137
18138unsafe impl Send for PhysicalDeviceMeshShaderFeaturesEXT {}
18139unsafe impl Sync for PhysicalDeviceMeshShaderFeaturesEXT {}
18140
18141/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderFeaturesNV.html>
18142#[repr(C)]
18143#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18144pub struct PhysicalDeviceMeshShaderFeaturesNV {
18145    pub s_type: StructureType,
18146    pub next: *mut c_void,
18147    pub task_shader: Bool32,
18148    pub mesh_shader: Bool32,
18149}
18150
18151impl Default for PhysicalDeviceMeshShaderFeaturesNV {
18152    #[inline]
18153    fn default() -> Self {
18154        Self {
18155            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV,
18156            next: ptr::null_mut(),
18157            task_shader: Bool32::default(),
18158            mesh_shader: Bool32::default(),
18159        }
18160    }
18161}
18162
18163unsafe impl Send for PhysicalDeviceMeshShaderFeaturesNV {}
18164unsafe impl Sync for PhysicalDeviceMeshShaderFeaturesNV {}
18165
18166/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html>
18167#[repr(C)]
18168#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18169pub struct PhysicalDeviceMeshShaderPropertiesEXT {
18170    pub s_type: StructureType,
18171    pub next: *mut c_void,
18172    pub max_task_work_group_total_count: u32,
18173    pub max_task_work_group_count: [u32; 3],
18174    pub max_task_work_group_invocations: u32,
18175    pub max_task_work_group_size: [u32; 3],
18176    pub max_task_payload_size: u32,
18177    pub max_task_shared_memory_size: u32,
18178    pub max_task_payload_and_shared_memory_size: u32,
18179    pub max_mesh_work_group_total_count: u32,
18180    pub max_mesh_work_group_count: [u32; 3],
18181    pub max_mesh_work_group_invocations: u32,
18182    pub max_mesh_work_group_size: [u32; 3],
18183    pub max_mesh_shared_memory_size: u32,
18184    pub max_mesh_payload_and_shared_memory_size: u32,
18185    pub max_mesh_output_memory_size: u32,
18186    pub max_mesh_payload_and_output_memory_size: u32,
18187    pub max_mesh_output_components: u32,
18188    pub max_mesh_output_vertices: u32,
18189    pub max_mesh_output_primitives: u32,
18190    pub max_mesh_output_layers: u32,
18191    pub max_mesh_multiview_view_count: u32,
18192    pub mesh_output_per_vertex_granularity: u32,
18193    pub mesh_output_per_primitive_granularity: u32,
18194    pub max_preferred_task_work_group_invocations: u32,
18195    pub max_preferred_mesh_work_group_invocations: u32,
18196    pub prefers_local_invocation_vertex_output: Bool32,
18197    pub prefers_local_invocation_primitive_output: Bool32,
18198    pub prefers_compact_vertex_output: Bool32,
18199    pub prefers_compact_primitive_output: Bool32,
18200}
18201
18202impl Default for PhysicalDeviceMeshShaderPropertiesEXT {
18203    #[inline]
18204    fn default() -> Self {
18205        Self {
18206            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT,
18207            next: ptr::null_mut(),
18208            max_task_work_group_total_count: u32::default(),
18209            max_task_work_group_count: [u32::default(); 3],
18210            max_task_work_group_invocations: u32::default(),
18211            max_task_work_group_size: [u32::default(); 3],
18212            max_task_payload_size: u32::default(),
18213            max_task_shared_memory_size: u32::default(),
18214            max_task_payload_and_shared_memory_size: u32::default(),
18215            max_mesh_work_group_total_count: u32::default(),
18216            max_mesh_work_group_count: [u32::default(); 3],
18217            max_mesh_work_group_invocations: u32::default(),
18218            max_mesh_work_group_size: [u32::default(); 3],
18219            max_mesh_shared_memory_size: u32::default(),
18220            max_mesh_payload_and_shared_memory_size: u32::default(),
18221            max_mesh_output_memory_size: u32::default(),
18222            max_mesh_payload_and_output_memory_size: u32::default(),
18223            max_mesh_output_components: u32::default(),
18224            max_mesh_output_vertices: u32::default(),
18225            max_mesh_output_primitives: u32::default(),
18226            max_mesh_output_layers: u32::default(),
18227            max_mesh_multiview_view_count: u32::default(),
18228            mesh_output_per_vertex_granularity: u32::default(),
18229            mesh_output_per_primitive_granularity: u32::default(),
18230            max_preferred_task_work_group_invocations: u32::default(),
18231            max_preferred_mesh_work_group_invocations: u32::default(),
18232            prefers_local_invocation_vertex_output: Bool32::default(),
18233            prefers_local_invocation_primitive_output: Bool32::default(),
18234            prefers_compact_vertex_output: Bool32::default(),
18235            prefers_compact_primitive_output: Bool32::default(),
18236        }
18237    }
18238}
18239
18240unsafe impl Send for PhysicalDeviceMeshShaderPropertiesEXT {}
18241unsafe impl Sync for PhysicalDeviceMeshShaderPropertiesEXT {}
18242
18243/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderPropertiesNV.html>
18244#[repr(C)]
18245#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18246pub struct PhysicalDeviceMeshShaderPropertiesNV {
18247    pub s_type: StructureType,
18248    pub next: *mut c_void,
18249    pub max_draw_mesh_tasks_count: u32,
18250    pub max_task_work_group_invocations: u32,
18251    pub max_task_work_group_size: [u32; 3],
18252    pub max_task_total_memory_size: u32,
18253    pub max_task_output_count: u32,
18254    pub max_mesh_work_group_invocations: u32,
18255    pub max_mesh_work_group_size: [u32; 3],
18256    pub max_mesh_total_memory_size: u32,
18257    pub max_mesh_output_vertices: u32,
18258    pub max_mesh_output_primitives: u32,
18259    pub max_mesh_multiview_view_count: u32,
18260    pub mesh_output_per_vertex_granularity: u32,
18261    pub mesh_output_per_primitive_granularity: u32,
18262}
18263
18264impl Default for PhysicalDeviceMeshShaderPropertiesNV {
18265    #[inline]
18266    fn default() -> Self {
18267        Self {
18268            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV,
18269            next: ptr::null_mut(),
18270            max_draw_mesh_tasks_count: u32::default(),
18271            max_task_work_group_invocations: u32::default(),
18272            max_task_work_group_size: [u32::default(); 3],
18273            max_task_total_memory_size: u32::default(),
18274            max_task_output_count: u32::default(),
18275            max_mesh_work_group_invocations: u32::default(),
18276            max_mesh_work_group_size: [u32::default(); 3],
18277            max_mesh_total_memory_size: u32::default(),
18278            max_mesh_output_vertices: u32::default(),
18279            max_mesh_output_primitives: u32::default(),
18280            max_mesh_multiview_view_count: u32::default(),
18281            mesh_output_per_vertex_granularity: u32::default(),
18282            mesh_output_per_primitive_granularity: u32::default(),
18283        }
18284    }
18285}
18286
18287unsafe impl Send for PhysicalDeviceMeshShaderPropertiesNV {}
18288unsafe impl Sync for PhysicalDeviceMeshShaderPropertiesNV {}
18289
18290/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiDrawFeaturesEXT.html>
18291#[repr(C)]
18292#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18293pub struct PhysicalDeviceMultiDrawFeaturesEXT {
18294    pub s_type: StructureType,
18295    pub next: *mut c_void,
18296    pub multi_draw: Bool32,
18297}
18298
18299impl Default for PhysicalDeviceMultiDrawFeaturesEXT {
18300    #[inline]
18301    fn default() -> Self {
18302        Self {
18303            s_type: StructureType::PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT,
18304            next: ptr::null_mut(),
18305            multi_draw: Bool32::default(),
18306        }
18307    }
18308}
18309
18310unsafe impl Send for PhysicalDeviceMultiDrawFeaturesEXT {}
18311unsafe impl Sync for PhysicalDeviceMultiDrawFeaturesEXT {}
18312
18313/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiDrawPropertiesEXT.html>
18314#[repr(C)]
18315#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18316pub struct PhysicalDeviceMultiDrawPropertiesEXT {
18317    pub s_type: StructureType,
18318    pub next: *mut c_void,
18319    pub max_multi_draw_count: u32,
18320}
18321
18322impl Default for PhysicalDeviceMultiDrawPropertiesEXT {
18323    #[inline]
18324    fn default() -> Self {
18325        Self {
18326            s_type: StructureType::PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT,
18327            next: ptr::null_mut(),
18328            max_multi_draw_count: u32::default(),
18329        }
18330    }
18331}
18332
18333unsafe impl Send for PhysicalDeviceMultiDrawPropertiesEXT {}
18334unsafe impl Sync for PhysicalDeviceMultiDrawPropertiesEXT {}
18335
18336/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.html>
18337#[repr(C)]
18338#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18339pub struct PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
18340    pub s_type: StructureType,
18341    pub next: *mut c_void,
18342    pub multisampled_render_to_single_sampled: Bool32,
18343}
18344
18345impl Default for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
18346    #[inline]
18347    fn default() -> Self {
18348        Self {
18349            s_type:
18350                StructureType::PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT,
18351            next: ptr::null_mut(),
18352            multisampled_render_to_single_sampled: Bool32::default(),
18353        }
18354    }
18355}
18356
18357unsafe impl Send for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {}
18358unsafe impl Sync for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {}
18359
18360/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewFeatures.html>
18361#[repr(C)]
18362#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18363pub struct PhysicalDeviceMultiviewFeatures {
18364    pub s_type: StructureType,
18365    pub next: *mut c_void,
18366    pub multiview: Bool32,
18367    pub multiview_geometry_shader: Bool32,
18368    pub multiview_tessellation_shader: Bool32,
18369}
18370
18371impl Default for PhysicalDeviceMultiviewFeatures {
18372    #[inline]
18373    fn default() -> Self {
18374        Self {
18375            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
18376            next: ptr::null_mut(),
18377            multiview: Bool32::default(),
18378            multiview_geometry_shader: Bool32::default(),
18379            multiview_tessellation_shader: Bool32::default(),
18380        }
18381    }
18382}
18383
18384unsafe impl Send for PhysicalDeviceMultiviewFeatures {}
18385unsafe impl Sync for PhysicalDeviceMultiviewFeatures {}
18386
18387/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX.html>
18388#[repr(C)]
18389#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18390pub struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
18391    pub s_type: StructureType,
18392    pub next: *mut c_void,
18393    pub per_view_position_all_components: Bool32,
18394}
18395
18396impl Default for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
18397    #[inline]
18398    fn default() -> Self {
18399        Self {
18400            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
18401            next: ptr::null_mut(),
18402            per_view_position_all_components: Bool32::default(),
18403        }
18404    }
18405}
18406
18407unsafe impl Send for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {}
18408unsafe impl Sync for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {}
18409
18410/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM.html>
18411#[repr(C)]
18412#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18413pub struct PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
18414    pub s_type: StructureType,
18415    pub next: *mut c_void,
18416    pub multiview_per_view_render_areas: Bool32,
18417}
18418
18419impl Default for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
18420    #[inline]
18421    fn default() -> Self {
18422        Self {
18423            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM,
18424            next: ptr::null_mut(),
18425            multiview_per_view_render_areas: Bool32::default(),
18426        }
18427    }
18428}
18429
18430unsafe impl Send for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {}
18431unsafe impl Sync for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {}
18432
18433/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM.html>
18434#[repr(C)]
18435#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18436pub struct PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
18437    pub s_type: StructureType,
18438    pub next: *mut c_void,
18439    pub multiview_per_view_viewports: Bool32,
18440}
18441
18442impl Default for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
18443    #[inline]
18444    fn default() -> Self {
18445        Self {
18446            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM,
18447            next: ptr::null_mut(),
18448            multiview_per_view_viewports: Bool32::default(),
18449        }
18450    }
18451}
18452
18453unsafe impl Send for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {}
18454unsafe impl Sync for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {}
18455
18456/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewProperties.html>
18457#[repr(C)]
18458#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18459pub struct PhysicalDeviceMultiviewProperties {
18460    pub s_type: StructureType,
18461    pub next: *mut c_void,
18462    pub max_multiview_view_count: u32,
18463    pub max_multiview_instance_index: u32,
18464}
18465
18466impl Default for PhysicalDeviceMultiviewProperties {
18467    #[inline]
18468    fn default() -> Self {
18469        Self {
18470            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
18471            next: ptr::null_mut(),
18472            max_multiview_view_count: u32::default(),
18473            max_multiview_instance_index: u32::default(),
18474        }
18475    }
18476}
18477
18478unsafe impl Send for PhysicalDeviceMultiviewProperties {}
18479unsafe impl Sync for PhysicalDeviceMultiviewProperties {}
18480
18481/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT.html>
18482#[repr(C)]
18483#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18484pub struct PhysicalDeviceMutableDescriptorTypeFeaturesEXT {
18485    pub s_type: StructureType,
18486    pub next: *mut c_void,
18487    pub mutable_descriptor_type: Bool32,
18488}
18489
18490impl Default for PhysicalDeviceMutableDescriptorTypeFeaturesEXT {
18491    #[inline]
18492    fn default() -> Self {
18493        Self {
18494            s_type: StructureType::PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT,
18495            next: ptr::null_mut(),
18496            mutable_descriptor_type: Bool32::default(),
18497        }
18498    }
18499}
18500
18501unsafe impl Send for PhysicalDeviceMutableDescriptorTypeFeaturesEXT {}
18502unsafe impl Sync for PhysicalDeviceMutableDescriptorTypeFeaturesEXT {}
18503
18504/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceNestedCommandBufferFeaturesEXT.html>
18505#[repr(C)]
18506#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18507pub struct PhysicalDeviceNestedCommandBufferFeaturesEXT {
18508    pub s_type: StructureType,
18509    pub next: *mut c_void,
18510    pub nested_command_buffer: Bool32,
18511    pub nested_command_buffer_rendering: Bool32,
18512    pub nested_command_buffer_simultaneous_use: Bool32,
18513}
18514
18515impl Default for PhysicalDeviceNestedCommandBufferFeaturesEXT {
18516    #[inline]
18517    fn default() -> Self {
18518        Self {
18519            s_type: StructureType::PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT,
18520            next: ptr::null_mut(),
18521            nested_command_buffer: Bool32::default(),
18522            nested_command_buffer_rendering: Bool32::default(),
18523            nested_command_buffer_simultaneous_use: Bool32::default(),
18524        }
18525    }
18526}
18527
18528unsafe impl Send for PhysicalDeviceNestedCommandBufferFeaturesEXT {}
18529unsafe impl Sync for PhysicalDeviceNestedCommandBufferFeaturesEXT {}
18530
18531/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceNestedCommandBufferPropertiesEXT.html>
18532#[repr(C)]
18533#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18534pub struct PhysicalDeviceNestedCommandBufferPropertiesEXT {
18535    pub s_type: StructureType,
18536    pub next: *mut c_void,
18537    pub max_command_buffer_nesting_level: u32,
18538}
18539
18540impl Default for PhysicalDeviceNestedCommandBufferPropertiesEXT {
18541    #[inline]
18542    fn default() -> Self {
18543        Self {
18544            s_type: StructureType::PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT,
18545            next: ptr::null_mut(),
18546            max_command_buffer_nesting_level: u32::default(),
18547        }
18548    }
18549}
18550
18551unsafe impl Send for PhysicalDeviceNestedCommandBufferPropertiesEXT {}
18552unsafe impl Sync for PhysicalDeviceNestedCommandBufferPropertiesEXT {}
18553
18554/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT.html>
18555#[repr(C)]
18556#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18557pub struct PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
18558    pub s_type: StructureType,
18559    pub next: *mut c_void,
18560    pub non_seamless_cube_map: Bool32,
18561}
18562
18563impl Default for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
18564    #[inline]
18565    fn default() -> Self {
18566        Self {
18567            s_type: StructureType::PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT,
18568            next: ptr::null_mut(),
18569            non_seamless_cube_map: Bool32::default(),
18570        }
18571    }
18572}
18573
18574unsafe impl Send for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {}
18575unsafe impl Sync for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {}
18576
18577/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpacityMicromapFeaturesEXT.html>
18578#[repr(C)]
18579#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18580pub struct PhysicalDeviceOpacityMicromapFeaturesEXT {
18581    pub s_type: StructureType,
18582    pub next: *mut c_void,
18583    pub micromap: Bool32,
18584    pub micromap_capture_replay: Bool32,
18585    pub micromap_host_commands: Bool32,
18586}
18587
18588impl Default for PhysicalDeviceOpacityMicromapFeaturesEXT {
18589    #[inline]
18590    fn default() -> Self {
18591        Self {
18592            s_type: StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT,
18593            next: ptr::null_mut(),
18594            micromap: Bool32::default(),
18595            micromap_capture_replay: Bool32::default(),
18596            micromap_host_commands: Bool32::default(),
18597        }
18598    }
18599}
18600
18601unsafe impl Send for PhysicalDeviceOpacityMicromapFeaturesEXT {}
18602unsafe impl Sync for PhysicalDeviceOpacityMicromapFeaturesEXT {}
18603
18604/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpacityMicromapPropertiesEXT.html>
18605#[repr(C)]
18606#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18607pub struct PhysicalDeviceOpacityMicromapPropertiesEXT {
18608    pub s_type: StructureType,
18609    pub next: *mut c_void,
18610    pub max_opacity2_state_subdivision_level: u32,
18611    pub max_opacity4_state_subdivision_level: u32,
18612}
18613
18614impl Default for PhysicalDeviceOpacityMicromapPropertiesEXT {
18615    #[inline]
18616    fn default() -> Self {
18617        Self {
18618            s_type: StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT,
18619            next: ptr::null_mut(),
18620            max_opacity2_state_subdivision_level: u32::default(),
18621            max_opacity4_state_subdivision_level: u32::default(),
18622        }
18623    }
18624}
18625
18626unsafe impl Send for PhysicalDeviceOpacityMicromapPropertiesEXT {}
18627unsafe impl Sync for PhysicalDeviceOpacityMicromapPropertiesEXT {}
18628
18629/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpticalFlowFeaturesNV.html>
18630#[repr(C)]
18631#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18632pub struct PhysicalDeviceOpticalFlowFeaturesNV {
18633    pub s_type: StructureType,
18634    pub next: *mut c_void,
18635    pub optical_flow: Bool32,
18636}
18637
18638impl Default for PhysicalDeviceOpticalFlowFeaturesNV {
18639    #[inline]
18640    fn default() -> Self {
18641        Self {
18642            s_type: StructureType::PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV,
18643            next: ptr::null_mut(),
18644            optical_flow: Bool32::default(),
18645        }
18646    }
18647}
18648
18649unsafe impl Send for PhysicalDeviceOpticalFlowFeaturesNV {}
18650unsafe impl Sync for PhysicalDeviceOpticalFlowFeaturesNV {}
18651
18652/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html>
18653#[repr(C)]
18654#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18655pub struct PhysicalDeviceOpticalFlowPropertiesNV {
18656    pub s_type: StructureType,
18657    pub next: *mut c_void,
18658    pub supported_output_grid_sizes: OpticalFlowGridSizeFlagsNV,
18659    pub supported_hint_grid_sizes: OpticalFlowGridSizeFlagsNV,
18660    pub hint_supported: Bool32,
18661    pub cost_supported: Bool32,
18662    pub bidirectional_flow_supported: Bool32,
18663    pub global_flow_supported: Bool32,
18664    pub min_width: u32,
18665    pub min_height: u32,
18666    pub max_width: u32,
18667    pub max_height: u32,
18668    pub max_num_regions_of_interest: u32,
18669}
18670
18671impl Default for PhysicalDeviceOpticalFlowPropertiesNV {
18672    #[inline]
18673    fn default() -> Self {
18674        Self {
18675            s_type: StructureType::PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV,
18676            next: ptr::null_mut(),
18677            supported_output_grid_sizes: OpticalFlowGridSizeFlagsNV::default(),
18678            supported_hint_grid_sizes: OpticalFlowGridSizeFlagsNV::default(),
18679            hint_supported: Bool32::default(),
18680            cost_supported: Bool32::default(),
18681            bidirectional_flow_supported: Bool32::default(),
18682            global_flow_supported: Bool32::default(),
18683            min_width: u32::default(),
18684            min_height: u32::default(),
18685            max_width: u32::default(),
18686            max_height: u32::default(),
18687            max_num_regions_of_interest: u32::default(),
18688        }
18689    }
18690}
18691
18692unsafe impl Send for PhysicalDeviceOpticalFlowPropertiesNV {}
18693unsafe impl Sync for PhysicalDeviceOpticalFlowPropertiesNV {}
18694
18695/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePCIBusInfoPropertiesEXT.html>
18696#[repr(C)]
18697#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18698pub struct PhysicalDevicePCIBusInfoPropertiesEXT {
18699    pub s_type: StructureType,
18700    pub next: *mut c_void,
18701    pub pci_domain: u32,
18702    pub pci_bus: u32,
18703    pub pci_device: u32,
18704    pub pci_function: u32,
18705}
18706
18707impl Default for PhysicalDevicePCIBusInfoPropertiesEXT {
18708    #[inline]
18709    fn default() -> Self {
18710        Self {
18711            s_type: StructureType::PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT,
18712            next: ptr::null_mut(),
18713            pci_domain: u32::default(),
18714            pci_bus: u32::default(),
18715            pci_device: u32::default(),
18716            pci_function: u32::default(),
18717        }
18718    }
18719}
18720
18721unsafe impl Send for PhysicalDevicePCIBusInfoPropertiesEXT {}
18722unsafe impl Sync for PhysicalDevicePCIBusInfoPropertiesEXT {}
18723
18724/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.html>
18725#[repr(C)]
18726#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18727pub struct PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
18728    pub s_type: StructureType,
18729    pub next: *mut c_void,
18730    pub pageable_device_local_memory: Bool32,
18731}
18732
18733impl Default for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
18734    #[inline]
18735    fn default() -> Self {
18736        Self {
18737            s_type: StructureType::PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT,
18738            next: ptr::null_mut(),
18739            pageable_device_local_memory: Bool32::default(),
18740        }
18741    }
18742}
18743
18744unsafe impl Send for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {}
18745unsafe impl Sync for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {}
18746
18747/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV.html>
18748#[repr(C)]
18749#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18750pub struct PhysicalDevicePartitionedAccelerationStructureFeaturesNV {
18751    pub s_type: StructureType,
18752    pub next: *mut c_void,
18753    pub partitioned_acceleration_structure: Bool32,
18754}
18755
18756impl Default for PhysicalDevicePartitionedAccelerationStructureFeaturesNV {
18757    #[inline]
18758    fn default() -> Self {
18759        Self {
18760            s_type: StructureType::PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV,
18761            next: ptr::null_mut(),
18762            partitioned_acceleration_structure: Bool32::default(),
18763        }
18764    }
18765}
18766
18767unsafe impl Send for PhysicalDevicePartitionedAccelerationStructureFeaturesNV {}
18768unsafe impl Sync for PhysicalDevicePartitionedAccelerationStructureFeaturesNV {}
18769
18770/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV.html>
18771#[repr(C)]
18772#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18773pub struct PhysicalDevicePartitionedAccelerationStructurePropertiesNV {
18774    pub s_type: StructureType,
18775    pub next: *mut c_void,
18776    pub max_partition_count: u32,
18777}
18778
18779impl Default for PhysicalDevicePartitionedAccelerationStructurePropertiesNV {
18780    #[inline]
18781    fn default() -> Self {
18782        Self {
18783            s_type: StructureType::PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV,
18784            next: ptr::null_mut(),
18785            max_partition_count: u32::default(),
18786        }
18787    }
18788}
18789
18790unsafe impl Send for PhysicalDevicePartitionedAccelerationStructurePropertiesNV {}
18791unsafe impl Sync for PhysicalDevicePartitionedAccelerationStructurePropertiesNV {}
18792
18793/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerStageDescriptorSetFeaturesNV.html>
18794#[repr(C)]
18795#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18796pub struct PhysicalDevicePerStageDescriptorSetFeaturesNV {
18797    pub s_type: StructureType,
18798    pub next: *mut c_void,
18799    pub per_stage_descriptor_set: Bool32,
18800    pub dynamic_pipeline_layout: Bool32,
18801}
18802
18803impl Default for PhysicalDevicePerStageDescriptorSetFeaturesNV {
18804    #[inline]
18805    fn default() -> Self {
18806        Self {
18807            s_type: StructureType::PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV,
18808            next: ptr::null_mut(),
18809            per_stage_descriptor_set: Bool32::default(),
18810            dynamic_pipeline_layout: Bool32::default(),
18811        }
18812    }
18813}
18814
18815unsafe impl Send for PhysicalDevicePerStageDescriptorSetFeaturesNV {}
18816unsafe impl Sync for PhysicalDevicePerStageDescriptorSetFeaturesNV {}
18817
18818/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceCountersByRegionFeaturesARM.html>
18819#[repr(C)]
18820#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18821pub struct PhysicalDevicePerformanceCountersByRegionFeaturesARM {
18822    pub s_type: StructureType,
18823    pub next: *mut c_void,
18824    pub performance_counters_by_region: Bool32,
18825}
18826
18827impl Default for PhysicalDevicePerformanceCountersByRegionFeaturesARM {
18828    #[inline]
18829    fn default() -> Self {
18830        Self {
18831            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_COUNTERS_BY_REGION_FEATURES_ARM,
18832            next: ptr::null_mut(),
18833            performance_counters_by_region: Bool32::default(),
18834        }
18835    }
18836}
18837
18838unsafe impl Send for PhysicalDevicePerformanceCountersByRegionFeaturesARM {}
18839unsafe impl Sync for PhysicalDevicePerformanceCountersByRegionFeaturesARM {}
18840
18841/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceCountersByRegionPropertiesARM.html>
18842#[repr(C)]
18843#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18844pub struct PhysicalDevicePerformanceCountersByRegionPropertiesARM {
18845    pub s_type: StructureType,
18846    pub next: *mut c_void,
18847    pub max_per_region_performance_counters: u32,
18848    pub performance_counter_region_size: Extent2D,
18849    pub row_stride_alignment: u32,
18850    pub region_alignment: u32,
18851    pub identity_transform_order: Bool32,
18852}
18853
18854impl Default for PhysicalDevicePerformanceCountersByRegionPropertiesARM {
18855    #[inline]
18856    fn default() -> Self {
18857        Self {
18858            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_COUNTERS_BY_REGION_PROPERTIES_ARM,
18859            next: ptr::null_mut(),
18860            max_per_region_performance_counters: u32::default(),
18861            performance_counter_region_size: Extent2D::default(),
18862            row_stride_alignment: u32::default(),
18863            region_alignment: u32::default(),
18864            identity_transform_order: Bool32::default(),
18865        }
18866    }
18867}
18868
18869unsafe impl Send for PhysicalDevicePerformanceCountersByRegionPropertiesARM {}
18870unsafe impl Sync for PhysicalDevicePerformanceCountersByRegionPropertiesARM {}
18871
18872/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceQueryFeaturesKHR.html>
18873#[repr(C)]
18874#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18875pub struct PhysicalDevicePerformanceQueryFeaturesKHR {
18876    pub s_type: StructureType,
18877    pub next: *mut c_void,
18878    pub performance_counter_query_pools: Bool32,
18879    pub performance_counter_multiple_query_pools: Bool32,
18880}
18881
18882impl Default for PhysicalDevicePerformanceQueryFeaturesKHR {
18883    #[inline]
18884    fn default() -> Self {
18885        Self {
18886            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR,
18887            next: ptr::null_mut(),
18888            performance_counter_query_pools: Bool32::default(),
18889            performance_counter_multiple_query_pools: Bool32::default(),
18890        }
18891    }
18892}
18893
18894unsafe impl Send for PhysicalDevicePerformanceQueryFeaturesKHR {}
18895unsafe impl Sync for PhysicalDevicePerformanceQueryFeaturesKHR {}
18896
18897/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceQueryPropertiesKHR.html>
18898#[repr(C)]
18899#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18900pub struct PhysicalDevicePerformanceQueryPropertiesKHR {
18901    pub s_type: StructureType,
18902    pub next: *mut c_void,
18903    pub allow_command_buffer_query_copies: Bool32,
18904}
18905
18906impl Default for PhysicalDevicePerformanceQueryPropertiesKHR {
18907    #[inline]
18908    fn default() -> Self {
18909        Self {
18910            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR,
18911            next: ptr::null_mut(),
18912            allow_command_buffer_query_copies: Bool32::default(),
18913        }
18914    }
18915}
18916
18917unsafe impl Send for PhysicalDevicePerformanceQueryPropertiesKHR {}
18918unsafe impl Sync for PhysicalDevicePerformanceQueryPropertiesKHR {}
18919
18920/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineBinaryFeaturesKHR.html>
18921#[repr(C)]
18922#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18923pub struct PhysicalDevicePipelineBinaryFeaturesKHR {
18924    pub s_type: StructureType,
18925    pub next: *mut c_void,
18926    pub pipeline_binaries: Bool32,
18927}
18928
18929impl Default for PhysicalDevicePipelineBinaryFeaturesKHR {
18930    #[inline]
18931    fn default() -> Self {
18932        Self {
18933            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR,
18934            next: ptr::null_mut(),
18935            pipeline_binaries: Bool32::default(),
18936        }
18937    }
18938}
18939
18940unsafe impl Send for PhysicalDevicePipelineBinaryFeaturesKHR {}
18941unsafe impl Sync for PhysicalDevicePipelineBinaryFeaturesKHR {}
18942
18943/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineBinaryPropertiesKHR.html>
18944#[repr(C)]
18945#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18946pub struct PhysicalDevicePipelineBinaryPropertiesKHR {
18947    pub s_type: StructureType,
18948    pub next: *mut c_void,
18949    pub pipeline_binary_internal_cache: Bool32,
18950    pub pipeline_binary_internal_cache_control: Bool32,
18951    pub pipeline_binary_prefers_internal_cache: Bool32,
18952    pub pipeline_binary_precompiled_internal_cache: Bool32,
18953    pub pipeline_binary_compressed_data: Bool32,
18954}
18955
18956impl Default for PhysicalDevicePipelineBinaryPropertiesKHR {
18957    #[inline]
18958    fn default() -> Self {
18959        Self {
18960            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR,
18961            next: ptr::null_mut(),
18962            pipeline_binary_internal_cache: Bool32::default(),
18963            pipeline_binary_internal_cache_control: Bool32::default(),
18964            pipeline_binary_prefers_internal_cache: Bool32::default(),
18965            pipeline_binary_precompiled_internal_cache: Bool32::default(),
18966            pipeline_binary_compressed_data: Bool32::default(),
18967        }
18968    }
18969}
18970
18971unsafe impl Send for PhysicalDevicePipelineBinaryPropertiesKHR {}
18972unsafe impl Sync for PhysicalDevicePipelineBinaryPropertiesKHR {}
18973
18974/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC.html>
18975#[repr(C)]
18976#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18977pub struct PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {
18978    pub s_type: StructureType,
18979    pub next: *mut c_void,
18980    pub pipeline_cache_incremental_mode: Bool32,
18981}
18982
18983impl Default for PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {
18984    #[inline]
18985    fn default() -> Self {
18986        Self {
18987            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC,
18988            next: ptr::null_mut(),
18989            pipeline_cache_incremental_mode: Bool32::default(),
18990        }
18991    }
18992}
18993
18994unsafe impl Send for PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {}
18995unsafe impl Sync for PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {}
18996
18997/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCreationCacheControlFeatures.html>
18998#[repr(C)]
18999#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19000pub struct PhysicalDevicePipelineCreationCacheControlFeatures {
19001    pub s_type: StructureType,
19002    pub next: *mut c_void,
19003    pub pipeline_creation_cache_control: Bool32,
19004}
19005
19006impl Default for PhysicalDevicePipelineCreationCacheControlFeatures {
19007    #[inline]
19008    fn default() -> Self {
19009        Self {
19010            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES,
19011            next: ptr::null_mut(),
19012            pipeline_creation_cache_control: Bool32::default(),
19013        }
19014    }
19015}
19016
19017unsafe impl Send for PhysicalDevicePipelineCreationCacheControlFeatures {}
19018unsafe impl Sync for PhysicalDevicePipelineCreationCacheControlFeatures {}
19019
19020/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.html>
19021#[repr(C)]
19022#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19023pub struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
19024    pub s_type: StructureType,
19025    pub next: *mut c_void,
19026    pub pipeline_executable_info: Bool32,
19027}
19028
19029impl Default for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
19030    #[inline]
19031    fn default() -> Self {
19032        Self {
19033            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR,
19034            next: ptr::null_mut(),
19035            pipeline_executable_info: Bool32::default(),
19036        }
19037    }
19038}
19039
19040unsafe impl Send for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {}
19041unsafe impl Sync for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {}
19042
19043/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.html>
19044#[repr(C)]
19045#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19046pub struct PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
19047    pub s_type: StructureType,
19048    pub next: *mut c_void,
19049    pub pipeline_library_group_handles: Bool32,
19050}
19051
19052impl Default for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
19053    #[inline]
19054    fn default() -> Self {
19055        Self {
19056            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT,
19057            next: ptr::null_mut(),
19058            pipeline_library_group_handles: Bool32::default(),
19059        }
19060    }
19061}
19062
19063unsafe impl Send for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {}
19064unsafe impl Sync for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {}
19065
19066/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineOpacityMicromapFeaturesARM.html>
19067#[repr(C)]
19068#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19069pub struct PhysicalDevicePipelineOpacityMicromapFeaturesARM {
19070    pub s_type: StructureType,
19071    pub next: *mut c_void,
19072    pub pipeline_opacity_micromap: Bool32,
19073}
19074
19075impl Default for PhysicalDevicePipelineOpacityMicromapFeaturesARM {
19076    #[inline]
19077    fn default() -> Self {
19078        Self {
19079            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM,
19080            next: ptr::null_mut(),
19081            pipeline_opacity_micromap: Bool32::default(),
19082        }
19083    }
19084}
19085
19086unsafe impl Send for PhysicalDevicePipelineOpacityMicromapFeaturesARM {}
19087unsafe impl Sync for PhysicalDevicePipelineOpacityMicromapFeaturesARM {}
19088
19089/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelinePropertiesFeaturesEXT.html>
19090#[repr(C)]
19091#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19092pub struct PhysicalDevicePipelinePropertiesFeaturesEXT {
19093    pub s_type: StructureType,
19094    pub next: *mut c_void,
19095    pub pipeline_properties_identifier: Bool32,
19096}
19097
19098impl Default for PhysicalDevicePipelinePropertiesFeaturesEXT {
19099    #[inline]
19100    fn default() -> Self {
19101        Self {
19102            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT,
19103            next: ptr::null_mut(),
19104            pipeline_properties_identifier: Bool32::default(),
19105        }
19106    }
19107}
19108
19109unsafe impl Send for PhysicalDevicePipelinePropertiesFeaturesEXT {}
19110unsafe impl Sync for PhysicalDevicePipelinePropertiesFeaturesEXT {}
19111
19112/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineProtectedAccessFeatures.html>
19113#[repr(C)]
19114#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19115pub struct PhysicalDevicePipelineProtectedAccessFeatures {
19116    pub s_type: StructureType,
19117    pub next: *mut c_void,
19118    pub pipeline_protected_access: Bool32,
19119}
19120
19121impl Default for PhysicalDevicePipelineProtectedAccessFeatures {
19122    #[inline]
19123    fn default() -> Self {
19124        Self {
19125            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES,
19126            next: ptr::null_mut(),
19127            pipeline_protected_access: Bool32::default(),
19128        }
19129    }
19130}
19131
19132unsafe impl Send for PhysicalDevicePipelineProtectedAccessFeatures {}
19133unsafe impl Sync for PhysicalDevicePipelineProtectedAccessFeatures {}
19134
19135/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessFeatures.html>
19136#[repr(C)]
19137#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19138pub struct PhysicalDevicePipelineRobustnessFeatures {
19139    pub s_type: StructureType,
19140    pub next: *mut c_void,
19141    pub pipeline_robustness: Bool32,
19142}
19143
19144impl Default for PhysicalDevicePipelineRobustnessFeatures {
19145    #[inline]
19146    fn default() -> Self {
19147        Self {
19148            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES,
19149            next: ptr::null_mut(),
19150            pipeline_robustness: Bool32::default(),
19151        }
19152    }
19153}
19154
19155unsafe impl Send for PhysicalDevicePipelineRobustnessFeatures {}
19156unsafe impl Sync for PhysicalDevicePipelineRobustnessFeatures {}
19157
19158/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessProperties.html>
19159#[repr(C)]
19160#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19161pub struct PhysicalDevicePipelineRobustnessProperties {
19162    pub s_type: StructureType,
19163    pub next: *mut c_void,
19164    pub default_robustness_storage_buffers: PipelineRobustnessBufferBehavior,
19165    pub default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior,
19166    pub default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior,
19167    pub default_robustness_images: PipelineRobustnessImageBehavior,
19168}
19169
19170impl Default for PhysicalDevicePipelineRobustnessProperties {
19171    #[inline]
19172    fn default() -> Self {
19173        Self {
19174            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES,
19175            next: ptr::null_mut(),
19176            default_robustness_storage_buffers: PipelineRobustnessBufferBehavior::default(),
19177            default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior::default(),
19178            default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior::default(),
19179            default_robustness_images: PipelineRobustnessImageBehavior::default(),
19180        }
19181    }
19182}
19183
19184unsafe impl Send for PhysicalDevicePipelineRobustnessProperties {}
19185unsafe impl Sync for PhysicalDevicePipelineRobustnessProperties {}
19186
19187/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePointClippingProperties.html>
19188#[repr(C)]
19189#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19190pub struct PhysicalDevicePointClippingProperties {
19191    pub s_type: StructureType,
19192    pub next: *mut c_void,
19193    pub point_clipping_behavior: PointClippingBehavior,
19194}
19195
19196impl Default for PhysicalDevicePointClippingProperties {
19197    #[inline]
19198    fn default() -> Self {
19199        Self {
19200            s_type: StructureType::PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
19201            next: ptr::null_mut(),
19202            point_clipping_behavior: PointClippingBehavior::default(),
19203        }
19204    }
19205}
19206
19207unsafe impl Send for PhysicalDevicePointClippingProperties {}
19208unsafe impl Sync for PhysicalDevicePointClippingProperties {}
19209
19210/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html>
19211#[repr(C)]
19212#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19213pub struct PhysicalDevicePortabilitySubsetFeaturesKHR {
19214    pub s_type: StructureType,
19215    pub next: *mut c_void,
19216    pub constant_alpha_color_blend_factors: Bool32,
19217    pub events: Bool32,
19218    pub image_view_format_reinterpretation: Bool32,
19219    pub image_view_format_swizzle: Bool32,
19220    pub image_view_2d_on_3d_image: Bool32,
19221    pub multisample_array_image: Bool32,
19222    pub mutable_comparison_samplers: Bool32,
19223    pub point_polygons: Bool32,
19224    pub sampler_mip_lod_bias: Bool32,
19225    pub separate_stencil_mask_ref: Bool32,
19226    pub shader_sample_rate_interpolation_functions: Bool32,
19227    pub tessellation_isolines: Bool32,
19228    pub tessellation_point_mode: Bool32,
19229    pub triangle_fans: Bool32,
19230    pub vertex_attribute_access_beyond_stride: Bool32,
19231}
19232
19233impl Default for PhysicalDevicePortabilitySubsetFeaturesKHR {
19234    #[inline]
19235    fn default() -> Self {
19236        Self {
19237            s_type: StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR,
19238            next: ptr::null_mut(),
19239            constant_alpha_color_blend_factors: Bool32::default(),
19240            events: Bool32::default(),
19241            image_view_format_reinterpretation: Bool32::default(),
19242            image_view_format_swizzle: Bool32::default(),
19243            image_view_2d_on_3d_image: Bool32::default(),
19244            multisample_array_image: Bool32::default(),
19245            mutable_comparison_samplers: Bool32::default(),
19246            point_polygons: Bool32::default(),
19247            sampler_mip_lod_bias: Bool32::default(),
19248            separate_stencil_mask_ref: Bool32::default(),
19249            shader_sample_rate_interpolation_functions: Bool32::default(),
19250            tessellation_isolines: Bool32::default(),
19251            tessellation_point_mode: Bool32::default(),
19252            triangle_fans: Bool32::default(),
19253            vertex_attribute_access_beyond_stride: Bool32::default(),
19254        }
19255    }
19256}
19257
19258unsafe impl Send for PhysicalDevicePortabilitySubsetFeaturesKHR {}
19259unsafe impl Sync for PhysicalDevicePortabilitySubsetFeaturesKHR {}
19260
19261/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePortabilitySubsetPropertiesKHR.html>
19262#[repr(C)]
19263#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19264pub struct PhysicalDevicePortabilitySubsetPropertiesKHR {
19265    pub s_type: StructureType,
19266    pub next: *mut c_void,
19267    pub min_vertex_input_binding_stride_alignment: u32,
19268}
19269
19270impl Default for PhysicalDevicePortabilitySubsetPropertiesKHR {
19271    #[inline]
19272    fn default() -> Self {
19273        Self {
19274            s_type: StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR,
19275            next: ptr::null_mut(),
19276            min_vertex_input_binding_stride_alignment: u32::default(),
19277        }
19278    }
19279}
19280
19281unsafe impl Send for PhysicalDevicePortabilitySubsetPropertiesKHR {}
19282unsafe impl Sync for PhysicalDevicePortabilitySubsetPropertiesKHR {}
19283
19284/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentBarrierFeaturesNV.html>
19285#[repr(C)]
19286#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19287pub struct PhysicalDevicePresentBarrierFeaturesNV {
19288    pub s_type: StructureType,
19289    pub next: *mut c_void,
19290    pub present_barrier: Bool32,
19291}
19292
19293impl Default for PhysicalDevicePresentBarrierFeaturesNV {
19294    #[inline]
19295    fn default() -> Self {
19296        Self {
19297            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV,
19298            next: ptr::null_mut(),
19299            present_barrier: Bool32::default(),
19300        }
19301    }
19302}
19303
19304unsafe impl Send for PhysicalDevicePresentBarrierFeaturesNV {}
19305unsafe impl Sync for PhysicalDevicePresentBarrierFeaturesNV {}
19306
19307/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentId2FeaturesKHR.html>
19308#[repr(C)]
19309#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19310pub struct PhysicalDevicePresentId2FeaturesKHR {
19311    pub s_type: StructureType,
19312    pub next: *mut c_void,
19313    pub present_id2: Bool32,
19314}
19315
19316impl Default for PhysicalDevicePresentId2FeaturesKHR {
19317    #[inline]
19318    fn default() -> Self {
19319        Self {
19320            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR,
19321            next: ptr::null_mut(),
19322            present_id2: Bool32::default(),
19323        }
19324    }
19325}
19326
19327unsafe impl Send for PhysicalDevicePresentId2FeaturesKHR {}
19328unsafe impl Sync for PhysicalDevicePresentId2FeaturesKHR {}
19329
19330/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentIdFeaturesKHR.html>
19331#[repr(C)]
19332#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19333pub struct PhysicalDevicePresentIdFeaturesKHR {
19334    pub s_type: StructureType,
19335    pub next: *mut c_void,
19336    pub present_id: Bool32,
19337}
19338
19339impl Default for PhysicalDevicePresentIdFeaturesKHR {
19340    #[inline]
19341    fn default() -> Self {
19342        Self {
19343            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR,
19344            next: ptr::null_mut(),
19345            present_id: Bool32::default(),
19346        }
19347    }
19348}
19349
19350unsafe impl Send for PhysicalDevicePresentIdFeaturesKHR {}
19351unsafe impl Sync for PhysicalDevicePresentIdFeaturesKHR {}
19352
19353/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentMeteringFeaturesNV.html>
19354#[repr(C)]
19355#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19356pub struct PhysicalDevicePresentMeteringFeaturesNV {
19357    pub s_type: StructureType,
19358    pub next: *mut c_void,
19359    pub present_metering: Bool32,
19360}
19361
19362impl Default for PhysicalDevicePresentMeteringFeaturesNV {
19363    #[inline]
19364    fn default() -> Self {
19365        Self {
19366            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV,
19367            next: ptr::null_mut(),
19368            present_metering: Bool32::default(),
19369        }
19370    }
19371}
19372
19373unsafe impl Send for PhysicalDevicePresentMeteringFeaturesNV {}
19374unsafe impl Sync for PhysicalDevicePresentMeteringFeaturesNV {}
19375
19376/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR.html>
19377#[repr(C)]
19378#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19379pub struct PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {
19380    pub s_type: StructureType,
19381    pub next: *mut c_void,
19382    pub present_mode_fifo_latest_ready: Bool32,
19383}
19384
19385impl Default for PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {
19386    #[inline]
19387    fn default() -> Self {
19388        Self {
19389            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR,
19390            next: ptr::null_mut(),
19391            present_mode_fifo_latest_ready: Bool32::default(),
19392        }
19393    }
19394}
19395
19396unsafe impl Send for PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {}
19397unsafe impl Sync for PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {}
19398
19399/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentWait2FeaturesKHR.html>
19400#[repr(C)]
19401#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19402pub struct PhysicalDevicePresentWait2FeaturesKHR {
19403    pub s_type: StructureType,
19404    pub next: *mut c_void,
19405    pub present_wait2: Bool32,
19406}
19407
19408impl Default for PhysicalDevicePresentWait2FeaturesKHR {
19409    #[inline]
19410    fn default() -> Self {
19411        Self {
19412            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR,
19413            next: ptr::null_mut(),
19414            present_wait2: Bool32::default(),
19415        }
19416    }
19417}
19418
19419unsafe impl Send for PhysicalDevicePresentWait2FeaturesKHR {}
19420unsafe impl Sync for PhysicalDevicePresentWait2FeaturesKHR {}
19421
19422/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentWaitFeaturesKHR.html>
19423#[repr(C)]
19424#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19425pub struct PhysicalDevicePresentWaitFeaturesKHR {
19426    pub s_type: StructureType,
19427    pub next: *mut c_void,
19428    pub present_wait: Bool32,
19429}
19430
19431impl Default for PhysicalDevicePresentWaitFeaturesKHR {
19432    #[inline]
19433    fn default() -> Self {
19434        Self {
19435            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR,
19436            next: ptr::null_mut(),
19437            present_wait: Bool32::default(),
19438        }
19439    }
19440}
19441
19442unsafe impl Send for PhysicalDevicePresentWaitFeaturesKHR {}
19443unsafe impl Sync for PhysicalDevicePresentWaitFeaturesKHR {}
19444
19445/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentationPropertiesOHOS.html>
19446#[repr(C)]
19447#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19448pub struct PhysicalDevicePresentationPropertiesOHOS {
19449    pub s_type: StructureType,
19450    pub next: *mut c_void,
19451    pub shared_image: Bool32,
19452}
19453
19454impl Default for PhysicalDevicePresentationPropertiesOHOS {
19455    #[inline]
19456    fn default() -> Self {
19457        Self {
19458            s_type: StructureType::PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_OHOS,
19459            next: ptr::null_mut(),
19460            shared_image: Bool32::default(),
19461        }
19462    }
19463}
19464
19465unsafe impl Send for PhysicalDevicePresentationPropertiesOHOS {}
19466unsafe impl Sync for PhysicalDevicePresentationPropertiesOHOS {}
19467
19468/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.html>
19469#[repr(C)]
19470#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19471pub struct PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
19472    pub s_type: StructureType,
19473    pub next: *mut c_void,
19474    pub primitive_topology_list_restart: Bool32,
19475    pub primitive_topology_patch_list_restart: Bool32,
19476}
19477
19478impl Default for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
19479    #[inline]
19480    fn default() -> Self {
19481        Self {
19482            s_type: StructureType::PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT,
19483            next: ptr::null_mut(),
19484            primitive_topology_list_restart: Bool32::default(),
19485            primitive_topology_patch_list_restart: Bool32::default(),
19486        }
19487    }
19488}
19489
19490unsafe impl Send for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {}
19491unsafe impl Sync for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {}
19492
19493/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.html>
19494#[repr(C)]
19495#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19496pub struct PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
19497    pub s_type: StructureType,
19498    pub next: *mut c_void,
19499    pub primitives_generated_query: Bool32,
19500    pub primitives_generated_query_with_rasterizer_discard: Bool32,
19501    pub primitives_generated_query_with_non_zero_streams: Bool32,
19502}
19503
19504impl Default for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
19505    #[inline]
19506    fn default() -> Self {
19507        Self {
19508            s_type: StructureType::PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT,
19509            next: ptr::null_mut(),
19510            primitives_generated_query: Bool32::default(),
19511            primitives_generated_query_with_rasterizer_discard: Bool32::default(),
19512            primitives_generated_query_with_non_zero_streams: Bool32::default(),
19513        }
19514    }
19515}
19516
19517unsafe impl Send for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {}
19518unsafe impl Sync for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {}
19519
19520/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrivateDataFeatures.html>
19521#[repr(C)]
19522#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19523pub struct PhysicalDevicePrivateDataFeatures {
19524    pub s_type: StructureType,
19525    pub next: *mut c_void,
19526    pub private_data: Bool32,
19527}
19528
19529impl Default for PhysicalDevicePrivateDataFeatures {
19530    #[inline]
19531    fn default() -> Self {
19532        Self {
19533            s_type: StructureType::PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES,
19534            next: ptr::null_mut(),
19535            private_data: Bool32::default(),
19536        }
19537    }
19538}
19539
19540unsafe impl Send for PhysicalDevicePrivateDataFeatures {}
19541unsafe impl Sync for PhysicalDevicePrivateDataFeatures {}
19542
19543/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties.html>
19544#[repr(C)]
19545#[derive(Copy, Clone, Default, Debug, PartialEq)]
19546pub struct PhysicalDeviceProperties {
19547    pub api_version: u32,
19548    pub driver_version: u32,
19549    pub vendor_id: u32,
19550    pub device_id: u32,
19551    pub device_type: PhysicalDeviceType,
19552    pub device_name: StringArray<MAX_PHYSICAL_DEVICE_NAME_SIZE>,
19553    pub pipeline_cache_uuid: ByteArray<UUID_SIZE>,
19554    pub limits: PhysicalDeviceLimits,
19555    pub sparse_properties: PhysicalDeviceSparseProperties,
19556}
19557
19558/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties2.html>
19559#[repr(C)]
19560#[derive(Copy, Clone, Debug, PartialEq)]
19561pub struct PhysicalDeviceProperties2 {
19562    pub s_type: StructureType,
19563    pub next: *mut c_void,
19564    pub properties: PhysicalDeviceProperties,
19565}
19566
19567impl Default for PhysicalDeviceProperties2 {
19568    #[inline]
19569    fn default() -> Self {
19570        Self {
19571            s_type: StructureType::PHYSICAL_DEVICE_PROPERTIES_2,
19572            next: ptr::null_mut(),
19573            properties: PhysicalDeviceProperties::default(),
19574        }
19575    }
19576}
19577
19578unsafe impl Send for PhysicalDeviceProperties2 {}
19579unsafe impl Sync for PhysicalDeviceProperties2 {}
19580
19581/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProtectedMemoryFeatures.html>
19582#[repr(C)]
19583#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19584pub struct PhysicalDeviceProtectedMemoryFeatures {
19585    pub s_type: StructureType,
19586    pub next: *mut c_void,
19587    pub protected_memory: Bool32,
19588}
19589
19590impl Default for PhysicalDeviceProtectedMemoryFeatures {
19591    #[inline]
19592    fn default() -> Self {
19593        Self {
19594            s_type: StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES,
19595            next: ptr::null_mut(),
19596            protected_memory: Bool32::default(),
19597        }
19598    }
19599}
19600
19601unsafe impl Send for PhysicalDeviceProtectedMemoryFeatures {}
19602unsafe impl Sync for PhysicalDeviceProtectedMemoryFeatures {}
19603
19604/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProtectedMemoryProperties.html>
19605#[repr(C)]
19606#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19607pub struct PhysicalDeviceProtectedMemoryProperties {
19608    pub s_type: StructureType,
19609    pub next: *mut c_void,
19610    pub protected_no_fault: Bool32,
19611}
19612
19613impl Default for PhysicalDeviceProtectedMemoryProperties {
19614    #[inline]
19615    fn default() -> Self {
19616        Self {
19617            s_type: StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES,
19618            next: ptr::null_mut(),
19619            protected_no_fault: Bool32::default(),
19620        }
19621    }
19622}
19623
19624unsafe impl Send for PhysicalDeviceProtectedMemoryProperties {}
19625unsafe impl Sync for PhysicalDeviceProtectedMemoryProperties {}
19626
19627/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProvokingVertexFeaturesEXT.html>
19628#[repr(C)]
19629#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19630pub struct PhysicalDeviceProvokingVertexFeaturesEXT {
19631    pub s_type: StructureType,
19632    pub next: *mut c_void,
19633    pub provoking_vertex_last: Bool32,
19634    pub transform_feedback_preserves_provoking_vertex: Bool32,
19635}
19636
19637impl Default for PhysicalDeviceProvokingVertexFeaturesEXT {
19638    #[inline]
19639    fn default() -> Self {
19640        Self {
19641            s_type: StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT,
19642            next: ptr::null_mut(),
19643            provoking_vertex_last: Bool32::default(),
19644            transform_feedback_preserves_provoking_vertex: Bool32::default(),
19645        }
19646    }
19647}
19648
19649unsafe impl Send for PhysicalDeviceProvokingVertexFeaturesEXT {}
19650unsafe impl Sync for PhysicalDeviceProvokingVertexFeaturesEXT {}
19651
19652/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProvokingVertexPropertiesEXT.html>
19653#[repr(C)]
19654#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19655pub struct PhysicalDeviceProvokingVertexPropertiesEXT {
19656    pub s_type: StructureType,
19657    pub next: *mut c_void,
19658    pub provoking_vertex_mode_per_pipeline: Bool32,
19659    pub transform_feedback_preserves_triangle_fan_provoking_vertex: Bool32,
19660}
19661
19662impl Default for PhysicalDeviceProvokingVertexPropertiesEXT {
19663    #[inline]
19664    fn default() -> Self {
19665        Self {
19666            s_type: StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT,
19667            next: ptr::null_mut(),
19668            provoking_vertex_mode_per_pipeline: Bool32::default(),
19669            transform_feedback_preserves_triangle_fan_provoking_vertex: Bool32::default(),
19670        }
19671    }
19672}
19673
19674unsafe impl Send for PhysicalDeviceProvokingVertexPropertiesEXT {}
19675unsafe impl Sync for PhysicalDeviceProvokingVertexPropertiesEXT {}
19676
19677/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePushDescriptorProperties.html>
19678#[repr(C)]
19679#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19680pub struct PhysicalDevicePushDescriptorProperties {
19681    pub s_type: StructureType,
19682    pub next: *mut c_void,
19683    pub max_push_descriptors: u32,
19684}
19685
19686impl Default for PhysicalDevicePushDescriptorProperties {
19687    #[inline]
19688    fn default() -> Self {
19689        Self {
19690            s_type: StructureType::PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES,
19691            next: ptr::null_mut(),
19692            max_push_descriptors: u32::default(),
19693        }
19694    }
19695}
19696
19697unsafe impl Send for PhysicalDevicePushDescriptorProperties {}
19698unsafe impl Sync for PhysicalDevicePushDescriptorProperties {}
19699
19700/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM.html>
19701#[repr(C)]
19702#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19703pub struct PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {
19704    pub s_type: StructureType,
19705    pub next: *const c_void,
19706    pub queue_family_index: u32,
19707    pub engine_type: PhysicalDeviceDataGraphProcessingEngineTypeARM,
19708}
19709
19710impl Default for PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {
19711    #[inline]
19712    fn default() -> Self {
19713        Self {
19714            s_type:
19715                StructureType::PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM,
19716            next: ptr::null(),
19717            queue_family_index: u32::default(),
19718            engine_type: PhysicalDeviceDataGraphProcessingEngineTypeARM::default(),
19719        }
19720    }
19721}
19722
19723unsafe impl Send for PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {}
19724unsafe impl Sync for PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {}
19725
19726/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.html>
19727#[repr(C)]
19728#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19729pub struct PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
19730    pub s_type: StructureType,
19731    pub next: *mut c_void,
19732    pub format_rgba10x6_without_y_cb_cr_sampler: Bool32,
19733}
19734
19735impl Default for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
19736    #[inline]
19737    fn default() -> Self {
19738        Self {
19739            s_type: StructureType::PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT,
19740            next: ptr::null_mut(),
19741            format_rgba10x6_without_y_cb_cr_sampler: Bool32::default(),
19742        }
19743    }
19744}
19745
19746unsafe impl Send for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {}
19747unsafe impl Sync for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {}
19748
19749/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.html>
19750#[repr(C)]
19751#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19752pub struct PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {
19753    pub s_type: StructureType,
19754    pub next: *mut c_void,
19755    pub rasterization_order_color_attachment_access: Bool32,
19756    pub rasterization_order_depth_attachment_access: Bool32,
19757    pub rasterization_order_stencil_attachment_access: Bool32,
19758}
19759
19760impl Default for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {
19761    #[inline]
19762    fn default() -> Self {
19763        Self {
19764            s_type:
19765                StructureType::PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT,
19766            next: ptr::null_mut(),
19767            rasterization_order_color_attachment_access: Bool32::default(),
19768            rasterization_order_depth_attachment_access: Bool32::default(),
19769            rasterization_order_stencil_attachment_access: Bool32::default(),
19770        }
19771    }
19772}
19773
19774unsafe impl Send for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {}
19775unsafe impl Sync for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {}
19776
19777/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRawAccessChainsFeaturesNV.html>
19778#[repr(C)]
19779#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19780pub struct PhysicalDeviceRawAccessChainsFeaturesNV {
19781    pub s_type: StructureType,
19782    pub next: *mut c_void,
19783    pub shader_raw_access_chains: Bool32,
19784}
19785
19786impl Default for PhysicalDeviceRawAccessChainsFeaturesNV {
19787    #[inline]
19788    fn default() -> Self {
19789        Self {
19790            s_type: StructureType::PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV,
19791            next: ptr::null_mut(),
19792            shader_raw_access_chains: Bool32::default(),
19793        }
19794    }
19795}
19796
19797unsafe impl Send for PhysicalDeviceRawAccessChainsFeaturesNV {}
19798unsafe impl Sync for PhysicalDeviceRawAccessChainsFeaturesNV {}
19799
19800/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayQueryFeaturesKHR.html>
19801#[repr(C)]
19802#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19803pub struct PhysicalDeviceRayQueryFeaturesKHR {
19804    pub s_type: StructureType,
19805    pub next: *mut c_void,
19806    pub ray_query: Bool32,
19807}
19808
19809impl Default for PhysicalDeviceRayQueryFeaturesKHR {
19810    #[inline]
19811    fn default() -> Self {
19812        Self {
19813            s_type: StructureType::PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR,
19814            next: ptr::null_mut(),
19815            ray_query: Bool32::default(),
19816        }
19817    }
19818}
19819
19820unsafe impl Send for PhysicalDeviceRayQueryFeaturesKHR {}
19821unsafe impl Sync for PhysicalDeviceRayQueryFeaturesKHR {}
19822
19823/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV.html>
19824#[repr(C)]
19825#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19826pub struct PhysicalDeviceRayTracingInvocationReorderFeaturesNV {
19827    pub s_type: StructureType,
19828    pub next: *mut c_void,
19829    pub ray_tracing_invocation_reorder: Bool32,
19830}
19831
19832impl Default for PhysicalDeviceRayTracingInvocationReorderFeaturesNV {
19833    #[inline]
19834    fn default() -> Self {
19835        Self {
19836            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV,
19837            next: ptr::null_mut(),
19838            ray_tracing_invocation_reorder: Bool32::default(),
19839        }
19840    }
19841}
19842
19843unsafe impl Send for PhysicalDeviceRayTracingInvocationReorderFeaturesNV {}
19844unsafe impl Sync for PhysicalDeviceRayTracingInvocationReorderFeaturesNV {}
19845
19846/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV.html>
19847#[repr(C)]
19848#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19849pub struct PhysicalDeviceRayTracingInvocationReorderPropertiesNV {
19850    pub s_type: StructureType,
19851    pub next: *mut c_void,
19852    pub ray_tracing_invocation_reorder_reordering_hint: RayTracingInvocationReorderModeNV,
19853}
19854
19855impl Default for PhysicalDeviceRayTracingInvocationReorderPropertiesNV {
19856    #[inline]
19857    fn default() -> Self {
19858        Self {
19859            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV,
19860            next: ptr::null_mut(),
19861            ray_tracing_invocation_reorder_reordering_hint:
19862                RayTracingInvocationReorderModeNV::default(),
19863        }
19864    }
19865}
19866
19867unsafe impl Send for PhysicalDeviceRayTracingInvocationReorderPropertiesNV {}
19868unsafe impl Sync for PhysicalDeviceRayTracingInvocationReorderPropertiesNV {}
19869
19870/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV.html>
19871#[repr(C)]
19872#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19873pub struct PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {
19874    pub s_type: StructureType,
19875    pub next: *mut c_void,
19876    pub spheres: Bool32,
19877    pub linear_swept_spheres: Bool32,
19878}
19879
19880impl Default for PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {
19881    #[inline]
19882    fn default() -> Self {
19883        Self {
19884            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV,
19885            next: ptr::null_mut(),
19886            spheres: Bool32::default(),
19887            linear_swept_spheres: Bool32::default(),
19888        }
19889    }
19890}
19891
19892unsafe impl Send for PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {}
19893unsafe impl Sync for PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {}
19894
19895/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.html>
19896#[repr(C)]
19897#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19898pub struct PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
19899    pub s_type: StructureType,
19900    pub next: *mut c_void,
19901    pub ray_tracing_maintenance1: Bool32,
19902    pub ray_tracing_pipeline_trace_rays_indirect2: Bool32,
19903}
19904
19905impl Default for PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
19906    #[inline]
19907    fn default() -> Self {
19908        Self {
19909            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR,
19910            next: ptr::null_mut(),
19911            ray_tracing_maintenance1: Bool32::default(),
19912            ray_tracing_pipeline_trace_rays_indirect2: Bool32::default(),
19913        }
19914    }
19915}
19916
19917unsafe impl Send for PhysicalDeviceRayTracingMaintenance1FeaturesKHR {}
19918unsafe impl Sync for PhysicalDeviceRayTracingMaintenance1FeaturesKHR {}
19919
19920/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.html>
19921#[repr(C)]
19922#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19923pub struct PhysicalDeviceRayTracingMotionBlurFeaturesNV {
19924    pub s_type: StructureType,
19925    pub next: *mut c_void,
19926    pub ray_tracing_motion_blur: Bool32,
19927    pub ray_tracing_motion_blur_pipeline_trace_rays_indirect: Bool32,
19928}
19929
19930impl Default for PhysicalDeviceRayTracingMotionBlurFeaturesNV {
19931    #[inline]
19932    fn default() -> Self {
19933        Self {
19934            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV,
19935            next: ptr::null_mut(),
19936            ray_tracing_motion_blur: Bool32::default(),
19937            ray_tracing_motion_blur_pipeline_trace_rays_indirect: Bool32::default(),
19938        }
19939    }
19940}
19941
19942unsafe impl Send for PhysicalDeviceRayTracingMotionBlurFeaturesNV {}
19943unsafe impl Sync for PhysicalDeviceRayTracingMotionBlurFeaturesNV {}
19944
19945/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html>
19946#[repr(C)]
19947#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19948pub struct PhysicalDeviceRayTracingPipelineFeaturesKHR {
19949    pub s_type: StructureType,
19950    pub next: *mut c_void,
19951    pub ray_tracing_pipeline: Bool32,
19952    pub ray_tracing_pipeline_shader_group_handle_capture_replay: Bool32,
19953    pub ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: Bool32,
19954    pub ray_tracing_pipeline_trace_rays_indirect: Bool32,
19955    pub ray_traversal_primitive_culling: Bool32,
19956}
19957
19958impl Default for PhysicalDeviceRayTracingPipelineFeaturesKHR {
19959    #[inline]
19960    fn default() -> Self {
19961        Self {
19962            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR,
19963            next: ptr::null_mut(),
19964            ray_tracing_pipeline: Bool32::default(),
19965            ray_tracing_pipeline_shader_group_handle_capture_replay: Bool32::default(),
19966            ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: Bool32::default(),
19967            ray_tracing_pipeline_trace_rays_indirect: Bool32::default(),
19968            ray_traversal_primitive_culling: Bool32::default(),
19969        }
19970    }
19971}
19972
19973unsafe impl Send for PhysicalDeviceRayTracingPipelineFeaturesKHR {}
19974unsafe impl Sync for PhysicalDeviceRayTracingPipelineFeaturesKHR {}
19975
19976/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html>
19977#[repr(C)]
19978#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19979pub struct PhysicalDeviceRayTracingPipelinePropertiesKHR {
19980    pub s_type: StructureType,
19981    pub next: *mut c_void,
19982    pub shader_group_handle_size: u32,
19983    pub max_ray_recursion_depth: u32,
19984    pub max_shader_group_stride: u32,
19985    pub shader_group_base_alignment: u32,
19986    pub shader_group_handle_capture_replay_size: u32,
19987    pub max_ray_dispatch_invocation_count: u32,
19988    pub shader_group_handle_alignment: u32,
19989    pub max_ray_hit_attribute_size: u32,
19990}
19991
19992impl Default for PhysicalDeviceRayTracingPipelinePropertiesKHR {
19993    #[inline]
19994    fn default() -> Self {
19995        Self {
19996            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR,
19997            next: ptr::null_mut(),
19998            shader_group_handle_size: u32::default(),
19999            max_ray_recursion_depth: u32::default(),
20000            max_shader_group_stride: u32::default(),
20001            shader_group_base_alignment: u32::default(),
20002            shader_group_handle_capture_replay_size: u32::default(),
20003            max_ray_dispatch_invocation_count: u32::default(),
20004            shader_group_handle_alignment: u32::default(),
20005            max_ray_hit_attribute_size: u32::default(),
20006        }
20007    }
20008}
20009
20010unsafe impl Send for PhysicalDeviceRayTracingPipelinePropertiesKHR {}
20011unsafe impl Sync for PhysicalDeviceRayTracingPipelinePropertiesKHR {}
20012
20013/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR.html>
20014#[repr(C)]
20015#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20016pub struct PhysicalDeviceRayTracingPositionFetchFeaturesKHR {
20017    pub s_type: StructureType,
20018    pub next: *mut c_void,
20019    pub ray_tracing_position_fetch: Bool32,
20020}
20021
20022impl Default for PhysicalDeviceRayTracingPositionFetchFeaturesKHR {
20023    #[inline]
20024    fn default() -> Self {
20025        Self {
20026            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR,
20027            next: ptr::null_mut(),
20028            ray_tracing_position_fetch: Bool32::default(),
20029        }
20030    }
20031}
20032
20033unsafe impl Send for PhysicalDeviceRayTracingPositionFetchFeaturesKHR {}
20034unsafe impl Sync for PhysicalDeviceRayTracingPositionFetchFeaturesKHR {}
20035
20036/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPropertiesNV.html>
20037#[repr(C)]
20038#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20039pub struct PhysicalDeviceRayTracingPropertiesNV {
20040    pub s_type: StructureType,
20041    pub next: *mut c_void,
20042    pub shader_group_handle_size: u32,
20043    pub max_recursion_depth: u32,
20044    pub max_shader_group_stride: u32,
20045    pub shader_group_base_alignment: u32,
20046    pub max_geometry_count: u64,
20047    pub max_instance_count: u64,
20048    pub max_triangle_count: u64,
20049    pub max_descriptor_set_acceleration_structures: u32,
20050}
20051
20052impl Default for PhysicalDeviceRayTracingPropertiesNV {
20053    #[inline]
20054    fn default() -> Self {
20055        Self {
20056            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV,
20057            next: ptr::null_mut(),
20058            shader_group_handle_size: u32::default(),
20059            max_recursion_depth: u32::default(),
20060            max_shader_group_stride: u32::default(),
20061            shader_group_base_alignment: u32::default(),
20062            max_geometry_count: u64::default(),
20063            max_instance_count: u64::default(),
20064            max_triangle_count: u64::default(),
20065            max_descriptor_set_acceleration_structures: u32::default(),
20066        }
20067    }
20068}
20069
20070unsafe impl Send for PhysicalDeviceRayTracingPropertiesNV {}
20071unsafe impl Sync for PhysicalDeviceRayTracingPropertiesNV {}
20072
20073/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingValidationFeaturesNV.html>
20074#[repr(C)]
20075#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20076pub struct PhysicalDeviceRayTracingValidationFeaturesNV {
20077    pub s_type: StructureType,
20078    pub next: *mut c_void,
20079    pub ray_tracing_validation: Bool32,
20080}
20081
20082impl Default for PhysicalDeviceRayTracingValidationFeaturesNV {
20083    #[inline]
20084    fn default() -> Self {
20085        Self {
20086            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV,
20087            next: ptr::null_mut(),
20088            ray_tracing_validation: Bool32::default(),
20089        }
20090    }
20091}
20092
20093unsafe impl Send for PhysicalDeviceRayTracingValidationFeaturesNV {}
20094unsafe impl Sync for PhysicalDeviceRayTracingValidationFeaturesNV {}
20095
20096/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG.html>
20097#[repr(C)]
20098#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20099pub struct PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
20100    pub s_type: StructureType,
20101    pub next: *mut c_void,
20102    pub relaxed_line_rasterization: Bool32,
20103}
20104
20105impl Default for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
20106    #[inline]
20107    fn default() -> Self {
20108        Self {
20109            s_type: StructureType::PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG,
20110            next: ptr::null_mut(),
20111            relaxed_line_rasterization: Bool32::default(),
20112        }
20113    }
20114}
20115
20116unsafe impl Send for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {}
20117unsafe impl Sync for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {}
20118
20119/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRenderPassStripedFeaturesARM.html>
20120#[repr(C)]
20121#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20122pub struct PhysicalDeviceRenderPassStripedFeaturesARM {
20123    pub s_type: StructureType,
20124    pub next: *mut c_void,
20125    pub render_pass_striped: Bool32,
20126}
20127
20128impl Default for PhysicalDeviceRenderPassStripedFeaturesARM {
20129    #[inline]
20130    fn default() -> Self {
20131        Self {
20132            s_type: StructureType::PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM,
20133            next: ptr::null_mut(),
20134            render_pass_striped: Bool32::default(),
20135        }
20136    }
20137}
20138
20139unsafe impl Send for PhysicalDeviceRenderPassStripedFeaturesARM {}
20140unsafe impl Sync for PhysicalDeviceRenderPassStripedFeaturesARM {}
20141
20142/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRenderPassStripedPropertiesARM.html>
20143#[repr(C)]
20144#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20145pub struct PhysicalDeviceRenderPassStripedPropertiesARM {
20146    pub s_type: StructureType,
20147    pub next: *mut c_void,
20148    pub render_pass_stripe_granularity: Extent2D,
20149    pub max_render_pass_stripes: u32,
20150}
20151
20152impl Default for PhysicalDeviceRenderPassStripedPropertiesARM {
20153    #[inline]
20154    fn default() -> Self {
20155        Self {
20156            s_type: StructureType::PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM,
20157            next: ptr::null_mut(),
20158            render_pass_stripe_granularity: Extent2D::default(),
20159            max_render_pass_stripes: u32::default(),
20160        }
20161    }
20162}
20163
20164unsafe impl Send for PhysicalDeviceRenderPassStripedPropertiesARM {}
20165unsafe impl Sync for PhysicalDeviceRenderPassStripedPropertiesARM {}
20166
20167/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.html>
20168#[repr(C)]
20169#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20170pub struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
20171    pub s_type: StructureType,
20172    pub next: *mut c_void,
20173    pub representative_fragment_test: Bool32,
20174}
20175
20176impl Default for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
20177    #[inline]
20178    fn default() -> Self {
20179        Self {
20180            s_type: StructureType::PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV,
20181            next: ptr::null_mut(),
20182            representative_fragment_test: Bool32::default(),
20183        }
20184    }
20185}
20186
20187unsafe impl Send for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {}
20188unsafe impl Sync for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {}
20189
20190/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2FeaturesKHR.html>
20191#[repr(C)]
20192#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20193pub struct PhysicalDeviceRobustness2FeaturesKHR {
20194    pub s_type: StructureType,
20195    pub next: *mut c_void,
20196    pub robust_buffer_access2: Bool32,
20197    pub robust_image_access2: Bool32,
20198    pub null_descriptor: Bool32,
20199}
20200
20201impl Default for PhysicalDeviceRobustness2FeaturesKHR {
20202    #[inline]
20203    fn default() -> Self {
20204        Self {
20205            s_type: StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR,
20206            next: ptr::null_mut(),
20207            robust_buffer_access2: Bool32::default(),
20208            robust_image_access2: Bool32::default(),
20209            null_descriptor: Bool32::default(),
20210        }
20211    }
20212}
20213
20214unsafe impl Send for PhysicalDeviceRobustness2FeaturesKHR {}
20215unsafe impl Sync for PhysicalDeviceRobustness2FeaturesKHR {}
20216
20217/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2PropertiesKHR.html>
20218#[repr(C)]
20219#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20220pub struct PhysicalDeviceRobustness2PropertiesKHR {
20221    pub s_type: StructureType,
20222    pub next: *mut c_void,
20223    pub robust_storage_buffer_access_size_alignment: DeviceSize,
20224    pub robust_uniform_buffer_access_size_alignment: DeviceSize,
20225}
20226
20227impl Default for PhysicalDeviceRobustness2PropertiesKHR {
20228    #[inline]
20229    fn default() -> Self {
20230        Self {
20231            s_type: StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR,
20232            next: ptr::null_mut(),
20233            robust_storage_buffer_access_size_alignment: DeviceSize::default(),
20234            robust_uniform_buffer_access_size_alignment: DeviceSize::default(),
20235        }
20236    }
20237}
20238
20239unsafe impl Send for PhysicalDeviceRobustness2PropertiesKHR {}
20240unsafe impl Sync for PhysicalDeviceRobustness2PropertiesKHR {}
20241
20242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html>
20243#[repr(C)]
20244#[derive(Copy, Clone, Debug, PartialEq)]
20245pub struct PhysicalDeviceSampleLocationsPropertiesEXT {
20246    pub s_type: StructureType,
20247    pub next: *mut c_void,
20248    pub sample_location_sample_counts: SampleCountFlags,
20249    pub max_sample_location_grid_size: Extent2D,
20250    pub sample_location_coordinate_range: [f32; 2],
20251    pub sample_location_sub_pixel_bits: u32,
20252    pub variable_sample_locations: Bool32,
20253}
20254
20255impl Default for PhysicalDeviceSampleLocationsPropertiesEXT {
20256    #[inline]
20257    fn default() -> Self {
20258        Self {
20259            s_type: StructureType::PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT,
20260            next: ptr::null_mut(),
20261            sample_location_sample_counts: SampleCountFlags::default(),
20262            max_sample_location_grid_size: Extent2D::default(),
20263            sample_location_coordinate_range: [f32::default(); 2],
20264            sample_location_sub_pixel_bits: u32::default(),
20265            variable_sample_locations: Bool32::default(),
20266        }
20267    }
20268}
20269
20270unsafe impl Send for PhysicalDeviceSampleLocationsPropertiesEXT {}
20271unsafe impl Sync for PhysicalDeviceSampleLocationsPropertiesEXT {}
20272
20273/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerFilterMinmaxProperties.html>
20274#[repr(C)]
20275#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20276pub struct PhysicalDeviceSamplerFilterMinmaxProperties {
20277    pub s_type: StructureType,
20278    pub next: *mut c_void,
20279    pub filter_minmax_single_component_formats: Bool32,
20280    pub filter_minmax_image_component_mapping: Bool32,
20281}
20282
20283impl Default for PhysicalDeviceSamplerFilterMinmaxProperties {
20284    #[inline]
20285    fn default() -> Self {
20286        Self {
20287            s_type: StructureType::PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
20288            next: ptr::null_mut(),
20289            filter_minmax_single_component_formats: Bool32::default(),
20290            filter_minmax_image_component_mapping: Bool32::default(),
20291        }
20292    }
20293}
20294
20295unsafe impl Send for PhysicalDeviceSamplerFilterMinmaxProperties {}
20296unsafe impl Sync for PhysicalDeviceSamplerFilterMinmaxProperties {}
20297
20298/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerYcbcrConversionFeatures.html>
20299#[repr(C)]
20300#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20301pub struct PhysicalDeviceSamplerYcbcrConversionFeatures {
20302    pub s_type: StructureType,
20303    pub next: *mut c_void,
20304    pub sampler_ycbcr_conversion: Bool32,
20305}
20306
20307impl Default for PhysicalDeviceSamplerYcbcrConversionFeatures {
20308    #[inline]
20309    fn default() -> Self {
20310        Self {
20311            s_type: StructureType::PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
20312            next: ptr::null_mut(),
20313            sampler_ycbcr_conversion: Bool32::default(),
20314        }
20315    }
20316}
20317
20318unsafe impl Send for PhysicalDeviceSamplerYcbcrConversionFeatures {}
20319unsafe impl Sync for PhysicalDeviceSamplerYcbcrConversionFeatures {}
20320
20321/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceScalarBlockLayoutFeatures.html>
20322#[repr(C)]
20323#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20324pub struct PhysicalDeviceScalarBlockLayoutFeatures {
20325    pub s_type: StructureType,
20326    pub next: *mut c_void,
20327    pub scalar_block_layout: Bool32,
20328}
20329
20330impl Default for PhysicalDeviceScalarBlockLayoutFeatures {
20331    #[inline]
20332    fn default() -> Self {
20333        Self {
20334            s_type: StructureType::PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
20335            next: ptr::null_mut(),
20336            scalar_block_layout: Bool32::default(),
20337        }
20338    }
20339}
20340
20341unsafe impl Send for PhysicalDeviceScalarBlockLayoutFeatures {}
20342unsafe impl Sync for PhysicalDeviceScalarBlockLayoutFeatures {}
20343
20344/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSchedulingControlsFeaturesARM.html>
20345#[repr(C)]
20346#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20347pub struct PhysicalDeviceSchedulingControlsFeaturesARM {
20348    pub s_type: StructureType,
20349    pub next: *mut c_void,
20350    pub scheduling_controls: Bool32,
20351}
20352
20353impl Default for PhysicalDeviceSchedulingControlsFeaturesARM {
20354    #[inline]
20355    fn default() -> Self {
20356        Self {
20357            s_type: StructureType::PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM,
20358            next: ptr::null_mut(),
20359            scheduling_controls: Bool32::default(),
20360        }
20361    }
20362}
20363
20364unsafe impl Send for PhysicalDeviceSchedulingControlsFeaturesARM {}
20365unsafe impl Sync for PhysicalDeviceSchedulingControlsFeaturesARM {}
20366
20367/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSchedulingControlsPropertiesARM.html>
20368#[repr(C)]
20369#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20370pub struct PhysicalDeviceSchedulingControlsPropertiesARM {
20371    pub s_type: StructureType,
20372    pub next: *mut c_void,
20373    pub scheduling_controls_flags: PhysicalDeviceSchedulingControlsFlagsARM,
20374}
20375
20376impl Default for PhysicalDeviceSchedulingControlsPropertiesARM {
20377    #[inline]
20378    fn default() -> Self {
20379        Self {
20380            s_type: StructureType::PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM,
20381            next: ptr::null_mut(),
20382            scheduling_controls_flags: PhysicalDeviceSchedulingControlsFlagsARM::default(),
20383        }
20384    }
20385}
20386
20387unsafe impl Send for PhysicalDeviceSchedulingControlsPropertiesARM {}
20388unsafe impl Sync for PhysicalDeviceSchedulingControlsPropertiesARM {}
20389
20390/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures.html>
20391#[repr(C)]
20392#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20393pub struct PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
20394    pub s_type: StructureType,
20395    pub next: *mut c_void,
20396    pub separate_depth_stencil_layouts: Bool32,
20397}
20398
20399impl Default for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
20400    #[inline]
20401    fn default() -> Self {
20402        Self {
20403            s_type: StructureType::PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
20404            next: ptr::null_mut(),
20405            separate_depth_stencil_layouts: Bool32::default(),
20406        }
20407    }
20408}
20409
20410unsafe impl Send for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {}
20411unsafe impl Sync for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {}
20412
20413/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShader64BitIndexingFeaturesEXT.html>
20414#[repr(C)]
20415#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20416pub struct PhysicalDeviceShader64BitIndexingFeaturesEXT {
20417    pub s_type: StructureType,
20418    pub next: *mut c_void,
20419    pub shader_64bit_indexing: Bool32,
20420}
20421
20422impl Default for PhysicalDeviceShader64BitIndexingFeaturesEXT {
20423    #[inline]
20424    fn default() -> Self {
20425        Self {
20426            s_type: StructureType::PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT,
20427            next: ptr::null_mut(),
20428            shader_64bit_indexing: Bool32::default(),
20429        }
20430    }
20431}
20432
20433unsafe impl Send for PhysicalDeviceShader64BitIndexingFeaturesEXT {}
20434unsafe impl Sync for PhysicalDeviceShader64BitIndexingFeaturesEXT {}
20435
20436/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV.html>
20437#[repr(C)]
20438#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20439pub struct PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {
20440    pub s_type: StructureType,
20441    pub next: *mut c_void,
20442    pub shader_float16_vector_atomics: Bool32,
20443}
20444
20445impl Default for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {
20446    #[inline]
20447    fn default() -> Self {
20448        Self {
20449            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV,
20450            next: ptr::null_mut(),
20451            shader_float16_vector_atomics: Bool32::default(),
20452        }
20453    }
20454}
20455
20456unsafe impl Send for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {}
20457unsafe impl Sync for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {}
20458
20459/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html>
20460#[repr(C)]
20461#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20462pub struct PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
20463    pub s_type: StructureType,
20464    pub next: *mut c_void,
20465    pub shader_buffer_float16_atomics: Bool32,
20466    pub shader_buffer_float16_atomic_add: Bool32,
20467    pub shader_buffer_float16_atomic_min_max: Bool32,
20468    pub shader_buffer_float32_atomic_min_max: Bool32,
20469    pub shader_buffer_float64_atomic_min_max: Bool32,
20470    pub shader_shared_float16_atomics: Bool32,
20471    pub shader_shared_float16_atomic_add: Bool32,
20472    pub shader_shared_float16_atomic_min_max: Bool32,
20473    pub shader_shared_float32_atomic_min_max: Bool32,
20474    pub shader_shared_float64_atomic_min_max: Bool32,
20475    pub shader_image_float32_atomic_min_max: Bool32,
20476    pub sparse_image_float32_atomic_min_max: Bool32,
20477}
20478
20479impl Default for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
20480    #[inline]
20481    fn default() -> Self {
20482        Self {
20483            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT,
20484            next: ptr::null_mut(),
20485            shader_buffer_float16_atomics: Bool32::default(),
20486            shader_buffer_float16_atomic_add: Bool32::default(),
20487            shader_buffer_float16_atomic_min_max: Bool32::default(),
20488            shader_buffer_float32_atomic_min_max: Bool32::default(),
20489            shader_buffer_float64_atomic_min_max: Bool32::default(),
20490            shader_shared_float16_atomics: Bool32::default(),
20491            shader_shared_float16_atomic_add: Bool32::default(),
20492            shader_shared_float16_atomic_min_max: Bool32::default(),
20493            shader_shared_float32_atomic_min_max: Bool32::default(),
20494            shader_shared_float64_atomic_min_max: Bool32::default(),
20495            shader_image_float32_atomic_min_max: Bool32::default(),
20496            sparse_image_float32_atomic_min_max: Bool32::default(),
20497        }
20498    }
20499}
20500
20501unsafe impl Send for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {}
20502unsafe impl Sync for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {}
20503
20504/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html>
20505#[repr(C)]
20506#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20507pub struct PhysicalDeviceShaderAtomicFloatFeaturesEXT {
20508    pub s_type: StructureType,
20509    pub next: *mut c_void,
20510    pub shader_buffer_float32_atomics: Bool32,
20511    pub shader_buffer_float32_atomic_add: Bool32,
20512    pub shader_buffer_float64_atomics: Bool32,
20513    pub shader_buffer_float64_atomic_add: Bool32,
20514    pub shader_shared_float32_atomics: Bool32,
20515    pub shader_shared_float32_atomic_add: Bool32,
20516    pub shader_shared_float64_atomics: Bool32,
20517    pub shader_shared_float64_atomic_add: Bool32,
20518    pub shader_image_float32_atomics: Bool32,
20519    pub shader_image_float32_atomic_add: Bool32,
20520    pub sparse_image_float32_atomics: Bool32,
20521    pub sparse_image_float32_atomic_add: Bool32,
20522}
20523
20524impl Default for PhysicalDeviceShaderAtomicFloatFeaturesEXT {
20525    #[inline]
20526    fn default() -> Self {
20527        Self {
20528            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT,
20529            next: ptr::null_mut(),
20530            shader_buffer_float32_atomics: Bool32::default(),
20531            shader_buffer_float32_atomic_add: Bool32::default(),
20532            shader_buffer_float64_atomics: Bool32::default(),
20533            shader_buffer_float64_atomic_add: Bool32::default(),
20534            shader_shared_float32_atomics: Bool32::default(),
20535            shader_shared_float32_atomic_add: Bool32::default(),
20536            shader_shared_float64_atomics: Bool32::default(),
20537            shader_shared_float64_atomic_add: Bool32::default(),
20538            shader_image_float32_atomics: Bool32::default(),
20539            shader_image_float32_atomic_add: Bool32::default(),
20540            sparse_image_float32_atomics: Bool32::default(),
20541            sparse_image_float32_atomic_add: Bool32::default(),
20542        }
20543    }
20544}
20545
20546unsafe impl Send for PhysicalDeviceShaderAtomicFloatFeaturesEXT {}
20547unsafe impl Sync for PhysicalDeviceShaderAtomicFloatFeaturesEXT {}
20548
20549/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicInt64Features.html>
20550#[repr(C)]
20551#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20552pub struct PhysicalDeviceShaderAtomicInt64Features {
20553    pub s_type: StructureType,
20554    pub next: *mut c_void,
20555    pub shader_buffer_int64_atomics: Bool32,
20556    pub shader_shared_int64_atomics: Bool32,
20557}
20558
20559impl Default for PhysicalDeviceShaderAtomicInt64Features {
20560    #[inline]
20561    fn default() -> Self {
20562        Self {
20563            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
20564            next: ptr::null_mut(),
20565            shader_buffer_int64_atomics: Bool32::default(),
20566            shader_shared_int64_atomics: Bool32::default(),
20567        }
20568    }
20569}
20570
20571unsafe impl Send for PhysicalDeviceShaderAtomicInt64Features {}
20572unsafe impl Sync for PhysicalDeviceShaderAtomicInt64Features {}
20573
20574/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderBfloat16FeaturesKHR.html>
20575#[repr(C)]
20576#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20577pub struct PhysicalDeviceShaderBfloat16FeaturesKHR {
20578    pub s_type: StructureType,
20579    pub next: *mut c_void,
20580    pub shader_b_float16_type: Bool32,
20581    pub shader_b_float_16dot_product: Bool32,
20582    pub shader_b_float16_cooperative_matrix: Bool32,
20583}
20584
20585impl Default for PhysicalDeviceShaderBfloat16FeaturesKHR {
20586    #[inline]
20587    fn default() -> Self {
20588        Self {
20589            s_type: StructureType::PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR,
20590            next: ptr::null_mut(),
20591            shader_b_float16_type: Bool32::default(),
20592            shader_b_float_16dot_product: Bool32::default(),
20593            shader_b_float16_cooperative_matrix: Bool32::default(),
20594        }
20595    }
20596}
20597
20598unsafe impl Send for PhysicalDeviceShaderBfloat16FeaturesKHR {}
20599unsafe impl Sync for PhysicalDeviceShaderBfloat16FeaturesKHR {}
20600
20601/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderClockFeaturesKHR.html>
20602#[repr(C)]
20603#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20604pub struct PhysicalDeviceShaderClockFeaturesKHR {
20605    pub s_type: StructureType,
20606    pub next: *mut c_void,
20607    pub shader_subgroup_clock: Bool32,
20608    pub shader_device_clock: Bool32,
20609}
20610
20611impl Default for PhysicalDeviceShaderClockFeaturesKHR {
20612    #[inline]
20613    fn default() -> Self {
20614        Self {
20615            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR,
20616            next: ptr::null_mut(),
20617            shader_subgroup_clock: Bool32::default(),
20618            shader_device_clock: Bool32::default(),
20619        }
20620    }
20621}
20622
20623unsafe impl Send for PhysicalDeviceShaderClockFeaturesKHR {}
20624unsafe impl Sync for PhysicalDeviceShaderClockFeaturesKHR {}
20625
20626/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM.html>
20627#[repr(C)]
20628#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20629pub struct PhysicalDeviceShaderCoreBuiltinsFeaturesARM {
20630    pub s_type: StructureType,
20631    pub next: *mut c_void,
20632    pub shader_core_builtins: Bool32,
20633}
20634
20635impl Default for PhysicalDeviceShaderCoreBuiltinsFeaturesARM {
20636    #[inline]
20637    fn default() -> Self {
20638        Self {
20639            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM,
20640            next: ptr::null_mut(),
20641            shader_core_builtins: Bool32::default(),
20642        }
20643    }
20644}
20645
20646unsafe impl Send for PhysicalDeviceShaderCoreBuiltinsFeaturesARM {}
20647unsafe impl Sync for PhysicalDeviceShaderCoreBuiltinsFeaturesARM {}
20648
20649/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM.html>
20650#[repr(C)]
20651#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20652pub struct PhysicalDeviceShaderCoreBuiltinsPropertiesARM {
20653    pub s_type: StructureType,
20654    pub next: *mut c_void,
20655    pub shader_core_mask: u64,
20656    pub shader_core_count: u32,
20657    pub shader_warps_per_core: u32,
20658}
20659
20660impl Default for PhysicalDeviceShaderCoreBuiltinsPropertiesARM {
20661    #[inline]
20662    fn default() -> Self {
20663        Self {
20664            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM,
20665            next: ptr::null_mut(),
20666            shader_core_mask: u64::default(),
20667            shader_core_count: u32::default(),
20668            shader_warps_per_core: u32::default(),
20669        }
20670    }
20671}
20672
20673unsafe impl Send for PhysicalDeviceShaderCoreBuiltinsPropertiesARM {}
20674unsafe impl Sync for PhysicalDeviceShaderCoreBuiltinsPropertiesARM {}
20675
20676/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreProperties2AMD.html>
20677#[repr(C)]
20678#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20679pub struct PhysicalDeviceShaderCoreProperties2AMD {
20680    pub s_type: StructureType,
20681    pub next: *mut c_void,
20682    pub shader_core_features: ShaderCorePropertiesFlagsAMD,
20683    pub active_compute_unit_count: u32,
20684}
20685
20686impl Default for PhysicalDeviceShaderCoreProperties2AMD {
20687    #[inline]
20688    fn default() -> Self {
20689        Self {
20690            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD,
20691            next: ptr::null_mut(),
20692            shader_core_features: ShaderCorePropertiesFlagsAMD::default(),
20693            active_compute_unit_count: u32::default(),
20694        }
20695    }
20696}
20697
20698unsafe impl Send for PhysicalDeviceShaderCoreProperties2AMD {}
20699unsafe impl Sync for PhysicalDeviceShaderCoreProperties2AMD {}
20700
20701/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html>
20702#[repr(C)]
20703#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20704pub struct PhysicalDeviceShaderCorePropertiesAMD {
20705    pub s_type: StructureType,
20706    pub next: *mut c_void,
20707    pub shader_engine_count: u32,
20708    pub shader_arrays_per_engine_count: u32,
20709    pub compute_units_per_shader_array: u32,
20710    pub simd_per_compute_unit: u32,
20711    pub wavefronts_per_simd: u32,
20712    pub wavefront_size: u32,
20713    pub sgprs_per_simd: u32,
20714    pub min_sgpr_allocation: u32,
20715    pub max_sgpr_allocation: u32,
20716    pub sgpr_allocation_granularity: u32,
20717    pub vgprs_per_simd: u32,
20718    pub min_vgpr_allocation: u32,
20719    pub max_vgpr_allocation: u32,
20720    pub vgpr_allocation_granularity: u32,
20721}
20722
20723impl Default for PhysicalDeviceShaderCorePropertiesAMD {
20724    #[inline]
20725    fn default() -> Self {
20726        Self {
20727            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD,
20728            next: ptr::null_mut(),
20729            shader_engine_count: u32::default(),
20730            shader_arrays_per_engine_count: u32::default(),
20731            compute_units_per_shader_array: u32::default(),
20732            simd_per_compute_unit: u32::default(),
20733            wavefronts_per_simd: u32::default(),
20734            wavefront_size: u32::default(),
20735            sgprs_per_simd: u32::default(),
20736            min_sgpr_allocation: u32::default(),
20737            max_sgpr_allocation: u32::default(),
20738            sgpr_allocation_granularity: u32::default(),
20739            vgprs_per_simd: u32::default(),
20740            min_vgpr_allocation: u32::default(),
20741            max_vgpr_allocation: u32::default(),
20742            vgpr_allocation_granularity: u32::default(),
20743        }
20744    }
20745}
20746
20747unsafe impl Send for PhysicalDeviceShaderCorePropertiesAMD {}
20748unsafe impl Sync for PhysicalDeviceShaderCorePropertiesAMD {}
20749
20750/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCorePropertiesARM.html>
20751#[repr(C)]
20752#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20753pub struct PhysicalDeviceShaderCorePropertiesARM {
20754    pub s_type: StructureType,
20755    pub next: *mut c_void,
20756    pub pixel_rate: u32,
20757    pub texel_rate: u32,
20758    pub fma_rate: u32,
20759}
20760
20761impl Default for PhysicalDeviceShaderCorePropertiesARM {
20762    #[inline]
20763    fn default() -> Self {
20764        Self {
20765            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM,
20766            next: ptr::null_mut(),
20767            pixel_rate: u32::default(),
20768            texel_rate: u32::default(),
20769            fma_rate: u32::default(),
20770        }
20771    }
20772}
20773
20774unsafe impl Send for PhysicalDeviceShaderCorePropertiesARM {}
20775unsafe impl Sync for PhysicalDeviceShaderCorePropertiesARM {}
20776
20777/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures.html>
20778#[repr(C)]
20779#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20780pub struct PhysicalDeviceShaderDemoteToHelperInvocationFeatures {
20781    pub s_type: StructureType,
20782    pub next: *mut c_void,
20783    pub shader_demote_to_helper_invocation: Bool32,
20784}
20785
20786impl Default for PhysicalDeviceShaderDemoteToHelperInvocationFeatures {
20787    #[inline]
20788    fn default() -> Self {
20789        Self {
20790            s_type: StructureType::PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES,
20791            next: ptr::null_mut(),
20792            shader_demote_to_helper_invocation: Bool32::default(),
20793        }
20794    }
20795}
20796
20797unsafe impl Send for PhysicalDeviceShaderDemoteToHelperInvocationFeatures {}
20798unsafe impl Sync for PhysicalDeviceShaderDemoteToHelperInvocationFeatures {}
20799
20800/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDrawParametersFeatures.html>
20801#[repr(C)]
20802#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20803pub struct PhysicalDeviceShaderDrawParametersFeatures {
20804    pub s_type: StructureType,
20805    pub next: *mut c_void,
20806    pub shader_draw_parameters: Bool32,
20807}
20808
20809impl Default for PhysicalDeviceShaderDrawParametersFeatures {
20810    #[inline]
20811    fn default() -> Self {
20812        Self {
20813            s_type: StructureType::PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
20814            next: ptr::null_mut(),
20815            shader_draw_parameters: Bool32::default(),
20816        }
20817    }
20818}
20819
20820unsafe impl Send for PhysicalDeviceShaderDrawParametersFeatures {}
20821unsafe impl Sync for PhysicalDeviceShaderDrawParametersFeatures {}
20822
20823/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.html>
20824#[repr(C)]
20825#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20826pub struct PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
20827    pub s_type: StructureType,
20828    pub next: *mut c_void,
20829    pub shader_early_and_late_fragment_tests: Bool32,
20830}
20831
20832impl Default for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
20833    #[inline]
20834    fn default() -> Self {
20835        Self {
20836            s_type:
20837                StructureType::PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD,
20838            next: ptr::null_mut(),
20839            shader_early_and_late_fragment_tests: Bool32::default(),
20840        }
20841    }
20842}
20843
20844unsafe impl Send for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {}
20845unsafe impl Sync for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {}
20846
20847/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEnqueueFeaturesAMDX.html>
20848#[repr(C)]
20849#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20850pub struct PhysicalDeviceShaderEnqueueFeaturesAMDX {
20851    pub s_type: StructureType,
20852    pub next: *mut c_void,
20853    pub shader_enqueue: Bool32,
20854    pub shader_mesh_enqueue: Bool32,
20855}
20856
20857impl Default for PhysicalDeviceShaderEnqueueFeaturesAMDX {
20858    #[inline]
20859    fn default() -> Self {
20860        Self {
20861            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX,
20862            next: ptr::null_mut(),
20863            shader_enqueue: Bool32::default(),
20864            shader_mesh_enqueue: Bool32::default(),
20865        }
20866    }
20867}
20868
20869unsafe impl Send for PhysicalDeviceShaderEnqueueFeaturesAMDX {}
20870unsafe impl Sync for PhysicalDeviceShaderEnqueueFeaturesAMDX {}
20871
20872/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEnqueuePropertiesAMDX.html>
20873#[repr(C)]
20874#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20875pub struct PhysicalDeviceShaderEnqueuePropertiesAMDX {
20876    pub s_type: StructureType,
20877    pub next: *mut c_void,
20878    pub max_execution_graph_depth: u32,
20879    pub max_execution_graph_shader_output_nodes: u32,
20880    pub max_execution_graph_shader_payload_size: u32,
20881    pub max_execution_graph_shader_payload_count: u32,
20882    pub execution_graph_dispatch_address_alignment: u32,
20883    pub max_execution_graph_workgroup_count: [u32; 3],
20884    pub max_execution_graph_workgroups: u32,
20885}
20886
20887impl Default for PhysicalDeviceShaderEnqueuePropertiesAMDX {
20888    #[inline]
20889    fn default() -> Self {
20890        Self {
20891            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX,
20892            next: ptr::null_mut(),
20893            max_execution_graph_depth: u32::default(),
20894            max_execution_graph_shader_output_nodes: u32::default(),
20895            max_execution_graph_shader_payload_size: u32::default(),
20896            max_execution_graph_shader_payload_count: u32::default(),
20897            execution_graph_dispatch_address_alignment: u32::default(),
20898            max_execution_graph_workgroup_count: [u32::default(); 3],
20899            max_execution_graph_workgroups: u32::default(),
20900        }
20901    }
20902}
20903
20904unsafe impl Send for PhysicalDeviceShaderEnqueuePropertiesAMDX {}
20905unsafe impl Sync for PhysicalDeviceShaderEnqueuePropertiesAMDX {}
20906
20907/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderExpectAssumeFeatures.html>
20908#[repr(C)]
20909#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20910pub struct PhysicalDeviceShaderExpectAssumeFeatures {
20911    pub s_type: StructureType,
20912    pub next: *mut c_void,
20913    pub shader_expect_assume: Bool32,
20914}
20915
20916impl Default for PhysicalDeviceShaderExpectAssumeFeatures {
20917    #[inline]
20918    fn default() -> Self {
20919        Self {
20920            s_type: StructureType::PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES,
20921            next: ptr::null_mut(),
20922            shader_expect_assume: Bool32::default(),
20923        }
20924    }
20925}
20926
20927unsafe impl Send for PhysicalDeviceShaderExpectAssumeFeatures {}
20928unsafe impl Sync for PhysicalDeviceShaderExpectAssumeFeatures {}
20929
20930/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat16Int8Features.html>
20931#[repr(C)]
20932#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20933pub struct PhysicalDeviceShaderFloat16Int8Features {
20934    pub s_type: StructureType,
20935    pub next: *mut c_void,
20936    pub shader_float16: Bool32,
20937    pub shader_int8: Bool32,
20938}
20939
20940impl Default for PhysicalDeviceShaderFloat16Int8Features {
20941    #[inline]
20942    fn default() -> Self {
20943        Self {
20944            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
20945            next: ptr::null_mut(),
20946            shader_float16: Bool32::default(),
20947            shader_int8: Bool32::default(),
20948        }
20949    }
20950}
20951
20952unsafe impl Send for PhysicalDeviceShaderFloat16Int8Features {}
20953unsafe impl Sync for PhysicalDeviceShaderFloat16Int8Features {}
20954
20955/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat8FeaturesEXT.html>
20956#[repr(C)]
20957#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20958pub struct PhysicalDeviceShaderFloat8FeaturesEXT {
20959    pub s_type: StructureType,
20960    pub next: *mut c_void,
20961    pub shader_float8: Bool32,
20962    pub shader_float8_cooperative_matrix: Bool32,
20963}
20964
20965impl Default for PhysicalDeviceShaderFloat8FeaturesEXT {
20966    #[inline]
20967    fn default() -> Self {
20968        Self {
20969            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT,
20970            next: ptr::null_mut(),
20971            shader_float8: Bool32::default(),
20972            shader_float8_cooperative_matrix: Bool32::default(),
20973        }
20974    }
20975}
20976
20977unsafe impl Send for PhysicalDeviceShaderFloat8FeaturesEXT {}
20978unsafe impl Sync for PhysicalDeviceShaderFloat8FeaturesEXT {}
20979
20980/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloatControls2Features.html>
20981#[repr(C)]
20982#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20983pub struct PhysicalDeviceShaderFloatControls2Features {
20984    pub s_type: StructureType,
20985    pub next: *mut c_void,
20986    pub shader_float_controls2: Bool32,
20987}
20988
20989impl Default for PhysicalDeviceShaderFloatControls2Features {
20990    #[inline]
20991    fn default() -> Self {
20992        Self {
20993            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES,
20994            next: ptr::null_mut(),
20995            shader_float_controls2: Bool32::default(),
20996        }
20997    }
20998}
20999
21000unsafe impl Send for PhysicalDeviceShaderFloatControls2Features {}
21001unsafe impl Sync for PhysicalDeviceShaderFloatControls2Features {}
21002
21003/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFmaFeaturesKHR.html>
21004#[repr(C)]
21005#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21006pub struct PhysicalDeviceShaderFmaFeaturesKHR {
21007    pub s_type: StructureType,
21008    pub next: *mut c_void,
21009    pub shader_fma_float16: Bool32,
21010    pub shader_fma_float32: Bool32,
21011    pub shader_fma_float64: Bool32,
21012}
21013
21014impl Default for PhysicalDeviceShaderFmaFeaturesKHR {
21015    #[inline]
21016    fn default() -> Self {
21017        Self {
21018            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR,
21019            next: ptr::null_mut(),
21020            shader_fma_float16: Bool32::default(),
21021            shader_fma_float32: Bool32::default(),
21022            shader_fma_float64: Bool32::default(),
21023        }
21024    }
21025}
21026
21027unsafe impl Send for PhysicalDeviceShaderFmaFeaturesKHR {}
21028unsafe impl Sync for PhysicalDeviceShaderFmaFeaturesKHR {}
21029
21030/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.html>
21031#[repr(C)]
21032#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21033pub struct PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
21034    pub s_type: StructureType,
21035    pub next: *mut c_void,
21036    pub shader_image_int64_atomics: Bool32,
21037    pub sparse_image_int64_atomics: Bool32,
21038}
21039
21040impl Default for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
21041    #[inline]
21042    fn default() -> Self {
21043        Self {
21044            s_type: StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT,
21045            next: ptr::null_mut(),
21046            shader_image_int64_atomics: Bool32::default(),
21047            sparse_image_int64_atomics: Bool32::default(),
21048        }
21049    }
21050}
21051
21052unsafe impl Send for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {}
21053unsafe impl Sync for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {}
21054
21055/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderImageFootprintFeaturesNV.html>
21056#[repr(C)]
21057#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21058pub struct PhysicalDeviceShaderImageFootprintFeaturesNV {
21059    pub s_type: StructureType,
21060    pub next: *mut c_void,
21061    pub image_footprint: Bool32,
21062}
21063
21064impl Default for PhysicalDeviceShaderImageFootprintFeaturesNV {
21065    #[inline]
21066    fn default() -> Self {
21067        Self {
21068            s_type: StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV,
21069            next: ptr::null_mut(),
21070            image_footprint: Bool32::default(),
21071        }
21072    }
21073}
21074
21075unsafe impl Send for PhysicalDeviceShaderImageFootprintFeaturesNV {}
21076unsafe impl Sync for PhysicalDeviceShaderImageFootprintFeaturesNV {}
21077
21078/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductFeatures.html>
21079#[repr(C)]
21080#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21081pub struct PhysicalDeviceShaderIntegerDotProductFeatures {
21082    pub s_type: StructureType,
21083    pub next: *mut c_void,
21084    pub shader_integer_dot_product: Bool32,
21085}
21086
21087impl Default for PhysicalDeviceShaderIntegerDotProductFeatures {
21088    #[inline]
21089    fn default() -> Self {
21090        Self {
21091            s_type: StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES,
21092            next: ptr::null_mut(),
21093            shader_integer_dot_product: Bool32::default(),
21094        }
21095    }
21096}
21097
21098unsafe impl Send for PhysicalDeviceShaderIntegerDotProductFeatures {}
21099unsafe impl Sync for PhysicalDeviceShaderIntegerDotProductFeatures {}
21100
21101/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductProperties.html>
21102#[repr(C)]
21103#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21104pub struct PhysicalDeviceShaderIntegerDotProductProperties {
21105    pub s_type: StructureType,
21106    pub next: *mut c_void,
21107    pub integer_dot_product_8bit_unsigned_accelerated: Bool32,
21108    pub integer_dot_product_8bit_signed_accelerated: Bool32,
21109    pub integer_dot_product_8bit_mixed_signedness_accelerated: Bool32,
21110    pub integer_dot_product4x_8bit_packed_unsigned_accelerated: Bool32,
21111    pub integer_dot_product4x_8bit_packed_signed_accelerated: Bool32,
21112    pub integer_dot_product4x_8bit_packed_mixed_signedness_accelerated: Bool32,
21113    pub integer_dot_product_16bit_unsigned_accelerated: Bool32,
21114    pub integer_dot_product_16bit_signed_accelerated: Bool32,
21115    pub integer_dot_product_16bit_mixed_signedness_accelerated: Bool32,
21116    pub integer_dot_product_32bit_unsigned_accelerated: Bool32,
21117    pub integer_dot_product_32bit_signed_accelerated: Bool32,
21118    pub integer_dot_product_32bit_mixed_signedness_accelerated: Bool32,
21119    pub integer_dot_product_64bit_unsigned_accelerated: Bool32,
21120    pub integer_dot_product_64bit_signed_accelerated: Bool32,
21121    pub integer_dot_product_64bit_mixed_signedness_accelerated: Bool32,
21122    pub integer_dot_product_accumulating_saturating_8bit_unsigned_accelerated: Bool32,
21123    pub integer_dot_product_accumulating_saturating_8bit_signed_accelerated: Bool32,
21124    pub integer_dot_product_accumulating_saturating_8bit_mixed_signedness_accelerated: Bool32,
21125    pub integer_dot_product_accumulating_saturating4x_8bit_packed_unsigned_accelerated: Bool32,
21126    pub integer_dot_product_accumulating_saturating4x_8bit_packed_signed_accelerated: Bool32,
21127    pub integer_dot_product_accumulating_saturating4x_8bit_packed_mixed_signedness_accelerated:
21128        Bool32,
21129    pub integer_dot_product_accumulating_saturating_16bit_unsigned_accelerated: Bool32,
21130    pub integer_dot_product_accumulating_saturating_16bit_signed_accelerated: Bool32,
21131    pub integer_dot_product_accumulating_saturating_16bit_mixed_signedness_accelerated: Bool32,
21132    pub integer_dot_product_accumulating_saturating_32bit_unsigned_accelerated: Bool32,
21133    pub integer_dot_product_accumulating_saturating_32bit_signed_accelerated: Bool32,
21134    pub integer_dot_product_accumulating_saturating_32bit_mixed_signedness_accelerated: Bool32,
21135    pub integer_dot_product_accumulating_saturating_64bit_unsigned_accelerated: Bool32,
21136    pub integer_dot_product_accumulating_saturating_64bit_signed_accelerated: Bool32,
21137    pub integer_dot_product_accumulating_saturating_64bit_mixed_signedness_accelerated: Bool32,
21138}
21139
21140impl Default for PhysicalDeviceShaderIntegerDotProductProperties {
21141    #[inline]
21142    fn default() -> Self {
21143        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() }
21144    }
21145}
21146
21147unsafe impl Send for PhysicalDeviceShaderIntegerDotProductProperties {}
21148unsafe impl Sync for PhysicalDeviceShaderIntegerDotProductProperties {}
21149
21150/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.html>
21151#[repr(C)]
21152#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21153pub struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
21154    pub s_type: StructureType,
21155    pub next: *mut c_void,
21156    pub shader_integer_functions2: Bool32,
21157}
21158
21159impl Default for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
21160    #[inline]
21161    fn default() -> Self {
21162        Self {
21163            s_type: StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL,
21164            next: ptr::null_mut(),
21165            shader_integer_functions2: Bool32::default(),
21166        }
21167    }
21168}
21169
21170unsafe impl Send for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {}
21171unsafe impl Sync for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {}
21172
21173/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR.html>
21174#[repr(C)]
21175#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21176pub struct PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {
21177    pub s_type: StructureType,
21178    pub next: *mut c_void,
21179    pub shader_maximal_reconvergence: Bool32,
21180}
21181
21182impl Default for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {
21183    #[inline]
21184    fn default() -> Self {
21185        Self {
21186            s_type: StructureType::PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR,
21187            next: ptr::null_mut(),
21188            shader_maximal_reconvergence: Bool32::default(),
21189        }
21190    }
21191}
21192
21193unsafe impl Send for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {}
21194unsafe impl Sync for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {}
21195
21196/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT.html>
21197#[repr(C)]
21198#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21199pub struct PhysicalDeviceShaderModuleIdentifierFeaturesEXT {
21200    pub s_type: StructureType,
21201    pub next: *mut c_void,
21202    pub shader_module_identifier: Bool32,
21203}
21204
21205impl Default for PhysicalDeviceShaderModuleIdentifierFeaturesEXT {
21206    #[inline]
21207    fn default() -> Self {
21208        Self {
21209            s_type: StructureType::PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT,
21210            next: ptr::null_mut(),
21211            shader_module_identifier: Bool32::default(),
21212        }
21213    }
21214}
21215
21216unsafe impl Send for PhysicalDeviceShaderModuleIdentifierFeaturesEXT {}
21217unsafe impl Sync for PhysicalDeviceShaderModuleIdentifierFeaturesEXT {}
21218
21219/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT.html>
21220#[repr(C)]
21221#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21222pub struct PhysicalDeviceShaderModuleIdentifierPropertiesEXT {
21223    pub s_type: StructureType,
21224    pub next: *mut c_void,
21225    pub shader_module_identifier_algorithm_uuid: ByteArray<UUID_SIZE>,
21226}
21227
21228impl Default for PhysicalDeviceShaderModuleIdentifierPropertiesEXT {
21229    #[inline]
21230    fn default() -> Self {
21231        Self {
21232            s_type: StructureType::PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT,
21233            next: ptr::null_mut(),
21234            shader_module_identifier_algorithm_uuid: ByteArray::default(),
21235        }
21236    }
21237}
21238
21239unsafe impl Send for PhysicalDeviceShaderModuleIdentifierPropertiesEXT {}
21240unsafe impl Sync for PhysicalDeviceShaderModuleIdentifierPropertiesEXT {}
21241
21242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderObjectFeaturesEXT.html>
21243#[repr(C)]
21244#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21245pub struct PhysicalDeviceShaderObjectFeaturesEXT {
21246    pub s_type: StructureType,
21247    pub next: *mut c_void,
21248    pub shader_object: Bool32,
21249}
21250
21251impl Default for PhysicalDeviceShaderObjectFeaturesEXT {
21252    #[inline]
21253    fn default() -> Self {
21254        Self {
21255            s_type: StructureType::PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT,
21256            next: ptr::null_mut(),
21257            shader_object: Bool32::default(),
21258        }
21259    }
21260}
21261
21262unsafe impl Send for PhysicalDeviceShaderObjectFeaturesEXT {}
21263unsafe impl Sync for PhysicalDeviceShaderObjectFeaturesEXT {}
21264
21265/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderObjectPropertiesEXT.html>
21266#[repr(C)]
21267#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21268pub struct PhysicalDeviceShaderObjectPropertiesEXT {
21269    pub s_type: StructureType,
21270    pub next: *mut c_void,
21271    pub shader_binary_uuid: ByteArray<UUID_SIZE>,
21272    pub shader_binary_version: u32,
21273}
21274
21275impl Default for PhysicalDeviceShaderObjectPropertiesEXT {
21276    #[inline]
21277    fn default() -> Self {
21278        Self {
21279            s_type: StructureType::PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT,
21280            next: ptr::null_mut(),
21281            shader_binary_uuid: ByteArray::default(),
21282            shader_binary_version: u32::default(),
21283        }
21284    }
21285}
21286
21287unsafe impl Send for PhysicalDeviceShaderObjectPropertiesEXT {}
21288unsafe impl Sync for PhysicalDeviceShaderObjectPropertiesEXT {}
21289
21290/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderQuadControlFeaturesKHR.html>
21291#[repr(C)]
21292#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21293pub struct PhysicalDeviceShaderQuadControlFeaturesKHR {
21294    pub s_type: StructureType,
21295    pub next: *mut c_void,
21296    pub shader_quad_control: Bool32,
21297}
21298
21299impl Default for PhysicalDeviceShaderQuadControlFeaturesKHR {
21300    #[inline]
21301    fn default() -> Self {
21302        Self {
21303            s_type: StructureType::PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR,
21304            next: ptr::null_mut(),
21305            shader_quad_control: Bool32::default(),
21306        }
21307    }
21308}
21309
21310unsafe impl Send for PhysicalDeviceShaderQuadControlFeaturesKHR {}
21311unsafe impl Sync for PhysicalDeviceShaderQuadControlFeaturesKHR {}
21312
21313/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR.html>
21314#[repr(C)]
21315#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21316pub struct PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {
21317    pub s_type: StructureType,
21318    pub next: *mut c_void,
21319    pub shader_relaxed_extended_instruction: Bool32,
21320}
21321
21322impl Default for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {
21323    #[inline]
21324    fn default() -> Self {
21325        Self {
21326            s_type: StructureType::PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR,
21327            next: ptr::null_mut(),
21328            shader_relaxed_extended_instruction: Bool32::default(),
21329        }
21330    }
21331}
21332
21333unsafe impl Send for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {}
21334unsafe impl Sync for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {}
21335
21336/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT.html>
21337#[repr(C)]
21338#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21339pub struct PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {
21340    pub s_type: StructureType,
21341    pub next: *mut c_void,
21342    pub shader_replicated_composites: Bool32,
21343}
21344
21345impl Default for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {
21346    #[inline]
21347    fn default() -> Self {
21348        Self {
21349            s_type: StructureType::PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT,
21350            next: ptr::null_mut(),
21351            shader_replicated_composites: Bool32::default(),
21352        }
21353    }
21354}
21355
21356unsafe impl Send for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {}
21357unsafe impl Sync for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {}
21358
21359/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.html>
21360#[repr(C)]
21361#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21362pub struct PhysicalDeviceShaderSMBuiltinsFeaturesNV {
21363    pub s_type: StructureType,
21364    pub next: *mut c_void,
21365    pub shader_sm_builtins: Bool32,
21366}
21367
21368impl Default for PhysicalDeviceShaderSMBuiltinsFeaturesNV {
21369    #[inline]
21370    fn default() -> Self {
21371        Self {
21372            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV,
21373            next: ptr::null_mut(),
21374            shader_sm_builtins: Bool32::default(),
21375        }
21376    }
21377}
21378
21379unsafe impl Send for PhysicalDeviceShaderSMBuiltinsFeaturesNV {}
21380unsafe impl Sync for PhysicalDeviceShaderSMBuiltinsFeaturesNV {}
21381
21382/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSMBuiltinsPropertiesNV.html>
21383#[repr(C)]
21384#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21385pub struct PhysicalDeviceShaderSMBuiltinsPropertiesNV {
21386    pub s_type: StructureType,
21387    pub next: *mut c_void,
21388    pub shader_sm_count: u32,
21389    pub shader_warps_per_sm: u32,
21390}
21391
21392impl Default for PhysicalDeviceShaderSMBuiltinsPropertiesNV {
21393    #[inline]
21394    fn default() -> Self {
21395        Self {
21396            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV,
21397            next: ptr::null_mut(),
21398            shader_sm_count: u32::default(),
21399            shader_warps_per_sm: u32::default(),
21400        }
21401    }
21402}
21403
21404unsafe impl Send for PhysicalDeviceShaderSMBuiltinsPropertiesNV {}
21405unsafe impl Sync for PhysicalDeviceShaderSMBuiltinsPropertiesNV {}
21406
21407/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures.html>
21408#[repr(C)]
21409#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21410pub struct PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
21411    pub s_type: StructureType,
21412    pub next: *mut c_void,
21413    pub shader_subgroup_extended_types: Bool32,
21414}
21415
21416impl Default for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
21417    #[inline]
21418    fn default() -> Self {
21419        Self {
21420            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
21421            next: ptr::null_mut(),
21422            shader_subgroup_extended_types: Bool32::default(),
21423        }
21424    }
21425}
21426
21427unsafe impl Send for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {}
21428unsafe impl Sync for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {}
21429
21430/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupRotateFeatures.html>
21431#[repr(C)]
21432#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21433pub struct PhysicalDeviceShaderSubgroupRotateFeatures {
21434    pub s_type: StructureType,
21435    pub next: *mut c_void,
21436    pub shader_subgroup_rotate: Bool32,
21437    pub shader_subgroup_rotate_clustered: Bool32,
21438}
21439
21440impl Default for PhysicalDeviceShaderSubgroupRotateFeatures {
21441    #[inline]
21442    fn default() -> Self {
21443        Self {
21444            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES,
21445            next: ptr::null_mut(),
21446            shader_subgroup_rotate: Bool32::default(),
21447            shader_subgroup_rotate_clustered: Bool32::default(),
21448        }
21449    }
21450}
21451
21452unsafe impl Send for PhysicalDeviceShaderSubgroupRotateFeatures {}
21453unsafe impl Sync for PhysicalDeviceShaderSubgroupRotateFeatures {}
21454
21455/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.html>
21456#[repr(C)]
21457#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21458pub struct PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
21459    pub s_type: StructureType,
21460    pub next: *mut c_void,
21461    pub shader_subgroup_uniform_control_flow: Bool32,
21462}
21463
21464impl Default for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
21465    #[inline]
21466    fn default() -> Self {
21467        Self {
21468            s_type:
21469                StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR,
21470            next: ptr::null_mut(),
21471            shader_subgroup_uniform_control_flow: Bool32::default(),
21472        }
21473    }
21474}
21475
21476unsafe impl Send for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {}
21477unsafe impl Sync for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {}
21478
21479/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTerminateInvocationFeatures.html>
21480#[repr(C)]
21481#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21482pub struct PhysicalDeviceShaderTerminateInvocationFeatures {
21483    pub s_type: StructureType,
21484    pub next: *mut c_void,
21485    pub shader_terminate_invocation: Bool32,
21486}
21487
21488impl Default for PhysicalDeviceShaderTerminateInvocationFeatures {
21489    #[inline]
21490    fn default() -> Self {
21491        Self {
21492            s_type: StructureType::PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES,
21493            next: ptr::null_mut(),
21494            shader_terminate_invocation: Bool32::default(),
21495        }
21496    }
21497}
21498
21499unsafe impl Send for PhysicalDeviceShaderTerminateInvocationFeatures {}
21500unsafe impl Sync for PhysicalDeviceShaderTerminateInvocationFeatures {}
21501
21502/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTileImageFeaturesEXT.html>
21503#[repr(C)]
21504#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21505pub struct PhysicalDeviceShaderTileImageFeaturesEXT {
21506    pub s_type: StructureType,
21507    pub next: *mut c_void,
21508    pub shader_tile_image_color_read_access: Bool32,
21509    pub shader_tile_image_depth_read_access: Bool32,
21510    pub shader_tile_image_stencil_read_access: Bool32,
21511}
21512
21513impl Default for PhysicalDeviceShaderTileImageFeaturesEXT {
21514    #[inline]
21515    fn default() -> Self {
21516        Self {
21517            s_type: StructureType::PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT,
21518            next: ptr::null_mut(),
21519            shader_tile_image_color_read_access: Bool32::default(),
21520            shader_tile_image_depth_read_access: Bool32::default(),
21521            shader_tile_image_stencil_read_access: Bool32::default(),
21522        }
21523    }
21524}
21525
21526unsafe impl Send for PhysicalDeviceShaderTileImageFeaturesEXT {}
21527unsafe impl Sync for PhysicalDeviceShaderTileImageFeaturesEXT {}
21528
21529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTileImagePropertiesEXT.html>
21530#[repr(C)]
21531#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21532pub struct PhysicalDeviceShaderTileImagePropertiesEXT {
21533    pub s_type: StructureType,
21534    pub next: *mut c_void,
21535    pub shader_tile_image_coherent_read_accelerated: Bool32,
21536    pub shader_tile_image_read_sample_from_pixel_rate_invocation: Bool32,
21537    pub shader_tile_image_read_from_helper_invocation: Bool32,
21538}
21539
21540impl Default for PhysicalDeviceShaderTileImagePropertiesEXT {
21541    #[inline]
21542    fn default() -> Self {
21543        Self {
21544            s_type: StructureType::PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT,
21545            next: ptr::null_mut(),
21546            shader_tile_image_coherent_read_accelerated: Bool32::default(),
21547            shader_tile_image_read_sample_from_pixel_rate_invocation: Bool32::default(),
21548            shader_tile_image_read_from_helper_invocation: Bool32::default(),
21549        }
21550    }
21551}
21552
21553unsafe impl Send for PhysicalDeviceShaderTileImagePropertiesEXT {}
21554unsafe impl Sync for PhysicalDeviceShaderTileImagePropertiesEXT {}
21555
21556/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT.html>
21557#[repr(C)]
21558#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21559pub struct PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT {
21560    pub s_type: StructureType,
21561    pub next: *mut c_void,
21562    pub shader_uniform_buffer_unsized_array: Bool32,
21563}
21564
21565impl Default for PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT {
21566    #[inline]
21567    fn default() -> Self {
21568        Self {
21569            s_type: StructureType::PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT,
21570            next: ptr::null_mut(),
21571            shader_uniform_buffer_unsized_array: Bool32::default(),
21572        }
21573    }
21574}
21575
21576unsafe impl Send for PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT {}
21577unsafe impl Sync for PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT {}
21578
21579/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderUntypedPointersFeaturesKHR.html>
21580#[repr(C)]
21581#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21582pub struct PhysicalDeviceShaderUntypedPointersFeaturesKHR {
21583    pub s_type: StructureType,
21584    pub next: *mut c_void,
21585    pub shader_untyped_pointers: Bool32,
21586}
21587
21588impl Default for PhysicalDeviceShaderUntypedPointersFeaturesKHR {
21589    #[inline]
21590    fn default() -> Self {
21591        Self {
21592            s_type: StructureType::PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR,
21593            next: ptr::null_mut(),
21594            shader_untyped_pointers: Bool32::default(),
21595        }
21596    }
21597}
21598
21599unsafe impl Send for PhysicalDeviceShaderUntypedPointersFeaturesKHR {}
21600unsafe impl Sync for PhysicalDeviceShaderUntypedPointersFeaturesKHR {}
21601
21602/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShadingRateImageFeaturesNV.html>
21603#[repr(C)]
21604#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21605pub struct PhysicalDeviceShadingRateImageFeaturesNV {
21606    pub s_type: StructureType,
21607    pub next: *mut c_void,
21608    pub shading_rate_image: Bool32,
21609    pub shading_rate_coarse_sample_order: Bool32,
21610}
21611
21612impl Default for PhysicalDeviceShadingRateImageFeaturesNV {
21613    #[inline]
21614    fn default() -> Self {
21615        Self {
21616            s_type: StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV,
21617            next: ptr::null_mut(),
21618            shading_rate_image: Bool32::default(),
21619            shading_rate_coarse_sample_order: Bool32::default(),
21620        }
21621    }
21622}
21623
21624unsafe impl Send for PhysicalDeviceShadingRateImageFeaturesNV {}
21625unsafe impl Sync for PhysicalDeviceShadingRateImageFeaturesNV {}
21626
21627/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShadingRateImagePropertiesNV.html>
21628#[repr(C)]
21629#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21630pub struct PhysicalDeviceShadingRateImagePropertiesNV {
21631    pub s_type: StructureType,
21632    pub next: *mut c_void,
21633    pub shading_rate_texel_size: Extent2D,
21634    pub shading_rate_palette_size: u32,
21635    pub shading_rate_max_coarse_samples: u32,
21636}
21637
21638impl Default for PhysicalDeviceShadingRateImagePropertiesNV {
21639    #[inline]
21640    fn default() -> Self {
21641        Self {
21642            s_type: StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV,
21643            next: ptr::null_mut(),
21644            shading_rate_texel_size: Extent2D::default(),
21645            shading_rate_palette_size: u32::default(),
21646            shading_rate_max_coarse_samples: u32::default(),
21647        }
21648    }
21649}
21650
21651unsafe impl Send for PhysicalDeviceShadingRateImagePropertiesNV {}
21652unsafe impl Sync for PhysicalDeviceShadingRateImagePropertiesNV {}
21653
21654/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseImageFormatInfo2.html>
21655#[repr(C)]
21656#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21657pub struct PhysicalDeviceSparseImageFormatInfo2 {
21658    pub s_type: StructureType,
21659    pub next: *const c_void,
21660    pub format: Format,
21661    pub type_: ImageType,
21662    pub samples: SampleCountFlags,
21663    pub usage: ImageUsageFlags,
21664    pub tiling: ImageTiling,
21665}
21666
21667impl Default for PhysicalDeviceSparseImageFormatInfo2 {
21668    #[inline]
21669    fn default() -> Self {
21670        Self {
21671            s_type: StructureType::PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
21672            next: ptr::null(),
21673            format: Format::default(),
21674            type_: ImageType::default(),
21675            samples: SampleCountFlags::default(),
21676            usage: ImageUsageFlags::default(),
21677            tiling: ImageTiling::default(),
21678        }
21679    }
21680}
21681
21682unsafe impl Send for PhysicalDeviceSparseImageFormatInfo2 {}
21683unsafe impl Sync for PhysicalDeviceSparseImageFormatInfo2 {}
21684
21685/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseProperties.html>
21686#[repr(C)]
21687#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
21688pub struct PhysicalDeviceSparseProperties {
21689    pub residency_standard_2d_block_shape: Bool32,
21690    pub residency_standard_2d_multisample_block_shape: Bool32,
21691    pub residency_standard_3d_block_shape: Bool32,
21692    pub residency_aligned_mip_size: Bool32,
21693    pub residency_non_resident_strict: Bool32,
21694}
21695
21696/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupProperties.html>
21697#[repr(C)]
21698#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21699pub struct PhysicalDeviceSubgroupProperties {
21700    pub s_type: StructureType,
21701    pub next: *mut c_void,
21702    pub subgroup_size: u32,
21703    pub supported_stages: ShaderStageFlags,
21704    pub supported_operations: SubgroupFeatureFlags,
21705    pub quad_operations_in_all_stages: Bool32,
21706}
21707
21708impl Default for PhysicalDeviceSubgroupProperties {
21709    #[inline]
21710    fn default() -> Self {
21711        Self {
21712            s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_PROPERTIES,
21713            next: ptr::null_mut(),
21714            subgroup_size: u32::default(),
21715            supported_stages: ShaderStageFlags::default(),
21716            supported_operations: SubgroupFeatureFlags::default(),
21717            quad_operations_in_all_stages: Bool32::default(),
21718        }
21719    }
21720}
21721
21722unsafe impl Send for PhysicalDeviceSubgroupProperties {}
21723unsafe impl Sync for PhysicalDeviceSubgroupProperties {}
21724
21725/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlFeatures.html>
21726#[repr(C)]
21727#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21728pub struct PhysicalDeviceSubgroupSizeControlFeatures {
21729    pub s_type: StructureType,
21730    pub next: *mut c_void,
21731    pub subgroup_size_control: Bool32,
21732    pub compute_full_subgroups: Bool32,
21733}
21734
21735impl Default for PhysicalDeviceSubgroupSizeControlFeatures {
21736    #[inline]
21737    fn default() -> Self {
21738        Self {
21739            s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES,
21740            next: ptr::null_mut(),
21741            subgroup_size_control: Bool32::default(),
21742            compute_full_subgroups: Bool32::default(),
21743        }
21744    }
21745}
21746
21747unsafe impl Send for PhysicalDeviceSubgroupSizeControlFeatures {}
21748unsafe impl Sync for PhysicalDeviceSubgroupSizeControlFeatures {}
21749
21750/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlProperties.html>
21751#[repr(C)]
21752#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21753pub struct PhysicalDeviceSubgroupSizeControlProperties {
21754    pub s_type: StructureType,
21755    pub next: *mut c_void,
21756    pub min_subgroup_size: u32,
21757    pub max_subgroup_size: u32,
21758    pub max_compute_workgroup_subgroups: u32,
21759    pub required_subgroup_size_stages: ShaderStageFlags,
21760}
21761
21762impl Default for PhysicalDeviceSubgroupSizeControlProperties {
21763    #[inline]
21764    fn default() -> Self {
21765        Self {
21766            s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES,
21767            next: ptr::null_mut(),
21768            min_subgroup_size: u32::default(),
21769            max_subgroup_size: u32::default(),
21770            max_compute_workgroup_subgroups: u32::default(),
21771            required_subgroup_size_stages: ShaderStageFlags::default(),
21772        }
21773    }
21774}
21775
21776unsafe impl Send for PhysicalDeviceSubgroupSizeControlProperties {}
21777unsafe impl Sync for PhysicalDeviceSubgroupSizeControlProperties {}
21778
21779/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT.html>
21780#[repr(C)]
21781#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21782pub struct PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
21783    pub s_type: StructureType,
21784    pub next: *mut c_void,
21785    pub subpass_merge_feedback: Bool32,
21786}
21787
21788impl Default for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
21789    #[inline]
21790    fn default() -> Self {
21791        Self {
21792            s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT,
21793            next: ptr::null_mut(),
21794            subpass_merge_feedback: Bool32::default(),
21795        }
21796    }
21797}
21798
21799unsafe impl Send for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {}
21800unsafe impl Sync for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {}
21801
21802/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.html>
21803#[repr(C)]
21804#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21805pub struct PhysicalDeviceSubpassShadingFeaturesHUAWEI {
21806    pub s_type: StructureType,
21807    pub next: *mut c_void,
21808    pub subpass_shading: Bool32,
21809}
21810
21811impl Default for PhysicalDeviceSubpassShadingFeaturesHUAWEI {
21812    #[inline]
21813    fn default() -> Self {
21814        Self {
21815            s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI,
21816            next: ptr::null_mut(),
21817            subpass_shading: Bool32::default(),
21818        }
21819    }
21820}
21821
21822unsafe impl Send for PhysicalDeviceSubpassShadingFeaturesHUAWEI {}
21823unsafe impl Sync for PhysicalDeviceSubpassShadingFeaturesHUAWEI {}
21824
21825/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassShadingPropertiesHUAWEI.html>
21826#[repr(C)]
21827#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21828pub struct PhysicalDeviceSubpassShadingPropertiesHUAWEI {
21829    pub s_type: StructureType,
21830    pub next: *mut c_void,
21831    pub max_subpass_shading_workgroup_size_aspect_ratio: u32,
21832}
21833
21834impl Default for PhysicalDeviceSubpassShadingPropertiesHUAWEI {
21835    #[inline]
21836    fn default() -> Self {
21837        Self {
21838            s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI,
21839            next: ptr::null_mut(),
21840            max_subpass_shading_workgroup_size_aspect_ratio: u32::default(),
21841        }
21842    }
21843}
21844
21845unsafe impl Send for PhysicalDeviceSubpassShadingPropertiesHUAWEI {}
21846unsafe impl Sync for PhysicalDeviceSubpassShadingPropertiesHUAWEI {}
21847
21848/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSurfaceInfo2KHR.html>
21849#[repr(C)]
21850#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21851pub struct PhysicalDeviceSurfaceInfo2KHR {
21852    pub s_type: StructureType,
21853    pub next: *const c_void,
21854    pub surface: SurfaceKHR,
21855}
21856
21857impl Default for PhysicalDeviceSurfaceInfo2KHR {
21858    #[inline]
21859    fn default() -> Self {
21860        Self {
21861            s_type: StructureType::PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
21862            next: ptr::null(),
21863            surface: SurfaceKHR::default(),
21864        }
21865    }
21866}
21867
21868unsafe impl Send for PhysicalDeviceSurfaceInfo2KHR {}
21869unsafe impl Sync for PhysicalDeviceSurfaceInfo2KHR {}
21870
21871/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR.html>
21872#[repr(C)]
21873#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21874pub struct PhysicalDeviceSwapchainMaintenance1FeaturesKHR {
21875    pub s_type: StructureType,
21876    pub next: *mut c_void,
21877    pub swapchain_maintenance1: Bool32,
21878}
21879
21880impl Default for PhysicalDeviceSwapchainMaintenance1FeaturesKHR {
21881    #[inline]
21882    fn default() -> Self {
21883        Self {
21884            s_type: StructureType::PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR,
21885            next: ptr::null_mut(),
21886            swapchain_maintenance1: Bool32::default(),
21887        }
21888    }
21889}
21890
21891unsafe impl Send for PhysicalDeviceSwapchainMaintenance1FeaturesKHR {}
21892unsafe impl Sync for PhysicalDeviceSwapchainMaintenance1FeaturesKHR {}
21893
21894/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSynchronization2Features.html>
21895#[repr(C)]
21896#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21897pub struct PhysicalDeviceSynchronization2Features {
21898    pub s_type: StructureType,
21899    pub next: *mut c_void,
21900    pub synchronization2: Bool32,
21901}
21902
21903impl Default for PhysicalDeviceSynchronization2Features {
21904    #[inline]
21905    fn default() -> Self {
21906        Self {
21907            s_type: StructureType::PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES,
21908            next: ptr::null_mut(),
21909            synchronization2: Bool32::default(),
21910        }
21911    }
21912}
21913
21914unsafe impl Send for PhysicalDeviceSynchronization2Features {}
21915unsafe impl Sync for PhysicalDeviceSynchronization2Features {}
21916
21917/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTensorFeaturesARM.html>
21918#[repr(C)]
21919#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21920pub struct PhysicalDeviceTensorFeaturesARM {
21921    pub s_type: StructureType,
21922    pub next: *mut c_void,
21923    pub tensor_non_packed: Bool32,
21924    pub shader_tensor_access: Bool32,
21925    pub shader_storage_tensor_array_dynamic_indexing: Bool32,
21926    pub shader_storage_tensor_array_non_uniform_indexing: Bool32,
21927    pub descriptor_binding_storage_tensor_update_after_bind: Bool32,
21928    pub tensors: Bool32,
21929}
21930
21931impl Default for PhysicalDeviceTensorFeaturesARM {
21932    #[inline]
21933    fn default() -> Self {
21934        Self {
21935            s_type: StructureType::PHYSICAL_DEVICE_TENSOR_FEATURES_ARM,
21936            next: ptr::null_mut(),
21937            tensor_non_packed: Bool32::default(),
21938            shader_tensor_access: Bool32::default(),
21939            shader_storage_tensor_array_dynamic_indexing: Bool32::default(),
21940            shader_storage_tensor_array_non_uniform_indexing: Bool32::default(),
21941            descriptor_binding_storage_tensor_update_after_bind: Bool32::default(),
21942            tensors: Bool32::default(),
21943        }
21944    }
21945}
21946
21947unsafe impl Send for PhysicalDeviceTensorFeaturesARM {}
21948unsafe impl Sync for PhysicalDeviceTensorFeaturesARM {}
21949
21950/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTensorPropertiesARM.html>
21951#[repr(C)]
21952#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21953pub struct PhysicalDeviceTensorPropertiesARM {
21954    pub s_type: StructureType,
21955    pub next: *mut c_void,
21956    pub max_tensor_dimension_count: u32,
21957    pub max_tensor_elements: u64,
21958    pub max_per_dimension_tensor_elements: u64,
21959    pub max_tensor_stride: i64,
21960    pub max_tensor_size: u64,
21961    pub max_tensor_shader_access_array_length: u32,
21962    pub max_tensor_shader_access_size: u32,
21963    pub max_descriptor_set_storage_tensors: u32,
21964    pub max_per_stage_descriptor_set_storage_tensors: u32,
21965    pub max_descriptor_set_update_after_bind_storage_tensors: u32,
21966    pub max_per_stage_descriptor_update_after_bind_storage_tensors: u32,
21967    pub shader_storage_tensor_array_non_uniform_indexing_native: Bool32,
21968    pub shader_tensor_supported_stages: ShaderStageFlags,
21969}
21970
21971impl Default for PhysicalDeviceTensorPropertiesARM {
21972    #[inline]
21973    fn default() -> Self {
21974        Self {
21975            s_type: StructureType::PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM,
21976            next: ptr::null_mut(),
21977            max_tensor_dimension_count: u32::default(),
21978            max_tensor_elements: u64::default(),
21979            max_per_dimension_tensor_elements: u64::default(),
21980            max_tensor_stride: i64::default(),
21981            max_tensor_size: u64::default(),
21982            max_tensor_shader_access_array_length: u32::default(),
21983            max_tensor_shader_access_size: u32::default(),
21984            max_descriptor_set_storage_tensors: u32::default(),
21985            max_per_stage_descriptor_set_storage_tensors: u32::default(),
21986            max_descriptor_set_update_after_bind_storage_tensors: u32::default(),
21987            max_per_stage_descriptor_update_after_bind_storage_tensors: u32::default(),
21988            shader_storage_tensor_array_non_uniform_indexing_native: Bool32::default(),
21989            shader_tensor_supported_stages: ShaderStageFlags::default(),
21990        }
21991    }
21992}
21993
21994unsafe impl Send for PhysicalDeviceTensorPropertiesARM {}
21995unsafe impl Sync for PhysicalDeviceTensorPropertiesARM {}
21996
21997/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.html>
21998#[repr(C)]
21999#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22000pub struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
22001    pub s_type: StructureType,
22002    pub next: *mut c_void,
22003    pub texel_buffer_alignment: Bool32,
22004}
22005
22006impl Default for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
22007    #[inline]
22008    fn default() -> Self {
22009        Self {
22010            s_type: StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT,
22011            next: ptr::null_mut(),
22012            texel_buffer_alignment: Bool32::default(),
22013        }
22014    }
22015}
22016
22017unsafe impl Send for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {}
22018unsafe impl Sync for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {}
22019
22020/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentProperties.html>
22021#[repr(C)]
22022#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22023pub struct PhysicalDeviceTexelBufferAlignmentProperties {
22024    pub s_type: StructureType,
22025    pub next: *mut c_void,
22026    pub storage_texel_buffer_offset_alignment_bytes: DeviceSize,
22027    pub storage_texel_buffer_offset_single_texel_alignment: Bool32,
22028    pub uniform_texel_buffer_offset_alignment_bytes: DeviceSize,
22029    pub uniform_texel_buffer_offset_single_texel_alignment: Bool32,
22030}
22031
22032impl Default for PhysicalDeviceTexelBufferAlignmentProperties {
22033    #[inline]
22034    fn default() -> Self {
22035        Self {
22036            s_type: StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES,
22037            next: ptr::null_mut(),
22038            storage_texel_buffer_offset_alignment_bytes: DeviceSize::default(),
22039            storage_texel_buffer_offset_single_texel_alignment: Bool32::default(),
22040            uniform_texel_buffer_offset_alignment_bytes: DeviceSize::default(),
22041            uniform_texel_buffer_offset_single_texel_alignment: Bool32::default(),
22042        }
22043    }
22044}
22045
22046unsafe impl Send for PhysicalDeviceTexelBufferAlignmentProperties {}
22047unsafe impl Sync for PhysicalDeviceTexelBufferAlignmentProperties {}
22048
22049/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTextureCompressionASTCHDRFeatures.html>
22050#[repr(C)]
22051#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22052pub struct PhysicalDeviceTextureCompressionASTCHDRFeatures {
22053    pub s_type: StructureType,
22054    pub next: *mut c_void,
22055    pub texture_compression_astc_hdr: Bool32,
22056}
22057
22058impl Default for PhysicalDeviceTextureCompressionASTCHDRFeatures {
22059    #[inline]
22060    fn default() -> Self {
22061        Self {
22062            s_type: StructureType::PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES,
22063            next: ptr::null_mut(),
22064            texture_compression_astc_hdr: Bool32::default(),
22065        }
22066    }
22067}
22068
22069unsafe impl Send for PhysicalDeviceTextureCompressionASTCHDRFeatures {}
22070unsafe impl Sync for PhysicalDeviceTextureCompressionASTCHDRFeatures {}
22071
22072/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileMemoryHeapFeaturesQCOM.html>
22073#[repr(C)]
22074#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22075pub struct PhysicalDeviceTileMemoryHeapFeaturesQCOM {
22076    pub s_type: StructureType,
22077    pub next: *mut c_void,
22078    pub tile_memory_heap: Bool32,
22079}
22080
22081impl Default for PhysicalDeviceTileMemoryHeapFeaturesQCOM {
22082    #[inline]
22083    fn default() -> Self {
22084        Self {
22085            s_type: StructureType::PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM,
22086            next: ptr::null_mut(),
22087            tile_memory_heap: Bool32::default(),
22088        }
22089    }
22090}
22091
22092unsafe impl Send for PhysicalDeviceTileMemoryHeapFeaturesQCOM {}
22093unsafe impl Sync for PhysicalDeviceTileMemoryHeapFeaturesQCOM {}
22094
22095/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileMemoryHeapPropertiesQCOM.html>
22096#[repr(C)]
22097#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22098pub struct PhysicalDeviceTileMemoryHeapPropertiesQCOM {
22099    pub s_type: StructureType,
22100    pub next: *mut c_void,
22101    pub queue_submit_boundary: Bool32,
22102    pub tile_buffer_transfers: Bool32,
22103}
22104
22105impl Default for PhysicalDeviceTileMemoryHeapPropertiesQCOM {
22106    #[inline]
22107    fn default() -> Self {
22108        Self {
22109            s_type: StructureType::PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM,
22110            next: ptr::null_mut(),
22111            queue_submit_boundary: Bool32::default(),
22112            tile_buffer_transfers: Bool32::default(),
22113        }
22114    }
22115}
22116
22117unsafe impl Send for PhysicalDeviceTileMemoryHeapPropertiesQCOM {}
22118unsafe impl Sync for PhysicalDeviceTileMemoryHeapPropertiesQCOM {}
22119
22120/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTilePropertiesFeaturesQCOM.html>
22121#[repr(C)]
22122#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22123pub struct PhysicalDeviceTilePropertiesFeaturesQCOM {
22124    pub s_type: StructureType,
22125    pub next: *mut c_void,
22126    pub tile_properties: Bool32,
22127}
22128
22129impl Default for PhysicalDeviceTilePropertiesFeaturesQCOM {
22130    #[inline]
22131    fn default() -> Self {
22132        Self {
22133            s_type: StructureType::PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM,
22134            next: ptr::null_mut(),
22135            tile_properties: Bool32::default(),
22136        }
22137    }
22138}
22139
22140unsafe impl Send for PhysicalDeviceTilePropertiesFeaturesQCOM {}
22141unsafe impl Sync for PhysicalDeviceTilePropertiesFeaturesQCOM {}
22142
22143/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileShadingFeaturesQCOM.html>
22144#[repr(C)]
22145#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22146pub struct PhysicalDeviceTileShadingFeaturesQCOM {
22147    pub s_type: StructureType,
22148    pub next: *mut c_void,
22149    pub tile_shading: Bool32,
22150    pub tile_shading_fragment_stage: Bool32,
22151    pub tile_shading_color_attachments: Bool32,
22152    pub tile_shading_depth_attachments: Bool32,
22153    pub tile_shading_stencil_attachments: Bool32,
22154    pub tile_shading_input_attachments: Bool32,
22155    pub tile_shading_sampled_attachments: Bool32,
22156    pub tile_shading_per_tile_draw: Bool32,
22157    pub tile_shading_per_tile_dispatch: Bool32,
22158    pub tile_shading_dispatch_tile: Bool32,
22159    pub tile_shading_apron: Bool32,
22160    pub tile_shading_anisotropic_apron: Bool32,
22161    pub tile_shading_atomic_ops: Bool32,
22162    pub tile_shading_image_processing: Bool32,
22163}
22164
22165impl Default for PhysicalDeviceTileShadingFeaturesQCOM {
22166    #[inline]
22167    fn default() -> Self {
22168        Self {
22169            s_type: StructureType::PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM,
22170            next: ptr::null_mut(),
22171            tile_shading: Bool32::default(),
22172            tile_shading_fragment_stage: Bool32::default(),
22173            tile_shading_color_attachments: Bool32::default(),
22174            tile_shading_depth_attachments: Bool32::default(),
22175            tile_shading_stencil_attachments: Bool32::default(),
22176            tile_shading_input_attachments: Bool32::default(),
22177            tile_shading_sampled_attachments: Bool32::default(),
22178            tile_shading_per_tile_draw: Bool32::default(),
22179            tile_shading_per_tile_dispatch: Bool32::default(),
22180            tile_shading_dispatch_tile: Bool32::default(),
22181            tile_shading_apron: Bool32::default(),
22182            tile_shading_anisotropic_apron: Bool32::default(),
22183            tile_shading_atomic_ops: Bool32::default(),
22184            tile_shading_image_processing: Bool32::default(),
22185        }
22186    }
22187}
22188
22189unsafe impl Send for PhysicalDeviceTileShadingFeaturesQCOM {}
22190unsafe impl Sync for PhysicalDeviceTileShadingFeaturesQCOM {}
22191
22192/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileShadingPropertiesQCOM.html>
22193#[repr(C)]
22194#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22195pub struct PhysicalDeviceTileShadingPropertiesQCOM {
22196    pub s_type: StructureType,
22197    pub next: *mut c_void,
22198    pub max_apron_size: u32,
22199    pub prefer_non_coherent: Bool32,
22200    pub tile_granularity: Extent2D,
22201    pub max_tile_shading_rate: Extent2D,
22202}
22203
22204impl Default for PhysicalDeviceTileShadingPropertiesQCOM {
22205    #[inline]
22206    fn default() -> Self {
22207        Self {
22208            s_type: StructureType::PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM,
22209            next: ptr::null_mut(),
22210            max_apron_size: u32::default(),
22211            prefer_non_coherent: Bool32::default(),
22212            tile_granularity: Extent2D::default(),
22213            max_tile_shading_rate: Extent2D::default(),
22214        }
22215    }
22216}
22217
22218unsafe impl Send for PhysicalDeviceTileShadingPropertiesQCOM {}
22219unsafe impl Sync for PhysicalDeviceTileShadingPropertiesQCOM {}
22220
22221/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreFeatures.html>
22222#[repr(C)]
22223#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22224pub struct PhysicalDeviceTimelineSemaphoreFeatures {
22225    pub s_type: StructureType,
22226    pub next: *mut c_void,
22227    pub timeline_semaphore: Bool32,
22228}
22229
22230impl Default for PhysicalDeviceTimelineSemaphoreFeatures {
22231    #[inline]
22232    fn default() -> Self {
22233        Self {
22234            s_type: StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
22235            next: ptr::null_mut(),
22236            timeline_semaphore: Bool32::default(),
22237        }
22238    }
22239}
22240
22241unsafe impl Send for PhysicalDeviceTimelineSemaphoreFeatures {}
22242unsafe impl Sync for PhysicalDeviceTimelineSemaphoreFeatures {}
22243
22244/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreProperties.html>
22245#[repr(C)]
22246#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22247pub struct PhysicalDeviceTimelineSemaphoreProperties {
22248    pub s_type: StructureType,
22249    pub next: *mut c_void,
22250    pub max_timeline_semaphore_value_difference: u64,
22251}
22252
22253impl Default for PhysicalDeviceTimelineSemaphoreProperties {
22254    #[inline]
22255    fn default() -> Self {
22256        Self {
22257            s_type: StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
22258            next: ptr::null_mut(),
22259            max_timeline_semaphore_value_difference: u64::default(),
22260        }
22261    }
22262}
22263
22264unsafe impl Send for PhysicalDeviceTimelineSemaphoreProperties {}
22265unsafe impl Sync for PhysicalDeviceTimelineSemaphoreProperties {}
22266
22267/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceToolProperties.html>
22268#[repr(C)]
22269#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22270pub struct PhysicalDeviceToolProperties {
22271    pub s_type: StructureType,
22272    pub next: *mut c_void,
22273    pub name: StringArray<MAX_EXTENSION_NAME_SIZE>,
22274    pub version: StringArray<MAX_EXTENSION_NAME_SIZE>,
22275    pub purposes: ToolPurposeFlags,
22276    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
22277    pub layer: StringArray<MAX_EXTENSION_NAME_SIZE>,
22278}
22279
22280impl Default for PhysicalDeviceToolProperties {
22281    #[inline]
22282    fn default() -> Self {
22283        Self {
22284            s_type: StructureType::PHYSICAL_DEVICE_TOOL_PROPERTIES,
22285            next: ptr::null_mut(),
22286            name: StringArray::default(),
22287            version: StringArray::default(),
22288            purposes: ToolPurposeFlags::default(),
22289            description: StringArray::default(),
22290            layer: StringArray::default(),
22291        }
22292    }
22293}
22294
22295unsafe impl Send for PhysicalDeviceToolProperties {}
22296unsafe impl Sync for PhysicalDeviceToolProperties {}
22297
22298/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTransformFeedbackFeaturesEXT.html>
22299#[repr(C)]
22300#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22301pub struct PhysicalDeviceTransformFeedbackFeaturesEXT {
22302    pub s_type: StructureType,
22303    pub next: *mut c_void,
22304    pub transform_feedback: Bool32,
22305    pub geometry_streams: Bool32,
22306}
22307
22308impl Default for PhysicalDeviceTransformFeedbackFeaturesEXT {
22309    #[inline]
22310    fn default() -> Self {
22311        Self {
22312            s_type: StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT,
22313            next: ptr::null_mut(),
22314            transform_feedback: Bool32::default(),
22315            geometry_streams: Bool32::default(),
22316        }
22317    }
22318}
22319
22320unsafe impl Send for PhysicalDeviceTransformFeedbackFeaturesEXT {}
22321unsafe impl Sync for PhysicalDeviceTransformFeedbackFeaturesEXT {}
22322
22323/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html>
22324#[repr(C)]
22325#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22326pub struct PhysicalDeviceTransformFeedbackPropertiesEXT {
22327    pub s_type: StructureType,
22328    pub next: *mut c_void,
22329    pub max_transform_feedback_streams: u32,
22330    pub max_transform_feedback_buffers: u32,
22331    pub max_transform_feedback_buffer_size: DeviceSize,
22332    pub max_transform_feedback_stream_data_size: u32,
22333    pub max_transform_feedback_buffer_data_size: u32,
22334    pub max_transform_feedback_buffer_data_stride: u32,
22335    pub transform_feedback_queries: Bool32,
22336    pub transform_feedback_streams_lines_triangles: Bool32,
22337    pub transform_feedback_rasterization_stream_select: Bool32,
22338    pub transform_feedback_draw: Bool32,
22339}
22340
22341impl Default for PhysicalDeviceTransformFeedbackPropertiesEXT {
22342    #[inline]
22343    fn default() -> Self {
22344        Self {
22345            s_type: StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT,
22346            next: ptr::null_mut(),
22347            max_transform_feedback_streams: u32::default(),
22348            max_transform_feedback_buffers: u32::default(),
22349            max_transform_feedback_buffer_size: DeviceSize::default(),
22350            max_transform_feedback_stream_data_size: u32::default(),
22351            max_transform_feedback_buffer_data_size: u32::default(),
22352            max_transform_feedback_buffer_data_stride: u32::default(),
22353            transform_feedback_queries: Bool32::default(),
22354            transform_feedback_streams_lines_triangles: Bool32::default(),
22355            transform_feedback_rasterization_stream_select: Bool32::default(),
22356            transform_feedback_draw: Bool32::default(),
22357        }
22358    }
22359}
22360
22361unsafe impl Send for PhysicalDeviceTransformFeedbackPropertiesEXT {}
22362unsafe impl Sync for PhysicalDeviceTransformFeedbackPropertiesEXT {}
22363
22364/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR.html>
22365#[repr(C)]
22366#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22367pub struct PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {
22368    pub s_type: StructureType,
22369    pub next: *mut c_void,
22370    pub unified_image_layouts: Bool32,
22371    pub unified_image_layouts_video: Bool32,
22372}
22373
22374impl Default for PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {
22375    #[inline]
22376    fn default() -> Self {
22377        Self {
22378            s_type: StructureType::PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR,
22379            next: ptr::null_mut(),
22380            unified_image_layouts: Bool32::default(),
22381            unified_image_layouts_video: Bool32::default(),
22382        }
22383    }
22384}
22385
22386unsafe impl Send for PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {}
22387unsafe impl Sync for PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {}
22388
22389/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceUniformBufferStandardLayoutFeatures.html>
22390#[repr(C)]
22391#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22392pub struct PhysicalDeviceUniformBufferStandardLayoutFeatures {
22393    pub s_type: StructureType,
22394    pub next: *mut c_void,
22395    pub uniform_buffer_standard_layout: Bool32,
22396}
22397
22398impl Default for PhysicalDeviceUniformBufferStandardLayoutFeatures {
22399    #[inline]
22400    fn default() -> Self {
22401        Self {
22402            s_type: StructureType::PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
22403            next: ptr::null_mut(),
22404            uniform_buffer_standard_layout: Bool32::default(),
22405        }
22406    }
22407}
22408
22409unsafe impl Send for PhysicalDeviceUniformBufferStandardLayoutFeatures {}
22410unsafe impl Sync for PhysicalDeviceUniformBufferStandardLayoutFeatures {}
22411
22412/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointersFeatures.html>
22413#[repr(C)]
22414#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22415pub struct PhysicalDeviceVariablePointersFeatures {
22416    pub s_type: StructureType,
22417    pub next: *mut c_void,
22418    pub variable_pointers_storage_buffer: Bool32,
22419    pub variable_pointers: Bool32,
22420}
22421
22422impl Default for PhysicalDeviceVariablePointersFeatures {
22423    #[inline]
22424    fn default() -> Self {
22425        Self {
22426            s_type: StructureType::PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
22427            next: ptr::null_mut(),
22428            variable_pointers_storage_buffer: Bool32::default(),
22429            variable_pointers: Bool32::default(),
22430        }
22431    }
22432}
22433
22434unsafe impl Send for PhysicalDeviceVariablePointersFeatures {}
22435unsafe impl Sync for PhysicalDeviceVariablePointersFeatures {}
22436
22437/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeatures.html>
22438#[repr(C)]
22439#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22440pub struct PhysicalDeviceVertexAttributeDivisorFeatures {
22441    pub s_type: StructureType,
22442    pub next: *mut c_void,
22443    pub vertex_attribute_instance_rate_divisor: Bool32,
22444    pub vertex_attribute_instance_rate_zero_divisor: Bool32,
22445}
22446
22447impl Default for PhysicalDeviceVertexAttributeDivisorFeatures {
22448    #[inline]
22449    fn default() -> Self {
22450        Self {
22451            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES,
22452            next: ptr::null_mut(),
22453            vertex_attribute_instance_rate_divisor: Bool32::default(),
22454            vertex_attribute_instance_rate_zero_divisor: Bool32::default(),
22455        }
22456    }
22457}
22458
22459unsafe impl Send for PhysicalDeviceVertexAttributeDivisorFeatures {}
22460unsafe impl Sync for PhysicalDeviceVertexAttributeDivisorFeatures {}
22461
22462/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorProperties.html>
22463#[repr(C)]
22464#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22465pub struct PhysicalDeviceVertexAttributeDivisorProperties {
22466    pub s_type: StructureType,
22467    pub next: *mut c_void,
22468    pub max_vertex_attrib_divisor: u32,
22469    pub supports_non_zero_first_instance: Bool32,
22470}
22471
22472impl Default for PhysicalDeviceVertexAttributeDivisorProperties {
22473    #[inline]
22474    fn default() -> Self {
22475        Self {
22476            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES,
22477            next: ptr::null_mut(),
22478            max_vertex_attrib_divisor: u32::default(),
22479            supports_non_zero_first_instance: Bool32::default(),
22480        }
22481    }
22482}
22483
22484unsafe impl Send for PhysicalDeviceVertexAttributeDivisorProperties {}
22485unsafe impl Sync for PhysicalDeviceVertexAttributeDivisorProperties {}
22486
22487/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT.html>
22488#[repr(C)]
22489#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22490pub struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
22491    pub s_type: StructureType,
22492    pub next: *mut c_void,
22493    pub max_vertex_attrib_divisor: u32,
22494}
22495
22496impl Default for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
22497    #[inline]
22498    fn default() -> Self {
22499        Self {
22500            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT,
22501            next: ptr::null_mut(),
22502            max_vertex_attrib_divisor: u32::default(),
22503        }
22504    }
22505}
22506
22507unsafe impl Send for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {}
22508unsafe impl Sync for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {}
22509
22510/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT.html>
22511#[repr(C)]
22512#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22513pub struct PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
22514    pub s_type: StructureType,
22515    pub next: *mut c_void,
22516    pub vertex_attribute_robustness: Bool32,
22517}
22518
22519impl Default for PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
22520    #[inline]
22521    fn default() -> Self {
22522        Self {
22523            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT,
22524            next: ptr::null_mut(),
22525            vertex_attribute_robustness: Bool32::default(),
22526        }
22527    }
22528}
22529
22530unsafe impl Send for PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {}
22531unsafe impl Sync for PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {}
22532
22533/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.html>
22534#[repr(C)]
22535#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22536pub struct PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
22537    pub s_type: StructureType,
22538    pub next: *mut c_void,
22539    pub vertex_input_dynamic_state: Bool32,
22540}
22541
22542impl Default for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
22543    #[inline]
22544    fn default() -> Self {
22545        Self {
22546            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT,
22547            next: ptr::null_mut(),
22548            vertex_input_dynamic_state: Bool32::default(),
22549        }
22550    }
22551}
22552
22553unsafe impl Send for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {}
22554unsafe impl Sync for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {}
22555
22556/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoDecodeVP9FeaturesKHR.html>
22557#[repr(C)]
22558#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22559pub struct PhysicalDeviceVideoDecodeVP9FeaturesKHR {
22560    pub s_type: StructureType,
22561    pub next: *mut c_void,
22562    pub video_decode_vp9: Bool32,
22563}
22564
22565impl Default for PhysicalDeviceVideoDecodeVP9FeaturesKHR {
22566    #[inline]
22567    fn default() -> Self {
22568        Self {
22569            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR,
22570            next: ptr::null_mut(),
22571            video_decode_vp9: Bool32::default(),
22572        }
22573    }
22574}
22575
22576unsafe impl Send for PhysicalDeviceVideoDecodeVP9FeaturesKHR {}
22577unsafe impl Sync for PhysicalDeviceVideoDecodeVP9FeaturesKHR {}
22578
22579/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeAV1FeaturesKHR.html>
22580#[repr(C)]
22581#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22582pub struct PhysicalDeviceVideoEncodeAV1FeaturesKHR {
22583    pub s_type: StructureType,
22584    pub next: *mut c_void,
22585    pub video_encode_av1: Bool32,
22586}
22587
22588impl Default for PhysicalDeviceVideoEncodeAV1FeaturesKHR {
22589    #[inline]
22590    fn default() -> Self {
22591        Self {
22592            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR,
22593            next: ptr::null_mut(),
22594            video_encode_av1: Bool32::default(),
22595        }
22596    }
22597}
22598
22599unsafe impl Send for PhysicalDeviceVideoEncodeAV1FeaturesKHR {}
22600unsafe impl Sync for PhysicalDeviceVideoEncodeAV1FeaturesKHR {}
22601
22602/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR.html>
22603#[repr(C)]
22604#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22605pub struct PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {
22606    pub s_type: StructureType,
22607    pub next: *mut c_void,
22608    pub video_encode_intra_refresh: Bool32,
22609}
22610
22611impl Default for PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {
22612    #[inline]
22613    fn default() -> Self {
22614        Self {
22615            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR,
22616            next: ptr::null_mut(),
22617            video_encode_intra_refresh: Bool32::default(),
22618        }
22619    }
22620}
22621
22622unsafe impl Send for PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {}
22623unsafe impl Sync for PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {}
22624
22625/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR.html>
22626#[repr(C)]
22627#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22628pub struct PhysicalDeviceVideoEncodeQualityLevelInfoKHR {
22629    pub s_type: StructureType,
22630    pub next: *const c_void,
22631    pub video_profile: *const VideoProfileInfoKHR,
22632    pub quality_level: u32,
22633}
22634
22635impl Default for PhysicalDeviceVideoEncodeQualityLevelInfoKHR {
22636    #[inline]
22637    fn default() -> Self {
22638        Self {
22639            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR,
22640            next: ptr::null(),
22641            video_profile: ptr::null(),
22642            quality_level: u32::default(),
22643        }
22644    }
22645}
22646
22647unsafe impl Send for PhysicalDeviceVideoEncodeQualityLevelInfoKHR {}
22648unsafe impl Sync for PhysicalDeviceVideoEncodeQualityLevelInfoKHR {}
22649
22650/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR.html>
22651#[repr(C)]
22652#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22653pub struct PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {
22654    pub s_type: StructureType,
22655    pub next: *mut c_void,
22656    pub video_encode_quantization_map: Bool32,
22657}
22658
22659impl Default for PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {
22660    #[inline]
22661    fn default() -> Self {
22662        Self {
22663            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR,
22664            next: ptr::null_mut(),
22665            video_encode_quantization_map: Bool32::default(),
22666        }
22667    }
22668}
22669
22670unsafe impl Send for PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {}
22671unsafe impl Sync for PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {}
22672
22673/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE.html>
22674#[repr(C)]
22675#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22676pub struct PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {
22677    pub s_type: StructureType,
22678    pub next: *mut c_void,
22679    pub video_encode_rgb_conversion: Bool32,
22680}
22681
22682impl Default for PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {
22683    #[inline]
22684    fn default() -> Self {
22685        Self {
22686            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_RGB_CONVERSION_FEATURES_VALVE,
22687            next: ptr::null_mut(),
22688            video_encode_rgb_conversion: Bool32::default(),
22689        }
22690    }
22691}
22692
22693unsafe impl Send for PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {}
22694unsafe impl Sync for PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {}
22695
22696/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoFormatInfoKHR.html>
22697#[repr(C)]
22698#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22699pub struct PhysicalDeviceVideoFormatInfoKHR {
22700    pub s_type: StructureType,
22701    pub next: *const c_void,
22702    pub image_usage: ImageUsageFlags,
22703}
22704
22705impl Default for PhysicalDeviceVideoFormatInfoKHR {
22706    #[inline]
22707    fn default() -> Self {
22708        Self {
22709            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR,
22710            next: ptr::null(),
22711            image_usage: ImageUsageFlags::default(),
22712        }
22713    }
22714}
22715
22716unsafe impl Send for PhysicalDeviceVideoFormatInfoKHR {}
22717unsafe impl Sync for PhysicalDeviceVideoFormatInfoKHR {}
22718
22719/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoMaintenance1FeaturesKHR.html>
22720#[repr(C)]
22721#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22722pub struct PhysicalDeviceVideoMaintenance1FeaturesKHR {
22723    pub s_type: StructureType,
22724    pub next: *mut c_void,
22725    pub video_maintenance1: Bool32,
22726}
22727
22728impl Default for PhysicalDeviceVideoMaintenance1FeaturesKHR {
22729    #[inline]
22730    fn default() -> Self {
22731        Self {
22732            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR,
22733            next: ptr::null_mut(),
22734            video_maintenance1: Bool32::default(),
22735        }
22736    }
22737}
22738
22739unsafe impl Send for PhysicalDeviceVideoMaintenance1FeaturesKHR {}
22740unsafe impl Sync for PhysicalDeviceVideoMaintenance1FeaturesKHR {}
22741
22742/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoMaintenance2FeaturesKHR.html>
22743#[repr(C)]
22744#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22745pub struct PhysicalDeviceVideoMaintenance2FeaturesKHR {
22746    pub s_type: StructureType,
22747    pub next: *mut c_void,
22748    pub video_maintenance2: Bool32,
22749}
22750
22751impl Default for PhysicalDeviceVideoMaintenance2FeaturesKHR {
22752    #[inline]
22753    fn default() -> Self {
22754        Self {
22755            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR,
22756            next: ptr::null_mut(),
22757            video_maintenance2: Bool32::default(),
22758        }
22759    }
22760}
22761
22762unsafe impl Send for PhysicalDeviceVideoMaintenance2FeaturesKHR {}
22763unsafe impl Sync for PhysicalDeviceVideoMaintenance2FeaturesKHR {}
22764
22765/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan11Features.html>
22766#[repr(C)]
22767#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22768pub struct PhysicalDeviceVulkan11Features {
22769    pub s_type: StructureType,
22770    pub next: *mut c_void,
22771    pub storage_buffer_16bit_access: Bool32,
22772    pub uniform_and_storage_buffer_16bit_access: Bool32,
22773    pub storage_push_constant16: Bool32,
22774    pub storage_input_output16: Bool32,
22775    pub multiview: Bool32,
22776    pub multiview_geometry_shader: Bool32,
22777    pub multiview_tessellation_shader: Bool32,
22778    pub variable_pointers_storage_buffer: Bool32,
22779    pub variable_pointers: Bool32,
22780    pub protected_memory: Bool32,
22781    pub sampler_ycbcr_conversion: Bool32,
22782    pub shader_draw_parameters: Bool32,
22783}
22784
22785impl Default for PhysicalDeviceVulkan11Features {
22786    #[inline]
22787    fn default() -> Self {
22788        Self {
22789            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_1_FEATURES,
22790            next: ptr::null_mut(),
22791            storage_buffer_16bit_access: Bool32::default(),
22792            uniform_and_storage_buffer_16bit_access: Bool32::default(),
22793            storage_push_constant16: Bool32::default(),
22794            storage_input_output16: Bool32::default(),
22795            multiview: Bool32::default(),
22796            multiview_geometry_shader: Bool32::default(),
22797            multiview_tessellation_shader: Bool32::default(),
22798            variable_pointers_storage_buffer: Bool32::default(),
22799            variable_pointers: Bool32::default(),
22800            protected_memory: Bool32::default(),
22801            sampler_ycbcr_conversion: Bool32::default(),
22802            shader_draw_parameters: Bool32::default(),
22803        }
22804    }
22805}
22806
22807unsafe impl Send for PhysicalDeviceVulkan11Features {}
22808unsafe impl Sync for PhysicalDeviceVulkan11Features {}
22809
22810/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan11Properties.html>
22811#[repr(C)]
22812#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22813pub struct PhysicalDeviceVulkan11Properties {
22814    pub s_type: StructureType,
22815    pub next: *mut c_void,
22816    pub device_uuid: ByteArray<UUID_SIZE>,
22817    pub driver_uuid: ByteArray<UUID_SIZE>,
22818    pub device_luid: ByteArray<LUID_SIZE>,
22819    pub device_node_mask: u32,
22820    pub device_luid_valid: Bool32,
22821    pub subgroup_size: u32,
22822    pub subgroup_supported_stages: ShaderStageFlags,
22823    pub subgroup_supported_operations: SubgroupFeatureFlags,
22824    pub subgroup_quad_operations_in_all_stages: Bool32,
22825    pub point_clipping_behavior: PointClippingBehavior,
22826    pub max_multiview_view_count: u32,
22827    pub max_multiview_instance_index: u32,
22828    pub protected_no_fault: Bool32,
22829    pub max_per_set_descriptors: u32,
22830    pub max_memory_allocation_size: DeviceSize,
22831}
22832
22833impl Default for PhysicalDeviceVulkan11Properties {
22834    #[inline]
22835    fn default() -> Self {
22836        Self {
22837            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES,
22838            next: ptr::null_mut(),
22839            device_uuid: ByteArray::default(),
22840            driver_uuid: ByteArray::default(),
22841            device_luid: ByteArray::default(),
22842            device_node_mask: u32::default(),
22843            device_luid_valid: Bool32::default(),
22844            subgroup_size: u32::default(),
22845            subgroup_supported_stages: ShaderStageFlags::default(),
22846            subgroup_supported_operations: SubgroupFeatureFlags::default(),
22847            subgroup_quad_operations_in_all_stages: Bool32::default(),
22848            point_clipping_behavior: PointClippingBehavior::default(),
22849            max_multiview_view_count: u32::default(),
22850            max_multiview_instance_index: u32::default(),
22851            protected_no_fault: Bool32::default(),
22852            max_per_set_descriptors: u32::default(),
22853            max_memory_allocation_size: DeviceSize::default(),
22854        }
22855    }
22856}
22857
22858unsafe impl Send for PhysicalDeviceVulkan11Properties {}
22859unsafe impl Sync for PhysicalDeviceVulkan11Properties {}
22860
22861/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan12Features.html>
22862#[repr(C)]
22863#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22864pub struct PhysicalDeviceVulkan12Features {
22865    pub s_type: StructureType,
22866    pub next: *mut c_void,
22867    pub sampler_mirror_clamp_to_edge: Bool32,
22868    pub draw_indirect_count: Bool32,
22869    pub storage_buffer_8bit_access: Bool32,
22870    pub uniform_and_storage_buffer_8bit_access: Bool32,
22871    pub storage_push_constant8: Bool32,
22872    pub shader_buffer_int64_atomics: Bool32,
22873    pub shader_shared_int64_atomics: Bool32,
22874    pub shader_float16: Bool32,
22875    pub shader_int8: Bool32,
22876    pub descriptor_indexing: Bool32,
22877    pub shader_input_attachment_array_dynamic_indexing: Bool32,
22878    pub shader_uniform_texel_buffer_array_dynamic_indexing: Bool32,
22879    pub shader_storage_texel_buffer_array_dynamic_indexing: Bool32,
22880    pub shader_uniform_buffer_array_non_uniform_indexing: Bool32,
22881    pub shader_sampled_image_array_non_uniform_indexing: Bool32,
22882    pub shader_storage_buffer_array_non_uniform_indexing: Bool32,
22883    pub shader_storage_image_array_non_uniform_indexing: Bool32,
22884    pub shader_input_attachment_array_non_uniform_indexing: Bool32,
22885    pub shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32,
22886    pub shader_storage_texel_buffer_array_non_uniform_indexing: Bool32,
22887    pub descriptor_binding_uniform_buffer_update_after_bind: Bool32,
22888    pub descriptor_binding_sampled_image_update_after_bind: Bool32,
22889    pub descriptor_binding_storage_image_update_after_bind: Bool32,
22890    pub descriptor_binding_storage_buffer_update_after_bind: Bool32,
22891    pub descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32,
22892    pub descriptor_binding_storage_texel_buffer_update_after_bind: Bool32,
22893    pub descriptor_binding_update_unused_while_pending: Bool32,
22894    pub descriptor_binding_partially_bound: Bool32,
22895    pub descriptor_binding_variable_descriptor_count: Bool32,
22896    pub runtime_descriptor_array: Bool32,
22897    pub sampler_filter_minmax: Bool32,
22898    pub scalar_block_layout: Bool32,
22899    pub imageless_framebuffer: Bool32,
22900    pub uniform_buffer_standard_layout: Bool32,
22901    pub shader_subgroup_extended_types: Bool32,
22902    pub separate_depth_stencil_layouts: Bool32,
22903    pub host_query_reset: Bool32,
22904    pub timeline_semaphore: Bool32,
22905    pub buffer_device_address: Bool32,
22906    pub buffer_device_address_capture_replay: Bool32,
22907    pub buffer_device_address_multi_device: Bool32,
22908    pub vulkan_memory_model: Bool32,
22909    pub vulkan_memory_model_device_scope: Bool32,
22910    pub vulkan_memory_model_availability_visibility_chains: Bool32,
22911    pub shader_output_viewport_index: Bool32,
22912    pub shader_output_layer: Bool32,
22913    pub subgroup_broadcast_dynamic_id: Bool32,
22914}
22915
22916impl Default for PhysicalDeviceVulkan12Features {
22917    #[inline]
22918    fn default() -> Self {
22919        Self {
22920            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_2_FEATURES,
22921            next: ptr::null_mut(),
22922            sampler_mirror_clamp_to_edge: Bool32::default(),
22923            draw_indirect_count: Bool32::default(),
22924            storage_buffer_8bit_access: Bool32::default(),
22925            uniform_and_storage_buffer_8bit_access: Bool32::default(),
22926            storage_push_constant8: Bool32::default(),
22927            shader_buffer_int64_atomics: Bool32::default(),
22928            shader_shared_int64_atomics: Bool32::default(),
22929            shader_float16: Bool32::default(),
22930            shader_int8: Bool32::default(),
22931            descriptor_indexing: Bool32::default(),
22932            shader_input_attachment_array_dynamic_indexing: Bool32::default(),
22933            shader_uniform_texel_buffer_array_dynamic_indexing: Bool32::default(),
22934            shader_storage_texel_buffer_array_dynamic_indexing: Bool32::default(),
22935            shader_uniform_buffer_array_non_uniform_indexing: Bool32::default(),
22936            shader_sampled_image_array_non_uniform_indexing: Bool32::default(),
22937            shader_storage_buffer_array_non_uniform_indexing: Bool32::default(),
22938            shader_storage_image_array_non_uniform_indexing: Bool32::default(),
22939            shader_input_attachment_array_non_uniform_indexing: Bool32::default(),
22940            shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32::default(),
22941            shader_storage_texel_buffer_array_non_uniform_indexing: Bool32::default(),
22942            descriptor_binding_uniform_buffer_update_after_bind: Bool32::default(),
22943            descriptor_binding_sampled_image_update_after_bind: Bool32::default(),
22944            descriptor_binding_storage_image_update_after_bind: Bool32::default(),
22945            descriptor_binding_storage_buffer_update_after_bind: Bool32::default(),
22946            descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32::default(),
22947            descriptor_binding_storage_texel_buffer_update_after_bind: Bool32::default(),
22948            descriptor_binding_update_unused_while_pending: Bool32::default(),
22949            descriptor_binding_partially_bound: Bool32::default(),
22950            descriptor_binding_variable_descriptor_count: Bool32::default(),
22951            runtime_descriptor_array: Bool32::default(),
22952            sampler_filter_minmax: Bool32::default(),
22953            scalar_block_layout: Bool32::default(),
22954            imageless_framebuffer: Bool32::default(),
22955            uniform_buffer_standard_layout: Bool32::default(),
22956            shader_subgroup_extended_types: Bool32::default(),
22957            separate_depth_stencil_layouts: Bool32::default(),
22958            host_query_reset: Bool32::default(),
22959            timeline_semaphore: Bool32::default(),
22960            buffer_device_address: Bool32::default(),
22961            buffer_device_address_capture_replay: Bool32::default(),
22962            buffer_device_address_multi_device: Bool32::default(),
22963            vulkan_memory_model: Bool32::default(),
22964            vulkan_memory_model_device_scope: Bool32::default(),
22965            vulkan_memory_model_availability_visibility_chains: Bool32::default(),
22966            shader_output_viewport_index: Bool32::default(),
22967            shader_output_layer: Bool32::default(),
22968            subgroup_broadcast_dynamic_id: Bool32::default(),
22969        }
22970    }
22971}
22972
22973unsafe impl Send for PhysicalDeviceVulkan12Features {}
22974unsafe impl Sync for PhysicalDeviceVulkan12Features {}
22975
22976/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan12Properties.html>
22977#[repr(C)]
22978#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22979pub struct PhysicalDeviceVulkan12Properties {
22980    pub s_type: StructureType,
22981    pub next: *mut c_void,
22982    pub driver_id: DriverId,
22983    pub driver_name: StringArray<MAX_DRIVER_NAME_SIZE>,
22984    pub driver_info: StringArray<MAX_DRIVER_INFO_SIZE>,
22985    pub conformance_version: ConformanceVersion,
22986    pub denorm_behavior_independence: ShaderFloatControlsIndependence,
22987    pub rounding_mode_independence: ShaderFloatControlsIndependence,
22988    pub shader_signed_zero_inf_nan_preserve_float16: Bool32,
22989    pub shader_signed_zero_inf_nan_preserve_float32: Bool32,
22990    pub shader_signed_zero_inf_nan_preserve_float64: Bool32,
22991    pub shader_denorm_preserve_float16: Bool32,
22992    pub shader_denorm_preserve_float32: Bool32,
22993    pub shader_denorm_preserve_float64: Bool32,
22994    pub shader_denorm_flush_to_zero_float16: Bool32,
22995    pub shader_denorm_flush_to_zero_float32: Bool32,
22996    pub shader_denorm_flush_to_zero_float64: Bool32,
22997    pub shader_rounding_mode_rte_float16: Bool32,
22998    pub shader_rounding_mode_rte_float32: Bool32,
22999    pub shader_rounding_mode_rte_float64: Bool32,
23000    pub shader_rounding_mode_rtz_float16: Bool32,
23001    pub shader_rounding_mode_rtz_float32: Bool32,
23002    pub shader_rounding_mode_rtz_float64: Bool32,
23003    pub max_update_after_bind_descriptors_in_all_pools: u32,
23004    pub shader_uniform_buffer_array_non_uniform_indexing_native: Bool32,
23005    pub shader_sampled_image_array_non_uniform_indexing_native: Bool32,
23006    pub shader_storage_buffer_array_non_uniform_indexing_native: Bool32,
23007    pub shader_storage_image_array_non_uniform_indexing_native: Bool32,
23008    pub shader_input_attachment_array_non_uniform_indexing_native: Bool32,
23009    pub robust_buffer_access_update_after_bind: Bool32,
23010    pub quad_divergent_implicit_lod: Bool32,
23011    pub max_per_stage_descriptor_update_after_bind_samplers: u32,
23012    pub max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
23013    pub max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
23014    pub max_per_stage_descriptor_update_after_bind_sampled_images: u32,
23015    pub max_per_stage_descriptor_update_after_bind_storage_images: u32,
23016    pub max_per_stage_descriptor_update_after_bind_input_attachments: u32,
23017    pub max_per_stage_update_after_bind_resources: u32,
23018    pub max_descriptor_set_update_after_bind_samplers: u32,
23019    pub max_descriptor_set_update_after_bind_uniform_buffers: u32,
23020    pub max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
23021    pub max_descriptor_set_update_after_bind_storage_buffers: u32,
23022    pub max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
23023    pub max_descriptor_set_update_after_bind_sampled_images: u32,
23024    pub max_descriptor_set_update_after_bind_storage_images: u32,
23025    pub max_descriptor_set_update_after_bind_input_attachments: u32,
23026    pub supported_depth_resolve_modes: ResolveModeFlags,
23027    pub supported_stencil_resolve_modes: ResolveModeFlags,
23028    pub independent_resolve_none: Bool32,
23029    pub independent_resolve: Bool32,
23030    pub filter_minmax_single_component_formats: Bool32,
23031    pub filter_minmax_image_component_mapping: Bool32,
23032    pub max_timeline_semaphore_value_difference: u64,
23033    pub framebuffer_integer_color_sample_counts: SampleCountFlags,
23034}
23035
23036impl Default for PhysicalDeviceVulkan12Properties {
23037    #[inline]
23038    fn default() -> Self {
23039        Self {
23040            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES,
23041            next: ptr::null_mut(),
23042            driver_id: DriverId::default(),
23043            driver_name: StringArray::default(),
23044            driver_info: StringArray::default(),
23045            conformance_version: ConformanceVersion::default(),
23046            denorm_behavior_independence: ShaderFloatControlsIndependence::default(),
23047            rounding_mode_independence: ShaderFloatControlsIndependence::default(),
23048            shader_signed_zero_inf_nan_preserve_float16: Bool32::default(),
23049            shader_signed_zero_inf_nan_preserve_float32: Bool32::default(),
23050            shader_signed_zero_inf_nan_preserve_float64: Bool32::default(),
23051            shader_denorm_preserve_float16: Bool32::default(),
23052            shader_denorm_preserve_float32: Bool32::default(),
23053            shader_denorm_preserve_float64: Bool32::default(),
23054            shader_denorm_flush_to_zero_float16: Bool32::default(),
23055            shader_denorm_flush_to_zero_float32: Bool32::default(),
23056            shader_denorm_flush_to_zero_float64: Bool32::default(),
23057            shader_rounding_mode_rte_float16: Bool32::default(),
23058            shader_rounding_mode_rte_float32: Bool32::default(),
23059            shader_rounding_mode_rte_float64: Bool32::default(),
23060            shader_rounding_mode_rtz_float16: Bool32::default(),
23061            shader_rounding_mode_rtz_float32: Bool32::default(),
23062            shader_rounding_mode_rtz_float64: Bool32::default(),
23063            max_update_after_bind_descriptors_in_all_pools: u32::default(),
23064            shader_uniform_buffer_array_non_uniform_indexing_native: Bool32::default(),
23065            shader_sampled_image_array_non_uniform_indexing_native: Bool32::default(),
23066            shader_storage_buffer_array_non_uniform_indexing_native: Bool32::default(),
23067            shader_storage_image_array_non_uniform_indexing_native: Bool32::default(),
23068            shader_input_attachment_array_non_uniform_indexing_native: Bool32::default(),
23069            robust_buffer_access_update_after_bind: Bool32::default(),
23070            quad_divergent_implicit_lod: Bool32::default(),
23071            max_per_stage_descriptor_update_after_bind_samplers: u32::default(),
23072            max_per_stage_descriptor_update_after_bind_uniform_buffers: u32::default(),
23073            max_per_stage_descriptor_update_after_bind_storage_buffers: u32::default(),
23074            max_per_stage_descriptor_update_after_bind_sampled_images: u32::default(),
23075            max_per_stage_descriptor_update_after_bind_storage_images: u32::default(),
23076            max_per_stage_descriptor_update_after_bind_input_attachments: u32::default(),
23077            max_per_stage_update_after_bind_resources: u32::default(),
23078            max_descriptor_set_update_after_bind_samplers: u32::default(),
23079            max_descriptor_set_update_after_bind_uniform_buffers: u32::default(),
23080            max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32::default(),
23081            max_descriptor_set_update_after_bind_storage_buffers: u32::default(),
23082            max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32::default(),
23083            max_descriptor_set_update_after_bind_sampled_images: u32::default(),
23084            max_descriptor_set_update_after_bind_storage_images: u32::default(),
23085            max_descriptor_set_update_after_bind_input_attachments: u32::default(),
23086            supported_depth_resolve_modes: ResolveModeFlags::default(),
23087            supported_stencil_resolve_modes: ResolveModeFlags::default(),
23088            independent_resolve_none: Bool32::default(),
23089            independent_resolve: Bool32::default(),
23090            filter_minmax_single_component_formats: Bool32::default(),
23091            filter_minmax_image_component_mapping: Bool32::default(),
23092            max_timeline_semaphore_value_difference: u64::default(),
23093            framebuffer_integer_color_sample_counts: SampleCountFlags::default(),
23094        }
23095    }
23096}
23097
23098unsafe impl Send for PhysicalDeviceVulkan12Properties {}
23099unsafe impl Sync for PhysicalDeviceVulkan12Properties {}
23100
23101/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan13Features.html>
23102#[repr(C)]
23103#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23104pub struct PhysicalDeviceVulkan13Features {
23105    pub s_type: StructureType,
23106    pub next: *mut c_void,
23107    pub robust_image_access: Bool32,
23108    pub inline_uniform_block: Bool32,
23109    pub descriptor_binding_inline_uniform_block_update_after_bind: Bool32,
23110    pub pipeline_creation_cache_control: Bool32,
23111    pub private_data: Bool32,
23112    pub shader_demote_to_helper_invocation: Bool32,
23113    pub shader_terminate_invocation: Bool32,
23114    pub subgroup_size_control: Bool32,
23115    pub compute_full_subgroups: Bool32,
23116    pub synchronization2: Bool32,
23117    pub texture_compression_astc_hdr: Bool32,
23118    pub shader_zero_initialize_workgroup_memory: Bool32,
23119    pub dynamic_rendering: Bool32,
23120    pub shader_integer_dot_product: Bool32,
23121    pub maintenance4: Bool32,
23122}
23123
23124impl Default for PhysicalDeviceVulkan13Features {
23125    #[inline]
23126    fn default() -> Self {
23127        Self {
23128            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_3_FEATURES,
23129            next: ptr::null_mut(),
23130            robust_image_access: Bool32::default(),
23131            inline_uniform_block: Bool32::default(),
23132            descriptor_binding_inline_uniform_block_update_after_bind: Bool32::default(),
23133            pipeline_creation_cache_control: Bool32::default(),
23134            private_data: Bool32::default(),
23135            shader_demote_to_helper_invocation: Bool32::default(),
23136            shader_terminate_invocation: Bool32::default(),
23137            subgroup_size_control: Bool32::default(),
23138            compute_full_subgroups: Bool32::default(),
23139            synchronization2: Bool32::default(),
23140            texture_compression_astc_hdr: Bool32::default(),
23141            shader_zero_initialize_workgroup_memory: Bool32::default(),
23142            dynamic_rendering: Bool32::default(),
23143            shader_integer_dot_product: Bool32::default(),
23144            maintenance4: Bool32::default(),
23145        }
23146    }
23147}
23148
23149unsafe impl Send for PhysicalDeviceVulkan13Features {}
23150unsafe impl Sync for PhysicalDeviceVulkan13Features {}
23151
23152/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan13Properties.html>
23153#[repr(C)]
23154#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23155pub struct PhysicalDeviceVulkan13Properties {
23156    pub s_type: StructureType,
23157    pub next: *mut c_void,
23158    pub min_subgroup_size: u32,
23159    pub max_subgroup_size: u32,
23160    pub max_compute_workgroup_subgroups: u32,
23161    pub required_subgroup_size_stages: ShaderStageFlags,
23162    pub max_inline_uniform_block_size: u32,
23163    pub max_per_stage_descriptor_inline_uniform_blocks: u32,
23164    pub max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32,
23165    pub max_descriptor_set_inline_uniform_blocks: u32,
23166    pub max_descriptor_set_update_after_bind_inline_uniform_blocks: u32,
23167    pub max_inline_uniform_total_size: u32,
23168    pub integer_dot_product_8bit_unsigned_accelerated: Bool32,
23169    pub integer_dot_product_8bit_signed_accelerated: Bool32,
23170    pub integer_dot_product_8bit_mixed_signedness_accelerated: Bool32,
23171    pub integer_dot_product4x_8bit_packed_unsigned_accelerated: Bool32,
23172    pub integer_dot_product4x_8bit_packed_signed_accelerated: Bool32,
23173    pub integer_dot_product4x_8bit_packed_mixed_signedness_accelerated: Bool32,
23174    pub integer_dot_product_16bit_unsigned_accelerated: Bool32,
23175    pub integer_dot_product_16bit_signed_accelerated: Bool32,
23176    pub integer_dot_product_16bit_mixed_signedness_accelerated: Bool32,
23177    pub integer_dot_product_32bit_unsigned_accelerated: Bool32,
23178    pub integer_dot_product_32bit_signed_accelerated: Bool32,
23179    pub integer_dot_product_32bit_mixed_signedness_accelerated: Bool32,
23180    pub integer_dot_product_64bit_unsigned_accelerated: Bool32,
23181    pub integer_dot_product_64bit_signed_accelerated: Bool32,
23182    pub integer_dot_product_64bit_mixed_signedness_accelerated: Bool32,
23183    pub integer_dot_product_accumulating_saturating_8bit_unsigned_accelerated: Bool32,
23184    pub integer_dot_product_accumulating_saturating_8bit_signed_accelerated: Bool32,
23185    pub integer_dot_product_accumulating_saturating_8bit_mixed_signedness_accelerated: Bool32,
23186    pub integer_dot_product_accumulating_saturating4x_8bit_packed_unsigned_accelerated: Bool32,
23187    pub integer_dot_product_accumulating_saturating4x_8bit_packed_signed_accelerated: Bool32,
23188    pub integer_dot_product_accumulating_saturating4x_8bit_packed_mixed_signedness_accelerated:
23189        Bool32,
23190    pub integer_dot_product_accumulating_saturating_16bit_unsigned_accelerated: Bool32,
23191    pub integer_dot_product_accumulating_saturating_16bit_signed_accelerated: Bool32,
23192    pub integer_dot_product_accumulating_saturating_16bit_mixed_signedness_accelerated: Bool32,
23193    pub integer_dot_product_accumulating_saturating_32bit_unsigned_accelerated: Bool32,
23194    pub integer_dot_product_accumulating_saturating_32bit_signed_accelerated: Bool32,
23195    pub integer_dot_product_accumulating_saturating_32bit_mixed_signedness_accelerated: Bool32,
23196    pub integer_dot_product_accumulating_saturating_64bit_unsigned_accelerated: Bool32,
23197    pub integer_dot_product_accumulating_saturating_64bit_signed_accelerated: Bool32,
23198    pub integer_dot_product_accumulating_saturating_64bit_mixed_signedness_accelerated: Bool32,
23199    pub storage_texel_buffer_offset_alignment_bytes: DeviceSize,
23200    pub storage_texel_buffer_offset_single_texel_alignment: Bool32,
23201    pub uniform_texel_buffer_offset_alignment_bytes: DeviceSize,
23202    pub uniform_texel_buffer_offset_single_texel_alignment: Bool32,
23203    pub max_buffer_size: DeviceSize,
23204}
23205
23206impl Default for PhysicalDeviceVulkan13Properties {
23207    #[inline]
23208    fn default() -> Self {
23209        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() }
23210    }
23211}
23212
23213unsafe impl Send for PhysicalDeviceVulkan13Properties {}
23214unsafe impl Sync for PhysicalDeviceVulkan13Properties {}
23215
23216/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan14Features.html>
23217#[repr(C)]
23218#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23219pub struct PhysicalDeviceVulkan14Features {
23220    pub s_type: StructureType,
23221    pub next: *mut c_void,
23222    pub global_priority_query: Bool32,
23223    pub shader_subgroup_rotate: Bool32,
23224    pub shader_subgroup_rotate_clustered: Bool32,
23225    pub shader_float_controls2: Bool32,
23226    pub shader_expect_assume: Bool32,
23227    pub rectangular_lines: Bool32,
23228    pub bresenham_lines: Bool32,
23229    pub smooth_lines: Bool32,
23230    pub stippled_rectangular_lines: Bool32,
23231    pub stippled_bresenham_lines: Bool32,
23232    pub stippled_smooth_lines: Bool32,
23233    pub vertex_attribute_instance_rate_divisor: Bool32,
23234    pub vertex_attribute_instance_rate_zero_divisor: Bool32,
23235    pub index_type_uint8: Bool32,
23236    pub dynamic_rendering_local_read: Bool32,
23237    pub maintenance5: Bool32,
23238    pub maintenance6: Bool32,
23239    pub pipeline_protected_access: Bool32,
23240    pub pipeline_robustness: Bool32,
23241    pub host_image_copy: Bool32,
23242    pub push_descriptor: Bool32,
23243}
23244
23245impl Default for PhysicalDeviceVulkan14Features {
23246    #[inline]
23247    fn default() -> Self {
23248        Self {
23249            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_4_FEATURES,
23250            next: ptr::null_mut(),
23251            global_priority_query: Bool32::default(),
23252            shader_subgroup_rotate: Bool32::default(),
23253            shader_subgroup_rotate_clustered: Bool32::default(),
23254            shader_float_controls2: Bool32::default(),
23255            shader_expect_assume: Bool32::default(),
23256            rectangular_lines: Bool32::default(),
23257            bresenham_lines: Bool32::default(),
23258            smooth_lines: Bool32::default(),
23259            stippled_rectangular_lines: Bool32::default(),
23260            stippled_bresenham_lines: Bool32::default(),
23261            stippled_smooth_lines: Bool32::default(),
23262            vertex_attribute_instance_rate_divisor: Bool32::default(),
23263            vertex_attribute_instance_rate_zero_divisor: Bool32::default(),
23264            index_type_uint8: Bool32::default(),
23265            dynamic_rendering_local_read: Bool32::default(),
23266            maintenance5: Bool32::default(),
23267            maintenance6: Bool32::default(),
23268            pipeline_protected_access: Bool32::default(),
23269            pipeline_robustness: Bool32::default(),
23270            host_image_copy: Bool32::default(),
23271            push_descriptor: Bool32::default(),
23272        }
23273    }
23274}
23275
23276unsafe impl Send for PhysicalDeviceVulkan14Features {}
23277unsafe impl Sync for PhysicalDeviceVulkan14Features {}
23278
23279/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan14Properties.html>
23280#[repr(C)]
23281#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23282pub struct PhysicalDeviceVulkan14Properties {
23283    pub s_type: StructureType,
23284    pub next: *mut c_void,
23285    pub line_sub_pixel_precision_bits: u32,
23286    pub max_vertex_attrib_divisor: u32,
23287    pub supports_non_zero_first_instance: Bool32,
23288    pub max_push_descriptors: u32,
23289    pub dynamic_rendering_local_read_depth_stencil_attachments: Bool32,
23290    pub dynamic_rendering_local_read_multisampled_attachments: Bool32,
23291    pub early_fragment_multisample_coverage_after_sample_counting: Bool32,
23292    pub early_fragment_sample_mask_test_before_sample_counting: Bool32,
23293    pub depth_stencil_swizzle_one_support: Bool32,
23294    pub polygon_mode_point_size: Bool32,
23295    pub non_strict_single_pixel_wide_lines_use_parallelogram: Bool32,
23296    pub non_strict_wide_lines_use_parallelogram: Bool32,
23297    pub block_texel_view_compatible_multiple_layers: Bool32,
23298    pub max_combined_image_sampler_descriptor_count: u32,
23299    pub fragment_shading_rate_clamp_combiner_inputs: Bool32,
23300    pub default_robustness_storage_buffers: PipelineRobustnessBufferBehavior,
23301    pub default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior,
23302    pub default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior,
23303    pub default_robustness_images: PipelineRobustnessImageBehavior,
23304    pub copy_src_layout_count: u32,
23305    pub copy_src_layouts: *mut ImageLayout,
23306    pub copy_dst_layout_count: u32,
23307    pub copy_dst_layouts: *mut ImageLayout,
23308    pub optimal_tiling_layout_uuid: ByteArray<UUID_SIZE>,
23309    pub identical_memory_type_requirements: Bool32,
23310}
23311
23312impl Default for PhysicalDeviceVulkan14Properties {
23313    #[inline]
23314    fn default() -> Self {
23315        Self {
23316            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES,
23317            next: ptr::null_mut(),
23318            line_sub_pixel_precision_bits: u32::default(),
23319            max_vertex_attrib_divisor: u32::default(),
23320            supports_non_zero_first_instance: Bool32::default(),
23321            max_push_descriptors: u32::default(),
23322            dynamic_rendering_local_read_depth_stencil_attachments: Bool32::default(),
23323            dynamic_rendering_local_read_multisampled_attachments: Bool32::default(),
23324            early_fragment_multisample_coverage_after_sample_counting: Bool32::default(),
23325            early_fragment_sample_mask_test_before_sample_counting: Bool32::default(),
23326            depth_stencil_swizzle_one_support: Bool32::default(),
23327            polygon_mode_point_size: Bool32::default(),
23328            non_strict_single_pixel_wide_lines_use_parallelogram: Bool32::default(),
23329            non_strict_wide_lines_use_parallelogram: Bool32::default(),
23330            block_texel_view_compatible_multiple_layers: Bool32::default(),
23331            max_combined_image_sampler_descriptor_count: u32::default(),
23332            fragment_shading_rate_clamp_combiner_inputs: Bool32::default(),
23333            default_robustness_storage_buffers: PipelineRobustnessBufferBehavior::default(),
23334            default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior::default(),
23335            default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior::default(),
23336            default_robustness_images: PipelineRobustnessImageBehavior::default(),
23337            copy_src_layout_count: u32::default(),
23338            copy_src_layouts: ptr::null_mut(),
23339            copy_dst_layout_count: u32::default(),
23340            copy_dst_layouts: ptr::null_mut(),
23341            optimal_tiling_layout_uuid: ByteArray::default(),
23342            identical_memory_type_requirements: Bool32::default(),
23343        }
23344    }
23345}
23346
23347unsafe impl Send for PhysicalDeviceVulkan14Properties {}
23348unsafe impl Sync for PhysicalDeviceVulkan14Properties {}
23349
23350/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkanMemoryModelFeatures.html>
23351#[repr(C)]
23352#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23353pub struct PhysicalDeviceVulkanMemoryModelFeatures {
23354    pub s_type: StructureType,
23355    pub next: *mut c_void,
23356    pub vulkan_memory_model: Bool32,
23357    pub vulkan_memory_model_device_scope: Bool32,
23358    pub vulkan_memory_model_availability_visibility_chains: Bool32,
23359}
23360
23361impl Default for PhysicalDeviceVulkanMemoryModelFeatures {
23362    #[inline]
23363    fn default() -> Self {
23364        Self {
23365            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
23366            next: ptr::null_mut(),
23367            vulkan_memory_model: Bool32::default(),
23368            vulkan_memory_model_device_scope: Bool32::default(),
23369            vulkan_memory_model_availability_visibility_chains: Bool32::default(),
23370        }
23371    }
23372}
23373
23374unsafe impl Send for PhysicalDeviceVulkanMemoryModelFeatures {}
23375unsafe impl Sync for PhysicalDeviceVulkanMemoryModelFeatures {}
23376
23377/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html>
23378#[repr(C)]
23379#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23380pub struct PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
23381    pub s_type: StructureType,
23382    pub next: *mut c_void,
23383    pub workgroup_memory_explicit_layout: Bool32,
23384    pub workgroup_memory_explicit_layout_scalar_block_layout: Bool32,
23385    pub workgroup_memory_explicit_layout_8bit_access: Bool32,
23386    pub workgroup_memory_explicit_layout_16bit_access: Bool32,
23387}
23388
23389impl Default for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
23390    #[inline]
23391    fn default() -> Self {
23392        Self {
23393            s_type: StructureType::PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR,
23394            next: ptr::null_mut(),
23395            workgroup_memory_explicit_layout: Bool32::default(),
23396            workgroup_memory_explicit_layout_scalar_block_layout: Bool32::default(),
23397            workgroup_memory_explicit_layout_8bit_access: Bool32::default(),
23398            workgroup_memory_explicit_layout_16bit_access: Bool32::default(),
23399        }
23400    }
23401}
23402
23403unsafe impl Send for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {}
23404unsafe impl Sync for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {}
23405
23406/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.html>
23407#[repr(C)]
23408#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23409pub struct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
23410    pub s_type: StructureType,
23411    pub next: *mut c_void,
23412    pub ycbcr2plane444_formats: Bool32,
23413}
23414
23415impl Default for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
23416    #[inline]
23417    fn default() -> Self {
23418        Self {
23419            s_type: StructureType::PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT,
23420            next: ptr::null_mut(),
23421            ycbcr2plane444_formats: Bool32::default(),
23422        }
23423    }
23424}
23425
23426unsafe impl Send for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {}
23427unsafe impl Sync for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {}
23428
23429/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcrDegammaFeaturesQCOM.html>
23430#[repr(C)]
23431#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23432pub struct PhysicalDeviceYcbcrDegammaFeaturesQCOM {
23433    pub s_type: StructureType,
23434    pub next: *mut c_void,
23435    pub ycbcr_degamma: Bool32,
23436}
23437
23438impl Default for PhysicalDeviceYcbcrDegammaFeaturesQCOM {
23439    #[inline]
23440    fn default() -> Self {
23441        Self {
23442            s_type: StructureType::PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM,
23443            next: ptr::null_mut(),
23444            ycbcr_degamma: Bool32::default(),
23445        }
23446    }
23447}
23448
23449unsafe impl Send for PhysicalDeviceYcbcrDegammaFeaturesQCOM {}
23450unsafe impl Sync for PhysicalDeviceYcbcrDegammaFeaturesQCOM {}
23451
23452/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.html>
23453#[repr(C)]
23454#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23455pub struct PhysicalDeviceYcbcrImageArraysFeaturesEXT {
23456    pub s_type: StructureType,
23457    pub next: *mut c_void,
23458    pub ycbcr_image_arrays: Bool32,
23459}
23460
23461impl Default for PhysicalDeviceYcbcrImageArraysFeaturesEXT {
23462    #[inline]
23463    fn default() -> Self {
23464        Self {
23465            s_type: StructureType::PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT,
23466            next: ptr::null_mut(),
23467            ycbcr_image_arrays: Bool32::default(),
23468        }
23469    }
23470}
23471
23472unsafe impl Send for PhysicalDeviceYcbcrImageArraysFeaturesEXT {}
23473unsafe impl Sync for PhysicalDeviceYcbcrImageArraysFeaturesEXT {}
23474
23475/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT.html>
23476#[repr(C)]
23477#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23478pub struct PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {
23479    pub s_type: StructureType,
23480    pub next: *mut c_void,
23481    pub zero_initialize_device_memory: Bool32,
23482}
23483
23484impl Default for PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {
23485    #[inline]
23486    fn default() -> Self {
23487        Self {
23488            s_type: StructureType::PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT,
23489            next: ptr::null_mut(),
23490            zero_initialize_device_memory: Bool32::default(),
23491        }
23492    }
23493}
23494
23495unsafe impl Send for PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {}
23496unsafe impl Sync for PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {}
23497
23498/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures.html>
23499#[repr(C)]
23500#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23501pub struct PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {
23502    pub s_type: StructureType,
23503    pub next: *mut c_void,
23504    pub shader_zero_initialize_workgroup_memory: Bool32,
23505}
23506
23507impl Default for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {
23508    #[inline]
23509    fn default() -> Self {
23510        Self {
23511            s_type: StructureType::PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES,
23512            next: ptr::null_mut(),
23513            shader_zero_initialize_workgroup_memory: Bool32::default(),
23514        }
23515    }
23516}
23517
23518unsafe impl Send for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {}
23519unsafe impl Sync for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {}
23520
23521/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryCreateInfoKHR.html>
23522#[repr(C)]
23523#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23524pub struct PipelineBinaryCreateInfoKHR {
23525    pub s_type: StructureType,
23526    pub next: *const c_void,
23527    pub keys_and_data_info: *const PipelineBinaryKeysAndDataKHR,
23528    pub pipeline: Pipeline,
23529    pub pipeline_create_info: *const PipelineCreateInfoKHR,
23530}
23531
23532impl Default for PipelineBinaryCreateInfoKHR {
23533    #[inline]
23534    fn default() -> Self {
23535        Self {
23536            s_type: StructureType::PIPELINE_BINARY_CREATE_INFO_KHR,
23537            next: ptr::null(),
23538            keys_and_data_info: ptr::null(),
23539            pipeline: Pipeline::default(),
23540            pipeline_create_info: ptr::null(),
23541        }
23542    }
23543}
23544
23545unsafe impl Send for PipelineBinaryCreateInfoKHR {}
23546unsafe impl Sync for PipelineBinaryCreateInfoKHR {}
23547
23548/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryDataInfoKHR.html>
23549#[repr(C)]
23550#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23551pub struct PipelineBinaryDataInfoKHR {
23552    pub s_type: StructureType,
23553    pub next: *mut c_void,
23554    pub pipeline_binary: PipelineBinaryKHR,
23555}
23556
23557impl Default for PipelineBinaryDataInfoKHR {
23558    #[inline]
23559    fn default() -> Self {
23560        Self {
23561            s_type: StructureType::PIPELINE_BINARY_DATA_INFO_KHR,
23562            next: ptr::null_mut(),
23563            pipeline_binary: PipelineBinaryKHR::default(),
23564        }
23565    }
23566}
23567
23568unsafe impl Send for PipelineBinaryDataInfoKHR {}
23569unsafe impl Sync for PipelineBinaryDataInfoKHR {}
23570
23571/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryDataKHR.html>
23572#[repr(C)]
23573#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23574pub struct PipelineBinaryDataKHR {
23575    pub data_size: usize,
23576    pub data: *mut c_void,
23577}
23578
23579impl Default for PipelineBinaryDataKHR {
23580    #[inline]
23581    fn default() -> Self {
23582        Self {
23583            data_size: usize::default(),
23584            data: ptr::null_mut(),
23585        }
23586    }
23587}
23588
23589unsafe impl Send for PipelineBinaryDataKHR {}
23590unsafe impl Sync for PipelineBinaryDataKHR {}
23591
23592/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryHandlesInfoKHR.html>
23593#[repr(C)]
23594#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23595pub struct PipelineBinaryHandlesInfoKHR {
23596    pub s_type: StructureType,
23597    pub next: *const c_void,
23598    pub pipeline_binary_count: u32,
23599    pub pipeline_binaries: *mut PipelineBinaryKHR,
23600}
23601
23602impl Default for PipelineBinaryHandlesInfoKHR {
23603    #[inline]
23604    fn default() -> Self {
23605        Self {
23606            s_type: StructureType::PIPELINE_BINARY_HANDLES_INFO_KHR,
23607            next: ptr::null(),
23608            pipeline_binary_count: u32::default(),
23609            pipeline_binaries: ptr::null_mut(),
23610        }
23611    }
23612}
23613
23614unsafe impl Send for PipelineBinaryHandlesInfoKHR {}
23615unsafe impl Sync for PipelineBinaryHandlesInfoKHR {}
23616
23617/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryInfoKHR.html>
23618#[repr(C)]
23619#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23620pub struct PipelineBinaryInfoKHR {
23621    pub s_type: StructureType,
23622    pub next: *const c_void,
23623    pub binary_count: u32,
23624    pub pipeline_binaries: *const PipelineBinaryKHR,
23625}
23626
23627impl Default for PipelineBinaryInfoKHR {
23628    #[inline]
23629    fn default() -> Self {
23630        Self {
23631            s_type: StructureType::PIPELINE_BINARY_INFO_KHR,
23632            next: ptr::null(),
23633            binary_count: u32::default(),
23634            pipeline_binaries: ptr::null(),
23635        }
23636    }
23637}
23638
23639unsafe impl Send for PipelineBinaryInfoKHR {}
23640unsafe impl Sync for PipelineBinaryInfoKHR {}
23641
23642/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryKeyKHR.html>
23643#[repr(C)]
23644#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23645pub struct PipelineBinaryKeyKHR {
23646    pub s_type: StructureType,
23647    pub next: *mut c_void,
23648    pub key_size: u32,
23649    pub key: ByteArray<MAX_PIPELINE_BINARY_KEY_SIZE_KHR>,
23650}
23651
23652impl Default for PipelineBinaryKeyKHR {
23653    #[inline]
23654    fn default() -> Self {
23655        Self {
23656            s_type: StructureType::PIPELINE_BINARY_KEY_KHR,
23657            next: ptr::null_mut(),
23658            key_size: u32::default(),
23659            key: ByteArray::default(),
23660        }
23661    }
23662}
23663
23664unsafe impl Send for PipelineBinaryKeyKHR {}
23665unsafe impl Sync for PipelineBinaryKeyKHR {}
23666
23667/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryKeysAndDataKHR.html>
23668#[repr(C)]
23669#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23670pub struct PipelineBinaryKeysAndDataKHR {
23671    pub binary_count: u32,
23672    pub pipeline_binary_keys: *const PipelineBinaryKeyKHR,
23673    pub pipeline_binary_data: *const PipelineBinaryDataKHR,
23674}
23675
23676impl Default for PipelineBinaryKeysAndDataKHR {
23677    #[inline]
23678    fn default() -> Self {
23679        Self {
23680            binary_count: u32::default(),
23681            pipeline_binary_keys: ptr::null(),
23682            pipeline_binary_data: ptr::null(),
23683        }
23684    }
23685}
23686
23687unsafe impl Send for PipelineBinaryKeysAndDataKHR {}
23688unsafe impl Sync for PipelineBinaryKeysAndDataKHR {}
23689
23690/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCacheCreateInfo.html>
23691#[repr(C)]
23692#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23693pub struct PipelineCacheCreateInfo {
23694    pub s_type: StructureType,
23695    pub next: *const c_void,
23696    pub flags: PipelineCacheCreateFlags,
23697    pub initial_data_size: usize,
23698    pub initial_data: *const c_void,
23699}
23700
23701impl Default for PipelineCacheCreateInfo {
23702    #[inline]
23703    fn default() -> Self {
23704        Self {
23705            s_type: StructureType::PIPELINE_CACHE_CREATE_INFO,
23706            next: ptr::null(),
23707            flags: PipelineCacheCreateFlags::default(),
23708            initial_data_size: usize::default(),
23709            initial_data: ptr::null(),
23710        }
23711    }
23712}
23713
23714unsafe impl Send for PipelineCacheCreateInfo {}
23715unsafe impl Sync for PipelineCacheCreateInfo {}
23716
23717/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCacheHeaderVersionOne.html>
23718#[repr(C)]
23719#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23720pub struct PipelineCacheHeaderVersionOne {
23721    pub header_size: u32,
23722    pub header_version: PipelineCacheHeaderVersion,
23723    pub vendor_id: u32,
23724    pub device_id: u32,
23725    pub pipeline_cache_uuid: ByteArray<UUID_SIZE>,
23726}
23727
23728/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendAdvancedStateCreateInfoEXT.html>
23729#[repr(C)]
23730#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23731pub struct PipelineColorBlendAdvancedStateCreateInfoEXT {
23732    pub s_type: StructureType,
23733    pub next: *const c_void,
23734    pub src_premultiplied: Bool32,
23735    pub dst_premultiplied: Bool32,
23736    pub blend_overlap: BlendOverlapEXT,
23737}
23738
23739impl Default for PipelineColorBlendAdvancedStateCreateInfoEXT {
23740    #[inline]
23741    fn default() -> Self {
23742        Self {
23743            s_type: StructureType::PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,
23744            next: ptr::null(),
23745            src_premultiplied: Bool32::default(),
23746            dst_premultiplied: Bool32::default(),
23747            blend_overlap: BlendOverlapEXT::default(),
23748        }
23749    }
23750}
23751
23752unsafe impl Send for PipelineColorBlendAdvancedStateCreateInfoEXT {}
23753unsafe impl Sync for PipelineColorBlendAdvancedStateCreateInfoEXT {}
23754
23755/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendAttachmentState.html>
23756#[repr(C)]
23757#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23758pub struct PipelineColorBlendAttachmentState {
23759    pub blend_enable: Bool32,
23760    pub src_color_blend_factor: BlendFactor,
23761    pub dst_color_blend_factor: BlendFactor,
23762    pub color_blend_op: BlendOp,
23763    pub src_alpha_blend_factor: BlendFactor,
23764    pub dst_alpha_blend_factor: BlendFactor,
23765    pub alpha_blend_op: BlendOp,
23766    pub color_write_mask: ColorComponentFlags,
23767}
23768
23769/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendStateCreateInfo.html>
23770#[repr(C)]
23771#[derive(Copy, Clone, Debug, PartialEq)]
23772pub struct PipelineColorBlendStateCreateInfo {
23773    pub s_type: StructureType,
23774    pub next: *const c_void,
23775    pub flags: PipelineColorBlendStateCreateFlags,
23776    pub logic_op_enable: Bool32,
23777    pub logic_op: LogicOp,
23778    pub attachment_count: u32,
23779    pub attachments: *const PipelineColorBlendAttachmentState,
23780    pub blend_constants: [f32; 4],
23781}
23782
23783impl Default for PipelineColorBlendStateCreateInfo {
23784    #[inline]
23785    fn default() -> Self {
23786        Self {
23787            s_type: StructureType::PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
23788            next: ptr::null(),
23789            flags: PipelineColorBlendStateCreateFlags::default(),
23790            logic_op_enable: Bool32::default(),
23791            logic_op: LogicOp::default(),
23792            attachment_count: u32::default(),
23793            attachments: ptr::null(),
23794            blend_constants: [f32::default(); 4],
23795        }
23796    }
23797}
23798
23799unsafe impl Send for PipelineColorBlendStateCreateInfo {}
23800unsafe impl Sync for PipelineColorBlendStateCreateInfo {}
23801
23802/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorWriteCreateInfoEXT.html>
23803#[repr(C)]
23804#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23805pub struct PipelineColorWriteCreateInfoEXT {
23806    pub s_type: StructureType,
23807    pub next: *const c_void,
23808    pub attachment_count: u32,
23809    pub color_write_enables: *const Bool32,
23810}
23811
23812impl Default for PipelineColorWriteCreateInfoEXT {
23813    #[inline]
23814    fn default() -> Self {
23815        Self {
23816            s_type: StructureType::PIPELINE_COLOR_WRITE_CREATE_INFO_EXT,
23817            next: ptr::null(),
23818            attachment_count: u32::default(),
23819            color_write_enables: ptr::null(),
23820        }
23821    }
23822}
23823
23824unsafe impl Send for PipelineColorWriteCreateInfoEXT {}
23825unsafe impl Sync for PipelineColorWriteCreateInfoEXT {}
23826
23827/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCompilerControlCreateInfoAMD.html>
23828#[repr(C)]
23829#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23830pub struct PipelineCompilerControlCreateInfoAMD {
23831    pub s_type: StructureType,
23832    pub next: *const c_void,
23833    pub compiler_control_flags: PipelineCompilerControlFlagsAMD,
23834}
23835
23836impl Default for PipelineCompilerControlCreateInfoAMD {
23837    #[inline]
23838    fn default() -> Self {
23839        Self {
23840            s_type: StructureType::PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD,
23841            next: ptr::null(),
23842            compiler_control_flags: PipelineCompilerControlFlagsAMD::default(),
23843        }
23844    }
23845}
23846
23847unsafe impl Send for PipelineCompilerControlCreateInfoAMD {}
23848unsafe impl Sync for PipelineCompilerControlCreateInfoAMD {}
23849
23850/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageModulationStateCreateInfoNV.html>
23851#[repr(C)]
23852#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23853pub struct PipelineCoverageModulationStateCreateInfoNV {
23854    pub s_type: StructureType,
23855    pub next: *const c_void,
23856    pub flags: PipelineCoverageModulationStateCreateFlagsNV,
23857    pub coverage_modulation_mode: CoverageModulationModeNV,
23858    pub coverage_modulation_table_enable: Bool32,
23859    pub coverage_modulation_table_count: u32,
23860    pub coverage_modulation_table: *const f32,
23861}
23862
23863impl Default for PipelineCoverageModulationStateCreateInfoNV {
23864    #[inline]
23865    fn default() -> Self {
23866        Self {
23867            s_type: StructureType::PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,
23868            next: ptr::null(),
23869            flags: PipelineCoverageModulationStateCreateFlagsNV::default(),
23870            coverage_modulation_mode: CoverageModulationModeNV::default(),
23871            coverage_modulation_table_enable: Bool32::default(),
23872            coverage_modulation_table_count: u32::default(),
23873            coverage_modulation_table: ptr::null(),
23874        }
23875    }
23876}
23877
23878unsafe impl Send for PipelineCoverageModulationStateCreateInfoNV {}
23879unsafe impl Sync for PipelineCoverageModulationStateCreateInfoNV {}
23880
23881/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageReductionStateCreateInfoNV.html>
23882#[repr(C)]
23883#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23884pub struct PipelineCoverageReductionStateCreateInfoNV {
23885    pub s_type: StructureType,
23886    pub next: *const c_void,
23887    pub flags: PipelineCoverageReductionStateCreateFlagsNV,
23888    pub coverage_reduction_mode: CoverageReductionModeNV,
23889}
23890
23891impl Default for PipelineCoverageReductionStateCreateInfoNV {
23892    #[inline]
23893    fn default() -> Self {
23894        Self {
23895            s_type: StructureType::PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV,
23896            next: ptr::null(),
23897            flags: PipelineCoverageReductionStateCreateFlagsNV::default(),
23898            coverage_reduction_mode: CoverageReductionModeNV::default(),
23899        }
23900    }
23901}
23902
23903unsafe impl Send for PipelineCoverageReductionStateCreateInfoNV {}
23904unsafe impl Sync for PipelineCoverageReductionStateCreateInfoNV {}
23905
23906/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageToColorStateCreateInfoNV.html>
23907#[repr(C)]
23908#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23909pub struct PipelineCoverageToColorStateCreateInfoNV {
23910    pub s_type: StructureType,
23911    pub next: *const c_void,
23912    pub flags: PipelineCoverageToColorStateCreateFlagsNV,
23913    pub coverage_to_color_enable: Bool32,
23914    pub coverage_to_color_location: u32,
23915}
23916
23917impl Default for PipelineCoverageToColorStateCreateInfoNV {
23918    #[inline]
23919    fn default() -> Self {
23920        Self {
23921            s_type: StructureType::PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,
23922            next: ptr::null(),
23923            flags: PipelineCoverageToColorStateCreateFlagsNV::default(),
23924            coverage_to_color_enable: Bool32::default(),
23925            coverage_to_color_location: u32::default(),
23926        }
23927    }
23928}
23929
23930unsafe impl Send for PipelineCoverageToColorStateCreateInfoNV {}
23931unsafe impl Sync for PipelineCoverageToColorStateCreateInfoNV {}
23932
23933/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateFlags2CreateInfo.html>
23934#[repr(C)]
23935#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23936pub struct PipelineCreateFlags2CreateInfo {
23937    pub s_type: StructureType,
23938    pub next: *const c_void,
23939    pub flags: PipelineCreateFlags2,
23940}
23941
23942impl Default for PipelineCreateFlags2CreateInfo {
23943    #[inline]
23944    fn default() -> Self {
23945        Self {
23946            s_type: StructureType::PIPELINE_CREATE_FLAGS_2_CREATE_INFO,
23947            next: ptr::null(),
23948            flags: PipelineCreateFlags2::default(),
23949        }
23950    }
23951}
23952
23953unsafe impl Send for PipelineCreateFlags2CreateInfo {}
23954unsafe impl Sync for PipelineCreateFlags2CreateInfo {}
23955
23956/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateInfoKHR.html>
23957#[repr(C)]
23958#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23959pub struct PipelineCreateInfoKHR {
23960    pub s_type: StructureType,
23961    pub next: *mut c_void,
23962}
23963
23964impl Default for PipelineCreateInfoKHR {
23965    #[inline]
23966    fn default() -> Self {
23967        Self {
23968            s_type: StructureType::PIPELINE_CREATE_INFO_KHR,
23969            next: ptr::null_mut(),
23970        }
23971    }
23972}
23973
23974unsafe impl Send for PipelineCreateInfoKHR {}
23975unsafe impl Sync for PipelineCreateInfoKHR {}
23976
23977/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedback.html>
23978#[repr(C)]
23979#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23980pub struct PipelineCreationFeedback {
23981    pub flags: PipelineCreationFeedbackFlags,
23982    pub duration: u64,
23983}
23984
23985/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackCreateInfo.html>
23986#[repr(C)]
23987#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23988pub struct PipelineCreationFeedbackCreateInfo {
23989    pub s_type: StructureType,
23990    pub next: *const c_void,
23991    pub pipeline_creation_feedback: *mut PipelineCreationFeedback,
23992    pub pipeline_stage_creation_feedback_count: u32,
23993    pub pipeline_stage_creation_feedbacks: *mut PipelineCreationFeedback,
23994}
23995
23996impl Default for PipelineCreationFeedbackCreateInfo {
23997    #[inline]
23998    fn default() -> Self {
23999        Self {
24000            s_type: StructureType::PIPELINE_CREATION_FEEDBACK_CREATE_INFO,
24001            next: ptr::null(),
24002            pipeline_creation_feedback: ptr::null_mut(),
24003            pipeline_stage_creation_feedback_count: u32::default(),
24004            pipeline_stage_creation_feedbacks: ptr::null_mut(),
24005        }
24006    }
24007}
24008
24009unsafe impl Send for PipelineCreationFeedbackCreateInfo {}
24010unsafe impl Sync for PipelineCreationFeedbackCreateInfo {}
24011
24012/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDepthStencilStateCreateInfo.html>
24013#[repr(C)]
24014#[derive(Copy, Clone, Debug, PartialEq)]
24015pub struct PipelineDepthStencilStateCreateInfo {
24016    pub s_type: StructureType,
24017    pub next: *const c_void,
24018    pub flags: PipelineDepthStencilStateCreateFlags,
24019    pub depth_test_enable: Bool32,
24020    pub depth_write_enable: Bool32,
24021    pub depth_compare_op: CompareOp,
24022    pub depth_bounds_test_enable: Bool32,
24023    pub stencil_test_enable: Bool32,
24024    pub front: StencilOpState,
24025    pub back: StencilOpState,
24026    pub min_depth_bounds: f32,
24027    pub max_depth_bounds: f32,
24028}
24029
24030impl Default for PipelineDepthStencilStateCreateInfo {
24031    #[inline]
24032    fn default() -> Self {
24033        Self {
24034            s_type: StructureType::PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
24035            next: ptr::null(),
24036            flags: PipelineDepthStencilStateCreateFlags::default(),
24037            depth_test_enable: Bool32::default(),
24038            depth_write_enable: Bool32::default(),
24039            depth_compare_op: CompareOp::default(),
24040            depth_bounds_test_enable: Bool32::default(),
24041            stencil_test_enable: Bool32::default(),
24042            front: StencilOpState::default(),
24043            back: StencilOpState::default(),
24044            min_depth_bounds: f32::default(),
24045            max_depth_bounds: f32::default(),
24046        }
24047    }
24048}
24049
24050unsafe impl Send for PipelineDepthStencilStateCreateInfo {}
24051unsafe impl Sync for PipelineDepthStencilStateCreateInfo {}
24052
24053/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDiscardRectangleStateCreateInfoEXT.html>
24054#[repr(C)]
24055#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24056pub struct PipelineDiscardRectangleStateCreateInfoEXT {
24057    pub s_type: StructureType,
24058    pub next: *const c_void,
24059    pub flags: PipelineDiscardRectangleStateCreateFlagsEXT,
24060    pub discard_rectangle_mode: DiscardRectangleModeEXT,
24061    pub discard_rectangle_count: u32,
24062    pub discard_rectangles: *const Rect2D,
24063}
24064
24065impl Default for PipelineDiscardRectangleStateCreateInfoEXT {
24066    #[inline]
24067    fn default() -> Self {
24068        Self {
24069            s_type: StructureType::PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
24070            next: ptr::null(),
24071            flags: PipelineDiscardRectangleStateCreateFlagsEXT::default(),
24072            discard_rectangle_mode: DiscardRectangleModeEXT::default(),
24073            discard_rectangle_count: u32::default(),
24074            discard_rectangles: ptr::null(),
24075        }
24076    }
24077}
24078
24079unsafe impl Send for PipelineDiscardRectangleStateCreateInfoEXT {}
24080unsafe impl Sync for PipelineDiscardRectangleStateCreateInfoEXT {}
24081
24082/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDynamicStateCreateInfo.html>
24083#[repr(C)]
24084#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24085pub struct PipelineDynamicStateCreateInfo {
24086    pub s_type: StructureType,
24087    pub next: *const c_void,
24088    pub flags: PipelineDynamicStateCreateFlags,
24089    pub dynamic_state_count: u32,
24090    pub dynamic_states: *const DynamicState,
24091}
24092
24093impl Default for PipelineDynamicStateCreateInfo {
24094    #[inline]
24095    fn default() -> Self {
24096        Self {
24097            s_type: StructureType::PIPELINE_DYNAMIC_STATE_CREATE_INFO,
24098            next: ptr::null(),
24099            flags: PipelineDynamicStateCreateFlags::default(),
24100            dynamic_state_count: u32::default(),
24101            dynamic_states: ptr::null(),
24102        }
24103    }
24104}
24105
24106unsafe impl Send for PipelineDynamicStateCreateInfo {}
24107unsafe impl Sync for PipelineDynamicStateCreateInfo {}
24108
24109/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutableInfoKHR.html>
24110#[repr(C)]
24111#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24112pub struct PipelineExecutableInfoKHR {
24113    pub s_type: StructureType,
24114    pub next: *const c_void,
24115    pub pipeline: Pipeline,
24116    pub executable_index: u32,
24117}
24118
24119impl Default for PipelineExecutableInfoKHR {
24120    #[inline]
24121    fn default() -> Self {
24122        Self {
24123            s_type: StructureType::PIPELINE_EXECUTABLE_INFO_KHR,
24124            next: ptr::null(),
24125            pipeline: Pipeline::default(),
24126            executable_index: u32::default(),
24127        }
24128    }
24129}
24130
24131unsafe impl Send for PipelineExecutableInfoKHR {}
24132unsafe impl Sync for PipelineExecutableInfoKHR {}
24133
24134/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutableInternalRepresentationKHR.html>
24135#[repr(C)]
24136#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24137pub struct PipelineExecutableInternalRepresentationKHR {
24138    pub s_type: StructureType,
24139    pub next: *mut c_void,
24140    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
24141    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
24142    pub is_text: Bool32,
24143    pub data_size: usize,
24144    pub data: *mut c_void,
24145}
24146
24147impl Default for PipelineExecutableInternalRepresentationKHR {
24148    #[inline]
24149    fn default() -> Self {
24150        Self {
24151            s_type: StructureType::PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR,
24152            next: ptr::null_mut(),
24153            name: StringArray::default(),
24154            description: StringArray::default(),
24155            is_text: Bool32::default(),
24156            data_size: usize::default(),
24157            data: ptr::null_mut(),
24158        }
24159    }
24160}
24161
24162unsafe impl Send for PipelineExecutableInternalRepresentationKHR {}
24163unsafe impl Sync for PipelineExecutableInternalRepresentationKHR {}
24164
24165/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutablePropertiesKHR.html>
24166#[repr(C)]
24167#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24168pub struct PipelineExecutablePropertiesKHR {
24169    pub s_type: StructureType,
24170    pub next: *mut c_void,
24171    pub stages: ShaderStageFlags,
24172    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
24173    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
24174    pub subgroup_size: u32,
24175}
24176
24177impl Default for PipelineExecutablePropertiesKHR {
24178    #[inline]
24179    fn default() -> Self {
24180        Self {
24181            s_type: StructureType::PIPELINE_EXECUTABLE_PROPERTIES_KHR,
24182            next: ptr::null_mut(),
24183            stages: ShaderStageFlags::default(),
24184            name: StringArray::default(),
24185            description: StringArray::default(),
24186            subgroup_size: u32::default(),
24187        }
24188    }
24189}
24190
24191unsafe impl Send for PipelineExecutablePropertiesKHR {}
24192unsafe impl Sync for PipelineExecutablePropertiesKHR {}
24193
24194/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutableStatisticKHR.html>
24195#[repr(C)]
24196#[derive(Copy, Clone, Debug)]
24197pub struct PipelineExecutableStatisticKHR {
24198    pub s_type: StructureType,
24199    pub next: *mut c_void,
24200    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
24201    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
24202    pub format: PipelineExecutableStatisticFormatKHR,
24203    pub value: PipelineExecutableStatisticValueKHR,
24204}
24205
24206impl Default for PipelineExecutableStatisticKHR {
24207    #[inline]
24208    fn default() -> Self {
24209        Self {
24210            s_type: StructureType::PIPELINE_EXECUTABLE_STATISTIC_KHR,
24211            next: ptr::null_mut(),
24212            name: StringArray::default(),
24213            description: StringArray::default(),
24214            format: PipelineExecutableStatisticFormatKHR::default(),
24215            value: PipelineExecutableStatisticValueKHR::default(),
24216        }
24217    }
24218}
24219
24220unsafe impl Send for PipelineExecutableStatisticKHR {}
24221unsafe impl Sync for PipelineExecutableStatisticKHR {}
24222
24223/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineFragmentDensityMapLayeredCreateInfoVALVE.html>
24224#[repr(C)]
24225#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24226pub struct PipelineFragmentDensityMapLayeredCreateInfoVALVE {
24227    pub s_type: StructureType,
24228    pub next: *const c_void,
24229    pub max_fragment_density_map_layers: u32,
24230}
24231
24232impl Default for PipelineFragmentDensityMapLayeredCreateInfoVALVE {
24233    #[inline]
24234    fn default() -> Self {
24235        Self {
24236            s_type: StructureType::PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE,
24237            next: ptr::null(),
24238            max_fragment_density_map_layers: u32::default(),
24239        }
24240    }
24241}
24242
24243unsafe impl Send for PipelineFragmentDensityMapLayeredCreateInfoVALVE {}
24244unsafe impl Sync for PipelineFragmentDensityMapLayeredCreateInfoVALVE {}
24245
24246/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineFragmentShadingRateEnumStateCreateInfoNV.html>
24247#[repr(C)]
24248#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24249pub struct PipelineFragmentShadingRateEnumStateCreateInfoNV {
24250    pub s_type: StructureType,
24251    pub next: *const c_void,
24252    pub shading_rate_type: FragmentShadingRateTypeNV,
24253    pub shading_rate: FragmentShadingRateNV,
24254    pub combiner_ops: [FragmentShadingRateCombinerOpKHR; 2],
24255}
24256
24257impl Default for PipelineFragmentShadingRateEnumStateCreateInfoNV {
24258    #[inline]
24259    fn default() -> Self {
24260        Self {
24261            s_type: StructureType::PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV,
24262            next: ptr::null(),
24263            shading_rate_type: FragmentShadingRateTypeNV::default(),
24264            shading_rate: FragmentShadingRateNV::default(),
24265            combiner_ops: [FragmentShadingRateCombinerOpKHR::default(); 2],
24266        }
24267    }
24268}
24269
24270unsafe impl Send for PipelineFragmentShadingRateEnumStateCreateInfoNV {}
24271unsafe impl Sync for PipelineFragmentShadingRateEnumStateCreateInfoNV {}
24272
24273/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineFragmentShadingRateStateCreateInfoKHR.html>
24274#[repr(C)]
24275#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24276pub struct PipelineFragmentShadingRateStateCreateInfoKHR {
24277    pub s_type: StructureType,
24278    pub next: *const c_void,
24279    pub fragment_size: Extent2D,
24280    pub combiner_ops: [FragmentShadingRateCombinerOpKHR; 2],
24281}
24282
24283impl Default for PipelineFragmentShadingRateStateCreateInfoKHR {
24284    #[inline]
24285    fn default() -> Self {
24286        Self {
24287            s_type: StructureType::PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR,
24288            next: ptr::null(),
24289            fragment_size: Extent2D::default(),
24290            combiner_ops: [FragmentShadingRateCombinerOpKHR::default(); 2],
24291        }
24292    }
24293}
24294
24295unsafe impl Send for PipelineFragmentShadingRateStateCreateInfoKHR {}
24296unsafe impl Sync for PipelineFragmentShadingRateStateCreateInfoKHR {}
24297
24298/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineIndirectDeviceAddressInfoNV.html>
24299#[repr(C)]
24300#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24301pub struct PipelineIndirectDeviceAddressInfoNV {
24302    pub s_type: StructureType,
24303    pub next: *const c_void,
24304    pub pipeline_bind_point: PipelineBindPoint,
24305    pub pipeline: Pipeline,
24306}
24307
24308impl Default for PipelineIndirectDeviceAddressInfoNV {
24309    #[inline]
24310    fn default() -> Self {
24311        Self {
24312            s_type: StructureType::PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV,
24313            next: ptr::null(),
24314            pipeline_bind_point: PipelineBindPoint::default(),
24315            pipeline: Pipeline::default(),
24316        }
24317    }
24318}
24319
24320unsafe impl Send for PipelineIndirectDeviceAddressInfoNV {}
24321unsafe impl Sync for PipelineIndirectDeviceAddressInfoNV {}
24322
24323/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInfoKHR.html>
24324#[repr(C)]
24325#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24326pub struct PipelineInfoKHR {
24327    pub s_type: StructureType,
24328    pub next: *const c_void,
24329    pub pipeline: Pipeline,
24330}
24331
24332impl Default for PipelineInfoKHR {
24333    #[inline]
24334    fn default() -> Self {
24335        Self {
24336            s_type: StructureType::PIPELINE_INFO_KHR,
24337            next: ptr::null(),
24338            pipeline: Pipeline::default(),
24339        }
24340    }
24341}
24342
24343unsafe impl Send for PipelineInfoKHR {}
24344unsafe impl Sync for PipelineInfoKHR {}
24345
24346/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInputAssemblyStateCreateInfo.html>
24347#[repr(C)]
24348#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24349pub struct PipelineInputAssemblyStateCreateInfo {
24350    pub s_type: StructureType,
24351    pub next: *const c_void,
24352    pub flags: PipelineInputAssemblyStateCreateFlags,
24353    pub topology: PrimitiveTopology,
24354    pub primitive_restart_enable: Bool32,
24355}
24356
24357impl Default for PipelineInputAssemblyStateCreateInfo {
24358    #[inline]
24359    fn default() -> Self {
24360        Self {
24361            s_type: StructureType::PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
24362            next: ptr::null(),
24363            flags: PipelineInputAssemblyStateCreateFlags::default(),
24364            topology: PrimitiveTopology::default(),
24365            primitive_restart_enable: Bool32::default(),
24366        }
24367    }
24368}
24369
24370unsafe impl Send for PipelineInputAssemblyStateCreateInfo {}
24371unsafe impl Sync for PipelineInputAssemblyStateCreateInfo {}
24372
24373/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineLayoutCreateInfo.html>
24374#[repr(C)]
24375#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24376pub struct PipelineLayoutCreateInfo {
24377    pub s_type: StructureType,
24378    pub next: *const c_void,
24379    pub flags: PipelineLayoutCreateFlags,
24380    pub set_layout_count: u32,
24381    pub set_layouts: *const DescriptorSetLayout,
24382    pub push_constant_range_count: u32,
24383    pub push_constant_ranges: *const PushConstantRange,
24384}
24385
24386impl Default for PipelineLayoutCreateInfo {
24387    #[inline]
24388    fn default() -> Self {
24389        Self {
24390            s_type: StructureType::PIPELINE_LAYOUT_CREATE_INFO,
24391            next: ptr::null(),
24392            flags: PipelineLayoutCreateFlags::default(),
24393            set_layout_count: u32::default(),
24394            set_layouts: ptr::null(),
24395            push_constant_range_count: u32::default(),
24396            push_constant_ranges: ptr::null(),
24397        }
24398    }
24399}
24400
24401unsafe impl Send for PipelineLayoutCreateInfo {}
24402unsafe impl Sync for PipelineLayoutCreateInfo {}
24403
24404/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineLibraryCreateInfoKHR.html>
24405#[repr(C)]
24406#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24407pub struct PipelineLibraryCreateInfoKHR {
24408    pub s_type: StructureType,
24409    pub next: *const c_void,
24410    pub library_count: u32,
24411    pub libraries: *const Pipeline,
24412}
24413
24414impl Default for PipelineLibraryCreateInfoKHR {
24415    #[inline]
24416    fn default() -> Self {
24417        Self {
24418            s_type: StructureType::PIPELINE_LIBRARY_CREATE_INFO_KHR,
24419            next: ptr::null(),
24420            library_count: u32::default(),
24421            libraries: ptr::null(),
24422        }
24423    }
24424}
24425
24426unsafe impl Send for PipelineLibraryCreateInfoKHR {}
24427unsafe impl Sync for PipelineLibraryCreateInfoKHR {}
24428
24429/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineMultisampleStateCreateInfo.html>
24430#[repr(C)]
24431#[derive(Copy, Clone, Debug, PartialEq)]
24432pub struct PipelineMultisampleStateCreateInfo {
24433    pub s_type: StructureType,
24434    pub next: *const c_void,
24435    pub flags: PipelineMultisampleStateCreateFlags,
24436    pub rasterization_samples: SampleCountFlags,
24437    pub sample_shading_enable: Bool32,
24438    pub min_sample_shading: f32,
24439    pub sample_mask: *const SampleMask,
24440    pub alpha_to_coverage_enable: Bool32,
24441    pub alpha_to_one_enable: Bool32,
24442}
24443
24444impl Default for PipelineMultisampleStateCreateInfo {
24445    #[inline]
24446    fn default() -> Self {
24447        Self {
24448            s_type: StructureType::PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
24449            next: ptr::null(),
24450            flags: PipelineMultisampleStateCreateFlags::default(),
24451            rasterization_samples: SampleCountFlags::default(),
24452            sample_shading_enable: Bool32::default(),
24453            min_sample_shading: f32::default(),
24454            sample_mask: ptr::null(),
24455            alpha_to_coverage_enable: Bool32::default(),
24456            alpha_to_one_enable: Bool32::default(),
24457        }
24458    }
24459}
24460
24461unsafe impl Send for PipelineMultisampleStateCreateInfo {}
24462unsafe impl Sync for PipelineMultisampleStateCreateInfo {}
24463
24464/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelinePropertiesIdentifierEXT.html>
24465#[repr(C)]
24466#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24467pub struct PipelinePropertiesIdentifierEXT {
24468    pub s_type: StructureType,
24469    pub next: *mut c_void,
24470    pub pipeline_identifier: ByteArray<UUID_SIZE>,
24471}
24472
24473impl Default for PipelinePropertiesIdentifierEXT {
24474    #[inline]
24475    fn default() -> Self {
24476        Self {
24477            s_type: StructureType::PIPELINE_PROPERTIES_IDENTIFIER_EXT,
24478            next: ptr::null_mut(),
24479            pipeline_identifier: ByteArray::default(),
24480        }
24481    }
24482}
24483
24484unsafe impl Send for PipelinePropertiesIdentifierEXT {}
24485unsafe impl Sync for PipelinePropertiesIdentifierEXT {}
24486
24487/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationConservativeStateCreateInfoEXT.html>
24488#[repr(C)]
24489#[derive(Copy, Clone, Debug, PartialEq)]
24490pub struct PipelineRasterizationConservativeStateCreateInfoEXT {
24491    pub s_type: StructureType,
24492    pub next: *const c_void,
24493    pub flags: PipelineRasterizationConservativeStateCreateFlagsEXT,
24494    pub conservative_rasterization_mode: ConservativeRasterizationModeEXT,
24495    pub extra_primitive_overestimation_size: f32,
24496}
24497
24498impl Default for PipelineRasterizationConservativeStateCreateInfoEXT {
24499    #[inline]
24500    fn default() -> Self {
24501        Self {
24502            s_type: StructureType::PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT,
24503            next: ptr::null(),
24504            flags: PipelineRasterizationConservativeStateCreateFlagsEXT::default(),
24505            conservative_rasterization_mode: ConservativeRasterizationModeEXT::default(),
24506            extra_primitive_overestimation_size: f32::default(),
24507        }
24508    }
24509}
24510
24511unsafe impl Send for PipelineRasterizationConservativeStateCreateInfoEXT {}
24512unsafe impl Sync for PipelineRasterizationConservativeStateCreateInfoEXT {}
24513
24514/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationDepthClipStateCreateInfoEXT.html>
24515#[repr(C)]
24516#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24517pub struct PipelineRasterizationDepthClipStateCreateInfoEXT {
24518    pub s_type: StructureType,
24519    pub next: *const c_void,
24520    pub flags: PipelineRasterizationDepthClipStateCreateFlagsEXT,
24521    pub depth_clip_enable: Bool32,
24522}
24523
24524impl Default for PipelineRasterizationDepthClipStateCreateInfoEXT {
24525    #[inline]
24526    fn default() -> Self {
24527        Self {
24528            s_type: StructureType::PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT,
24529            next: ptr::null(),
24530            flags: PipelineRasterizationDepthClipStateCreateFlagsEXT::default(),
24531            depth_clip_enable: Bool32::default(),
24532        }
24533    }
24534}
24535
24536unsafe impl Send for PipelineRasterizationDepthClipStateCreateInfoEXT {}
24537unsafe impl Sync for PipelineRasterizationDepthClipStateCreateInfoEXT {}
24538
24539/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfo.html>
24540#[repr(C)]
24541#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24542pub struct PipelineRasterizationLineStateCreateInfo {
24543    pub s_type: StructureType,
24544    pub next: *const c_void,
24545    pub line_rasterization_mode: LineRasterizationMode,
24546    pub stippled_line_enable: Bool32,
24547    pub line_stipple_factor: u32,
24548    pub line_stipple_pattern: u16,
24549}
24550
24551impl Default for PipelineRasterizationLineStateCreateInfo {
24552    #[inline]
24553    fn default() -> Self {
24554        Self {
24555            s_type: StructureType::PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO,
24556            next: ptr::null(),
24557            line_rasterization_mode: LineRasterizationMode::default(),
24558            stippled_line_enable: Bool32::default(),
24559            line_stipple_factor: u32::default(),
24560            line_stipple_pattern: u16::default(),
24561        }
24562    }
24563}
24564
24565unsafe impl Send for PipelineRasterizationLineStateCreateInfo {}
24566unsafe impl Sync for PipelineRasterizationLineStateCreateInfo {}
24567
24568/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationProvokingVertexStateCreateInfoEXT.html>
24569#[repr(C)]
24570#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24571pub struct PipelineRasterizationProvokingVertexStateCreateInfoEXT {
24572    pub s_type: StructureType,
24573    pub next: *const c_void,
24574    pub provoking_vertex_mode: ProvokingVertexModeEXT,
24575}
24576
24577impl Default for PipelineRasterizationProvokingVertexStateCreateInfoEXT {
24578    #[inline]
24579    fn default() -> Self {
24580        Self {
24581            s_type: StructureType::PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT,
24582            next: ptr::null(),
24583            provoking_vertex_mode: ProvokingVertexModeEXT::default(),
24584        }
24585    }
24586}
24587
24588unsafe impl Send for PipelineRasterizationProvokingVertexStateCreateInfoEXT {}
24589unsafe impl Sync for PipelineRasterizationProvokingVertexStateCreateInfoEXT {}
24590
24591/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateCreateInfo.html>
24592#[repr(C)]
24593#[derive(Copy, Clone, Debug, PartialEq)]
24594pub struct PipelineRasterizationStateCreateInfo {
24595    pub s_type: StructureType,
24596    pub next: *const c_void,
24597    pub flags: PipelineRasterizationStateCreateFlags,
24598    pub depth_clamp_enable: Bool32,
24599    pub rasterizer_discard_enable: Bool32,
24600    pub polygon_mode: PolygonMode,
24601    pub cull_mode: CullModeFlags,
24602    pub front_face: FrontFace,
24603    pub depth_bias_enable: Bool32,
24604    pub depth_bias_constant_factor: f32,
24605    pub depth_bias_clamp: f32,
24606    pub depth_bias_slope_factor: f32,
24607    pub line_width: f32,
24608}
24609
24610impl Default for PipelineRasterizationStateCreateInfo {
24611    #[inline]
24612    fn default() -> Self {
24613        Self {
24614            s_type: StructureType::PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
24615            next: ptr::null(),
24616            flags: PipelineRasterizationStateCreateFlags::default(),
24617            depth_clamp_enable: Bool32::default(),
24618            rasterizer_discard_enable: Bool32::default(),
24619            polygon_mode: PolygonMode::default(),
24620            cull_mode: CullModeFlags::default(),
24621            front_face: FrontFace::default(),
24622            depth_bias_enable: Bool32::default(),
24623            depth_bias_constant_factor: f32::default(),
24624            depth_bias_clamp: f32::default(),
24625            depth_bias_slope_factor: f32::default(),
24626            line_width: f32::default(),
24627        }
24628    }
24629}
24630
24631unsafe impl Send for PipelineRasterizationStateCreateInfo {}
24632unsafe impl Sync for PipelineRasterizationStateCreateInfo {}
24633
24634/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateRasterizationOrderAMD.html>
24635#[repr(C)]
24636#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24637pub struct PipelineRasterizationStateRasterizationOrderAMD {
24638    pub s_type: StructureType,
24639    pub next: *const c_void,
24640    pub rasterization_order: RasterizationOrderAMD,
24641}
24642
24643impl Default for PipelineRasterizationStateRasterizationOrderAMD {
24644    #[inline]
24645    fn default() -> Self {
24646        Self {
24647            s_type: StructureType::PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
24648            next: ptr::null(),
24649            rasterization_order: RasterizationOrderAMD::default(),
24650        }
24651    }
24652}
24653
24654unsafe impl Send for PipelineRasterizationStateRasterizationOrderAMD {}
24655unsafe impl Sync for PipelineRasterizationStateRasterizationOrderAMD {}
24656
24657/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateStreamCreateInfoEXT.html>
24658#[repr(C)]
24659#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24660pub struct PipelineRasterizationStateStreamCreateInfoEXT {
24661    pub s_type: StructureType,
24662    pub next: *const c_void,
24663    pub flags: PipelineRasterizationStateStreamCreateFlagsEXT,
24664    pub rasterization_stream: u32,
24665}
24666
24667impl Default for PipelineRasterizationStateStreamCreateInfoEXT {
24668    #[inline]
24669    fn default() -> Self {
24670        Self {
24671            s_type: StructureType::PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT,
24672            next: ptr::null(),
24673            flags: PipelineRasterizationStateStreamCreateFlagsEXT::default(),
24674            rasterization_stream: u32::default(),
24675        }
24676    }
24677}
24678
24679unsafe impl Send for PipelineRasterizationStateStreamCreateInfoEXT {}
24680unsafe impl Sync for PipelineRasterizationStateStreamCreateInfoEXT {}
24681
24682/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRenderingCreateInfo.html>
24683#[repr(C)]
24684#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24685pub struct PipelineRenderingCreateInfo {
24686    pub s_type: StructureType,
24687    pub next: *const c_void,
24688    pub view_mask: u32,
24689    pub color_attachment_count: u32,
24690    pub color_attachment_formats: *const Format,
24691    pub depth_attachment_format: Format,
24692    pub stencil_attachment_format: Format,
24693}
24694
24695impl Default for PipelineRenderingCreateInfo {
24696    #[inline]
24697    fn default() -> Self {
24698        Self {
24699            s_type: StructureType::PIPELINE_RENDERING_CREATE_INFO,
24700            next: ptr::null(),
24701            view_mask: u32::default(),
24702            color_attachment_count: u32::default(),
24703            color_attachment_formats: ptr::null(),
24704            depth_attachment_format: Format::default(),
24705            stencil_attachment_format: Format::default(),
24706        }
24707    }
24708}
24709
24710unsafe impl Send for PipelineRenderingCreateInfo {}
24711unsafe impl Sync for PipelineRenderingCreateInfo {}
24712
24713/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRepresentativeFragmentTestStateCreateInfoNV.html>
24714#[repr(C)]
24715#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24716pub struct PipelineRepresentativeFragmentTestStateCreateInfoNV {
24717    pub s_type: StructureType,
24718    pub next: *const c_void,
24719    pub representative_fragment_test_enable: Bool32,
24720}
24721
24722impl Default for PipelineRepresentativeFragmentTestStateCreateInfoNV {
24723    #[inline]
24724    fn default() -> Self {
24725        Self {
24726            s_type: StructureType::PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV,
24727            next: ptr::null(),
24728            representative_fragment_test_enable: Bool32::default(),
24729        }
24730    }
24731}
24732
24733unsafe impl Send for PipelineRepresentativeFragmentTestStateCreateInfoNV {}
24734unsafe impl Sync for PipelineRepresentativeFragmentTestStateCreateInfoNV {}
24735
24736/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRobustnessCreateInfo.html>
24737#[repr(C)]
24738#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24739pub struct PipelineRobustnessCreateInfo {
24740    pub s_type: StructureType,
24741    pub next: *const c_void,
24742    pub storage_buffers: PipelineRobustnessBufferBehavior,
24743    pub uniform_buffers: PipelineRobustnessBufferBehavior,
24744    pub vertex_inputs: PipelineRobustnessBufferBehavior,
24745    pub images: PipelineRobustnessImageBehavior,
24746}
24747
24748impl Default for PipelineRobustnessCreateInfo {
24749    #[inline]
24750    fn default() -> Self {
24751        Self {
24752            s_type: StructureType::PIPELINE_ROBUSTNESS_CREATE_INFO,
24753            next: ptr::null(),
24754            storage_buffers: PipelineRobustnessBufferBehavior::default(),
24755            uniform_buffers: PipelineRobustnessBufferBehavior::default(),
24756            vertex_inputs: PipelineRobustnessBufferBehavior::default(),
24757            images: PipelineRobustnessImageBehavior::default(),
24758        }
24759    }
24760}
24761
24762unsafe impl Send for PipelineRobustnessCreateInfo {}
24763unsafe impl Sync for PipelineRobustnessCreateInfo {}
24764
24765/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineSampleLocationsStateCreateInfoEXT.html>
24766#[repr(C)]
24767#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24768pub struct PipelineSampleLocationsStateCreateInfoEXT {
24769    pub s_type: StructureType,
24770    pub next: *const c_void,
24771    pub sample_locations_enable: Bool32,
24772    pub sample_locations_info: SampleLocationsInfoEXT,
24773}
24774
24775impl Default for PipelineSampleLocationsStateCreateInfoEXT {
24776    #[inline]
24777    fn default() -> Self {
24778        Self {
24779            s_type: StructureType::PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,
24780            next: ptr::null(),
24781            sample_locations_enable: Bool32::default(),
24782            sample_locations_info: SampleLocationsInfoEXT::default(),
24783        }
24784    }
24785}
24786
24787unsafe impl Send for PipelineSampleLocationsStateCreateInfoEXT {}
24788unsafe impl Sync for PipelineSampleLocationsStateCreateInfoEXT {}
24789
24790/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageCreateInfo.html>
24791#[repr(C)]
24792#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24793pub struct PipelineShaderStageCreateInfo {
24794    pub s_type: StructureType,
24795    pub next: *const c_void,
24796    pub flags: PipelineShaderStageCreateFlags,
24797    pub stage: ShaderStageFlags,
24798    pub module: ShaderModule,
24799    pub name: *const c_char,
24800    pub specialization_info: *const SpecializationInfo,
24801}
24802
24803impl Default for PipelineShaderStageCreateInfo {
24804    #[inline]
24805    fn default() -> Self {
24806        Self {
24807            s_type: StructureType::PIPELINE_SHADER_STAGE_CREATE_INFO,
24808            next: ptr::null(),
24809            flags: PipelineShaderStageCreateFlags::default(),
24810            stage: ShaderStageFlags::default(),
24811            module: ShaderModule::default(),
24812            name: ptr::null(),
24813            specialization_info: ptr::null(),
24814        }
24815    }
24816}
24817
24818unsafe impl Send for PipelineShaderStageCreateInfo {}
24819unsafe impl Sync for PipelineShaderStageCreateInfo {}
24820
24821/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageModuleIdentifierCreateInfoEXT.html>
24822#[repr(C)]
24823#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24824pub struct PipelineShaderStageModuleIdentifierCreateInfoEXT {
24825    pub s_type: StructureType,
24826    pub next: *const c_void,
24827    pub identifier_size: u32,
24828    pub identifier: *const u8,
24829}
24830
24831impl Default for PipelineShaderStageModuleIdentifierCreateInfoEXT {
24832    #[inline]
24833    fn default() -> Self {
24834        Self {
24835            s_type: StructureType::PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT,
24836            next: ptr::null(),
24837            identifier_size: u32::default(),
24838            identifier: ptr::null(),
24839        }
24840    }
24841}
24842
24843unsafe impl Send for PipelineShaderStageModuleIdentifierCreateInfoEXT {}
24844unsafe impl Sync for PipelineShaderStageModuleIdentifierCreateInfoEXT {}
24845
24846/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageNodeCreateInfoAMDX.html>
24847#[repr(C)]
24848#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24849pub struct PipelineShaderStageNodeCreateInfoAMDX {
24850    pub s_type: StructureType,
24851    pub next: *const c_void,
24852    pub name: *const c_char,
24853    pub index: u32,
24854}
24855
24856impl Default for PipelineShaderStageNodeCreateInfoAMDX {
24857    #[inline]
24858    fn default() -> Self {
24859        Self {
24860            s_type: StructureType::PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX,
24861            next: ptr::null(),
24862            name: ptr::null(),
24863            index: u32::default(),
24864        }
24865    }
24866}
24867
24868unsafe impl Send for PipelineShaderStageNodeCreateInfoAMDX {}
24869unsafe impl Sync for PipelineShaderStageNodeCreateInfoAMDX {}
24870
24871/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageRequiredSubgroupSizeCreateInfo.html>
24872#[repr(C)]
24873#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24874pub struct PipelineShaderStageRequiredSubgroupSizeCreateInfo {
24875    pub s_type: StructureType,
24876    pub next: *const c_void,
24877    pub required_subgroup_size: u32,
24878}
24879
24880impl Default for PipelineShaderStageRequiredSubgroupSizeCreateInfo {
24881    #[inline]
24882    fn default() -> Self {
24883        Self {
24884            s_type: StructureType::PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO,
24885            next: ptr::null(),
24886            required_subgroup_size: u32::default(),
24887        }
24888    }
24889}
24890
24891unsafe impl Send for PipelineShaderStageRequiredSubgroupSizeCreateInfo {}
24892unsafe impl Sync for PipelineShaderStageRequiredSubgroupSizeCreateInfo {}
24893
24894/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationDomainOriginStateCreateInfo.html>
24895#[repr(C)]
24896#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24897pub struct PipelineTessellationDomainOriginStateCreateInfo {
24898    pub s_type: StructureType,
24899    pub next: *const c_void,
24900    pub domain_origin: TessellationDomainOrigin,
24901}
24902
24903impl Default for PipelineTessellationDomainOriginStateCreateInfo {
24904    #[inline]
24905    fn default() -> Self {
24906        Self {
24907            s_type: StructureType::PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
24908            next: ptr::null(),
24909            domain_origin: TessellationDomainOrigin::default(),
24910        }
24911    }
24912}
24913
24914unsafe impl Send for PipelineTessellationDomainOriginStateCreateInfo {}
24915unsafe impl Sync for PipelineTessellationDomainOriginStateCreateInfo {}
24916
24917/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationStateCreateInfo.html>
24918#[repr(C)]
24919#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24920pub struct PipelineTessellationStateCreateInfo {
24921    pub s_type: StructureType,
24922    pub next: *const c_void,
24923    pub flags: PipelineTessellationStateCreateFlags,
24924    pub patch_control_points: u32,
24925}
24926
24927impl Default for PipelineTessellationStateCreateInfo {
24928    #[inline]
24929    fn default() -> Self {
24930        Self {
24931            s_type: StructureType::PIPELINE_TESSELLATION_STATE_CREATE_INFO,
24932            next: ptr::null(),
24933            flags: PipelineTessellationStateCreateFlags::default(),
24934            patch_control_points: u32::default(),
24935        }
24936    }
24937}
24938
24939unsafe impl Send for PipelineTessellationStateCreateInfo {}
24940unsafe impl Sync for PipelineTessellationStateCreateInfo {}
24941
24942/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfo.html>
24943#[repr(C)]
24944#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24945pub struct PipelineVertexInputDivisorStateCreateInfo {
24946    pub s_type: StructureType,
24947    pub next: *const c_void,
24948    pub vertex_binding_divisor_count: u32,
24949    pub vertex_binding_divisors: *const VertexInputBindingDivisorDescription,
24950}
24951
24952impl Default for PipelineVertexInputDivisorStateCreateInfo {
24953    #[inline]
24954    fn default() -> Self {
24955        Self {
24956            s_type: StructureType::PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO,
24957            next: ptr::null(),
24958            vertex_binding_divisor_count: u32::default(),
24959            vertex_binding_divisors: ptr::null(),
24960        }
24961    }
24962}
24963
24964unsafe impl Send for PipelineVertexInputDivisorStateCreateInfo {}
24965unsafe impl Sync for PipelineVertexInputDivisorStateCreateInfo {}
24966
24967/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputStateCreateInfo.html>
24968#[repr(C)]
24969#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24970pub struct PipelineVertexInputStateCreateInfo {
24971    pub s_type: StructureType,
24972    pub next: *const c_void,
24973    pub flags: PipelineVertexInputStateCreateFlags,
24974    pub vertex_binding_description_count: u32,
24975    pub vertex_binding_descriptions: *const VertexInputBindingDescription,
24976    pub vertex_attribute_description_count: u32,
24977    pub vertex_attribute_descriptions: *const VertexInputAttributeDescription,
24978}
24979
24980impl Default for PipelineVertexInputStateCreateInfo {
24981    #[inline]
24982    fn default() -> Self {
24983        Self {
24984            s_type: StructureType::PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
24985            next: ptr::null(),
24986            flags: PipelineVertexInputStateCreateFlags::default(),
24987            vertex_binding_description_count: u32::default(),
24988            vertex_binding_descriptions: ptr::null(),
24989            vertex_attribute_description_count: u32::default(),
24990            vertex_attribute_descriptions: ptr::null(),
24991        }
24992    }
24993}
24994
24995unsafe impl Send for PipelineVertexInputStateCreateInfo {}
24996unsafe impl Sync for PipelineVertexInputStateCreateInfo {}
24997
24998/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportCoarseSampleOrderStateCreateInfoNV.html>
24999#[repr(C)]
25000#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25001pub struct PipelineViewportCoarseSampleOrderStateCreateInfoNV {
25002    pub s_type: StructureType,
25003    pub next: *const c_void,
25004    pub sample_order_type: CoarseSampleOrderTypeNV,
25005    pub custom_sample_order_count: u32,
25006    pub custom_sample_orders: *const CoarseSampleOrderCustomNV,
25007}
25008
25009impl Default for PipelineViewportCoarseSampleOrderStateCreateInfoNV {
25010    #[inline]
25011    fn default() -> Self {
25012        Self {
25013            s_type: StructureType::PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV,
25014            next: ptr::null(),
25015            sample_order_type: CoarseSampleOrderTypeNV::default(),
25016            custom_sample_order_count: u32::default(),
25017            custom_sample_orders: ptr::null(),
25018        }
25019    }
25020}
25021
25022unsafe impl Send for PipelineViewportCoarseSampleOrderStateCreateInfoNV {}
25023unsafe impl Sync for PipelineViewportCoarseSampleOrderStateCreateInfoNV {}
25024
25025/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportDepthClampControlCreateInfoEXT.html>
25026#[repr(C)]
25027#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25028pub struct PipelineViewportDepthClampControlCreateInfoEXT {
25029    pub s_type: StructureType,
25030    pub next: *const c_void,
25031    pub depth_clamp_mode: DepthClampModeEXT,
25032    pub depth_clamp_range: *const DepthClampRangeEXT,
25033}
25034
25035impl Default for PipelineViewportDepthClampControlCreateInfoEXT {
25036    #[inline]
25037    fn default() -> Self {
25038        Self {
25039            s_type: StructureType::PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT,
25040            next: ptr::null(),
25041            depth_clamp_mode: DepthClampModeEXT::default(),
25042            depth_clamp_range: ptr::null(),
25043        }
25044    }
25045}
25046
25047unsafe impl Send for PipelineViewportDepthClampControlCreateInfoEXT {}
25048unsafe impl Sync for PipelineViewportDepthClampControlCreateInfoEXT {}
25049
25050/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportDepthClipControlCreateInfoEXT.html>
25051#[repr(C)]
25052#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25053pub struct PipelineViewportDepthClipControlCreateInfoEXT {
25054    pub s_type: StructureType,
25055    pub next: *const c_void,
25056    pub negative_one_to_one: Bool32,
25057}
25058
25059impl Default for PipelineViewportDepthClipControlCreateInfoEXT {
25060    #[inline]
25061    fn default() -> Self {
25062        Self {
25063            s_type: StructureType::PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT,
25064            next: ptr::null(),
25065            negative_one_to_one: Bool32::default(),
25066        }
25067    }
25068}
25069
25070unsafe impl Send for PipelineViewportDepthClipControlCreateInfoEXT {}
25071unsafe impl Sync for PipelineViewportDepthClipControlCreateInfoEXT {}
25072
25073/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportExclusiveScissorStateCreateInfoNV.html>
25074#[repr(C)]
25075#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25076pub struct PipelineViewportExclusiveScissorStateCreateInfoNV {
25077    pub s_type: StructureType,
25078    pub next: *const c_void,
25079    pub exclusive_scissor_count: u32,
25080    pub exclusive_scissors: *const Rect2D,
25081}
25082
25083impl Default for PipelineViewportExclusiveScissorStateCreateInfoNV {
25084    #[inline]
25085    fn default() -> Self {
25086        Self {
25087            s_type: StructureType::PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV,
25088            next: ptr::null(),
25089            exclusive_scissor_count: u32::default(),
25090            exclusive_scissors: ptr::null(),
25091        }
25092    }
25093}
25094
25095unsafe impl Send for PipelineViewportExclusiveScissorStateCreateInfoNV {}
25096unsafe impl Sync for PipelineViewportExclusiveScissorStateCreateInfoNV {}
25097
25098/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportShadingRateImageStateCreateInfoNV.html>
25099#[repr(C)]
25100#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25101pub struct PipelineViewportShadingRateImageStateCreateInfoNV {
25102    pub s_type: StructureType,
25103    pub next: *const c_void,
25104    pub shading_rate_image_enable: Bool32,
25105    pub viewport_count: u32,
25106    pub shading_rate_palettes: *const ShadingRatePaletteNV,
25107}
25108
25109impl Default for PipelineViewportShadingRateImageStateCreateInfoNV {
25110    #[inline]
25111    fn default() -> Self {
25112        Self {
25113            s_type: StructureType::PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV,
25114            next: ptr::null(),
25115            shading_rate_image_enable: Bool32::default(),
25116            viewport_count: u32::default(),
25117            shading_rate_palettes: ptr::null(),
25118        }
25119    }
25120}
25121
25122unsafe impl Send for PipelineViewportShadingRateImageStateCreateInfoNV {}
25123unsafe impl Sync for PipelineViewportShadingRateImageStateCreateInfoNV {}
25124
25125/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportStateCreateInfo.html>
25126#[repr(C)]
25127#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25128pub struct PipelineViewportStateCreateInfo {
25129    pub s_type: StructureType,
25130    pub next: *const c_void,
25131    pub flags: PipelineViewportStateCreateFlags,
25132    pub viewport_count: u32,
25133    pub viewports: *const Viewport,
25134    pub scissor_count: u32,
25135    pub scissors: *const Rect2D,
25136}
25137
25138impl Default for PipelineViewportStateCreateInfo {
25139    #[inline]
25140    fn default() -> Self {
25141        Self {
25142            s_type: StructureType::PIPELINE_VIEWPORT_STATE_CREATE_INFO,
25143            next: ptr::null(),
25144            flags: PipelineViewportStateCreateFlags::default(),
25145            viewport_count: u32::default(),
25146            viewports: ptr::null(),
25147            scissor_count: u32::default(),
25148            scissors: ptr::null(),
25149        }
25150    }
25151}
25152
25153unsafe impl Send for PipelineViewportStateCreateInfo {}
25154unsafe impl Sync for PipelineViewportStateCreateInfo {}
25155
25156/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportSwizzleStateCreateInfoNV.html>
25157#[repr(C)]
25158#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25159pub struct PipelineViewportSwizzleStateCreateInfoNV {
25160    pub s_type: StructureType,
25161    pub next: *const c_void,
25162    pub flags: PipelineViewportSwizzleStateCreateFlagsNV,
25163    pub viewport_count: u32,
25164    pub viewport_swizzles: *const ViewportSwizzleNV,
25165}
25166
25167impl Default for PipelineViewportSwizzleStateCreateInfoNV {
25168    #[inline]
25169    fn default() -> Self {
25170        Self {
25171            s_type: StructureType::PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
25172            next: ptr::null(),
25173            flags: PipelineViewportSwizzleStateCreateFlagsNV::default(),
25174            viewport_count: u32::default(),
25175            viewport_swizzles: ptr::null(),
25176        }
25177    }
25178}
25179
25180unsafe impl Send for PipelineViewportSwizzleStateCreateInfoNV {}
25181unsafe impl Sync for PipelineViewportSwizzleStateCreateInfoNV {}
25182
25183/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportWScalingStateCreateInfoNV.html>
25184#[repr(C)]
25185#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25186pub struct PipelineViewportWScalingStateCreateInfoNV {
25187    pub s_type: StructureType,
25188    pub next: *const c_void,
25189    pub viewport_w_scaling_enable: Bool32,
25190    pub viewport_count: u32,
25191    pub viewport_w_scalings: *const ViewportWScalingNV,
25192}
25193
25194impl Default for PipelineViewportWScalingStateCreateInfoNV {
25195    #[inline]
25196    fn default() -> Self {
25197        Self {
25198            s_type: StructureType::PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
25199            next: ptr::null(),
25200            viewport_w_scaling_enable: Bool32::default(),
25201            viewport_count: u32::default(),
25202            viewport_w_scalings: ptr::null(),
25203        }
25204    }
25205}
25206
25207unsafe impl Send for PipelineViewportWScalingStateCreateInfoNV {}
25208unsafe impl Sync for PipelineViewportWScalingStateCreateInfoNV {}
25209
25210/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentFrameTokenGGP.html>
25211#[repr(C)]
25212#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25213pub struct PresentFrameTokenGGP {
25214    pub s_type: StructureType,
25215    pub next: *const c_void,
25216    pub frame_token: GgpFrameToken,
25217}
25218
25219impl Default for PresentFrameTokenGGP {
25220    #[inline]
25221    fn default() -> Self {
25222        Self {
25223            s_type: StructureType::PRESENT_FRAME_TOKEN_GGP,
25224            next: ptr::null(),
25225            frame_token: GgpFrameToken::default(),
25226        }
25227    }
25228}
25229
25230unsafe impl Send for PresentFrameTokenGGP {}
25231unsafe impl Sync for PresentFrameTokenGGP {}
25232
25233/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentId2KHR.html>
25234#[repr(C)]
25235#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25236pub struct PresentId2KHR {
25237    pub s_type: StructureType,
25238    pub next: *const c_void,
25239    pub swapchain_count: u32,
25240    pub present_ids: *const u64,
25241}
25242
25243impl Default for PresentId2KHR {
25244    #[inline]
25245    fn default() -> Self {
25246        Self {
25247            s_type: StructureType::PRESENT_ID_2_KHR,
25248            next: ptr::null(),
25249            swapchain_count: u32::default(),
25250            present_ids: ptr::null(),
25251        }
25252    }
25253}
25254
25255unsafe impl Send for PresentId2KHR {}
25256unsafe impl Sync for PresentId2KHR {}
25257
25258/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentIdKHR.html>
25259#[repr(C)]
25260#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25261pub struct PresentIdKHR {
25262    pub s_type: StructureType,
25263    pub next: *const c_void,
25264    pub swapchain_count: u32,
25265    pub present_ids: *const u64,
25266}
25267
25268impl Default for PresentIdKHR {
25269    #[inline]
25270    fn default() -> Self {
25271        Self {
25272            s_type: StructureType::PRESENT_ID_KHR,
25273            next: ptr::null(),
25274            swapchain_count: u32::default(),
25275            present_ids: ptr::null(),
25276        }
25277    }
25278}
25279
25280unsafe impl Send for PresentIdKHR {}
25281unsafe impl Sync for PresentIdKHR {}
25282
25283/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentInfoKHR.html>
25284#[repr(C)]
25285#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25286pub struct PresentInfoKHR {
25287    pub s_type: StructureType,
25288    pub next: *const c_void,
25289    pub wait_semaphore_count: u32,
25290    pub wait_semaphores: *const Semaphore,
25291    pub swapchain_count: u32,
25292    pub swapchains: *const SwapchainKHR,
25293    pub image_indices: *const u32,
25294    pub results: *mut Result,
25295}
25296
25297impl Default for PresentInfoKHR {
25298    #[inline]
25299    fn default() -> Self {
25300        Self {
25301            s_type: StructureType::PRESENT_INFO_KHR,
25302            next: ptr::null(),
25303            wait_semaphore_count: u32::default(),
25304            wait_semaphores: ptr::null(),
25305            swapchain_count: u32::default(),
25306            swapchains: ptr::null(),
25307            image_indices: ptr::null(),
25308            results: ptr::null_mut(),
25309        }
25310    }
25311}
25312
25313unsafe impl Send for PresentInfoKHR {}
25314unsafe impl Sync for PresentInfoKHR {}
25315
25316/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentRegionKHR.html>
25317#[repr(C)]
25318#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25319pub struct PresentRegionKHR {
25320    pub rectangle_count: u32,
25321    pub rectangles: *const RectLayerKHR,
25322}
25323
25324impl Default for PresentRegionKHR {
25325    #[inline]
25326    fn default() -> Self {
25327        Self {
25328            rectangle_count: u32::default(),
25329            rectangles: ptr::null(),
25330        }
25331    }
25332}
25333
25334unsafe impl Send for PresentRegionKHR {}
25335unsafe impl Sync for PresentRegionKHR {}
25336
25337/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentRegionsKHR.html>
25338#[repr(C)]
25339#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25340pub struct PresentRegionsKHR {
25341    pub s_type: StructureType,
25342    pub next: *const c_void,
25343    pub swapchain_count: u32,
25344    pub regions: *const PresentRegionKHR,
25345}
25346
25347impl Default for PresentRegionsKHR {
25348    #[inline]
25349    fn default() -> Self {
25350        Self {
25351            s_type: StructureType::PRESENT_REGIONS_KHR,
25352            next: ptr::null(),
25353            swapchain_count: u32::default(),
25354            regions: ptr::null(),
25355        }
25356    }
25357}
25358
25359unsafe impl Send for PresentRegionsKHR {}
25360unsafe impl Sync for PresentRegionsKHR {}
25361
25362/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentTimeGOOGLE.html>
25363#[repr(C)]
25364#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25365pub struct PresentTimeGOOGLE {
25366    pub present_id: u32,
25367    pub desired_present_time: u64,
25368}
25369
25370/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentTimesInfoGOOGLE.html>
25371#[repr(C)]
25372#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25373pub struct PresentTimesInfoGOOGLE {
25374    pub s_type: StructureType,
25375    pub next: *const c_void,
25376    pub swapchain_count: u32,
25377    pub times: *const PresentTimeGOOGLE,
25378}
25379
25380impl Default for PresentTimesInfoGOOGLE {
25381    #[inline]
25382    fn default() -> Self {
25383        Self {
25384            s_type: StructureType::PRESENT_TIMES_INFO_GOOGLE,
25385            next: ptr::null(),
25386            swapchain_count: u32::default(),
25387            times: ptr::null(),
25388        }
25389    }
25390}
25391
25392unsafe impl Send for PresentTimesInfoGOOGLE {}
25393unsafe impl Sync for PresentTimesInfoGOOGLE {}
25394
25395/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentWait2InfoKHR.html>
25396#[repr(C)]
25397#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25398pub struct PresentWait2InfoKHR {
25399    pub s_type: StructureType,
25400    pub next: *const c_void,
25401    pub present_id: u64,
25402    pub timeout: u64,
25403}
25404
25405impl Default for PresentWait2InfoKHR {
25406    #[inline]
25407    fn default() -> Self {
25408        Self {
25409            s_type: StructureType::PRESENT_WAIT_2_INFO_KHR,
25410            next: ptr::null(),
25411            present_id: u64::default(),
25412            timeout: u64::default(),
25413        }
25414    }
25415}
25416
25417unsafe impl Send for PresentWait2InfoKHR {}
25418unsafe impl Sync for PresentWait2InfoKHR {}
25419
25420/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPrivateDataSlotCreateInfo.html>
25421#[repr(C)]
25422#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25423pub struct PrivateDataSlotCreateInfo {
25424    pub s_type: StructureType,
25425    pub next: *const c_void,
25426    pub flags: PrivateDataSlotCreateFlags,
25427}
25428
25429impl Default for PrivateDataSlotCreateInfo {
25430    #[inline]
25431    fn default() -> Self {
25432        Self {
25433            s_type: StructureType::PRIVATE_DATA_SLOT_CREATE_INFO,
25434            next: ptr::null(),
25435            flags: PrivateDataSlotCreateFlags::default(),
25436        }
25437    }
25438}
25439
25440unsafe impl Send for PrivateDataSlotCreateInfo {}
25441unsafe impl Sync for PrivateDataSlotCreateInfo {}
25442
25443/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkProtectedSubmitInfo.html>
25444#[repr(C)]
25445#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25446pub struct ProtectedSubmitInfo {
25447    pub s_type: StructureType,
25448    pub next: *const c_void,
25449    pub protected_submit: Bool32,
25450}
25451
25452impl Default for ProtectedSubmitInfo {
25453    #[inline]
25454    fn default() -> Self {
25455        Self {
25456            s_type: StructureType::PROTECTED_SUBMIT_INFO,
25457            next: ptr::null(),
25458            protected_submit: Bool32::default(),
25459        }
25460    }
25461}
25462
25463unsafe impl Send for ProtectedSubmitInfo {}
25464unsafe impl Sync for ProtectedSubmitInfo {}
25465
25466/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantRange.html>
25467#[repr(C)]
25468#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25469pub struct PushConstantRange {
25470    pub stage_flags: ShaderStageFlags,
25471    pub offset: u32,
25472    pub size: u32,
25473}
25474
25475/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantsInfo.html>
25476#[repr(C)]
25477#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25478pub struct PushConstantsInfo {
25479    pub s_type: StructureType,
25480    pub next: *const c_void,
25481    pub layout: PipelineLayout,
25482    pub stage_flags: ShaderStageFlags,
25483    pub offset: u32,
25484    pub size: u32,
25485    pub values: *const c_void,
25486}
25487
25488impl Default for PushConstantsInfo {
25489    #[inline]
25490    fn default() -> Self {
25491        Self {
25492            s_type: StructureType::PUSH_CONSTANTS_INFO,
25493            next: ptr::null(),
25494            layout: PipelineLayout::default(),
25495            stage_flags: ShaderStageFlags::default(),
25496            offset: u32::default(),
25497            size: u32::default(),
25498            values: ptr::null(),
25499        }
25500    }
25501}
25502
25503unsafe impl Send for PushConstantsInfo {}
25504unsafe impl Sync for PushConstantsInfo {}
25505
25506/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetInfo.html>
25507#[repr(C)]
25508#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25509pub struct PushDescriptorSetInfo {
25510    pub s_type: StructureType,
25511    pub next: *const c_void,
25512    pub stage_flags: ShaderStageFlags,
25513    pub layout: PipelineLayout,
25514    pub set: u32,
25515    pub descriptor_write_count: u32,
25516    pub descriptor_writes: *const WriteDescriptorSet,
25517}
25518
25519impl Default for PushDescriptorSetInfo {
25520    #[inline]
25521    fn default() -> Self {
25522        Self {
25523            s_type: StructureType::PUSH_DESCRIPTOR_SET_INFO,
25524            next: ptr::null(),
25525            stage_flags: ShaderStageFlags::default(),
25526            layout: PipelineLayout::default(),
25527            set: u32::default(),
25528            descriptor_write_count: u32::default(),
25529            descriptor_writes: ptr::null(),
25530        }
25531    }
25532}
25533
25534unsafe impl Send for PushDescriptorSetInfo {}
25535unsafe impl Sync for PushDescriptorSetInfo {}
25536
25537/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetWithTemplateInfo.html>
25538#[repr(C)]
25539#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25540pub struct PushDescriptorSetWithTemplateInfo {
25541    pub s_type: StructureType,
25542    pub next: *const c_void,
25543    pub descriptor_update_template: DescriptorUpdateTemplate,
25544    pub layout: PipelineLayout,
25545    pub set: u32,
25546    pub data: *const c_void,
25547}
25548
25549impl Default for PushDescriptorSetWithTemplateInfo {
25550    #[inline]
25551    fn default() -> Self {
25552        Self {
25553            s_type: StructureType::PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO,
25554            next: ptr::null(),
25555            descriptor_update_template: DescriptorUpdateTemplate::default(),
25556            layout: PipelineLayout::default(),
25557            set: u32::default(),
25558            data: ptr::null(),
25559        }
25560    }
25561}
25562
25563unsafe impl Send for PushDescriptorSetWithTemplateInfo {}
25564unsafe impl Sync for PushDescriptorSetWithTemplateInfo {}
25565
25566/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryLowLatencySupportNV.html>
25567#[repr(C)]
25568#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25569pub struct QueryLowLatencySupportNV {
25570    pub s_type: StructureType,
25571    pub next: *const c_void,
25572    pub queried_low_latency_data: *mut c_void,
25573}
25574
25575impl Default for QueryLowLatencySupportNV {
25576    #[inline]
25577    fn default() -> Self {
25578        Self {
25579            s_type: StructureType::QUERY_LOW_LATENCY_SUPPORT_NV,
25580            next: ptr::null(),
25581            queried_low_latency_data: ptr::null_mut(),
25582        }
25583    }
25584}
25585
25586unsafe impl Send for QueryLowLatencySupportNV {}
25587unsafe impl Sync for QueryLowLatencySupportNV {}
25588
25589/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolCreateInfo.html>
25590#[repr(C)]
25591#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25592pub struct QueryPoolCreateInfo {
25593    pub s_type: StructureType,
25594    pub next: *const c_void,
25595    pub flags: QueryPoolCreateFlags,
25596    pub query_type: QueryType,
25597    pub query_count: u32,
25598    pub pipeline_statistics: QueryPipelineStatisticFlags,
25599}
25600
25601impl Default for QueryPoolCreateInfo {
25602    #[inline]
25603    fn default() -> Self {
25604        Self {
25605            s_type: StructureType::QUERY_POOL_CREATE_INFO,
25606            next: ptr::null(),
25607            flags: QueryPoolCreateFlags::default(),
25608            query_type: QueryType::default(),
25609            query_count: u32::default(),
25610            pipeline_statistics: QueryPipelineStatisticFlags::default(),
25611        }
25612    }
25613}
25614
25615unsafe impl Send for QueryPoolCreateInfo {}
25616unsafe impl Sync for QueryPoolCreateInfo {}
25617
25618/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolPerformanceCreateInfoKHR.html>
25619#[repr(C)]
25620#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25621pub struct QueryPoolPerformanceCreateInfoKHR {
25622    pub s_type: StructureType,
25623    pub next: *const c_void,
25624    pub queue_family_index: u32,
25625    pub counter_index_count: u32,
25626    pub counter_indices: *const u32,
25627}
25628
25629impl Default for QueryPoolPerformanceCreateInfoKHR {
25630    #[inline]
25631    fn default() -> Self {
25632        Self {
25633            s_type: StructureType::QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR,
25634            next: ptr::null(),
25635            queue_family_index: u32::default(),
25636            counter_index_count: u32::default(),
25637            counter_indices: ptr::null(),
25638        }
25639    }
25640}
25641
25642unsafe impl Send for QueryPoolPerformanceCreateInfoKHR {}
25643unsafe impl Sync for QueryPoolPerformanceCreateInfoKHR {}
25644
25645/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolPerformanceQueryCreateInfoINTEL.html>
25646#[repr(C)]
25647#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25648pub struct QueryPoolPerformanceQueryCreateInfoINTEL {
25649    pub s_type: StructureType,
25650    pub next: *const c_void,
25651    pub performance_counters_sampling: QueryPoolSamplingModeINTEL,
25652}
25653
25654impl Default for QueryPoolPerformanceQueryCreateInfoINTEL {
25655    #[inline]
25656    fn default() -> Self {
25657        Self {
25658            s_type: StructureType::QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL,
25659            next: ptr::null(),
25660            performance_counters_sampling: QueryPoolSamplingModeINTEL::default(),
25661        }
25662    }
25663}
25664
25665unsafe impl Send for QueryPoolPerformanceQueryCreateInfoINTEL {}
25666unsafe impl Sync for QueryPoolPerformanceQueryCreateInfoINTEL {}
25667
25668/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolVideoEncodeFeedbackCreateInfoKHR.html>
25669#[repr(C)]
25670#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25671pub struct QueryPoolVideoEncodeFeedbackCreateInfoKHR {
25672    pub s_type: StructureType,
25673    pub next: *const c_void,
25674    pub encode_feedback_flags: VideoEncodeFeedbackFlagsKHR,
25675}
25676
25677impl Default for QueryPoolVideoEncodeFeedbackCreateInfoKHR {
25678    #[inline]
25679    fn default() -> Self {
25680        Self {
25681            s_type: StructureType::QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR,
25682            next: ptr::null(),
25683            encode_feedback_flags: VideoEncodeFeedbackFlagsKHR::default(),
25684        }
25685    }
25686}
25687
25688unsafe impl Send for QueryPoolVideoEncodeFeedbackCreateInfoKHR {}
25689unsafe impl Sync for QueryPoolVideoEncodeFeedbackCreateInfoKHR {}
25690
25691/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyCheckpointProperties2NV.html>
25692#[repr(C)]
25693#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25694pub struct QueueFamilyCheckpointProperties2NV {
25695    pub s_type: StructureType,
25696    pub next: *mut c_void,
25697    pub checkpoint_execution_stage_mask: PipelineStageFlags2,
25698}
25699
25700impl Default for QueueFamilyCheckpointProperties2NV {
25701    #[inline]
25702    fn default() -> Self {
25703        Self {
25704            s_type: StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV,
25705            next: ptr::null_mut(),
25706            checkpoint_execution_stage_mask: PipelineStageFlags2::default(),
25707        }
25708    }
25709}
25710
25711unsafe impl Send for QueueFamilyCheckpointProperties2NV {}
25712unsafe impl Sync for QueueFamilyCheckpointProperties2NV {}
25713
25714/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyCheckpointPropertiesNV.html>
25715#[repr(C)]
25716#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25717pub struct QueueFamilyCheckpointPropertiesNV {
25718    pub s_type: StructureType,
25719    pub next: *mut c_void,
25720    pub checkpoint_execution_stage_mask: PipelineStageFlags,
25721}
25722
25723impl Default for QueueFamilyCheckpointPropertiesNV {
25724    #[inline]
25725    fn default() -> Self {
25726        Self {
25727            s_type: StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV,
25728            next: ptr::null_mut(),
25729            checkpoint_execution_stage_mask: PipelineStageFlags::default(),
25730        }
25731    }
25732}
25733
25734unsafe impl Send for QueueFamilyCheckpointPropertiesNV {}
25735unsafe impl Sync for QueueFamilyCheckpointPropertiesNV {}
25736
25737/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyDataGraphProcessingEnginePropertiesARM.html>
25738#[repr(C)]
25739#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25740pub struct QueueFamilyDataGraphProcessingEnginePropertiesARM {
25741    pub s_type: StructureType,
25742    pub next: *const c_void,
25743    pub foreign_semaphore_handle_types: ExternalSemaphoreHandleTypeFlags,
25744    pub foreign_memory_handle_types: ExternalMemoryHandleTypeFlags,
25745}
25746
25747impl Default for QueueFamilyDataGraphProcessingEnginePropertiesARM {
25748    #[inline]
25749    fn default() -> Self {
25750        Self {
25751            s_type: StructureType::QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM,
25752            next: ptr::null(),
25753            foreign_semaphore_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
25754            foreign_memory_handle_types: ExternalMemoryHandleTypeFlags::default(),
25755        }
25756    }
25757}
25758
25759unsafe impl Send for QueueFamilyDataGraphProcessingEnginePropertiesARM {}
25760unsafe impl Sync for QueueFamilyDataGraphProcessingEnginePropertiesARM {}
25761
25762/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyDataGraphPropertiesARM.html>
25763#[repr(C)]
25764#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25765pub struct QueueFamilyDataGraphPropertiesARM {
25766    pub s_type: StructureType,
25767    pub next: *const c_void,
25768    pub engine: PhysicalDeviceDataGraphProcessingEngineARM,
25769    pub operation: PhysicalDeviceDataGraphOperationSupportARM,
25770}
25771
25772impl Default for QueueFamilyDataGraphPropertiesARM {
25773    #[inline]
25774    fn default() -> Self {
25775        Self {
25776            s_type: StructureType::QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM,
25777            next: ptr::null(),
25778            engine: PhysicalDeviceDataGraphProcessingEngineARM::default(),
25779            operation: PhysicalDeviceDataGraphOperationSupportARM::default(),
25780        }
25781    }
25782}
25783
25784unsafe impl Send for QueueFamilyDataGraphPropertiesARM {}
25785unsafe impl Sync for QueueFamilyDataGraphPropertiesARM {}
25786
25787/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityProperties.html>
25788#[repr(C)]
25789#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25790pub struct QueueFamilyGlobalPriorityProperties {
25791    pub s_type: StructureType,
25792    pub next: *mut c_void,
25793    pub priority_count: u32,
25794    pub priorities: [QueueGlobalPriority; MAX_GLOBAL_PRIORITY_SIZE],
25795}
25796
25797impl Default for QueueFamilyGlobalPriorityProperties {
25798    #[inline]
25799    fn default() -> Self {
25800        Self {
25801            s_type: StructureType::QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES,
25802            next: ptr::null_mut(),
25803            priority_count: u32::default(),
25804            priorities: [QueueGlobalPriority::default(); MAX_GLOBAL_PRIORITY_SIZE],
25805        }
25806    }
25807}
25808
25809unsafe impl Send for QueueFamilyGlobalPriorityProperties {}
25810unsafe impl Sync for QueueFamilyGlobalPriorityProperties {}
25811
25812/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyOwnershipTransferPropertiesKHR.html>
25813#[repr(C)]
25814#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25815pub struct QueueFamilyOwnershipTransferPropertiesKHR {
25816    pub s_type: StructureType,
25817    pub next: *mut c_void,
25818    pub optimal_image_transfer_to_queue_families: u32,
25819}
25820
25821impl Default for QueueFamilyOwnershipTransferPropertiesKHR {
25822    #[inline]
25823    fn default() -> Self {
25824        Self {
25825            s_type: StructureType::QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR,
25826            next: ptr::null_mut(),
25827            optimal_image_transfer_to_queue_families: u32::default(),
25828        }
25829    }
25830}
25831
25832unsafe impl Send for QueueFamilyOwnershipTransferPropertiesKHR {}
25833unsafe impl Sync for QueueFamilyOwnershipTransferPropertiesKHR {}
25834
25835/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyProperties.html>
25836#[repr(C)]
25837#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25838pub struct QueueFamilyProperties {
25839    pub queue_flags: QueueFlags,
25840    pub queue_count: u32,
25841    pub timestamp_valid_bits: u32,
25842    pub min_image_transfer_granularity: Extent3D,
25843}
25844
25845/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyProperties2.html>
25846#[repr(C)]
25847#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25848pub struct QueueFamilyProperties2 {
25849    pub s_type: StructureType,
25850    pub next: *mut c_void,
25851    pub queue_family_properties: QueueFamilyProperties,
25852}
25853
25854impl Default for QueueFamilyProperties2 {
25855    #[inline]
25856    fn default() -> Self {
25857        Self {
25858            s_type: StructureType::QUEUE_FAMILY_PROPERTIES_2,
25859            next: ptr::null_mut(),
25860            queue_family_properties: QueueFamilyProperties::default(),
25861        }
25862    }
25863}
25864
25865unsafe impl Send for QueueFamilyProperties2 {}
25866unsafe impl Sync for QueueFamilyProperties2 {}
25867
25868/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyQueryResultStatusPropertiesKHR.html>
25869#[repr(C)]
25870#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25871pub struct QueueFamilyQueryResultStatusPropertiesKHR {
25872    pub s_type: StructureType,
25873    pub next: *mut c_void,
25874    pub query_result_status_support: Bool32,
25875}
25876
25877impl Default for QueueFamilyQueryResultStatusPropertiesKHR {
25878    #[inline]
25879    fn default() -> Self {
25880        Self {
25881            s_type: StructureType::QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR,
25882            next: ptr::null_mut(),
25883            query_result_status_support: Bool32::default(),
25884        }
25885    }
25886}
25887
25888unsafe impl Send for QueueFamilyQueryResultStatusPropertiesKHR {}
25889unsafe impl Sync for QueueFamilyQueryResultStatusPropertiesKHR {}
25890
25891/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyVideoPropertiesKHR.html>
25892#[repr(C)]
25893#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25894pub struct QueueFamilyVideoPropertiesKHR {
25895    pub s_type: StructureType,
25896    pub next: *mut c_void,
25897    pub video_codec_operations: VideoCodecOperationFlagsKHR,
25898}
25899
25900impl Default for QueueFamilyVideoPropertiesKHR {
25901    #[inline]
25902    fn default() -> Self {
25903        Self {
25904            s_type: StructureType::QUEUE_FAMILY_VIDEO_PROPERTIES_KHR,
25905            next: ptr::null_mut(),
25906            video_codec_operations: VideoCodecOperationFlagsKHR::default(),
25907        }
25908    }
25909}
25910
25911unsafe impl Send for QueueFamilyVideoPropertiesKHR {}
25912unsafe impl Sync for QueueFamilyVideoPropertiesKHR {}
25913
25914/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV.html>
25915#[repr(C)]
25916#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25917pub struct RayTracingPipelineClusterAccelerationStructureCreateInfoNV {
25918    pub s_type: StructureType,
25919    pub next: *mut c_void,
25920    pub allow_cluster_acceleration_structure: Bool32,
25921}
25922
25923impl Default for RayTracingPipelineClusterAccelerationStructureCreateInfoNV {
25924    #[inline]
25925    fn default() -> Self {
25926        Self {
25927            s_type:
25928                StructureType::RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV,
25929            next: ptr::null_mut(),
25930            allow_cluster_acceleration_structure: Bool32::default(),
25931        }
25932    }
25933}
25934
25935unsafe impl Send for RayTracingPipelineClusterAccelerationStructureCreateInfoNV {}
25936unsafe impl Sync for RayTracingPipelineClusterAccelerationStructureCreateInfoNV {}
25937
25938/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineCreateInfoKHR.html>
25939#[repr(C)]
25940#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25941pub struct RayTracingPipelineCreateInfoKHR {
25942    pub s_type: StructureType,
25943    pub next: *const c_void,
25944    pub flags: PipelineCreateFlags,
25945    pub stage_count: u32,
25946    pub stages: *const PipelineShaderStageCreateInfo,
25947    pub group_count: u32,
25948    pub groups: *const RayTracingShaderGroupCreateInfoKHR,
25949    pub max_pipeline_ray_recursion_depth: u32,
25950    pub library_info: *const PipelineLibraryCreateInfoKHR,
25951    pub library_interface: *const RayTracingPipelineInterfaceCreateInfoKHR,
25952    pub dynamic_state: *const PipelineDynamicStateCreateInfo,
25953    pub layout: PipelineLayout,
25954    pub base_pipeline_handle: Pipeline,
25955    pub base_pipeline_index: i32,
25956}
25957
25958impl Default for RayTracingPipelineCreateInfoKHR {
25959    #[inline]
25960    fn default() -> Self {
25961        Self {
25962            s_type: StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_KHR,
25963            next: ptr::null(),
25964            flags: PipelineCreateFlags::default(),
25965            stage_count: u32::default(),
25966            stages: ptr::null(),
25967            group_count: u32::default(),
25968            groups: ptr::null(),
25969            max_pipeline_ray_recursion_depth: u32::default(),
25970            library_info: ptr::null(),
25971            library_interface: ptr::null(),
25972            dynamic_state: ptr::null(),
25973            layout: PipelineLayout::default(),
25974            base_pipeline_handle: Pipeline::default(),
25975            base_pipeline_index: i32::default(),
25976        }
25977    }
25978}
25979
25980unsafe impl Send for RayTracingPipelineCreateInfoKHR {}
25981unsafe impl Sync for RayTracingPipelineCreateInfoKHR {}
25982
25983/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineCreateInfoNV.html>
25984#[repr(C)]
25985#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25986pub struct RayTracingPipelineCreateInfoNV {
25987    pub s_type: StructureType,
25988    pub next: *const c_void,
25989    pub flags: PipelineCreateFlags,
25990    pub stage_count: u32,
25991    pub stages: *const PipelineShaderStageCreateInfo,
25992    pub group_count: u32,
25993    pub groups: *const RayTracingShaderGroupCreateInfoNV,
25994    pub max_recursion_depth: u32,
25995    pub layout: PipelineLayout,
25996    pub base_pipeline_handle: Pipeline,
25997    pub base_pipeline_index: i32,
25998}
25999
26000impl Default for RayTracingPipelineCreateInfoNV {
26001    #[inline]
26002    fn default() -> Self {
26003        Self {
26004            s_type: StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_NV,
26005            next: ptr::null(),
26006            flags: PipelineCreateFlags::default(),
26007            stage_count: u32::default(),
26008            stages: ptr::null(),
26009            group_count: u32::default(),
26010            groups: ptr::null(),
26011            max_recursion_depth: u32::default(),
26012            layout: PipelineLayout::default(),
26013            base_pipeline_handle: Pipeline::default(),
26014            base_pipeline_index: i32::default(),
26015        }
26016    }
26017}
26018
26019unsafe impl Send for RayTracingPipelineCreateInfoNV {}
26020unsafe impl Sync for RayTracingPipelineCreateInfoNV {}
26021
26022/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineInterfaceCreateInfoKHR.html>
26023#[repr(C)]
26024#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26025pub struct RayTracingPipelineInterfaceCreateInfoKHR {
26026    pub s_type: StructureType,
26027    pub next: *const c_void,
26028    pub max_pipeline_ray_payload_size: u32,
26029    pub max_pipeline_ray_hit_attribute_size: u32,
26030}
26031
26032impl Default for RayTracingPipelineInterfaceCreateInfoKHR {
26033    #[inline]
26034    fn default() -> Self {
26035        Self {
26036            s_type: StructureType::RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR,
26037            next: ptr::null(),
26038            max_pipeline_ray_payload_size: u32::default(),
26039            max_pipeline_ray_hit_attribute_size: u32::default(),
26040        }
26041    }
26042}
26043
26044unsafe impl Send for RayTracingPipelineInterfaceCreateInfoKHR {}
26045unsafe impl Sync for RayTracingPipelineInterfaceCreateInfoKHR {}
26046
26047/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingShaderGroupCreateInfoKHR.html>
26048#[repr(C)]
26049#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26050pub struct RayTracingShaderGroupCreateInfoKHR {
26051    pub s_type: StructureType,
26052    pub next: *const c_void,
26053    pub type_: RayTracingShaderGroupTypeKHR,
26054    pub general_shader: u32,
26055    pub closest_hit_shader: u32,
26056    pub any_hit_shader: u32,
26057    pub intersection_shader: u32,
26058    pub shader_group_capture_replay_handle: *const c_void,
26059}
26060
26061impl Default for RayTracingShaderGroupCreateInfoKHR {
26062    #[inline]
26063    fn default() -> Self {
26064        Self {
26065            s_type: StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR,
26066            next: ptr::null(),
26067            type_: RayTracingShaderGroupTypeKHR::default(),
26068            general_shader: u32::default(),
26069            closest_hit_shader: u32::default(),
26070            any_hit_shader: u32::default(),
26071            intersection_shader: u32::default(),
26072            shader_group_capture_replay_handle: ptr::null(),
26073        }
26074    }
26075}
26076
26077unsafe impl Send for RayTracingShaderGroupCreateInfoKHR {}
26078unsafe impl Sync for RayTracingShaderGroupCreateInfoKHR {}
26079
26080/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingShaderGroupCreateInfoNV.html>
26081#[repr(C)]
26082#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26083pub struct RayTracingShaderGroupCreateInfoNV {
26084    pub s_type: StructureType,
26085    pub next: *const c_void,
26086    pub type_: RayTracingShaderGroupTypeKHR,
26087    pub general_shader: u32,
26088    pub closest_hit_shader: u32,
26089    pub any_hit_shader: u32,
26090    pub intersection_shader: u32,
26091}
26092
26093impl Default for RayTracingShaderGroupCreateInfoNV {
26094    #[inline]
26095    fn default() -> Self {
26096        Self {
26097            s_type: StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV,
26098            next: ptr::null(),
26099            type_: RayTracingShaderGroupTypeKHR::default(),
26100            general_shader: u32::default(),
26101            closest_hit_shader: u32::default(),
26102            any_hit_shader: u32::default(),
26103            intersection_shader: u32::default(),
26104        }
26105    }
26106}
26107
26108unsafe impl Send for RayTracingShaderGroupCreateInfoNV {}
26109unsafe impl Sync for RayTracingShaderGroupCreateInfoNV {}
26110
26111/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRect2D.html>
26112#[repr(C)]
26113#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26114pub struct Rect2D {
26115    pub offset: Offset2D,
26116    pub extent: Extent2D,
26117}
26118
26119/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRectLayerKHR.html>
26120#[repr(C)]
26121#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26122pub struct RectLayerKHR {
26123    pub offset: Offset2D,
26124    pub extent: Extent2D,
26125    pub layer: u32,
26126}
26127
26128/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshCycleDurationGOOGLE.html>
26129#[repr(C)]
26130#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26131pub struct RefreshCycleDurationGOOGLE {
26132    pub refresh_duration: u64,
26133}
26134
26135/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshObjectKHR.html>
26136#[repr(C)]
26137#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26138pub struct RefreshObjectKHR {
26139    pub object_type: ObjectType,
26140    pub object_handle: u64,
26141    pub flags: RefreshObjectFlagsKHR,
26142}
26143
26144/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshObjectListKHR.html>
26145#[repr(C)]
26146#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26147pub struct RefreshObjectListKHR {
26148    pub s_type: StructureType,
26149    pub next: *const c_void,
26150    pub object_count: u32,
26151    pub objects: *const RefreshObjectKHR,
26152}
26153
26154impl Default for RefreshObjectListKHR {
26155    #[inline]
26156    fn default() -> Self {
26157        Self {
26158            s_type: StructureType::REFRESH_OBJECT_LIST_KHR,
26159            next: ptr::null(),
26160            object_count: u32::default(),
26161            objects: ptr::null(),
26162        }
26163    }
26164}
26165
26166unsafe impl Send for RefreshObjectListKHR {}
26167unsafe impl Sync for RefreshObjectListKHR {}
26168
26169/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkReleaseCapturedPipelineDataInfoKHR.html>
26170#[repr(C)]
26171#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26172pub struct ReleaseCapturedPipelineDataInfoKHR {
26173    pub s_type: StructureType,
26174    pub next: *mut c_void,
26175    pub pipeline: Pipeline,
26176}
26177
26178impl Default for ReleaseCapturedPipelineDataInfoKHR {
26179    #[inline]
26180    fn default() -> Self {
26181        Self {
26182            s_type: StructureType::RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR,
26183            next: ptr::null_mut(),
26184            pipeline: Pipeline::default(),
26185        }
26186    }
26187}
26188
26189unsafe impl Send for ReleaseCapturedPipelineDataInfoKHR {}
26190unsafe impl Sync for ReleaseCapturedPipelineDataInfoKHR {}
26191
26192/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkReleaseSwapchainImagesInfoKHR.html>
26193#[repr(C)]
26194#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26195pub struct ReleaseSwapchainImagesInfoKHR {
26196    pub s_type: StructureType,
26197    pub next: *const c_void,
26198    pub swapchain: SwapchainKHR,
26199    pub image_index_count: u32,
26200    pub image_indices: *const u32,
26201}
26202
26203impl Default for ReleaseSwapchainImagesInfoKHR {
26204    #[inline]
26205    fn default() -> Self {
26206        Self {
26207            s_type: StructureType::RELEASE_SWAPCHAIN_IMAGES_INFO_KHR,
26208            next: ptr::null(),
26209            swapchain: SwapchainKHR::default(),
26210            image_index_count: u32::default(),
26211            image_indices: ptr::null(),
26212        }
26213    }
26214}
26215
26216unsafe impl Send for ReleaseSwapchainImagesInfoKHR {}
26217unsafe impl Sync for ReleaseSwapchainImagesInfoKHR {}
26218
26219/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassAttachmentBeginInfo.html>
26220#[repr(C)]
26221#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26222pub struct RenderPassAttachmentBeginInfo {
26223    pub s_type: StructureType,
26224    pub next: *const c_void,
26225    pub attachment_count: u32,
26226    pub attachments: *const ImageView,
26227}
26228
26229impl Default for RenderPassAttachmentBeginInfo {
26230    #[inline]
26231    fn default() -> Self {
26232        Self {
26233            s_type: StructureType::RENDER_PASS_ATTACHMENT_BEGIN_INFO,
26234            next: ptr::null(),
26235            attachment_count: u32::default(),
26236            attachments: ptr::null(),
26237        }
26238    }
26239}
26240
26241unsafe impl Send for RenderPassAttachmentBeginInfo {}
26242unsafe impl Sync for RenderPassAttachmentBeginInfo {}
26243
26244/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassBeginInfo.html>
26245#[repr(C)]
26246#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26247pub struct RenderPassBeginInfo {
26248    pub s_type: StructureType,
26249    pub next: *const c_void,
26250    pub render_pass: RenderPass,
26251    pub framebuffer: Framebuffer,
26252    pub render_area: Rect2D,
26253    pub clear_value_count: u32,
26254    pub clear_values: *const ClearValue,
26255}
26256
26257impl Default for RenderPassBeginInfo {
26258    #[inline]
26259    fn default() -> Self {
26260        Self {
26261            s_type: StructureType::RENDER_PASS_BEGIN_INFO,
26262            next: ptr::null(),
26263            render_pass: RenderPass::default(),
26264            framebuffer: Framebuffer::default(),
26265            render_area: Rect2D::default(),
26266            clear_value_count: u32::default(),
26267            clear_values: ptr::null(),
26268        }
26269    }
26270}
26271
26272unsafe impl Send for RenderPassBeginInfo {}
26273unsafe impl Sync for RenderPassBeginInfo {}
26274
26275/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateInfo.html>
26276#[repr(C)]
26277#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26278pub struct RenderPassCreateInfo {
26279    pub s_type: StructureType,
26280    pub next: *const c_void,
26281    pub flags: RenderPassCreateFlags,
26282    pub attachment_count: u32,
26283    pub attachments: *const AttachmentDescription,
26284    pub subpass_count: u32,
26285    pub subpasses: *const SubpassDescription,
26286    pub dependency_count: u32,
26287    pub dependencies: *const SubpassDependency,
26288}
26289
26290impl Default for RenderPassCreateInfo {
26291    #[inline]
26292    fn default() -> Self {
26293        Self {
26294            s_type: StructureType::RENDER_PASS_CREATE_INFO,
26295            next: ptr::null(),
26296            flags: RenderPassCreateFlags::default(),
26297            attachment_count: u32::default(),
26298            attachments: ptr::null(),
26299            subpass_count: u32::default(),
26300            subpasses: ptr::null(),
26301            dependency_count: u32::default(),
26302            dependencies: ptr::null(),
26303        }
26304    }
26305}
26306
26307unsafe impl Send for RenderPassCreateInfo {}
26308unsafe impl Sync for RenderPassCreateInfo {}
26309
26310/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateInfo2.html>
26311#[repr(C)]
26312#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26313pub struct RenderPassCreateInfo2 {
26314    pub s_type: StructureType,
26315    pub next: *const c_void,
26316    pub flags: RenderPassCreateFlags,
26317    pub attachment_count: u32,
26318    pub attachments: *const AttachmentDescription2,
26319    pub subpass_count: u32,
26320    pub subpasses: *const SubpassDescription2,
26321    pub dependency_count: u32,
26322    pub dependencies: *const SubpassDependency2,
26323    pub correlated_view_mask_count: u32,
26324    pub correlated_view_masks: *const u32,
26325}
26326
26327impl Default for RenderPassCreateInfo2 {
26328    #[inline]
26329    fn default() -> Self {
26330        Self {
26331            s_type: StructureType::RENDER_PASS_CREATE_INFO_2,
26332            next: ptr::null(),
26333            flags: RenderPassCreateFlags::default(),
26334            attachment_count: u32::default(),
26335            attachments: ptr::null(),
26336            subpass_count: u32::default(),
26337            subpasses: ptr::null(),
26338            dependency_count: u32::default(),
26339            dependencies: ptr::null(),
26340            correlated_view_mask_count: u32::default(),
26341            correlated_view_masks: ptr::null(),
26342        }
26343    }
26344}
26345
26346unsafe impl Send for RenderPassCreateInfo2 {}
26347unsafe impl Sync for RenderPassCreateInfo2 {}
26348
26349/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreationControlEXT.html>
26350#[repr(C)]
26351#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26352pub struct RenderPassCreationControlEXT {
26353    pub s_type: StructureType,
26354    pub next: *const c_void,
26355    pub disallow_merging: Bool32,
26356}
26357
26358impl Default for RenderPassCreationControlEXT {
26359    #[inline]
26360    fn default() -> Self {
26361        Self {
26362            s_type: StructureType::RENDER_PASS_CREATION_CONTROL_EXT,
26363            next: ptr::null(),
26364            disallow_merging: Bool32::default(),
26365        }
26366    }
26367}
26368
26369unsafe impl Send for RenderPassCreationControlEXT {}
26370unsafe impl Sync for RenderPassCreationControlEXT {}
26371
26372/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreationFeedbackCreateInfoEXT.html>
26373#[repr(C)]
26374#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26375pub struct RenderPassCreationFeedbackCreateInfoEXT {
26376    pub s_type: StructureType,
26377    pub next: *const c_void,
26378    pub render_pass_feedback: *mut RenderPassCreationFeedbackInfoEXT,
26379}
26380
26381impl Default for RenderPassCreationFeedbackCreateInfoEXT {
26382    #[inline]
26383    fn default() -> Self {
26384        Self {
26385            s_type: StructureType::RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT,
26386            next: ptr::null(),
26387            render_pass_feedback: ptr::null_mut(),
26388        }
26389    }
26390}
26391
26392unsafe impl Send for RenderPassCreationFeedbackCreateInfoEXT {}
26393unsafe impl Sync for RenderPassCreationFeedbackCreateInfoEXT {}
26394
26395/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreationFeedbackInfoEXT.html>
26396#[repr(C)]
26397#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26398pub struct RenderPassCreationFeedbackInfoEXT {
26399    pub post_merge_subpass_count: u32,
26400}
26401
26402/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassFragmentDensityMapCreateInfoEXT.html>
26403#[repr(C)]
26404#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26405pub struct RenderPassFragmentDensityMapCreateInfoEXT {
26406    pub s_type: StructureType,
26407    pub next: *const c_void,
26408    pub fragment_density_map_attachment: AttachmentReference,
26409}
26410
26411impl Default for RenderPassFragmentDensityMapCreateInfoEXT {
26412    #[inline]
26413    fn default() -> Self {
26414        Self {
26415            s_type: StructureType::RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT,
26416            next: ptr::null(),
26417            fragment_density_map_attachment: AttachmentReference::default(),
26418        }
26419    }
26420}
26421
26422unsafe impl Send for RenderPassFragmentDensityMapCreateInfoEXT {}
26423unsafe impl Sync for RenderPassFragmentDensityMapCreateInfoEXT {}
26424
26425/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassFragmentDensityMapOffsetEndInfoEXT.html>
26426#[repr(C)]
26427#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26428pub struct RenderPassFragmentDensityMapOffsetEndInfoEXT {
26429    pub s_type: StructureType,
26430    pub next: *const c_void,
26431    pub fragment_density_offset_count: u32,
26432    pub fragment_density_offsets: *const Offset2D,
26433}
26434
26435impl Default for RenderPassFragmentDensityMapOffsetEndInfoEXT {
26436    #[inline]
26437    fn default() -> Self {
26438        Self {
26439            s_type: StructureType::RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT,
26440            next: ptr::null(),
26441            fragment_density_offset_count: u32::default(),
26442            fragment_density_offsets: ptr::null(),
26443        }
26444    }
26445}
26446
26447unsafe impl Send for RenderPassFragmentDensityMapOffsetEndInfoEXT {}
26448unsafe impl Sync for RenderPassFragmentDensityMapOffsetEndInfoEXT {}
26449
26450/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassInputAttachmentAspectCreateInfo.html>
26451#[repr(C)]
26452#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26453pub struct RenderPassInputAttachmentAspectCreateInfo {
26454    pub s_type: StructureType,
26455    pub next: *const c_void,
26456    pub aspect_reference_count: u32,
26457    pub aspect_references: *const InputAttachmentAspectReference,
26458}
26459
26460impl Default for RenderPassInputAttachmentAspectCreateInfo {
26461    #[inline]
26462    fn default() -> Self {
26463        Self {
26464            s_type: StructureType::RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
26465            next: ptr::null(),
26466            aspect_reference_count: u32::default(),
26467            aspect_references: ptr::null(),
26468        }
26469    }
26470}
26471
26472unsafe impl Send for RenderPassInputAttachmentAspectCreateInfo {}
26473unsafe impl Sync for RenderPassInputAttachmentAspectCreateInfo {}
26474
26475/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassMultiviewCreateInfo.html>
26476#[repr(C)]
26477#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26478pub struct RenderPassMultiviewCreateInfo {
26479    pub s_type: StructureType,
26480    pub next: *const c_void,
26481    pub subpass_count: u32,
26482    pub view_masks: *const u32,
26483    pub dependency_count: u32,
26484    pub view_offsets: *const i32,
26485    pub correlation_mask_count: u32,
26486    pub correlation_masks: *const u32,
26487}
26488
26489impl Default for RenderPassMultiviewCreateInfo {
26490    #[inline]
26491    fn default() -> Self {
26492        Self {
26493            s_type: StructureType::RENDER_PASS_MULTIVIEW_CREATE_INFO,
26494            next: ptr::null(),
26495            subpass_count: u32::default(),
26496            view_masks: ptr::null(),
26497            dependency_count: u32::default(),
26498            view_offsets: ptr::null(),
26499            correlation_mask_count: u32::default(),
26500            correlation_masks: ptr::null(),
26501        }
26502    }
26503}
26504
26505unsafe impl Send for RenderPassMultiviewCreateInfo {}
26506unsafe impl Sync for RenderPassMultiviewCreateInfo {}
26507
26508/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassPerformanceCountersByRegionBeginInfoARM.html>
26509#[repr(C)]
26510#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26511pub struct RenderPassPerformanceCountersByRegionBeginInfoARM {
26512    pub s_type: StructureType,
26513    pub next: *mut c_void,
26514    pub counter_address_count: u32,
26515    pub counter_addresses: *const DeviceAddress,
26516    pub serialize_regions: Bool32,
26517    pub counter_index_count: u32,
26518    pub counter_indices: *mut u32,
26519}
26520
26521impl Default for RenderPassPerformanceCountersByRegionBeginInfoARM {
26522    #[inline]
26523    fn default() -> Self {
26524        Self {
26525            s_type: StructureType::RENDER_PASS_PERFORMANCE_COUNTERS_BY_REGION_BEGIN_INFO_ARM,
26526            next: ptr::null_mut(),
26527            counter_address_count: u32::default(),
26528            counter_addresses: ptr::null(),
26529            serialize_regions: Bool32::default(),
26530            counter_index_count: u32::default(),
26531            counter_indices: ptr::null_mut(),
26532        }
26533    }
26534}
26535
26536unsafe impl Send for RenderPassPerformanceCountersByRegionBeginInfoARM {}
26537unsafe impl Sync for RenderPassPerformanceCountersByRegionBeginInfoARM {}
26538
26539/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassSampleLocationsBeginInfoEXT.html>
26540#[repr(C)]
26541#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26542pub struct RenderPassSampleLocationsBeginInfoEXT {
26543    pub s_type: StructureType,
26544    pub next: *const c_void,
26545    pub attachment_initial_sample_locations_count: u32,
26546    pub attachment_initial_sample_locations: *const AttachmentSampleLocationsEXT,
26547    pub post_subpass_sample_locations_count: u32,
26548    pub post_subpass_sample_locations: *const SubpassSampleLocationsEXT,
26549}
26550
26551impl Default for RenderPassSampleLocationsBeginInfoEXT {
26552    #[inline]
26553    fn default() -> Self {
26554        Self {
26555            s_type: StructureType::RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,
26556            next: ptr::null(),
26557            attachment_initial_sample_locations_count: u32::default(),
26558            attachment_initial_sample_locations: ptr::null(),
26559            post_subpass_sample_locations_count: u32::default(),
26560            post_subpass_sample_locations: ptr::null(),
26561        }
26562    }
26563}
26564
26565unsafe impl Send for RenderPassSampleLocationsBeginInfoEXT {}
26566unsafe impl Sync for RenderPassSampleLocationsBeginInfoEXT {}
26567
26568/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassStripeBeginInfoARM.html>
26569#[repr(C)]
26570#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26571pub struct RenderPassStripeBeginInfoARM {
26572    pub s_type: StructureType,
26573    pub next: *const c_void,
26574    pub stripe_info_count: u32,
26575    pub stripe_infos: *const RenderPassStripeInfoARM,
26576}
26577
26578impl Default for RenderPassStripeBeginInfoARM {
26579    #[inline]
26580    fn default() -> Self {
26581        Self {
26582            s_type: StructureType::RENDER_PASS_STRIPE_BEGIN_INFO_ARM,
26583            next: ptr::null(),
26584            stripe_info_count: u32::default(),
26585            stripe_infos: ptr::null(),
26586        }
26587    }
26588}
26589
26590unsafe impl Send for RenderPassStripeBeginInfoARM {}
26591unsafe impl Sync for RenderPassStripeBeginInfoARM {}
26592
26593/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassStripeInfoARM.html>
26594#[repr(C)]
26595#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26596pub struct RenderPassStripeInfoARM {
26597    pub s_type: StructureType,
26598    pub next: *const c_void,
26599    pub stripe_area: Rect2D,
26600}
26601
26602impl Default for RenderPassStripeInfoARM {
26603    #[inline]
26604    fn default() -> Self {
26605        Self {
26606            s_type: StructureType::RENDER_PASS_STRIPE_INFO_ARM,
26607            next: ptr::null(),
26608            stripe_area: Rect2D::default(),
26609        }
26610    }
26611}
26612
26613unsafe impl Send for RenderPassStripeInfoARM {}
26614unsafe impl Sync for RenderPassStripeInfoARM {}
26615
26616/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassStripeSubmitInfoARM.html>
26617#[repr(C)]
26618#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26619pub struct RenderPassStripeSubmitInfoARM {
26620    pub s_type: StructureType,
26621    pub next: *const c_void,
26622    pub stripe_semaphore_info_count: u32,
26623    pub stripe_semaphore_infos: *const SemaphoreSubmitInfo,
26624}
26625
26626impl Default for RenderPassStripeSubmitInfoARM {
26627    #[inline]
26628    fn default() -> Self {
26629        Self {
26630            s_type: StructureType::RENDER_PASS_STRIPE_SUBMIT_INFO_ARM,
26631            next: ptr::null(),
26632            stripe_semaphore_info_count: u32::default(),
26633            stripe_semaphore_infos: ptr::null(),
26634        }
26635    }
26636}
26637
26638unsafe impl Send for RenderPassStripeSubmitInfoARM {}
26639unsafe impl Sync for RenderPassStripeSubmitInfoARM {}
26640
26641/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassSubpassFeedbackCreateInfoEXT.html>
26642#[repr(C)]
26643#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26644pub struct RenderPassSubpassFeedbackCreateInfoEXT {
26645    pub s_type: StructureType,
26646    pub next: *const c_void,
26647    pub subpass_feedback: *mut RenderPassSubpassFeedbackInfoEXT,
26648}
26649
26650impl Default for RenderPassSubpassFeedbackCreateInfoEXT {
26651    #[inline]
26652    fn default() -> Self {
26653        Self {
26654            s_type: StructureType::RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT,
26655            next: ptr::null(),
26656            subpass_feedback: ptr::null_mut(),
26657        }
26658    }
26659}
26660
26661unsafe impl Send for RenderPassSubpassFeedbackCreateInfoEXT {}
26662unsafe impl Sync for RenderPassSubpassFeedbackCreateInfoEXT {}
26663
26664/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassSubpassFeedbackInfoEXT.html>
26665#[repr(C)]
26666#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26667pub struct RenderPassSubpassFeedbackInfoEXT {
26668    pub subpass_merge_status: SubpassMergeStatusEXT,
26669    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
26670    pub post_merge_index: u32,
26671}
26672
26673/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassTileShadingCreateInfoQCOM.html>
26674#[repr(C)]
26675#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26676pub struct RenderPassTileShadingCreateInfoQCOM {
26677    pub s_type: StructureType,
26678    pub next: *const c_void,
26679    pub flags: TileShadingRenderPassFlagsQCOM,
26680    pub tile_apron_size: Extent2D,
26681}
26682
26683impl Default for RenderPassTileShadingCreateInfoQCOM {
26684    #[inline]
26685    fn default() -> Self {
26686        Self {
26687            s_type: StructureType::RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM,
26688            next: ptr::null(),
26689            flags: TileShadingRenderPassFlagsQCOM::default(),
26690            tile_apron_size: Extent2D::default(),
26691        }
26692    }
26693}
26694
26695unsafe impl Send for RenderPassTileShadingCreateInfoQCOM {}
26696unsafe impl Sync for RenderPassTileShadingCreateInfoQCOM {}
26697
26698/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassTransformBeginInfoQCOM.html>
26699#[repr(C)]
26700#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26701pub struct RenderPassTransformBeginInfoQCOM {
26702    pub s_type: StructureType,
26703    pub next: *const c_void,
26704    pub transform: SurfaceTransformFlagsKHR,
26705}
26706
26707impl Default for RenderPassTransformBeginInfoQCOM {
26708    #[inline]
26709    fn default() -> Self {
26710        Self {
26711            s_type: StructureType::RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM,
26712            next: ptr::null(),
26713            transform: SurfaceTransformFlagsKHR::default(),
26714        }
26715    }
26716}
26717
26718unsafe impl Send for RenderPassTransformBeginInfoQCOM {}
26719unsafe impl Sync for RenderPassTransformBeginInfoQCOM {}
26720
26721/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAreaInfo.html>
26722#[repr(C)]
26723#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26724pub struct RenderingAreaInfo {
26725    pub s_type: StructureType,
26726    pub next: *const c_void,
26727    pub view_mask: u32,
26728    pub color_attachment_count: u32,
26729    pub color_attachment_formats: *const Format,
26730    pub depth_attachment_format: Format,
26731    pub stencil_attachment_format: Format,
26732}
26733
26734impl Default for RenderingAreaInfo {
26735    #[inline]
26736    fn default() -> Self {
26737        Self {
26738            s_type: StructureType::RENDERING_AREA_INFO,
26739            next: ptr::null(),
26740            view_mask: u32::default(),
26741            color_attachment_count: u32::default(),
26742            color_attachment_formats: ptr::null(),
26743            depth_attachment_format: Format::default(),
26744            stencil_attachment_format: Format::default(),
26745        }
26746    }
26747}
26748
26749unsafe impl Send for RenderingAreaInfo {}
26750unsafe impl Sync for RenderingAreaInfo {}
26751
26752/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentFlagsInfoKHR.html>
26753#[repr(C)]
26754#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26755pub struct RenderingAttachmentFlagsInfoKHR {
26756    pub s_type: StructureType,
26757    pub next: *const c_void,
26758    pub flags: RenderingAttachmentFlagsKHR,
26759}
26760
26761impl Default for RenderingAttachmentFlagsInfoKHR {
26762    #[inline]
26763    fn default() -> Self {
26764        Self {
26765            s_type: StructureType::RENDERING_ATTACHMENT_FLAGS_INFO_KHR,
26766            next: ptr::null(),
26767            flags: RenderingAttachmentFlagsKHR::default(),
26768        }
26769    }
26770}
26771
26772unsafe impl Send for RenderingAttachmentFlagsInfoKHR {}
26773unsafe impl Sync for RenderingAttachmentFlagsInfoKHR {}
26774
26775/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentInfo.html>
26776#[repr(C)]
26777#[derive(Copy, Clone, Debug)]
26778pub struct RenderingAttachmentInfo {
26779    pub s_type: StructureType,
26780    pub next: *const c_void,
26781    pub image_view: ImageView,
26782    pub image_layout: ImageLayout,
26783    pub resolve_mode: ResolveModeFlags,
26784    pub resolve_image_view: ImageView,
26785    pub resolve_image_layout: ImageLayout,
26786    pub load_op: AttachmentLoadOp,
26787    pub store_op: AttachmentStoreOp,
26788    pub clear_value: ClearValue,
26789}
26790
26791impl Default for RenderingAttachmentInfo {
26792    #[inline]
26793    fn default() -> Self {
26794        Self {
26795            s_type: StructureType::RENDERING_ATTACHMENT_INFO,
26796            next: ptr::null(),
26797            image_view: ImageView::default(),
26798            image_layout: ImageLayout::default(),
26799            resolve_mode: ResolveModeFlags::default(),
26800            resolve_image_view: ImageView::default(),
26801            resolve_image_layout: ImageLayout::default(),
26802            load_op: AttachmentLoadOp::default(),
26803            store_op: AttachmentStoreOp::default(),
26804            clear_value: ClearValue::default(),
26805        }
26806    }
26807}
26808
26809unsafe impl Send for RenderingAttachmentInfo {}
26810unsafe impl Sync for RenderingAttachmentInfo {}
26811
26812/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentLocationInfo.html>
26813#[repr(C)]
26814#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26815pub struct RenderingAttachmentLocationInfo {
26816    pub s_type: StructureType,
26817    pub next: *const c_void,
26818    pub color_attachment_count: u32,
26819    pub color_attachment_locations: *const u32,
26820}
26821
26822impl Default for RenderingAttachmentLocationInfo {
26823    #[inline]
26824    fn default() -> Self {
26825        Self {
26826            s_type: StructureType::RENDERING_ATTACHMENT_LOCATION_INFO,
26827            next: ptr::null(),
26828            color_attachment_count: u32::default(),
26829            color_attachment_locations: ptr::null(),
26830        }
26831    }
26832}
26833
26834unsafe impl Send for RenderingAttachmentLocationInfo {}
26835unsafe impl Sync for RenderingAttachmentLocationInfo {}
26836
26837/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingEndInfoKHR.html>
26838#[repr(C)]
26839#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26840pub struct RenderingEndInfoKHR {
26841    pub s_type: StructureType,
26842    pub next: *const c_void,
26843}
26844
26845impl Default for RenderingEndInfoKHR {
26846    #[inline]
26847    fn default() -> Self {
26848        Self {
26849            s_type: StructureType::RENDERING_END_INFO_KHR,
26850            next: ptr::null(),
26851        }
26852    }
26853}
26854
26855unsafe impl Send for RenderingEndInfoKHR {}
26856unsafe impl Sync for RenderingEndInfoKHR {}
26857
26858/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingFragmentDensityMapAttachmentInfoEXT.html>
26859#[repr(C)]
26860#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26861pub struct RenderingFragmentDensityMapAttachmentInfoEXT {
26862    pub s_type: StructureType,
26863    pub next: *const c_void,
26864    pub image_view: ImageView,
26865    pub image_layout: ImageLayout,
26866}
26867
26868impl Default for RenderingFragmentDensityMapAttachmentInfoEXT {
26869    #[inline]
26870    fn default() -> Self {
26871        Self {
26872            s_type: StructureType::RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT,
26873            next: ptr::null(),
26874            image_view: ImageView::default(),
26875            image_layout: ImageLayout::default(),
26876        }
26877    }
26878}
26879
26880unsafe impl Send for RenderingFragmentDensityMapAttachmentInfoEXT {}
26881unsafe impl Sync for RenderingFragmentDensityMapAttachmentInfoEXT {}
26882
26883/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingFragmentShadingRateAttachmentInfoKHR.html>
26884#[repr(C)]
26885#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26886pub struct RenderingFragmentShadingRateAttachmentInfoKHR {
26887    pub s_type: StructureType,
26888    pub next: *const c_void,
26889    pub image_view: ImageView,
26890    pub image_layout: ImageLayout,
26891    pub shading_rate_attachment_texel_size: Extent2D,
26892}
26893
26894impl Default for RenderingFragmentShadingRateAttachmentInfoKHR {
26895    #[inline]
26896    fn default() -> Self {
26897        Self {
26898            s_type: StructureType::RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,
26899            next: ptr::null(),
26900            image_view: ImageView::default(),
26901            image_layout: ImageLayout::default(),
26902            shading_rate_attachment_texel_size: Extent2D::default(),
26903        }
26904    }
26905}
26906
26907unsafe impl Send for RenderingFragmentShadingRateAttachmentInfoKHR {}
26908unsafe impl Sync for RenderingFragmentShadingRateAttachmentInfoKHR {}
26909
26910/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInfo.html>
26911#[repr(C)]
26912#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26913pub struct RenderingInfo {
26914    pub s_type: StructureType,
26915    pub next: *const c_void,
26916    pub flags: RenderingFlags,
26917    pub render_area: Rect2D,
26918    pub layer_count: u32,
26919    pub view_mask: u32,
26920    pub color_attachment_count: u32,
26921    pub color_attachments: *const RenderingAttachmentInfo,
26922    pub depth_attachment: *const RenderingAttachmentInfo,
26923    pub stencil_attachment: *const RenderingAttachmentInfo,
26924}
26925
26926impl Default for RenderingInfo {
26927    #[inline]
26928    fn default() -> Self {
26929        Self {
26930            s_type: StructureType::RENDERING_INFO,
26931            next: ptr::null(),
26932            flags: RenderingFlags::default(),
26933            render_area: Rect2D::default(),
26934            layer_count: u32::default(),
26935            view_mask: u32::default(),
26936            color_attachment_count: u32::default(),
26937            color_attachments: ptr::null(),
26938            depth_attachment: ptr::null(),
26939            stencil_attachment: ptr::null(),
26940        }
26941    }
26942}
26943
26944unsafe impl Send for RenderingInfo {}
26945unsafe impl Sync for RenderingInfo {}
26946
26947/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInputAttachmentIndexInfo.html>
26948#[repr(C)]
26949#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26950pub struct RenderingInputAttachmentIndexInfo {
26951    pub s_type: StructureType,
26952    pub next: *const c_void,
26953    pub color_attachment_count: u32,
26954    pub color_attachment_input_indices: *const u32,
26955    pub depth_input_attachment_index: *const u32,
26956    pub stencil_input_attachment_index: *const u32,
26957}
26958
26959impl Default for RenderingInputAttachmentIndexInfo {
26960    #[inline]
26961    fn default() -> Self {
26962        Self {
26963            s_type: StructureType::RENDERING_INPUT_ATTACHMENT_INDEX_INFO,
26964            next: ptr::null(),
26965            color_attachment_count: u32::default(),
26966            color_attachment_input_indices: ptr::null(),
26967            depth_input_attachment_index: ptr::null(),
26968            stencil_input_attachment_index: ptr::null(),
26969        }
26970    }
26971}
26972
26973unsafe impl Send for RenderingInputAttachmentIndexInfo {}
26974unsafe impl Sync for RenderingInputAttachmentIndexInfo {}
26975
26976/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResolveImageInfo2.html>
26977#[repr(C)]
26978#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26979pub struct ResolveImageInfo2 {
26980    pub s_type: StructureType,
26981    pub next: *const c_void,
26982    pub src_image: Image,
26983    pub src_image_layout: ImageLayout,
26984    pub dst_image: Image,
26985    pub dst_image_layout: ImageLayout,
26986    pub region_count: u32,
26987    pub regions: *const ImageResolve2,
26988}
26989
26990impl Default for ResolveImageInfo2 {
26991    #[inline]
26992    fn default() -> Self {
26993        Self {
26994            s_type: StructureType::RESOLVE_IMAGE_INFO_2,
26995            next: ptr::null(),
26996            src_image: Image::default(),
26997            src_image_layout: ImageLayout::default(),
26998            dst_image: Image::default(),
26999            dst_image_layout: ImageLayout::default(),
27000            region_count: u32::default(),
27001            regions: ptr::null(),
27002        }
27003    }
27004}
27005
27006unsafe impl Send for ResolveImageInfo2 {}
27007unsafe impl Sync for ResolveImageInfo2 {}
27008
27009/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResolveImageModeInfoKHR.html>
27010#[repr(C)]
27011#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27012pub struct ResolveImageModeInfoKHR {
27013    pub s_type: StructureType,
27014    pub next: *const c_void,
27015    pub flags: ResolveImageFlagsKHR,
27016    pub resolve_mode: ResolveModeFlags,
27017    pub stencil_resolve_mode: ResolveModeFlags,
27018}
27019
27020impl Default for ResolveImageModeInfoKHR {
27021    #[inline]
27022    fn default() -> Self {
27023        Self {
27024            s_type: StructureType::RESOLVE_IMAGE_MODE_INFO_KHR,
27025            next: ptr::null(),
27026            flags: ResolveImageFlagsKHR::default(),
27027            resolve_mode: ResolveModeFlags::default(),
27028            stencil_resolve_mode: ResolveModeFlags::default(),
27029        }
27030    }
27031}
27032
27033unsafe impl Send for ResolveImageModeInfoKHR {}
27034unsafe impl Sync for ResolveImageModeInfoKHR {}
27035
27036/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSRTDataNV.html>
27037#[repr(C)]
27038#[derive(Copy, Clone, Default, Debug, PartialEq)]
27039pub struct SRTDataNV {
27040    pub sx: f32,
27041    pub a: f32,
27042    pub b: f32,
27043    pub pvx: f32,
27044    pub sy: f32,
27045    pub c: f32,
27046    pub pvy: f32,
27047    pub sz: f32,
27048    pub pvz: f32,
27049    pub qx: f32,
27050    pub qy: f32,
27051    pub qz: f32,
27052    pub qw: f32,
27053    pub tx: f32,
27054    pub ty: f32,
27055    pub tz: f32,
27056}
27057
27058/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSampleLocationEXT.html>
27059#[repr(C)]
27060#[derive(Copy, Clone, Default, Debug, PartialEq)]
27061pub struct SampleLocationEXT {
27062    pub x: f32,
27063    pub y: f32,
27064}
27065
27066/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSampleLocationsInfoEXT.html>
27067#[repr(C)]
27068#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27069pub struct SampleLocationsInfoEXT {
27070    pub s_type: StructureType,
27071    pub next: *const c_void,
27072    pub sample_locations_per_pixel: SampleCountFlags,
27073    pub sample_location_grid_size: Extent2D,
27074    pub sample_locations_count: u32,
27075    pub sample_locations: *const SampleLocationEXT,
27076}
27077
27078impl Default for SampleLocationsInfoEXT {
27079    #[inline]
27080    fn default() -> Self {
27081        Self {
27082            s_type: StructureType::SAMPLE_LOCATIONS_INFO_EXT,
27083            next: ptr::null(),
27084            sample_locations_per_pixel: SampleCountFlags::default(),
27085            sample_location_grid_size: Extent2D::default(),
27086            sample_locations_count: u32::default(),
27087            sample_locations: ptr::null(),
27088        }
27089    }
27090}
27091
27092unsafe impl Send for SampleLocationsInfoEXT {}
27093unsafe impl Sync for SampleLocationsInfoEXT {}
27094
27095/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerBlockMatchWindowCreateInfoQCOM.html>
27096#[repr(C)]
27097#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27098pub struct SamplerBlockMatchWindowCreateInfoQCOM {
27099    pub s_type: StructureType,
27100    pub next: *const c_void,
27101    pub window_extent: Extent2D,
27102    pub window_compare_mode: BlockMatchWindowCompareModeQCOM,
27103}
27104
27105impl Default for SamplerBlockMatchWindowCreateInfoQCOM {
27106    #[inline]
27107    fn default() -> Self {
27108        Self {
27109            s_type: StructureType::SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM,
27110            next: ptr::null(),
27111            window_extent: Extent2D::default(),
27112            window_compare_mode: BlockMatchWindowCompareModeQCOM::default(),
27113        }
27114    }
27115}
27116
27117unsafe impl Send for SamplerBlockMatchWindowCreateInfoQCOM {}
27118unsafe impl Sync for SamplerBlockMatchWindowCreateInfoQCOM {}
27119
27120/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerBorderColorComponentMappingCreateInfoEXT.html>
27121#[repr(C)]
27122#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27123pub struct SamplerBorderColorComponentMappingCreateInfoEXT {
27124    pub s_type: StructureType,
27125    pub next: *const c_void,
27126    pub components: ComponentMapping,
27127    pub srgb: Bool32,
27128}
27129
27130impl Default for SamplerBorderColorComponentMappingCreateInfoEXT {
27131    #[inline]
27132    fn default() -> Self {
27133        Self {
27134            s_type: StructureType::SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT,
27135            next: ptr::null(),
27136            components: ComponentMapping::default(),
27137            srgb: Bool32::default(),
27138        }
27139    }
27140}
27141
27142unsafe impl Send for SamplerBorderColorComponentMappingCreateInfoEXT {}
27143unsafe impl Sync for SamplerBorderColorComponentMappingCreateInfoEXT {}
27144
27145/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCaptureDescriptorDataInfoEXT.html>
27146#[repr(C)]
27147#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27148pub struct SamplerCaptureDescriptorDataInfoEXT {
27149    pub s_type: StructureType,
27150    pub next: *const c_void,
27151    pub sampler: Sampler,
27152}
27153
27154impl Default for SamplerCaptureDescriptorDataInfoEXT {
27155    #[inline]
27156    fn default() -> Self {
27157        Self {
27158            s_type: StructureType::SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
27159            next: ptr::null(),
27160            sampler: Sampler::default(),
27161        }
27162    }
27163}
27164
27165unsafe impl Send for SamplerCaptureDescriptorDataInfoEXT {}
27166unsafe impl Sync for SamplerCaptureDescriptorDataInfoEXT {}
27167
27168/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCreateInfo.html>
27169#[repr(C)]
27170#[derive(Copy, Clone, Debug, PartialEq)]
27171pub struct SamplerCreateInfo {
27172    pub s_type: StructureType,
27173    pub next: *const c_void,
27174    pub flags: SamplerCreateFlags,
27175    pub mag_filter: Filter,
27176    pub min_filter: Filter,
27177    pub mipmap_mode: SamplerMipmapMode,
27178    pub address_mode_u: SamplerAddressMode,
27179    pub address_mode_v: SamplerAddressMode,
27180    pub address_mode_w: SamplerAddressMode,
27181    pub mip_lod_bias: f32,
27182    pub anisotropy_enable: Bool32,
27183    pub max_anisotropy: f32,
27184    pub compare_enable: Bool32,
27185    pub compare_op: CompareOp,
27186    pub min_lod: f32,
27187    pub max_lod: f32,
27188    pub border_color: BorderColor,
27189    pub unnormalized_coordinates: Bool32,
27190}
27191
27192impl Default for SamplerCreateInfo {
27193    #[inline]
27194    fn default() -> Self {
27195        Self {
27196            s_type: StructureType::SAMPLER_CREATE_INFO,
27197            next: ptr::null(),
27198            flags: SamplerCreateFlags::default(),
27199            mag_filter: Filter::default(),
27200            min_filter: Filter::default(),
27201            mipmap_mode: SamplerMipmapMode::default(),
27202            address_mode_u: SamplerAddressMode::default(),
27203            address_mode_v: SamplerAddressMode::default(),
27204            address_mode_w: SamplerAddressMode::default(),
27205            mip_lod_bias: f32::default(),
27206            anisotropy_enable: Bool32::default(),
27207            max_anisotropy: f32::default(),
27208            compare_enable: Bool32::default(),
27209            compare_op: CompareOp::default(),
27210            min_lod: f32::default(),
27211            max_lod: f32::default(),
27212            border_color: BorderColor::default(),
27213            unnormalized_coordinates: Bool32::default(),
27214        }
27215    }
27216}
27217
27218unsafe impl Send for SamplerCreateInfo {}
27219unsafe impl Sync for SamplerCreateInfo {}
27220
27221/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCubicWeightsCreateInfoQCOM.html>
27222#[repr(C)]
27223#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27224pub struct SamplerCubicWeightsCreateInfoQCOM {
27225    pub s_type: StructureType,
27226    pub next: *const c_void,
27227    pub cubic_weights: CubicFilterWeightsQCOM,
27228}
27229
27230impl Default for SamplerCubicWeightsCreateInfoQCOM {
27231    #[inline]
27232    fn default() -> Self {
27233        Self {
27234            s_type: StructureType::SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM,
27235            next: ptr::null(),
27236            cubic_weights: CubicFilterWeightsQCOM::default(),
27237        }
27238    }
27239}
27240
27241unsafe impl Send for SamplerCubicWeightsCreateInfoQCOM {}
27242unsafe impl Sync for SamplerCubicWeightsCreateInfoQCOM {}
27243
27244/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCustomBorderColorCreateInfoEXT.html>
27245#[repr(C)]
27246#[derive(Copy, Clone, Debug)]
27247pub struct SamplerCustomBorderColorCreateInfoEXT {
27248    pub s_type: StructureType,
27249    pub next: *const c_void,
27250    pub custom_border_color: ClearColorValue,
27251    pub format: Format,
27252}
27253
27254impl Default for SamplerCustomBorderColorCreateInfoEXT {
27255    #[inline]
27256    fn default() -> Self {
27257        Self {
27258            s_type: StructureType::SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT,
27259            next: ptr::null(),
27260            custom_border_color: ClearColorValue::default(),
27261            format: Format::default(),
27262        }
27263    }
27264}
27265
27266unsafe impl Send for SamplerCustomBorderColorCreateInfoEXT {}
27267unsafe impl Sync for SamplerCustomBorderColorCreateInfoEXT {}
27268
27269/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerReductionModeCreateInfo.html>
27270#[repr(C)]
27271#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27272pub struct SamplerReductionModeCreateInfo {
27273    pub s_type: StructureType,
27274    pub next: *const c_void,
27275    pub reduction_mode: SamplerReductionMode,
27276}
27277
27278impl Default for SamplerReductionModeCreateInfo {
27279    #[inline]
27280    fn default() -> Self {
27281        Self {
27282            s_type: StructureType::SAMPLER_REDUCTION_MODE_CREATE_INFO,
27283            next: ptr::null(),
27284            reduction_mode: SamplerReductionMode::default(),
27285        }
27286    }
27287}
27288
27289unsafe impl Send for SamplerReductionModeCreateInfo {}
27290unsafe impl Sync for SamplerReductionModeCreateInfo {}
27291
27292/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionCreateInfo.html>
27293#[repr(C)]
27294#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27295pub struct SamplerYcbcrConversionCreateInfo {
27296    pub s_type: StructureType,
27297    pub next: *const c_void,
27298    pub format: Format,
27299    pub ycbcr_model: SamplerYcbcrModelConversion,
27300    pub ycbcr_range: SamplerYcbcrRange,
27301    pub components: ComponentMapping,
27302    pub x_chroma_offset: ChromaLocation,
27303    pub y_chroma_offset: ChromaLocation,
27304    pub chroma_filter: Filter,
27305    pub force_explicit_reconstruction: Bool32,
27306}
27307
27308impl Default for SamplerYcbcrConversionCreateInfo {
27309    #[inline]
27310    fn default() -> Self {
27311        Self {
27312            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
27313            next: ptr::null(),
27314            format: Format::default(),
27315            ycbcr_model: SamplerYcbcrModelConversion::default(),
27316            ycbcr_range: SamplerYcbcrRange::default(),
27317            components: ComponentMapping::default(),
27318            x_chroma_offset: ChromaLocation::default(),
27319            y_chroma_offset: ChromaLocation::default(),
27320            chroma_filter: Filter::default(),
27321            force_explicit_reconstruction: Bool32::default(),
27322        }
27323    }
27324}
27325
27326unsafe impl Send for SamplerYcbcrConversionCreateInfo {}
27327unsafe impl Sync for SamplerYcbcrConversionCreateInfo {}
27328
27329/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionImageFormatProperties.html>
27330#[repr(C)]
27331#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27332pub struct SamplerYcbcrConversionImageFormatProperties {
27333    pub s_type: StructureType,
27334    pub next: *mut c_void,
27335    pub combined_image_sampler_descriptor_count: u32,
27336}
27337
27338impl Default for SamplerYcbcrConversionImageFormatProperties {
27339    #[inline]
27340    fn default() -> Self {
27341        Self {
27342            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
27343            next: ptr::null_mut(),
27344            combined_image_sampler_descriptor_count: u32::default(),
27345        }
27346    }
27347}
27348
27349unsafe impl Send for SamplerYcbcrConversionImageFormatProperties {}
27350unsafe impl Sync for SamplerYcbcrConversionImageFormatProperties {}
27351
27352/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionInfo.html>
27353#[repr(C)]
27354#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27355pub struct SamplerYcbcrConversionInfo {
27356    pub s_type: StructureType,
27357    pub next: *const c_void,
27358    pub conversion: SamplerYcbcrConversion,
27359}
27360
27361impl Default for SamplerYcbcrConversionInfo {
27362    #[inline]
27363    fn default() -> Self {
27364        Self {
27365            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_INFO,
27366            next: ptr::null(),
27367            conversion: SamplerYcbcrConversion::default(),
27368        }
27369    }
27370}
27371
27372unsafe impl Send for SamplerYcbcrConversionInfo {}
27373unsafe impl Sync for SamplerYcbcrConversionInfo {}
27374
27375/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM.html>
27376#[repr(C)]
27377#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27378pub struct SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {
27379    pub s_type: StructureType,
27380    pub next: *mut c_void,
27381    pub enable_y_degamma: Bool32,
27382    pub enable_cb_cr_degamma: Bool32,
27383}
27384
27385impl Default for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {
27386    #[inline]
27387    fn default() -> Self {
27388        Self {
27389            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM,
27390            next: ptr::null_mut(),
27391            enable_y_degamma: Bool32::default(),
27392            enable_cb_cr_degamma: Bool32::default(),
27393        }
27394    }
27395}
27396
27397unsafe impl Send for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {}
27398unsafe impl Sync for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {}
27399
27400/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSciSyncAttributesInfoNV.html>
27401#[repr(C)]
27402#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27403pub struct SciSyncAttributesInfoNV {
27404    pub s_type: StructureType,
27405    pub next: *const c_void,
27406    pub client_type: SciSyncClientTypeNV,
27407    pub primitive_type: SciSyncPrimitiveTypeNV,
27408}
27409
27410impl Default for SciSyncAttributesInfoNV {
27411    #[inline]
27412    fn default() -> Self {
27413        Self {
27414            s_type: StructureType::SCI_SYNC_ATTRIBUTES_INFO_NV,
27415            next: ptr::null(),
27416            client_type: SciSyncClientTypeNV::default(),
27417            primitive_type: SciSyncPrimitiveTypeNV::default(),
27418        }
27419    }
27420}
27421
27422unsafe impl Send for SciSyncAttributesInfoNV {}
27423unsafe impl Sync for SciSyncAttributesInfoNV {}
27424
27425/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenBufferFormatPropertiesQNX.html>
27426#[repr(C)]
27427#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27428pub struct ScreenBufferFormatPropertiesQNX {
27429    pub s_type: StructureType,
27430    pub next: *mut c_void,
27431    pub format: Format,
27432    pub external_format: u64,
27433    pub screen_usage: u64,
27434    pub format_features: FormatFeatureFlags,
27435    pub sampler_ycbcr_conversion_components: ComponentMapping,
27436    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
27437    pub suggested_ycbcr_range: SamplerYcbcrRange,
27438    pub suggested_x_chroma_offset: ChromaLocation,
27439    pub suggested_y_chroma_offset: ChromaLocation,
27440}
27441
27442impl Default for ScreenBufferFormatPropertiesQNX {
27443    #[inline]
27444    fn default() -> Self {
27445        Self {
27446            s_type: StructureType::SCREEN_BUFFER_FORMAT_PROPERTIES_QNX,
27447            next: ptr::null_mut(),
27448            format: Format::default(),
27449            external_format: u64::default(),
27450            screen_usage: u64::default(),
27451            format_features: FormatFeatureFlags::default(),
27452            sampler_ycbcr_conversion_components: ComponentMapping::default(),
27453            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
27454            suggested_ycbcr_range: SamplerYcbcrRange::default(),
27455            suggested_x_chroma_offset: ChromaLocation::default(),
27456            suggested_y_chroma_offset: ChromaLocation::default(),
27457        }
27458    }
27459}
27460
27461unsafe impl Send for ScreenBufferFormatPropertiesQNX {}
27462unsafe impl Sync for ScreenBufferFormatPropertiesQNX {}
27463
27464/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenBufferPropertiesQNX.html>
27465#[repr(C)]
27466#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27467pub struct ScreenBufferPropertiesQNX {
27468    pub s_type: StructureType,
27469    pub next: *mut c_void,
27470    pub allocation_size: DeviceSize,
27471    pub memory_type_bits: u32,
27472}
27473
27474impl Default for ScreenBufferPropertiesQNX {
27475    #[inline]
27476    fn default() -> Self {
27477        Self {
27478            s_type: StructureType::SCREEN_BUFFER_PROPERTIES_QNX,
27479            next: ptr::null_mut(),
27480            allocation_size: DeviceSize::default(),
27481            memory_type_bits: u32::default(),
27482        }
27483    }
27484}
27485
27486unsafe impl Send for ScreenBufferPropertiesQNX {}
27487unsafe impl Sync for ScreenBufferPropertiesQNX {}
27488
27489/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenSurfaceCreateInfoQNX.html>
27490#[repr(C)]
27491#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27492pub struct ScreenSurfaceCreateInfoQNX {
27493    pub s_type: StructureType,
27494    pub next: *const c_void,
27495    pub flags: ScreenSurfaceCreateFlagsQNX,
27496    pub context: *mut _screen_context,
27497    pub window: *mut _screen_window,
27498}
27499
27500impl Default for ScreenSurfaceCreateInfoQNX {
27501    #[inline]
27502    fn default() -> Self {
27503        Self {
27504            s_type: StructureType::SCREEN_SURFACE_CREATE_INFO_QNX,
27505            next: ptr::null(),
27506            flags: ScreenSurfaceCreateFlagsQNX::default(),
27507            context: ptr::null_mut(),
27508            window: ptr::null_mut(),
27509        }
27510    }
27511}
27512
27513unsafe impl Send for ScreenSurfaceCreateInfoQNX {}
27514unsafe impl Sync for ScreenSurfaceCreateInfoQNX {}
27515
27516/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreCreateInfo.html>
27517#[repr(C)]
27518#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27519pub struct SemaphoreCreateInfo {
27520    pub s_type: StructureType,
27521    pub next: *const c_void,
27522    pub flags: SemaphoreCreateFlags,
27523}
27524
27525impl Default for SemaphoreCreateInfo {
27526    #[inline]
27527    fn default() -> Self {
27528        Self {
27529            s_type: StructureType::SEMAPHORE_CREATE_INFO,
27530            next: ptr::null(),
27531            flags: SemaphoreCreateFlags::default(),
27532        }
27533    }
27534}
27535
27536unsafe impl Send for SemaphoreCreateInfo {}
27537unsafe impl Sync for SemaphoreCreateInfo {}
27538
27539/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetFdInfoKHR.html>
27540#[repr(C)]
27541#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27542pub struct SemaphoreGetFdInfoKHR {
27543    pub s_type: StructureType,
27544    pub next: *const c_void,
27545    pub semaphore: Semaphore,
27546    pub handle_type: ExternalSemaphoreHandleTypeFlags,
27547}
27548
27549impl Default for SemaphoreGetFdInfoKHR {
27550    #[inline]
27551    fn default() -> Self {
27552        Self {
27553            s_type: StructureType::SEMAPHORE_GET_FD_INFO_KHR,
27554            next: ptr::null(),
27555            semaphore: Semaphore::default(),
27556            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
27557        }
27558    }
27559}
27560
27561unsafe impl Send for SemaphoreGetFdInfoKHR {}
27562unsafe impl Sync for SemaphoreGetFdInfoKHR {}
27563
27564/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetSciSyncInfoNV.html>
27565#[repr(C)]
27566#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27567pub struct SemaphoreGetSciSyncInfoNV {
27568    pub s_type: StructureType,
27569    pub next: *const c_void,
27570    pub semaphore: Semaphore,
27571    pub handle_type: ExternalSemaphoreHandleTypeFlags,
27572}
27573
27574impl Default for SemaphoreGetSciSyncInfoNV {
27575    #[inline]
27576    fn default() -> Self {
27577        Self {
27578            s_type: StructureType::SEMAPHORE_GET_SCI_SYNC_INFO_NV,
27579            next: ptr::null(),
27580            semaphore: Semaphore::default(),
27581            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
27582        }
27583    }
27584}
27585
27586unsafe impl Send for SemaphoreGetSciSyncInfoNV {}
27587unsafe impl Sync for SemaphoreGetSciSyncInfoNV {}
27588
27589/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetWin32HandleInfoKHR.html>
27590#[repr(C)]
27591#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27592pub struct SemaphoreGetWin32HandleInfoKHR {
27593    pub s_type: StructureType,
27594    pub next: *const c_void,
27595    pub semaphore: Semaphore,
27596    pub handle_type: ExternalSemaphoreHandleTypeFlags,
27597}
27598
27599impl Default for SemaphoreGetWin32HandleInfoKHR {
27600    #[inline]
27601    fn default() -> Self {
27602        Self {
27603            s_type: StructureType::SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,
27604            next: ptr::null(),
27605            semaphore: Semaphore::default(),
27606            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
27607        }
27608    }
27609}
27610
27611unsafe impl Send for SemaphoreGetWin32HandleInfoKHR {}
27612unsafe impl Sync for SemaphoreGetWin32HandleInfoKHR {}
27613
27614/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetZirconHandleInfoFUCHSIA.html>
27615#[repr(C)]
27616#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27617pub struct SemaphoreGetZirconHandleInfoFUCHSIA {
27618    pub s_type: StructureType,
27619    pub next: *const c_void,
27620    pub semaphore: Semaphore,
27621    pub handle_type: ExternalSemaphoreHandleTypeFlags,
27622}
27623
27624impl Default for SemaphoreGetZirconHandleInfoFUCHSIA {
27625    #[inline]
27626    fn default() -> Self {
27627        Self {
27628            s_type: StructureType::SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
27629            next: ptr::null(),
27630            semaphore: Semaphore::default(),
27631            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
27632        }
27633    }
27634}
27635
27636unsafe impl Send for SemaphoreGetZirconHandleInfoFUCHSIA {}
27637unsafe impl Sync for SemaphoreGetZirconHandleInfoFUCHSIA {}
27638
27639/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSciSyncCreateInfoNV.html>
27640#[repr(C)]
27641#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27642pub struct SemaphoreSciSyncCreateInfoNV {
27643    pub s_type: StructureType,
27644    pub next: *const c_void,
27645    pub semaphore_pool: SemaphoreSciSyncPoolNV,
27646    pub fence: *const NvSciSyncFence,
27647}
27648
27649impl Default for SemaphoreSciSyncCreateInfoNV {
27650    #[inline]
27651    fn default() -> Self {
27652        Self {
27653            s_type: StructureType::SEMAPHORE_SCI_SYNC_CREATE_INFO_NV,
27654            next: ptr::null(),
27655            semaphore_pool: SemaphoreSciSyncPoolNV::default(),
27656            fence: ptr::null(),
27657        }
27658    }
27659}
27660
27661unsafe impl Send for SemaphoreSciSyncCreateInfoNV {}
27662unsafe impl Sync for SemaphoreSciSyncCreateInfoNV {}
27663
27664/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSciSyncPoolCreateInfoNV.html>
27665#[repr(C)]
27666#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27667pub struct SemaphoreSciSyncPoolCreateInfoNV {
27668    pub s_type: StructureType,
27669    pub next: *const c_void,
27670    pub handle: NvSciSyncObj,
27671}
27672
27673impl Default for SemaphoreSciSyncPoolCreateInfoNV {
27674    #[inline]
27675    fn default() -> Self {
27676        Self {
27677            s_type: StructureType::SEMAPHORE_SCI_SYNC_POOL_CREATE_INFO_NV,
27678            next: ptr::null(),
27679            handle: ptr::null_mut(),
27680        }
27681    }
27682}
27683
27684unsafe impl Send for SemaphoreSciSyncPoolCreateInfoNV {}
27685unsafe impl Sync for SemaphoreSciSyncPoolCreateInfoNV {}
27686
27687/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSignalInfo.html>
27688#[repr(C)]
27689#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27690pub struct SemaphoreSignalInfo {
27691    pub s_type: StructureType,
27692    pub next: *const c_void,
27693    pub semaphore: Semaphore,
27694    pub value: u64,
27695}
27696
27697impl Default for SemaphoreSignalInfo {
27698    #[inline]
27699    fn default() -> Self {
27700        Self {
27701            s_type: StructureType::SEMAPHORE_SIGNAL_INFO,
27702            next: ptr::null(),
27703            semaphore: Semaphore::default(),
27704            value: u64::default(),
27705        }
27706    }
27707}
27708
27709unsafe impl Send for SemaphoreSignalInfo {}
27710unsafe impl Sync for SemaphoreSignalInfo {}
27711
27712/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSubmitInfo.html>
27713#[repr(C)]
27714#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27715pub struct SemaphoreSubmitInfo {
27716    pub s_type: StructureType,
27717    pub next: *const c_void,
27718    pub semaphore: Semaphore,
27719    pub value: u64,
27720    pub stage_mask: PipelineStageFlags2,
27721    pub device_index: u32,
27722}
27723
27724impl Default for SemaphoreSubmitInfo {
27725    #[inline]
27726    fn default() -> Self {
27727        Self {
27728            s_type: StructureType::SEMAPHORE_SUBMIT_INFO,
27729            next: ptr::null(),
27730            semaphore: Semaphore::default(),
27731            value: u64::default(),
27732            stage_mask: PipelineStageFlags2::default(),
27733            device_index: u32::default(),
27734        }
27735    }
27736}
27737
27738unsafe impl Send for SemaphoreSubmitInfo {}
27739unsafe impl Sync for SemaphoreSubmitInfo {}
27740
27741/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreTypeCreateInfo.html>
27742#[repr(C)]
27743#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27744pub struct SemaphoreTypeCreateInfo {
27745    pub s_type: StructureType,
27746    pub next: *const c_void,
27747    pub semaphore_type: SemaphoreType,
27748    pub initial_value: u64,
27749}
27750
27751impl Default for SemaphoreTypeCreateInfo {
27752    #[inline]
27753    fn default() -> Self {
27754        Self {
27755            s_type: StructureType::SEMAPHORE_TYPE_CREATE_INFO,
27756            next: ptr::null(),
27757            semaphore_type: SemaphoreType::default(),
27758            initial_value: u64::default(),
27759        }
27760    }
27761}
27762
27763unsafe impl Send for SemaphoreTypeCreateInfo {}
27764unsafe impl Sync for SemaphoreTypeCreateInfo {}
27765
27766/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreWaitInfo.html>
27767#[repr(C)]
27768#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27769pub struct SemaphoreWaitInfo {
27770    pub s_type: StructureType,
27771    pub next: *const c_void,
27772    pub flags: SemaphoreWaitFlags,
27773    pub semaphore_count: u32,
27774    pub semaphores: *const Semaphore,
27775    pub values: *const u64,
27776}
27777
27778impl Default for SemaphoreWaitInfo {
27779    #[inline]
27780    fn default() -> Self {
27781        Self {
27782            s_type: StructureType::SEMAPHORE_WAIT_INFO,
27783            next: ptr::null(),
27784            flags: SemaphoreWaitFlags::default(),
27785            semaphore_count: u32::default(),
27786            semaphores: ptr::null(),
27787            values: ptr::null(),
27788        }
27789    }
27790}
27791
27792unsafe impl Send for SemaphoreWaitInfo {}
27793unsafe impl Sync for SemaphoreWaitInfo {}
27794
27795/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetDescriptorBufferOffsetsInfoEXT.html>
27796#[repr(C)]
27797#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27798pub struct SetDescriptorBufferOffsetsInfoEXT {
27799    pub s_type: StructureType,
27800    pub next: *const c_void,
27801    pub stage_flags: ShaderStageFlags,
27802    pub layout: PipelineLayout,
27803    pub first_set: u32,
27804    pub set_count: u32,
27805    pub buffer_indices: *const u32,
27806    pub offsets: *const DeviceSize,
27807}
27808
27809impl Default for SetDescriptorBufferOffsetsInfoEXT {
27810    #[inline]
27811    fn default() -> Self {
27812        Self {
27813            s_type: StructureType::SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT,
27814            next: ptr::null(),
27815            stage_flags: ShaderStageFlags::default(),
27816            layout: PipelineLayout::default(),
27817            first_set: u32::default(),
27818            set_count: u32::default(),
27819            buffer_indices: ptr::null(),
27820            offsets: ptr::null(),
27821        }
27822    }
27823}
27824
27825unsafe impl Send for SetDescriptorBufferOffsetsInfoEXT {}
27826unsafe impl Sync for SetDescriptorBufferOffsetsInfoEXT {}
27827
27828/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetLatencyMarkerInfoNV.html>
27829#[repr(C)]
27830#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27831pub struct SetLatencyMarkerInfoNV {
27832    pub s_type: StructureType,
27833    pub next: *const c_void,
27834    pub present_id: u64,
27835    pub marker: LatencyMarkerNV,
27836}
27837
27838impl Default for SetLatencyMarkerInfoNV {
27839    #[inline]
27840    fn default() -> Self {
27841        Self {
27842            s_type: StructureType::SET_LATENCY_MARKER_INFO_NV,
27843            next: ptr::null(),
27844            present_id: u64::default(),
27845            marker: LatencyMarkerNV::default(),
27846        }
27847    }
27848}
27849
27850unsafe impl Send for SetLatencyMarkerInfoNV {}
27851unsafe impl Sync for SetLatencyMarkerInfoNV {}
27852
27853/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetPresentConfigNV.html>
27854#[repr(C)]
27855#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27856pub struct SetPresentConfigNV {
27857    pub s_type: StructureType,
27858    pub next: *const c_void,
27859    pub num_frames_per_batch: u32,
27860    pub present_config_feedback: u32,
27861}
27862
27863impl Default for SetPresentConfigNV {
27864    #[inline]
27865    fn default() -> Self {
27866        Self {
27867            s_type: StructureType::SET_PRESENT_CONFIG_NV,
27868            next: ptr::null(),
27869            num_frames_per_batch: u32::default(),
27870            present_config_feedback: u32::default(),
27871        }
27872    }
27873}
27874
27875unsafe impl Send for SetPresentConfigNV {}
27876unsafe impl Sync for SetPresentConfigNV {}
27877
27878/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetStateFlagsIndirectCommandNV.html>
27879#[repr(C)]
27880#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27881pub struct SetStateFlagsIndirectCommandNV {
27882    pub data: u32,
27883}
27884
27885/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderCreateInfoEXT.html>
27886#[repr(C)]
27887#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27888pub struct ShaderCreateInfoEXT {
27889    pub s_type: StructureType,
27890    pub next: *const c_void,
27891    pub flags: ShaderCreateFlagsEXT,
27892    pub stage: ShaderStageFlags,
27893    pub next_stage: ShaderStageFlags,
27894    pub code_type: ShaderCodeTypeEXT,
27895    pub code_size: usize,
27896    pub code: *const c_void,
27897    pub name: *const c_char,
27898    pub set_layout_count: u32,
27899    pub set_layouts: *const DescriptorSetLayout,
27900    pub push_constant_range_count: u32,
27901    pub push_constant_ranges: *const PushConstantRange,
27902    pub specialization_info: *const SpecializationInfo,
27903}
27904
27905impl Default for ShaderCreateInfoEXT {
27906    #[inline]
27907    fn default() -> Self {
27908        Self {
27909            s_type: StructureType::SHADER_CREATE_INFO_EXT,
27910            next: ptr::null(),
27911            flags: ShaderCreateFlagsEXT::default(),
27912            stage: ShaderStageFlags::default(),
27913            next_stage: ShaderStageFlags::default(),
27914            code_type: ShaderCodeTypeEXT::default(),
27915            code_size: usize::default(),
27916            code: ptr::null(),
27917            name: ptr::null(),
27918            set_layout_count: u32::default(),
27919            set_layouts: ptr::null(),
27920            push_constant_range_count: u32::default(),
27921            push_constant_ranges: ptr::null(),
27922            specialization_info: ptr::null(),
27923        }
27924    }
27925}
27926
27927unsafe impl Send for ShaderCreateInfoEXT {}
27928unsafe impl Sync for ShaderCreateInfoEXT {}
27929
27930/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleCreateInfo.html>
27931#[repr(C)]
27932#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27933pub struct ShaderModuleCreateInfo {
27934    pub s_type: StructureType,
27935    pub next: *const c_void,
27936    pub flags: ShaderModuleCreateFlags,
27937    pub code_size: usize,
27938    pub code: *const u32,
27939}
27940
27941impl Default for ShaderModuleCreateInfo {
27942    #[inline]
27943    fn default() -> Self {
27944        Self {
27945            s_type: StructureType::SHADER_MODULE_CREATE_INFO,
27946            next: ptr::null(),
27947            flags: ShaderModuleCreateFlags::default(),
27948            code_size: usize::default(),
27949            code: ptr::null(),
27950        }
27951    }
27952}
27953
27954unsafe impl Send for ShaderModuleCreateInfo {}
27955unsafe impl Sync for ShaderModuleCreateInfo {}
27956
27957/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleIdentifierEXT.html>
27958#[repr(C)]
27959#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27960pub struct ShaderModuleIdentifierEXT {
27961    pub s_type: StructureType,
27962    pub next: *mut c_void,
27963    pub identifier_size: u32,
27964    pub identifier: ByteArray<MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT>,
27965}
27966
27967impl Default for ShaderModuleIdentifierEXT {
27968    #[inline]
27969    fn default() -> Self {
27970        Self {
27971            s_type: StructureType::SHADER_MODULE_IDENTIFIER_EXT,
27972            next: ptr::null_mut(),
27973            identifier_size: u32::default(),
27974            identifier: ByteArray::default(),
27975        }
27976    }
27977}
27978
27979unsafe impl Send for ShaderModuleIdentifierEXT {}
27980unsafe impl Sync for ShaderModuleIdentifierEXT {}
27981
27982/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleValidationCacheCreateInfoEXT.html>
27983#[repr(C)]
27984#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27985pub struct ShaderModuleValidationCacheCreateInfoEXT {
27986    pub s_type: StructureType,
27987    pub next: *const c_void,
27988    pub validation_cache: ValidationCacheEXT,
27989}
27990
27991impl Default for ShaderModuleValidationCacheCreateInfoEXT {
27992    #[inline]
27993    fn default() -> Self {
27994        Self {
27995            s_type: StructureType::SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT,
27996            next: ptr::null(),
27997            validation_cache: ValidationCacheEXT::default(),
27998        }
27999    }
28000}
28001
28002unsafe impl Send for ShaderModuleValidationCacheCreateInfoEXT {}
28003unsafe impl Sync for ShaderModuleValidationCacheCreateInfoEXT {}
28004
28005/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderResourceUsageAMD.html>
28006#[repr(C)]
28007#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28008pub struct ShaderResourceUsageAMD {
28009    pub num_used_vgprs: u32,
28010    pub num_used_sgprs: u32,
28011    pub lds_size_per_local_work_group: u32,
28012    pub lds_usage_size_in_bytes: usize,
28013    pub scratch_mem_usage_in_bytes: usize,
28014}
28015
28016/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderStatisticsInfoAMD.html>
28017#[repr(C)]
28018#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28019pub struct ShaderStatisticsInfoAMD {
28020    pub shader_stage_mask: ShaderStageFlags,
28021    pub resource_usage: ShaderResourceUsageAMD,
28022    pub num_physical_vgprs: u32,
28023    pub num_physical_sgprs: u32,
28024    pub num_available_vgprs: u32,
28025    pub num_available_sgprs: u32,
28026    pub compute_work_group_size: [u32; 3],
28027}
28028
28029/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShadingRatePaletteNV.html>
28030#[repr(C)]
28031#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28032pub struct ShadingRatePaletteNV {
28033    pub shading_rate_palette_entry_count: u32,
28034    pub shading_rate_palette_entries: *const ShadingRatePaletteEntryNV,
28035}
28036
28037impl Default for ShadingRatePaletteNV {
28038    #[inline]
28039    fn default() -> Self {
28040        Self {
28041            shading_rate_palette_entry_count: u32::default(),
28042            shading_rate_palette_entries: ptr::null(),
28043        }
28044    }
28045}
28046
28047unsafe impl Send for ShadingRatePaletteNV {}
28048unsafe impl Sync for ShadingRatePaletteNV {}
28049
28050/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSharedPresentSurfaceCapabilitiesKHR.html>
28051#[repr(C)]
28052#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28053pub struct SharedPresentSurfaceCapabilitiesKHR {
28054    pub s_type: StructureType,
28055    pub next: *mut c_void,
28056    pub shared_present_supported_usage_flags: ImageUsageFlags,
28057}
28058
28059impl Default for SharedPresentSurfaceCapabilitiesKHR {
28060    #[inline]
28061    fn default() -> Self {
28062        Self {
28063            s_type: StructureType::SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
28064            next: ptr::null_mut(),
28065            shared_present_supported_usage_flags: ImageUsageFlags::default(),
28066        }
28067    }
28068}
28069
28070unsafe impl Send for SharedPresentSurfaceCapabilitiesKHR {}
28071unsafe impl Sync for SharedPresentSurfaceCapabilitiesKHR {}
28072
28073/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseBufferMemoryBindInfo.html>
28074#[repr(C)]
28075#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28076pub struct SparseBufferMemoryBindInfo {
28077    pub buffer: Buffer,
28078    pub bind_count: u32,
28079    pub binds: *const SparseMemoryBind,
28080}
28081
28082impl Default for SparseBufferMemoryBindInfo {
28083    #[inline]
28084    fn default() -> Self {
28085        Self {
28086            buffer: Buffer::default(),
28087            bind_count: u32::default(),
28088            binds: ptr::null(),
28089        }
28090    }
28091}
28092
28093unsafe impl Send for SparseBufferMemoryBindInfo {}
28094unsafe impl Sync for SparseBufferMemoryBindInfo {}
28095
28096/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatProperties.html>
28097#[repr(C)]
28098#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28099pub struct SparseImageFormatProperties {
28100    pub aspect_mask: ImageAspectFlags,
28101    pub image_granularity: Extent3D,
28102    pub flags: SparseImageFormatFlags,
28103}
28104
28105/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatProperties2.html>
28106#[repr(C)]
28107#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28108pub struct SparseImageFormatProperties2 {
28109    pub s_type: StructureType,
28110    pub next: *mut c_void,
28111    pub properties: SparseImageFormatProperties,
28112}
28113
28114impl Default for SparseImageFormatProperties2 {
28115    #[inline]
28116    fn default() -> Self {
28117        Self {
28118            s_type: StructureType::SPARSE_IMAGE_FORMAT_PROPERTIES_2,
28119            next: ptr::null_mut(),
28120            properties: SparseImageFormatProperties::default(),
28121        }
28122    }
28123}
28124
28125unsafe impl Send for SparseImageFormatProperties2 {}
28126unsafe impl Sync for SparseImageFormatProperties2 {}
28127
28128/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryBind.html>
28129#[repr(C)]
28130#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28131pub struct SparseImageMemoryBind {
28132    pub subresource: ImageSubresource,
28133    pub offset: Offset3D,
28134    pub extent: Extent3D,
28135    pub memory: DeviceMemory,
28136    pub memory_offset: DeviceSize,
28137    pub flags: SparseMemoryBindFlags,
28138}
28139
28140/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryBindInfo.html>
28141#[repr(C)]
28142#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28143pub struct SparseImageMemoryBindInfo {
28144    pub image: Image,
28145    pub bind_count: u32,
28146    pub binds: *const SparseImageMemoryBind,
28147}
28148
28149impl Default for SparseImageMemoryBindInfo {
28150    #[inline]
28151    fn default() -> Self {
28152        Self {
28153            image: Image::default(),
28154            bind_count: u32::default(),
28155            binds: ptr::null(),
28156        }
28157    }
28158}
28159
28160unsafe impl Send for SparseImageMemoryBindInfo {}
28161unsafe impl Sync for SparseImageMemoryBindInfo {}
28162
28163/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements.html>
28164#[repr(C)]
28165#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28166pub struct SparseImageMemoryRequirements {
28167    pub format_properties: SparseImageFormatProperties,
28168    pub image_mip_tail_first_lod: u32,
28169    pub image_mip_tail_size: DeviceSize,
28170    pub image_mip_tail_offset: DeviceSize,
28171    pub image_mip_tail_stride: DeviceSize,
28172}
28173
28174/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements2.html>
28175#[repr(C)]
28176#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28177pub struct SparseImageMemoryRequirements2 {
28178    pub s_type: StructureType,
28179    pub next: *mut c_void,
28180    pub memory_requirements: SparseImageMemoryRequirements,
28181}
28182
28183impl Default for SparseImageMemoryRequirements2 {
28184    #[inline]
28185    fn default() -> Self {
28186        Self {
28187            s_type: StructureType::SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
28188            next: ptr::null_mut(),
28189            memory_requirements: SparseImageMemoryRequirements::default(),
28190        }
28191    }
28192}
28193
28194unsafe impl Send for SparseImageMemoryRequirements2 {}
28195unsafe impl Sync for SparseImageMemoryRequirements2 {}
28196
28197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageOpaqueMemoryBindInfo.html>
28198#[repr(C)]
28199#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28200pub struct SparseImageOpaqueMemoryBindInfo {
28201    pub image: Image,
28202    pub bind_count: u32,
28203    pub binds: *const SparseMemoryBind,
28204}
28205
28206impl Default for SparseImageOpaqueMemoryBindInfo {
28207    #[inline]
28208    fn default() -> Self {
28209        Self {
28210            image: Image::default(),
28211            bind_count: u32::default(),
28212            binds: ptr::null(),
28213        }
28214    }
28215}
28216
28217unsafe impl Send for SparseImageOpaqueMemoryBindInfo {}
28218unsafe impl Sync for SparseImageOpaqueMemoryBindInfo {}
28219
28220/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseMemoryBind.html>
28221#[repr(C)]
28222#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28223pub struct SparseMemoryBind {
28224    pub resource_offset: DeviceSize,
28225    pub size: DeviceSize,
28226    pub memory: DeviceMemory,
28227    pub memory_offset: DeviceSize,
28228    pub flags: SparseMemoryBindFlags,
28229}
28230
28231/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSpecializationInfo.html>
28232#[repr(C)]
28233#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28234pub struct SpecializationInfo {
28235    pub map_entry_count: u32,
28236    pub map_entries: *const SpecializationMapEntry,
28237    pub data_size: usize,
28238    pub data: *const c_void,
28239}
28240
28241impl Default for SpecializationInfo {
28242    #[inline]
28243    fn default() -> Self {
28244        Self {
28245            map_entry_count: u32::default(),
28246            map_entries: ptr::null(),
28247            data_size: usize::default(),
28248            data: ptr::null(),
28249        }
28250    }
28251}
28252
28253unsafe impl Send for SpecializationInfo {}
28254unsafe impl Sync for SpecializationInfo {}
28255
28256/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSpecializationMapEntry.html>
28257#[repr(C)]
28258#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28259pub struct SpecializationMapEntry {
28260    pub constant_id: u32,
28261    pub offset: u32,
28262    pub size: usize,
28263}
28264
28265/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStencilOpState.html>
28266#[repr(C)]
28267#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28268pub struct StencilOpState {
28269    pub fail_op: StencilOp,
28270    pub pass_op: StencilOp,
28271    pub depth_fail_op: StencilOp,
28272    pub compare_op: CompareOp,
28273    pub compare_mask: u32,
28274    pub write_mask: u32,
28275    pub reference: u32,
28276}
28277
28278/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStreamDescriptorSurfaceCreateInfoGGP.html>
28279#[repr(C)]
28280#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28281pub struct StreamDescriptorSurfaceCreateInfoGGP {
28282    pub s_type: StructureType,
28283    pub next: *const c_void,
28284    pub flags: StreamDescriptorSurfaceCreateFlagsGGP,
28285    pub stream_descriptor: GgpStreamDescriptor,
28286}
28287
28288impl Default for StreamDescriptorSurfaceCreateInfoGGP {
28289    #[inline]
28290    fn default() -> Self {
28291        Self {
28292            s_type: StructureType::STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP,
28293            next: ptr::null(),
28294            flags: StreamDescriptorSurfaceCreateFlagsGGP::default(),
28295            stream_descriptor: GgpStreamDescriptor::default(),
28296        }
28297    }
28298}
28299
28300unsafe impl Send for StreamDescriptorSurfaceCreateInfoGGP {}
28301unsafe impl Sync for StreamDescriptorSurfaceCreateInfoGGP {}
28302
28303/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStridedDeviceAddressNV.html>
28304#[repr(C)]
28305#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28306pub struct StridedDeviceAddressNV {
28307    pub start_address: DeviceAddress,
28308    pub stride_in_bytes: DeviceSize,
28309}
28310
28311/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStridedDeviceAddressRangeKHR.html>
28312#[repr(C)]
28313#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28314pub struct StridedDeviceAddressRangeKHR {
28315    pub address: DeviceAddress,
28316    pub size: DeviceSize,
28317    pub stride: DeviceSize,
28318}
28319
28320/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStridedDeviceAddressRegionKHR.html>
28321#[repr(C)]
28322#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28323pub struct StridedDeviceAddressRegionKHR {
28324    pub device_address: DeviceAddress,
28325    pub stride: DeviceSize,
28326    pub size: DeviceSize,
28327}
28328
28329/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitInfo.html>
28330#[repr(C)]
28331#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28332pub struct SubmitInfo {
28333    pub s_type: StructureType,
28334    pub next: *const c_void,
28335    pub wait_semaphore_count: u32,
28336    pub wait_semaphores: *const Semaphore,
28337    pub wait_dst_stage_mask: *const PipelineStageFlags,
28338    pub command_buffer_count: u32,
28339    pub command_buffers: *const CommandBuffer,
28340    pub signal_semaphore_count: u32,
28341    pub signal_semaphores: *const Semaphore,
28342}
28343
28344impl Default for SubmitInfo {
28345    #[inline]
28346    fn default() -> Self {
28347        Self {
28348            s_type: StructureType::SUBMIT_INFO,
28349            next: ptr::null(),
28350            wait_semaphore_count: u32::default(),
28351            wait_semaphores: ptr::null(),
28352            wait_dst_stage_mask: ptr::null(),
28353            command_buffer_count: u32::default(),
28354            command_buffers: ptr::null(),
28355            signal_semaphore_count: u32::default(),
28356            signal_semaphores: ptr::null(),
28357        }
28358    }
28359}
28360
28361unsafe impl Send for SubmitInfo {}
28362unsafe impl Sync for SubmitInfo {}
28363
28364/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitInfo2.html>
28365#[repr(C)]
28366#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28367pub struct SubmitInfo2 {
28368    pub s_type: StructureType,
28369    pub next: *const c_void,
28370    pub flags: SubmitFlags,
28371    pub wait_semaphore_info_count: u32,
28372    pub wait_semaphore_infos: *const SemaphoreSubmitInfo,
28373    pub command_buffer_info_count: u32,
28374    pub command_buffer_infos: *const CommandBufferSubmitInfo,
28375    pub signal_semaphore_info_count: u32,
28376    pub signal_semaphore_infos: *const SemaphoreSubmitInfo,
28377}
28378
28379impl Default for SubmitInfo2 {
28380    #[inline]
28381    fn default() -> Self {
28382        Self {
28383            s_type: StructureType::SUBMIT_INFO_2,
28384            next: ptr::null(),
28385            flags: SubmitFlags::default(),
28386            wait_semaphore_info_count: u32::default(),
28387            wait_semaphore_infos: ptr::null(),
28388            command_buffer_info_count: u32::default(),
28389            command_buffer_infos: ptr::null(),
28390            signal_semaphore_info_count: u32::default(),
28391            signal_semaphore_infos: ptr::null(),
28392        }
28393    }
28394}
28395
28396unsafe impl Send for SubmitInfo2 {}
28397unsafe impl Sync for SubmitInfo2 {}
28398
28399/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassBeginInfo.html>
28400#[repr(C)]
28401#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28402pub struct SubpassBeginInfo {
28403    pub s_type: StructureType,
28404    pub next: *const c_void,
28405    pub contents: SubpassContents,
28406}
28407
28408impl Default for SubpassBeginInfo {
28409    #[inline]
28410    fn default() -> Self {
28411        Self {
28412            s_type: StructureType::SUBPASS_BEGIN_INFO,
28413            next: ptr::null(),
28414            contents: SubpassContents::default(),
28415        }
28416    }
28417}
28418
28419unsafe impl Send for SubpassBeginInfo {}
28420unsafe impl Sync for SubpassBeginInfo {}
28421
28422/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDependency.html>
28423#[repr(C)]
28424#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28425pub struct SubpassDependency {
28426    pub src_subpass: u32,
28427    pub dst_subpass: u32,
28428    pub src_stage_mask: PipelineStageFlags,
28429    pub dst_stage_mask: PipelineStageFlags,
28430    pub src_access_mask: AccessFlags,
28431    pub dst_access_mask: AccessFlags,
28432    pub dependency_flags: DependencyFlags,
28433}
28434
28435/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDependency2.html>
28436#[repr(C)]
28437#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28438pub struct SubpassDependency2 {
28439    pub s_type: StructureType,
28440    pub next: *const c_void,
28441    pub src_subpass: u32,
28442    pub dst_subpass: u32,
28443    pub src_stage_mask: PipelineStageFlags,
28444    pub dst_stage_mask: PipelineStageFlags,
28445    pub src_access_mask: AccessFlags,
28446    pub dst_access_mask: AccessFlags,
28447    pub dependency_flags: DependencyFlags,
28448    pub view_offset: i32,
28449}
28450
28451impl Default for SubpassDependency2 {
28452    #[inline]
28453    fn default() -> Self {
28454        Self {
28455            s_type: StructureType::SUBPASS_DEPENDENCY_2,
28456            next: ptr::null(),
28457            src_subpass: u32::default(),
28458            dst_subpass: u32::default(),
28459            src_stage_mask: PipelineStageFlags::default(),
28460            dst_stage_mask: PipelineStageFlags::default(),
28461            src_access_mask: AccessFlags::default(),
28462            dst_access_mask: AccessFlags::default(),
28463            dependency_flags: DependencyFlags::default(),
28464            view_offset: i32::default(),
28465        }
28466    }
28467}
28468
28469unsafe impl Send for SubpassDependency2 {}
28470unsafe impl Sync for SubpassDependency2 {}
28471
28472/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescription.html>
28473#[repr(C)]
28474#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28475pub struct SubpassDescription {
28476    pub flags: SubpassDescriptionFlags,
28477    pub pipeline_bind_point: PipelineBindPoint,
28478    pub input_attachment_count: u32,
28479    pub input_attachments: *const AttachmentReference,
28480    pub color_attachment_count: u32,
28481    pub color_attachments: *const AttachmentReference,
28482    pub resolve_attachments: *const AttachmentReference,
28483    pub depth_stencil_attachment: *const AttachmentReference,
28484    pub preserve_attachment_count: u32,
28485    pub preserve_attachments: *const u32,
28486}
28487
28488impl Default for SubpassDescription {
28489    #[inline]
28490    fn default() -> Self {
28491        Self {
28492            flags: SubpassDescriptionFlags::default(),
28493            pipeline_bind_point: PipelineBindPoint::default(),
28494            input_attachment_count: u32::default(),
28495            input_attachments: ptr::null(),
28496            color_attachment_count: u32::default(),
28497            color_attachments: ptr::null(),
28498            resolve_attachments: ptr::null(),
28499            depth_stencil_attachment: ptr::null(),
28500            preserve_attachment_count: u32::default(),
28501            preserve_attachments: ptr::null(),
28502        }
28503    }
28504}
28505
28506unsafe impl Send for SubpassDescription {}
28507unsafe impl Sync for SubpassDescription {}
28508
28509/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescription2.html>
28510#[repr(C)]
28511#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28512pub struct SubpassDescription2 {
28513    pub s_type: StructureType,
28514    pub next: *const c_void,
28515    pub flags: SubpassDescriptionFlags,
28516    pub pipeline_bind_point: PipelineBindPoint,
28517    pub view_mask: u32,
28518    pub input_attachment_count: u32,
28519    pub input_attachments: *const AttachmentReference2,
28520    pub color_attachment_count: u32,
28521    pub color_attachments: *const AttachmentReference2,
28522    pub resolve_attachments: *const AttachmentReference2,
28523    pub depth_stencil_attachment: *const AttachmentReference2,
28524    pub preserve_attachment_count: u32,
28525    pub preserve_attachments: *const u32,
28526}
28527
28528impl Default for SubpassDescription2 {
28529    #[inline]
28530    fn default() -> Self {
28531        Self {
28532            s_type: StructureType::SUBPASS_DESCRIPTION_2,
28533            next: ptr::null(),
28534            flags: SubpassDescriptionFlags::default(),
28535            pipeline_bind_point: PipelineBindPoint::default(),
28536            view_mask: u32::default(),
28537            input_attachment_count: u32::default(),
28538            input_attachments: ptr::null(),
28539            color_attachment_count: u32::default(),
28540            color_attachments: ptr::null(),
28541            resolve_attachments: ptr::null(),
28542            depth_stencil_attachment: ptr::null(),
28543            preserve_attachment_count: u32::default(),
28544            preserve_attachments: ptr::null(),
28545        }
28546    }
28547}
28548
28549unsafe impl Send for SubpassDescription2 {}
28550unsafe impl Sync for SubpassDescription2 {}
28551
28552/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescriptionDepthStencilResolve.html>
28553#[repr(C)]
28554#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28555pub struct SubpassDescriptionDepthStencilResolve {
28556    pub s_type: StructureType,
28557    pub next: *const c_void,
28558    pub depth_resolve_mode: ResolveModeFlags,
28559    pub stencil_resolve_mode: ResolveModeFlags,
28560    pub depth_stencil_resolve_attachment: *const AttachmentReference2,
28561}
28562
28563impl Default for SubpassDescriptionDepthStencilResolve {
28564    #[inline]
28565    fn default() -> Self {
28566        Self {
28567            s_type: StructureType::SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
28568            next: ptr::null(),
28569            depth_resolve_mode: ResolveModeFlags::default(),
28570            stencil_resolve_mode: ResolveModeFlags::default(),
28571            depth_stencil_resolve_attachment: ptr::null(),
28572        }
28573    }
28574}
28575
28576unsafe impl Send for SubpassDescriptionDepthStencilResolve {}
28577unsafe impl Sync for SubpassDescriptionDepthStencilResolve {}
28578
28579/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassEndInfo.html>
28580#[repr(C)]
28581#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28582pub struct SubpassEndInfo {
28583    pub s_type: StructureType,
28584    pub next: *const c_void,
28585}
28586
28587impl Default for SubpassEndInfo {
28588    #[inline]
28589    fn default() -> Self {
28590        Self {
28591            s_type: StructureType::SUBPASS_END_INFO,
28592            next: ptr::null(),
28593        }
28594    }
28595}
28596
28597unsafe impl Send for SubpassEndInfo {}
28598unsafe impl Sync for SubpassEndInfo {}
28599
28600/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassResolvePerformanceQueryEXT.html>
28601#[repr(C)]
28602#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28603pub struct SubpassResolvePerformanceQueryEXT {
28604    pub s_type: StructureType,
28605    pub next: *mut c_void,
28606    pub optimal: Bool32,
28607}
28608
28609impl Default for SubpassResolvePerformanceQueryEXT {
28610    #[inline]
28611    fn default() -> Self {
28612        Self {
28613            s_type: StructureType::SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT,
28614            next: ptr::null_mut(),
28615            optimal: Bool32::default(),
28616        }
28617    }
28618}
28619
28620unsafe impl Send for SubpassResolvePerformanceQueryEXT {}
28621unsafe impl Sync for SubpassResolvePerformanceQueryEXT {}
28622
28623/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassSampleLocationsEXT.html>
28624#[repr(C)]
28625#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28626pub struct SubpassSampleLocationsEXT {
28627    pub subpass_index: u32,
28628    pub sample_locations_info: SampleLocationsInfoEXT,
28629}
28630
28631/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassShadingPipelineCreateInfoHUAWEI.html>
28632#[repr(C)]
28633#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28634pub struct SubpassShadingPipelineCreateInfoHUAWEI {
28635    pub s_type: StructureType,
28636    pub next: *mut c_void,
28637    pub render_pass: RenderPass,
28638    pub subpass: u32,
28639}
28640
28641impl Default for SubpassShadingPipelineCreateInfoHUAWEI {
28642    #[inline]
28643    fn default() -> Self {
28644        Self {
28645            s_type: StructureType::SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI,
28646            next: ptr::null_mut(),
28647            render_pass: RenderPass::default(),
28648            subpass: u32::default(),
28649        }
28650    }
28651}
28652
28653unsafe impl Send for SubpassShadingPipelineCreateInfoHUAWEI {}
28654unsafe impl Sync for SubpassShadingPipelineCreateInfoHUAWEI {}
28655
28656/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceHostMemcpySize.html>
28657#[repr(C)]
28658#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28659pub struct SubresourceHostMemcpySize {
28660    pub s_type: StructureType,
28661    pub next: *mut c_void,
28662    pub size: DeviceSize,
28663}
28664
28665impl Default for SubresourceHostMemcpySize {
28666    #[inline]
28667    fn default() -> Self {
28668        Self {
28669            s_type: StructureType::SUBRESOURCE_HOST_MEMCPY_SIZE,
28670            next: ptr::null_mut(),
28671            size: DeviceSize::default(),
28672        }
28673    }
28674}
28675
28676unsafe impl Send for SubresourceHostMemcpySize {}
28677unsafe impl Sync for SubresourceHostMemcpySize {}
28678
28679/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout.html>
28680#[repr(C)]
28681#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28682pub struct SubresourceLayout {
28683    pub offset: DeviceSize,
28684    pub size: DeviceSize,
28685    pub row_pitch: DeviceSize,
28686    pub array_pitch: DeviceSize,
28687    pub depth_pitch: DeviceSize,
28688}
28689
28690/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout2.html>
28691#[repr(C)]
28692#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28693pub struct SubresourceLayout2 {
28694    pub s_type: StructureType,
28695    pub next: *mut c_void,
28696    pub subresource_layout: SubresourceLayout,
28697}
28698
28699impl Default for SubresourceLayout2 {
28700    #[inline]
28701    fn default() -> Self {
28702        Self {
28703            s_type: StructureType::SUBRESOURCE_LAYOUT_2,
28704            next: ptr::null_mut(),
28705            subresource_layout: SubresourceLayout::default(),
28706        }
28707    }
28708}
28709
28710unsafe impl Send for SubresourceLayout2 {}
28711unsafe impl Sync for SubresourceLayout2 {}
28712
28713/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilities2EXT.html>
28714#[repr(C)]
28715#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28716pub struct SurfaceCapabilities2EXT {
28717    pub s_type: StructureType,
28718    pub next: *mut c_void,
28719    pub min_image_count: u32,
28720    pub max_image_count: u32,
28721    pub current_extent: Extent2D,
28722    pub min_image_extent: Extent2D,
28723    pub max_image_extent: Extent2D,
28724    pub max_image_array_layers: u32,
28725    pub supported_transforms: SurfaceTransformFlagsKHR,
28726    pub current_transform: SurfaceTransformFlagsKHR,
28727    pub supported_composite_alpha: CompositeAlphaFlagsKHR,
28728    pub supported_usage_flags: ImageUsageFlags,
28729    pub supported_surface_counters: SurfaceCounterFlagsEXT,
28730}
28731
28732impl Default for SurfaceCapabilities2EXT {
28733    #[inline]
28734    fn default() -> Self {
28735        Self {
28736            s_type: StructureType::SURFACE_CAPABILITIES_2_EXT,
28737            next: ptr::null_mut(),
28738            min_image_count: u32::default(),
28739            max_image_count: u32::default(),
28740            current_extent: Extent2D::default(),
28741            min_image_extent: Extent2D::default(),
28742            max_image_extent: Extent2D::default(),
28743            max_image_array_layers: u32::default(),
28744            supported_transforms: SurfaceTransformFlagsKHR::default(),
28745            current_transform: SurfaceTransformFlagsKHR::default(),
28746            supported_composite_alpha: CompositeAlphaFlagsKHR::default(),
28747            supported_usage_flags: ImageUsageFlags::default(),
28748            supported_surface_counters: SurfaceCounterFlagsEXT::default(),
28749        }
28750    }
28751}
28752
28753unsafe impl Send for SurfaceCapabilities2EXT {}
28754unsafe impl Sync for SurfaceCapabilities2EXT {}
28755
28756/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilities2KHR.html>
28757#[repr(C)]
28758#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28759pub struct SurfaceCapabilities2KHR {
28760    pub s_type: StructureType,
28761    pub next: *mut c_void,
28762    pub surface_capabilities: SurfaceCapabilitiesKHR,
28763}
28764
28765impl Default for SurfaceCapabilities2KHR {
28766    #[inline]
28767    fn default() -> Self {
28768        Self {
28769            s_type: StructureType::SURFACE_CAPABILITIES_2_KHR,
28770            next: ptr::null_mut(),
28771            surface_capabilities: SurfaceCapabilitiesKHR::default(),
28772        }
28773    }
28774}
28775
28776unsafe impl Send for SurfaceCapabilities2KHR {}
28777unsafe impl Sync for SurfaceCapabilities2KHR {}
28778
28779/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesFullScreenExclusiveEXT.html>
28780#[repr(C)]
28781#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28782pub struct SurfaceCapabilitiesFullScreenExclusiveEXT {
28783    pub s_type: StructureType,
28784    pub next: *mut c_void,
28785    pub full_screen_exclusive_supported: Bool32,
28786}
28787
28788impl Default for SurfaceCapabilitiesFullScreenExclusiveEXT {
28789    #[inline]
28790    fn default() -> Self {
28791        Self {
28792            s_type: StructureType::SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT,
28793            next: ptr::null_mut(),
28794            full_screen_exclusive_supported: Bool32::default(),
28795        }
28796    }
28797}
28798
28799unsafe impl Send for SurfaceCapabilitiesFullScreenExclusiveEXT {}
28800unsafe impl Sync for SurfaceCapabilitiesFullScreenExclusiveEXT {}
28801
28802/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesKHR.html>
28803#[repr(C)]
28804#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28805pub struct SurfaceCapabilitiesKHR {
28806    pub min_image_count: u32,
28807    pub max_image_count: u32,
28808    pub current_extent: Extent2D,
28809    pub min_image_extent: Extent2D,
28810    pub max_image_extent: Extent2D,
28811    pub max_image_array_layers: u32,
28812    pub supported_transforms: SurfaceTransformFlagsKHR,
28813    pub current_transform: SurfaceTransformFlagsKHR,
28814    pub supported_composite_alpha: CompositeAlphaFlagsKHR,
28815    pub supported_usage_flags: ImageUsageFlags,
28816}
28817
28818/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentBarrierNV.html>
28819#[repr(C)]
28820#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28821pub struct SurfaceCapabilitiesPresentBarrierNV {
28822    pub s_type: StructureType,
28823    pub next: *mut c_void,
28824    pub present_barrier_supported: Bool32,
28825}
28826
28827impl Default for SurfaceCapabilitiesPresentBarrierNV {
28828    #[inline]
28829    fn default() -> Self {
28830        Self {
28831            s_type: StructureType::SURFACE_CAPABILITIES_PRESENT_BARRIER_NV,
28832            next: ptr::null_mut(),
28833            present_barrier_supported: Bool32::default(),
28834        }
28835    }
28836}
28837
28838unsafe impl Send for SurfaceCapabilitiesPresentBarrierNV {}
28839unsafe impl Sync for SurfaceCapabilitiesPresentBarrierNV {}
28840
28841/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentId2KHR.html>
28842#[repr(C)]
28843#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28844pub struct SurfaceCapabilitiesPresentId2KHR {
28845    pub s_type: StructureType,
28846    pub next: *mut c_void,
28847    pub present_id2_supported: Bool32,
28848}
28849
28850impl Default for SurfaceCapabilitiesPresentId2KHR {
28851    #[inline]
28852    fn default() -> Self {
28853        Self {
28854            s_type: StructureType::SURFACE_CAPABILITIES_PRESENT_ID_2_KHR,
28855            next: ptr::null_mut(),
28856            present_id2_supported: Bool32::default(),
28857        }
28858    }
28859}
28860
28861unsafe impl Send for SurfaceCapabilitiesPresentId2KHR {}
28862unsafe impl Sync for SurfaceCapabilitiesPresentId2KHR {}
28863
28864/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentWait2KHR.html>
28865#[repr(C)]
28866#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28867pub struct SurfaceCapabilitiesPresentWait2KHR {
28868    pub s_type: StructureType,
28869    pub next: *mut c_void,
28870    pub present_wait2_supported: Bool32,
28871}
28872
28873impl Default for SurfaceCapabilitiesPresentWait2KHR {
28874    #[inline]
28875    fn default() -> Self {
28876        Self {
28877            s_type: StructureType::SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR,
28878            next: ptr::null_mut(),
28879            present_wait2_supported: Bool32::default(),
28880        }
28881    }
28882}
28883
28884unsafe impl Send for SurfaceCapabilitiesPresentWait2KHR {}
28885unsafe impl Sync for SurfaceCapabilitiesPresentWait2KHR {}
28886
28887/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCreateInfoOHOS.html>
28888#[repr(C)]
28889#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28890pub struct SurfaceCreateInfoOHOS {
28891    pub s_type: StructureType,
28892    pub next: *const c_void,
28893    pub flags: SurfaceCreateFlagsOHOS,
28894    pub window: *mut OHNativeWindow,
28895}
28896
28897impl Default for SurfaceCreateInfoOHOS {
28898    #[inline]
28899    fn default() -> Self {
28900        Self {
28901            s_type: StructureType::SURFACE_CREATE_INFO_OHOS,
28902            next: ptr::null(),
28903            flags: SurfaceCreateFlagsOHOS::default(),
28904            window: ptr::null_mut(),
28905        }
28906    }
28907}
28908
28909unsafe impl Send for SurfaceCreateInfoOHOS {}
28910unsafe impl Sync for SurfaceCreateInfoOHOS {}
28911
28912/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFormat2KHR.html>
28913#[repr(C)]
28914#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28915pub struct SurfaceFormat2KHR {
28916    pub s_type: StructureType,
28917    pub next: *mut c_void,
28918    pub surface_format: SurfaceFormatKHR,
28919}
28920
28921impl Default for SurfaceFormat2KHR {
28922    #[inline]
28923    fn default() -> Self {
28924        Self {
28925            s_type: StructureType::SURFACE_FORMAT_2_KHR,
28926            next: ptr::null_mut(),
28927            surface_format: SurfaceFormatKHR::default(),
28928        }
28929    }
28930}
28931
28932unsafe impl Send for SurfaceFormat2KHR {}
28933unsafe impl Sync for SurfaceFormat2KHR {}
28934
28935/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFormatKHR.html>
28936#[repr(C)]
28937#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28938pub struct SurfaceFormatKHR {
28939    pub format: Format,
28940    pub color_space: ColorSpaceKHR,
28941}
28942
28943/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFullScreenExclusiveInfoEXT.html>
28944#[repr(C)]
28945#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28946pub struct SurfaceFullScreenExclusiveInfoEXT {
28947    pub s_type: StructureType,
28948    pub next: *mut c_void,
28949    pub full_screen_exclusive: FullScreenExclusiveEXT,
28950}
28951
28952impl Default for SurfaceFullScreenExclusiveInfoEXT {
28953    #[inline]
28954    fn default() -> Self {
28955        Self {
28956            s_type: StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT,
28957            next: ptr::null_mut(),
28958            full_screen_exclusive: FullScreenExclusiveEXT::default(),
28959        }
28960    }
28961}
28962
28963unsafe impl Send for SurfaceFullScreenExclusiveInfoEXT {}
28964unsafe impl Sync for SurfaceFullScreenExclusiveInfoEXT {}
28965
28966/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFullScreenExclusiveWin32InfoEXT.html>
28967#[repr(C)]
28968#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28969pub struct SurfaceFullScreenExclusiveWin32InfoEXT {
28970    pub s_type: StructureType,
28971    pub next: *const c_void,
28972    pub hmonitor: HMONITOR,
28973}
28974
28975impl Default for SurfaceFullScreenExclusiveWin32InfoEXT {
28976    #[inline]
28977    fn default() -> Self {
28978        Self {
28979            s_type: StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT,
28980            next: ptr::null(),
28981            hmonitor: ptr::null_mut(),
28982        }
28983    }
28984}
28985
28986unsafe impl Send for SurfaceFullScreenExclusiveWin32InfoEXT {}
28987unsafe impl Sync for SurfaceFullScreenExclusiveWin32InfoEXT {}
28988
28989/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeCompatibilityKHR.html>
28990#[repr(C)]
28991#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28992pub struct SurfacePresentModeCompatibilityKHR {
28993    pub s_type: StructureType,
28994    pub next: *mut c_void,
28995    pub present_mode_count: u32,
28996    pub present_modes: *mut PresentModeKHR,
28997}
28998
28999impl Default for SurfacePresentModeCompatibilityKHR {
29000    #[inline]
29001    fn default() -> Self {
29002        Self {
29003            s_type: StructureType::SURFACE_PRESENT_MODE_COMPATIBILITY_KHR,
29004            next: ptr::null_mut(),
29005            present_mode_count: u32::default(),
29006            present_modes: ptr::null_mut(),
29007        }
29008    }
29009}
29010
29011unsafe impl Send for SurfacePresentModeCompatibilityKHR {}
29012unsafe impl Sync for SurfacePresentModeCompatibilityKHR {}
29013
29014/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeKHR.html>
29015#[repr(C)]
29016#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29017pub struct SurfacePresentModeKHR {
29018    pub s_type: StructureType,
29019    pub next: *mut c_void,
29020    pub present_mode: PresentModeKHR,
29021}
29022
29023impl Default for SurfacePresentModeKHR {
29024    #[inline]
29025    fn default() -> Self {
29026        Self {
29027            s_type: StructureType::SURFACE_PRESENT_MODE_KHR,
29028            next: ptr::null_mut(),
29029            present_mode: PresentModeKHR::default(),
29030        }
29031    }
29032}
29033
29034unsafe impl Send for SurfacePresentModeKHR {}
29035unsafe impl Sync for SurfacePresentModeKHR {}
29036
29037/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentScalingCapabilitiesKHR.html>
29038#[repr(C)]
29039#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29040pub struct SurfacePresentScalingCapabilitiesKHR {
29041    pub s_type: StructureType,
29042    pub next: *mut c_void,
29043    pub supported_present_scaling: PresentScalingFlagsKHR,
29044    pub supported_present_gravity_x: PresentGravityFlagsKHR,
29045    pub supported_present_gravity_y: PresentGravityFlagsKHR,
29046    pub min_scaled_image_extent: Extent2D,
29047    pub max_scaled_image_extent: Extent2D,
29048}
29049
29050impl Default for SurfacePresentScalingCapabilitiesKHR {
29051    #[inline]
29052    fn default() -> Self {
29053        Self {
29054            s_type: StructureType::SURFACE_PRESENT_SCALING_CAPABILITIES_KHR,
29055            next: ptr::null_mut(),
29056            supported_present_scaling: PresentScalingFlagsKHR::default(),
29057            supported_present_gravity_x: PresentGravityFlagsKHR::default(),
29058            supported_present_gravity_y: PresentGravityFlagsKHR::default(),
29059            min_scaled_image_extent: Extent2D::default(),
29060            max_scaled_image_extent: Extent2D::default(),
29061        }
29062    }
29063}
29064
29065unsafe impl Send for SurfacePresentScalingCapabilitiesKHR {}
29066unsafe impl Sync for SurfacePresentScalingCapabilitiesKHR {}
29067
29068/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceProtectedCapabilitiesKHR.html>
29069#[repr(C)]
29070#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29071pub struct SurfaceProtectedCapabilitiesKHR {
29072    pub s_type: StructureType,
29073    pub next: *const c_void,
29074    pub supports_protected: Bool32,
29075}
29076
29077impl Default for SurfaceProtectedCapabilitiesKHR {
29078    #[inline]
29079    fn default() -> Self {
29080        Self {
29081            s_type: StructureType::SURFACE_PROTECTED_CAPABILITIES_KHR,
29082            next: ptr::null(),
29083            supports_protected: Bool32::default(),
29084        }
29085    }
29086}
29087
29088unsafe impl Send for SurfaceProtectedCapabilitiesKHR {}
29089unsafe impl Sync for SurfaceProtectedCapabilitiesKHR {}
29090
29091/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainCounterCreateInfoEXT.html>
29092#[repr(C)]
29093#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29094pub struct SwapchainCounterCreateInfoEXT {
29095    pub s_type: StructureType,
29096    pub next: *const c_void,
29097    pub surface_counters: SurfaceCounterFlagsEXT,
29098}
29099
29100impl Default for SwapchainCounterCreateInfoEXT {
29101    #[inline]
29102    fn default() -> Self {
29103        Self {
29104            s_type: StructureType::SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
29105            next: ptr::null(),
29106            surface_counters: SurfaceCounterFlagsEXT::default(),
29107        }
29108    }
29109}
29110
29111unsafe impl Send for SwapchainCounterCreateInfoEXT {}
29112unsafe impl Sync for SwapchainCounterCreateInfoEXT {}
29113
29114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainCreateInfoKHR.html>
29115#[repr(C)]
29116#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29117pub struct SwapchainCreateInfoKHR {
29118    pub s_type: StructureType,
29119    pub next: *const c_void,
29120    pub flags: SwapchainCreateFlagsKHR,
29121    pub surface: SurfaceKHR,
29122    pub min_image_count: u32,
29123    pub image_format: Format,
29124    pub image_color_space: ColorSpaceKHR,
29125    pub image_extent: Extent2D,
29126    pub image_array_layers: u32,
29127    pub image_usage: ImageUsageFlags,
29128    pub image_sharing_mode: SharingMode,
29129    pub queue_family_index_count: u32,
29130    pub queue_family_indices: *const u32,
29131    pub pre_transform: SurfaceTransformFlagsKHR,
29132    pub composite_alpha: CompositeAlphaFlagsKHR,
29133    pub present_mode: PresentModeKHR,
29134    pub clipped: Bool32,
29135    pub old_swapchain: SwapchainKHR,
29136}
29137
29138impl Default for SwapchainCreateInfoKHR {
29139    #[inline]
29140    fn default() -> Self {
29141        Self {
29142            s_type: StructureType::SWAPCHAIN_CREATE_INFO_KHR,
29143            next: ptr::null(),
29144            flags: SwapchainCreateFlagsKHR::default(),
29145            surface: SurfaceKHR::default(),
29146            min_image_count: u32::default(),
29147            image_format: Format::default(),
29148            image_color_space: ColorSpaceKHR::default(),
29149            image_extent: Extent2D::default(),
29150            image_array_layers: u32::default(),
29151            image_usage: ImageUsageFlags::default(),
29152            image_sharing_mode: SharingMode::default(),
29153            queue_family_index_count: u32::default(),
29154            queue_family_indices: ptr::null(),
29155            pre_transform: SurfaceTransformFlagsKHR::default(),
29156            composite_alpha: CompositeAlphaFlagsKHR::default(),
29157            present_mode: PresentModeKHR::default(),
29158            clipped: Bool32::default(),
29159            old_swapchain: SwapchainKHR::default(),
29160        }
29161    }
29162}
29163
29164unsafe impl Send for SwapchainCreateInfoKHR {}
29165unsafe impl Sync for SwapchainCreateInfoKHR {}
29166
29167/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainDisplayNativeHdrCreateInfoAMD.html>
29168#[repr(C)]
29169#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29170pub struct SwapchainDisplayNativeHdrCreateInfoAMD {
29171    pub s_type: StructureType,
29172    pub next: *const c_void,
29173    pub local_dimming_enable: Bool32,
29174}
29175
29176impl Default for SwapchainDisplayNativeHdrCreateInfoAMD {
29177    #[inline]
29178    fn default() -> Self {
29179        Self {
29180            s_type: StructureType::SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD,
29181            next: ptr::null(),
29182            local_dimming_enable: Bool32::default(),
29183        }
29184    }
29185}
29186
29187unsafe impl Send for SwapchainDisplayNativeHdrCreateInfoAMD {}
29188unsafe impl Sync for SwapchainDisplayNativeHdrCreateInfoAMD {}
29189
29190/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainImageCreateInfoOHOS.html>
29191#[repr(C)]
29192#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29193pub struct SwapchainImageCreateInfoOHOS {
29194    pub s_type: StructureType,
29195    pub next: *const c_void,
29196    pub usage: SwapchainImageUsageFlagsOHOS,
29197}
29198
29199impl Default for SwapchainImageCreateInfoOHOS {
29200    #[inline]
29201    fn default() -> Self {
29202        Self {
29203            s_type: StructureType::SWAPCHAIN_IMAGE_CREATE_INFO_OHOS,
29204            next: ptr::null(),
29205            usage: SwapchainImageUsageFlagsOHOS::default(),
29206        }
29207    }
29208}
29209
29210unsafe impl Send for SwapchainImageCreateInfoOHOS {}
29211unsafe impl Sync for SwapchainImageCreateInfoOHOS {}
29212
29213/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainLatencyCreateInfoNV.html>
29214#[repr(C)]
29215#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29216pub struct SwapchainLatencyCreateInfoNV {
29217    pub s_type: StructureType,
29218    pub next: *const c_void,
29219    pub latency_mode_enable: Bool32,
29220}
29221
29222impl Default for SwapchainLatencyCreateInfoNV {
29223    #[inline]
29224    fn default() -> Self {
29225        Self {
29226            s_type: StructureType::SWAPCHAIN_LATENCY_CREATE_INFO_NV,
29227            next: ptr::null(),
29228            latency_mode_enable: Bool32::default(),
29229        }
29230    }
29231}
29232
29233unsafe impl Send for SwapchainLatencyCreateInfoNV {}
29234unsafe impl Sync for SwapchainLatencyCreateInfoNV {}
29235
29236/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentBarrierCreateInfoNV.html>
29237#[repr(C)]
29238#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29239pub struct SwapchainPresentBarrierCreateInfoNV {
29240    pub s_type: StructureType,
29241    pub next: *mut c_void,
29242    pub present_barrier_enable: Bool32,
29243}
29244
29245impl Default for SwapchainPresentBarrierCreateInfoNV {
29246    #[inline]
29247    fn default() -> Self {
29248        Self {
29249            s_type: StructureType::SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV,
29250            next: ptr::null_mut(),
29251            present_barrier_enable: Bool32::default(),
29252        }
29253    }
29254}
29255
29256unsafe impl Send for SwapchainPresentBarrierCreateInfoNV {}
29257unsafe impl Sync for SwapchainPresentBarrierCreateInfoNV {}
29258
29259/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentFenceInfoKHR.html>
29260#[repr(C)]
29261#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29262pub struct SwapchainPresentFenceInfoKHR {
29263    pub s_type: StructureType,
29264    pub next: *const c_void,
29265    pub swapchain_count: u32,
29266    pub fences: *const Fence,
29267}
29268
29269impl Default for SwapchainPresentFenceInfoKHR {
29270    #[inline]
29271    fn default() -> Self {
29272        Self {
29273            s_type: StructureType::SWAPCHAIN_PRESENT_FENCE_INFO_KHR,
29274            next: ptr::null(),
29275            swapchain_count: u32::default(),
29276            fences: ptr::null(),
29277        }
29278    }
29279}
29280
29281unsafe impl Send for SwapchainPresentFenceInfoKHR {}
29282unsafe impl Sync for SwapchainPresentFenceInfoKHR {}
29283
29284/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModeInfoKHR.html>
29285#[repr(C)]
29286#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29287pub struct SwapchainPresentModeInfoKHR {
29288    pub s_type: StructureType,
29289    pub next: *const c_void,
29290    pub swapchain_count: u32,
29291    pub present_modes: *const PresentModeKHR,
29292}
29293
29294impl Default for SwapchainPresentModeInfoKHR {
29295    #[inline]
29296    fn default() -> Self {
29297        Self {
29298            s_type: StructureType::SWAPCHAIN_PRESENT_MODE_INFO_KHR,
29299            next: ptr::null(),
29300            swapchain_count: u32::default(),
29301            present_modes: ptr::null(),
29302        }
29303    }
29304}
29305
29306unsafe impl Send for SwapchainPresentModeInfoKHR {}
29307unsafe impl Sync for SwapchainPresentModeInfoKHR {}
29308
29309/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModesCreateInfoKHR.html>
29310#[repr(C)]
29311#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29312pub struct SwapchainPresentModesCreateInfoKHR {
29313    pub s_type: StructureType,
29314    pub next: *const c_void,
29315    pub present_mode_count: u32,
29316    pub present_modes: *const PresentModeKHR,
29317}
29318
29319impl Default for SwapchainPresentModesCreateInfoKHR {
29320    #[inline]
29321    fn default() -> Self {
29322        Self {
29323            s_type: StructureType::SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR,
29324            next: ptr::null(),
29325            present_mode_count: u32::default(),
29326            present_modes: ptr::null(),
29327        }
29328    }
29329}
29330
29331unsafe impl Send for SwapchainPresentModesCreateInfoKHR {}
29332unsafe impl Sync for SwapchainPresentModesCreateInfoKHR {}
29333
29334/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentScalingCreateInfoKHR.html>
29335#[repr(C)]
29336#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29337pub struct SwapchainPresentScalingCreateInfoKHR {
29338    pub s_type: StructureType,
29339    pub next: *const c_void,
29340    pub scaling_behavior: PresentScalingFlagsKHR,
29341    pub present_gravity_x: PresentGravityFlagsKHR,
29342    pub present_gravity_y: PresentGravityFlagsKHR,
29343}
29344
29345impl Default for SwapchainPresentScalingCreateInfoKHR {
29346    #[inline]
29347    fn default() -> Self {
29348        Self {
29349            s_type: StructureType::SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR,
29350            next: ptr::null(),
29351            scaling_behavior: PresentScalingFlagsKHR::default(),
29352            present_gravity_x: PresentGravityFlagsKHR::default(),
29353            present_gravity_y: PresentGravityFlagsKHR::default(),
29354        }
29355    }
29356}
29357
29358unsafe impl Send for SwapchainPresentScalingCreateInfoKHR {}
29359unsafe impl Sync for SwapchainPresentScalingCreateInfoKHR {}
29360
29361/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSysmemColorSpaceFUCHSIA.html>
29362#[repr(C)]
29363#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29364pub struct SysmemColorSpaceFUCHSIA {
29365    pub s_type: StructureType,
29366    pub next: *const c_void,
29367    pub color_space: u32,
29368}
29369
29370impl Default for SysmemColorSpaceFUCHSIA {
29371    #[inline]
29372    fn default() -> Self {
29373        Self {
29374            s_type: StructureType::SYSMEM_COLOR_SPACE_FUCHSIA,
29375            next: ptr::null(),
29376            color_space: u32::default(),
29377        }
29378    }
29379}
29380
29381unsafe impl Send for SysmemColorSpaceFUCHSIA {}
29382unsafe impl Sync for SysmemColorSpaceFUCHSIA {}
29383
29384/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorCaptureDescriptorDataInfoARM.html>
29385#[repr(C)]
29386#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29387pub struct TensorCaptureDescriptorDataInfoARM {
29388    pub s_type: StructureType,
29389    pub next: *const c_void,
29390    pub tensor: TensorARM,
29391}
29392
29393impl Default for TensorCaptureDescriptorDataInfoARM {
29394    #[inline]
29395    fn default() -> Self {
29396        Self {
29397            s_type: StructureType::TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM,
29398            next: ptr::null(),
29399            tensor: TensorARM::default(),
29400        }
29401    }
29402}
29403
29404unsafe impl Send for TensorCaptureDescriptorDataInfoARM {}
29405unsafe impl Sync for TensorCaptureDescriptorDataInfoARM {}
29406
29407/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorCopyARM.html>
29408#[repr(C)]
29409#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29410pub struct TensorCopyARM {
29411    pub s_type: StructureType,
29412    pub next: *const c_void,
29413    pub dimension_count: u32,
29414    pub src_offset: *const u64,
29415    pub dst_offset: *const u64,
29416    pub extent: *const u64,
29417}
29418
29419impl Default for TensorCopyARM {
29420    #[inline]
29421    fn default() -> Self {
29422        Self {
29423            s_type: StructureType::TENSOR_COPY_ARM,
29424            next: ptr::null(),
29425            dimension_count: u32::default(),
29426            src_offset: ptr::null(),
29427            dst_offset: ptr::null(),
29428            extent: ptr::null(),
29429        }
29430    }
29431}
29432
29433unsafe impl Send for TensorCopyARM {}
29434unsafe impl Sync for TensorCopyARM {}
29435
29436/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorCreateInfoARM.html>
29437#[repr(C)]
29438#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29439pub struct TensorCreateInfoARM {
29440    pub s_type: StructureType,
29441    pub next: *const c_void,
29442    pub flags: TensorCreateFlagsARM,
29443    pub description: *const TensorDescriptionARM,
29444    pub sharing_mode: SharingMode,
29445    pub queue_family_index_count: u32,
29446    pub queue_family_indices: *const u32,
29447}
29448
29449impl Default for TensorCreateInfoARM {
29450    #[inline]
29451    fn default() -> Self {
29452        Self {
29453            s_type: StructureType::TENSOR_CREATE_INFO_ARM,
29454            next: ptr::null(),
29455            flags: TensorCreateFlagsARM::default(),
29456            description: ptr::null(),
29457            sharing_mode: SharingMode::default(),
29458            queue_family_index_count: u32::default(),
29459            queue_family_indices: ptr::null(),
29460        }
29461    }
29462}
29463
29464unsafe impl Send for TensorCreateInfoARM {}
29465unsafe impl Sync for TensorCreateInfoARM {}
29466
29467/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorDependencyInfoARM.html>
29468#[repr(C)]
29469#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29470pub struct TensorDependencyInfoARM {
29471    pub s_type: StructureType,
29472    pub next: *const c_void,
29473    pub tensor_memory_barrier_count: u32,
29474    pub tensor_memory_barriers: *const TensorMemoryBarrierARM,
29475}
29476
29477impl Default for TensorDependencyInfoARM {
29478    #[inline]
29479    fn default() -> Self {
29480        Self {
29481            s_type: StructureType::TENSOR_DEPENDENCY_INFO_ARM,
29482            next: ptr::null(),
29483            tensor_memory_barrier_count: u32::default(),
29484            tensor_memory_barriers: ptr::null(),
29485        }
29486    }
29487}
29488
29489unsafe impl Send for TensorDependencyInfoARM {}
29490unsafe impl Sync for TensorDependencyInfoARM {}
29491
29492/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorDescriptionARM.html>
29493#[repr(C)]
29494#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29495pub struct TensorDescriptionARM {
29496    pub s_type: StructureType,
29497    pub next: *const c_void,
29498    pub tiling: TensorTilingARM,
29499    pub format: Format,
29500    pub dimension_count: u32,
29501    pub dimensions: *const i64,
29502    pub strides: *const i64,
29503    pub usage: TensorUsageFlagsARM,
29504}
29505
29506impl Default for TensorDescriptionARM {
29507    #[inline]
29508    fn default() -> Self {
29509        Self {
29510            s_type: StructureType::TENSOR_DESCRIPTION_ARM,
29511            next: ptr::null(),
29512            tiling: TensorTilingARM::default(),
29513            format: Format::default(),
29514            dimension_count: u32::default(),
29515            dimensions: ptr::null(),
29516            strides: ptr::null(),
29517            usage: TensorUsageFlagsARM::default(),
29518        }
29519    }
29520}
29521
29522unsafe impl Send for TensorDescriptionARM {}
29523unsafe impl Sync for TensorDescriptionARM {}
29524
29525/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorFormatPropertiesARM.html>
29526#[repr(C)]
29527#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29528pub struct TensorFormatPropertiesARM {
29529    pub s_type: StructureType,
29530    pub next: *const c_void,
29531    pub optimal_tiling_tensor_features: FormatFeatureFlags2,
29532    pub linear_tiling_tensor_features: FormatFeatureFlags2,
29533}
29534
29535impl Default for TensorFormatPropertiesARM {
29536    #[inline]
29537    fn default() -> Self {
29538        Self {
29539            s_type: StructureType::TENSOR_FORMAT_PROPERTIES_ARM,
29540            next: ptr::null(),
29541            optimal_tiling_tensor_features: FormatFeatureFlags2::default(),
29542            linear_tiling_tensor_features: FormatFeatureFlags2::default(),
29543        }
29544    }
29545}
29546
29547unsafe impl Send for TensorFormatPropertiesARM {}
29548unsafe impl Sync for TensorFormatPropertiesARM {}
29549
29550/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorMemoryBarrierARM.html>
29551#[repr(C)]
29552#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29553pub struct TensorMemoryBarrierARM {
29554    pub s_type: StructureType,
29555    pub next: *const c_void,
29556    pub src_stage_mask: PipelineStageFlags2,
29557    pub src_access_mask: AccessFlags2,
29558    pub dst_stage_mask: PipelineStageFlags2,
29559    pub dst_access_mask: AccessFlags2,
29560    pub src_queue_family_index: u32,
29561    pub dst_queue_family_index: u32,
29562    pub tensor: TensorARM,
29563}
29564
29565impl Default for TensorMemoryBarrierARM {
29566    #[inline]
29567    fn default() -> Self {
29568        Self {
29569            s_type: StructureType::TENSOR_MEMORY_BARRIER_ARM,
29570            next: ptr::null(),
29571            src_stage_mask: PipelineStageFlags2::default(),
29572            src_access_mask: AccessFlags2::default(),
29573            dst_stage_mask: PipelineStageFlags2::default(),
29574            dst_access_mask: AccessFlags2::default(),
29575            src_queue_family_index: u32::default(),
29576            dst_queue_family_index: u32::default(),
29577            tensor: TensorARM::default(),
29578        }
29579    }
29580}
29581
29582unsafe impl Send for TensorMemoryBarrierARM {}
29583unsafe impl Sync for TensorMemoryBarrierARM {}
29584
29585/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorMemoryRequirementsInfoARM.html>
29586#[repr(C)]
29587#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29588pub struct TensorMemoryRequirementsInfoARM {
29589    pub s_type: StructureType,
29590    pub next: *const c_void,
29591    pub tensor: TensorARM,
29592}
29593
29594impl Default for TensorMemoryRequirementsInfoARM {
29595    #[inline]
29596    fn default() -> Self {
29597        Self {
29598            s_type: StructureType::TENSOR_MEMORY_REQUIREMENTS_INFO_ARM,
29599            next: ptr::null(),
29600            tensor: TensorARM::default(),
29601        }
29602    }
29603}
29604
29605unsafe impl Send for TensorMemoryRequirementsInfoARM {}
29606unsafe impl Sync for TensorMemoryRequirementsInfoARM {}
29607
29608/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorViewCaptureDescriptorDataInfoARM.html>
29609#[repr(C)]
29610#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29611pub struct TensorViewCaptureDescriptorDataInfoARM {
29612    pub s_type: StructureType,
29613    pub next: *const c_void,
29614    pub tensor_view: TensorViewARM,
29615}
29616
29617impl Default for TensorViewCaptureDescriptorDataInfoARM {
29618    #[inline]
29619    fn default() -> Self {
29620        Self {
29621            s_type: StructureType::TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM,
29622            next: ptr::null(),
29623            tensor_view: TensorViewARM::default(),
29624        }
29625    }
29626}
29627
29628unsafe impl Send for TensorViewCaptureDescriptorDataInfoARM {}
29629unsafe impl Sync for TensorViewCaptureDescriptorDataInfoARM {}
29630
29631/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorViewCreateInfoARM.html>
29632#[repr(C)]
29633#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29634pub struct TensorViewCreateInfoARM {
29635    pub s_type: StructureType,
29636    pub next: *const c_void,
29637    pub flags: TensorViewCreateFlagsARM,
29638    pub tensor: TensorARM,
29639    pub format: Format,
29640}
29641
29642impl Default for TensorViewCreateInfoARM {
29643    #[inline]
29644    fn default() -> Self {
29645        Self {
29646            s_type: StructureType::TENSOR_VIEW_CREATE_INFO_ARM,
29647            next: ptr::null(),
29648            flags: TensorViewCreateFlagsARM::default(),
29649            tensor: TensorARM::default(),
29650            format: Format::default(),
29651        }
29652    }
29653}
29654
29655unsafe impl Send for TensorViewCreateInfoARM {}
29656unsafe impl Sync for TensorViewCreateInfoARM {}
29657
29658/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTextureLODGatherFormatPropertiesAMD.html>
29659#[repr(C)]
29660#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29661pub struct TextureLODGatherFormatPropertiesAMD {
29662    pub s_type: StructureType,
29663    pub next: *mut c_void,
29664    pub supports_texture_gather_lod_bias_amd: Bool32,
29665}
29666
29667impl Default for TextureLODGatherFormatPropertiesAMD {
29668    #[inline]
29669    fn default() -> Self {
29670        Self {
29671            s_type: StructureType::TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
29672            next: ptr::null_mut(),
29673            supports_texture_gather_lod_bias_amd: Bool32::default(),
29674        }
29675    }
29676}
29677
29678unsafe impl Send for TextureLODGatherFormatPropertiesAMD {}
29679unsafe impl Sync for TextureLODGatherFormatPropertiesAMD {}
29680
29681/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTileMemoryBindInfoQCOM.html>
29682#[repr(C)]
29683#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29684pub struct TileMemoryBindInfoQCOM {
29685    pub s_type: StructureType,
29686    pub next: *const c_void,
29687    pub memory: DeviceMemory,
29688}
29689
29690impl Default for TileMemoryBindInfoQCOM {
29691    #[inline]
29692    fn default() -> Self {
29693        Self {
29694            s_type: StructureType::TILE_MEMORY_BIND_INFO_QCOM,
29695            next: ptr::null(),
29696            memory: DeviceMemory::default(),
29697        }
29698    }
29699}
29700
29701unsafe impl Send for TileMemoryBindInfoQCOM {}
29702unsafe impl Sync for TileMemoryBindInfoQCOM {}
29703
29704/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTileMemoryRequirementsQCOM.html>
29705#[repr(C)]
29706#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29707pub struct TileMemoryRequirementsQCOM {
29708    pub s_type: StructureType,
29709    pub next: *mut c_void,
29710    pub size: DeviceSize,
29711    pub alignment: DeviceSize,
29712}
29713
29714impl Default for TileMemoryRequirementsQCOM {
29715    #[inline]
29716    fn default() -> Self {
29717        Self {
29718            s_type: StructureType::TILE_MEMORY_REQUIREMENTS_QCOM,
29719            next: ptr::null_mut(),
29720            size: DeviceSize::default(),
29721            alignment: DeviceSize::default(),
29722        }
29723    }
29724}
29725
29726unsafe impl Send for TileMemoryRequirementsQCOM {}
29727unsafe impl Sync for TileMemoryRequirementsQCOM {}
29728
29729/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTileMemorySizeInfoQCOM.html>
29730#[repr(C)]
29731#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29732pub struct TileMemorySizeInfoQCOM {
29733    pub s_type: StructureType,
29734    pub next: *const c_void,
29735    pub size: DeviceSize,
29736}
29737
29738impl Default for TileMemorySizeInfoQCOM {
29739    #[inline]
29740    fn default() -> Self {
29741        Self {
29742            s_type: StructureType::TILE_MEMORY_SIZE_INFO_QCOM,
29743            next: ptr::null(),
29744            size: DeviceSize::default(),
29745        }
29746    }
29747}
29748
29749unsafe impl Send for TileMemorySizeInfoQCOM {}
29750unsafe impl Sync for TileMemorySizeInfoQCOM {}
29751
29752/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTilePropertiesQCOM.html>
29753#[repr(C)]
29754#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29755pub struct TilePropertiesQCOM {
29756    pub s_type: StructureType,
29757    pub next: *mut c_void,
29758    pub tile_size: Extent3D,
29759    pub apron_size: Extent2D,
29760    pub origin: Offset2D,
29761}
29762
29763impl Default for TilePropertiesQCOM {
29764    #[inline]
29765    fn default() -> Self {
29766        Self {
29767            s_type: StructureType::TILE_PROPERTIES_QCOM,
29768            next: ptr::null_mut(),
29769            tile_size: Extent3D::default(),
29770            apron_size: Extent2D::default(),
29771            origin: Offset2D::default(),
29772        }
29773    }
29774}
29775
29776unsafe impl Send for TilePropertiesQCOM {}
29777unsafe impl Sync for TilePropertiesQCOM {}
29778
29779/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTimelineSemaphoreSubmitInfo.html>
29780#[repr(C)]
29781#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29782pub struct TimelineSemaphoreSubmitInfo {
29783    pub s_type: StructureType,
29784    pub next: *const c_void,
29785    pub wait_semaphore_value_count: u32,
29786    pub wait_semaphore_values: *const u64,
29787    pub signal_semaphore_value_count: u32,
29788    pub signal_semaphore_values: *const u64,
29789}
29790
29791impl Default for TimelineSemaphoreSubmitInfo {
29792    #[inline]
29793    fn default() -> Self {
29794        Self {
29795            s_type: StructureType::TIMELINE_SEMAPHORE_SUBMIT_INFO,
29796            next: ptr::null(),
29797            wait_semaphore_value_count: u32::default(),
29798            wait_semaphore_values: ptr::null(),
29799            signal_semaphore_value_count: u32::default(),
29800            signal_semaphore_values: ptr::null(),
29801        }
29802    }
29803}
29804
29805unsafe impl Send for TimelineSemaphoreSubmitInfo {}
29806unsafe impl Sync for TimelineSemaphoreSubmitInfo {}
29807
29808/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTraceRaysIndirectCommand2KHR.html>
29809#[repr(C)]
29810#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29811pub struct TraceRaysIndirectCommand2KHR {
29812    pub raygen_shader_record_address: DeviceAddress,
29813    pub raygen_shader_record_size: DeviceSize,
29814    pub miss_shader_binding_table_address: DeviceAddress,
29815    pub miss_shader_binding_table_size: DeviceSize,
29816    pub miss_shader_binding_table_stride: DeviceSize,
29817    pub hit_shader_binding_table_address: DeviceAddress,
29818    pub hit_shader_binding_table_size: DeviceSize,
29819    pub hit_shader_binding_table_stride: DeviceSize,
29820    pub callable_shader_binding_table_address: DeviceAddress,
29821    pub callable_shader_binding_table_size: DeviceSize,
29822    pub callable_shader_binding_table_stride: DeviceSize,
29823    pub width: u32,
29824    pub height: u32,
29825    pub depth: u32,
29826}
29827
29828/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTraceRaysIndirectCommandKHR.html>
29829#[repr(C)]
29830#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29831pub struct TraceRaysIndirectCommandKHR {
29832    pub width: u32,
29833    pub height: u32,
29834    pub depth: u32,
29835}
29836
29837/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTransformMatrixKHR.html>
29838#[repr(C)]
29839#[derive(Copy, Clone, Default, Debug, PartialEq)]
29840pub struct TransformMatrixKHR {
29841    pub matrix: [[f32; 4]; 3],
29842}
29843
29844/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationCacheCreateInfoEXT.html>
29845#[repr(C)]
29846#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29847pub struct ValidationCacheCreateInfoEXT {
29848    pub s_type: StructureType,
29849    pub next: *const c_void,
29850    pub flags: ValidationCacheCreateFlagsEXT,
29851    pub initial_data_size: usize,
29852    pub initial_data: *const c_void,
29853}
29854
29855impl Default for ValidationCacheCreateInfoEXT {
29856    #[inline]
29857    fn default() -> Self {
29858        Self {
29859            s_type: StructureType::VALIDATION_CACHE_CREATE_INFO_EXT,
29860            next: ptr::null(),
29861            flags: ValidationCacheCreateFlagsEXT::default(),
29862            initial_data_size: usize::default(),
29863            initial_data: ptr::null(),
29864        }
29865    }
29866}
29867
29868unsafe impl Send for ValidationCacheCreateInfoEXT {}
29869unsafe impl Sync for ValidationCacheCreateInfoEXT {}
29870
29871/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationFeaturesEXT.html>
29872#[repr(C)]
29873#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29874pub struct ValidationFeaturesEXT {
29875    pub s_type: StructureType,
29876    pub next: *const c_void,
29877    pub enabled_validation_feature_count: u32,
29878    pub enabled_validation_features: *const ValidationFeatureEnableEXT,
29879    pub disabled_validation_feature_count: u32,
29880    pub disabled_validation_features: *const ValidationFeatureDisableEXT,
29881}
29882
29883impl Default for ValidationFeaturesEXT {
29884    #[inline]
29885    fn default() -> Self {
29886        Self {
29887            s_type: StructureType::VALIDATION_FEATURES_EXT,
29888            next: ptr::null(),
29889            enabled_validation_feature_count: u32::default(),
29890            enabled_validation_features: ptr::null(),
29891            disabled_validation_feature_count: u32::default(),
29892            disabled_validation_features: ptr::null(),
29893        }
29894    }
29895}
29896
29897unsafe impl Send for ValidationFeaturesEXT {}
29898unsafe impl Sync for ValidationFeaturesEXT {}
29899
29900/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationFlagsEXT.html>
29901#[repr(C)]
29902#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29903pub struct ValidationFlagsEXT {
29904    pub s_type: StructureType,
29905    pub next: *const c_void,
29906    pub disabled_validation_check_count: u32,
29907    pub disabled_validation_checks: *const ValidationCheckEXT,
29908}
29909
29910impl Default for ValidationFlagsEXT {
29911    #[inline]
29912    fn default() -> Self {
29913        Self {
29914            s_type: StructureType::VALIDATION_FLAGS_EXT,
29915            next: ptr::null(),
29916            disabled_validation_check_count: u32::default(),
29917            disabled_validation_checks: ptr::null(),
29918        }
29919    }
29920}
29921
29922unsafe impl Send for ValidationFlagsEXT {}
29923unsafe impl Sync for ValidationFlagsEXT {}
29924
29925/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputAttributeDescription.html>
29926#[repr(C)]
29927#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29928pub struct VertexInputAttributeDescription {
29929    pub location: u32,
29930    pub binding: u32,
29931    pub format: Format,
29932    pub offset: u32,
29933}
29934
29935/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputAttributeDescription2EXT.html>
29936#[repr(C)]
29937#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29938pub struct VertexInputAttributeDescription2EXT {
29939    pub s_type: StructureType,
29940    pub next: *mut c_void,
29941    pub location: u32,
29942    pub binding: u32,
29943    pub format: Format,
29944    pub offset: u32,
29945}
29946
29947impl Default for VertexInputAttributeDescription2EXT {
29948    #[inline]
29949    fn default() -> Self {
29950        Self {
29951            s_type: StructureType::VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT,
29952            next: ptr::null_mut(),
29953            location: u32::default(),
29954            binding: u32::default(),
29955            format: Format::default(),
29956            offset: u32::default(),
29957        }
29958    }
29959}
29960
29961unsafe impl Send for VertexInputAttributeDescription2EXT {}
29962unsafe impl Sync for VertexInputAttributeDescription2EXT {}
29963
29964/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDescription.html>
29965#[repr(C)]
29966#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29967pub struct VertexInputBindingDescription {
29968    pub binding: u32,
29969    pub stride: u32,
29970    pub input_rate: VertexInputRate,
29971}
29972
29973/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDescription2EXT.html>
29974#[repr(C)]
29975#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29976pub struct VertexInputBindingDescription2EXT {
29977    pub s_type: StructureType,
29978    pub next: *mut c_void,
29979    pub binding: u32,
29980    pub stride: u32,
29981    pub input_rate: VertexInputRate,
29982    pub divisor: u32,
29983}
29984
29985impl Default for VertexInputBindingDescription2EXT {
29986    #[inline]
29987    fn default() -> Self {
29988        Self {
29989            s_type: StructureType::VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT,
29990            next: ptr::null_mut(),
29991            binding: u32::default(),
29992            stride: u32::default(),
29993            input_rate: VertexInputRate::default(),
29994            divisor: u32::default(),
29995        }
29996    }
29997}
29998
29999unsafe impl Send for VertexInputBindingDescription2EXT {}
30000unsafe impl Sync for VertexInputBindingDescription2EXT {}
30001
30002/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescription.html>
30003#[repr(C)]
30004#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
30005pub struct VertexInputBindingDivisorDescription {
30006    pub binding: u32,
30007    pub divisor: u32,
30008}
30009
30010/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViSurfaceCreateInfoNN.html>
30011#[repr(C)]
30012#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30013pub struct ViSurfaceCreateInfoNN {
30014    pub s_type: StructureType,
30015    pub next: *const c_void,
30016    pub flags: ViSurfaceCreateFlagsNN,
30017    pub window: *mut c_void,
30018}
30019
30020impl Default for ViSurfaceCreateInfoNN {
30021    #[inline]
30022    fn default() -> Self {
30023        Self {
30024            s_type: StructureType::VI_SURFACE_CREATE_INFO_NN,
30025            next: ptr::null(),
30026            flags: ViSurfaceCreateFlagsNN::default(),
30027            window: ptr::null_mut(),
30028        }
30029    }
30030}
30031
30032unsafe impl Send for ViSurfaceCreateInfoNN {}
30033unsafe impl Sync for ViSurfaceCreateInfoNN {}
30034
30035/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoBeginCodingInfoKHR.html>
30036#[repr(C)]
30037#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30038pub struct VideoBeginCodingInfoKHR {
30039    pub s_type: StructureType,
30040    pub next: *const c_void,
30041    pub flags: VideoBeginCodingFlagsKHR,
30042    pub video_session: VideoSessionKHR,
30043    pub video_session_parameters: VideoSessionParametersKHR,
30044    pub reference_slot_count: u32,
30045    pub reference_slots: *const VideoReferenceSlotInfoKHR,
30046}
30047
30048impl Default for VideoBeginCodingInfoKHR {
30049    #[inline]
30050    fn default() -> Self {
30051        Self {
30052            s_type: StructureType::VIDEO_BEGIN_CODING_INFO_KHR,
30053            next: ptr::null(),
30054            flags: VideoBeginCodingFlagsKHR::default(),
30055            video_session: VideoSessionKHR::default(),
30056            video_session_parameters: VideoSessionParametersKHR::default(),
30057            reference_slot_count: u32::default(),
30058            reference_slots: ptr::null(),
30059        }
30060    }
30061}
30062
30063unsafe impl Send for VideoBeginCodingInfoKHR {}
30064unsafe impl Sync for VideoBeginCodingInfoKHR {}
30065
30066/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoCapabilitiesKHR.html>
30067#[repr(C)]
30068#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30069pub struct VideoCapabilitiesKHR {
30070    pub s_type: StructureType,
30071    pub next: *mut c_void,
30072    pub flags: VideoCapabilityFlagsKHR,
30073    pub min_bitstream_buffer_offset_alignment: DeviceSize,
30074    pub min_bitstream_buffer_size_alignment: DeviceSize,
30075    pub picture_access_granularity: Extent2D,
30076    pub min_coded_extent: Extent2D,
30077    pub max_coded_extent: Extent2D,
30078    pub max_dpb_slots: u32,
30079    pub max_active_reference_pictures: u32,
30080    pub std_header_version: ExtensionProperties,
30081}
30082
30083impl Default for VideoCapabilitiesKHR {
30084    #[inline]
30085    fn default() -> Self {
30086        Self {
30087            s_type: StructureType::VIDEO_CAPABILITIES_KHR,
30088            next: ptr::null_mut(),
30089            flags: VideoCapabilityFlagsKHR::default(),
30090            min_bitstream_buffer_offset_alignment: DeviceSize::default(),
30091            min_bitstream_buffer_size_alignment: DeviceSize::default(),
30092            picture_access_granularity: Extent2D::default(),
30093            min_coded_extent: Extent2D::default(),
30094            max_coded_extent: Extent2D::default(),
30095            max_dpb_slots: u32::default(),
30096            max_active_reference_pictures: u32::default(),
30097            std_header_version: ExtensionProperties::default(),
30098        }
30099    }
30100}
30101
30102unsafe impl Send for VideoCapabilitiesKHR {}
30103unsafe impl Sync for VideoCapabilitiesKHR {}
30104
30105/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoCodingControlInfoKHR.html>
30106#[repr(C)]
30107#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30108pub struct VideoCodingControlInfoKHR {
30109    pub s_type: StructureType,
30110    pub next: *const c_void,
30111    pub flags: VideoCodingControlFlagsKHR,
30112}
30113
30114impl Default for VideoCodingControlInfoKHR {
30115    #[inline]
30116    fn default() -> Self {
30117        Self {
30118            s_type: StructureType::VIDEO_CODING_CONTROL_INFO_KHR,
30119            next: ptr::null(),
30120            flags: VideoCodingControlFlagsKHR::default(),
30121        }
30122    }
30123}
30124
30125unsafe impl Send for VideoCodingControlInfoKHR {}
30126unsafe impl Sync for VideoCodingControlInfoKHR {}
30127
30128/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1CapabilitiesKHR.html>
30129#[repr(C)]
30130#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30131pub struct VideoDecodeAV1CapabilitiesKHR {
30132    pub s_type: StructureType,
30133    pub next: *mut c_void,
30134    pub max_level: video::StdVideoAV1Level,
30135}
30136
30137impl Default for VideoDecodeAV1CapabilitiesKHR {
30138    #[inline]
30139    fn default() -> Self {
30140        Self {
30141            s_type: StructureType::VIDEO_DECODE_AV1_CAPABILITIES_KHR,
30142            next: ptr::null_mut(),
30143            max_level: video::StdVideoAV1Level::default(),
30144        }
30145    }
30146}
30147
30148unsafe impl Send for VideoDecodeAV1CapabilitiesKHR {}
30149unsafe impl Sync for VideoDecodeAV1CapabilitiesKHR {}
30150
30151/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1DpbSlotInfoKHR.html>
30152#[repr(C)]
30153#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30154pub struct VideoDecodeAV1DpbSlotInfoKHR {
30155    pub s_type: StructureType,
30156    pub next: *const c_void,
30157    pub std_reference_info: *const video::StdVideoDecodeAV1ReferenceInfo,
30158}
30159
30160impl Default for VideoDecodeAV1DpbSlotInfoKHR {
30161    #[inline]
30162    fn default() -> Self {
30163        Self {
30164            s_type: StructureType::VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR,
30165            next: ptr::null(),
30166            std_reference_info: ptr::null(),
30167        }
30168    }
30169}
30170
30171unsafe impl Send for VideoDecodeAV1DpbSlotInfoKHR {}
30172unsafe impl Sync for VideoDecodeAV1DpbSlotInfoKHR {}
30173
30174/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1InlineSessionParametersInfoKHR.html>
30175#[repr(C)]
30176#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30177pub struct VideoDecodeAV1InlineSessionParametersInfoKHR {
30178    pub s_type: StructureType,
30179    pub next: *const c_void,
30180    pub std_sequence_header: *const video::StdVideoAV1SequenceHeader,
30181}
30182
30183impl Default for VideoDecodeAV1InlineSessionParametersInfoKHR {
30184    #[inline]
30185    fn default() -> Self {
30186        Self {
30187            s_type: StructureType::VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR,
30188            next: ptr::null(),
30189            std_sequence_header: ptr::null(),
30190        }
30191    }
30192}
30193
30194unsafe impl Send for VideoDecodeAV1InlineSessionParametersInfoKHR {}
30195unsafe impl Sync for VideoDecodeAV1InlineSessionParametersInfoKHR {}
30196
30197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1PictureInfoKHR.html>
30198#[repr(C)]
30199#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30200pub struct VideoDecodeAV1PictureInfoKHR {
30201    pub s_type: StructureType,
30202    pub next: *const c_void,
30203    pub std_picture_info: *const video::StdVideoDecodeAV1PictureInfo,
30204    pub reference_name_slot_indices: [i32; MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
30205    pub frame_header_offset: u32,
30206    pub tile_count: u32,
30207    pub tile_offsets: *const u32,
30208    pub tile_sizes: *const u32,
30209}
30210
30211impl Default for VideoDecodeAV1PictureInfoKHR {
30212    #[inline]
30213    fn default() -> Self {
30214        Self {
30215            s_type: StructureType::VIDEO_DECODE_AV1_PICTURE_INFO_KHR,
30216            next: ptr::null(),
30217            std_picture_info: ptr::null(),
30218            reference_name_slot_indices: [i32::default(); MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
30219            frame_header_offset: u32::default(),
30220            tile_count: u32::default(),
30221            tile_offsets: ptr::null(),
30222            tile_sizes: ptr::null(),
30223        }
30224    }
30225}
30226
30227unsafe impl Send for VideoDecodeAV1PictureInfoKHR {}
30228unsafe impl Sync for VideoDecodeAV1PictureInfoKHR {}
30229
30230/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1ProfileInfoKHR.html>
30231#[repr(C)]
30232#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30233pub struct VideoDecodeAV1ProfileInfoKHR {
30234    pub s_type: StructureType,
30235    pub next: *const c_void,
30236    pub std_profile: video::StdVideoAV1Profile,
30237    pub film_grain_support: Bool32,
30238}
30239
30240impl Default for VideoDecodeAV1ProfileInfoKHR {
30241    #[inline]
30242    fn default() -> Self {
30243        Self {
30244            s_type: StructureType::VIDEO_DECODE_AV1_PROFILE_INFO_KHR,
30245            next: ptr::null(),
30246            std_profile: video::StdVideoAV1Profile::default(),
30247            film_grain_support: Bool32::default(),
30248        }
30249    }
30250}
30251
30252unsafe impl Send for VideoDecodeAV1ProfileInfoKHR {}
30253unsafe impl Sync for VideoDecodeAV1ProfileInfoKHR {}
30254
30255/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1SessionParametersCreateInfoKHR.html>
30256#[repr(C)]
30257#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30258pub struct VideoDecodeAV1SessionParametersCreateInfoKHR {
30259    pub s_type: StructureType,
30260    pub next: *const c_void,
30261    pub std_sequence_header: *const video::StdVideoAV1SequenceHeader,
30262}
30263
30264impl Default for VideoDecodeAV1SessionParametersCreateInfoKHR {
30265    #[inline]
30266    fn default() -> Self {
30267        Self {
30268            s_type: StructureType::VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR,
30269            next: ptr::null(),
30270            std_sequence_header: ptr::null(),
30271        }
30272    }
30273}
30274
30275unsafe impl Send for VideoDecodeAV1SessionParametersCreateInfoKHR {}
30276unsafe impl Sync for VideoDecodeAV1SessionParametersCreateInfoKHR {}
30277
30278/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeCapabilitiesKHR.html>
30279#[repr(C)]
30280#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30281pub struct VideoDecodeCapabilitiesKHR {
30282    pub s_type: StructureType,
30283    pub next: *mut c_void,
30284    pub flags: VideoDecodeCapabilityFlagsKHR,
30285}
30286
30287impl Default for VideoDecodeCapabilitiesKHR {
30288    #[inline]
30289    fn default() -> Self {
30290        Self {
30291            s_type: StructureType::VIDEO_DECODE_CAPABILITIES_KHR,
30292            next: ptr::null_mut(),
30293            flags: VideoDecodeCapabilityFlagsKHR::default(),
30294        }
30295    }
30296}
30297
30298unsafe impl Send for VideoDecodeCapabilitiesKHR {}
30299unsafe impl Sync for VideoDecodeCapabilitiesKHR {}
30300
30301/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264CapabilitiesKHR.html>
30302#[repr(C)]
30303#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30304pub struct VideoDecodeH264CapabilitiesKHR {
30305    pub s_type: StructureType,
30306    pub next: *mut c_void,
30307    pub max_level_idc: video::StdVideoH264LevelIdc,
30308    pub field_offset_granularity: Offset2D,
30309}
30310
30311impl Default for VideoDecodeH264CapabilitiesKHR {
30312    #[inline]
30313    fn default() -> Self {
30314        Self {
30315            s_type: StructureType::VIDEO_DECODE_H264_CAPABILITIES_KHR,
30316            next: ptr::null_mut(),
30317            max_level_idc: video::StdVideoH264LevelIdc::default(),
30318            field_offset_granularity: Offset2D::default(),
30319        }
30320    }
30321}
30322
30323unsafe impl Send for VideoDecodeH264CapabilitiesKHR {}
30324unsafe impl Sync for VideoDecodeH264CapabilitiesKHR {}
30325
30326/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264DpbSlotInfoKHR.html>
30327#[repr(C)]
30328#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30329pub struct VideoDecodeH264DpbSlotInfoKHR {
30330    pub s_type: StructureType,
30331    pub next: *const c_void,
30332    pub std_reference_info: *const video::StdVideoDecodeH264ReferenceInfo,
30333}
30334
30335impl Default for VideoDecodeH264DpbSlotInfoKHR {
30336    #[inline]
30337    fn default() -> Self {
30338        Self {
30339            s_type: StructureType::VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR,
30340            next: ptr::null(),
30341            std_reference_info: ptr::null(),
30342        }
30343    }
30344}
30345
30346unsafe impl Send for VideoDecodeH264DpbSlotInfoKHR {}
30347unsafe impl Sync for VideoDecodeH264DpbSlotInfoKHR {}
30348
30349/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264InlineSessionParametersInfoKHR.html>
30350#[repr(C)]
30351#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30352pub struct VideoDecodeH264InlineSessionParametersInfoKHR {
30353    pub s_type: StructureType,
30354    pub next: *const c_void,
30355    pub std_sps: *const video::StdVideoH264SequenceParameterSet,
30356    pub std_pps: *const video::StdVideoH264PictureParameterSet,
30357}
30358
30359impl Default for VideoDecodeH264InlineSessionParametersInfoKHR {
30360    #[inline]
30361    fn default() -> Self {
30362        Self {
30363            s_type: StructureType::VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR,
30364            next: ptr::null(),
30365            std_sps: ptr::null(),
30366            std_pps: ptr::null(),
30367        }
30368    }
30369}
30370
30371unsafe impl Send for VideoDecodeH264InlineSessionParametersInfoKHR {}
30372unsafe impl Sync for VideoDecodeH264InlineSessionParametersInfoKHR {}
30373
30374/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264PictureInfoKHR.html>
30375#[repr(C)]
30376#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30377pub struct VideoDecodeH264PictureInfoKHR {
30378    pub s_type: StructureType,
30379    pub next: *const c_void,
30380    pub std_picture_info: *const video::StdVideoDecodeH264PictureInfo,
30381    pub slice_count: u32,
30382    pub slice_offsets: *const u32,
30383}
30384
30385impl Default for VideoDecodeH264PictureInfoKHR {
30386    #[inline]
30387    fn default() -> Self {
30388        Self {
30389            s_type: StructureType::VIDEO_DECODE_H264_PICTURE_INFO_KHR,
30390            next: ptr::null(),
30391            std_picture_info: ptr::null(),
30392            slice_count: u32::default(),
30393            slice_offsets: ptr::null(),
30394        }
30395    }
30396}
30397
30398unsafe impl Send for VideoDecodeH264PictureInfoKHR {}
30399unsafe impl Sync for VideoDecodeH264PictureInfoKHR {}
30400
30401/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264ProfileInfoKHR.html>
30402#[repr(C)]
30403#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30404pub struct VideoDecodeH264ProfileInfoKHR {
30405    pub s_type: StructureType,
30406    pub next: *const c_void,
30407    pub std_profile_idc: video::StdVideoH264ProfileIdc,
30408    pub picture_layout: VideoDecodeH264PictureLayoutFlagsKHR,
30409}
30410
30411impl Default for VideoDecodeH264ProfileInfoKHR {
30412    #[inline]
30413    fn default() -> Self {
30414        Self {
30415            s_type: StructureType::VIDEO_DECODE_H264_PROFILE_INFO_KHR,
30416            next: ptr::null(),
30417            std_profile_idc: video::StdVideoH264ProfileIdc::default(),
30418            picture_layout: VideoDecodeH264PictureLayoutFlagsKHR::default(),
30419        }
30420    }
30421}
30422
30423unsafe impl Send for VideoDecodeH264ProfileInfoKHR {}
30424unsafe impl Sync for VideoDecodeH264ProfileInfoKHR {}
30425
30426/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264SessionParametersAddInfoKHR.html>
30427#[repr(C)]
30428#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30429pub struct VideoDecodeH264SessionParametersAddInfoKHR {
30430    pub s_type: StructureType,
30431    pub next: *const c_void,
30432    pub std_sps_count: u32,
30433    pub std_sp_ss: *const video::StdVideoH264SequenceParameterSet,
30434    pub std_pps_count: u32,
30435    pub std_pp_ss: *const video::StdVideoH264PictureParameterSet,
30436}
30437
30438impl Default for VideoDecodeH264SessionParametersAddInfoKHR {
30439    #[inline]
30440    fn default() -> Self {
30441        Self {
30442            s_type: StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR,
30443            next: ptr::null(),
30444            std_sps_count: u32::default(),
30445            std_sp_ss: ptr::null(),
30446            std_pps_count: u32::default(),
30447            std_pp_ss: ptr::null(),
30448        }
30449    }
30450}
30451
30452unsafe impl Send for VideoDecodeH264SessionParametersAddInfoKHR {}
30453unsafe impl Sync for VideoDecodeH264SessionParametersAddInfoKHR {}
30454
30455/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264SessionParametersCreateInfoKHR.html>
30456#[repr(C)]
30457#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30458pub struct VideoDecodeH264SessionParametersCreateInfoKHR {
30459    pub s_type: StructureType,
30460    pub next: *const c_void,
30461    pub max_std_sps_count: u32,
30462    pub max_std_pps_count: u32,
30463    pub parameters_add_info: *const VideoDecodeH264SessionParametersAddInfoKHR,
30464}
30465
30466impl Default for VideoDecodeH264SessionParametersCreateInfoKHR {
30467    #[inline]
30468    fn default() -> Self {
30469        Self {
30470            s_type: StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR,
30471            next: ptr::null(),
30472            max_std_sps_count: u32::default(),
30473            max_std_pps_count: u32::default(),
30474            parameters_add_info: ptr::null(),
30475        }
30476    }
30477}
30478
30479unsafe impl Send for VideoDecodeH264SessionParametersCreateInfoKHR {}
30480unsafe impl Sync for VideoDecodeH264SessionParametersCreateInfoKHR {}
30481
30482/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265CapabilitiesKHR.html>
30483#[repr(C)]
30484#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30485pub struct VideoDecodeH265CapabilitiesKHR {
30486    pub s_type: StructureType,
30487    pub next: *mut c_void,
30488    pub max_level_idc: video::StdVideoH265LevelIdc,
30489}
30490
30491impl Default for VideoDecodeH265CapabilitiesKHR {
30492    #[inline]
30493    fn default() -> Self {
30494        Self {
30495            s_type: StructureType::VIDEO_DECODE_H265_CAPABILITIES_KHR,
30496            next: ptr::null_mut(),
30497            max_level_idc: video::StdVideoH265LevelIdc::default(),
30498        }
30499    }
30500}
30501
30502unsafe impl Send for VideoDecodeH265CapabilitiesKHR {}
30503unsafe impl Sync for VideoDecodeH265CapabilitiesKHR {}
30504
30505/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265DpbSlotInfoKHR.html>
30506#[repr(C)]
30507#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30508pub struct VideoDecodeH265DpbSlotInfoKHR {
30509    pub s_type: StructureType,
30510    pub next: *const c_void,
30511    pub std_reference_info: *const video::StdVideoDecodeH265ReferenceInfo,
30512}
30513
30514impl Default for VideoDecodeH265DpbSlotInfoKHR {
30515    #[inline]
30516    fn default() -> Self {
30517        Self {
30518            s_type: StructureType::VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR,
30519            next: ptr::null(),
30520            std_reference_info: ptr::null(),
30521        }
30522    }
30523}
30524
30525unsafe impl Send for VideoDecodeH265DpbSlotInfoKHR {}
30526unsafe impl Sync for VideoDecodeH265DpbSlotInfoKHR {}
30527
30528/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265InlineSessionParametersInfoKHR.html>
30529#[repr(C)]
30530#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30531pub struct VideoDecodeH265InlineSessionParametersInfoKHR {
30532    pub s_type: StructureType,
30533    pub next: *const c_void,
30534    pub std_vps: *const video::StdVideoH265VideoParameterSet,
30535    pub std_sps: *const video::StdVideoH265SequenceParameterSet,
30536    pub std_pps: *const video::StdVideoH265PictureParameterSet,
30537}
30538
30539impl Default for VideoDecodeH265InlineSessionParametersInfoKHR {
30540    #[inline]
30541    fn default() -> Self {
30542        Self {
30543            s_type: StructureType::VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR,
30544            next: ptr::null(),
30545            std_vps: ptr::null(),
30546            std_sps: ptr::null(),
30547            std_pps: ptr::null(),
30548        }
30549    }
30550}
30551
30552unsafe impl Send for VideoDecodeH265InlineSessionParametersInfoKHR {}
30553unsafe impl Sync for VideoDecodeH265InlineSessionParametersInfoKHR {}
30554
30555/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265PictureInfoKHR.html>
30556#[repr(C)]
30557#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30558pub struct VideoDecodeH265PictureInfoKHR {
30559    pub s_type: StructureType,
30560    pub next: *const c_void,
30561    pub std_picture_info: *const video::StdVideoDecodeH265PictureInfo,
30562    pub slice_segment_count: u32,
30563    pub slice_segment_offsets: *const u32,
30564}
30565
30566impl Default for VideoDecodeH265PictureInfoKHR {
30567    #[inline]
30568    fn default() -> Self {
30569        Self {
30570            s_type: StructureType::VIDEO_DECODE_H265_PICTURE_INFO_KHR,
30571            next: ptr::null(),
30572            std_picture_info: ptr::null(),
30573            slice_segment_count: u32::default(),
30574            slice_segment_offsets: ptr::null(),
30575        }
30576    }
30577}
30578
30579unsafe impl Send for VideoDecodeH265PictureInfoKHR {}
30580unsafe impl Sync for VideoDecodeH265PictureInfoKHR {}
30581
30582/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265ProfileInfoKHR.html>
30583#[repr(C)]
30584#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30585pub struct VideoDecodeH265ProfileInfoKHR {
30586    pub s_type: StructureType,
30587    pub next: *const c_void,
30588    pub std_profile_idc: video::StdVideoH265ProfileIdc,
30589}
30590
30591impl Default for VideoDecodeH265ProfileInfoKHR {
30592    #[inline]
30593    fn default() -> Self {
30594        Self {
30595            s_type: StructureType::VIDEO_DECODE_H265_PROFILE_INFO_KHR,
30596            next: ptr::null(),
30597            std_profile_idc: video::StdVideoH265ProfileIdc::default(),
30598        }
30599    }
30600}
30601
30602unsafe impl Send for VideoDecodeH265ProfileInfoKHR {}
30603unsafe impl Sync for VideoDecodeH265ProfileInfoKHR {}
30604
30605/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265SessionParametersAddInfoKHR.html>
30606#[repr(C)]
30607#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30608pub struct VideoDecodeH265SessionParametersAddInfoKHR {
30609    pub s_type: StructureType,
30610    pub next: *const c_void,
30611    pub std_vps_count: u32,
30612    pub std_vp_ss: *const video::StdVideoH265VideoParameterSet,
30613    pub std_sps_count: u32,
30614    pub std_sp_ss: *const video::StdVideoH265SequenceParameterSet,
30615    pub std_pps_count: u32,
30616    pub std_pp_ss: *const video::StdVideoH265PictureParameterSet,
30617}
30618
30619impl Default for VideoDecodeH265SessionParametersAddInfoKHR {
30620    #[inline]
30621    fn default() -> Self {
30622        Self {
30623            s_type: StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR,
30624            next: ptr::null(),
30625            std_vps_count: u32::default(),
30626            std_vp_ss: ptr::null(),
30627            std_sps_count: u32::default(),
30628            std_sp_ss: ptr::null(),
30629            std_pps_count: u32::default(),
30630            std_pp_ss: ptr::null(),
30631        }
30632    }
30633}
30634
30635unsafe impl Send for VideoDecodeH265SessionParametersAddInfoKHR {}
30636unsafe impl Sync for VideoDecodeH265SessionParametersAddInfoKHR {}
30637
30638/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265SessionParametersCreateInfoKHR.html>
30639#[repr(C)]
30640#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30641pub struct VideoDecodeH265SessionParametersCreateInfoKHR {
30642    pub s_type: StructureType,
30643    pub next: *const c_void,
30644    pub max_std_vps_count: u32,
30645    pub max_std_sps_count: u32,
30646    pub max_std_pps_count: u32,
30647    pub parameters_add_info: *const VideoDecodeH265SessionParametersAddInfoKHR,
30648}
30649
30650impl Default for VideoDecodeH265SessionParametersCreateInfoKHR {
30651    #[inline]
30652    fn default() -> Self {
30653        Self {
30654            s_type: StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR,
30655            next: ptr::null(),
30656            max_std_vps_count: u32::default(),
30657            max_std_sps_count: u32::default(),
30658            max_std_pps_count: u32::default(),
30659            parameters_add_info: ptr::null(),
30660        }
30661    }
30662}
30663
30664unsafe impl Send for VideoDecodeH265SessionParametersCreateInfoKHR {}
30665unsafe impl Sync for VideoDecodeH265SessionParametersCreateInfoKHR {}
30666
30667/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeInfoKHR.html>
30668#[repr(C)]
30669#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30670pub struct VideoDecodeInfoKHR {
30671    pub s_type: StructureType,
30672    pub next: *const c_void,
30673    pub flags: VideoDecodeFlagsKHR,
30674    pub src_buffer: Buffer,
30675    pub src_buffer_offset: DeviceSize,
30676    pub src_buffer_range: DeviceSize,
30677    pub dst_picture_resource: VideoPictureResourceInfoKHR,
30678    pub setup_reference_slot: *const VideoReferenceSlotInfoKHR,
30679    pub reference_slot_count: u32,
30680    pub reference_slots: *const VideoReferenceSlotInfoKHR,
30681}
30682
30683impl Default for VideoDecodeInfoKHR {
30684    #[inline]
30685    fn default() -> Self {
30686        Self {
30687            s_type: StructureType::VIDEO_DECODE_INFO_KHR,
30688            next: ptr::null(),
30689            flags: VideoDecodeFlagsKHR::default(),
30690            src_buffer: Buffer::default(),
30691            src_buffer_offset: DeviceSize::default(),
30692            src_buffer_range: DeviceSize::default(),
30693            dst_picture_resource: VideoPictureResourceInfoKHR::default(),
30694            setup_reference_slot: ptr::null(),
30695            reference_slot_count: u32::default(),
30696            reference_slots: ptr::null(),
30697        }
30698    }
30699}
30700
30701unsafe impl Send for VideoDecodeInfoKHR {}
30702unsafe impl Sync for VideoDecodeInfoKHR {}
30703
30704/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeUsageInfoKHR.html>
30705#[repr(C)]
30706#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30707pub struct VideoDecodeUsageInfoKHR {
30708    pub s_type: StructureType,
30709    pub next: *const c_void,
30710    pub video_usage_hints: VideoDecodeUsageFlagsKHR,
30711}
30712
30713impl Default for VideoDecodeUsageInfoKHR {
30714    #[inline]
30715    fn default() -> Self {
30716        Self {
30717            s_type: StructureType::VIDEO_DECODE_USAGE_INFO_KHR,
30718            next: ptr::null(),
30719            video_usage_hints: VideoDecodeUsageFlagsKHR::default(),
30720        }
30721    }
30722}
30723
30724unsafe impl Send for VideoDecodeUsageInfoKHR {}
30725unsafe impl Sync for VideoDecodeUsageInfoKHR {}
30726
30727/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeVP9CapabilitiesKHR.html>
30728#[repr(C)]
30729#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30730pub struct VideoDecodeVP9CapabilitiesKHR {
30731    pub s_type: StructureType,
30732    pub next: *mut c_void,
30733    pub max_level: video::StdVideoVP9Level,
30734}
30735
30736impl Default for VideoDecodeVP9CapabilitiesKHR {
30737    #[inline]
30738    fn default() -> Self {
30739        Self {
30740            s_type: StructureType::VIDEO_DECODE_VP9_CAPABILITIES_KHR,
30741            next: ptr::null_mut(),
30742            max_level: video::StdVideoVP9Level::default(),
30743        }
30744    }
30745}
30746
30747unsafe impl Send for VideoDecodeVP9CapabilitiesKHR {}
30748unsafe impl Sync for VideoDecodeVP9CapabilitiesKHR {}
30749
30750/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeVP9PictureInfoKHR.html>
30751#[repr(C)]
30752#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30753pub struct VideoDecodeVP9PictureInfoKHR {
30754    pub s_type: StructureType,
30755    pub next: *const c_void,
30756    pub std_picture_info: *const video::StdVideoDecodeVP9PictureInfo,
30757    pub reference_name_slot_indices: [i32; MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR],
30758    pub uncompressed_header_offset: u32,
30759    pub compressed_header_offset: u32,
30760    pub tiles_offset: u32,
30761}
30762
30763impl Default for VideoDecodeVP9PictureInfoKHR {
30764    #[inline]
30765    fn default() -> Self {
30766        Self {
30767            s_type: StructureType::VIDEO_DECODE_VP9_PICTURE_INFO_KHR,
30768            next: ptr::null(),
30769            std_picture_info: ptr::null(),
30770            reference_name_slot_indices: [i32::default(); MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR],
30771            uncompressed_header_offset: u32::default(),
30772            compressed_header_offset: u32::default(),
30773            tiles_offset: u32::default(),
30774        }
30775    }
30776}
30777
30778unsafe impl Send for VideoDecodeVP9PictureInfoKHR {}
30779unsafe impl Sync for VideoDecodeVP9PictureInfoKHR {}
30780
30781/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeVP9ProfileInfoKHR.html>
30782#[repr(C)]
30783#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30784pub struct VideoDecodeVP9ProfileInfoKHR {
30785    pub s_type: StructureType,
30786    pub next: *const c_void,
30787    pub std_profile: video::StdVideoVP9Profile,
30788}
30789
30790impl Default for VideoDecodeVP9ProfileInfoKHR {
30791    #[inline]
30792    fn default() -> Self {
30793        Self {
30794            s_type: StructureType::VIDEO_DECODE_VP9_PROFILE_INFO_KHR,
30795            next: ptr::null(),
30796            std_profile: video::StdVideoVP9Profile::default(),
30797        }
30798    }
30799}
30800
30801unsafe impl Send for VideoDecodeVP9ProfileInfoKHR {}
30802unsafe impl Sync for VideoDecodeVP9ProfileInfoKHR {}
30803
30804/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1CapabilitiesKHR.html>
30805#[repr(C)]
30806#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30807pub struct VideoEncodeAV1CapabilitiesKHR {
30808    pub s_type: StructureType,
30809    pub next: *mut c_void,
30810    pub flags: VideoEncodeAV1CapabilityFlagsKHR,
30811    pub max_level: video::StdVideoAV1Level,
30812    pub coded_picture_alignment: Extent2D,
30813    pub max_tiles: Extent2D,
30814    pub min_tile_size: Extent2D,
30815    pub max_tile_size: Extent2D,
30816    pub superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR,
30817    pub max_single_reference_count: u32,
30818    pub single_reference_name_mask: u32,
30819    pub max_unidirectional_compound_reference_count: u32,
30820    pub max_unidirectional_compound_group1_reference_count: u32,
30821    pub unidirectional_compound_reference_name_mask: u32,
30822    pub max_bidirectional_compound_reference_count: u32,
30823    pub max_bidirectional_compound_group1_reference_count: u32,
30824    pub max_bidirectional_compound_group2_reference_count: u32,
30825    pub bidirectional_compound_reference_name_mask: u32,
30826    pub max_temporal_layer_count: u32,
30827    pub max_spatial_layer_count: u32,
30828    pub max_operating_points: u32,
30829    pub min_q_index: u32,
30830    pub max_q_index: u32,
30831    pub prefers_gop_remaining_frames: Bool32,
30832    pub requires_gop_remaining_frames: Bool32,
30833    pub std_syntax_flags: VideoEncodeAV1StdFlagsKHR,
30834}
30835
30836impl Default for VideoEncodeAV1CapabilitiesKHR {
30837    #[inline]
30838    fn default() -> Self {
30839        Self {
30840            s_type: StructureType::VIDEO_ENCODE_AV1_CAPABILITIES_KHR,
30841            next: ptr::null_mut(),
30842            flags: VideoEncodeAV1CapabilityFlagsKHR::default(),
30843            max_level: video::StdVideoAV1Level::default(),
30844            coded_picture_alignment: Extent2D::default(),
30845            max_tiles: Extent2D::default(),
30846            min_tile_size: Extent2D::default(),
30847            max_tile_size: Extent2D::default(),
30848            superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR::default(),
30849            max_single_reference_count: u32::default(),
30850            single_reference_name_mask: u32::default(),
30851            max_unidirectional_compound_reference_count: u32::default(),
30852            max_unidirectional_compound_group1_reference_count: u32::default(),
30853            unidirectional_compound_reference_name_mask: u32::default(),
30854            max_bidirectional_compound_reference_count: u32::default(),
30855            max_bidirectional_compound_group1_reference_count: u32::default(),
30856            max_bidirectional_compound_group2_reference_count: u32::default(),
30857            bidirectional_compound_reference_name_mask: u32::default(),
30858            max_temporal_layer_count: u32::default(),
30859            max_spatial_layer_count: u32::default(),
30860            max_operating_points: u32::default(),
30861            min_q_index: u32::default(),
30862            max_q_index: u32::default(),
30863            prefers_gop_remaining_frames: Bool32::default(),
30864            requires_gop_remaining_frames: Bool32::default(),
30865            std_syntax_flags: VideoEncodeAV1StdFlagsKHR::default(),
30866        }
30867    }
30868}
30869
30870unsafe impl Send for VideoEncodeAV1CapabilitiesKHR {}
30871unsafe impl Sync for VideoEncodeAV1CapabilitiesKHR {}
30872
30873/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1DpbSlotInfoKHR.html>
30874#[repr(C)]
30875#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30876pub struct VideoEncodeAV1DpbSlotInfoKHR {
30877    pub s_type: StructureType,
30878    pub next: *const c_void,
30879    pub std_reference_info: *const video::StdVideoEncodeAV1ReferenceInfo,
30880}
30881
30882impl Default for VideoEncodeAV1DpbSlotInfoKHR {
30883    #[inline]
30884    fn default() -> Self {
30885        Self {
30886            s_type: StructureType::VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR,
30887            next: ptr::null(),
30888            std_reference_info: ptr::null(),
30889        }
30890    }
30891}
30892
30893unsafe impl Send for VideoEncodeAV1DpbSlotInfoKHR {}
30894unsafe impl Sync for VideoEncodeAV1DpbSlotInfoKHR {}
30895
30896/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1FrameSizeKHR.html>
30897#[repr(C)]
30898#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
30899pub struct VideoEncodeAV1FrameSizeKHR {
30900    pub intra_frame_size: u32,
30901    pub predictive_frame_size: u32,
30902    pub bipredictive_frame_size: u32,
30903}
30904
30905/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1GopRemainingFrameInfoKHR.html>
30906#[repr(C)]
30907#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30908pub struct VideoEncodeAV1GopRemainingFrameInfoKHR {
30909    pub s_type: StructureType,
30910    pub next: *const c_void,
30911    pub use_gop_remaining_frames: Bool32,
30912    pub gop_remaining_intra: u32,
30913    pub gop_remaining_predictive: u32,
30914    pub gop_remaining_bipredictive: u32,
30915}
30916
30917impl Default for VideoEncodeAV1GopRemainingFrameInfoKHR {
30918    #[inline]
30919    fn default() -> Self {
30920        Self {
30921            s_type: StructureType::VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR,
30922            next: ptr::null(),
30923            use_gop_remaining_frames: Bool32::default(),
30924            gop_remaining_intra: u32::default(),
30925            gop_remaining_predictive: u32::default(),
30926            gop_remaining_bipredictive: u32::default(),
30927        }
30928    }
30929}
30930
30931unsafe impl Send for VideoEncodeAV1GopRemainingFrameInfoKHR {}
30932unsafe impl Sync for VideoEncodeAV1GopRemainingFrameInfoKHR {}
30933
30934/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1PictureInfoKHR.html>
30935#[repr(C)]
30936#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30937pub struct VideoEncodeAV1PictureInfoKHR {
30938    pub s_type: StructureType,
30939    pub next: *const c_void,
30940    pub prediction_mode: VideoEncodeAV1PredictionModeKHR,
30941    pub rate_control_group: VideoEncodeAV1RateControlGroupKHR,
30942    pub constant_q_index: u32,
30943    pub std_picture_info: *const video::StdVideoEncodeAV1PictureInfo,
30944    pub reference_name_slot_indices: [i32; MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
30945    pub primary_reference_cdf_only: Bool32,
30946    pub generate_obu_extension_header: Bool32,
30947}
30948
30949impl Default for VideoEncodeAV1PictureInfoKHR {
30950    #[inline]
30951    fn default() -> Self {
30952        Self {
30953            s_type: StructureType::VIDEO_ENCODE_AV1_PICTURE_INFO_KHR,
30954            next: ptr::null(),
30955            prediction_mode: VideoEncodeAV1PredictionModeKHR::default(),
30956            rate_control_group: VideoEncodeAV1RateControlGroupKHR::default(),
30957            constant_q_index: u32::default(),
30958            std_picture_info: ptr::null(),
30959            reference_name_slot_indices: [i32::default(); MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
30960            primary_reference_cdf_only: Bool32::default(),
30961            generate_obu_extension_header: Bool32::default(),
30962        }
30963    }
30964}
30965
30966unsafe impl Send for VideoEncodeAV1PictureInfoKHR {}
30967unsafe impl Sync for VideoEncodeAV1PictureInfoKHR {}
30968
30969/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1ProfileInfoKHR.html>
30970#[repr(C)]
30971#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30972pub struct VideoEncodeAV1ProfileInfoKHR {
30973    pub s_type: StructureType,
30974    pub next: *const c_void,
30975    pub std_profile: video::StdVideoAV1Profile,
30976}
30977
30978impl Default for VideoEncodeAV1ProfileInfoKHR {
30979    #[inline]
30980    fn default() -> Self {
30981        Self {
30982            s_type: StructureType::VIDEO_ENCODE_AV1_PROFILE_INFO_KHR,
30983            next: ptr::null(),
30984            std_profile: video::StdVideoAV1Profile::default(),
30985        }
30986    }
30987}
30988
30989unsafe impl Send for VideoEncodeAV1ProfileInfoKHR {}
30990unsafe impl Sync for VideoEncodeAV1ProfileInfoKHR {}
30991
30992/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1QIndexKHR.html>
30993#[repr(C)]
30994#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
30995pub struct VideoEncodeAV1QIndexKHR {
30996    pub intra_q_index: u32,
30997    pub predictive_q_index: u32,
30998    pub bipredictive_q_index: u32,
30999}
31000
31001/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1QualityLevelPropertiesKHR.html>
31002#[repr(C)]
31003#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31004pub struct VideoEncodeAV1QualityLevelPropertiesKHR {
31005    pub s_type: StructureType,
31006    pub next: *mut c_void,
31007    pub preferred_rate_control_flags: VideoEncodeAV1RateControlFlagsKHR,
31008    pub preferred_gop_frame_count: u32,
31009    pub preferred_key_frame_period: u32,
31010    pub preferred_consecutive_bipredictive_frame_count: u32,
31011    pub preferred_temporal_layer_count: u32,
31012    pub preferred_constant_q_index: VideoEncodeAV1QIndexKHR,
31013    pub preferred_max_single_reference_count: u32,
31014    pub preferred_single_reference_name_mask: u32,
31015    pub preferred_max_unidirectional_compound_reference_count: u32,
31016    pub preferred_max_unidirectional_compound_group1_reference_count: u32,
31017    pub preferred_unidirectional_compound_reference_name_mask: u32,
31018    pub preferred_max_bidirectional_compound_reference_count: u32,
31019    pub preferred_max_bidirectional_compound_group1_reference_count: u32,
31020    pub preferred_max_bidirectional_compound_group2_reference_count: u32,
31021    pub preferred_bidirectional_compound_reference_name_mask: u32,
31022}
31023
31024impl Default for VideoEncodeAV1QualityLevelPropertiesKHR {
31025    #[inline]
31026    fn default() -> Self {
31027        Self {
31028            s_type: StructureType::VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR,
31029            next: ptr::null_mut(),
31030            preferred_rate_control_flags: VideoEncodeAV1RateControlFlagsKHR::default(),
31031            preferred_gop_frame_count: u32::default(),
31032            preferred_key_frame_period: u32::default(),
31033            preferred_consecutive_bipredictive_frame_count: u32::default(),
31034            preferred_temporal_layer_count: u32::default(),
31035            preferred_constant_q_index: VideoEncodeAV1QIndexKHR::default(),
31036            preferred_max_single_reference_count: u32::default(),
31037            preferred_single_reference_name_mask: u32::default(),
31038            preferred_max_unidirectional_compound_reference_count: u32::default(),
31039            preferred_max_unidirectional_compound_group1_reference_count: u32::default(),
31040            preferred_unidirectional_compound_reference_name_mask: u32::default(),
31041            preferred_max_bidirectional_compound_reference_count: u32::default(),
31042            preferred_max_bidirectional_compound_group1_reference_count: u32::default(),
31043            preferred_max_bidirectional_compound_group2_reference_count: u32::default(),
31044            preferred_bidirectional_compound_reference_name_mask: u32::default(),
31045        }
31046    }
31047}
31048
31049unsafe impl Send for VideoEncodeAV1QualityLevelPropertiesKHR {}
31050unsafe impl Sync for VideoEncodeAV1QualityLevelPropertiesKHR {}
31051
31052/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1QuantizationMapCapabilitiesKHR.html>
31053#[repr(C)]
31054#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31055pub struct VideoEncodeAV1QuantizationMapCapabilitiesKHR {
31056    pub s_type: StructureType,
31057    pub next: *mut c_void,
31058    pub min_q_index_delta: i32,
31059    pub max_q_index_delta: i32,
31060}
31061
31062impl Default for VideoEncodeAV1QuantizationMapCapabilitiesKHR {
31063    #[inline]
31064    fn default() -> Self {
31065        Self {
31066            s_type: StructureType::VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR,
31067            next: ptr::null_mut(),
31068            min_q_index_delta: i32::default(),
31069            max_q_index_delta: i32::default(),
31070        }
31071    }
31072}
31073
31074unsafe impl Send for VideoEncodeAV1QuantizationMapCapabilitiesKHR {}
31075unsafe impl Sync for VideoEncodeAV1QuantizationMapCapabilitiesKHR {}
31076
31077/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1RateControlInfoKHR.html>
31078#[repr(C)]
31079#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31080pub struct VideoEncodeAV1RateControlInfoKHR {
31081    pub s_type: StructureType,
31082    pub next: *const c_void,
31083    pub flags: VideoEncodeAV1RateControlFlagsKHR,
31084    pub gop_frame_count: u32,
31085    pub key_frame_period: u32,
31086    pub consecutive_bipredictive_frame_count: u32,
31087    pub temporal_layer_count: u32,
31088}
31089
31090impl Default for VideoEncodeAV1RateControlInfoKHR {
31091    #[inline]
31092    fn default() -> Self {
31093        Self {
31094            s_type: StructureType::VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR,
31095            next: ptr::null(),
31096            flags: VideoEncodeAV1RateControlFlagsKHR::default(),
31097            gop_frame_count: u32::default(),
31098            key_frame_period: u32::default(),
31099            consecutive_bipredictive_frame_count: u32::default(),
31100            temporal_layer_count: u32::default(),
31101        }
31102    }
31103}
31104
31105unsafe impl Send for VideoEncodeAV1RateControlInfoKHR {}
31106unsafe impl Sync for VideoEncodeAV1RateControlInfoKHR {}
31107
31108/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1RateControlLayerInfoKHR.html>
31109#[repr(C)]
31110#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31111pub struct VideoEncodeAV1RateControlLayerInfoKHR {
31112    pub s_type: StructureType,
31113    pub next: *const c_void,
31114    pub use_min_q_index: Bool32,
31115    pub min_q_index: VideoEncodeAV1QIndexKHR,
31116    pub use_max_q_index: Bool32,
31117    pub max_q_index: VideoEncodeAV1QIndexKHR,
31118    pub use_max_frame_size: Bool32,
31119    pub max_frame_size: VideoEncodeAV1FrameSizeKHR,
31120}
31121
31122impl Default for VideoEncodeAV1RateControlLayerInfoKHR {
31123    #[inline]
31124    fn default() -> Self {
31125        Self {
31126            s_type: StructureType::VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR,
31127            next: ptr::null(),
31128            use_min_q_index: Bool32::default(),
31129            min_q_index: VideoEncodeAV1QIndexKHR::default(),
31130            use_max_q_index: Bool32::default(),
31131            max_q_index: VideoEncodeAV1QIndexKHR::default(),
31132            use_max_frame_size: Bool32::default(),
31133            max_frame_size: VideoEncodeAV1FrameSizeKHR::default(),
31134        }
31135    }
31136}
31137
31138unsafe impl Send for VideoEncodeAV1RateControlLayerInfoKHR {}
31139unsafe impl Sync for VideoEncodeAV1RateControlLayerInfoKHR {}
31140
31141/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1SessionCreateInfoKHR.html>
31142#[repr(C)]
31143#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31144pub struct VideoEncodeAV1SessionCreateInfoKHR {
31145    pub s_type: StructureType,
31146    pub next: *const c_void,
31147    pub use_max_level: Bool32,
31148    pub max_level: video::StdVideoAV1Level,
31149}
31150
31151impl Default for VideoEncodeAV1SessionCreateInfoKHR {
31152    #[inline]
31153    fn default() -> Self {
31154        Self {
31155            s_type: StructureType::VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR,
31156            next: ptr::null(),
31157            use_max_level: Bool32::default(),
31158            max_level: video::StdVideoAV1Level::default(),
31159        }
31160    }
31161}
31162
31163unsafe impl Send for VideoEncodeAV1SessionCreateInfoKHR {}
31164unsafe impl Sync for VideoEncodeAV1SessionCreateInfoKHR {}
31165
31166/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1SessionParametersCreateInfoKHR.html>
31167#[repr(C)]
31168#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31169pub struct VideoEncodeAV1SessionParametersCreateInfoKHR {
31170    pub s_type: StructureType,
31171    pub next: *const c_void,
31172    pub std_sequence_header: *const video::StdVideoAV1SequenceHeader,
31173    pub std_decoder_model_info: *const video::StdVideoEncodeAV1DecoderModelInfo,
31174    pub std_operating_point_count: u32,
31175    pub std_operating_points: *const video::StdVideoEncodeAV1OperatingPointInfo,
31176}
31177
31178impl Default for VideoEncodeAV1SessionParametersCreateInfoKHR {
31179    #[inline]
31180    fn default() -> Self {
31181        Self {
31182            s_type: StructureType::VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR,
31183            next: ptr::null(),
31184            std_sequence_header: ptr::null(),
31185            std_decoder_model_info: ptr::null(),
31186            std_operating_point_count: u32::default(),
31187            std_operating_points: ptr::null(),
31188        }
31189    }
31190}
31191
31192unsafe impl Send for VideoEncodeAV1SessionParametersCreateInfoKHR {}
31193unsafe impl Sync for VideoEncodeAV1SessionParametersCreateInfoKHR {}
31194
31195/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeCapabilitiesKHR.html>
31196#[repr(C)]
31197#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31198pub struct VideoEncodeCapabilitiesKHR {
31199    pub s_type: StructureType,
31200    pub next: *mut c_void,
31201    pub flags: VideoEncodeCapabilityFlagsKHR,
31202    pub rate_control_modes: VideoEncodeRateControlModeFlagsKHR,
31203    pub max_rate_control_layers: u32,
31204    pub max_bitrate: u64,
31205    pub max_quality_levels: u32,
31206    pub encode_input_picture_granularity: Extent2D,
31207    pub supported_encode_feedback_flags: VideoEncodeFeedbackFlagsKHR,
31208}
31209
31210impl Default for VideoEncodeCapabilitiesKHR {
31211    #[inline]
31212    fn default() -> Self {
31213        Self {
31214            s_type: StructureType::VIDEO_ENCODE_CAPABILITIES_KHR,
31215            next: ptr::null_mut(),
31216            flags: VideoEncodeCapabilityFlagsKHR::default(),
31217            rate_control_modes: VideoEncodeRateControlModeFlagsKHR::default(),
31218            max_rate_control_layers: u32::default(),
31219            max_bitrate: u64::default(),
31220            max_quality_levels: u32::default(),
31221            encode_input_picture_granularity: Extent2D::default(),
31222            supported_encode_feedback_flags: VideoEncodeFeedbackFlagsKHR::default(),
31223        }
31224    }
31225}
31226
31227unsafe impl Send for VideoEncodeCapabilitiesKHR {}
31228unsafe impl Sync for VideoEncodeCapabilitiesKHR {}
31229
31230/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264CapabilitiesKHR.html>
31231#[repr(C)]
31232#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31233pub struct VideoEncodeH264CapabilitiesKHR {
31234    pub s_type: StructureType,
31235    pub next: *mut c_void,
31236    pub flags: VideoEncodeH264CapabilityFlagsKHR,
31237    pub max_level_idc: video::StdVideoH264LevelIdc,
31238    pub max_slice_count: u32,
31239    pub max_p_picture_l0_reference_count: u32,
31240    pub max_b_picture_l0_reference_count: u32,
31241    pub max_l1_reference_count: u32,
31242    pub max_temporal_layer_count: u32,
31243    pub expect_dyadic_temporal_layer_pattern: Bool32,
31244    pub min_qp: i32,
31245    pub max_qp: i32,
31246    pub prefers_gop_remaining_frames: Bool32,
31247    pub requires_gop_remaining_frames: Bool32,
31248    pub std_syntax_flags: VideoEncodeH264StdFlagsKHR,
31249}
31250
31251impl Default for VideoEncodeH264CapabilitiesKHR {
31252    #[inline]
31253    fn default() -> Self {
31254        Self {
31255            s_type: StructureType::VIDEO_ENCODE_H264_CAPABILITIES_KHR,
31256            next: ptr::null_mut(),
31257            flags: VideoEncodeH264CapabilityFlagsKHR::default(),
31258            max_level_idc: video::StdVideoH264LevelIdc::default(),
31259            max_slice_count: u32::default(),
31260            max_p_picture_l0_reference_count: u32::default(),
31261            max_b_picture_l0_reference_count: u32::default(),
31262            max_l1_reference_count: u32::default(),
31263            max_temporal_layer_count: u32::default(),
31264            expect_dyadic_temporal_layer_pattern: Bool32::default(),
31265            min_qp: i32::default(),
31266            max_qp: i32::default(),
31267            prefers_gop_remaining_frames: Bool32::default(),
31268            requires_gop_remaining_frames: Bool32::default(),
31269            std_syntax_flags: VideoEncodeH264StdFlagsKHR::default(),
31270        }
31271    }
31272}
31273
31274unsafe impl Send for VideoEncodeH264CapabilitiesKHR {}
31275unsafe impl Sync for VideoEncodeH264CapabilitiesKHR {}
31276
31277/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264DpbSlotInfoKHR.html>
31278#[repr(C)]
31279#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31280pub struct VideoEncodeH264DpbSlotInfoKHR {
31281    pub s_type: StructureType,
31282    pub next: *const c_void,
31283    pub std_reference_info: *const video::StdVideoEncodeH264ReferenceInfo,
31284}
31285
31286impl Default for VideoEncodeH264DpbSlotInfoKHR {
31287    #[inline]
31288    fn default() -> Self {
31289        Self {
31290            s_type: StructureType::VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR,
31291            next: ptr::null(),
31292            std_reference_info: ptr::null(),
31293        }
31294    }
31295}
31296
31297unsafe impl Send for VideoEncodeH264DpbSlotInfoKHR {}
31298unsafe impl Sync for VideoEncodeH264DpbSlotInfoKHR {}
31299
31300/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264FrameSizeKHR.html>
31301#[repr(C)]
31302#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
31303pub struct VideoEncodeH264FrameSizeKHR {
31304    pub frame_i_size: u32,
31305    pub frame_p_size: u32,
31306    pub frame_b_size: u32,
31307}
31308
31309/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264GopRemainingFrameInfoKHR.html>
31310#[repr(C)]
31311#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31312pub struct VideoEncodeH264GopRemainingFrameInfoKHR {
31313    pub s_type: StructureType,
31314    pub next: *const c_void,
31315    pub use_gop_remaining_frames: Bool32,
31316    pub gop_remaining_i: u32,
31317    pub gop_remaining_p: u32,
31318    pub gop_remaining_b: u32,
31319}
31320
31321impl Default for VideoEncodeH264GopRemainingFrameInfoKHR {
31322    #[inline]
31323    fn default() -> Self {
31324        Self {
31325            s_type: StructureType::VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR,
31326            next: ptr::null(),
31327            use_gop_remaining_frames: Bool32::default(),
31328            gop_remaining_i: u32::default(),
31329            gop_remaining_p: u32::default(),
31330            gop_remaining_b: u32::default(),
31331        }
31332    }
31333}
31334
31335unsafe impl Send for VideoEncodeH264GopRemainingFrameInfoKHR {}
31336unsafe impl Sync for VideoEncodeH264GopRemainingFrameInfoKHR {}
31337
31338/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264NaluSliceInfoKHR.html>
31339#[repr(C)]
31340#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31341pub struct VideoEncodeH264NaluSliceInfoKHR {
31342    pub s_type: StructureType,
31343    pub next: *const c_void,
31344    pub constant_qp: i32,
31345    pub std_slice_header: *const video::StdVideoEncodeH264SliceHeader,
31346}
31347
31348impl Default for VideoEncodeH264NaluSliceInfoKHR {
31349    #[inline]
31350    fn default() -> Self {
31351        Self {
31352            s_type: StructureType::VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR,
31353            next: ptr::null(),
31354            constant_qp: i32::default(),
31355            std_slice_header: ptr::null(),
31356        }
31357    }
31358}
31359
31360unsafe impl Send for VideoEncodeH264NaluSliceInfoKHR {}
31361unsafe impl Sync for VideoEncodeH264NaluSliceInfoKHR {}
31362
31363/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264PictureInfoKHR.html>
31364#[repr(C)]
31365#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31366pub struct VideoEncodeH264PictureInfoKHR {
31367    pub s_type: StructureType,
31368    pub next: *const c_void,
31369    pub nalu_slice_entry_count: u32,
31370    pub nalu_slice_entries: *const VideoEncodeH264NaluSliceInfoKHR,
31371    pub std_picture_info: *const video::StdVideoEncodeH264PictureInfo,
31372    pub generate_prefix_nalu: Bool32,
31373}
31374
31375impl Default for VideoEncodeH264PictureInfoKHR {
31376    #[inline]
31377    fn default() -> Self {
31378        Self {
31379            s_type: StructureType::VIDEO_ENCODE_H264_PICTURE_INFO_KHR,
31380            next: ptr::null(),
31381            nalu_slice_entry_count: u32::default(),
31382            nalu_slice_entries: ptr::null(),
31383            std_picture_info: ptr::null(),
31384            generate_prefix_nalu: Bool32::default(),
31385        }
31386    }
31387}
31388
31389unsafe impl Send for VideoEncodeH264PictureInfoKHR {}
31390unsafe impl Sync for VideoEncodeH264PictureInfoKHR {}
31391
31392/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264ProfileInfoKHR.html>
31393#[repr(C)]
31394#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31395pub struct VideoEncodeH264ProfileInfoKHR {
31396    pub s_type: StructureType,
31397    pub next: *const c_void,
31398    pub std_profile_idc: video::StdVideoH264ProfileIdc,
31399}
31400
31401impl Default for VideoEncodeH264ProfileInfoKHR {
31402    #[inline]
31403    fn default() -> Self {
31404        Self {
31405            s_type: StructureType::VIDEO_ENCODE_H264_PROFILE_INFO_KHR,
31406            next: ptr::null(),
31407            std_profile_idc: video::StdVideoH264ProfileIdc::default(),
31408        }
31409    }
31410}
31411
31412unsafe impl Send for VideoEncodeH264ProfileInfoKHR {}
31413unsafe impl Sync for VideoEncodeH264ProfileInfoKHR {}
31414
31415/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264QpKHR.html>
31416#[repr(C)]
31417#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
31418pub struct VideoEncodeH264QpKHR {
31419    pub qp_i: i32,
31420    pub qp_p: i32,
31421    pub qp_b: i32,
31422}
31423
31424/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264QualityLevelPropertiesKHR.html>
31425#[repr(C)]
31426#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31427pub struct VideoEncodeH264QualityLevelPropertiesKHR {
31428    pub s_type: StructureType,
31429    pub next: *mut c_void,
31430    pub preferred_rate_control_flags: VideoEncodeH264RateControlFlagsKHR,
31431    pub preferred_gop_frame_count: u32,
31432    pub preferred_idr_period: u32,
31433    pub preferred_consecutive_b_frame_count: u32,
31434    pub preferred_temporal_layer_count: u32,
31435    pub preferred_constant_qp: VideoEncodeH264QpKHR,
31436    pub preferred_max_l0_reference_count: u32,
31437    pub preferred_max_l1_reference_count: u32,
31438    pub preferred_std_entropy_coding_mode_flag: Bool32,
31439}
31440
31441impl Default for VideoEncodeH264QualityLevelPropertiesKHR {
31442    #[inline]
31443    fn default() -> Self {
31444        Self {
31445            s_type: StructureType::VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR,
31446            next: ptr::null_mut(),
31447            preferred_rate_control_flags: VideoEncodeH264RateControlFlagsKHR::default(),
31448            preferred_gop_frame_count: u32::default(),
31449            preferred_idr_period: u32::default(),
31450            preferred_consecutive_b_frame_count: u32::default(),
31451            preferred_temporal_layer_count: u32::default(),
31452            preferred_constant_qp: VideoEncodeH264QpKHR::default(),
31453            preferred_max_l0_reference_count: u32::default(),
31454            preferred_max_l1_reference_count: u32::default(),
31455            preferred_std_entropy_coding_mode_flag: Bool32::default(),
31456        }
31457    }
31458}
31459
31460unsafe impl Send for VideoEncodeH264QualityLevelPropertiesKHR {}
31461unsafe impl Sync for VideoEncodeH264QualityLevelPropertiesKHR {}
31462
31463/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264QuantizationMapCapabilitiesKHR.html>
31464#[repr(C)]
31465#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31466pub struct VideoEncodeH264QuantizationMapCapabilitiesKHR {
31467    pub s_type: StructureType,
31468    pub next: *mut c_void,
31469    pub min_qp_delta: i32,
31470    pub max_qp_delta: i32,
31471}
31472
31473impl Default for VideoEncodeH264QuantizationMapCapabilitiesKHR {
31474    #[inline]
31475    fn default() -> Self {
31476        Self {
31477            s_type: StructureType::VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR,
31478            next: ptr::null_mut(),
31479            min_qp_delta: i32::default(),
31480            max_qp_delta: i32::default(),
31481        }
31482    }
31483}
31484
31485unsafe impl Send for VideoEncodeH264QuantizationMapCapabilitiesKHR {}
31486unsafe impl Sync for VideoEncodeH264QuantizationMapCapabilitiesKHR {}
31487
31488/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264RateControlInfoKHR.html>
31489#[repr(C)]
31490#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31491pub struct VideoEncodeH264RateControlInfoKHR {
31492    pub s_type: StructureType,
31493    pub next: *const c_void,
31494    pub flags: VideoEncodeH264RateControlFlagsKHR,
31495    pub gop_frame_count: u32,
31496    pub idr_period: u32,
31497    pub consecutive_b_frame_count: u32,
31498    pub temporal_layer_count: u32,
31499}
31500
31501impl Default for VideoEncodeH264RateControlInfoKHR {
31502    #[inline]
31503    fn default() -> Self {
31504        Self {
31505            s_type: StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR,
31506            next: ptr::null(),
31507            flags: VideoEncodeH264RateControlFlagsKHR::default(),
31508            gop_frame_count: u32::default(),
31509            idr_period: u32::default(),
31510            consecutive_b_frame_count: u32::default(),
31511            temporal_layer_count: u32::default(),
31512        }
31513    }
31514}
31515
31516unsafe impl Send for VideoEncodeH264RateControlInfoKHR {}
31517unsafe impl Sync for VideoEncodeH264RateControlInfoKHR {}
31518
31519/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264RateControlLayerInfoKHR.html>
31520#[repr(C)]
31521#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31522pub struct VideoEncodeH264RateControlLayerInfoKHR {
31523    pub s_type: StructureType,
31524    pub next: *const c_void,
31525    pub use_min_qp: Bool32,
31526    pub min_qp: VideoEncodeH264QpKHR,
31527    pub use_max_qp: Bool32,
31528    pub max_qp: VideoEncodeH264QpKHR,
31529    pub use_max_frame_size: Bool32,
31530    pub max_frame_size: VideoEncodeH264FrameSizeKHR,
31531}
31532
31533impl Default for VideoEncodeH264RateControlLayerInfoKHR {
31534    #[inline]
31535    fn default() -> Self {
31536        Self {
31537            s_type: StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR,
31538            next: ptr::null(),
31539            use_min_qp: Bool32::default(),
31540            min_qp: VideoEncodeH264QpKHR::default(),
31541            use_max_qp: Bool32::default(),
31542            max_qp: VideoEncodeH264QpKHR::default(),
31543            use_max_frame_size: Bool32::default(),
31544            max_frame_size: VideoEncodeH264FrameSizeKHR::default(),
31545        }
31546    }
31547}
31548
31549unsafe impl Send for VideoEncodeH264RateControlLayerInfoKHR {}
31550unsafe impl Sync for VideoEncodeH264RateControlLayerInfoKHR {}
31551
31552/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionCreateInfoKHR.html>
31553#[repr(C)]
31554#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31555pub struct VideoEncodeH264SessionCreateInfoKHR {
31556    pub s_type: StructureType,
31557    pub next: *const c_void,
31558    pub use_max_level_idc: Bool32,
31559    pub max_level_idc: video::StdVideoH264LevelIdc,
31560}
31561
31562impl Default for VideoEncodeH264SessionCreateInfoKHR {
31563    #[inline]
31564    fn default() -> Self {
31565        Self {
31566            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR,
31567            next: ptr::null(),
31568            use_max_level_idc: Bool32::default(),
31569            max_level_idc: video::StdVideoH264LevelIdc::default(),
31570        }
31571    }
31572}
31573
31574unsafe impl Send for VideoEncodeH264SessionCreateInfoKHR {}
31575unsafe impl Sync for VideoEncodeH264SessionCreateInfoKHR {}
31576
31577/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersAddInfoKHR.html>
31578#[repr(C)]
31579#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31580pub struct VideoEncodeH264SessionParametersAddInfoKHR {
31581    pub s_type: StructureType,
31582    pub next: *const c_void,
31583    pub std_sps_count: u32,
31584    pub std_sp_ss: *const video::StdVideoH264SequenceParameterSet,
31585    pub std_pps_count: u32,
31586    pub std_pp_ss: *const video::StdVideoH264PictureParameterSet,
31587}
31588
31589impl Default for VideoEncodeH264SessionParametersAddInfoKHR {
31590    #[inline]
31591    fn default() -> Self {
31592        Self {
31593            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR,
31594            next: ptr::null(),
31595            std_sps_count: u32::default(),
31596            std_sp_ss: ptr::null(),
31597            std_pps_count: u32::default(),
31598            std_pp_ss: ptr::null(),
31599        }
31600    }
31601}
31602
31603unsafe impl Send for VideoEncodeH264SessionParametersAddInfoKHR {}
31604unsafe impl Sync for VideoEncodeH264SessionParametersAddInfoKHR {}
31605
31606/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersCreateInfoKHR.html>
31607#[repr(C)]
31608#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31609pub struct VideoEncodeH264SessionParametersCreateInfoKHR {
31610    pub s_type: StructureType,
31611    pub next: *const c_void,
31612    pub max_std_sps_count: u32,
31613    pub max_std_pps_count: u32,
31614    pub parameters_add_info: *const VideoEncodeH264SessionParametersAddInfoKHR,
31615}
31616
31617impl Default for VideoEncodeH264SessionParametersCreateInfoKHR {
31618    #[inline]
31619    fn default() -> Self {
31620        Self {
31621            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR,
31622            next: ptr::null(),
31623            max_std_sps_count: u32::default(),
31624            max_std_pps_count: u32::default(),
31625            parameters_add_info: ptr::null(),
31626        }
31627    }
31628}
31629
31630unsafe impl Send for VideoEncodeH264SessionParametersCreateInfoKHR {}
31631unsafe impl Sync for VideoEncodeH264SessionParametersCreateInfoKHR {}
31632
31633/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersFeedbackInfoKHR.html>
31634#[repr(C)]
31635#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31636pub struct VideoEncodeH264SessionParametersFeedbackInfoKHR {
31637    pub s_type: StructureType,
31638    pub next: *mut c_void,
31639    pub has_std_sps_overrides: Bool32,
31640    pub has_std_pps_overrides: Bool32,
31641}
31642
31643impl Default for VideoEncodeH264SessionParametersFeedbackInfoKHR {
31644    #[inline]
31645    fn default() -> Self {
31646        Self {
31647            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
31648            next: ptr::null_mut(),
31649            has_std_sps_overrides: Bool32::default(),
31650            has_std_pps_overrides: Bool32::default(),
31651        }
31652    }
31653}
31654
31655unsafe impl Send for VideoEncodeH264SessionParametersFeedbackInfoKHR {}
31656unsafe impl Sync for VideoEncodeH264SessionParametersFeedbackInfoKHR {}
31657
31658/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersGetInfoKHR.html>
31659#[repr(C)]
31660#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31661pub struct VideoEncodeH264SessionParametersGetInfoKHR {
31662    pub s_type: StructureType,
31663    pub next: *const c_void,
31664    pub write_std_sps: Bool32,
31665    pub write_std_pps: Bool32,
31666    pub std_sps_id: u32,
31667    pub std_pps_id: u32,
31668}
31669
31670impl Default for VideoEncodeH264SessionParametersGetInfoKHR {
31671    #[inline]
31672    fn default() -> Self {
31673        Self {
31674            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR,
31675            next: ptr::null(),
31676            write_std_sps: Bool32::default(),
31677            write_std_pps: Bool32::default(),
31678            std_sps_id: u32::default(),
31679            std_pps_id: u32::default(),
31680        }
31681    }
31682}
31683
31684unsafe impl Send for VideoEncodeH264SessionParametersGetInfoKHR {}
31685unsafe impl Sync for VideoEncodeH264SessionParametersGetInfoKHR {}
31686
31687/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265CapabilitiesKHR.html>
31688#[repr(C)]
31689#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31690pub struct VideoEncodeH265CapabilitiesKHR {
31691    pub s_type: StructureType,
31692    pub next: *mut c_void,
31693    pub flags: VideoEncodeH265CapabilityFlagsKHR,
31694    pub max_level_idc: video::StdVideoH265LevelIdc,
31695    pub max_slice_segment_count: u32,
31696    pub max_tiles: Extent2D,
31697    pub ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR,
31698    pub transform_block_sizes: VideoEncodeH265TransformBlockSizeFlagsKHR,
31699    pub max_p_picture_l0_reference_count: u32,
31700    pub max_b_picture_l0_reference_count: u32,
31701    pub max_l1_reference_count: u32,
31702    pub max_sub_layer_count: u32,
31703    pub expect_dyadic_temporal_sub_layer_pattern: Bool32,
31704    pub min_qp: i32,
31705    pub max_qp: i32,
31706    pub prefers_gop_remaining_frames: Bool32,
31707    pub requires_gop_remaining_frames: Bool32,
31708    pub std_syntax_flags: VideoEncodeH265StdFlagsKHR,
31709}
31710
31711impl Default for VideoEncodeH265CapabilitiesKHR {
31712    #[inline]
31713    fn default() -> Self {
31714        Self {
31715            s_type: StructureType::VIDEO_ENCODE_H265_CAPABILITIES_KHR,
31716            next: ptr::null_mut(),
31717            flags: VideoEncodeH265CapabilityFlagsKHR::default(),
31718            max_level_idc: video::StdVideoH265LevelIdc::default(),
31719            max_slice_segment_count: u32::default(),
31720            max_tiles: Extent2D::default(),
31721            ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR::default(),
31722            transform_block_sizes: VideoEncodeH265TransformBlockSizeFlagsKHR::default(),
31723            max_p_picture_l0_reference_count: u32::default(),
31724            max_b_picture_l0_reference_count: u32::default(),
31725            max_l1_reference_count: u32::default(),
31726            max_sub_layer_count: u32::default(),
31727            expect_dyadic_temporal_sub_layer_pattern: Bool32::default(),
31728            min_qp: i32::default(),
31729            max_qp: i32::default(),
31730            prefers_gop_remaining_frames: Bool32::default(),
31731            requires_gop_remaining_frames: Bool32::default(),
31732            std_syntax_flags: VideoEncodeH265StdFlagsKHR::default(),
31733        }
31734    }
31735}
31736
31737unsafe impl Send for VideoEncodeH265CapabilitiesKHR {}
31738unsafe impl Sync for VideoEncodeH265CapabilitiesKHR {}
31739
31740/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265DpbSlotInfoKHR.html>
31741#[repr(C)]
31742#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31743pub struct VideoEncodeH265DpbSlotInfoKHR {
31744    pub s_type: StructureType,
31745    pub next: *const c_void,
31746    pub std_reference_info: *const video::StdVideoEncodeH265ReferenceInfo,
31747}
31748
31749impl Default for VideoEncodeH265DpbSlotInfoKHR {
31750    #[inline]
31751    fn default() -> Self {
31752        Self {
31753            s_type: StructureType::VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR,
31754            next: ptr::null(),
31755            std_reference_info: ptr::null(),
31756        }
31757    }
31758}
31759
31760unsafe impl Send for VideoEncodeH265DpbSlotInfoKHR {}
31761unsafe impl Sync for VideoEncodeH265DpbSlotInfoKHR {}
31762
31763/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265FrameSizeKHR.html>
31764#[repr(C)]
31765#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
31766pub struct VideoEncodeH265FrameSizeKHR {
31767    pub frame_i_size: u32,
31768    pub frame_p_size: u32,
31769    pub frame_b_size: u32,
31770}
31771
31772/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265GopRemainingFrameInfoKHR.html>
31773#[repr(C)]
31774#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31775pub struct VideoEncodeH265GopRemainingFrameInfoKHR {
31776    pub s_type: StructureType,
31777    pub next: *const c_void,
31778    pub use_gop_remaining_frames: Bool32,
31779    pub gop_remaining_i: u32,
31780    pub gop_remaining_p: u32,
31781    pub gop_remaining_b: u32,
31782}
31783
31784impl Default for VideoEncodeH265GopRemainingFrameInfoKHR {
31785    #[inline]
31786    fn default() -> Self {
31787        Self {
31788            s_type: StructureType::VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR,
31789            next: ptr::null(),
31790            use_gop_remaining_frames: Bool32::default(),
31791            gop_remaining_i: u32::default(),
31792            gop_remaining_p: u32::default(),
31793            gop_remaining_b: u32::default(),
31794        }
31795    }
31796}
31797
31798unsafe impl Send for VideoEncodeH265GopRemainingFrameInfoKHR {}
31799unsafe impl Sync for VideoEncodeH265GopRemainingFrameInfoKHR {}
31800
31801/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265NaluSliceSegmentInfoKHR.html>
31802#[repr(C)]
31803#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31804pub struct VideoEncodeH265NaluSliceSegmentInfoKHR {
31805    pub s_type: StructureType,
31806    pub next: *const c_void,
31807    pub constant_qp: i32,
31808    pub std_slice_segment_header: *const video::StdVideoEncodeH265SliceSegmentHeader,
31809}
31810
31811impl Default for VideoEncodeH265NaluSliceSegmentInfoKHR {
31812    #[inline]
31813    fn default() -> Self {
31814        Self {
31815            s_type: StructureType::VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR,
31816            next: ptr::null(),
31817            constant_qp: i32::default(),
31818            std_slice_segment_header: ptr::null(),
31819        }
31820    }
31821}
31822
31823unsafe impl Send for VideoEncodeH265NaluSliceSegmentInfoKHR {}
31824unsafe impl Sync for VideoEncodeH265NaluSliceSegmentInfoKHR {}
31825
31826/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265PictureInfoKHR.html>
31827#[repr(C)]
31828#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31829pub struct VideoEncodeH265PictureInfoKHR {
31830    pub s_type: StructureType,
31831    pub next: *const c_void,
31832    pub nalu_slice_segment_entry_count: u32,
31833    pub nalu_slice_segment_entries: *const VideoEncodeH265NaluSliceSegmentInfoKHR,
31834    pub std_picture_info: *const video::StdVideoEncodeH265PictureInfo,
31835}
31836
31837impl Default for VideoEncodeH265PictureInfoKHR {
31838    #[inline]
31839    fn default() -> Self {
31840        Self {
31841            s_type: StructureType::VIDEO_ENCODE_H265_PICTURE_INFO_KHR,
31842            next: ptr::null(),
31843            nalu_slice_segment_entry_count: u32::default(),
31844            nalu_slice_segment_entries: ptr::null(),
31845            std_picture_info: ptr::null(),
31846        }
31847    }
31848}
31849
31850unsafe impl Send for VideoEncodeH265PictureInfoKHR {}
31851unsafe impl Sync for VideoEncodeH265PictureInfoKHR {}
31852
31853/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265ProfileInfoKHR.html>
31854#[repr(C)]
31855#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31856pub struct VideoEncodeH265ProfileInfoKHR {
31857    pub s_type: StructureType,
31858    pub next: *const c_void,
31859    pub std_profile_idc: video::StdVideoH265ProfileIdc,
31860}
31861
31862impl Default for VideoEncodeH265ProfileInfoKHR {
31863    #[inline]
31864    fn default() -> Self {
31865        Self {
31866            s_type: StructureType::VIDEO_ENCODE_H265_PROFILE_INFO_KHR,
31867            next: ptr::null(),
31868            std_profile_idc: video::StdVideoH265ProfileIdc::default(),
31869        }
31870    }
31871}
31872
31873unsafe impl Send for VideoEncodeH265ProfileInfoKHR {}
31874unsafe impl Sync for VideoEncodeH265ProfileInfoKHR {}
31875
31876/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265QpKHR.html>
31877#[repr(C)]
31878#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
31879pub struct VideoEncodeH265QpKHR {
31880    pub qp_i: i32,
31881    pub qp_p: i32,
31882    pub qp_b: i32,
31883}
31884
31885/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265QualityLevelPropertiesKHR.html>
31886#[repr(C)]
31887#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31888pub struct VideoEncodeH265QualityLevelPropertiesKHR {
31889    pub s_type: StructureType,
31890    pub next: *mut c_void,
31891    pub preferred_rate_control_flags: VideoEncodeH265RateControlFlagsKHR,
31892    pub preferred_gop_frame_count: u32,
31893    pub preferred_idr_period: u32,
31894    pub preferred_consecutive_b_frame_count: u32,
31895    pub preferred_sub_layer_count: u32,
31896    pub preferred_constant_qp: VideoEncodeH265QpKHR,
31897    pub preferred_max_l0_reference_count: u32,
31898    pub preferred_max_l1_reference_count: u32,
31899}
31900
31901impl Default for VideoEncodeH265QualityLevelPropertiesKHR {
31902    #[inline]
31903    fn default() -> Self {
31904        Self {
31905            s_type: StructureType::VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR,
31906            next: ptr::null_mut(),
31907            preferred_rate_control_flags: VideoEncodeH265RateControlFlagsKHR::default(),
31908            preferred_gop_frame_count: u32::default(),
31909            preferred_idr_period: u32::default(),
31910            preferred_consecutive_b_frame_count: u32::default(),
31911            preferred_sub_layer_count: u32::default(),
31912            preferred_constant_qp: VideoEncodeH265QpKHR::default(),
31913            preferred_max_l0_reference_count: u32::default(),
31914            preferred_max_l1_reference_count: u32::default(),
31915        }
31916    }
31917}
31918
31919unsafe impl Send for VideoEncodeH265QualityLevelPropertiesKHR {}
31920unsafe impl Sync for VideoEncodeH265QualityLevelPropertiesKHR {}
31921
31922/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265QuantizationMapCapabilitiesKHR.html>
31923#[repr(C)]
31924#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31925pub struct VideoEncodeH265QuantizationMapCapabilitiesKHR {
31926    pub s_type: StructureType,
31927    pub next: *mut c_void,
31928    pub min_qp_delta: i32,
31929    pub max_qp_delta: i32,
31930}
31931
31932impl Default for VideoEncodeH265QuantizationMapCapabilitiesKHR {
31933    #[inline]
31934    fn default() -> Self {
31935        Self {
31936            s_type: StructureType::VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR,
31937            next: ptr::null_mut(),
31938            min_qp_delta: i32::default(),
31939            max_qp_delta: i32::default(),
31940        }
31941    }
31942}
31943
31944unsafe impl Send for VideoEncodeH265QuantizationMapCapabilitiesKHR {}
31945unsafe impl Sync for VideoEncodeH265QuantizationMapCapabilitiesKHR {}
31946
31947/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265RateControlInfoKHR.html>
31948#[repr(C)]
31949#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31950pub struct VideoEncodeH265RateControlInfoKHR {
31951    pub s_type: StructureType,
31952    pub next: *const c_void,
31953    pub flags: VideoEncodeH265RateControlFlagsKHR,
31954    pub gop_frame_count: u32,
31955    pub idr_period: u32,
31956    pub consecutive_b_frame_count: u32,
31957    pub sub_layer_count: u32,
31958}
31959
31960impl Default for VideoEncodeH265RateControlInfoKHR {
31961    #[inline]
31962    fn default() -> Self {
31963        Self {
31964            s_type: StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR,
31965            next: ptr::null(),
31966            flags: VideoEncodeH265RateControlFlagsKHR::default(),
31967            gop_frame_count: u32::default(),
31968            idr_period: u32::default(),
31969            consecutive_b_frame_count: u32::default(),
31970            sub_layer_count: u32::default(),
31971        }
31972    }
31973}
31974
31975unsafe impl Send for VideoEncodeH265RateControlInfoKHR {}
31976unsafe impl Sync for VideoEncodeH265RateControlInfoKHR {}
31977
31978/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265RateControlLayerInfoKHR.html>
31979#[repr(C)]
31980#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31981pub struct VideoEncodeH265RateControlLayerInfoKHR {
31982    pub s_type: StructureType,
31983    pub next: *const c_void,
31984    pub use_min_qp: Bool32,
31985    pub min_qp: VideoEncodeH265QpKHR,
31986    pub use_max_qp: Bool32,
31987    pub max_qp: VideoEncodeH265QpKHR,
31988    pub use_max_frame_size: Bool32,
31989    pub max_frame_size: VideoEncodeH265FrameSizeKHR,
31990}
31991
31992impl Default for VideoEncodeH265RateControlLayerInfoKHR {
31993    #[inline]
31994    fn default() -> Self {
31995        Self {
31996            s_type: StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR,
31997            next: ptr::null(),
31998            use_min_qp: Bool32::default(),
31999            min_qp: VideoEncodeH265QpKHR::default(),
32000            use_max_qp: Bool32::default(),
32001            max_qp: VideoEncodeH265QpKHR::default(),
32002            use_max_frame_size: Bool32::default(),
32003            max_frame_size: VideoEncodeH265FrameSizeKHR::default(),
32004        }
32005    }
32006}
32007
32008unsafe impl Send for VideoEncodeH265RateControlLayerInfoKHR {}
32009unsafe impl Sync for VideoEncodeH265RateControlLayerInfoKHR {}
32010
32011/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionCreateInfoKHR.html>
32012#[repr(C)]
32013#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32014pub struct VideoEncodeH265SessionCreateInfoKHR {
32015    pub s_type: StructureType,
32016    pub next: *const c_void,
32017    pub use_max_level_idc: Bool32,
32018    pub max_level_idc: video::StdVideoH265LevelIdc,
32019}
32020
32021impl Default for VideoEncodeH265SessionCreateInfoKHR {
32022    #[inline]
32023    fn default() -> Self {
32024        Self {
32025            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR,
32026            next: ptr::null(),
32027            use_max_level_idc: Bool32::default(),
32028            max_level_idc: video::StdVideoH265LevelIdc::default(),
32029        }
32030    }
32031}
32032
32033unsafe impl Send for VideoEncodeH265SessionCreateInfoKHR {}
32034unsafe impl Sync for VideoEncodeH265SessionCreateInfoKHR {}
32035
32036/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersAddInfoKHR.html>
32037#[repr(C)]
32038#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32039pub struct VideoEncodeH265SessionParametersAddInfoKHR {
32040    pub s_type: StructureType,
32041    pub next: *const c_void,
32042    pub std_vps_count: u32,
32043    pub std_vp_ss: *const video::StdVideoH265VideoParameterSet,
32044    pub std_sps_count: u32,
32045    pub std_sp_ss: *const video::StdVideoH265SequenceParameterSet,
32046    pub std_pps_count: u32,
32047    pub std_pp_ss: *const video::StdVideoH265PictureParameterSet,
32048}
32049
32050impl Default for VideoEncodeH265SessionParametersAddInfoKHR {
32051    #[inline]
32052    fn default() -> Self {
32053        Self {
32054            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR,
32055            next: ptr::null(),
32056            std_vps_count: u32::default(),
32057            std_vp_ss: ptr::null(),
32058            std_sps_count: u32::default(),
32059            std_sp_ss: ptr::null(),
32060            std_pps_count: u32::default(),
32061            std_pp_ss: ptr::null(),
32062        }
32063    }
32064}
32065
32066unsafe impl Send for VideoEncodeH265SessionParametersAddInfoKHR {}
32067unsafe impl Sync for VideoEncodeH265SessionParametersAddInfoKHR {}
32068
32069/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersCreateInfoKHR.html>
32070#[repr(C)]
32071#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32072pub struct VideoEncodeH265SessionParametersCreateInfoKHR {
32073    pub s_type: StructureType,
32074    pub next: *const c_void,
32075    pub max_std_vps_count: u32,
32076    pub max_std_sps_count: u32,
32077    pub max_std_pps_count: u32,
32078    pub parameters_add_info: *const VideoEncodeH265SessionParametersAddInfoKHR,
32079}
32080
32081impl Default for VideoEncodeH265SessionParametersCreateInfoKHR {
32082    #[inline]
32083    fn default() -> Self {
32084        Self {
32085            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR,
32086            next: ptr::null(),
32087            max_std_vps_count: u32::default(),
32088            max_std_sps_count: u32::default(),
32089            max_std_pps_count: u32::default(),
32090            parameters_add_info: ptr::null(),
32091        }
32092    }
32093}
32094
32095unsafe impl Send for VideoEncodeH265SessionParametersCreateInfoKHR {}
32096unsafe impl Sync for VideoEncodeH265SessionParametersCreateInfoKHR {}
32097
32098/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersFeedbackInfoKHR.html>
32099#[repr(C)]
32100#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32101pub struct VideoEncodeH265SessionParametersFeedbackInfoKHR {
32102    pub s_type: StructureType,
32103    pub next: *mut c_void,
32104    pub has_std_vps_overrides: Bool32,
32105    pub has_std_sps_overrides: Bool32,
32106    pub has_std_pps_overrides: Bool32,
32107}
32108
32109impl Default for VideoEncodeH265SessionParametersFeedbackInfoKHR {
32110    #[inline]
32111    fn default() -> Self {
32112        Self {
32113            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
32114            next: ptr::null_mut(),
32115            has_std_vps_overrides: Bool32::default(),
32116            has_std_sps_overrides: Bool32::default(),
32117            has_std_pps_overrides: Bool32::default(),
32118        }
32119    }
32120}
32121
32122unsafe impl Send for VideoEncodeH265SessionParametersFeedbackInfoKHR {}
32123unsafe impl Sync for VideoEncodeH265SessionParametersFeedbackInfoKHR {}
32124
32125/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersGetInfoKHR.html>
32126#[repr(C)]
32127#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32128pub struct VideoEncodeH265SessionParametersGetInfoKHR {
32129    pub s_type: StructureType,
32130    pub next: *const c_void,
32131    pub write_std_vps: Bool32,
32132    pub write_std_sps: Bool32,
32133    pub write_std_pps: Bool32,
32134    pub std_vps_id: u32,
32135    pub std_sps_id: u32,
32136    pub std_pps_id: u32,
32137}
32138
32139impl Default for VideoEncodeH265SessionParametersGetInfoKHR {
32140    #[inline]
32141    fn default() -> Self {
32142        Self {
32143            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR,
32144            next: ptr::null(),
32145            write_std_vps: Bool32::default(),
32146            write_std_sps: Bool32::default(),
32147            write_std_pps: Bool32::default(),
32148            std_vps_id: u32::default(),
32149            std_sps_id: u32::default(),
32150            std_pps_id: u32::default(),
32151        }
32152    }
32153}
32154
32155unsafe impl Send for VideoEncodeH265SessionParametersGetInfoKHR {}
32156unsafe impl Sync for VideoEncodeH265SessionParametersGetInfoKHR {}
32157
32158/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeInfoKHR.html>
32159#[repr(C)]
32160#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32161pub struct VideoEncodeInfoKHR {
32162    pub s_type: StructureType,
32163    pub next: *const c_void,
32164    pub flags: VideoEncodeFlagsKHR,
32165    pub dst_buffer: Buffer,
32166    pub dst_buffer_offset: DeviceSize,
32167    pub dst_buffer_range: DeviceSize,
32168    pub src_picture_resource: VideoPictureResourceInfoKHR,
32169    pub setup_reference_slot: *const VideoReferenceSlotInfoKHR,
32170    pub reference_slot_count: u32,
32171    pub reference_slots: *const VideoReferenceSlotInfoKHR,
32172    pub preceding_externally_encoded_bytes: u32,
32173}
32174
32175impl Default for VideoEncodeInfoKHR {
32176    #[inline]
32177    fn default() -> Self {
32178        Self {
32179            s_type: StructureType::VIDEO_ENCODE_INFO_KHR,
32180            next: ptr::null(),
32181            flags: VideoEncodeFlagsKHR::default(),
32182            dst_buffer: Buffer::default(),
32183            dst_buffer_offset: DeviceSize::default(),
32184            dst_buffer_range: DeviceSize::default(),
32185            src_picture_resource: VideoPictureResourceInfoKHR::default(),
32186            setup_reference_slot: ptr::null(),
32187            reference_slot_count: u32::default(),
32188            reference_slots: ptr::null(),
32189            preceding_externally_encoded_bytes: u32::default(),
32190        }
32191    }
32192}
32193
32194unsafe impl Send for VideoEncodeInfoKHR {}
32195unsafe impl Sync for VideoEncodeInfoKHR {}
32196
32197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeIntraRefreshCapabilitiesKHR.html>
32198#[repr(C)]
32199#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32200pub struct VideoEncodeIntraRefreshCapabilitiesKHR {
32201    pub s_type: StructureType,
32202    pub next: *mut c_void,
32203    pub intra_refresh_modes: VideoEncodeIntraRefreshModeFlagsKHR,
32204    pub max_intra_refresh_cycle_duration: u32,
32205    pub max_intra_refresh_active_reference_pictures: u32,
32206    pub partition_independent_intra_refresh_regions: Bool32,
32207    pub non_rectangular_intra_refresh_regions: Bool32,
32208}
32209
32210impl Default for VideoEncodeIntraRefreshCapabilitiesKHR {
32211    #[inline]
32212    fn default() -> Self {
32213        Self {
32214            s_type: StructureType::VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR,
32215            next: ptr::null_mut(),
32216            intra_refresh_modes: VideoEncodeIntraRefreshModeFlagsKHR::default(),
32217            max_intra_refresh_cycle_duration: u32::default(),
32218            max_intra_refresh_active_reference_pictures: u32::default(),
32219            partition_independent_intra_refresh_regions: Bool32::default(),
32220            non_rectangular_intra_refresh_regions: Bool32::default(),
32221        }
32222    }
32223}
32224
32225unsafe impl Send for VideoEncodeIntraRefreshCapabilitiesKHR {}
32226unsafe impl Sync for VideoEncodeIntraRefreshCapabilitiesKHR {}
32227
32228/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeIntraRefreshInfoKHR.html>
32229#[repr(C)]
32230#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32231pub struct VideoEncodeIntraRefreshInfoKHR {
32232    pub s_type: StructureType,
32233    pub next: *const c_void,
32234    pub intra_refresh_cycle_duration: u32,
32235    pub intra_refresh_index: u32,
32236}
32237
32238impl Default for VideoEncodeIntraRefreshInfoKHR {
32239    #[inline]
32240    fn default() -> Self {
32241        Self {
32242            s_type: StructureType::VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR,
32243            next: ptr::null(),
32244            intra_refresh_cycle_duration: u32::default(),
32245            intra_refresh_index: u32::default(),
32246        }
32247    }
32248}
32249
32250unsafe impl Send for VideoEncodeIntraRefreshInfoKHR {}
32251unsafe impl Sync for VideoEncodeIntraRefreshInfoKHR {}
32252
32253/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeProfileRgbConversionInfoVALVE.html>
32254#[repr(C)]
32255#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32256pub struct VideoEncodeProfileRgbConversionInfoVALVE {
32257    pub s_type: StructureType,
32258    pub next: *const c_void,
32259    pub perform_encode_rgb_conversion: Bool32,
32260}
32261
32262impl Default for VideoEncodeProfileRgbConversionInfoVALVE {
32263    #[inline]
32264    fn default() -> Self {
32265        Self {
32266            s_type: StructureType::VIDEO_ENCODE_PROFILE_RGB_CONVERSION_INFO_VALVE,
32267            next: ptr::null(),
32268            perform_encode_rgb_conversion: Bool32::default(),
32269        }
32270    }
32271}
32272
32273unsafe impl Send for VideoEncodeProfileRgbConversionInfoVALVE {}
32274unsafe impl Sync for VideoEncodeProfileRgbConversionInfoVALVE {}
32275
32276/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQualityLevelInfoKHR.html>
32277#[repr(C)]
32278#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32279pub struct VideoEncodeQualityLevelInfoKHR {
32280    pub s_type: StructureType,
32281    pub next: *const c_void,
32282    pub quality_level: u32,
32283}
32284
32285impl Default for VideoEncodeQualityLevelInfoKHR {
32286    #[inline]
32287    fn default() -> Self {
32288        Self {
32289            s_type: StructureType::VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR,
32290            next: ptr::null(),
32291            quality_level: u32::default(),
32292        }
32293    }
32294}
32295
32296unsafe impl Send for VideoEncodeQualityLevelInfoKHR {}
32297unsafe impl Sync for VideoEncodeQualityLevelInfoKHR {}
32298
32299/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQualityLevelPropertiesKHR.html>
32300#[repr(C)]
32301#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32302pub struct VideoEncodeQualityLevelPropertiesKHR {
32303    pub s_type: StructureType,
32304    pub next: *mut c_void,
32305    pub preferred_rate_control_mode: VideoEncodeRateControlModeFlagsKHR,
32306    pub preferred_rate_control_layer_count: u32,
32307}
32308
32309impl Default for VideoEncodeQualityLevelPropertiesKHR {
32310    #[inline]
32311    fn default() -> Self {
32312        Self {
32313            s_type: StructureType::VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR,
32314            next: ptr::null_mut(),
32315            preferred_rate_control_mode: VideoEncodeRateControlModeFlagsKHR::default(),
32316            preferred_rate_control_layer_count: u32::default(),
32317        }
32318    }
32319}
32320
32321unsafe impl Send for VideoEncodeQualityLevelPropertiesKHR {}
32322unsafe impl Sync for VideoEncodeQualityLevelPropertiesKHR {}
32323
32324/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapCapabilitiesKHR.html>
32325#[repr(C)]
32326#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32327pub struct VideoEncodeQuantizationMapCapabilitiesKHR {
32328    pub s_type: StructureType,
32329    pub next: *mut c_void,
32330    pub max_quantization_map_extent: Extent2D,
32331}
32332
32333impl Default for VideoEncodeQuantizationMapCapabilitiesKHR {
32334    #[inline]
32335    fn default() -> Self {
32336        Self {
32337            s_type: StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR,
32338            next: ptr::null_mut(),
32339            max_quantization_map_extent: Extent2D::default(),
32340        }
32341    }
32342}
32343
32344unsafe impl Send for VideoEncodeQuantizationMapCapabilitiesKHR {}
32345unsafe impl Sync for VideoEncodeQuantizationMapCapabilitiesKHR {}
32346
32347/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapInfoKHR.html>
32348#[repr(C)]
32349#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32350pub struct VideoEncodeQuantizationMapInfoKHR {
32351    pub s_type: StructureType,
32352    pub next: *const c_void,
32353    pub quantization_map: ImageView,
32354    pub quantization_map_extent: Extent2D,
32355}
32356
32357impl Default for VideoEncodeQuantizationMapInfoKHR {
32358    #[inline]
32359    fn default() -> Self {
32360        Self {
32361            s_type: StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR,
32362            next: ptr::null(),
32363            quantization_map: ImageView::default(),
32364            quantization_map_extent: Extent2D::default(),
32365        }
32366    }
32367}
32368
32369unsafe impl Send for VideoEncodeQuantizationMapInfoKHR {}
32370unsafe impl Sync for VideoEncodeQuantizationMapInfoKHR {}
32371
32372/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR.html>
32373#[repr(C)]
32374#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32375pub struct VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {
32376    pub s_type: StructureType,
32377    pub next: *const c_void,
32378    pub quantization_map_texel_size: Extent2D,
32379}
32380
32381impl Default for VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {
32382    #[inline]
32383    fn default() -> Self {
32384        Self {
32385            s_type: StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR,
32386            next: ptr::null(),
32387            quantization_map_texel_size: Extent2D::default(),
32388        }
32389    }
32390}
32391
32392unsafe impl Send for VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {}
32393unsafe impl Sync for VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {}
32394
32395/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRateControlInfoKHR.html>
32396#[repr(C)]
32397#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32398pub struct VideoEncodeRateControlInfoKHR {
32399    pub s_type: StructureType,
32400    pub next: *const c_void,
32401    pub flags: VideoEncodeRateControlFlagsKHR,
32402    pub rate_control_mode: VideoEncodeRateControlModeFlagsKHR,
32403    pub layer_count: u32,
32404    pub layers: *const VideoEncodeRateControlLayerInfoKHR,
32405    pub virtual_buffer_size_in_ms: u32,
32406    pub initial_virtual_buffer_size_in_ms: u32,
32407}
32408
32409impl Default for VideoEncodeRateControlInfoKHR {
32410    #[inline]
32411    fn default() -> Self {
32412        Self {
32413            s_type: StructureType::VIDEO_ENCODE_RATE_CONTROL_INFO_KHR,
32414            next: ptr::null(),
32415            flags: VideoEncodeRateControlFlagsKHR::default(),
32416            rate_control_mode: VideoEncodeRateControlModeFlagsKHR::default(),
32417            layer_count: u32::default(),
32418            layers: ptr::null(),
32419            virtual_buffer_size_in_ms: u32::default(),
32420            initial_virtual_buffer_size_in_ms: u32::default(),
32421        }
32422    }
32423}
32424
32425unsafe impl Send for VideoEncodeRateControlInfoKHR {}
32426unsafe impl Sync for VideoEncodeRateControlInfoKHR {}
32427
32428/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRateControlLayerInfoKHR.html>
32429#[repr(C)]
32430#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32431pub struct VideoEncodeRateControlLayerInfoKHR {
32432    pub s_type: StructureType,
32433    pub next: *const c_void,
32434    pub average_bitrate: u64,
32435    pub max_bitrate: u64,
32436    pub frame_rate_numerator: u32,
32437    pub frame_rate_denominator: u32,
32438}
32439
32440impl Default for VideoEncodeRateControlLayerInfoKHR {
32441    #[inline]
32442    fn default() -> Self {
32443        Self {
32444            s_type: StructureType::VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR,
32445            next: ptr::null(),
32446            average_bitrate: u64::default(),
32447            max_bitrate: u64::default(),
32448            frame_rate_numerator: u32::default(),
32449            frame_rate_denominator: u32::default(),
32450        }
32451    }
32452}
32453
32454unsafe impl Send for VideoEncodeRateControlLayerInfoKHR {}
32455unsafe impl Sync for VideoEncodeRateControlLayerInfoKHR {}
32456
32457/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRgbConversionCapabilitiesVALVE.html>
32458#[repr(C)]
32459#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32460pub struct VideoEncodeRgbConversionCapabilitiesVALVE {
32461    pub s_type: StructureType,
32462    pub next: *mut c_void,
32463    pub rgb_models: VideoEncodeRgbModelConversionFlagsVALVE,
32464    pub rgb_ranges: VideoEncodeRgbRangeCompressionFlagsVALVE,
32465    pub x_chroma_offsets: VideoEncodeRgbChromaOffsetFlagsVALVE,
32466    pub y_chroma_offsets: VideoEncodeRgbChromaOffsetFlagsVALVE,
32467}
32468
32469impl Default for VideoEncodeRgbConversionCapabilitiesVALVE {
32470    #[inline]
32471    fn default() -> Self {
32472        Self {
32473            s_type: StructureType::VIDEO_ENCODE_RGB_CONVERSION_CAPABILITIES_VALVE,
32474            next: ptr::null_mut(),
32475            rgb_models: VideoEncodeRgbModelConversionFlagsVALVE::default(),
32476            rgb_ranges: VideoEncodeRgbRangeCompressionFlagsVALVE::default(),
32477            x_chroma_offsets: VideoEncodeRgbChromaOffsetFlagsVALVE::default(),
32478            y_chroma_offsets: VideoEncodeRgbChromaOffsetFlagsVALVE::default(),
32479        }
32480    }
32481}
32482
32483unsafe impl Send for VideoEncodeRgbConversionCapabilitiesVALVE {}
32484unsafe impl Sync for VideoEncodeRgbConversionCapabilitiesVALVE {}
32485
32486/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionIntraRefreshCreateInfoKHR.html>
32487#[repr(C)]
32488#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32489pub struct VideoEncodeSessionIntraRefreshCreateInfoKHR {
32490    pub s_type: StructureType,
32491    pub next: *const c_void,
32492    pub intra_refresh_mode: VideoEncodeIntraRefreshModeFlagsKHR,
32493}
32494
32495impl Default for VideoEncodeSessionIntraRefreshCreateInfoKHR {
32496    #[inline]
32497    fn default() -> Self {
32498        Self {
32499            s_type: StructureType::VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR,
32500            next: ptr::null(),
32501            intra_refresh_mode: VideoEncodeIntraRefreshModeFlagsKHR::default(),
32502        }
32503    }
32504}
32505
32506unsafe impl Send for VideoEncodeSessionIntraRefreshCreateInfoKHR {}
32507unsafe impl Sync for VideoEncodeSessionIntraRefreshCreateInfoKHR {}
32508
32509/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionParametersFeedbackInfoKHR.html>
32510#[repr(C)]
32511#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32512pub struct VideoEncodeSessionParametersFeedbackInfoKHR {
32513    pub s_type: StructureType,
32514    pub next: *mut c_void,
32515    pub has_overrides: Bool32,
32516}
32517
32518impl Default for VideoEncodeSessionParametersFeedbackInfoKHR {
32519    #[inline]
32520    fn default() -> Self {
32521        Self {
32522            s_type: StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
32523            next: ptr::null_mut(),
32524            has_overrides: Bool32::default(),
32525        }
32526    }
32527}
32528
32529unsafe impl Send for VideoEncodeSessionParametersFeedbackInfoKHR {}
32530unsafe impl Sync for VideoEncodeSessionParametersFeedbackInfoKHR {}
32531
32532/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionParametersGetInfoKHR.html>
32533#[repr(C)]
32534#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32535pub struct VideoEncodeSessionParametersGetInfoKHR {
32536    pub s_type: StructureType,
32537    pub next: *const c_void,
32538    pub video_session_parameters: VideoSessionParametersKHR,
32539}
32540
32541impl Default for VideoEncodeSessionParametersGetInfoKHR {
32542    #[inline]
32543    fn default() -> Self {
32544        Self {
32545            s_type: StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR,
32546            next: ptr::null(),
32547            video_session_parameters: VideoSessionParametersKHR::default(),
32548        }
32549    }
32550}
32551
32552unsafe impl Send for VideoEncodeSessionParametersGetInfoKHR {}
32553unsafe impl Sync for VideoEncodeSessionParametersGetInfoKHR {}
32554
32555/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionRgbConversionCreateInfoVALVE.html>
32556#[repr(C)]
32557#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32558pub struct VideoEncodeSessionRgbConversionCreateInfoVALVE {
32559    pub s_type: StructureType,
32560    pub next: *const c_void,
32561    pub rgb_model: VideoEncodeRgbModelConversionFlagsVALVE,
32562    pub rgb_range: VideoEncodeRgbRangeCompressionFlagsVALVE,
32563    pub x_chroma_offset: VideoEncodeRgbChromaOffsetFlagsVALVE,
32564    pub y_chroma_offset: VideoEncodeRgbChromaOffsetFlagsVALVE,
32565}
32566
32567impl Default for VideoEncodeSessionRgbConversionCreateInfoVALVE {
32568    #[inline]
32569    fn default() -> Self {
32570        Self {
32571            s_type: StructureType::VIDEO_ENCODE_SESSION_RGB_CONVERSION_CREATE_INFO_VALVE,
32572            next: ptr::null(),
32573            rgb_model: VideoEncodeRgbModelConversionFlagsVALVE::default(),
32574            rgb_range: VideoEncodeRgbRangeCompressionFlagsVALVE::default(),
32575            x_chroma_offset: VideoEncodeRgbChromaOffsetFlagsVALVE::default(),
32576            y_chroma_offset: VideoEncodeRgbChromaOffsetFlagsVALVE::default(),
32577        }
32578    }
32579}
32580
32581unsafe impl Send for VideoEncodeSessionRgbConversionCreateInfoVALVE {}
32582unsafe impl Sync for VideoEncodeSessionRgbConversionCreateInfoVALVE {}
32583
32584/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeUsageInfoKHR.html>
32585#[repr(C)]
32586#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32587pub struct VideoEncodeUsageInfoKHR {
32588    pub s_type: StructureType,
32589    pub next: *const c_void,
32590    pub video_usage_hints: VideoEncodeUsageFlagsKHR,
32591    pub video_content_hints: VideoEncodeContentFlagsKHR,
32592    pub tuning_mode: VideoEncodeTuningModeKHR,
32593}
32594
32595impl Default for VideoEncodeUsageInfoKHR {
32596    #[inline]
32597    fn default() -> Self {
32598        Self {
32599            s_type: StructureType::VIDEO_ENCODE_USAGE_INFO_KHR,
32600            next: ptr::null(),
32601            video_usage_hints: VideoEncodeUsageFlagsKHR::default(),
32602            video_content_hints: VideoEncodeContentFlagsKHR::default(),
32603            tuning_mode: VideoEncodeTuningModeKHR::default(),
32604        }
32605    }
32606}
32607
32608unsafe impl Send for VideoEncodeUsageInfoKHR {}
32609unsafe impl Sync for VideoEncodeUsageInfoKHR {}
32610
32611/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEndCodingInfoKHR.html>
32612#[repr(C)]
32613#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32614pub struct VideoEndCodingInfoKHR {
32615    pub s_type: StructureType,
32616    pub next: *const c_void,
32617    pub flags: VideoEndCodingFlagsKHR,
32618}
32619
32620impl Default for VideoEndCodingInfoKHR {
32621    #[inline]
32622    fn default() -> Self {
32623        Self {
32624            s_type: StructureType::VIDEO_END_CODING_INFO_KHR,
32625            next: ptr::null(),
32626            flags: VideoEndCodingFlagsKHR::default(),
32627        }
32628    }
32629}
32630
32631unsafe impl Send for VideoEndCodingInfoKHR {}
32632unsafe impl Sync for VideoEndCodingInfoKHR {}
32633
32634/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatAV1QuantizationMapPropertiesKHR.html>
32635#[repr(C)]
32636#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32637pub struct VideoFormatAV1QuantizationMapPropertiesKHR {
32638    pub s_type: StructureType,
32639    pub next: *mut c_void,
32640    pub compatible_superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR,
32641}
32642
32643impl Default for VideoFormatAV1QuantizationMapPropertiesKHR {
32644    #[inline]
32645    fn default() -> Self {
32646        Self {
32647            s_type: StructureType::VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR,
32648            next: ptr::null_mut(),
32649            compatible_superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR::default(),
32650        }
32651    }
32652}
32653
32654unsafe impl Send for VideoFormatAV1QuantizationMapPropertiesKHR {}
32655unsafe impl Sync for VideoFormatAV1QuantizationMapPropertiesKHR {}
32656
32657/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatH265QuantizationMapPropertiesKHR.html>
32658#[repr(C)]
32659#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32660pub struct VideoFormatH265QuantizationMapPropertiesKHR {
32661    pub s_type: StructureType,
32662    pub next: *mut c_void,
32663    pub compatible_ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR,
32664}
32665
32666impl Default for VideoFormatH265QuantizationMapPropertiesKHR {
32667    #[inline]
32668    fn default() -> Self {
32669        Self {
32670            s_type: StructureType::VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR,
32671            next: ptr::null_mut(),
32672            compatible_ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR::default(),
32673        }
32674    }
32675}
32676
32677unsafe impl Send for VideoFormatH265QuantizationMapPropertiesKHR {}
32678unsafe impl Sync for VideoFormatH265QuantizationMapPropertiesKHR {}
32679
32680/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatPropertiesKHR.html>
32681#[repr(C)]
32682#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32683pub struct VideoFormatPropertiesKHR {
32684    pub s_type: StructureType,
32685    pub next: *mut c_void,
32686    pub format: Format,
32687    pub component_mapping: ComponentMapping,
32688    pub image_create_flags: ImageCreateFlags,
32689    pub image_type: ImageType,
32690    pub image_tiling: ImageTiling,
32691    pub image_usage_flags: ImageUsageFlags,
32692}
32693
32694impl Default for VideoFormatPropertiesKHR {
32695    #[inline]
32696    fn default() -> Self {
32697        Self {
32698            s_type: StructureType::VIDEO_FORMAT_PROPERTIES_KHR,
32699            next: ptr::null_mut(),
32700            format: Format::default(),
32701            component_mapping: ComponentMapping::default(),
32702            image_create_flags: ImageCreateFlags::default(),
32703            image_type: ImageType::default(),
32704            image_tiling: ImageTiling::default(),
32705            image_usage_flags: ImageUsageFlags::default(),
32706        }
32707    }
32708}
32709
32710unsafe impl Send for VideoFormatPropertiesKHR {}
32711unsafe impl Sync for VideoFormatPropertiesKHR {}
32712
32713/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatQuantizationMapPropertiesKHR.html>
32714#[repr(C)]
32715#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32716pub struct VideoFormatQuantizationMapPropertiesKHR {
32717    pub s_type: StructureType,
32718    pub next: *mut c_void,
32719    pub quantization_map_texel_size: Extent2D,
32720}
32721
32722impl Default for VideoFormatQuantizationMapPropertiesKHR {
32723    #[inline]
32724    fn default() -> Self {
32725        Self {
32726            s_type: StructureType::VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR,
32727            next: ptr::null_mut(),
32728            quantization_map_texel_size: Extent2D::default(),
32729        }
32730    }
32731}
32732
32733unsafe impl Send for VideoFormatQuantizationMapPropertiesKHR {}
32734unsafe impl Sync for VideoFormatQuantizationMapPropertiesKHR {}
32735
32736/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoInlineQueryInfoKHR.html>
32737#[repr(C)]
32738#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32739pub struct VideoInlineQueryInfoKHR {
32740    pub s_type: StructureType,
32741    pub next: *const c_void,
32742    pub query_pool: QueryPool,
32743    pub first_query: u32,
32744    pub query_count: u32,
32745}
32746
32747impl Default for VideoInlineQueryInfoKHR {
32748    #[inline]
32749    fn default() -> Self {
32750        Self {
32751            s_type: StructureType::VIDEO_INLINE_QUERY_INFO_KHR,
32752            next: ptr::null(),
32753            query_pool: QueryPool::default(),
32754            first_query: u32::default(),
32755            query_count: u32::default(),
32756        }
32757    }
32758}
32759
32760unsafe impl Send for VideoInlineQueryInfoKHR {}
32761unsafe impl Sync for VideoInlineQueryInfoKHR {}
32762
32763/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoPictureResourceInfoKHR.html>
32764#[repr(C)]
32765#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32766pub struct VideoPictureResourceInfoKHR {
32767    pub s_type: StructureType,
32768    pub next: *const c_void,
32769    pub coded_offset: Offset2D,
32770    pub coded_extent: Extent2D,
32771    pub base_array_layer: u32,
32772    pub image_view_binding: ImageView,
32773}
32774
32775impl Default for VideoPictureResourceInfoKHR {
32776    #[inline]
32777    fn default() -> Self {
32778        Self {
32779            s_type: StructureType::VIDEO_PICTURE_RESOURCE_INFO_KHR,
32780            next: ptr::null(),
32781            coded_offset: Offset2D::default(),
32782            coded_extent: Extent2D::default(),
32783            base_array_layer: u32::default(),
32784            image_view_binding: ImageView::default(),
32785        }
32786    }
32787}
32788
32789unsafe impl Send for VideoPictureResourceInfoKHR {}
32790unsafe impl Sync for VideoPictureResourceInfoKHR {}
32791
32792/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoProfileInfoKHR.html>
32793#[repr(C)]
32794#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32795pub struct VideoProfileInfoKHR {
32796    pub s_type: StructureType,
32797    pub next: *const c_void,
32798    pub video_codec_operation: VideoCodecOperationFlagsKHR,
32799    pub chroma_subsampling: VideoChromaSubsamplingFlagsKHR,
32800    pub luma_bit_depth: VideoComponentBitDepthFlagsKHR,
32801    pub chroma_bit_depth: VideoComponentBitDepthFlagsKHR,
32802}
32803
32804impl Default for VideoProfileInfoKHR {
32805    #[inline]
32806    fn default() -> Self {
32807        Self {
32808            s_type: StructureType::VIDEO_PROFILE_INFO_KHR,
32809            next: ptr::null(),
32810            video_codec_operation: VideoCodecOperationFlagsKHR::default(),
32811            chroma_subsampling: VideoChromaSubsamplingFlagsKHR::default(),
32812            luma_bit_depth: VideoComponentBitDepthFlagsKHR::default(),
32813            chroma_bit_depth: VideoComponentBitDepthFlagsKHR::default(),
32814        }
32815    }
32816}
32817
32818unsafe impl Send for VideoProfileInfoKHR {}
32819unsafe impl Sync for VideoProfileInfoKHR {}
32820
32821/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoProfileListInfoKHR.html>
32822#[repr(C)]
32823#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32824pub struct VideoProfileListInfoKHR {
32825    pub s_type: StructureType,
32826    pub next: *const c_void,
32827    pub profile_count: u32,
32828    pub profiles: *const VideoProfileInfoKHR,
32829}
32830
32831impl Default for VideoProfileListInfoKHR {
32832    #[inline]
32833    fn default() -> Self {
32834        Self {
32835            s_type: StructureType::VIDEO_PROFILE_LIST_INFO_KHR,
32836            next: ptr::null(),
32837            profile_count: u32::default(),
32838            profiles: ptr::null(),
32839        }
32840    }
32841}
32842
32843unsafe impl Send for VideoProfileListInfoKHR {}
32844unsafe impl Sync for VideoProfileListInfoKHR {}
32845
32846/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoReferenceIntraRefreshInfoKHR.html>
32847#[repr(C)]
32848#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32849pub struct VideoReferenceIntraRefreshInfoKHR {
32850    pub s_type: StructureType,
32851    pub next: *const c_void,
32852    pub dirty_intra_refresh_regions: u32,
32853}
32854
32855impl Default for VideoReferenceIntraRefreshInfoKHR {
32856    #[inline]
32857    fn default() -> Self {
32858        Self {
32859            s_type: StructureType::VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR,
32860            next: ptr::null(),
32861            dirty_intra_refresh_regions: u32::default(),
32862        }
32863    }
32864}
32865
32866unsafe impl Send for VideoReferenceIntraRefreshInfoKHR {}
32867unsafe impl Sync for VideoReferenceIntraRefreshInfoKHR {}
32868
32869/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoReferenceSlotInfoKHR.html>
32870#[repr(C)]
32871#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32872pub struct VideoReferenceSlotInfoKHR {
32873    pub s_type: StructureType,
32874    pub next: *const c_void,
32875    pub slot_index: i32,
32876    pub picture_resource: *const VideoPictureResourceInfoKHR,
32877}
32878
32879impl Default for VideoReferenceSlotInfoKHR {
32880    #[inline]
32881    fn default() -> Self {
32882        Self {
32883            s_type: StructureType::VIDEO_REFERENCE_SLOT_INFO_KHR,
32884            next: ptr::null(),
32885            slot_index: i32::default(),
32886            picture_resource: ptr::null(),
32887        }
32888    }
32889}
32890
32891unsafe impl Send for VideoReferenceSlotInfoKHR {}
32892unsafe impl Sync for VideoReferenceSlotInfoKHR {}
32893
32894/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionCreateInfoKHR.html>
32895#[repr(C)]
32896#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32897pub struct VideoSessionCreateInfoKHR {
32898    pub s_type: StructureType,
32899    pub next: *const c_void,
32900    pub queue_family_index: u32,
32901    pub flags: VideoSessionCreateFlagsKHR,
32902    pub video_profile: *const VideoProfileInfoKHR,
32903    pub picture_format: Format,
32904    pub max_coded_extent: Extent2D,
32905    pub reference_picture_format: Format,
32906    pub max_dpb_slots: u32,
32907    pub max_active_reference_pictures: u32,
32908    pub std_header_version: *const ExtensionProperties,
32909}
32910
32911impl Default for VideoSessionCreateInfoKHR {
32912    #[inline]
32913    fn default() -> Self {
32914        Self {
32915            s_type: StructureType::VIDEO_SESSION_CREATE_INFO_KHR,
32916            next: ptr::null(),
32917            queue_family_index: u32::default(),
32918            flags: VideoSessionCreateFlagsKHR::default(),
32919            video_profile: ptr::null(),
32920            picture_format: Format::default(),
32921            max_coded_extent: Extent2D::default(),
32922            reference_picture_format: Format::default(),
32923            max_dpb_slots: u32::default(),
32924            max_active_reference_pictures: u32::default(),
32925            std_header_version: ptr::null(),
32926        }
32927    }
32928}
32929
32930unsafe impl Send for VideoSessionCreateInfoKHR {}
32931unsafe impl Sync for VideoSessionCreateInfoKHR {}
32932
32933/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionMemoryRequirementsKHR.html>
32934#[repr(C)]
32935#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32936pub struct VideoSessionMemoryRequirementsKHR {
32937    pub s_type: StructureType,
32938    pub next: *mut c_void,
32939    pub memory_bind_index: u32,
32940    pub memory_requirements: MemoryRequirements,
32941}
32942
32943impl Default for VideoSessionMemoryRequirementsKHR {
32944    #[inline]
32945    fn default() -> Self {
32946        Self {
32947            s_type: StructureType::VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR,
32948            next: ptr::null_mut(),
32949            memory_bind_index: u32::default(),
32950            memory_requirements: MemoryRequirements::default(),
32951        }
32952    }
32953}
32954
32955unsafe impl Send for VideoSessionMemoryRequirementsKHR {}
32956unsafe impl Sync for VideoSessionMemoryRequirementsKHR {}
32957
32958/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionParametersCreateInfoKHR.html>
32959#[repr(C)]
32960#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32961pub struct VideoSessionParametersCreateInfoKHR {
32962    pub s_type: StructureType,
32963    pub next: *const c_void,
32964    pub flags: VideoSessionParametersCreateFlagsKHR,
32965    pub video_session_parameters_template: VideoSessionParametersKHR,
32966    pub video_session: VideoSessionKHR,
32967}
32968
32969impl Default for VideoSessionParametersCreateInfoKHR {
32970    #[inline]
32971    fn default() -> Self {
32972        Self {
32973            s_type: StructureType::VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR,
32974            next: ptr::null(),
32975            flags: VideoSessionParametersCreateFlagsKHR::default(),
32976            video_session_parameters_template: VideoSessionParametersKHR::default(),
32977            video_session: VideoSessionKHR::default(),
32978        }
32979    }
32980}
32981
32982unsafe impl Send for VideoSessionParametersCreateInfoKHR {}
32983unsafe impl Sync for VideoSessionParametersCreateInfoKHR {}
32984
32985/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionParametersUpdateInfoKHR.html>
32986#[repr(C)]
32987#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32988pub struct VideoSessionParametersUpdateInfoKHR {
32989    pub s_type: StructureType,
32990    pub next: *const c_void,
32991    pub update_sequence_count: u32,
32992}
32993
32994impl Default for VideoSessionParametersUpdateInfoKHR {
32995    #[inline]
32996    fn default() -> Self {
32997        Self {
32998            s_type: StructureType::VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR,
32999            next: ptr::null(),
33000            update_sequence_count: u32::default(),
33001        }
33002    }
33003}
33004
33005unsafe impl Send for VideoSessionParametersUpdateInfoKHR {}
33006unsafe impl Sync for VideoSessionParametersUpdateInfoKHR {}
33007
33008/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViewport.html>
33009#[repr(C)]
33010#[derive(Copy, Clone, Default, Debug, PartialEq)]
33011pub struct Viewport {
33012    pub x: f32,
33013    pub y: f32,
33014    pub width: f32,
33015    pub height: f32,
33016    pub min_depth: f32,
33017    pub max_depth: f32,
33018}
33019
33020/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViewportSwizzleNV.html>
33021#[repr(C)]
33022#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
33023pub struct ViewportSwizzleNV {
33024    pub x: ViewportCoordinateSwizzleNV,
33025    pub y: ViewportCoordinateSwizzleNV,
33026    pub z: ViewportCoordinateSwizzleNV,
33027    pub w: ViewportCoordinateSwizzleNV,
33028}
33029
33030/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViewportWScalingNV.html>
33031#[repr(C)]
33032#[derive(Copy, Clone, Default, Debug, PartialEq)]
33033pub struct ViewportWScalingNV {
33034    pub xcoeff: f32,
33035    pub ycoeff: f32,
33036}
33037
33038/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWaylandSurfaceCreateInfoKHR.html>
33039#[repr(C)]
33040#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33041pub struct WaylandSurfaceCreateInfoKHR {
33042    pub s_type: StructureType,
33043    pub next: *const c_void,
33044    pub flags: WaylandSurfaceCreateFlagsKHR,
33045    pub display: *mut wl_display,
33046    pub surface: *mut wl_surface,
33047}
33048
33049impl Default for WaylandSurfaceCreateInfoKHR {
33050    #[inline]
33051    fn default() -> Self {
33052        Self {
33053            s_type: StructureType::WAYLAND_SURFACE_CREATE_INFO_KHR,
33054            next: ptr::null(),
33055            flags: WaylandSurfaceCreateFlagsKHR::default(),
33056            display: ptr::null_mut(),
33057            surface: ptr::null_mut(),
33058        }
33059    }
33060}
33061
33062unsafe impl Send for WaylandSurfaceCreateInfoKHR {}
33063unsafe impl Sync for WaylandSurfaceCreateInfoKHR {}
33064
33065/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32KeyedMutexAcquireReleaseInfoKHR.html>
33066#[repr(C)]
33067#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33068pub struct Win32KeyedMutexAcquireReleaseInfoKHR {
33069    pub s_type: StructureType,
33070    pub next: *const c_void,
33071    pub acquire_count: u32,
33072    pub acquire_syncs: *const DeviceMemory,
33073    pub acquire_keys: *const u64,
33074    pub acquire_timeouts: *const u32,
33075    pub release_count: u32,
33076    pub release_syncs: *const DeviceMemory,
33077    pub release_keys: *const u64,
33078}
33079
33080impl Default for Win32KeyedMutexAcquireReleaseInfoKHR {
33081    #[inline]
33082    fn default() -> Self {
33083        Self {
33084            s_type: StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,
33085            next: ptr::null(),
33086            acquire_count: u32::default(),
33087            acquire_syncs: ptr::null(),
33088            acquire_keys: ptr::null(),
33089            acquire_timeouts: ptr::null(),
33090            release_count: u32::default(),
33091            release_syncs: ptr::null(),
33092            release_keys: ptr::null(),
33093        }
33094    }
33095}
33096
33097unsafe impl Send for Win32KeyedMutexAcquireReleaseInfoKHR {}
33098unsafe impl Sync for Win32KeyedMutexAcquireReleaseInfoKHR {}
33099
33100/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32KeyedMutexAcquireReleaseInfoNV.html>
33101#[repr(C)]
33102#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33103pub struct Win32KeyedMutexAcquireReleaseInfoNV {
33104    pub s_type: StructureType,
33105    pub next: *const c_void,
33106    pub acquire_count: u32,
33107    pub acquire_syncs: *const DeviceMemory,
33108    pub acquire_keys: *const u64,
33109    pub acquire_timeout_milliseconds: *const u32,
33110    pub release_count: u32,
33111    pub release_syncs: *const DeviceMemory,
33112    pub release_keys: *const u64,
33113}
33114
33115impl Default for Win32KeyedMutexAcquireReleaseInfoNV {
33116    #[inline]
33117    fn default() -> Self {
33118        Self {
33119            s_type: StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
33120            next: ptr::null(),
33121            acquire_count: u32::default(),
33122            acquire_syncs: ptr::null(),
33123            acquire_keys: ptr::null(),
33124            acquire_timeout_milliseconds: ptr::null(),
33125            release_count: u32::default(),
33126            release_syncs: ptr::null(),
33127            release_keys: ptr::null(),
33128        }
33129    }
33130}
33131
33132unsafe impl Send for Win32KeyedMutexAcquireReleaseInfoNV {}
33133unsafe impl Sync for Win32KeyedMutexAcquireReleaseInfoNV {}
33134
33135/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32SurfaceCreateInfoKHR.html>
33136#[repr(C)]
33137#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33138pub struct Win32SurfaceCreateInfoKHR {
33139    pub s_type: StructureType,
33140    pub next: *const c_void,
33141    pub flags: Win32SurfaceCreateFlagsKHR,
33142    pub hinstance: HINSTANCE,
33143    pub hwnd: HWND,
33144}
33145
33146impl Default for Win32SurfaceCreateInfoKHR {
33147    #[inline]
33148    fn default() -> Self {
33149        Self {
33150            s_type: StructureType::WIN32_SURFACE_CREATE_INFO_KHR,
33151            next: ptr::null(),
33152            flags: Win32SurfaceCreateFlagsKHR::default(),
33153            hinstance: ptr::null_mut(),
33154            hwnd: ptr::null_mut(),
33155        }
33156    }
33157}
33158
33159unsafe impl Send for Win32SurfaceCreateInfoKHR {}
33160unsafe impl Sync for Win32SurfaceCreateInfoKHR {}
33161
33162/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSet.html>
33163#[repr(C)]
33164#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33165pub struct WriteDescriptorSet {
33166    pub s_type: StructureType,
33167    pub next: *const c_void,
33168    pub dst_set: DescriptorSet,
33169    pub dst_binding: u32,
33170    pub dst_array_element: u32,
33171    pub descriptor_count: u32,
33172    pub descriptor_type: DescriptorType,
33173    pub image_info: *const DescriptorImageInfo,
33174    pub buffer_info: *const DescriptorBufferInfo,
33175    pub texel_buffer_view: *const BufferView,
33176}
33177
33178impl Default for WriteDescriptorSet {
33179    #[inline]
33180    fn default() -> Self {
33181        Self {
33182            s_type: StructureType::WRITE_DESCRIPTOR_SET,
33183            next: ptr::null(),
33184            dst_set: DescriptorSet::default(),
33185            dst_binding: u32::default(),
33186            dst_array_element: u32::default(),
33187            descriptor_count: u32::default(),
33188            descriptor_type: DescriptorType::default(),
33189            image_info: ptr::null(),
33190            buffer_info: ptr::null(),
33191            texel_buffer_view: ptr::null(),
33192        }
33193    }
33194}
33195
33196unsafe impl Send for WriteDescriptorSet {}
33197unsafe impl Sync for WriteDescriptorSet {}
33198
33199/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetAccelerationStructureKHR.html>
33200#[repr(C)]
33201#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33202pub struct WriteDescriptorSetAccelerationStructureKHR {
33203    pub s_type: StructureType,
33204    pub next: *const c_void,
33205    pub acceleration_structure_count: u32,
33206    pub acceleration_structures: *const AccelerationStructureKHR,
33207}
33208
33209impl Default for WriteDescriptorSetAccelerationStructureKHR {
33210    #[inline]
33211    fn default() -> Self {
33212        Self {
33213            s_type: StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR,
33214            next: ptr::null(),
33215            acceleration_structure_count: u32::default(),
33216            acceleration_structures: ptr::null(),
33217        }
33218    }
33219}
33220
33221unsafe impl Send for WriteDescriptorSetAccelerationStructureKHR {}
33222unsafe impl Sync for WriteDescriptorSetAccelerationStructureKHR {}
33223
33224/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetAccelerationStructureNV.html>
33225#[repr(C)]
33226#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33227pub struct WriteDescriptorSetAccelerationStructureNV {
33228    pub s_type: StructureType,
33229    pub next: *const c_void,
33230    pub acceleration_structure_count: u32,
33231    pub acceleration_structures: *const AccelerationStructureNV,
33232}
33233
33234impl Default for WriteDescriptorSetAccelerationStructureNV {
33235    #[inline]
33236    fn default() -> Self {
33237        Self {
33238            s_type: StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV,
33239            next: ptr::null(),
33240            acceleration_structure_count: u32::default(),
33241            acceleration_structures: ptr::null(),
33242        }
33243    }
33244}
33245
33246unsafe impl Send for WriteDescriptorSetAccelerationStructureNV {}
33247unsafe impl Sync for WriteDescriptorSetAccelerationStructureNV {}
33248
33249/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetInlineUniformBlock.html>
33250#[repr(C)]
33251#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33252pub struct WriteDescriptorSetInlineUniformBlock {
33253    pub s_type: StructureType,
33254    pub next: *const c_void,
33255    pub data_size: u32,
33256    pub data: *const c_void,
33257}
33258
33259impl Default for WriteDescriptorSetInlineUniformBlock {
33260    #[inline]
33261    fn default() -> Self {
33262        Self {
33263            s_type: StructureType::WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK,
33264            next: ptr::null(),
33265            data_size: u32::default(),
33266            data: ptr::null(),
33267        }
33268    }
33269}
33270
33271unsafe impl Send for WriteDescriptorSetInlineUniformBlock {}
33272unsafe impl Sync for WriteDescriptorSetInlineUniformBlock {}
33273
33274/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetPartitionedAccelerationStructureNV.html>
33275#[repr(C)]
33276#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33277pub struct WriteDescriptorSetPartitionedAccelerationStructureNV {
33278    pub s_type: StructureType,
33279    pub next: *mut c_void,
33280    pub acceleration_structure_count: u32,
33281    pub acceleration_structures: *const DeviceAddress,
33282}
33283
33284impl Default for WriteDescriptorSetPartitionedAccelerationStructureNV {
33285    #[inline]
33286    fn default() -> Self {
33287        Self {
33288            s_type: StructureType::WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV,
33289            next: ptr::null_mut(),
33290            acceleration_structure_count: u32::default(),
33291            acceleration_structures: ptr::null(),
33292        }
33293    }
33294}
33295
33296unsafe impl Send for WriteDescriptorSetPartitionedAccelerationStructureNV {}
33297unsafe impl Sync for WriteDescriptorSetPartitionedAccelerationStructureNV {}
33298
33299/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetTensorARM.html>
33300#[repr(C)]
33301#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33302pub struct WriteDescriptorSetTensorARM {
33303    pub s_type: StructureType,
33304    pub next: *const c_void,
33305    pub tensor_view_count: u32,
33306    pub tensor_views: *const TensorViewARM,
33307}
33308
33309impl Default for WriteDescriptorSetTensorARM {
33310    #[inline]
33311    fn default() -> Self {
33312        Self {
33313            s_type: StructureType::WRITE_DESCRIPTOR_SET_TENSOR_ARM,
33314            next: ptr::null(),
33315            tensor_view_count: u32::default(),
33316            tensor_views: ptr::null(),
33317        }
33318    }
33319}
33320
33321unsafe impl Send for WriteDescriptorSetTensorARM {}
33322unsafe impl Sync for WriteDescriptorSetTensorARM {}
33323
33324/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteIndirectExecutionSetPipelineEXT.html>
33325#[repr(C)]
33326#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33327pub struct WriteIndirectExecutionSetPipelineEXT {
33328    pub s_type: StructureType,
33329    pub next: *const c_void,
33330    pub index: u32,
33331    pub pipeline: Pipeline,
33332}
33333
33334impl Default for WriteIndirectExecutionSetPipelineEXT {
33335    #[inline]
33336    fn default() -> Self {
33337        Self {
33338            s_type: StructureType::WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT,
33339            next: ptr::null(),
33340            index: u32::default(),
33341            pipeline: Pipeline::default(),
33342        }
33343    }
33344}
33345
33346unsafe impl Send for WriteIndirectExecutionSetPipelineEXT {}
33347unsafe impl Sync for WriteIndirectExecutionSetPipelineEXT {}
33348
33349/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteIndirectExecutionSetShaderEXT.html>
33350#[repr(C)]
33351#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33352pub struct WriteIndirectExecutionSetShaderEXT {
33353    pub s_type: StructureType,
33354    pub next: *const c_void,
33355    pub index: u32,
33356    pub shader: ShaderEXT,
33357}
33358
33359impl Default for WriteIndirectExecutionSetShaderEXT {
33360    #[inline]
33361    fn default() -> Self {
33362        Self {
33363            s_type: StructureType::WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT,
33364            next: ptr::null(),
33365            index: u32::default(),
33366            shader: ShaderEXT::default(),
33367        }
33368    }
33369}
33370
33371unsafe impl Send for WriteIndirectExecutionSetShaderEXT {}
33372unsafe impl Sync for WriteIndirectExecutionSetShaderEXT {}
33373
33374/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXYColorEXT.html>
33375#[repr(C)]
33376#[derive(Copy, Clone, Default, Debug, PartialEq)]
33377pub struct XYColorEXT {
33378    pub x: f32,
33379    pub y: f32,
33380}
33381
33382/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXcbSurfaceCreateInfoKHR.html>
33383#[repr(C)]
33384#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33385pub struct XcbSurfaceCreateInfoKHR {
33386    pub s_type: StructureType,
33387    pub next: *const c_void,
33388    pub flags: XcbSurfaceCreateFlagsKHR,
33389    pub connection: *mut xcb_connection_t,
33390    pub window: xcb_window_t,
33391}
33392
33393impl Default for XcbSurfaceCreateInfoKHR {
33394    #[inline]
33395    fn default() -> Self {
33396        Self {
33397            s_type: StructureType::XCB_SURFACE_CREATE_INFO_KHR,
33398            next: ptr::null(),
33399            flags: XcbSurfaceCreateFlagsKHR::default(),
33400            connection: ptr::null_mut(),
33401            window: xcb_window_t::default(),
33402        }
33403    }
33404}
33405
33406unsafe impl Send for XcbSurfaceCreateInfoKHR {}
33407unsafe impl Sync for XcbSurfaceCreateInfoKHR {}
33408
33409/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXlibSurfaceCreateInfoKHR.html>
33410#[repr(C)]
33411#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33412pub struct XlibSurfaceCreateInfoKHR {
33413    pub s_type: StructureType,
33414    pub next: *const c_void,
33415    pub flags: XlibSurfaceCreateFlagsKHR,
33416    pub dpy: *mut Display,
33417    pub window: Window,
33418}
33419
33420impl Default for XlibSurfaceCreateInfoKHR {
33421    #[inline]
33422    fn default() -> Self {
33423        Self {
33424            s_type: StructureType::XLIB_SURFACE_CREATE_INFO_KHR,
33425            next: ptr::null(),
33426            flags: XlibSurfaceCreateFlagsKHR::default(),
33427            dpy: ptr::null_mut(),
33428            window: Window::default(),
33429        }
33430    }
33431}
33432
33433unsafe impl Send for XlibSurfaceCreateInfoKHR {}
33434unsafe impl Sync for XlibSurfaceCreateInfoKHR {}
33435
33436/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAabbPositionsNV.html>
33437pub type AabbPositionsNV = AabbPositionsKHR;
33438/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureInstanceNV.html>
33439pub type AccelerationStructureInstanceNV = AccelerationStructureInstanceKHR;
33440/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescription2KHR.html>
33441pub type AttachmentDescription2KHR = AttachmentDescription2;
33442/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescriptionStencilLayoutKHR.html>
33443pub type AttachmentDescriptionStencilLayoutKHR = AttachmentDescriptionStencilLayout;
33444/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReference2KHR.html>
33445pub type AttachmentReference2KHR = AttachmentReference2;
33446/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReferenceStencilLayoutKHR.html>
33447pub type AttachmentReferenceStencilLayoutKHR = AttachmentReferenceStencilLayout;
33448/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentSampleCountInfoNV.html>
33449pub type AttachmentSampleCountInfoNV = AttachmentSampleCountInfoAMD;
33450/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryDeviceGroupInfoKHR.html>
33451pub type BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo;
33452/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryInfoKHR.html>
33453pub type BindBufferMemoryInfoKHR = BindBufferMemoryInfo;
33454/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDescriptorSetsInfoKHR.html>
33455pub type BindDescriptorSetsInfoKHR = BindDescriptorSetsInfo;
33456/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryDeviceGroupInfoKHR.html>
33457pub type BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo;
33458/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryInfoKHR.html>
33459pub type BindImageMemoryInfoKHR = BindImageMemoryInfo;
33460/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImagePlaneMemoryInfoKHR.html>
33461pub type BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo;
33462/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindMemoryStatusKHR.html>
33463pub type BindMemoryStatusKHR = BindMemoryStatus;
33464/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBlitImageInfo2KHR.html>
33465pub type BlitImageInfo2KHR = BlitImageInfo2;
33466/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCopy2KHR.html>
33467pub type BufferCopy2KHR = BufferCopy2;
33468/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfoEXT.html>
33469pub type BufferDeviceAddressInfoEXT = BufferDeviceAddressInfo;
33470/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfoKHR.html>
33471pub type BufferDeviceAddressInfoKHR = BufferDeviceAddressInfo;
33472/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferImageCopy2KHR.html>
33473pub type BufferImageCopy2KHR = BufferImageCopy2;
33474/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryBarrier2KHR.html>
33475pub type BufferMemoryBarrier2KHR = BufferMemoryBarrier2;
33476/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryRequirementsInfo2KHR.html>
33477pub type BufferMemoryRequirementsInfo2KHR = BufferMemoryRequirementsInfo2;
33478/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferOpaqueCaptureAddressCreateInfoKHR.html>
33479pub type BufferOpaqueCaptureAddressCreateInfoKHR = BufferOpaqueCaptureAddressCreateInfo;
33480/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferUsageFlags2CreateInfoKHR.html>
33481pub type BufferUsageFlags2CreateInfoKHR = BufferUsageFlags2CreateInfo;
33482/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCalibratedTimestampInfoEXT.html>
33483pub type CalibratedTimestampInfoEXT = CalibratedTimestampInfoKHR;
33484/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderingInfoKHR.html>
33485pub type CommandBufferInheritanceRenderingInfoKHR = CommandBufferInheritanceRenderingInfo;
33486/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferSubmitInfoKHR.html>
33487pub type CommandBufferSubmitInfoKHR = CommandBufferSubmitInfo;
33488/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConformanceVersionKHR.html>
33489pub type ConformanceVersionKHR = ConformanceVersion;
33490/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferInfo2KHR.html>
33491pub type CopyBufferInfo2KHR = CopyBufferInfo2;
33492/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferToImageInfo2KHR.html>
33493pub type CopyBufferToImageInfo2KHR = CopyBufferToImageInfo2;
33494/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageInfo2KHR.html>
33495pub type CopyImageInfo2KHR = CopyImageInfo2;
33496/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToBufferInfo2KHR.html>
33497pub type CopyImageToBufferInfo2KHR = CopyImageToBufferInfo2;
33498/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToImageInfoEXT.html>
33499pub type CopyImageToImageInfoEXT = CopyImageToImageInfo;
33500/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToMemoryInfoEXT.html>
33501pub type CopyImageToMemoryInfoEXT = CopyImageToMemoryInfo;
33502/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryIndirectCommandNV.html>
33503pub type CopyMemoryIndirectCommandNV = CopyMemoryIndirectCommandKHR;
33504/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageIndirectCommandNV.html>
33505pub type CopyMemoryToImageIndirectCommandNV = CopyMemoryToImageIndirectCommandKHR;
33506/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageInfoEXT.html>
33507pub type CopyMemoryToImageInfoEXT = CopyMemoryToImageInfo;
33508/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDependencyInfoKHR.html>
33509pub type DependencyInfoKHR = DependencyInfo;
33510/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolInlineUniformBlockCreateInfoEXT.html>
33511pub type DescriptorPoolInlineUniformBlockCreateInfoEXT = DescriptorPoolInlineUniformBlockCreateInfo;
33512/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBindingFlagsCreateInfoEXT.html>
33513pub type DescriptorSetLayoutBindingFlagsCreateInfoEXT = DescriptorSetLayoutBindingFlagsCreateInfo;
33514/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutSupportKHR.html>
33515pub type DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport;
33516/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountAllocateInfoEXT.html>
33517pub type DescriptorSetVariableDescriptorCountAllocateInfoEXT =
33518    DescriptorSetVariableDescriptorCountAllocateInfo;
33519/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountLayoutSupportEXT.html>
33520pub type DescriptorSetVariableDescriptorCountLayoutSupportEXT =
33521    DescriptorSetVariableDescriptorCountLayoutSupport;
33522/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateCreateInfoKHR.html>
33523pub type DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo;
33524/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateEntryKHR.html>
33525pub type DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry;
33526/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceBufferMemoryRequirementsKHR.html>
33527pub type DeviceBufferMemoryRequirementsKHR = DeviceBufferMemoryRequirements;
33528/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupBindSparseInfoKHR.html>
33529pub type DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo;
33530/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupCommandBufferBeginInfoKHR.html>
33531pub type DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo;
33532/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupDeviceCreateInfoKHR.html>
33533pub type DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo;
33534/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupRenderPassBeginInfoKHR.html>
33535pub type DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo;
33536/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupSubmitInfoKHR.html>
33537pub type DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo;
33538/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageMemoryRequirementsKHR.html>
33539pub type DeviceImageMemoryRequirementsKHR = DeviceImageMemoryRequirements;
33540/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageSubresourceInfoKHR.html>
33541pub type DeviceImageSubresourceInfoKHR = DeviceImageSubresourceInfo;
33542/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryOpaqueCaptureAddressInfoKHR.html>
33543pub type DeviceMemoryOpaqueCaptureAddressInfoKHR = DeviceMemoryOpaqueCaptureAddressInfo;
33544/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDevicePrivateDataCreateInfoEXT.html>
33545pub type DevicePrivateDataCreateInfoEXT = DevicePrivateDataCreateInfo;
33546/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfoEXT.html>
33547pub type DeviceQueueGlobalPriorityCreateInfoEXT = DeviceQueueGlobalPriorityCreateInfo;
33548/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfoKHR.html>
33549pub type DeviceQueueGlobalPriorityCreateInfoKHR = DeviceQueueGlobalPriorityCreateInfo;
33550/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceCreateInfoKHR.html>
33551pub type ExportFenceCreateInfoKHR = ExportFenceCreateInfo;
33552/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfoKHR.html>
33553pub type ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo;
33554/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreCreateInfoKHR.html>
33555pub type ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo;
33556/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalBufferPropertiesKHR.html>
33557pub type ExternalBufferPropertiesKHR = ExternalBufferProperties;
33558/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFencePropertiesKHR.html>
33559pub type ExternalFencePropertiesKHR = ExternalFenceProperties;
33560/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalImageFormatPropertiesKHR.html>
33561pub type ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties;
33562/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryBufferCreateInfoKHR.html>
33563pub type ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo;
33564/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfoKHR.html>
33565pub type ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo;
33566/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryPropertiesKHR.html>
33567pub type ExternalMemoryPropertiesKHR = ExternalMemoryProperties;
33568/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalSemaphorePropertiesKHR.html>
33569pub type ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties;
33570/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties2KHR.html>
33571pub type FormatProperties2KHR = FormatProperties2;
33572/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties3KHR.html>
33573pub type FormatProperties3KHR = FormatProperties3;
33574/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentImageInfoKHR.html>
33575pub type FramebufferAttachmentImageInfoKHR = FramebufferAttachmentImageInfo;
33576/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentsCreateInfoKHR.html>
33577pub type FramebufferAttachmentsCreateInfoKHR = FramebufferAttachmentsCreateInfo;
33578/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageCopyDevicePerformanceQueryEXT.html>
33579pub type HostImageCopyDevicePerformanceQueryEXT = HostImageCopyDevicePerformanceQuery;
33580/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageLayoutTransitionInfoEXT.html>
33581pub type HostImageLayoutTransitionInfoEXT = HostImageLayoutTransitionInfo;
33582/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageBlit2KHR.html>
33583pub type ImageBlit2KHR = ImageBlit2;
33584/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCopy2KHR.html>
33585pub type ImageCopy2KHR = ImageCopy2;
33586/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatListCreateInfoKHR.html>
33587pub type ImageFormatListCreateInfoKHR = ImageFormatListCreateInfo;
33588/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatProperties2KHR.html>
33589pub type ImageFormatProperties2KHR = ImageFormatProperties2;
33590/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryBarrier2KHR.html>
33591pub type ImageMemoryBarrier2KHR = ImageMemoryBarrier2;
33592/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryRequirementsInfo2KHR.html>
33593pub type ImageMemoryRequirementsInfo2KHR = ImageMemoryRequirementsInfo2;
33594/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePlaneMemoryRequirementsInfoKHR.html>
33595pub type ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo;
33596/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageResolve2KHR.html>
33597pub type ImageResolve2KHR = ImageResolve2;
33598/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSparseMemoryRequirementsInfo2KHR.html>
33599pub type ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2;
33600/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageStencilUsageCreateInfoEXT.html>
33601pub type ImageStencilUsageCreateInfoEXT = ImageStencilUsageCreateInfo;
33602/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource2EXT.html>
33603pub type ImageSubresource2EXT = ImageSubresource2;
33604/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource2KHR.html>
33605pub type ImageSubresource2KHR = ImageSubresource2;
33606/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageToMemoryCopyEXT.html>
33607pub type ImageToMemoryCopyEXT = ImageToMemoryCopy;
33608/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewUsageCreateInfoKHR.html>
33609pub type ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo;
33610/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInputAttachmentAspectReferenceKHR.html>
33611pub type InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference;
33612/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateFlagsInfoKHR.html>
33613pub type MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo;
33614/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrier2KHR.html>
33615pub type MemoryBarrier2KHR = MemoryBarrier2;
33616/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfoKHR.html>
33617pub type MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo;
33618/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedRequirementsKHR.html>
33619pub type MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements;
33620/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapInfoKHR.html>
33621pub type MemoryMapInfoKHR = MemoryMapInfo;
33622/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryOpaqueCaptureAddressAllocateInfoKHR.html>
33623pub type MemoryOpaqueCaptureAddressAllocateInfoKHR = MemoryOpaqueCaptureAddressAllocateInfo;
33624/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryRequirements2KHR.html>
33625pub type MemoryRequirements2KHR = MemoryRequirements2;
33626/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryToImageCopyEXT.html>
33627pub type MemoryToImageCopyEXT = MemoryToImageCopy;
33628/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryUnmapInfoKHR.html>
33629pub type MemoryUnmapInfoKHR = MemoryUnmapInfo;
33630/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeCreateInfoVALVE.html>
33631pub type MutableDescriptorTypeCreateInfoVALVE = MutableDescriptorTypeCreateInfoEXT;
33632/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeListVALVE.html>
33633pub type MutableDescriptorTypeListVALVE = MutableDescriptorTypeListEXT;
33634/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice16BitStorageFeaturesKHR.html>
33635pub type PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures;
33636/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice8BitStorageFeaturesKHR.html>
33637pub type PhysicalDevice8BitStorageFeaturesKHR = PhysicalDevice8BitStorageFeatures;
33638/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferAddressFeaturesEXT.html>
33639pub type PhysicalDeviceBufferAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT;
33640/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeaturesKHR.html>
33641pub type PhysicalDeviceBufferDeviceAddressFeaturesKHR = PhysicalDeviceBufferDeviceAddressFeatures;
33642/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.html>
33643pub type PhysicalDeviceComputeShaderDerivativesFeaturesNV =
33644    PhysicalDeviceComputeShaderDerivativesFeaturesKHR;
33645/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectPropertiesNV.html>
33646pub type PhysicalDeviceCopyMemoryIndirectPropertiesNV =
33647    PhysicalDeviceCopyMemoryIndirectPropertiesKHR;
33648/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampZeroOneFeaturesEXT.html>
33649pub type PhysicalDeviceDepthClampZeroOneFeaturesEXT = PhysicalDeviceDepthClampZeroOneFeaturesKHR;
33650/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthStencilResolvePropertiesKHR.html>
33651pub type PhysicalDeviceDepthStencilResolvePropertiesKHR =
33652    PhysicalDeviceDepthStencilResolveProperties;
33653/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingFeaturesEXT.html>
33654pub type PhysicalDeviceDescriptorIndexingFeaturesEXT = PhysicalDeviceDescriptorIndexingFeatures;
33655/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingPropertiesEXT.html>
33656pub type PhysicalDeviceDescriptorIndexingPropertiesEXT = PhysicalDeviceDescriptorIndexingProperties;
33657/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDriverPropertiesKHR.html>
33658pub type PhysicalDeviceDriverPropertiesKHR = PhysicalDeviceDriverProperties;
33659/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingFeaturesKHR.html>
33660pub type PhysicalDeviceDynamicRenderingFeaturesKHR = PhysicalDeviceDynamicRenderingFeatures;
33661/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR.html>
33662pub type PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR =
33663    PhysicalDeviceDynamicRenderingLocalReadFeatures;
33664/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalBufferInfoKHR.html>
33665pub type PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo;
33666/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFenceInfoKHR.html>
33667pub type PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo;
33668/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalImageFormatInfoKHR.html>
33669pub type PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo;
33670/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSciBufFeaturesNV.html>
33671pub type PhysicalDeviceExternalSciBufFeaturesNV = PhysicalDeviceExternalMemorySciBufFeaturesNV;
33672/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSemaphoreInfoKHR.html>
33673pub type PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo;
33674/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures2KHR.html>
33675pub type PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2;
33676/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFloat16Int8FeaturesKHR.html>
33677pub type PhysicalDeviceFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features;
33678/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFloatControlsPropertiesKHR.html>
33679pub type PhysicalDeviceFloatControlsPropertiesKHR = PhysicalDeviceFloatControlsProperties;
33680/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM.html>
33681pub type PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM =
33682    PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT;
33683/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM.html>
33684pub type PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM =
33685    PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT;
33686/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV.html>
33687pub type PhysicalDeviceFragmentShaderBarycentricFeaturesNV =
33688    PhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
33689/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT.html>
33690pub type PhysicalDeviceGlobalPriorityQueryFeaturesEXT = PhysicalDeviceGlobalPriorityQueryFeatures;
33691/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR.html>
33692pub type PhysicalDeviceGlobalPriorityQueryFeaturesKHR = PhysicalDeviceGlobalPriorityQueryFeatures;
33693/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGroupPropertiesKHR.html>
33694pub type PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties;
33695/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyFeaturesEXT.html>
33696pub type PhysicalDeviceHostImageCopyFeaturesEXT = PhysicalDeviceHostImageCopyFeatures;
33697/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyPropertiesEXT.html>
33698pub type PhysicalDeviceHostImageCopyPropertiesEXT = PhysicalDeviceHostImageCopyProperties;
33699/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostQueryResetFeaturesEXT.html>
33700pub type PhysicalDeviceHostQueryResetFeaturesEXT = PhysicalDeviceHostQueryResetFeatures;
33701/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIDPropertiesKHR.html>
33702pub type PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties;
33703/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageFormatInfo2KHR.html>
33704pub type PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2;
33705/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageRobustnessFeaturesEXT.html>
33706pub type PhysicalDeviceImageRobustnessFeaturesEXT = PhysicalDeviceImageRobustnessFeatures;
33707/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImagelessFramebufferFeaturesKHR.html>
33708pub type PhysicalDeviceImagelessFramebufferFeaturesKHR = PhysicalDeviceImagelessFramebufferFeatures;
33709/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8FeaturesEXT.html>
33710pub type PhysicalDeviceIndexTypeUint8FeaturesEXT = PhysicalDeviceIndexTypeUint8Features;
33711/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8FeaturesKHR.html>
33712pub type PhysicalDeviceIndexTypeUint8FeaturesKHR = PhysicalDeviceIndexTypeUint8Features;
33713/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockFeaturesEXT.html>
33714pub type PhysicalDeviceInlineUniformBlockFeaturesEXT = PhysicalDeviceInlineUniformBlockFeatures;
33715/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockPropertiesEXT.html>
33716pub type PhysicalDeviceInlineUniformBlockPropertiesEXT = PhysicalDeviceInlineUniformBlockProperties;
33717/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html>
33718pub type PhysicalDeviceLineRasterizationFeaturesEXT = PhysicalDeviceLineRasterizationFeatures;
33719/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeaturesKHR.html>
33720pub type PhysicalDeviceLineRasterizationFeaturesKHR = PhysicalDeviceLineRasterizationFeatures;
33721/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationPropertiesEXT.html>
33722pub type PhysicalDeviceLineRasterizationPropertiesEXT = PhysicalDeviceLineRasterizationProperties;
33723/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationPropertiesKHR.html>
33724pub type PhysicalDeviceLineRasterizationPropertiesKHR = PhysicalDeviceLineRasterizationProperties;
33725/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance3PropertiesKHR.html>
33726pub type PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties;
33727/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4FeaturesKHR.html>
33728pub type PhysicalDeviceMaintenance4FeaturesKHR = PhysicalDeviceMaintenance4Features;
33729/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4PropertiesKHR.html>
33730pub type PhysicalDeviceMaintenance4PropertiesKHR = PhysicalDeviceMaintenance4Properties;
33731/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5FeaturesKHR.html>
33732pub type PhysicalDeviceMaintenance5FeaturesKHR = PhysicalDeviceMaintenance5Features;
33733/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5PropertiesKHR.html>
33734pub type PhysicalDeviceMaintenance5PropertiesKHR = PhysicalDeviceMaintenance5Properties;
33735/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6FeaturesKHR.html>
33736pub type PhysicalDeviceMaintenance6FeaturesKHR = PhysicalDeviceMaintenance6Features;
33737/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6PropertiesKHR.html>
33738pub type PhysicalDeviceMaintenance6PropertiesKHR = PhysicalDeviceMaintenance6Properties;
33739/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionFeaturesNV.html>
33740pub type PhysicalDeviceMemoryDecompressionFeaturesNV = PhysicalDeviceMemoryDecompressionFeaturesEXT;
33741/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionPropertiesNV.html>
33742pub type PhysicalDeviceMemoryDecompressionPropertiesNV =
33743    PhysicalDeviceMemoryDecompressionPropertiesEXT;
33744/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties2KHR.html>
33745pub type PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2;
33746/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewFeaturesKHR.html>
33747pub type PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures;
33748/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPropertiesKHR.html>
33749pub type PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties;
33750/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE.html>
33751pub type PhysicalDeviceMutableDescriptorTypeFeaturesVALVE =
33752    PhysicalDeviceMutableDescriptorTypeFeaturesEXT;
33753/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT.html>
33754pub type PhysicalDevicePipelineCreationCacheControlFeaturesEXT =
33755    PhysicalDevicePipelineCreationCacheControlFeatures;
33756/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineProtectedAccessFeaturesEXT.html>
33757pub type PhysicalDevicePipelineProtectedAccessFeaturesEXT =
33758    PhysicalDevicePipelineProtectedAccessFeatures;
33759/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessFeaturesEXT.html>
33760pub type PhysicalDevicePipelineRobustnessFeaturesEXT = PhysicalDevicePipelineRobustnessFeatures;
33761/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessPropertiesEXT.html>
33762pub type PhysicalDevicePipelineRobustnessPropertiesEXT = PhysicalDevicePipelineRobustnessProperties;
33763/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePointClippingPropertiesKHR.html>
33764pub type PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties;
33765/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT.html>
33766pub type PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT =
33767    PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR;
33768/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrivateDataFeaturesEXT.html>
33769pub type PhysicalDevicePrivateDataFeaturesEXT = PhysicalDevicePrivateDataFeatures;
33770/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties2KHR.html>
33771pub type PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2;
33772/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePushDescriptorPropertiesKHR.html>
33773pub type PhysicalDevicePushDescriptorPropertiesKHR = PhysicalDevicePushDescriptorProperties;
33774/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM.html>
33775pub type PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM =
33776    PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
33777/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2FeaturesEXT.html>
33778pub type PhysicalDeviceRobustness2FeaturesEXT = PhysicalDeviceRobustness2FeaturesKHR;
33779/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2PropertiesEXT.html>
33780pub type PhysicalDeviceRobustness2PropertiesEXT = PhysicalDeviceRobustness2PropertiesKHR;
33781/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT.html>
33782pub type PhysicalDeviceSamplerFilterMinmaxPropertiesEXT =
33783    PhysicalDeviceSamplerFilterMinmaxProperties;
33784/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR.html>
33785pub type PhysicalDeviceSamplerYcbcrConversionFeaturesKHR =
33786    PhysicalDeviceSamplerYcbcrConversionFeatures;
33787/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceScalarBlockLayoutFeaturesEXT.html>
33788pub type PhysicalDeviceScalarBlockLayoutFeaturesEXT = PhysicalDeviceScalarBlockLayoutFeatures;
33789/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.html>
33790pub type PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR =
33791    PhysicalDeviceSeparateDepthStencilLayoutsFeatures;
33792/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicInt64FeaturesKHR.html>
33793pub type PhysicalDeviceShaderAtomicInt64FeaturesKHR = PhysicalDeviceShaderAtomicInt64Features;
33794/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.html>
33795pub type PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT =
33796    PhysicalDeviceShaderDemoteToHelperInvocationFeatures;
33797/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDrawParameterFeatures.html>
33798pub type PhysicalDeviceShaderDrawParameterFeatures = PhysicalDeviceShaderDrawParametersFeatures;
33799/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderExpectAssumeFeaturesKHR.html>
33800pub type PhysicalDeviceShaderExpectAssumeFeaturesKHR = PhysicalDeviceShaderExpectAssumeFeatures;
33801/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat16Int8FeaturesKHR.html>
33802pub type PhysicalDeviceShaderFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features;
33803/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloatControls2FeaturesKHR.html>
33804pub type PhysicalDeviceShaderFloatControls2FeaturesKHR = PhysicalDeviceShaderFloatControls2Features;
33805/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR.html>
33806pub type PhysicalDeviceShaderIntegerDotProductFeaturesKHR =
33807    PhysicalDeviceShaderIntegerDotProductFeatures;
33808/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR.html>
33809pub type PhysicalDeviceShaderIntegerDotProductPropertiesKHR =
33810    PhysicalDeviceShaderIntegerDotProductProperties;
33811/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR.html>
33812pub type PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR =
33813    PhysicalDeviceShaderSubgroupExtendedTypesFeatures;
33814/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR.html>
33815pub type PhysicalDeviceShaderSubgroupRotateFeaturesKHR = PhysicalDeviceShaderSubgroupRotateFeatures;
33816/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR.html>
33817pub type PhysicalDeviceShaderTerminateInvocationFeaturesKHR =
33818    PhysicalDeviceShaderTerminateInvocationFeatures;
33819/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseImageFormatInfo2KHR.html>
33820pub type PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2;
33821/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlFeaturesEXT.html>
33822pub type PhysicalDeviceSubgroupSizeControlFeaturesEXT = PhysicalDeviceSubgroupSizeControlFeatures;
33823/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlPropertiesEXT.html>
33824pub type PhysicalDeviceSubgroupSizeControlPropertiesEXT =
33825    PhysicalDeviceSubgroupSizeControlProperties;
33826/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT.html>
33827pub type PhysicalDeviceSwapchainMaintenance1FeaturesEXT =
33828    PhysicalDeviceSwapchainMaintenance1FeaturesKHR;
33829/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSynchronization2FeaturesKHR.html>
33830pub type PhysicalDeviceSynchronization2FeaturesKHR = PhysicalDeviceSynchronization2Features;
33831/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT.html>
33832pub type PhysicalDeviceTexelBufferAlignmentPropertiesEXT =
33833    PhysicalDeviceTexelBufferAlignmentProperties;
33834/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT.html>
33835pub type PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT =
33836    PhysicalDeviceTextureCompressionASTCHDRFeatures;
33837/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreFeaturesKHR.html>
33838pub type PhysicalDeviceTimelineSemaphoreFeaturesKHR = PhysicalDeviceTimelineSemaphoreFeatures;
33839/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphorePropertiesKHR.html>
33840pub type PhysicalDeviceTimelineSemaphorePropertiesKHR = PhysicalDeviceTimelineSemaphoreProperties;
33841/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceToolPropertiesEXT.html>
33842pub type PhysicalDeviceToolPropertiesEXT = PhysicalDeviceToolProperties;
33843/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR.html>
33844pub type PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR =
33845    PhysicalDeviceUniformBufferStandardLayoutFeatures;
33846/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointerFeatures.html>
33847pub type PhysicalDeviceVariablePointerFeatures = PhysicalDeviceVariablePointersFeatures;
33848/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointerFeaturesKHR.html>
33849pub type PhysicalDeviceVariablePointerFeaturesKHR = PhysicalDeviceVariablePointersFeatures;
33850/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointersFeaturesKHR.html>
33851pub type PhysicalDeviceVariablePointersFeaturesKHR = PhysicalDeviceVariablePointersFeatures;
33852/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.html>
33853pub type PhysicalDeviceVertexAttributeDivisorFeaturesEXT =
33854    PhysicalDeviceVertexAttributeDivisorFeatures;
33855/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR.html>
33856pub type PhysicalDeviceVertexAttributeDivisorFeaturesKHR =
33857    PhysicalDeviceVertexAttributeDivisorFeatures;
33858/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR.html>
33859pub type PhysicalDeviceVertexAttributeDivisorPropertiesKHR =
33860    PhysicalDeviceVertexAttributeDivisorProperties;
33861/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkanMemoryModelFeaturesKHR.html>
33862pub type PhysicalDeviceVulkanMemoryModelFeaturesKHR = PhysicalDeviceVulkanMemoryModelFeatures;
33863/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.html>
33864pub type PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR =
33865    PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
33866/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateFlags2CreateInfoKHR.html>
33867pub type PipelineCreateFlags2CreateInfoKHR = PipelineCreateFlags2CreateInfo;
33868/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackCreateInfoEXT.html>
33869pub type PipelineCreationFeedbackCreateInfoEXT = PipelineCreationFeedbackCreateInfo;
33870/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackEXT.html>
33871pub type PipelineCreationFeedbackEXT = PipelineCreationFeedback;
33872/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInfoEXT.html>
33873pub type PipelineInfoEXT = PipelineInfoKHR;
33874/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfoEXT.html>
33875pub type PipelineRasterizationLineStateCreateInfoEXT = PipelineRasterizationLineStateCreateInfo;
33876/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfoKHR.html>
33877pub type PipelineRasterizationLineStateCreateInfoKHR = PipelineRasterizationLineStateCreateInfo;
33878/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRenderingCreateInfoKHR.html>
33879pub type PipelineRenderingCreateInfoKHR = PipelineRenderingCreateInfo;
33880/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRobustnessCreateInfoEXT.html>
33881pub type PipelineRobustnessCreateInfoEXT = PipelineRobustnessCreateInfo;
33882/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT.html>
33883pub type PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT =
33884    PipelineShaderStageRequiredSubgroupSizeCreateInfo;
33885/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationDomainOriginStateCreateInfoKHR.html>
33886pub type PipelineTessellationDomainOriginStateCreateInfoKHR =
33887    PipelineTessellationDomainOriginStateCreateInfo;
33888/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfoEXT.html>
33889pub type PipelineVertexInputDivisorStateCreateInfoEXT = PipelineVertexInputDivisorStateCreateInfo;
33890/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfoKHR.html>
33891pub type PipelineVertexInputDivisorStateCreateInfoKHR = PipelineVertexInputDivisorStateCreateInfo;
33892/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPrivateDataSlotCreateInfoEXT.html>
33893pub type PrivateDataSlotCreateInfoEXT = PrivateDataSlotCreateInfo;
33894/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantsInfoKHR.html>
33895pub type PushConstantsInfoKHR = PushConstantsInfo;
33896/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetInfoKHR.html>
33897pub type PushDescriptorSetInfoKHR = PushDescriptorSetInfo;
33898/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetWithTemplateInfoKHR.html>
33899pub type PushDescriptorSetWithTemplateInfoKHR = PushDescriptorSetWithTemplateInfo;
33900/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolCreateInfoINTEL.html>
33901pub type QueryPoolCreateInfoINTEL = QueryPoolPerformanceQueryCreateInfoINTEL;
33902/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityPropertiesEXT.html>
33903pub type QueueFamilyGlobalPriorityPropertiesEXT = QueueFamilyGlobalPriorityProperties;
33904/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityPropertiesKHR.html>
33905pub type QueueFamilyGlobalPriorityPropertiesKHR = QueueFamilyGlobalPriorityProperties;
33906/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyProperties2KHR.html>
33907pub type QueueFamilyProperties2KHR = QueueFamilyProperties2;
33908/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkReleaseSwapchainImagesInfoEXT.html>
33909pub type ReleaseSwapchainImagesInfoEXT = ReleaseSwapchainImagesInfoKHR;
33910/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassAttachmentBeginInfoKHR.html>
33911pub type RenderPassAttachmentBeginInfoKHR = RenderPassAttachmentBeginInfo;
33912/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateInfo2KHR.html>
33913pub type RenderPassCreateInfo2KHR = RenderPassCreateInfo2;
33914/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassInputAttachmentAspectCreateInfoKHR.html>
33915pub type RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo;
33916/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassMultiviewCreateInfoKHR.html>
33917pub type RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo;
33918/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAreaInfoKHR.html>
33919pub type RenderingAreaInfoKHR = RenderingAreaInfo;
33920/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentInfoKHR.html>
33921pub type RenderingAttachmentInfoKHR = RenderingAttachmentInfo;
33922/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentLocationInfoKHR.html>
33923pub type RenderingAttachmentLocationInfoKHR = RenderingAttachmentLocationInfo;
33924/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingEndInfoEXT.html>
33925pub type RenderingEndInfoEXT = RenderingEndInfoKHR;
33926/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInfoKHR.html>
33927pub type RenderingInfoKHR = RenderingInfo;
33928/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInputAttachmentIndexInfoKHR.html>
33929pub type RenderingInputAttachmentIndexInfoKHR = RenderingInputAttachmentIndexInfo;
33930/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResolveImageInfo2KHR.html>
33931pub type ResolveImageInfo2KHR = ResolveImageInfo2;
33932/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerReductionModeCreateInfoEXT.html>
33933pub type SamplerReductionModeCreateInfoEXT = SamplerReductionModeCreateInfo;
33934/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionCreateInfoKHR.html>
33935pub type SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo;
33936/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionImageFormatPropertiesKHR.html>
33937pub type SamplerYcbcrConversionImageFormatPropertiesKHR =
33938    SamplerYcbcrConversionImageFormatProperties;
33939/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionInfoKHR.html>
33940pub type SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo;
33941/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSignalInfoKHR.html>
33942pub type SemaphoreSignalInfoKHR = SemaphoreSignalInfo;
33943/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSubmitInfoKHR.html>
33944pub type SemaphoreSubmitInfoKHR = SemaphoreSubmitInfo;
33945/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreTypeCreateInfoKHR.html>
33946pub type SemaphoreTypeCreateInfoKHR = SemaphoreTypeCreateInfo;
33947/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreWaitInfoKHR.html>
33948pub type SemaphoreWaitInfoKHR = SemaphoreWaitInfo;
33949/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderRequiredSubgroupSizeCreateInfoEXT.html>
33950pub type ShaderRequiredSubgroupSizeCreateInfoEXT =
33951    PipelineShaderStageRequiredSubgroupSizeCreateInfo;
33952/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatProperties2KHR.html>
33953pub type SparseImageFormatProperties2KHR = SparseImageFormatProperties2;
33954/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements2KHR.html>
33955pub type SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2;
33956/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitInfo2KHR.html>
33957pub type SubmitInfo2KHR = SubmitInfo2;
33958/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassBeginInfoKHR.html>
33959pub type SubpassBeginInfoKHR = SubpassBeginInfo;
33960/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDependency2KHR.html>
33961pub type SubpassDependency2KHR = SubpassDependency2;
33962/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescription2KHR.html>
33963pub type SubpassDescription2KHR = SubpassDescription2;
33964/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescriptionDepthStencilResolveKHR.html>
33965pub type SubpassDescriptionDepthStencilResolveKHR = SubpassDescriptionDepthStencilResolve;
33966/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassEndInfoKHR.html>
33967pub type SubpassEndInfoKHR = SubpassEndInfo;
33968/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassFragmentDensityMapOffsetEndInfoQCOM.html>
33969pub type SubpassFragmentDensityMapOffsetEndInfoQCOM = RenderPassFragmentDensityMapOffsetEndInfoEXT;
33970/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceHostMemcpySizeEXT.html>
33971pub type SubresourceHostMemcpySizeEXT = SubresourceHostMemcpySize;
33972/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout2EXT.html>
33973pub type SubresourceLayout2EXT = SubresourceLayout2;
33974/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout2KHR.html>
33975pub type SubresourceLayout2KHR = SubresourceLayout2;
33976/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeCompatibilityEXT.html>
33977pub type SurfacePresentModeCompatibilityEXT = SurfacePresentModeCompatibilityKHR;
33978/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeEXT.html>
33979pub type SurfacePresentModeEXT = SurfacePresentModeKHR;
33980/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentScalingCapabilitiesEXT.html>
33981pub type SurfacePresentScalingCapabilitiesEXT = SurfacePresentScalingCapabilitiesKHR;
33982/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentFenceInfoEXT.html>
33983pub type SwapchainPresentFenceInfoEXT = SwapchainPresentFenceInfoKHR;
33984/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModeInfoEXT.html>
33985pub type SwapchainPresentModeInfoEXT = SwapchainPresentModeInfoKHR;
33986/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModesCreateInfoEXT.html>
33987pub type SwapchainPresentModesCreateInfoEXT = SwapchainPresentModesCreateInfoKHR;
33988/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentScalingCreateInfoEXT.html>
33989pub type SwapchainPresentScalingCreateInfoEXT = SwapchainPresentScalingCreateInfoKHR;
33990/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTimelineSemaphoreSubmitInfoKHR.html>
33991pub type TimelineSemaphoreSubmitInfoKHR = TimelineSemaphoreSubmitInfo;
33992/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTransformMatrixNV.html>
33993pub type TransformMatrixNV = TransformMatrixKHR;
33994/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescriptionEXT.html>
33995pub type VertexInputBindingDivisorDescriptionEXT = VertexInputBindingDivisorDescription;
33996/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescriptionKHR.html>
33997pub type VertexInputBindingDivisorDescriptionKHR = VertexInputBindingDivisorDescription;
33998/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetInlineUniformBlockEXT.html>
33999pub type WriteDescriptorSetInlineUniformBlockEXT = WriteDescriptorSetInlineUniformBlock;