vulkanalia/vk/
chains.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_void;
24
25use super::*;
26
27/// A Vulkan struct that could be part of an input pointer chain.
28pub unsafe trait InputChainStruct {
29    /// The structure type for this struct type.
30    const TYPE: StructureType;
31
32    /// The structure type for this struct.
33    fn s_type(&self) -> StructureType;
34
35    /// The next struct in the pointer chain for this struct.
36    fn next(&self) -> *const c_void;
37}
38
39/// A Vulkan struct that could be part of an output pointer chain.
40pub unsafe trait OutputChainStruct: InputChainStruct {
41    /// The next struct in the pointer chain for this struct.
42    fn next_mut(&self) -> *mut c_void;
43}
44
45unsafe impl InputChainStruct for AccelerationStructureBuildGeometryInfoKHR {
46    const TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR;
47
48    #[inline]
49    fn s_type(&self) -> StructureType {
50        self.s_type
51    }
52
53    #[inline]
54    fn next(&self) -> *const c_void {
55        self.next
56    }
57}
58
59unsafe impl InputChainStruct for AccelerationStructureBuildSizesInfoKHR {
60    const TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR;
61
62    #[inline]
63    fn s_type(&self) -> StructureType {
64        self.s_type
65    }
66
67    #[inline]
68    fn next(&self) -> *const c_void {
69        self.next
70    }
71}
72
73unsafe impl InputChainStruct for AccelerationStructureCaptureDescriptorDataInfoEXT {
74    const TYPE: StructureType =
75        StructureType::ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT;
76
77    #[inline]
78    fn s_type(&self) -> StructureType {
79        self.s_type
80    }
81
82    #[inline]
83    fn next(&self) -> *const c_void {
84        self.next
85    }
86}
87
88unsafe impl InputChainStruct for AccelerationStructureCreateInfoKHR {
89    const TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_CREATE_INFO_KHR;
90
91    #[inline]
92    fn s_type(&self) -> StructureType {
93        self.s_type
94    }
95
96    #[inline]
97    fn next(&self) -> *const c_void {
98        self.next
99    }
100}
101
102unsafe impl InputChainStruct for AccelerationStructureCreateInfoNV {
103    const TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_CREATE_INFO_NV;
104
105    #[inline]
106    fn s_type(&self) -> StructureType {
107        self.s_type
108    }
109
110    #[inline]
111    fn next(&self) -> *const c_void {
112        self.next
113    }
114}
115
116unsafe impl InputChainStruct for AccelerationStructureDenseGeometryFormatTrianglesDataAMDX {
117    const TYPE: StructureType =
118        StructureType::ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX;
119
120    #[inline]
121    fn s_type(&self) -> StructureType {
122        self.s_type
123    }
124
125    #[inline]
126    fn next(&self) -> *const c_void {
127        self.next
128    }
129}
130
131unsafe impl InputChainStruct for AccelerationStructureDeviceAddressInfoKHR {
132    const TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR;
133
134    #[inline]
135    fn s_type(&self) -> StructureType {
136        self.s_type
137    }
138
139    #[inline]
140    fn next(&self) -> *const c_void {
141        self.next
142    }
143}
144
145unsafe impl InputChainStruct for AccelerationStructureGeometryAabbsDataKHR {
146    const TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR;
147
148    #[inline]
149    fn s_type(&self) -> StructureType {
150        self.s_type
151    }
152
153    #[inline]
154    fn next(&self) -> *const c_void {
155        self.next
156    }
157}
158
159unsafe impl InputChainStruct for AccelerationStructureGeometryInstancesDataKHR {
160    const TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR;
161
162    #[inline]
163    fn s_type(&self) -> StructureType {
164        self.s_type
165    }
166
167    #[inline]
168    fn next(&self) -> *const c_void {
169        self.next
170    }
171}
172
173unsafe impl InputChainStruct for AccelerationStructureGeometryKHR {
174    const TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_GEOMETRY_KHR;
175
176    #[inline]
177    fn s_type(&self) -> StructureType {
178        self.s_type
179    }
180
181    #[inline]
182    fn next(&self) -> *const c_void {
183        self.next
184    }
185}
186
187unsafe impl InputChainStruct for AccelerationStructureGeometryLinearSweptSpheresDataNV {
188    const TYPE: StructureType =
189        StructureType::ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV;
190
191    #[inline]
192    fn s_type(&self) -> StructureType {
193        self.s_type
194    }
195
196    #[inline]
197    fn next(&self) -> *const c_void {
198        self.next
199    }
200}
201
202unsafe impl InputChainStruct for AccelerationStructureGeometryMotionTrianglesDataNV {
203    const TYPE: StructureType =
204        StructureType::ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV;
205
206    #[inline]
207    fn s_type(&self) -> StructureType {
208        self.s_type
209    }
210
211    #[inline]
212    fn next(&self) -> *const c_void {
213        self.next
214    }
215}
216
217unsafe impl InputChainStruct for AccelerationStructureGeometrySpheresDataNV {
218    const TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV;
219
220    #[inline]
221    fn s_type(&self) -> StructureType {
222        self.s_type
223    }
224
225    #[inline]
226    fn next(&self) -> *const c_void {
227        self.next
228    }
229}
230
231unsafe impl InputChainStruct for AccelerationStructureGeometryTrianglesDataKHR {
232    const TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR;
233
234    #[inline]
235    fn s_type(&self) -> StructureType {
236        self.s_type
237    }
238
239    #[inline]
240    fn next(&self) -> *const c_void {
241        self.next
242    }
243}
244
245unsafe impl InputChainStruct for AccelerationStructureInfoNV {
246    const TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_INFO_NV;
247
248    #[inline]
249    fn s_type(&self) -> StructureType {
250        self.s_type
251    }
252
253    #[inline]
254    fn next(&self) -> *const c_void {
255        self.next
256    }
257}
258
259unsafe impl InputChainStruct for AccelerationStructureMemoryRequirementsInfoNV {
260    const TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV;
261
262    #[inline]
263    fn s_type(&self) -> StructureType {
264        self.s_type
265    }
266
267    #[inline]
268    fn next(&self) -> *const c_void {
269        self.next
270    }
271}
272
273unsafe impl InputChainStruct for AccelerationStructureMotionInfoNV {
274    const TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_MOTION_INFO_NV;
275
276    #[inline]
277    fn s_type(&self) -> StructureType {
278        self.s_type
279    }
280
281    #[inline]
282    fn next(&self) -> *const c_void {
283        self.next
284    }
285}
286
287unsafe impl InputChainStruct for AccelerationStructureTrianglesDisplacementMicromapNV {
288    const TYPE: StructureType =
289        StructureType::ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV;
290
291    #[inline]
292    fn s_type(&self) -> StructureType {
293        self.s_type
294    }
295
296    #[inline]
297    fn next(&self) -> *const c_void {
298        self.next
299    }
300}
301
302unsafe impl OutputChainStruct for AccelerationStructureTrianglesDisplacementMicromapNV {
303    #[inline]
304    fn next_mut(&self) -> *mut c_void {
305        self.next
306    }
307}
308
309unsafe impl InputChainStruct for AccelerationStructureTrianglesOpacityMicromapEXT {
310    const TYPE: StructureType =
311        StructureType::ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT;
312
313    #[inline]
314    fn s_type(&self) -> StructureType {
315        self.s_type
316    }
317
318    #[inline]
319    fn next(&self) -> *const c_void {
320        self.next
321    }
322}
323
324unsafe impl OutputChainStruct for AccelerationStructureTrianglesOpacityMicromapEXT {
325    #[inline]
326    fn next_mut(&self) -> *mut c_void {
327        self.next
328    }
329}
330
331unsafe impl InputChainStruct for AccelerationStructureVersionInfoKHR {
332    const TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_VERSION_INFO_KHR;
333
334    #[inline]
335    fn s_type(&self) -> StructureType {
336        self.s_type
337    }
338
339    #[inline]
340    fn next(&self) -> *const c_void {
341        self.next
342    }
343}
344
345unsafe impl InputChainStruct for AcquireNextImageInfoKHR {
346    const TYPE: StructureType = StructureType::ACQUIRE_NEXT_IMAGE_INFO_KHR;
347
348    #[inline]
349    fn s_type(&self) -> StructureType {
350        self.s_type
351    }
352
353    #[inline]
354    fn next(&self) -> *const c_void {
355        self.next
356    }
357}
358
359unsafe impl InputChainStruct for AcquireProfilingLockInfoKHR {
360    const TYPE: StructureType = StructureType::ACQUIRE_PROFILING_LOCK_INFO_KHR;
361
362    #[inline]
363    fn s_type(&self) -> StructureType {
364        self.s_type
365    }
366
367    #[inline]
368    fn next(&self) -> *const c_void {
369        self.next
370    }
371}
372
373unsafe impl InputChainStruct for AmigoProfilingSubmitInfoSEC {
374    const TYPE: StructureType = StructureType::AMIGO_PROFILING_SUBMIT_INFO_SEC;
375
376    #[inline]
377    fn s_type(&self) -> StructureType {
378        self.s_type
379    }
380
381    #[inline]
382    fn next(&self) -> *const c_void {
383        self.next
384    }
385}
386
387unsafe impl InputChainStruct for AndroidHardwareBufferFormatProperties2ANDROID {
388    const TYPE: StructureType = StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID;
389
390    #[inline]
391    fn s_type(&self) -> StructureType {
392        self.s_type
393    }
394
395    #[inline]
396    fn next(&self) -> *const c_void {
397        self.next
398    }
399}
400
401unsafe impl OutputChainStruct for AndroidHardwareBufferFormatProperties2ANDROID {
402    #[inline]
403    fn next_mut(&self) -> *mut c_void {
404        self.next
405    }
406}
407
408unsafe impl InputChainStruct for AndroidHardwareBufferFormatPropertiesANDROID {
409    const TYPE: StructureType = StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID;
410
411    #[inline]
412    fn s_type(&self) -> StructureType {
413        self.s_type
414    }
415
416    #[inline]
417    fn next(&self) -> *const c_void {
418        self.next
419    }
420}
421
422unsafe impl OutputChainStruct for AndroidHardwareBufferFormatPropertiesANDROID {
423    #[inline]
424    fn next_mut(&self) -> *mut c_void {
425        self.next
426    }
427}
428
429unsafe impl InputChainStruct for AndroidHardwareBufferFormatResolvePropertiesANDROID {
430    const TYPE: StructureType =
431        StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID;
432
433    #[inline]
434    fn s_type(&self) -> StructureType {
435        self.s_type
436    }
437
438    #[inline]
439    fn next(&self) -> *const c_void {
440        self.next
441    }
442}
443
444unsafe impl OutputChainStruct for AndroidHardwareBufferFormatResolvePropertiesANDROID {
445    #[inline]
446    fn next_mut(&self) -> *mut c_void {
447        self.next
448    }
449}
450
451unsafe impl InputChainStruct for AndroidHardwareBufferPropertiesANDROID {
452    const TYPE: StructureType = StructureType::ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID;
453
454    #[inline]
455    fn s_type(&self) -> StructureType {
456        self.s_type
457    }
458
459    #[inline]
460    fn next(&self) -> *const c_void {
461        self.next
462    }
463}
464
465unsafe impl OutputChainStruct for AndroidHardwareBufferPropertiesANDROID {
466    #[inline]
467    fn next_mut(&self) -> *mut c_void {
468        self.next
469    }
470}
471
472unsafe impl InputChainStruct for AndroidHardwareBufferUsageANDROID {
473    const TYPE: StructureType = StructureType::ANDROID_HARDWARE_BUFFER_USAGE_ANDROID;
474
475    #[inline]
476    fn s_type(&self) -> StructureType {
477        self.s_type
478    }
479
480    #[inline]
481    fn next(&self) -> *const c_void {
482        self.next
483    }
484}
485
486unsafe impl OutputChainStruct for AndroidHardwareBufferUsageANDROID {
487    #[inline]
488    fn next_mut(&self) -> *mut c_void {
489        self.next
490    }
491}
492
493unsafe impl InputChainStruct for AndroidSurfaceCreateInfoKHR {
494    const TYPE: StructureType = StructureType::ANDROID_SURFACE_CREATE_INFO_KHR;
495
496    #[inline]
497    fn s_type(&self) -> StructureType {
498        self.s_type
499    }
500
501    #[inline]
502    fn next(&self) -> *const c_void {
503        self.next
504    }
505}
506
507unsafe impl InputChainStruct for AntiLagDataAMD {
508    const TYPE: StructureType = StructureType::ANTI_LAG_DATA_AMD;
509
510    #[inline]
511    fn s_type(&self) -> StructureType {
512        self.s_type
513    }
514
515    #[inline]
516    fn next(&self) -> *const c_void {
517        self.next
518    }
519}
520
521unsafe impl InputChainStruct for AntiLagPresentationInfoAMD {
522    const TYPE: StructureType = StructureType::ANTI_LAG_PRESENTATION_INFO_AMD;
523
524    #[inline]
525    fn s_type(&self) -> StructureType {
526        self.s_type
527    }
528
529    #[inline]
530    fn next(&self) -> *const c_void {
531        self.next
532    }
533}
534
535unsafe impl OutputChainStruct for AntiLagPresentationInfoAMD {
536    #[inline]
537    fn next_mut(&self) -> *mut c_void {
538        self.next
539    }
540}
541
542unsafe impl InputChainStruct for ApplicationInfo {
543    const TYPE: StructureType = StructureType::APPLICATION_INFO;
544
545    #[inline]
546    fn s_type(&self) -> StructureType {
547        self.s_type
548    }
549
550    #[inline]
551    fn next(&self) -> *const c_void {
552        self.next
553    }
554}
555
556unsafe impl InputChainStruct for ApplicationParametersEXT {
557    const TYPE: StructureType = StructureType::APPLICATION_PARAMETERS_EXT;
558
559    #[inline]
560    fn s_type(&self) -> StructureType {
561        self.s_type
562    }
563
564    #[inline]
565    fn next(&self) -> *const c_void {
566        self.next
567    }
568}
569
570unsafe impl InputChainStruct for AttachmentDescription2 {
571    const TYPE: StructureType = StructureType::ATTACHMENT_DESCRIPTION_2;
572
573    #[inline]
574    fn s_type(&self) -> StructureType {
575        self.s_type
576    }
577
578    #[inline]
579    fn next(&self) -> *const c_void {
580        self.next
581    }
582}
583
584unsafe impl InputChainStruct for AttachmentDescriptionStencilLayout {
585    const TYPE: StructureType = StructureType::ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT;
586
587    #[inline]
588    fn s_type(&self) -> StructureType {
589        self.s_type
590    }
591
592    #[inline]
593    fn next(&self) -> *const c_void {
594        self.next
595    }
596}
597
598unsafe impl OutputChainStruct for AttachmentDescriptionStencilLayout {
599    #[inline]
600    fn next_mut(&self) -> *mut c_void {
601        self.next
602    }
603}
604
605unsafe impl InputChainStruct for AttachmentFeedbackLoopInfoEXT {
606    const TYPE: StructureType = StructureType::ATTACHMENT_FEEDBACK_LOOP_INFO_EXT;
607
608    #[inline]
609    fn s_type(&self) -> StructureType {
610        self.s_type
611    }
612
613    #[inline]
614    fn next(&self) -> *const c_void {
615        self.next
616    }
617}
618
619unsafe impl InputChainStruct for AttachmentReference2 {
620    const TYPE: StructureType = StructureType::ATTACHMENT_REFERENCE_2;
621
622    #[inline]
623    fn s_type(&self) -> StructureType {
624        self.s_type
625    }
626
627    #[inline]
628    fn next(&self) -> *const c_void {
629        self.next
630    }
631}
632
633unsafe impl InputChainStruct for AttachmentReferenceStencilLayout {
634    const TYPE: StructureType = StructureType::ATTACHMENT_REFERENCE_STENCIL_LAYOUT;
635
636    #[inline]
637    fn s_type(&self) -> StructureType {
638        self.s_type
639    }
640
641    #[inline]
642    fn next(&self) -> *const c_void {
643        self.next
644    }
645}
646
647unsafe impl OutputChainStruct for AttachmentReferenceStencilLayout {
648    #[inline]
649    fn next_mut(&self) -> *mut c_void {
650        self.next
651    }
652}
653
654unsafe impl InputChainStruct for AttachmentSampleCountInfoAMD {
655    const TYPE: StructureType = StructureType::ATTACHMENT_SAMPLE_COUNT_INFO_AMD;
656
657    #[inline]
658    fn s_type(&self) -> StructureType {
659        self.s_type
660    }
661
662    #[inline]
663    fn next(&self) -> *const c_void {
664        self.next
665    }
666}
667
668unsafe impl InputChainStruct for BindAccelerationStructureMemoryInfoNV {
669    const TYPE: StructureType = StructureType::BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV;
670
671    #[inline]
672    fn s_type(&self) -> StructureType {
673        self.s_type
674    }
675
676    #[inline]
677    fn next(&self) -> *const c_void {
678        self.next
679    }
680}
681
682unsafe impl InputChainStruct for BindBufferMemoryDeviceGroupInfo {
683    const TYPE: StructureType = StructureType::BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO;
684
685    #[inline]
686    fn s_type(&self) -> StructureType {
687        self.s_type
688    }
689
690    #[inline]
691    fn next(&self) -> *const c_void {
692        self.next
693    }
694}
695
696unsafe impl InputChainStruct for BindBufferMemoryInfo {
697    const TYPE: StructureType = StructureType::BIND_BUFFER_MEMORY_INFO;
698
699    #[inline]
700    fn s_type(&self) -> StructureType {
701        self.s_type
702    }
703
704    #[inline]
705    fn next(&self) -> *const c_void {
706        self.next
707    }
708}
709
710unsafe impl InputChainStruct for BindDataGraphPipelineSessionMemoryInfoARM {
711    const TYPE: StructureType = StructureType::BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM;
712
713    #[inline]
714    fn s_type(&self) -> StructureType {
715        self.s_type
716    }
717
718    #[inline]
719    fn next(&self) -> *const c_void {
720        self.next
721    }
722}
723
724unsafe impl InputChainStruct for BindDescriptorBufferEmbeddedSamplersInfoEXT {
725    const TYPE: StructureType = StructureType::BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT;
726
727    #[inline]
728    fn s_type(&self) -> StructureType {
729        self.s_type
730    }
731
732    #[inline]
733    fn next(&self) -> *const c_void {
734        self.next
735    }
736}
737
738unsafe impl InputChainStruct for BindDescriptorSetsInfo {
739    const TYPE: StructureType = StructureType::BIND_DESCRIPTOR_SETS_INFO;
740
741    #[inline]
742    fn s_type(&self) -> StructureType {
743        self.s_type
744    }
745
746    #[inline]
747    fn next(&self) -> *const c_void {
748        self.next
749    }
750}
751
752unsafe impl InputChainStruct for BindImageMemoryDeviceGroupInfo {
753    const TYPE: StructureType = StructureType::BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO;
754
755    #[inline]
756    fn s_type(&self) -> StructureType {
757        self.s_type
758    }
759
760    #[inline]
761    fn next(&self) -> *const c_void {
762        self.next
763    }
764}
765
766unsafe impl InputChainStruct for BindImageMemoryInfo {
767    const TYPE: StructureType = StructureType::BIND_IMAGE_MEMORY_INFO;
768
769    #[inline]
770    fn s_type(&self) -> StructureType {
771        self.s_type
772    }
773
774    #[inline]
775    fn next(&self) -> *const c_void {
776        self.next
777    }
778}
779
780unsafe impl InputChainStruct for BindImageMemorySwapchainInfoKHR {
781    const TYPE: StructureType = StructureType::BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR;
782
783    #[inline]
784    fn s_type(&self) -> StructureType {
785        self.s_type
786    }
787
788    #[inline]
789    fn next(&self) -> *const c_void {
790        self.next
791    }
792}
793
794unsafe impl InputChainStruct for BindImagePlaneMemoryInfo {
795    const TYPE: StructureType = StructureType::BIND_IMAGE_PLANE_MEMORY_INFO;
796
797    #[inline]
798    fn s_type(&self) -> StructureType {
799        self.s_type
800    }
801
802    #[inline]
803    fn next(&self) -> *const c_void {
804        self.next
805    }
806}
807
808unsafe impl InputChainStruct for BindMemoryStatus {
809    const TYPE: StructureType = StructureType::BIND_MEMORY_STATUS;
810
811    #[inline]
812    fn s_type(&self) -> StructureType {
813        self.s_type
814    }
815
816    #[inline]
817    fn next(&self) -> *const c_void {
818        self.next
819    }
820}
821
822unsafe impl InputChainStruct for BindSparseInfo {
823    const TYPE: StructureType = StructureType::BIND_SPARSE_INFO;
824
825    #[inline]
826    fn s_type(&self) -> StructureType {
827        self.s_type
828    }
829
830    #[inline]
831    fn next(&self) -> *const c_void {
832        self.next
833    }
834}
835
836unsafe impl InputChainStruct for BindTensorMemoryInfoARM {
837    const TYPE: StructureType = StructureType::BIND_TENSOR_MEMORY_INFO_ARM;
838
839    #[inline]
840    fn s_type(&self) -> StructureType {
841        self.s_type
842    }
843
844    #[inline]
845    fn next(&self) -> *const c_void {
846        self.next
847    }
848}
849
850unsafe impl InputChainStruct for BindVideoSessionMemoryInfoKHR {
851    const TYPE: StructureType = StructureType::BIND_VIDEO_SESSION_MEMORY_INFO_KHR;
852
853    #[inline]
854    fn s_type(&self) -> StructureType {
855        self.s_type
856    }
857
858    #[inline]
859    fn next(&self) -> *const c_void {
860        self.next
861    }
862}
863
864unsafe impl InputChainStruct for BlitImageCubicWeightsInfoQCOM {
865    const TYPE: StructureType = StructureType::BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM;
866
867    #[inline]
868    fn s_type(&self) -> StructureType {
869        self.s_type
870    }
871
872    #[inline]
873    fn next(&self) -> *const c_void {
874        self.next
875    }
876}
877
878unsafe impl InputChainStruct for BlitImageInfo2 {
879    const TYPE: StructureType = StructureType::BLIT_IMAGE_INFO_2;
880
881    #[inline]
882    fn s_type(&self) -> StructureType {
883        self.s_type
884    }
885
886    #[inline]
887    fn next(&self) -> *const c_void {
888        self.next
889    }
890}
891
892unsafe impl InputChainStruct for BufferCaptureDescriptorDataInfoEXT {
893    const TYPE: StructureType = StructureType::BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT;
894
895    #[inline]
896    fn s_type(&self) -> StructureType {
897        self.s_type
898    }
899
900    #[inline]
901    fn next(&self) -> *const c_void {
902        self.next
903    }
904}
905
906unsafe impl InputChainStruct for BufferCollectionBufferCreateInfoFUCHSIA {
907    const TYPE: StructureType = StructureType::BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA;
908
909    #[inline]
910    fn s_type(&self) -> StructureType {
911        self.s_type
912    }
913
914    #[inline]
915    fn next(&self) -> *const c_void {
916        self.next
917    }
918}
919
920unsafe impl InputChainStruct for BufferCollectionConstraintsInfoFUCHSIA {
921    const TYPE: StructureType = StructureType::BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA;
922
923    #[inline]
924    fn s_type(&self) -> StructureType {
925        self.s_type
926    }
927
928    #[inline]
929    fn next(&self) -> *const c_void {
930        self.next
931    }
932}
933
934unsafe impl InputChainStruct for BufferCollectionCreateInfoFUCHSIA {
935    const TYPE: StructureType = StructureType::BUFFER_COLLECTION_CREATE_INFO_FUCHSIA;
936
937    #[inline]
938    fn s_type(&self) -> StructureType {
939        self.s_type
940    }
941
942    #[inline]
943    fn next(&self) -> *const c_void {
944        self.next
945    }
946}
947
948unsafe impl InputChainStruct for BufferCollectionImageCreateInfoFUCHSIA {
949    const TYPE: StructureType = StructureType::BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA;
950
951    #[inline]
952    fn s_type(&self) -> StructureType {
953        self.s_type
954    }
955
956    #[inline]
957    fn next(&self) -> *const c_void {
958        self.next
959    }
960}
961
962unsafe impl InputChainStruct for BufferCollectionPropertiesFUCHSIA {
963    const TYPE: StructureType = StructureType::BUFFER_COLLECTION_PROPERTIES_FUCHSIA;
964
965    #[inline]
966    fn s_type(&self) -> StructureType {
967        self.s_type
968    }
969
970    #[inline]
971    fn next(&self) -> *const c_void {
972        self.next
973    }
974}
975
976unsafe impl OutputChainStruct for BufferCollectionPropertiesFUCHSIA {
977    #[inline]
978    fn next_mut(&self) -> *mut c_void {
979        self.next
980    }
981}
982
983unsafe impl InputChainStruct for BufferConstraintsInfoFUCHSIA {
984    const TYPE: StructureType = StructureType::BUFFER_CONSTRAINTS_INFO_FUCHSIA;
985
986    #[inline]
987    fn s_type(&self) -> StructureType {
988        self.s_type
989    }
990
991    #[inline]
992    fn next(&self) -> *const c_void {
993        self.next
994    }
995}
996
997unsafe impl InputChainStruct for BufferCopy2 {
998    const TYPE: StructureType = StructureType::BUFFER_COPY_2;
999
1000    #[inline]
1001    fn s_type(&self) -> StructureType {
1002        self.s_type
1003    }
1004
1005    #[inline]
1006    fn next(&self) -> *const c_void {
1007        self.next
1008    }
1009}
1010
1011unsafe impl InputChainStruct for BufferCreateInfo {
1012    const TYPE: StructureType = StructureType::BUFFER_CREATE_INFO;
1013
1014    #[inline]
1015    fn s_type(&self) -> StructureType {
1016        self.s_type
1017    }
1018
1019    #[inline]
1020    fn next(&self) -> *const c_void {
1021        self.next
1022    }
1023}
1024
1025unsafe impl InputChainStruct for BufferDeviceAddressCreateInfoEXT {
1026    const TYPE: StructureType = StructureType::BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT;
1027
1028    #[inline]
1029    fn s_type(&self) -> StructureType {
1030        self.s_type
1031    }
1032
1033    #[inline]
1034    fn next(&self) -> *const c_void {
1035        self.next
1036    }
1037}
1038
1039unsafe impl InputChainStruct for BufferDeviceAddressInfo {
1040    const TYPE: StructureType = StructureType::BUFFER_DEVICE_ADDRESS_INFO;
1041
1042    #[inline]
1043    fn s_type(&self) -> StructureType {
1044        self.s_type
1045    }
1046
1047    #[inline]
1048    fn next(&self) -> *const c_void {
1049        self.next
1050    }
1051}
1052
1053unsafe impl InputChainStruct for BufferImageCopy2 {
1054    const TYPE: StructureType = StructureType::BUFFER_IMAGE_COPY_2;
1055
1056    #[inline]
1057    fn s_type(&self) -> StructureType {
1058        self.s_type
1059    }
1060
1061    #[inline]
1062    fn next(&self) -> *const c_void {
1063        self.next
1064    }
1065}
1066
1067unsafe impl InputChainStruct for BufferMemoryBarrier {
1068    const TYPE: StructureType = StructureType::BUFFER_MEMORY_BARRIER;
1069
1070    #[inline]
1071    fn s_type(&self) -> StructureType {
1072        self.s_type
1073    }
1074
1075    #[inline]
1076    fn next(&self) -> *const c_void {
1077        self.next
1078    }
1079}
1080
1081unsafe impl InputChainStruct for BufferMemoryBarrier2 {
1082    const TYPE: StructureType = StructureType::BUFFER_MEMORY_BARRIER_2;
1083
1084    #[inline]
1085    fn s_type(&self) -> StructureType {
1086        self.s_type
1087    }
1088
1089    #[inline]
1090    fn next(&self) -> *const c_void {
1091        self.next
1092    }
1093}
1094
1095unsafe impl InputChainStruct for BufferMemoryRequirementsInfo2 {
1096    const TYPE: StructureType = StructureType::BUFFER_MEMORY_REQUIREMENTS_INFO_2;
1097
1098    #[inline]
1099    fn s_type(&self) -> StructureType {
1100        self.s_type
1101    }
1102
1103    #[inline]
1104    fn next(&self) -> *const c_void {
1105        self.next
1106    }
1107}
1108
1109unsafe impl InputChainStruct for BufferOpaqueCaptureAddressCreateInfo {
1110    const TYPE: StructureType = StructureType::BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO;
1111
1112    #[inline]
1113    fn s_type(&self) -> StructureType {
1114        self.s_type
1115    }
1116
1117    #[inline]
1118    fn next(&self) -> *const c_void {
1119        self.next
1120    }
1121}
1122
1123unsafe impl InputChainStruct for BufferUsageFlags2CreateInfo {
1124    const TYPE: StructureType = StructureType::BUFFER_USAGE_FLAGS_2_CREATE_INFO;
1125
1126    #[inline]
1127    fn s_type(&self) -> StructureType {
1128        self.s_type
1129    }
1130
1131    #[inline]
1132    fn next(&self) -> *const c_void {
1133        self.next
1134    }
1135}
1136
1137unsafe impl InputChainStruct for BufferViewCreateInfo {
1138    const TYPE: StructureType = StructureType::BUFFER_VIEW_CREATE_INFO;
1139
1140    #[inline]
1141    fn s_type(&self) -> StructureType {
1142        self.s_type
1143    }
1144
1145    #[inline]
1146    fn next(&self) -> *const c_void {
1147        self.next
1148    }
1149}
1150
1151unsafe impl InputChainStruct for BuildPartitionedAccelerationStructureInfoNV {
1152    const TYPE: StructureType = StructureType::BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV;
1153
1154    #[inline]
1155    fn s_type(&self) -> StructureType {
1156        self.s_type
1157    }
1158
1159    #[inline]
1160    fn next(&self) -> *const c_void {
1161        self.next
1162    }
1163}
1164
1165unsafe impl OutputChainStruct for BuildPartitionedAccelerationStructureInfoNV {
1166    #[inline]
1167    fn next_mut(&self) -> *mut c_void {
1168        self.next
1169    }
1170}
1171
1172unsafe impl InputChainStruct for CalibratedTimestampInfoKHR {
1173    const TYPE: StructureType = StructureType::CALIBRATED_TIMESTAMP_INFO_KHR;
1174
1175    #[inline]
1176    fn s_type(&self) -> StructureType {
1177        self.s_type
1178    }
1179
1180    #[inline]
1181    fn next(&self) -> *const c_void {
1182        self.next
1183    }
1184}
1185
1186unsafe impl InputChainStruct for CheckpointData2NV {
1187    const TYPE: StructureType = StructureType::CHECKPOINT_DATA_2_NV;
1188
1189    #[inline]
1190    fn s_type(&self) -> StructureType {
1191        self.s_type
1192    }
1193
1194    #[inline]
1195    fn next(&self) -> *const c_void {
1196        self.next
1197    }
1198}
1199
1200unsafe impl OutputChainStruct for CheckpointData2NV {
1201    #[inline]
1202    fn next_mut(&self) -> *mut c_void {
1203        self.next
1204    }
1205}
1206
1207unsafe impl InputChainStruct for CheckpointDataNV {
1208    const TYPE: StructureType = StructureType::CHECKPOINT_DATA_NV;
1209
1210    #[inline]
1211    fn s_type(&self) -> StructureType {
1212        self.s_type
1213    }
1214
1215    #[inline]
1216    fn next(&self) -> *const c_void {
1217        self.next
1218    }
1219}
1220
1221unsafe impl OutputChainStruct for CheckpointDataNV {
1222    #[inline]
1223    fn next_mut(&self) -> *mut c_void {
1224        self.next
1225    }
1226}
1227
1228unsafe impl InputChainStruct for ClusterAccelerationStructureClustersBottomLevelInputNV {
1229    const TYPE: StructureType =
1230        StructureType::CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV;
1231
1232    #[inline]
1233    fn s_type(&self) -> StructureType {
1234        self.s_type
1235    }
1236
1237    #[inline]
1238    fn next(&self) -> *const c_void {
1239        self.next
1240    }
1241}
1242
1243unsafe impl OutputChainStruct for ClusterAccelerationStructureClustersBottomLevelInputNV {
1244    #[inline]
1245    fn next_mut(&self) -> *mut c_void {
1246        self.next
1247    }
1248}
1249
1250unsafe impl InputChainStruct for ClusterAccelerationStructureCommandsInfoNV {
1251    const TYPE: StructureType = StructureType::CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV;
1252
1253    #[inline]
1254    fn s_type(&self) -> StructureType {
1255        self.s_type
1256    }
1257
1258    #[inline]
1259    fn next(&self) -> *const c_void {
1260        self.next
1261    }
1262}
1263
1264unsafe impl OutputChainStruct for ClusterAccelerationStructureCommandsInfoNV {
1265    #[inline]
1266    fn next_mut(&self) -> *mut c_void {
1267        self.next
1268    }
1269}
1270
1271unsafe impl InputChainStruct for ClusterAccelerationStructureInputInfoNV {
1272    const TYPE: StructureType = StructureType::CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV;
1273
1274    #[inline]
1275    fn s_type(&self) -> StructureType {
1276        self.s_type
1277    }
1278
1279    #[inline]
1280    fn next(&self) -> *const c_void {
1281        self.next
1282    }
1283}
1284
1285unsafe impl OutputChainStruct for ClusterAccelerationStructureInputInfoNV {
1286    #[inline]
1287    fn next_mut(&self) -> *mut c_void {
1288        self.next
1289    }
1290}
1291
1292unsafe impl InputChainStruct for ClusterAccelerationStructureMoveObjectsInputNV {
1293    const TYPE: StructureType = StructureType::CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV;
1294
1295    #[inline]
1296    fn s_type(&self) -> StructureType {
1297        self.s_type
1298    }
1299
1300    #[inline]
1301    fn next(&self) -> *const c_void {
1302        self.next
1303    }
1304}
1305
1306unsafe impl OutputChainStruct for ClusterAccelerationStructureMoveObjectsInputNV {
1307    #[inline]
1308    fn next_mut(&self) -> *mut c_void {
1309        self.next
1310    }
1311}
1312
1313unsafe impl InputChainStruct for ClusterAccelerationStructureTriangleClusterInputNV {
1314    const TYPE: StructureType =
1315        StructureType::CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV;
1316
1317    #[inline]
1318    fn s_type(&self) -> StructureType {
1319        self.s_type
1320    }
1321
1322    #[inline]
1323    fn next(&self) -> *const c_void {
1324        self.next
1325    }
1326}
1327
1328unsafe impl OutputChainStruct for ClusterAccelerationStructureTriangleClusterInputNV {
1329    #[inline]
1330    fn next_mut(&self) -> *mut c_void {
1331        self.next
1332    }
1333}
1334
1335unsafe impl InputChainStruct for CommandBufferAllocateInfo {
1336    const TYPE: StructureType = StructureType::COMMAND_BUFFER_ALLOCATE_INFO;
1337
1338    #[inline]
1339    fn s_type(&self) -> StructureType {
1340        self.s_type
1341    }
1342
1343    #[inline]
1344    fn next(&self) -> *const c_void {
1345        self.next
1346    }
1347}
1348
1349unsafe impl InputChainStruct for CommandBufferBeginInfo {
1350    const TYPE: StructureType = StructureType::COMMAND_BUFFER_BEGIN_INFO;
1351
1352    #[inline]
1353    fn s_type(&self) -> StructureType {
1354        self.s_type
1355    }
1356
1357    #[inline]
1358    fn next(&self) -> *const c_void {
1359        self.next
1360    }
1361}
1362
1363unsafe impl InputChainStruct for CommandBufferInheritanceConditionalRenderingInfoEXT {
1364    const TYPE: StructureType =
1365        StructureType::COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT;
1366
1367    #[inline]
1368    fn s_type(&self) -> StructureType {
1369        self.s_type
1370    }
1371
1372    #[inline]
1373    fn next(&self) -> *const c_void {
1374        self.next
1375    }
1376}
1377
1378unsafe impl InputChainStruct for CommandBufferInheritanceInfo {
1379    const TYPE: StructureType = StructureType::COMMAND_BUFFER_INHERITANCE_INFO;
1380
1381    #[inline]
1382    fn s_type(&self) -> StructureType {
1383        self.s_type
1384    }
1385
1386    #[inline]
1387    fn next(&self) -> *const c_void {
1388        self.next
1389    }
1390}
1391
1392unsafe impl InputChainStruct for CommandBufferInheritanceRenderPassTransformInfoQCOM {
1393    const TYPE: StructureType =
1394        StructureType::COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM;
1395
1396    #[inline]
1397    fn s_type(&self) -> StructureType {
1398        self.s_type
1399    }
1400
1401    #[inline]
1402    fn next(&self) -> *const c_void {
1403        self.next
1404    }
1405}
1406
1407unsafe impl InputChainStruct for CommandBufferInheritanceRenderingInfo {
1408    const TYPE: StructureType = StructureType::COMMAND_BUFFER_INHERITANCE_RENDERING_INFO;
1409
1410    #[inline]
1411    fn s_type(&self) -> StructureType {
1412        self.s_type
1413    }
1414
1415    #[inline]
1416    fn next(&self) -> *const c_void {
1417        self.next
1418    }
1419}
1420
1421unsafe impl InputChainStruct for CommandBufferInheritanceViewportScissorInfoNV {
1422    const TYPE: StructureType = StructureType::COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV;
1423
1424    #[inline]
1425    fn s_type(&self) -> StructureType {
1426        self.s_type
1427    }
1428
1429    #[inline]
1430    fn next(&self) -> *const c_void {
1431        self.next
1432    }
1433}
1434
1435unsafe impl InputChainStruct for CommandBufferSubmitInfo {
1436    const TYPE: StructureType = StructureType::COMMAND_BUFFER_SUBMIT_INFO;
1437
1438    #[inline]
1439    fn s_type(&self) -> StructureType {
1440        self.s_type
1441    }
1442
1443    #[inline]
1444    fn next(&self) -> *const c_void {
1445        self.next
1446    }
1447}
1448
1449unsafe impl InputChainStruct for CommandPoolCreateInfo {
1450    const TYPE: StructureType = StructureType::COMMAND_POOL_CREATE_INFO;
1451
1452    #[inline]
1453    fn s_type(&self) -> StructureType {
1454        self.s_type
1455    }
1456
1457    #[inline]
1458    fn next(&self) -> *const c_void {
1459        self.next
1460    }
1461}
1462
1463unsafe impl InputChainStruct for ComputePipelineCreateInfo {
1464    const TYPE: StructureType = StructureType::COMPUTE_PIPELINE_CREATE_INFO;
1465
1466    #[inline]
1467    fn s_type(&self) -> StructureType {
1468        self.s_type
1469    }
1470
1471    #[inline]
1472    fn next(&self) -> *const c_void {
1473        self.next
1474    }
1475}
1476
1477unsafe impl InputChainStruct for ComputePipelineIndirectBufferInfoNV {
1478    const TYPE: StructureType = StructureType::COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV;
1479
1480    #[inline]
1481    fn s_type(&self) -> StructureType {
1482        self.s_type
1483    }
1484
1485    #[inline]
1486    fn next(&self) -> *const c_void {
1487        self.next
1488    }
1489}
1490
1491unsafe impl InputChainStruct for ConditionalRenderingBeginInfoEXT {
1492    const TYPE: StructureType = StructureType::CONDITIONAL_RENDERING_BEGIN_INFO_EXT;
1493
1494    #[inline]
1495    fn s_type(&self) -> StructureType {
1496        self.s_type
1497    }
1498
1499    #[inline]
1500    fn next(&self) -> *const c_void {
1501        self.next
1502    }
1503}
1504
1505unsafe impl InputChainStruct for ConvertCooperativeVectorMatrixInfoNV {
1506    const TYPE: StructureType = StructureType::CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV;
1507
1508    #[inline]
1509    fn s_type(&self) -> StructureType {
1510        self.s_type
1511    }
1512
1513    #[inline]
1514    fn next(&self) -> *const c_void {
1515        self.next
1516    }
1517}
1518
1519unsafe impl InputChainStruct for CooperativeMatrixFlexibleDimensionsPropertiesNV {
1520    const TYPE: StructureType = StructureType::COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV;
1521
1522    #[inline]
1523    fn s_type(&self) -> StructureType {
1524        self.s_type
1525    }
1526
1527    #[inline]
1528    fn next(&self) -> *const c_void {
1529        self.next
1530    }
1531}
1532
1533unsafe impl OutputChainStruct for CooperativeMatrixFlexibleDimensionsPropertiesNV {
1534    #[inline]
1535    fn next_mut(&self) -> *mut c_void {
1536        self.next
1537    }
1538}
1539
1540unsafe impl InputChainStruct for CooperativeMatrixPropertiesKHR {
1541    const TYPE: StructureType = StructureType::COOPERATIVE_MATRIX_PROPERTIES_KHR;
1542
1543    #[inline]
1544    fn s_type(&self) -> StructureType {
1545        self.s_type
1546    }
1547
1548    #[inline]
1549    fn next(&self) -> *const c_void {
1550        self.next
1551    }
1552}
1553
1554unsafe impl OutputChainStruct for CooperativeMatrixPropertiesKHR {
1555    #[inline]
1556    fn next_mut(&self) -> *mut c_void {
1557        self.next
1558    }
1559}
1560
1561unsafe impl InputChainStruct for CooperativeMatrixPropertiesNV {
1562    const TYPE: StructureType = StructureType::COOPERATIVE_MATRIX_PROPERTIES_NV;
1563
1564    #[inline]
1565    fn s_type(&self) -> StructureType {
1566        self.s_type
1567    }
1568
1569    #[inline]
1570    fn next(&self) -> *const c_void {
1571        self.next
1572    }
1573}
1574
1575unsafe impl OutputChainStruct for CooperativeMatrixPropertiesNV {
1576    #[inline]
1577    fn next_mut(&self) -> *mut c_void {
1578        self.next
1579    }
1580}
1581
1582unsafe impl InputChainStruct for CooperativeVectorPropertiesNV {
1583    const TYPE: StructureType = StructureType::COOPERATIVE_VECTOR_PROPERTIES_NV;
1584
1585    #[inline]
1586    fn s_type(&self) -> StructureType {
1587        self.s_type
1588    }
1589
1590    #[inline]
1591    fn next(&self) -> *const c_void {
1592        self.next
1593    }
1594}
1595
1596unsafe impl OutputChainStruct for CooperativeVectorPropertiesNV {
1597    #[inline]
1598    fn next_mut(&self) -> *mut c_void {
1599        self.next
1600    }
1601}
1602
1603unsafe impl InputChainStruct for CopyAccelerationStructureInfoKHR {
1604    const TYPE: StructureType = StructureType::COPY_ACCELERATION_STRUCTURE_INFO_KHR;
1605
1606    #[inline]
1607    fn s_type(&self) -> StructureType {
1608        self.s_type
1609    }
1610
1611    #[inline]
1612    fn next(&self) -> *const c_void {
1613        self.next
1614    }
1615}
1616
1617unsafe impl InputChainStruct for CopyAccelerationStructureToMemoryInfoKHR {
1618    const TYPE: StructureType = StructureType::COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR;
1619
1620    #[inline]
1621    fn s_type(&self) -> StructureType {
1622        self.s_type
1623    }
1624
1625    #[inline]
1626    fn next(&self) -> *const c_void {
1627        self.next
1628    }
1629}
1630
1631unsafe impl InputChainStruct for CopyBufferInfo2 {
1632    const TYPE: StructureType = StructureType::COPY_BUFFER_INFO_2;
1633
1634    #[inline]
1635    fn s_type(&self) -> StructureType {
1636        self.s_type
1637    }
1638
1639    #[inline]
1640    fn next(&self) -> *const c_void {
1641        self.next
1642    }
1643}
1644
1645unsafe impl InputChainStruct for CopyBufferToImageInfo2 {
1646    const TYPE: StructureType = StructureType::COPY_BUFFER_TO_IMAGE_INFO_2;
1647
1648    #[inline]
1649    fn s_type(&self) -> StructureType {
1650        self.s_type
1651    }
1652
1653    #[inline]
1654    fn next(&self) -> *const c_void {
1655        self.next
1656    }
1657}
1658
1659unsafe impl InputChainStruct for CopyCommandTransformInfoQCOM {
1660    const TYPE: StructureType = StructureType::COPY_COMMAND_TRANSFORM_INFO_QCOM;
1661
1662    #[inline]
1663    fn s_type(&self) -> StructureType {
1664        self.s_type
1665    }
1666
1667    #[inline]
1668    fn next(&self) -> *const c_void {
1669        self.next
1670    }
1671}
1672
1673unsafe impl InputChainStruct for CopyDescriptorSet {
1674    const TYPE: StructureType = StructureType::COPY_DESCRIPTOR_SET;
1675
1676    #[inline]
1677    fn s_type(&self) -> StructureType {
1678        self.s_type
1679    }
1680
1681    #[inline]
1682    fn next(&self) -> *const c_void {
1683        self.next
1684    }
1685}
1686
1687unsafe impl InputChainStruct for CopyImageInfo2 {
1688    const TYPE: StructureType = StructureType::COPY_IMAGE_INFO_2;
1689
1690    #[inline]
1691    fn s_type(&self) -> StructureType {
1692        self.s_type
1693    }
1694
1695    #[inline]
1696    fn next(&self) -> *const c_void {
1697        self.next
1698    }
1699}
1700
1701unsafe impl InputChainStruct for CopyImageToBufferInfo2 {
1702    const TYPE: StructureType = StructureType::COPY_IMAGE_TO_BUFFER_INFO_2;
1703
1704    #[inline]
1705    fn s_type(&self) -> StructureType {
1706        self.s_type
1707    }
1708
1709    #[inline]
1710    fn next(&self) -> *const c_void {
1711        self.next
1712    }
1713}
1714
1715unsafe impl InputChainStruct for CopyImageToImageInfo {
1716    const TYPE: StructureType = StructureType::COPY_IMAGE_TO_IMAGE_INFO;
1717
1718    #[inline]
1719    fn s_type(&self) -> StructureType {
1720        self.s_type
1721    }
1722
1723    #[inline]
1724    fn next(&self) -> *const c_void {
1725        self.next
1726    }
1727}
1728
1729unsafe impl InputChainStruct for CopyImageToMemoryInfo {
1730    const TYPE: StructureType = StructureType::COPY_IMAGE_TO_MEMORY_INFO;
1731
1732    #[inline]
1733    fn s_type(&self) -> StructureType {
1734        self.s_type
1735    }
1736
1737    #[inline]
1738    fn next(&self) -> *const c_void {
1739        self.next
1740    }
1741}
1742
1743unsafe impl InputChainStruct for CopyMemoryIndirectInfoKHR {
1744    const TYPE: StructureType = StructureType::COPY_MEMORY_INDIRECT_INFO_KHR;
1745
1746    #[inline]
1747    fn s_type(&self) -> StructureType {
1748        self.s_type
1749    }
1750
1751    #[inline]
1752    fn next(&self) -> *const c_void {
1753        self.next
1754    }
1755}
1756
1757unsafe impl InputChainStruct for CopyMemoryToAccelerationStructureInfoKHR {
1758    const TYPE: StructureType = StructureType::COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR;
1759
1760    #[inline]
1761    fn s_type(&self) -> StructureType {
1762        self.s_type
1763    }
1764
1765    #[inline]
1766    fn next(&self) -> *const c_void {
1767        self.next
1768    }
1769}
1770
1771unsafe impl InputChainStruct for CopyMemoryToImageIndirectInfoKHR {
1772    const TYPE: StructureType = StructureType::COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR;
1773
1774    #[inline]
1775    fn s_type(&self) -> StructureType {
1776        self.s_type
1777    }
1778
1779    #[inline]
1780    fn next(&self) -> *const c_void {
1781        self.next
1782    }
1783}
1784
1785unsafe impl InputChainStruct for CopyMemoryToImageInfo {
1786    const TYPE: StructureType = StructureType::COPY_MEMORY_TO_IMAGE_INFO;
1787
1788    #[inline]
1789    fn s_type(&self) -> StructureType {
1790        self.s_type
1791    }
1792
1793    #[inline]
1794    fn next(&self) -> *const c_void {
1795        self.next
1796    }
1797}
1798
1799unsafe impl InputChainStruct for CopyMemoryToMicromapInfoEXT {
1800    const TYPE: StructureType = StructureType::COPY_MEMORY_TO_MICROMAP_INFO_EXT;
1801
1802    #[inline]
1803    fn s_type(&self) -> StructureType {
1804        self.s_type
1805    }
1806
1807    #[inline]
1808    fn next(&self) -> *const c_void {
1809        self.next
1810    }
1811}
1812
1813unsafe impl InputChainStruct for CopyMicromapInfoEXT {
1814    const TYPE: StructureType = StructureType::COPY_MICROMAP_INFO_EXT;
1815
1816    #[inline]
1817    fn s_type(&self) -> StructureType {
1818        self.s_type
1819    }
1820
1821    #[inline]
1822    fn next(&self) -> *const c_void {
1823        self.next
1824    }
1825}
1826
1827unsafe impl InputChainStruct for CopyMicromapToMemoryInfoEXT {
1828    const TYPE: StructureType = StructureType::COPY_MICROMAP_TO_MEMORY_INFO_EXT;
1829
1830    #[inline]
1831    fn s_type(&self) -> StructureType {
1832        self.s_type
1833    }
1834
1835    #[inline]
1836    fn next(&self) -> *const c_void {
1837        self.next
1838    }
1839}
1840
1841unsafe impl InputChainStruct for CopyTensorInfoARM {
1842    const TYPE: StructureType = StructureType::COPY_TENSOR_INFO_ARM;
1843
1844    #[inline]
1845    fn s_type(&self) -> StructureType {
1846        self.s_type
1847    }
1848
1849    #[inline]
1850    fn next(&self) -> *const c_void {
1851        self.next
1852    }
1853}
1854
1855unsafe impl InputChainStruct for CuFunctionCreateInfoNVX {
1856    const TYPE: StructureType = StructureType::CU_FUNCTION_CREATE_INFO_NVX;
1857
1858    #[inline]
1859    fn s_type(&self) -> StructureType {
1860        self.s_type
1861    }
1862
1863    #[inline]
1864    fn next(&self) -> *const c_void {
1865        self.next
1866    }
1867}
1868
1869unsafe impl InputChainStruct for CuLaunchInfoNVX {
1870    const TYPE: StructureType = StructureType::CU_LAUNCH_INFO_NVX;
1871
1872    #[inline]
1873    fn s_type(&self) -> StructureType {
1874        self.s_type
1875    }
1876
1877    #[inline]
1878    fn next(&self) -> *const c_void {
1879        self.next
1880    }
1881}
1882
1883unsafe impl InputChainStruct for CuModuleCreateInfoNVX {
1884    const TYPE: StructureType = StructureType::CU_MODULE_CREATE_INFO_NVX;
1885
1886    #[inline]
1887    fn s_type(&self) -> StructureType {
1888        self.s_type
1889    }
1890
1891    #[inline]
1892    fn next(&self) -> *const c_void {
1893        self.next
1894    }
1895}
1896
1897unsafe impl InputChainStruct for CuModuleTexturingModeCreateInfoNVX {
1898    const TYPE: StructureType = StructureType::CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX;
1899
1900    #[inline]
1901    fn s_type(&self) -> StructureType {
1902        self.s_type
1903    }
1904
1905    #[inline]
1906    fn next(&self) -> *const c_void {
1907        self.next
1908    }
1909}
1910
1911unsafe impl InputChainStruct for CudaFunctionCreateInfoNV {
1912    const TYPE: StructureType = StructureType::CUDA_FUNCTION_CREATE_INFO_NV;
1913
1914    #[inline]
1915    fn s_type(&self) -> StructureType {
1916        self.s_type
1917    }
1918
1919    #[inline]
1920    fn next(&self) -> *const c_void {
1921        self.next
1922    }
1923}
1924
1925unsafe impl InputChainStruct for CudaLaunchInfoNV {
1926    const TYPE: StructureType = StructureType::CUDA_LAUNCH_INFO_NV;
1927
1928    #[inline]
1929    fn s_type(&self) -> StructureType {
1930        self.s_type
1931    }
1932
1933    #[inline]
1934    fn next(&self) -> *const c_void {
1935        self.next
1936    }
1937}
1938
1939unsafe impl InputChainStruct for CudaModuleCreateInfoNV {
1940    const TYPE: StructureType = StructureType::CUDA_MODULE_CREATE_INFO_NV;
1941
1942    #[inline]
1943    fn s_type(&self) -> StructureType {
1944        self.s_type
1945    }
1946
1947    #[inline]
1948    fn next(&self) -> *const c_void {
1949        self.next
1950    }
1951}
1952
1953unsafe impl InputChainStruct for D3D12FenceSubmitInfoKHR {
1954    const TYPE: StructureType = StructureType::D3D12_FENCE_SUBMIT_INFO_KHR;
1955
1956    #[inline]
1957    fn s_type(&self) -> StructureType {
1958        self.s_type
1959    }
1960
1961    #[inline]
1962    fn next(&self) -> *const c_void {
1963        self.next
1964    }
1965}
1966
1967unsafe impl InputChainStruct for DataGraphPipelineCompilerControlCreateInfoARM {
1968    const TYPE: StructureType = StructureType::DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM;
1969
1970    #[inline]
1971    fn s_type(&self) -> StructureType {
1972        self.s_type
1973    }
1974
1975    #[inline]
1976    fn next(&self) -> *const c_void {
1977        self.next
1978    }
1979}
1980
1981unsafe impl InputChainStruct for DataGraphPipelineConstantARM {
1982    const TYPE: StructureType = StructureType::DATA_GRAPH_PIPELINE_CONSTANT_ARM;
1983
1984    #[inline]
1985    fn s_type(&self) -> StructureType {
1986        self.s_type
1987    }
1988
1989    #[inline]
1990    fn next(&self) -> *const c_void {
1991        self.next
1992    }
1993}
1994
1995unsafe impl InputChainStruct for DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {
1996    const TYPE: StructureType =
1997        StructureType::DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM;
1998
1999    #[inline]
2000    fn s_type(&self) -> StructureType {
2001        self.s_type
2002    }
2003
2004    #[inline]
2005    fn next(&self) -> *const c_void {
2006        self.next
2007    }
2008}
2009
2010unsafe impl InputChainStruct for DataGraphPipelineCreateInfoARM {
2011    const TYPE: StructureType = StructureType::DATA_GRAPH_PIPELINE_CREATE_INFO_ARM;
2012
2013    #[inline]
2014    fn s_type(&self) -> StructureType {
2015        self.s_type
2016    }
2017
2018    #[inline]
2019    fn next(&self) -> *const c_void {
2020        self.next
2021    }
2022}
2023
2024unsafe impl InputChainStruct for DataGraphPipelineDispatchInfoARM {
2025    const TYPE: StructureType = StructureType::DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM;
2026
2027    #[inline]
2028    fn s_type(&self) -> StructureType {
2029        self.s_type
2030    }
2031
2032    #[inline]
2033    fn next(&self) -> *const c_void {
2034        self.next
2035    }
2036}
2037
2038unsafe impl OutputChainStruct for DataGraphPipelineDispatchInfoARM {
2039    #[inline]
2040    fn next_mut(&self) -> *mut c_void {
2041        self.next
2042    }
2043}
2044
2045unsafe impl InputChainStruct for DataGraphPipelineIdentifierCreateInfoARM {
2046    const TYPE: StructureType = StructureType::DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM;
2047
2048    #[inline]
2049    fn s_type(&self) -> StructureType {
2050        self.s_type
2051    }
2052
2053    #[inline]
2054    fn next(&self) -> *const c_void {
2055        self.next
2056    }
2057}
2058
2059unsafe impl InputChainStruct for DataGraphPipelineInfoARM {
2060    const TYPE: StructureType = StructureType::DATA_GRAPH_PIPELINE_INFO_ARM;
2061
2062    #[inline]
2063    fn s_type(&self) -> StructureType {
2064        self.s_type
2065    }
2066
2067    #[inline]
2068    fn next(&self) -> *const c_void {
2069        self.next
2070    }
2071}
2072
2073unsafe impl InputChainStruct for DataGraphPipelinePropertyQueryResultARM {
2074    const TYPE: StructureType = StructureType::DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM;
2075
2076    #[inline]
2077    fn s_type(&self) -> StructureType {
2078        self.s_type
2079    }
2080
2081    #[inline]
2082    fn next(&self) -> *const c_void {
2083        self.next
2084    }
2085}
2086
2087unsafe impl InputChainStruct for DataGraphPipelineResourceInfoARM {
2088    const TYPE: StructureType = StructureType::DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM;
2089
2090    #[inline]
2091    fn s_type(&self) -> StructureType {
2092        self.s_type
2093    }
2094
2095    #[inline]
2096    fn next(&self) -> *const c_void {
2097        self.next
2098    }
2099}
2100
2101unsafe impl InputChainStruct for DataGraphPipelineSessionBindPointRequirementARM {
2102    const TYPE: StructureType =
2103        StructureType::DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM;
2104
2105    #[inline]
2106    fn s_type(&self) -> StructureType {
2107        self.s_type
2108    }
2109
2110    #[inline]
2111    fn next(&self) -> *const c_void {
2112        self.next
2113    }
2114}
2115
2116unsafe impl InputChainStruct for DataGraphPipelineSessionBindPointRequirementsInfoARM {
2117    const TYPE: StructureType =
2118        StructureType::DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM;
2119
2120    #[inline]
2121    fn s_type(&self) -> StructureType {
2122        self.s_type
2123    }
2124
2125    #[inline]
2126    fn next(&self) -> *const c_void {
2127        self.next
2128    }
2129}
2130
2131unsafe impl InputChainStruct for DataGraphPipelineSessionCreateInfoARM {
2132    const TYPE: StructureType = StructureType::DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM;
2133
2134    #[inline]
2135    fn s_type(&self) -> StructureType {
2136        self.s_type
2137    }
2138
2139    #[inline]
2140    fn next(&self) -> *const c_void {
2141        self.next
2142    }
2143}
2144
2145unsafe impl InputChainStruct for DataGraphPipelineSessionMemoryRequirementsInfoARM {
2146    const TYPE: StructureType =
2147        StructureType::DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM;
2148
2149    #[inline]
2150    fn s_type(&self) -> StructureType {
2151        self.s_type
2152    }
2153
2154    #[inline]
2155    fn next(&self) -> *const c_void {
2156        self.next
2157    }
2158}
2159
2160unsafe impl InputChainStruct for DataGraphPipelineShaderModuleCreateInfoARM {
2161    const TYPE: StructureType = StructureType::DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM;
2162
2163    #[inline]
2164    fn s_type(&self) -> StructureType {
2165        self.s_type
2166    }
2167
2168    #[inline]
2169    fn next(&self) -> *const c_void {
2170        self.next
2171    }
2172}
2173
2174unsafe impl InputChainStruct for DataGraphProcessingEngineCreateInfoARM {
2175    const TYPE: StructureType = StructureType::DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM;
2176
2177    #[inline]
2178    fn s_type(&self) -> StructureType {
2179        self.s_type
2180    }
2181
2182    #[inline]
2183    fn next(&self) -> *const c_void {
2184        self.next
2185    }
2186}
2187
2188unsafe impl InputChainStruct for DebugMarkerMarkerInfoEXT {
2189    const TYPE: StructureType = StructureType::DEBUG_MARKER_MARKER_INFO_EXT;
2190
2191    #[inline]
2192    fn s_type(&self) -> StructureType {
2193        self.s_type
2194    }
2195
2196    #[inline]
2197    fn next(&self) -> *const c_void {
2198        self.next
2199    }
2200}
2201
2202unsafe impl InputChainStruct for DebugMarkerObjectNameInfoEXT {
2203    const TYPE: StructureType = StructureType::DEBUG_MARKER_OBJECT_NAME_INFO_EXT;
2204
2205    #[inline]
2206    fn s_type(&self) -> StructureType {
2207        self.s_type
2208    }
2209
2210    #[inline]
2211    fn next(&self) -> *const c_void {
2212        self.next
2213    }
2214}
2215
2216unsafe impl InputChainStruct for DebugMarkerObjectTagInfoEXT {
2217    const TYPE: StructureType = StructureType::DEBUG_MARKER_OBJECT_TAG_INFO_EXT;
2218
2219    #[inline]
2220    fn s_type(&self) -> StructureType {
2221        self.s_type
2222    }
2223
2224    #[inline]
2225    fn next(&self) -> *const c_void {
2226        self.next
2227    }
2228}
2229
2230unsafe impl InputChainStruct for DebugReportCallbackCreateInfoEXT {
2231    const TYPE: StructureType = StructureType::DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT;
2232
2233    #[inline]
2234    fn s_type(&self) -> StructureType {
2235        self.s_type
2236    }
2237
2238    #[inline]
2239    fn next(&self) -> *const c_void {
2240        self.next
2241    }
2242}
2243
2244unsafe impl InputChainStruct for DebugUtilsLabelEXT {
2245    const TYPE: StructureType = StructureType::DEBUG_UTILS_LABEL_EXT;
2246
2247    #[inline]
2248    fn s_type(&self) -> StructureType {
2249        self.s_type
2250    }
2251
2252    #[inline]
2253    fn next(&self) -> *const c_void {
2254        self.next
2255    }
2256}
2257
2258unsafe impl InputChainStruct for DebugUtilsMessengerCallbackDataEXT {
2259    const TYPE: StructureType = StructureType::DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT;
2260
2261    #[inline]
2262    fn s_type(&self) -> StructureType {
2263        self.s_type
2264    }
2265
2266    #[inline]
2267    fn next(&self) -> *const c_void {
2268        self.next
2269    }
2270}
2271
2272unsafe impl InputChainStruct for DebugUtilsMessengerCreateInfoEXT {
2273    const TYPE: StructureType = StructureType::DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT;
2274
2275    #[inline]
2276    fn s_type(&self) -> StructureType {
2277        self.s_type
2278    }
2279
2280    #[inline]
2281    fn next(&self) -> *const c_void {
2282        self.next
2283    }
2284}
2285
2286unsafe impl InputChainStruct for DebugUtilsObjectNameInfoEXT {
2287    const TYPE: StructureType = StructureType::DEBUG_UTILS_OBJECT_NAME_INFO_EXT;
2288
2289    #[inline]
2290    fn s_type(&self) -> StructureType {
2291        self.s_type
2292    }
2293
2294    #[inline]
2295    fn next(&self) -> *const c_void {
2296        self.next
2297    }
2298}
2299
2300unsafe impl InputChainStruct for DebugUtilsObjectTagInfoEXT {
2301    const TYPE: StructureType = StructureType::DEBUG_UTILS_OBJECT_TAG_INFO_EXT;
2302
2303    #[inline]
2304    fn s_type(&self) -> StructureType {
2305        self.s_type
2306    }
2307
2308    #[inline]
2309    fn next(&self) -> *const c_void {
2310        self.next
2311    }
2312}
2313
2314unsafe impl InputChainStruct for DedicatedAllocationBufferCreateInfoNV {
2315    const TYPE: StructureType = StructureType::DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV;
2316
2317    #[inline]
2318    fn s_type(&self) -> StructureType {
2319        self.s_type
2320    }
2321
2322    #[inline]
2323    fn next(&self) -> *const c_void {
2324        self.next
2325    }
2326}
2327
2328unsafe impl InputChainStruct for DedicatedAllocationImageCreateInfoNV {
2329    const TYPE: StructureType = StructureType::DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV;
2330
2331    #[inline]
2332    fn s_type(&self) -> StructureType {
2333        self.s_type
2334    }
2335
2336    #[inline]
2337    fn next(&self) -> *const c_void {
2338        self.next
2339    }
2340}
2341
2342unsafe impl InputChainStruct for DedicatedAllocationMemoryAllocateInfoNV {
2343    const TYPE: StructureType = StructureType::DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV;
2344
2345    #[inline]
2346    fn s_type(&self) -> StructureType {
2347        self.s_type
2348    }
2349
2350    #[inline]
2351    fn next(&self) -> *const c_void {
2352        self.next
2353    }
2354}
2355
2356unsafe impl InputChainStruct for DependencyInfo {
2357    const TYPE: StructureType = StructureType::DEPENDENCY_INFO;
2358
2359    #[inline]
2360    fn s_type(&self) -> StructureType {
2361        self.s_type
2362    }
2363
2364    #[inline]
2365    fn next(&self) -> *const c_void {
2366        self.next
2367    }
2368}
2369
2370unsafe impl InputChainStruct for DepthBiasInfoEXT {
2371    const TYPE: StructureType = StructureType::DEPTH_BIAS_INFO_EXT;
2372
2373    #[inline]
2374    fn s_type(&self) -> StructureType {
2375        self.s_type
2376    }
2377
2378    #[inline]
2379    fn next(&self) -> *const c_void {
2380        self.next
2381    }
2382}
2383
2384unsafe impl InputChainStruct for DepthBiasRepresentationInfoEXT {
2385    const TYPE: StructureType = StructureType::DEPTH_BIAS_REPRESENTATION_INFO_EXT;
2386
2387    #[inline]
2388    fn s_type(&self) -> StructureType {
2389        self.s_type
2390    }
2391
2392    #[inline]
2393    fn next(&self) -> *const c_void {
2394        self.next
2395    }
2396}
2397
2398unsafe impl InputChainStruct for DescriptorAddressInfoEXT {
2399    const TYPE: StructureType = StructureType::DESCRIPTOR_ADDRESS_INFO_EXT;
2400
2401    #[inline]
2402    fn s_type(&self) -> StructureType {
2403        self.s_type
2404    }
2405
2406    #[inline]
2407    fn next(&self) -> *const c_void {
2408        self.next
2409    }
2410}
2411
2412unsafe impl OutputChainStruct for DescriptorAddressInfoEXT {
2413    #[inline]
2414    fn next_mut(&self) -> *mut c_void {
2415        self.next
2416    }
2417}
2418
2419unsafe impl InputChainStruct for DescriptorBufferBindingInfoEXT {
2420    const TYPE: StructureType = StructureType::DESCRIPTOR_BUFFER_BINDING_INFO_EXT;
2421
2422    #[inline]
2423    fn s_type(&self) -> StructureType {
2424        self.s_type
2425    }
2426
2427    #[inline]
2428    fn next(&self) -> *const c_void {
2429        self.next
2430    }
2431}
2432
2433unsafe impl InputChainStruct for DescriptorBufferBindingPushDescriptorBufferHandleEXT {
2434    const TYPE: StructureType =
2435        StructureType::DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT;
2436
2437    #[inline]
2438    fn s_type(&self) -> StructureType {
2439        self.s_type
2440    }
2441
2442    #[inline]
2443    fn next(&self) -> *const c_void {
2444        self.next
2445    }
2446}
2447
2448unsafe impl InputChainStruct for DescriptorGetInfoEXT {
2449    const TYPE: StructureType = StructureType::DESCRIPTOR_GET_INFO_EXT;
2450
2451    #[inline]
2452    fn s_type(&self) -> StructureType {
2453        self.s_type
2454    }
2455
2456    #[inline]
2457    fn next(&self) -> *const c_void {
2458        self.next
2459    }
2460}
2461
2462unsafe impl InputChainStruct for DescriptorGetTensorInfoARM {
2463    const TYPE: StructureType = StructureType::DESCRIPTOR_GET_TENSOR_INFO_ARM;
2464
2465    #[inline]
2466    fn s_type(&self) -> StructureType {
2467        self.s_type
2468    }
2469
2470    #[inline]
2471    fn next(&self) -> *const c_void {
2472        self.next
2473    }
2474}
2475
2476unsafe impl InputChainStruct for DescriptorPoolCreateInfo {
2477    const TYPE: StructureType = StructureType::DESCRIPTOR_POOL_CREATE_INFO;
2478
2479    #[inline]
2480    fn s_type(&self) -> StructureType {
2481        self.s_type
2482    }
2483
2484    #[inline]
2485    fn next(&self) -> *const c_void {
2486        self.next
2487    }
2488}
2489
2490unsafe impl InputChainStruct for DescriptorPoolInlineUniformBlockCreateInfo {
2491    const TYPE: StructureType = StructureType::DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO;
2492
2493    #[inline]
2494    fn s_type(&self) -> StructureType {
2495        self.s_type
2496    }
2497
2498    #[inline]
2499    fn next(&self) -> *const c_void {
2500        self.next
2501    }
2502}
2503
2504unsafe impl InputChainStruct for DescriptorSetAllocateInfo {
2505    const TYPE: StructureType = StructureType::DESCRIPTOR_SET_ALLOCATE_INFO;
2506
2507    #[inline]
2508    fn s_type(&self) -> StructureType {
2509        self.s_type
2510    }
2511
2512    #[inline]
2513    fn next(&self) -> *const c_void {
2514        self.next
2515    }
2516}
2517
2518unsafe impl InputChainStruct for DescriptorSetBindingReferenceVALVE {
2519    const TYPE: StructureType = StructureType::DESCRIPTOR_SET_BINDING_REFERENCE_VALVE;
2520
2521    #[inline]
2522    fn s_type(&self) -> StructureType {
2523        self.s_type
2524    }
2525
2526    #[inline]
2527    fn next(&self) -> *const c_void {
2528        self.next
2529    }
2530}
2531
2532unsafe impl InputChainStruct for DescriptorSetLayoutBindingFlagsCreateInfo {
2533    const TYPE: StructureType = StructureType::DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO;
2534
2535    #[inline]
2536    fn s_type(&self) -> StructureType {
2537        self.s_type
2538    }
2539
2540    #[inline]
2541    fn next(&self) -> *const c_void {
2542        self.next
2543    }
2544}
2545
2546unsafe impl InputChainStruct for DescriptorSetLayoutCreateInfo {
2547    const TYPE: StructureType = StructureType::DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
2548
2549    #[inline]
2550    fn s_type(&self) -> StructureType {
2551        self.s_type
2552    }
2553
2554    #[inline]
2555    fn next(&self) -> *const c_void {
2556        self.next
2557    }
2558}
2559
2560unsafe impl InputChainStruct for DescriptorSetLayoutHostMappingInfoVALVE {
2561    const TYPE: StructureType = StructureType::DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE;
2562
2563    #[inline]
2564    fn s_type(&self) -> StructureType {
2565        self.s_type
2566    }
2567
2568    #[inline]
2569    fn next(&self) -> *const c_void {
2570        self.next
2571    }
2572}
2573
2574unsafe impl OutputChainStruct for DescriptorSetLayoutHostMappingInfoVALVE {
2575    #[inline]
2576    fn next_mut(&self) -> *mut c_void {
2577        self.next
2578    }
2579}
2580
2581unsafe impl InputChainStruct for DescriptorSetLayoutSupport {
2582    const TYPE: StructureType = StructureType::DESCRIPTOR_SET_LAYOUT_SUPPORT;
2583
2584    #[inline]
2585    fn s_type(&self) -> StructureType {
2586        self.s_type
2587    }
2588
2589    #[inline]
2590    fn next(&self) -> *const c_void {
2591        self.next
2592    }
2593}
2594
2595unsafe impl OutputChainStruct for DescriptorSetLayoutSupport {
2596    #[inline]
2597    fn next_mut(&self) -> *mut c_void {
2598        self.next
2599    }
2600}
2601
2602unsafe impl InputChainStruct for DescriptorSetVariableDescriptorCountAllocateInfo {
2603    const TYPE: StructureType =
2604        StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO;
2605
2606    #[inline]
2607    fn s_type(&self) -> StructureType {
2608        self.s_type
2609    }
2610
2611    #[inline]
2612    fn next(&self) -> *const c_void {
2613        self.next
2614    }
2615}
2616
2617unsafe impl InputChainStruct for DescriptorSetVariableDescriptorCountLayoutSupport {
2618    const TYPE: StructureType =
2619        StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT;
2620
2621    #[inline]
2622    fn s_type(&self) -> StructureType {
2623        self.s_type
2624    }
2625
2626    #[inline]
2627    fn next(&self) -> *const c_void {
2628        self.next
2629    }
2630}
2631
2632unsafe impl OutputChainStruct for DescriptorSetVariableDescriptorCountLayoutSupport {
2633    #[inline]
2634    fn next_mut(&self) -> *mut c_void {
2635        self.next
2636    }
2637}
2638
2639unsafe impl InputChainStruct for DescriptorUpdateTemplateCreateInfo {
2640    const TYPE: StructureType = StructureType::DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO;
2641
2642    #[inline]
2643    fn s_type(&self) -> StructureType {
2644        self.s_type
2645    }
2646
2647    #[inline]
2648    fn next(&self) -> *const c_void {
2649        self.next
2650    }
2651}
2652
2653unsafe impl InputChainStruct for DeviceAddressBindingCallbackDataEXT {
2654    const TYPE: StructureType = StructureType::DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT;
2655
2656    #[inline]
2657    fn s_type(&self) -> StructureType {
2658        self.s_type
2659    }
2660
2661    #[inline]
2662    fn next(&self) -> *const c_void {
2663        self.next
2664    }
2665}
2666
2667unsafe impl OutputChainStruct for DeviceAddressBindingCallbackDataEXT {
2668    #[inline]
2669    fn next_mut(&self) -> *mut c_void {
2670        self.next
2671    }
2672}
2673
2674unsafe impl InputChainStruct for DeviceBufferMemoryRequirements {
2675    const TYPE: StructureType = StructureType::DEVICE_BUFFER_MEMORY_REQUIREMENTS;
2676
2677    #[inline]
2678    fn s_type(&self) -> StructureType {
2679        self.s_type
2680    }
2681
2682    #[inline]
2683    fn next(&self) -> *const c_void {
2684        self.next
2685    }
2686}
2687
2688unsafe impl InputChainStruct for DeviceCreateInfo {
2689    const TYPE: StructureType = StructureType::DEVICE_CREATE_INFO;
2690
2691    #[inline]
2692    fn s_type(&self) -> StructureType {
2693        self.s_type
2694    }
2695
2696    #[inline]
2697    fn next(&self) -> *const c_void {
2698        self.next
2699    }
2700}
2701
2702unsafe impl InputChainStruct for DeviceDeviceMemoryReportCreateInfoEXT {
2703    const TYPE: StructureType = StructureType::DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT;
2704
2705    #[inline]
2706    fn s_type(&self) -> StructureType {
2707        self.s_type
2708    }
2709
2710    #[inline]
2711    fn next(&self) -> *const c_void {
2712        self.next
2713    }
2714}
2715
2716unsafe impl InputChainStruct for DeviceDiagnosticsConfigCreateInfoNV {
2717    const TYPE: StructureType = StructureType::DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV;
2718
2719    #[inline]
2720    fn s_type(&self) -> StructureType {
2721        self.s_type
2722    }
2723
2724    #[inline]
2725    fn next(&self) -> *const c_void {
2726        self.next
2727    }
2728}
2729
2730unsafe impl InputChainStruct for DeviceEventInfoEXT {
2731    const TYPE: StructureType = StructureType::DEVICE_EVENT_INFO_EXT;
2732
2733    #[inline]
2734    fn s_type(&self) -> StructureType {
2735        self.s_type
2736    }
2737
2738    #[inline]
2739    fn next(&self) -> *const c_void {
2740        self.next
2741    }
2742}
2743
2744unsafe impl InputChainStruct for DeviceFaultCountsEXT {
2745    const TYPE: StructureType = StructureType::DEVICE_FAULT_COUNTS_EXT;
2746
2747    #[inline]
2748    fn s_type(&self) -> StructureType {
2749        self.s_type
2750    }
2751
2752    #[inline]
2753    fn next(&self) -> *const c_void {
2754        self.next
2755    }
2756}
2757
2758unsafe impl OutputChainStruct for DeviceFaultCountsEXT {
2759    #[inline]
2760    fn next_mut(&self) -> *mut c_void {
2761        self.next
2762    }
2763}
2764
2765unsafe impl InputChainStruct for DeviceFaultInfoEXT {
2766    const TYPE: StructureType = StructureType::DEVICE_FAULT_INFO_EXT;
2767
2768    #[inline]
2769    fn s_type(&self) -> StructureType {
2770        self.s_type
2771    }
2772
2773    #[inline]
2774    fn next(&self) -> *const c_void {
2775        self.next
2776    }
2777}
2778
2779unsafe impl OutputChainStruct for DeviceFaultInfoEXT {
2780    #[inline]
2781    fn next_mut(&self) -> *mut c_void {
2782        self.next
2783    }
2784}
2785
2786unsafe impl InputChainStruct for DeviceGroupBindSparseInfo {
2787    const TYPE: StructureType = StructureType::DEVICE_GROUP_BIND_SPARSE_INFO;
2788
2789    #[inline]
2790    fn s_type(&self) -> StructureType {
2791        self.s_type
2792    }
2793
2794    #[inline]
2795    fn next(&self) -> *const c_void {
2796        self.next
2797    }
2798}
2799
2800unsafe impl InputChainStruct for DeviceGroupCommandBufferBeginInfo {
2801    const TYPE: StructureType = StructureType::DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO;
2802
2803    #[inline]
2804    fn s_type(&self) -> StructureType {
2805        self.s_type
2806    }
2807
2808    #[inline]
2809    fn next(&self) -> *const c_void {
2810        self.next
2811    }
2812}
2813
2814unsafe impl InputChainStruct for DeviceGroupDeviceCreateInfo {
2815    const TYPE: StructureType = StructureType::DEVICE_GROUP_DEVICE_CREATE_INFO;
2816
2817    #[inline]
2818    fn s_type(&self) -> StructureType {
2819        self.s_type
2820    }
2821
2822    #[inline]
2823    fn next(&self) -> *const c_void {
2824        self.next
2825    }
2826}
2827
2828unsafe impl InputChainStruct for DeviceGroupPresentCapabilitiesKHR {
2829    const TYPE: StructureType = StructureType::DEVICE_GROUP_PRESENT_CAPABILITIES_KHR;
2830
2831    #[inline]
2832    fn s_type(&self) -> StructureType {
2833        self.s_type
2834    }
2835
2836    #[inline]
2837    fn next(&self) -> *const c_void {
2838        self.next
2839    }
2840}
2841
2842unsafe impl OutputChainStruct for DeviceGroupPresentCapabilitiesKHR {
2843    #[inline]
2844    fn next_mut(&self) -> *mut c_void {
2845        self.next
2846    }
2847}
2848
2849unsafe impl InputChainStruct for DeviceGroupPresentInfoKHR {
2850    const TYPE: StructureType = StructureType::DEVICE_GROUP_PRESENT_INFO_KHR;
2851
2852    #[inline]
2853    fn s_type(&self) -> StructureType {
2854        self.s_type
2855    }
2856
2857    #[inline]
2858    fn next(&self) -> *const c_void {
2859        self.next
2860    }
2861}
2862
2863unsafe impl InputChainStruct for DeviceGroupRenderPassBeginInfo {
2864    const TYPE: StructureType = StructureType::DEVICE_GROUP_RENDER_PASS_BEGIN_INFO;
2865
2866    #[inline]
2867    fn s_type(&self) -> StructureType {
2868        self.s_type
2869    }
2870
2871    #[inline]
2872    fn next(&self) -> *const c_void {
2873        self.next
2874    }
2875}
2876
2877unsafe impl InputChainStruct for DeviceGroupSubmitInfo {
2878    const TYPE: StructureType = StructureType::DEVICE_GROUP_SUBMIT_INFO;
2879
2880    #[inline]
2881    fn s_type(&self) -> StructureType {
2882        self.s_type
2883    }
2884
2885    #[inline]
2886    fn next(&self) -> *const c_void {
2887        self.next
2888    }
2889}
2890
2891unsafe impl InputChainStruct for DeviceGroupSwapchainCreateInfoKHR {
2892    const TYPE: StructureType = StructureType::DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR;
2893
2894    #[inline]
2895    fn s_type(&self) -> StructureType {
2896        self.s_type
2897    }
2898
2899    #[inline]
2900    fn next(&self) -> *const c_void {
2901        self.next
2902    }
2903}
2904
2905unsafe impl InputChainStruct for DeviceImageMemoryRequirements {
2906    const TYPE: StructureType = StructureType::DEVICE_IMAGE_MEMORY_REQUIREMENTS;
2907
2908    #[inline]
2909    fn s_type(&self) -> StructureType {
2910        self.s_type
2911    }
2912
2913    #[inline]
2914    fn next(&self) -> *const c_void {
2915        self.next
2916    }
2917}
2918
2919unsafe impl InputChainStruct for DeviceImageSubresourceInfo {
2920    const TYPE: StructureType = StructureType::DEVICE_IMAGE_SUBRESOURCE_INFO;
2921
2922    #[inline]
2923    fn s_type(&self) -> StructureType {
2924        self.s_type
2925    }
2926
2927    #[inline]
2928    fn next(&self) -> *const c_void {
2929        self.next
2930    }
2931}
2932
2933unsafe impl InputChainStruct for DeviceMemoryOpaqueCaptureAddressInfo {
2934    const TYPE: StructureType = StructureType::DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO;
2935
2936    #[inline]
2937    fn s_type(&self) -> StructureType {
2938        self.s_type
2939    }
2940
2941    #[inline]
2942    fn next(&self) -> *const c_void {
2943        self.next
2944    }
2945}
2946
2947unsafe impl InputChainStruct for DeviceMemoryOverallocationCreateInfoAMD {
2948    const TYPE: StructureType = StructureType::DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD;
2949
2950    #[inline]
2951    fn s_type(&self) -> StructureType {
2952        self.s_type
2953    }
2954
2955    #[inline]
2956    fn next(&self) -> *const c_void {
2957        self.next
2958    }
2959}
2960
2961unsafe impl InputChainStruct for DeviceMemoryReportCallbackDataEXT {
2962    const TYPE: StructureType = StructureType::DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT;
2963
2964    #[inline]
2965    fn s_type(&self) -> StructureType {
2966        self.s_type
2967    }
2968
2969    #[inline]
2970    fn next(&self) -> *const c_void {
2971        self.next
2972    }
2973}
2974
2975unsafe impl OutputChainStruct for DeviceMemoryReportCallbackDataEXT {
2976    #[inline]
2977    fn next_mut(&self) -> *mut c_void {
2978        self.next
2979    }
2980}
2981
2982unsafe impl InputChainStruct for DevicePipelineBinaryInternalCacheControlKHR {
2983    const TYPE: StructureType = StructureType::DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR;
2984
2985    #[inline]
2986    fn s_type(&self) -> StructureType {
2987        self.s_type
2988    }
2989
2990    #[inline]
2991    fn next(&self) -> *const c_void {
2992        self.next
2993    }
2994}
2995
2996unsafe impl InputChainStruct for DevicePrivateDataCreateInfo {
2997    const TYPE: StructureType = StructureType::DEVICE_PRIVATE_DATA_CREATE_INFO;
2998
2999    #[inline]
3000    fn s_type(&self) -> StructureType {
3001        self.s_type
3002    }
3003
3004    #[inline]
3005    fn next(&self) -> *const c_void {
3006        self.next
3007    }
3008}
3009
3010unsafe impl InputChainStruct for DeviceQueueCreateInfo {
3011    const TYPE: StructureType = StructureType::DEVICE_QUEUE_CREATE_INFO;
3012
3013    #[inline]
3014    fn s_type(&self) -> StructureType {
3015        self.s_type
3016    }
3017
3018    #[inline]
3019    fn next(&self) -> *const c_void {
3020        self.next
3021    }
3022}
3023
3024unsafe impl InputChainStruct for DeviceQueueGlobalPriorityCreateInfo {
3025    const TYPE: StructureType = StructureType::DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO;
3026
3027    #[inline]
3028    fn s_type(&self) -> StructureType {
3029        self.s_type
3030    }
3031
3032    #[inline]
3033    fn next(&self) -> *const c_void {
3034        self.next
3035    }
3036}
3037
3038unsafe impl InputChainStruct for DeviceQueueInfo2 {
3039    const TYPE: StructureType = StructureType::DEVICE_QUEUE_INFO_2;
3040
3041    #[inline]
3042    fn s_type(&self) -> StructureType {
3043        self.s_type
3044    }
3045
3046    #[inline]
3047    fn next(&self) -> *const c_void {
3048        self.next
3049    }
3050}
3051
3052unsafe impl InputChainStruct for DeviceQueueShaderCoreControlCreateInfoARM {
3053    const TYPE: StructureType = StructureType::DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM;
3054
3055    #[inline]
3056    fn s_type(&self) -> StructureType {
3057        self.s_type
3058    }
3059
3060    #[inline]
3061    fn next(&self) -> *const c_void {
3062        self.next
3063    }
3064}
3065
3066unsafe impl OutputChainStruct for DeviceQueueShaderCoreControlCreateInfoARM {
3067    #[inline]
3068    fn next_mut(&self) -> *mut c_void {
3069        self.next
3070    }
3071}
3072
3073unsafe impl InputChainStruct for DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {
3074    const TYPE: StructureType =
3075        StructureType::DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV;
3076
3077    #[inline]
3078    fn s_type(&self) -> StructureType {
3079        self.s_type
3080    }
3081
3082    #[inline]
3083    fn next(&self) -> *const c_void {
3084        self.next
3085    }
3086}
3087
3088unsafe impl InputChainStruct for DeviceTensorMemoryRequirementsARM {
3089    const TYPE: StructureType = StructureType::DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM;
3090
3091    #[inline]
3092    fn s_type(&self) -> StructureType {
3093        self.s_type
3094    }
3095
3096    #[inline]
3097    fn next(&self) -> *const c_void {
3098        self.next
3099    }
3100}
3101
3102unsafe impl InputChainStruct for DirectDriverLoadingInfoLUNARG {
3103    const TYPE: StructureType = StructureType::DIRECT_DRIVER_LOADING_INFO_LUNARG;
3104
3105    #[inline]
3106    fn s_type(&self) -> StructureType {
3107        self.s_type
3108    }
3109
3110    #[inline]
3111    fn next(&self) -> *const c_void {
3112        self.next
3113    }
3114}
3115
3116unsafe impl OutputChainStruct for DirectDriverLoadingInfoLUNARG {
3117    #[inline]
3118    fn next_mut(&self) -> *mut c_void {
3119        self.next
3120    }
3121}
3122
3123unsafe impl InputChainStruct for DirectDriverLoadingListLUNARG {
3124    const TYPE: StructureType = StructureType::DIRECT_DRIVER_LOADING_LIST_LUNARG;
3125
3126    #[inline]
3127    fn s_type(&self) -> StructureType {
3128        self.s_type
3129    }
3130
3131    #[inline]
3132    fn next(&self) -> *const c_void {
3133        self.next
3134    }
3135}
3136
3137unsafe impl InputChainStruct for DirectFBSurfaceCreateInfoEXT {
3138    const TYPE: StructureType = StructureType::DIRECTFB_SURFACE_CREATE_INFO_EXT;
3139
3140    #[inline]
3141    fn s_type(&self) -> StructureType {
3142        self.s_type
3143    }
3144
3145    #[inline]
3146    fn next(&self) -> *const c_void {
3147        self.next
3148    }
3149}
3150
3151unsafe impl InputChainStruct for DispatchTileInfoQCOM {
3152    const TYPE: StructureType = StructureType::DISPATCH_TILE_INFO_QCOM;
3153
3154    #[inline]
3155    fn s_type(&self) -> StructureType {
3156        self.s_type
3157    }
3158
3159    #[inline]
3160    fn next(&self) -> *const c_void {
3161        self.next
3162    }
3163}
3164
3165unsafe impl InputChainStruct for DisplayEventInfoEXT {
3166    const TYPE: StructureType = StructureType::DISPLAY_EVENT_INFO_EXT;
3167
3168    #[inline]
3169    fn s_type(&self) -> StructureType {
3170        self.s_type
3171    }
3172
3173    #[inline]
3174    fn next(&self) -> *const c_void {
3175        self.next
3176    }
3177}
3178
3179unsafe impl InputChainStruct for DisplayModeCreateInfoKHR {
3180    const TYPE: StructureType = StructureType::DISPLAY_MODE_CREATE_INFO_KHR;
3181
3182    #[inline]
3183    fn s_type(&self) -> StructureType {
3184        self.s_type
3185    }
3186
3187    #[inline]
3188    fn next(&self) -> *const c_void {
3189        self.next
3190    }
3191}
3192
3193unsafe impl InputChainStruct for DisplayModeProperties2KHR {
3194    const TYPE: StructureType = StructureType::DISPLAY_MODE_PROPERTIES_2_KHR;
3195
3196    #[inline]
3197    fn s_type(&self) -> StructureType {
3198        self.s_type
3199    }
3200
3201    #[inline]
3202    fn next(&self) -> *const c_void {
3203        self.next
3204    }
3205}
3206
3207unsafe impl OutputChainStruct for DisplayModeProperties2KHR {
3208    #[inline]
3209    fn next_mut(&self) -> *mut c_void {
3210        self.next
3211    }
3212}
3213
3214unsafe impl InputChainStruct for DisplayModeStereoPropertiesNV {
3215    const TYPE: StructureType = StructureType::DISPLAY_MODE_STEREO_PROPERTIES_NV;
3216
3217    #[inline]
3218    fn s_type(&self) -> StructureType {
3219        self.s_type
3220    }
3221
3222    #[inline]
3223    fn next(&self) -> *const c_void {
3224        self.next
3225    }
3226}
3227
3228unsafe impl InputChainStruct for DisplayNativeHdrSurfaceCapabilitiesAMD {
3229    const TYPE: StructureType = StructureType::DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD;
3230
3231    #[inline]
3232    fn s_type(&self) -> StructureType {
3233        self.s_type
3234    }
3235
3236    #[inline]
3237    fn next(&self) -> *const c_void {
3238        self.next
3239    }
3240}
3241
3242unsafe impl OutputChainStruct for DisplayNativeHdrSurfaceCapabilitiesAMD {
3243    #[inline]
3244    fn next_mut(&self) -> *mut c_void {
3245        self.next
3246    }
3247}
3248
3249unsafe impl InputChainStruct for DisplayPlaneCapabilities2KHR {
3250    const TYPE: StructureType = StructureType::DISPLAY_PLANE_CAPABILITIES_2_KHR;
3251
3252    #[inline]
3253    fn s_type(&self) -> StructureType {
3254        self.s_type
3255    }
3256
3257    #[inline]
3258    fn next(&self) -> *const c_void {
3259        self.next
3260    }
3261}
3262
3263unsafe impl OutputChainStruct for DisplayPlaneCapabilities2KHR {
3264    #[inline]
3265    fn next_mut(&self) -> *mut c_void {
3266        self.next
3267    }
3268}
3269
3270unsafe impl InputChainStruct for DisplayPlaneInfo2KHR {
3271    const TYPE: StructureType = StructureType::DISPLAY_PLANE_INFO_2_KHR;
3272
3273    #[inline]
3274    fn s_type(&self) -> StructureType {
3275        self.s_type
3276    }
3277
3278    #[inline]
3279    fn next(&self) -> *const c_void {
3280        self.next
3281    }
3282}
3283
3284unsafe impl InputChainStruct for DisplayPlaneProperties2KHR {
3285    const TYPE: StructureType = StructureType::DISPLAY_PLANE_PROPERTIES_2_KHR;
3286
3287    #[inline]
3288    fn s_type(&self) -> StructureType {
3289        self.s_type
3290    }
3291
3292    #[inline]
3293    fn next(&self) -> *const c_void {
3294        self.next
3295    }
3296}
3297
3298unsafe impl OutputChainStruct for DisplayPlaneProperties2KHR {
3299    #[inline]
3300    fn next_mut(&self) -> *mut c_void {
3301        self.next
3302    }
3303}
3304
3305unsafe impl InputChainStruct for DisplayPowerInfoEXT {
3306    const TYPE: StructureType = StructureType::DISPLAY_POWER_INFO_EXT;
3307
3308    #[inline]
3309    fn s_type(&self) -> StructureType {
3310        self.s_type
3311    }
3312
3313    #[inline]
3314    fn next(&self) -> *const c_void {
3315        self.next
3316    }
3317}
3318
3319unsafe impl InputChainStruct for DisplayPresentInfoKHR {
3320    const TYPE: StructureType = StructureType::DISPLAY_PRESENT_INFO_KHR;
3321
3322    #[inline]
3323    fn s_type(&self) -> StructureType {
3324        self.s_type
3325    }
3326
3327    #[inline]
3328    fn next(&self) -> *const c_void {
3329        self.next
3330    }
3331}
3332
3333unsafe impl InputChainStruct for DisplayProperties2KHR {
3334    const TYPE: StructureType = StructureType::DISPLAY_PROPERTIES_2_KHR;
3335
3336    #[inline]
3337    fn s_type(&self) -> StructureType {
3338        self.s_type
3339    }
3340
3341    #[inline]
3342    fn next(&self) -> *const c_void {
3343        self.next
3344    }
3345}
3346
3347unsafe impl OutputChainStruct for DisplayProperties2KHR {
3348    #[inline]
3349    fn next_mut(&self) -> *mut c_void {
3350        self.next
3351    }
3352}
3353
3354unsafe impl InputChainStruct for DisplaySurfaceCreateInfoKHR {
3355    const TYPE: StructureType = StructureType::DISPLAY_SURFACE_CREATE_INFO_KHR;
3356
3357    #[inline]
3358    fn s_type(&self) -> StructureType {
3359        self.s_type
3360    }
3361
3362    #[inline]
3363    fn next(&self) -> *const c_void {
3364        self.next
3365    }
3366}
3367
3368unsafe impl InputChainStruct for DisplaySurfaceStereoCreateInfoNV {
3369    const TYPE: StructureType = StructureType::DISPLAY_SURFACE_STEREO_CREATE_INFO_NV;
3370
3371    #[inline]
3372    fn s_type(&self) -> StructureType {
3373        self.s_type
3374    }
3375
3376    #[inline]
3377    fn next(&self) -> *const c_void {
3378        self.next
3379    }
3380}
3381
3382unsafe impl InputChainStruct for DrmFormatModifierPropertiesList2EXT {
3383    const TYPE: StructureType = StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT;
3384
3385    #[inline]
3386    fn s_type(&self) -> StructureType {
3387        self.s_type
3388    }
3389
3390    #[inline]
3391    fn next(&self) -> *const c_void {
3392        self.next
3393    }
3394}
3395
3396unsafe impl OutputChainStruct for DrmFormatModifierPropertiesList2EXT {
3397    #[inline]
3398    fn next_mut(&self) -> *mut c_void {
3399        self.next
3400    }
3401}
3402
3403unsafe impl InputChainStruct for DrmFormatModifierPropertiesListEXT {
3404    const TYPE: StructureType = StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT;
3405
3406    #[inline]
3407    fn s_type(&self) -> StructureType {
3408        self.s_type
3409    }
3410
3411    #[inline]
3412    fn next(&self) -> *const c_void {
3413        self.next
3414    }
3415}
3416
3417unsafe impl OutputChainStruct for DrmFormatModifierPropertiesListEXT {
3418    #[inline]
3419    fn next_mut(&self) -> *mut c_void {
3420        self.next
3421    }
3422}
3423
3424unsafe impl InputChainStruct for EventCreateInfo {
3425    const TYPE: StructureType = StructureType::EVENT_CREATE_INFO;
3426
3427    #[inline]
3428    fn s_type(&self) -> StructureType {
3429        self.s_type
3430    }
3431
3432    #[inline]
3433    fn next(&self) -> *const c_void {
3434        self.next
3435    }
3436}
3437
3438unsafe impl InputChainStruct for ExecutionGraphPipelineCreateInfoAMDX {
3439    const TYPE: StructureType = StructureType::EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX;
3440
3441    #[inline]
3442    fn s_type(&self) -> StructureType {
3443        self.s_type
3444    }
3445
3446    #[inline]
3447    fn next(&self) -> *const c_void {
3448        self.next
3449    }
3450}
3451
3452unsafe impl InputChainStruct for ExecutionGraphPipelineScratchSizeAMDX {
3453    const TYPE: StructureType = StructureType::EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX;
3454
3455    #[inline]
3456    fn s_type(&self) -> StructureType {
3457        self.s_type
3458    }
3459
3460    #[inline]
3461    fn next(&self) -> *const c_void {
3462        self.next
3463    }
3464}
3465
3466unsafe impl OutputChainStruct for ExecutionGraphPipelineScratchSizeAMDX {
3467    #[inline]
3468    fn next_mut(&self) -> *mut c_void {
3469        self.next
3470    }
3471}
3472
3473unsafe impl InputChainStruct for ExportFenceCreateInfo {
3474    const TYPE: StructureType = StructureType::EXPORT_FENCE_CREATE_INFO;
3475
3476    #[inline]
3477    fn s_type(&self) -> StructureType {
3478        self.s_type
3479    }
3480
3481    #[inline]
3482    fn next(&self) -> *const c_void {
3483        self.next
3484    }
3485}
3486
3487unsafe impl InputChainStruct for ExportFenceSciSyncInfoNV {
3488    const TYPE: StructureType = StructureType::EXPORT_FENCE_SCI_SYNC_INFO_NV;
3489
3490    #[inline]
3491    fn s_type(&self) -> StructureType {
3492        self.s_type
3493    }
3494
3495    #[inline]
3496    fn next(&self) -> *const c_void {
3497        self.next
3498    }
3499}
3500
3501unsafe impl InputChainStruct for ExportFenceWin32HandleInfoKHR {
3502    const TYPE: StructureType = StructureType::EXPORT_FENCE_WIN32_HANDLE_INFO_KHR;
3503
3504    #[inline]
3505    fn s_type(&self) -> StructureType {
3506        self.s_type
3507    }
3508
3509    #[inline]
3510    fn next(&self) -> *const c_void {
3511        self.next
3512    }
3513}
3514
3515unsafe impl InputChainStruct for ExportMemoryAllocateInfo {
3516    const TYPE: StructureType = StructureType::EXPORT_MEMORY_ALLOCATE_INFO;
3517
3518    #[inline]
3519    fn s_type(&self) -> StructureType {
3520        self.s_type
3521    }
3522
3523    #[inline]
3524    fn next(&self) -> *const c_void {
3525        self.next
3526    }
3527}
3528
3529unsafe impl InputChainStruct for ExportMemoryAllocateInfoNV {
3530    const TYPE: StructureType = StructureType::EXPORT_MEMORY_ALLOCATE_INFO_NV;
3531
3532    #[inline]
3533    fn s_type(&self) -> StructureType {
3534        self.s_type
3535    }
3536
3537    #[inline]
3538    fn next(&self) -> *const c_void {
3539        self.next
3540    }
3541}
3542
3543unsafe impl InputChainStruct for ExportMemorySciBufInfoNV {
3544    const TYPE: StructureType = StructureType::EXPORT_MEMORY_SCI_BUF_INFO_NV;
3545
3546    #[inline]
3547    fn s_type(&self) -> StructureType {
3548        self.s_type
3549    }
3550
3551    #[inline]
3552    fn next(&self) -> *const c_void {
3553        self.next
3554    }
3555}
3556
3557unsafe impl InputChainStruct for ExportMemoryWin32HandleInfoKHR {
3558    const TYPE: StructureType = StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR;
3559
3560    #[inline]
3561    fn s_type(&self) -> StructureType {
3562        self.s_type
3563    }
3564
3565    #[inline]
3566    fn next(&self) -> *const c_void {
3567        self.next
3568    }
3569}
3570
3571unsafe impl InputChainStruct for ExportMemoryWin32HandleInfoNV {
3572    const TYPE: StructureType = StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_NV;
3573
3574    #[inline]
3575    fn s_type(&self) -> StructureType {
3576        self.s_type
3577    }
3578
3579    #[inline]
3580    fn next(&self) -> *const c_void {
3581        self.next
3582    }
3583}
3584
3585unsafe impl InputChainStruct for ExportMetalBufferInfoEXT {
3586    const TYPE: StructureType = StructureType::EXPORT_METAL_BUFFER_INFO_EXT;
3587
3588    #[inline]
3589    fn s_type(&self) -> StructureType {
3590        self.s_type
3591    }
3592
3593    #[inline]
3594    fn next(&self) -> *const c_void {
3595        self.next
3596    }
3597}
3598
3599unsafe impl InputChainStruct for ExportMetalCommandQueueInfoEXT {
3600    const TYPE: StructureType = StructureType::EXPORT_METAL_COMMAND_QUEUE_INFO_EXT;
3601
3602    #[inline]
3603    fn s_type(&self) -> StructureType {
3604        self.s_type
3605    }
3606
3607    #[inline]
3608    fn next(&self) -> *const c_void {
3609        self.next
3610    }
3611}
3612
3613unsafe impl InputChainStruct for ExportMetalDeviceInfoEXT {
3614    const TYPE: StructureType = StructureType::EXPORT_METAL_DEVICE_INFO_EXT;
3615
3616    #[inline]
3617    fn s_type(&self) -> StructureType {
3618        self.s_type
3619    }
3620
3621    #[inline]
3622    fn next(&self) -> *const c_void {
3623        self.next
3624    }
3625}
3626
3627unsafe impl InputChainStruct for ExportMetalIOSurfaceInfoEXT {
3628    const TYPE: StructureType = StructureType::EXPORT_METAL_IO_SURFACE_INFO_EXT;
3629
3630    #[inline]
3631    fn s_type(&self) -> StructureType {
3632        self.s_type
3633    }
3634
3635    #[inline]
3636    fn next(&self) -> *const c_void {
3637        self.next
3638    }
3639}
3640
3641unsafe impl InputChainStruct for ExportMetalObjectCreateInfoEXT {
3642    const TYPE: StructureType = StructureType::EXPORT_METAL_OBJECT_CREATE_INFO_EXT;
3643
3644    #[inline]
3645    fn s_type(&self) -> StructureType {
3646        self.s_type
3647    }
3648
3649    #[inline]
3650    fn next(&self) -> *const c_void {
3651        self.next
3652    }
3653}
3654
3655unsafe impl InputChainStruct for ExportMetalObjectsInfoEXT {
3656    const TYPE: StructureType = StructureType::EXPORT_METAL_OBJECTS_INFO_EXT;
3657
3658    #[inline]
3659    fn s_type(&self) -> StructureType {
3660        self.s_type
3661    }
3662
3663    #[inline]
3664    fn next(&self) -> *const c_void {
3665        self.next
3666    }
3667}
3668
3669unsafe impl InputChainStruct for ExportMetalSharedEventInfoEXT {
3670    const TYPE: StructureType = StructureType::EXPORT_METAL_SHARED_EVENT_INFO_EXT;
3671
3672    #[inline]
3673    fn s_type(&self) -> StructureType {
3674        self.s_type
3675    }
3676
3677    #[inline]
3678    fn next(&self) -> *const c_void {
3679        self.next
3680    }
3681}
3682
3683unsafe impl InputChainStruct for ExportMetalTextureInfoEXT {
3684    const TYPE: StructureType = StructureType::EXPORT_METAL_TEXTURE_INFO_EXT;
3685
3686    #[inline]
3687    fn s_type(&self) -> StructureType {
3688        self.s_type
3689    }
3690
3691    #[inline]
3692    fn next(&self) -> *const c_void {
3693        self.next
3694    }
3695}
3696
3697unsafe impl InputChainStruct for ExportSemaphoreCreateInfo {
3698    const TYPE: StructureType = StructureType::EXPORT_SEMAPHORE_CREATE_INFO;
3699
3700    #[inline]
3701    fn s_type(&self) -> StructureType {
3702        self.s_type
3703    }
3704
3705    #[inline]
3706    fn next(&self) -> *const c_void {
3707        self.next
3708    }
3709}
3710
3711unsafe impl InputChainStruct for ExportSemaphoreSciSyncInfoNV {
3712    const TYPE: StructureType = StructureType::EXPORT_SEMAPHORE_SCI_SYNC_INFO_NV;
3713
3714    #[inline]
3715    fn s_type(&self) -> StructureType {
3716        self.s_type
3717    }
3718
3719    #[inline]
3720    fn next(&self) -> *const c_void {
3721        self.next
3722    }
3723}
3724
3725unsafe impl InputChainStruct for ExportSemaphoreWin32HandleInfoKHR {
3726    const TYPE: StructureType = StructureType::EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR;
3727
3728    #[inline]
3729    fn s_type(&self) -> StructureType {
3730        self.s_type
3731    }
3732
3733    #[inline]
3734    fn next(&self) -> *const c_void {
3735        self.next
3736    }
3737}
3738
3739unsafe impl InputChainStruct for ExternalBufferProperties {
3740    const TYPE: StructureType = StructureType::EXTERNAL_BUFFER_PROPERTIES;
3741
3742    #[inline]
3743    fn s_type(&self) -> StructureType {
3744        self.s_type
3745    }
3746
3747    #[inline]
3748    fn next(&self) -> *const c_void {
3749        self.next
3750    }
3751}
3752
3753unsafe impl OutputChainStruct for ExternalBufferProperties {
3754    #[inline]
3755    fn next_mut(&self) -> *mut c_void {
3756        self.next
3757    }
3758}
3759
3760unsafe impl InputChainStruct for ExternalComputeQueueCreateInfoNV {
3761    const TYPE: StructureType = StructureType::EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV;
3762
3763    #[inline]
3764    fn s_type(&self) -> StructureType {
3765        self.s_type
3766    }
3767
3768    #[inline]
3769    fn next(&self) -> *const c_void {
3770        self.next
3771    }
3772}
3773
3774unsafe impl InputChainStruct for ExternalComputeQueueDataParamsNV {
3775    const TYPE: StructureType = StructureType::EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV;
3776
3777    #[inline]
3778    fn s_type(&self) -> StructureType {
3779        self.s_type
3780    }
3781
3782    #[inline]
3783    fn next(&self) -> *const c_void {
3784        self.next
3785    }
3786}
3787
3788unsafe impl InputChainStruct for ExternalComputeQueueDeviceCreateInfoNV {
3789    const TYPE: StructureType = StructureType::EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV;
3790
3791    #[inline]
3792    fn s_type(&self) -> StructureType {
3793        self.s_type
3794    }
3795
3796    #[inline]
3797    fn next(&self) -> *const c_void {
3798        self.next
3799    }
3800}
3801
3802unsafe impl InputChainStruct for ExternalFenceProperties {
3803    const TYPE: StructureType = StructureType::EXTERNAL_FENCE_PROPERTIES;
3804
3805    #[inline]
3806    fn s_type(&self) -> StructureType {
3807        self.s_type
3808    }
3809
3810    #[inline]
3811    fn next(&self) -> *const c_void {
3812        self.next
3813    }
3814}
3815
3816unsafe impl OutputChainStruct for ExternalFenceProperties {
3817    #[inline]
3818    fn next_mut(&self) -> *mut c_void {
3819        self.next
3820    }
3821}
3822
3823unsafe impl InputChainStruct for ExternalFormatANDROID {
3824    const TYPE: StructureType = StructureType::EXTERNAL_FORMAT_ANDROID;
3825
3826    #[inline]
3827    fn s_type(&self) -> StructureType {
3828        self.s_type
3829    }
3830
3831    #[inline]
3832    fn next(&self) -> *const c_void {
3833        self.next
3834    }
3835}
3836
3837unsafe impl OutputChainStruct for ExternalFormatANDROID {
3838    #[inline]
3839    fn next_mut(&self) -> *mut c_void {
3840        self.next
3841    }
3842}
3843
3844unsafe impl InputChainStruct for ExternalFormatQNX {
3845    const TYPE: StructureType = StructureType::EXTERNAL_FORMAT_QNX;
3846
3847    #[inline]
3848    fn s_type(&self) -> StructureType {
3849        self.s_type
3850    }
3851
3852    #[inline]
3853    fn next(&self) -> *const c_void {
3854        self.next
3855    }
3856}
3857
3858unsafe impl OutputChainStruct for ExternalFormatQNX {
3859    #[inline]
3860    fn next_mut(&self) -> *mut c_void {
3861        self.next
3862    }
3863}
3864
3865unsafe impl InputChainStruct for ExternalImageFormatProperties {
3866    const TYPE: StructureType = StructureType::EXTERNAL_IMAGE_FORMAT_PROPERTIES;
3867
3868    #[inline]
3869    fn s_type(&self) -> StructureType {
3870        self.s_type
3871    }
3872
3873    #[inline]
3874    fn next(&self) -> *const c_void {
3875        self.next
3876    }
3877}
3878
3879unsafe impl OutputChainStruct for ExternalImageFormatProperties {
3880    #[inline]
3881    fn next_mut(&self) -> *mut c_void {
3882        self.next
3883    }
3884}
3885
3886unsafe impl InputChainStruct for ExternalMemoryAcquireUnmodifiedEXT {
3887    const TYPE: StructureType = StructureType::EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT;
3888
3889    #[inline]
3890    fn s_type(&self) -> StructureType {
3891        self.s_type
3892    }
3893
3894    #[inline]
3895    fn next(&self) -> *const c_void {
3896        self.next
3897    }
3898}
3899
3900unsafe impl InputChainStruct for ExternalMemoryBufferCreateInfo {
3901    const TYPE: StructureType = StructureType::EXTERNAL_MEMORY_BUFFER_CREATE_INFO;
3902
3903    #[inline]
3904    fn s_type(&self) -> StructureType {
3905        self.s_type
3906    }
3907
3908    #[inline]
3909    fn next(&self) -> *const c_void {
3910        self.next
3911    }
3912}
3913
3914unsafe impl InputChainStruct for ExternalMemoryImageCreateInfo {
3915    const TYPE: StructureType = StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO;
3916
3917    #[inline]
3918    fn s_type(&self) -> StructureType {
3919        self.s_type
3920    }
3921
3922    #[inline]
3923    fn next(&self) -> *const c_void {
3924        self.next
3925    }
3926}
3927
3928unsafe impl InputChainStruct for ExternalMemoryImageCreateInfoNV {
3929    const TYPE: StructureType = StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV;
3930
3931    #[inline]
3932    fn s_type(&self) -> StructureType {
3933        self.s_type
3934    }
3935
3936    #[inline]
3937    fn next(&self) -> *const c_void {
3938        self.next
3939    }
3940}
3941
3942unsafe impl InputChainStruct for ExternalMemoryTensorCreateInfoARM {
3943    const TYPE: StructureType = StructureType::EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM;
3944
3945    #[inline]
3946    fn s_type(&self) -> StructureType {
3947        self.s_type
3948    }
3949
3950    #[inline]
3951    fn next(&self) -> *const c_void {
3952        self.next
3953    }
3954}
3955
3956unsafe impl InputChainStruct for ExternalSemaphoreProperties {
3957    const TYPE: StructureType = StructureType::EXTERNAL_SEMAPHORE_PROPERTIES;
3958
3959    #[inline]
3960    fn s_type(&self) -> StructureType {
3961        self.s_type
3962    }
3963
3964    #[inline]
3965    fn next(&self) -> *const c_void {
3966        self.next
3967    }
3968}
3969
3970unsafe impl OutputChainStruct for ExternalSemaphoreProperties {
3971    #[inline]
3972    fn next_mut(&self) -> *mut c_void {
3973        self.next
3974    }
3975}
3976
3977unsafe impl InputChainStruct for ExternalTensorPropertiesARM {
3978    const TYPE: StructureType = StructureType::EXTERNAL_TENSOR_PROPERTIES_ARM;
3979
3980    #[inline]
3981    fn s_type(&self) -> StructureType {
3982        self.s_type
3983    }
3984
3985    #[inline]
3986    fn next(&self) -> *const c_void {
3987        self.next
3988    }
3989}
3990
3991unsafe impl InputChainStruct for FenceCreateInfo {
3992    const TYPE: StructureType = StructureType::FENCE_CREATE_INFO;
3993
3994    #[inline]
3995    fn s_type(&self) -> StructureType {
3996        self.s_type
3997    }
3998
3999    #[inline]
4000    fn next(&self) -> *const c_void {
4001        self.next
4002    }
4003}
4004
4005unsafe impl InputChainStruct for FenceGetFdInfoKHR {
4006    const TYPE: StructureType = StructureType::FENCE_GET_FD_INFO_KHR;
4007
4008    #[inline]
4009    fn s_type(&self) -> StructureType {
4010        self.s_type
4011    }
4012
4013    #[inline]
4014    fn next(&self) -> *const c_void {
4015        self.next
4016    }
4017}
4018
4019unsafe impl InputChainStruct for FenceGetSciSyncInfoNV {
4020    const TYPE: StructureType = StructureType::FENCE_GET_SCI_SYNC_INFO_NV;
4021
4022    #[inline]
4023    fn s_type(&self) -> StructureType {
4024        self.s_type
4025    }
4026
4027    #[inline]
4028    fn next(&self) -> *const c_void {
4029        self.next
4030    }
4031}
4032
4033unsafe impl InputChainStruct for FenceGetWin32HandleInfoKHR {
4034    const TYPE: StructureType = StructureType::FENCE_GET_WIN32_HANDLE_INFO_KHR;
4035
4036    #[inline]
4037    fn s_type(&self) -> StructureType {
4038        self.s_type
4039    }
4040
4041    #[inline]
4042    fn next(&self) -> *const c_void {
4043        self.next
4044    }
4045}
4046
4047unsafe impl InputChainStruct for FilterCubicImageViewImageFormatPropertiesEXT {
4048    const TYPE: StructureType = StructureType::FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT;
4049
4050    #[inline]
4051    fn s_type(&self) -> StructureType {
4052        self.s_type
4053    }
4054
4055    #[inline]
4056    fn next(&self) -> *const c_void {
4057        self.next
4058    }
4059}
4060
4061unsafe impl OutputChainStruct for FilterCubicImageViewImageFormatPropertiesEXT {
4062    #[inline]
4063    fn next_mut(&self) -> *mut c_void {
4064        self.next
4065    }
4066}
4067
4068unsafe impl InputChainStruct for FormatProperties2 {
4069    const TYPE: StructureType = StructureType::FORMAT_PROPERTIES_2;
4070
4071    #[inline]
4072    fn s_type(&self) -> StructureType {
4073        self.s_type
4074    }
4075
4076    #[inline]
4077    fn next(&self) -> *const c_void {
4078        self.next
4079    }
4080}
4081
4082unsafe impl OutputChainStruct for FormatProperties2 {
4083    #[inline]
4084    fn next_mut(&self) -> *mut c_void {
4085        self.next
4086    }
4087}
4088
4089unsafe impl InputChainStruct for FormatProperties3 {
4090    const TYPE: StructureType = StructureType::FORMAT_PROPERTIES_3;
4091
4092    #[inline]
4093    fn s_type(&self) -> StructureType {
4094        self.s_type
4095    }
4096
4097    #[inline]
4098    fn next(&self) -> *const c_void {
4099        self.next
4100    }
4101}
4102
4103unsafe impl OutputChainStruct for FormatProperties3 {
4104    #[inline]
4105    fn next_mut(&self) -> *mut c_void {
4106        self.next
4107    }
4108}
4109
4110unsafe impl InputChainStruct for FragmentShadingRateAttachmentInfoKHR {
4111    const TYPE: StructureType = StructureType::FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR;
4112
4113    #[inline]
4114    fn s_type(&self) -> StructureType {
4115        self.s_type
4116    }
4117
4118    #[inline]
4119    fn next(&self) -> *const c_void {
4120        self.next
4121    }
4122}
4123
4124unsafe impl InputChainStruct for FrameBoundaryEXT {
4125    const TYPE: StructureType = StructureType::FRAME_BOUNDARY_EXT;
4126
4127    #[inline]
4128    fn s_type(&self) -> StructureType {
4129        self.s_type
4130    }
4131
4132    #[inline]
4133    fn next(&self) -> *const c_void {
4134        self.next
4135    }
4136}
4137
4138unsafe impl InputChainStruct for FrameBoundaryTensorsARM {
4139    const TYPE: StructureType = StructureType::FRAME_BOUNDARY_TENSORS_ARM;
4140
4141    #[inline]
4142    fn s_type(&self) -> StructureType {
4143        self.s_type
4144    }
4145
4146    #[inline]
4147    fn next(&self) -> *const c_void {
4148        self.next
4149    }
4150}
4151
4152unsafe impl InputChainStruct for FramebufferAttachmentImageInfo {
4153    const TYPE: StructureType = StructureType::FRAMEBUFFER_ATTACHMENT_IMAGE_INFO;
4154
4155    #[inline]
4156    fn s_type(&self) -> StructureType {
4157        self.s_type
4158    }
4159
4160    #[inline]
4161    fn next(&self) -> *const c_void {
4162        self.next
4163    }
4164}
4165
4166unsafe impl InputChainStruct for FramebufferAttachmentsCreateInfo {
4167    const TYPE: StructureType = StructureType::FRAMEBUFFER_ATTACHMENTS_CREATE_INFO;
4168
4169    #[inline]
4170    fn s_type(&self) -> StructureType {
4171        self.s_type
4172    }
4173
4174    #[inline]
4175    fn next(&self) -> *const c_void {
4176        self.next
4177    }
4178}
4179
4180unsafe impl InputChainStruct for FramebufferCreateInfo {
4181    const TYPE: StructureType = StructureType::FRAMEBUFFER_CREATE_INFO;
4182
4183    #[inline]
4184    fn s_type(&self) -> StructureType {
4185        self.s_type
4186    }
4187
4188    #[inline]
4189    fn next(&self) -> *const c_void {
4190        self.next
4191    }
4192}
4193
4194unsafe impl InputChainStruct for FramebufferMixedSamplesCombinationNV {
4195    const TYPE: StructureType = StructureType::FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV;
4196
4197    #[inline]
4198    fn s_type(&self) -> StructureType {
4199        self.s_type
4200    }
4201
4202    #[inline]
4203    fn next(&self) -> *const c_void {
4204        self.next
4205    }
4206}
4207
4208unsafe impl OutputChainStruct for FramebufferMixedSamplesCombinationNV {
4209    #[inline]
4210    fn next_mut(&self) -> *mut c_void {
4211        self.next
4212    }
4213}
4214
4215unsafe impl InputChainStruct for GeneratedCommandsInfoEXT {
4216    const TYPE: StructureType = StructureType::GENERATED_COMMANDS_INFO_EXT;
4217
4218    #[inline]
4219    fn s_type(&self) -> StructureType {
4220        self.s_type
4221    }
4222
4223    #[inline]
4224    fn next(&self) -> *const c_void {
4225        self.next
4226    }
4227}
4228
4229unsafe impl InputChainStruct for GeneratedCommandsInfoNV {
4230    const TYPE: StructureType = StructureType::GENERATED_COMMANDS_INFO_NV;
4231
4232    #[inline]
4233    fn s_type(&self) -> StructureType {
4234        self.s_type
4235    }
4236
4237    #[inline]
4238    fn next(&self) -> *const c_void {
4239        self.next
4240    }
4241}
4242
4243unsafe impl InputChainStruct for GeneratedCommandsMemoryRequirementsInfoEXT {
4244    const TYPE: StructureType = StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT;
4245
4246    #[inline]
4247    fn s_type(&self) -> StructureType {
4248        self.s_type
4249    }
4250
4251    #[inline]
4252    fn next(&self) -> *const c_void {
4253        self.next
4254    }
4255}
4256
4257unsafe impl InputChainStruct for GeneratedCommandsMemoryRequirementsInfoNV {
4258    const TYPE: StructureType = StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV;
4259
4260    #[inline]
4261    fn s_type(&self) -> StructureType {
4262        self.s_type
4263    }
4264
4265    #[inline]
4266    fn next(&self) -> *const c_void {
4267        self.next
4268    }
4269}
4270
4271unsafe impl InputChainStruct for GeneratedCommandsPipelineInfoEXT {
4272    const TYPE: StructureType = StructureType::GENERATED_COMMANDS_PIPELINE_INFO_EXT;
4273
4274    #[inline]
4275    fn s_type(&self) -> StructureType {
4276        self.s_type
4277    }
4278
4279    #[inline]
4280    fn next(&self) -> *const c_void {
4281        self.next
4282    }
4283}
4284
4285unsafe impl OutputChainStruct for GeneratedCommandsPipelineInfoEXT {
4286    #[inline]
4287    fn next_mut(&self) -> *mut c_void {
4288        self.next
4289    }
4290}
4291
4292unsafe impl InputChainStruct for GeneratedCommandsShaderInfoEXT {
4293    const TYPE: StructureType = StructureType::GENERATED_COMMANDS_SHADER_INFO_EXT;
4294
4295    #[inline]
4296    fn s_type(&self) -> StructureType {
4297        self.s_type
4298    }
4299
4300    #[inline]
4301    fn next(&self) -> *const c_void {
4302        self.next
4303    }
4304}
4305
4306unsafe impl OutputChainStruct for GeneratedCommandsShaderInfoEXT {
4307    #[inline]
4308    fn next_mut(&self) -> *mut c_void {
4309        self.next
4310    }
4311}
4312
4313unsafe impl InputChainStruct for GeometryAABBNV {
4314    const TYPE: StructureType = StructureType::GEOMETRY_AABB_NV;
4315
4316    #[inline]
4317    fn s_type(&self) -> StructureType {
4318        self.s_type
4319    }
4320
4321    #[inline]
4322    fn next(&self) -> *const c_void {
4323        self.next
4324    }
4325}
4326
4327unsafe impl InputChainStruct for GeometryNV {
4328    const TYPE: StructureType = StructureType::GEOMETRY_NV;
4329
4330    #[inline]
4331    fn s_type(&self) -> StructureType {
4332        self.s_type
4333    }
4334
4335    #[inline]
4336    fn next(&self) -> *const c_void {
4337        self.next
4338    }
4339}
4340
4341unsafe impl InputChainStruct for GeometryTrianglesNV {
4342    const TYPE: StructureType = StructureType::GEOMETRY_TRIANGLES_NV;
4343
4344    #[inline]
4345    fn s_type(&self) -> StructureType {
4346        self.s_type
4347    }
4348
4349    #[inline]
4350    fn next(&self) -> *const c_void {
4351        self.next
4352    }
4353}
4354
4355unsafe impl InputChainStruct for GetLatencyMarkerInfoNV {
4356    const TYPE: StructureType = StructureType::GET_LATENCY_MARKER_INFO_NV;
4357
4358    #[inline]
4359    fn s_type(&self) -> StructureType {
4360        self.s_type
4361    }
4362
4363    #[inline]
4364    fn next(&self) -> *const c_void {
4365        self.next
4366    }
4367}
4368
4369unsafe impl InputChainStruct for GraphicsPipelineCreateInfo {
4370    const TYPE: StructureType = StructureType::GRAPHICS_PIPELINE_CREATE_INFO;
4371
4372    #[inline]
4373    fn s_type(&self) -> StructureType {
4374        self.s_type
4375    }
4376
4377    #[inline]
4378    fn next(&self) -> *const c_void {
4379        self.next
4380    }
4381}
4382
4383unsafe impl InputChainStruct for GraphicsPipelineLibraryCreateInfoEXT {
4384    const TYPE: StructureType = StructureType::GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT;
4385
4386    #[inline]
4387    fn s_type(&self) -> StructureType {
4388        self.s_type
4389    }
4390
4391    #[inline]
4392    fn next(&self) -> *const c_void {
4393        self.next
4394    }
4395}
4396
4397unsafe impl InputChainStruct for GraphicsPipelineShaderGroupsCreateInfoNV {
4398    const TYPE: StructureType = StructureType::GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV;
4399
4400    #[inline]
4401    fn s_type(&self) -> StructureType {
4402        self.s_type
4403    }
4404
4405    #[inline]
4406    fn next(&self) -> *const c_void {
4407        self.next
4408    }
4409}
4410
4411unsafe impl InputChainStruct for GraphicsShaderGroupCreateInfoNV {
4412    const TYPE: StructureType = StructureType::GRAPHICS_SHADER_GROUP_CREATE_INFO_NV;
4413
4414    #[inline]
4415    fn s_type(&self) -> StructureType {
4416        self.s_type
4417    }
4418
4419    #[inline]
4420    fn next(&self) -> *const c_void {
4421        self.next
4422    }
4423}
4424
4425unsafe impl InputChainStruct for HdrMetadataEXT {
4426    const TYPE: StructureType = StructureType::HDR_METADATA_EXT;
4427
4428    #[inline]
4429    fn s_type(&self) -> StructureType {
4430        self.s_type
4431    }
4432
4433    #[inline]
4434    fn next(&self) -> *const c_void {
4435        self.next
4436    }
4437}
4438
4439unsafe impl InputChainStruct for HdrVividDynamicMetadataHUAWEI {
4440    const TYPE: StructureType = StructureType::HDR_VIVID_DYNAMIC_METADATA_HUAWEI;
4441
4442    #[inline]
4443    fn s_type(&self) -> StructureType {
4444        self.s_type
4445    }
4446
4447    #[inline]
4448    fn next(&self) -> *const c_void {
4449        self.next
4450    }
4451}
4452
4453unsafe impl InputChainStruct for HeadlessSurfaceCreateInfoEXT {
4454    const TYPE: StructureType = StructureType::HEADLESS_SURFACE_CREATE_INFO_EXT;
4455
4456    #[inline]
4457    fn s_type(&self) -> StructureType {
4458        self.s_type
4459    }
4460
4461    #[inline]
4462    fn next(&self) -> *const c_void {
4463        self.next
4464    }
4465}
4466
4467unsafe impl InputChainStruct for HostImageCopyDevicePerformanceQuery {
4468    const TYPE: StructureType = StructureType::HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY;
4469
4470    #[inline]
4471    fn s_type(&self) -> StructureType {
4472        self.s_type
4473    }
4474
4475    #[inline]
4476    fn next(&self) -> *const c_void {
4477        self.next
4478    }
4479}
4480
4481unsafe impl OutputChainStruct for HostImageCopyDevicePerformanceQuery {
4482    #[inline]
4483    fn next_mut(&self) -> *mut c_void {
4484        self.next
4485    }
4486}
4487
4488unsafe impl InputChainStruct for HostImageLayoutTransitionInfo {
4489    const TYPE: StructureType = StructureType::HOST_IMAGE_LAYOUT_TRANSITION_INFO;
4490
4491    #[inline]
4492    fn s_type(&self) -> StructureType {
4493        self.s_type
4494    }
4495
4496    #[inline]
4497    fn next(&self) -> *const c_void {
4498        self.next
4499    }
4500}
4501
4502unsafe impl InputChainStruct for IOSSurfaceCreateInfoMVK {
4503    const TYPE: StructureType = StructureType::IOS_SURFACE_CREATE_INFO_MVK;
4504
4505    #[inline]
4506    fn s_type(&self) -> StructureType {
4507        self.s_type
4508    }
4509
4510    #[inline]
4511    fn next(&self) -> *const c_void {
4512        self.next
4513    }
4514}
4515
4516unsafe impl InputChainStruct for ImageAlignmentControlCreateInfoMESA {
4517    const TYPE: StructureType = StructureType::IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA;
4518
4519    #[inline]
4520    fn s_type(&self) -> StructureType {
4521        self.s_type
4522    }
4523
4524    #[inline]
4525    fn next(&self) -> *const c_void {
4526        self.next
4527    }
4528}
4529
4530unsafe impl InputChainStruct for ImageBlit2 {
4531    const TYPE: StructureType = StructureType::IMAGE_BLIT_2;
4532
4533    #[inline]
4534    fn s_type(&self) -> StructureType {
4535        self.s_type
4536    }
4537
4538    #[inline]
4539    fn next(&self) -> *const c_void {
4540        self.next
4541    }
4542}
4543
4544unsafe impl InputChainStruct for ImageCaptureDescriptorDataInfoEXT {
4545    const TYPE: StructureType = StructureType::IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT;
4546
4547    #[inline]
4548    fn s_type(&self) -> StructureType {
4549        self.s_type
4550    }
4551
4552    #[inline]
4553    fn next(&self) -> *const c_void {
4554        self.next
4555    }
4556}
4557
4558unsafe impl InputChainStruct for ImageCompressionControlEXT {
4559    const TYPE: StructureType = StructureType::IMAGE_COMPRESSION_CONTROL_EXT;
4560
4561    #[inline]
4562    fn s_type(&self) -> StructureType {
4563        self.s_type
4564    }
4565
4566    #[inline]
4567    fn next(&self) -> *const c_void {
4568        self.next
4569    }
4570}
4571
4572unsafe impl InputChainStruct for ImageCompressionPropertiesEXT {
4573    const TYPE: StructureType = StructureType::IMAGE_COMPRESSION_PROPERTIES_EXT;
4574
4575    #[inline]
4576    fn s_type(&self) -> StructureType {
4577        self.s_type
4578    }
4579
4580    #[inline]
4581    fn next(&self) -> *const c_void {
4582        self.next
4583    }
4584}
4585
4586unsafe impl OutputChainStruct for ImageCompressionPropertiesEXT {
4587    #[inline]
4588    fn next_mut(&self) -> *mut c_void {
4589        self.next
4590    }
4591}
4592
4593unsafe impl InputChainStruct for ImageConstraintsInfoFUCHSIA {
4594    const TYPE: StructureType = StructureType::IMAGE_CONSTRAINTS_INFO_FUCHSIA;
4595
4596    #[inline]
4597    fn s_type(&self) -> StructureType {
4598        self.s_type
4599    }
4600
4601    #[inline]
4602    fn next(&self) -> *const c_void {
4603        self.next
4604    }
4605}
4606
4607unsafe impl InputChainStruct for ImageCopy2 {
4608    const TYPE: StructureType = StructureType::IMAGE_COPY_2;
4609
4610    #[inline]
4611    fn s_type(&self) -> StructureType {
4612        self.s_type
4613    }
4614
4615    #[inline]
4616    fn next(&self) -> *const c_void {
4617        self.next
4618    }
4619}
4620
4621unsafe impl InputChainStruct for ImageCreateInfo {
4622    const TYPE: StructureType = StructureType::IMAGE_CREATE_INFO;
4623
4624    #[inline]
4625    fn s_type(&self) -> StructureType {
4626        self.s_type
4627    }
4628
4629    #[inline]
4630    fn next(&self) -> *const c_void {
4631        self.next
4632    }
4633}
4634
4635unsafe impl InputChainStruct for ImageDrmFormatModifierExplicitCreateInfoEXT {
4636    const TYPE: StructureType = StructureType::IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT;
4637
4638    #[inline]
4639    fn s_type(&self) -> StructureType {
4640        self.s_type
4641    }
4642
4643    #[inline]
4644    fn next(&self) -> *const c_void {
4645        self.next
4646    }
4647}
4648
4649unsafe impl InputChainStruct for ImageDrmFormatModifierListCreateInfoEXT {
4650    const TYPE: StructureType = StructureType::IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT;
4651
4652    #[inline]
4653    fn s_type(&self) -> StructureType {
4654        self.s_type
4655    }
4656
4657    #[inline]
4658    fn next(&self) -> *const c_void {
4659        self.next
4660    }
4661}
4662
4663unsafe impl InputChainStruct for ImageDrmFormatModifierPropertiesEXT {
4664    const TYPE: StructureType = StructureType::IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT;
4665
4666    #[inline]
4667    fn s_type(&self) -> StructureType {
4668        self.s_type
4669    }
4670
4671    #[inline]
4672    fn next(&self) -> *const c_void {
4673        self.next
4674    }
4675}
4676
4677unsafe impl OutputChainStruct for ImageDrmFormatModifierPropertiesEXT {
4678    #[inline]
4679    fn next_mut(&self) -> *mut c_void {
4680        self.next
4681    }
4682}
4683
4684unsafe impl InputChainStruct for ImageFormatConstraintsInfoFUCHSIA {
4685    const TYPE: StructureType = StructureType::IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA;
4686
4687    #[inline]
4688    fn s_type(&self) -> StructureType {
4689        self.s_type
4690    }
4691
4692    #[inline]
4693    fn next(&self) -> *const c_void {
4694        self.next
4695    }
4696}
4697
4698unsafe impl InputChainStruct for ImageFormatListCreateInfo {
4699    const TYPE: StructureType = StructureType::IMAGE_FORMAT_LIST_CREATE_INFO;
4700
4701    #[inline]
4702    fn s_type(&self) -> StructureType {
4703        self.s_type
4704    }
4705
4706    #[inline]
4707    fn next(&self) -> *const c_void {
4708        self.next
4709    }
4710}
4711
4712unsafe impl InputChainStruct for ImageFormatProperties2 {
4713    const TYPE: StructureType = StructureType::IMAGE_FORMAT_PROPERTIES_2;
4714
4715    #[inline]
4716    fn s_type(&self) -> StructureType {
4717        self.s_type
4718    }
4719
4720    #[inline]
4721    fn next(&self) -> *const c_void {
4722        self.next
4723    }
4724}
4725
4726unsafe impl OutputChainStruct for ImageFormatProperties2 {
4727    #[inline]
4728    fn next_mut(&self) -> *mut c_void {
4729        self.next
4730    }
4731}
4732
4733unsafe impl InputChainStruct for ImageMemoryBarrier {
4734    const TYPE: StructureType = StructureType::IMAGE_MEMORY_BARRIER;
4735
4736    #[inline]
4737    fn s_type(&self) -> StructureType {
4738        self.s_type
4739    }
4740
4741    #[inline]
4742    fn next(&self) -> *const c_void {
4743        self.next
4744    }
4745}
4746
4747unsafe impl InputChainStruct for ImageMemoryBarrier2 {
4748    const TYPE: StructureType = StructureType::IMAGE_MEMORY_BARRIER_2;
4749
4750    #[inline]
4751    fn s_type(&self) -> StructureType {
4752        self.s_type
4753    }
4754
4755    #[inline]
4756    fn next(&self) -> *const c_void {
4757        self.next
4758    }
4759}
4760
4761unsafe impl InputChainStruct for ImageMemoryRequirementsInfo2 {
4762    const TYPE: StructureType = StructureType::IMAGE_MEMORY_REQUIREMENTS_INFO_2;
4763
4764    #[inline]
4765    fn s_type(&self) -> StructureType {
4766        self.s_type
4767    }
4768
4769    #[inline]
4770    fn next(&self) -> *const c_void {
4771        self.next
4772    }
4773}
4774
4775unsafe impl InputChainStruct for ImagePipeSurfaceCreateInfoFUCHSIA {
4776    const TYPE: StructureType = StructureType::IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA;
4777
4778    #[inline]
4779    fn s_type(&self) -> StructureType {
4780        self.s_type
4781    }
4782
4783    #[inline]
4784    fn next(&self) -> *const c_void {
4785        self.next
4786    }
4787}
4788
4789unsafe impl InputChainStruct for ImagePlaneMemoryRequirementsInfo {
4790    const TYPE: StructureType = StructureType::IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO;
4791
4792    #[inline]
4793    fn s_type(&self) -> StructureType {
4794        self.s_type
4795    }
4796
4797    #[inline]
4798    fn next(&self) -> *const c_void {
4799        self.next
4800    }
4801}
4802
4803unsafe impl InputChainStruct for ImageResolve2 {
4804    const TYPE: StructureType = StructureType::IMAGE_RESOLVE_2;
4805
4806    #[inline]
4807    fn s_type(&self) -> StructureType {
4808        self.s_type
4809    }
4810
4811    #[inline]
4812    fn next(&self) -> *const c_void {
4813        self.next
4814    }
4815}
4816
4817unsafe impl InputChainStruct for ImageSparseMemoryRequirementsInfo2 {
4818    const TYPE: StructureType = StructureType::IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2;
4819
4820    #[inline]
4821    fn s_type(&self) -> StructureType {
4822        self.s_type
4823    }
4824
4825    #[inline]
4826    fn next(&self) -> *const c_void {
4827        self.next
4828    }
4829}
4830
4831unsafe impl InputChainStruct for ImageStencilUsageCreateInfo {
4832    const TYPE: StructureType = StructureType::IMAGE_STENCIL_USAGE_CREATE_INFO;
4833
4834    #[inline]
4835    fn s_type(&self) -> StructureType {
4836        self.s_type
4837    }
4838
4839    #[inline]
4840    fn next(&self) -> *const c_void {
4841        self.next
4842    }
4843}
4844
4845unsafe impl InputChainStruct for ImageSubresource2 {
4846    const TYPE: StructureType = StructureType::IMAGE_SUBRESOURCE_2;
4847
4848    #[inline]
4849    fn s_type(&self) -> StructureType {
4850        self.s_type
4851    }
4852
4853    #[inline]
4854    fn next(&self) -> *const c_void {
4855        self.next
4856    }
4857}
4858
4859unsafe impl OutputChainStruct for ImageSubresource2 {
4860    #[inline]
4861    fn next_mut(&self) -> *mut c_void {
4862        self.next
4863    }
4864}
4865
4866unsafe impl InputChainStruct for ImageSwapchainCreateInfoKHR {
4867    const TYPE: StructureType = StructureType::IMAGE_SWAPCHAIN_CREATE_INFO_KHR;
4868
4869    #[inline]
4870    fn s_type(&self) -> StructureType {
4871        self.s_type
4872    }
4873
4874    #[inline]
4875    fn next(&self) -> *const c_void {
4876        self.next
4877    }
4878}
4879
4880unsafe impl InputChainStruct for ImageToMemoryCopy {
4881    const TYPE: StructureType = StructureType::IMAGE_TO_MEMORY_COPY;
4882
4883    #[inline]
4884    fn s_type(&self) -> StructureType {
4885        self.s_type
4886    }
4887
4888    #[inline]
4889    fn next(&self) -> *const c_void {
4890        self.next
4891    }
4892}
4893
4894unsafe impl InputChainStruct for ImageViewASTCDecodeModeEXT {
4895    const TYPE: StructureType = StructureType::IMAGE_VIEW_ASTC_DECODE_MODE_EXT;
4896
4897    #[inline]
4898    fn s_type(&self) -> StructureType {
4899        self.s_type
4900    }
4901
4902    #[inline]
4903    fn next(&self) -> *const c_void {
4904        self.next
4905    }
4906}
4907
4908unsafe impl InputChainStruct for ImageViewAddressPropertiesNVX {
4909    const TYPE: StructureType = StructureType::IMAGE_VIEW_ADDRESS_PROPERTIES_NVX;
4910
4911    #[inline]
4912    fn s_type(&self) -> StructureType {
4913        self.s_type
4914    }
4915
4916    #[inline]
4917    fn next(&self) -> *const c_void {
4918        self.next
4919    }
4920}
4921
4922unsafe impl OutputChainStruct for ImageViewAddressPropertiesNVX {
4923    #[inline]
4924    fn next_mut(&self) -> *mut c_void {
4925        self.next
4926    }
4927}
4928
4929unsafe impl InputChainStruct for ImageViewCaptureDescriptorDataInfoEXT {
4930    const TYPE: StructureType = StructureType::IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT;
4931
4932    #[inline]
4933    fn s_type(&self) -> StructureType {
4934        self.s_type
4935    }
4936
4937    #[inline]
4938    fn next(&self) -> *const c_void {
4939        self.next
4940    }
4941}
4942
4943unsafe impl InputChainStruct for ImageViewCreateInfo {
4944    const TYPE: StructureType = StructureType::IMAGE_VIEW_CREATE_INFO;
4945
4946    #[inline]
4947    fn s_type(&self) -> StructureType {
4948        self.s_type
4949    }
4950
4951    #[inline]
4952    fn next(&self) -> *const c_void {
4953        self.next
4954    }
4955}
4956
4957unsafe impl InputChainStruct for ImageViewHandleInfoNVX {
4958    const TYPE: StructureType = StructureType::IMAGE_VIEW_HANDLE_INFO_NVX;
4959
4960    #[inline]
4961    fn s_type(&self) -> StructureType {
4962        self.s_type
4963    }
4964
4965    #[inline]
4966    fn next(&self) -> *const c_void {
4967        self.next
4968    }
4969}
4970
4971unsafe impl InputChainStruct for ImageViewMinLodCreateInfoEXT {
4972    const TYPE: StructureType = StructureType::IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT;
4973
4974    #[inline]
4975    fn s_type(&self) -> StructureType {
4976        self.s_type
4977    }
4978
4979    #[inline]
4980    fn next(&self) -> *const c_void {
4981        self.next
4982    }
4983}
4984
4985unsafe impl InputChainStruct for ImageViewSampleWeightCreateInfoQCOM {
4986    const TYPE: StructureType = StructureType::IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM;
4987
4988    #[inline]
4989    fn s_type(&self) -> StructureType {
4990        self.s_type
4991    }
4992
4993    #[inline]
4994    fn next(&self) -> *const c_void {
4995        self.next
4996    }
4997}
4998
4999unsafe impl InputChainStruct for ImageViewSlicedCreateInfoEXT {
5000    const TYPE: StructureType = StructureType::IMAGE_VIEW_SLICED_CREATE_INFO_EXT;
5001
5002    #[inline]
5003    fn s_type(&self) -> StructureType {
5004        self.s_type
5005    }
5006
5007    #[inline]
5008    fn next(&self) -> *const c_void {
5009        self.next
5010    }
5011}
5012
5013unsafe impl InputChainStruct for ImageViewUsageCreateInfo {
5014    const TYPE: StructureType = StructureType::IMAGE_VIEW_USAGE_CREATE_INFO;
5015
5016    #[inline]
5017    fn s_type(&self) -> StructureType {
5018        self.s_type
5019    }
5020
5021    #[inline]
5022    fn next(&self) -> *const c_void {
5023        self.next
5024    }
5025}
5026
5027unsafe impl InputChainStruct for ImportAndroidHardwareBufferInfoANDROID {
5028    const TYPE: StructureType = StructureType::IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID;
5029
5030    #[inline]
5031    fn s_type(&self) -> StructureType {
5032        self.s_type
5033    }
5034
5035    #[inline]
5036    fn next(&self) -> *const c_void {
5037        self.next
5038    }
5039}
5040
5041unsafe impl InputChainStruct for ImportFenceFdInfoKHR {
5042    const TYPE: StructureType = StructureType::IMPORT_FENCE_FD_INFO_KHR;
5043
5044    #[inline]
5045    fn s_type(&self) -> StructureType {
5046        self.s_type
5047    }
5048
5049    #[inline]
5050    fn next(&self) -> *const c_void {
5051        self.next
5052    }
5053}
5054
5055unsafe impl InputChainStruct for ImportFenceSciSyncInfoNV {
5056    const TYPE: StructureType = StructureType::IMPORT_FENCE_SCI_SYNC_INFO_NV;
5057
5058    #[inline]
5059    fn s_type(&self) -> StructureType {
5060        self.s_type
5061    }
5062
5063    #[inline]
5064    fn next(&self) -> *const c_void {
5065        self.next
5066    }
5067}
5068
5069unsafe impl InputChainStruct for ImportFenceWin32HandleInfoKHR {
5070    const TYPE: StructureType = StructureType::IMPORT_FENCE_WIN32_HANDLE_INFO_KHR;
5071
5072    #[inline]
5073    fn s_type(&self) -> StructureType {
5074        self.s_type
5075    }
5076
5077    #[inline]
5078    fn next(&self) -> *const c_void {
5079        self.next
5080    }
5081}
5082
5083unsafe impl InputChainStruct for ImportMemoryBufferCollectionFUCHSIA {
5084    const TYPE: StructureType = StructureType::IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA;
5085
5086    #[inline]
5087    fn s_type(&self) -> StructureType {
5088        self.s_type
5089    }
5090
5091    #[inline]
5092    fn next(&self) -> *const c_void {
5093        self.next
5094    }
5095}
5096
5097unsafe impl InputChainStruct for ImportMemoryFdInfoKHR {
5098    const TYPE: StructureType = StructureType::IMPORT_MEMORY_FD_INFO_KHR;
5099
5100    #[inline]
5101    fn s_type(&self) -> StructureType {
5102        self.s_type
5103    }
5104
5105    #[inline]
5106    fn next(&self) -> *const c_void {
5107        self.next
5108    }
5109}
5110
5111unsafe impl InputChainStruct for ImportMemoryHostPointerInfoEXT {
5112    const TYPE: StructureType = StructureType::IMPORT_MEMORY_HOST_POINTER_INFO_EXT;
5113
5114    #[inline]
5115    fn s_type(&self) -> StructureType {
5116        self.s_type
5117    }
5118
5119    #[inline]
5120    fn next(&self) -> *const c_void {
5121        self.next
5122    }
5123}
5124
5125unsafe impl InputChainStruct for ImportMemoryMetalHandleInfoEXT {
5126    const TYPE: StructureType = StructureType::IMPORT_MEMORY_METAL_HANDLE_INFO_EXT;
5127
5128    #[inline]
5129    fn s_type(&self) -> StructureType {
5130        self.s_type
5131    }
5132
5133    #[inline]
5134    fn next(&self) -> *const c_void {
5135        self.next
5136    }
5137}
5138
5139unsafe impl InputChainStruct for ImportMemorySciBufInfoNV {
5140    const TYPE: StructureType = StructureType::IMPORT_MEMORY_SCI_BUF_INFO_NV;
5141
5142    #[inline]
5143    fn s_type(&self) -> StructureType {
5144        self.s_type
5145    }
5146
5147    #[inline]
5148    fn next(&self) -> *const c_void {
5149        self.next
5150    }
5151}
5152
5153unsafe impl InputChainStruct for ImportMemoryWin32HandleInfoKHR {
5154    const TYPE: StructureType = StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR;
5155
5156    #[inline]
5157    fn s_type(&self) -> StructureType {
5158        self.s_type
5159    }
5160
5161    #[inline]
5162    fn next(&self) -> *const c_void {
5163        self.next
5164    }
5165}
5166
5167unsafe impl InputChainStruct for ImportMemoryWin32HandleInfoNV {
5168    const TYPE: StructureType = StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_NV;
5169
5170    #[inline]
5171    fn s_type(&self) -> StructureType {
5172        self.s_type
5173    }
5174
5175    #[inline]
5176    fn next(&self) -> *const c_void {
5177        self.next
5178    }
5179}
5180
5181unsafe impl InputChainStruct for ImportMemoryZirconHandleInfoFUCHSIA {
5182    const TYPE: StructureType = StructureType::IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA;
5183
5184    #[inline]
5185    fn s_type(&self) -> StructureType {
5186        self.s_type
5187    }
5188
5189    #[inline]
5190    fn next(&self) -> *const c_void {
5191        self.next
5192    }
5193}
5194
5195unsafe impl InputChainStruct for ImportMetalBufferInfoEXT {
5196    const TYPE: StructureType = StructureType::IMPORT_METAL_BUFFER_INFO_EXT;
5197
5198    #[inline]
5199    fn s_type(&self) -> StructureType {
5200        self.s_type
5201    }
5202
5203    #[inline]
5204    fn next(&self) -> *const c_void {
5205        self.next
5206    }
5207}
5208
5209unsafe impl InputChainStruct for ImportMetalIOSurfaceInfoEXT {
5210    const TYPE: StructureType = StructureType::IMPORT_METAL_IO_SURFACE_INFO_EXT;
5211
5212    #[inline]
5213    fn s_type(&self) -> StructureType {
5214        self.s_type
5215    }
5216
5217    #[inline]
5218    fn next(&self) -> *const c_void {
5219        self.next
5220    }
5221}
5222
5223unsafe impl InputChainStruct for ImportMetalSharedEventInfoEXT {
5224    const TYPE: StructureType = StructureType::IMPORT_METAL_SHARED_EVENT_INFO_EXT;
5225
5226    #[inline]
5227    fn s_type(&self) -> StructureType {
5228        self.s_type
5229    }
5230
5231    #[inline]
5232    fn next(&self) -> *const c_void {
5233        self.next
5234    }
5235}
5236
5237unsafe impl InputChainStruct for ImportMetalTextureInfoEXT {
5238    const TYPE: StructureType = StructureType::IMPORT_METAL_TEXTURE_INFO_EXT;
5239
5240    #[inline]
5241    fn s_type(&self) -> StructureType {
5242        self.s_type
5243    }
5244
5245    #[inline]
5246    fn next(&self) -> *const c_void {
5247        self.next
5248    }
5249}
5250
5251unsafe impl InputChainStruct for ImportScreenBufferInfoQNX {
5252    const TYPE: StructureType = StructureType::IMPORT_SCREEN_BUFFER_INFO_QNX;
5253
5254    #[inline]
5255    fn s_type(&self) -> StructureType {
5256        self.s_type
5257    }
5258
5259    #[inline]
5260    fn next(&self) -> *const c_void {
5261        self.next
5262    }
5263}
5264
5265unsafe impl InputChainStruct for ImportSemaphoreFdInfoKHR {
5266    const TYPE: StructureType = StructureType::IMPORT_SEMAPHORE_FD_INFO_KHR;
5267
5268    #[inline]
5269    fn s_type(&self) -> StructureType {
5270        self.s_type
5271    }
5272
5273    #[inline]
5274    fn next(&self) -> *const c_void {
5275        self.next
5276    }
5277}
5278
5279unsafe impl InputChainStruct for ImportSemaphoreSciSyncInfoNV {
5280    const TYPE: StructureType = StructureType::IMPORT_SEMAPHORE_SCI_SYNC_INFO_NV;
5281
5282    #[inline]
5283    fn s_type(&self) -> StructureType {
5284        self.s_type
5285    }
5286
5287    #[inline]
5288    fn next(&self) -> *const c_void {
5289        self.next
5290    }
5291}
5292
5293unsafe impl InputChainStruct for ImportSemaphoreWin32HandleInfoKHR {
5294    const TYPE: StructureType = StructureType::IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR;
5295
5296    #[inline]
5297    fn s_type(&self) -> StructureType {
5298        self.s_type
5299    }
5300
5301    #[inline]
5302    fn next(&self) -> *const c_void {
5303        self.next
5304    }
5305}
5306
5307unsafe impl InputChainStruct for ImportSemaphoreZirconHandleInfoFUCHSIA {
5308    const TYPE: StructureType = StructureType::IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA;
5309
5310    #[inline]
5311    fn s_type(&self) -> StructureType {
5312        self.s_type
5313    }
5314
5315    #[inline]
5316    fn next(&self) -> *const c_void {
5317        self.next
5318    }
5319}
5320
5321unsafe impl InputChainStruct for IndirectCommandsLayoutCreateInfoEXT {
5322    const TYPE: StructureType = StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT;
5323
5324    #[inline]
5325    fn s_type(&self) -> StructureType {
5326        self.s_type
5327    }
5328
5329    #[inline]
5330    fn next(&self) -> *const c_void {
5331        self.next
5332    }
5333}
5334
5335unsafe impl InputChainStruct for IndirectCommandsLayoutCreateInfoNV {
5336    const TYPE: StructureType = StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV;
5337
5338    #[inline]
5339    fn s_type(&self) -> StructureType {
5340        self.s_type
5341    }
5342
5343    #[inline]
5344    fn next(&self) -> *const c_void {
5345        self.next
5346    }
5347}
5348
5349unsafe impl InputChainStruct for IndirectCommandsLayoutTokenEXT {
5350    const TYPE: StructureType = StructureType::INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT;
5351
5352    #[inline]
5353    fn s_type(&self) -> StructureType {
5354        self.s_type
5355    }
5356
5357    #[inline]
5358    fn next(&self) -> *const c_void {
5359        self.next
5360    }
5361}
5362
5363unsafe impl InputChainStruct for IndirectCommandsLayoutTokenNV {
5364    const TYPE: StructureType = StructureType::INDIRECT_COMMANDS_LAYOUT_TOKEN_NV;
5365
5366    #[inline]
5367    fn s_type(&self) -> StructureType {
5368        self.s_type
5369    }
5370
5371    #[inline]
5372    fn next(&self) -> *const c_void {
5373        self.next
5374    }
5375}
5376
5377unsafe impl InputChainStruct for IndirectExecutionSetCreateInfoEXT {
5378    const TYPE: StructureType = StructureType::INDIRECT_EXECUTION_SET_CREATE_INFO_EXT;
5379
5380    #[inline]
5381    fn s_type(&self) -> StructureType {
5382        self.s_type
5383    }
5384
5385    #[inline]
5386    fn next(&self) -> *const c_void {
5387        self.next
5388    }
5389}
5390
5391unsafe impl InputChainStruct for IndirectExecutionSetPipelineInfoEXT {
5392    const TYPE: StructureType = StructureType::INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT;
5393
5394    #[inline]
5395    fn s_type(&self) -> StructureType {
5396        self.s_type
5397    }
5398
5399    #[inline]
5400    fn next(&self) -> *const c_void {
5401        self.next
5402    }
5403}
5404
5405unsafe impl InputChainStruct for IndirectExecutionSetShaderInfoEXT {
5406    const TYPE: StructureType = StructureType::INDIRECT_EXECUTION_SET_SHADER_INFO_EXT;
5407
5408    #[inline]
5409    fn s_type(&self) -> StructureType {
5410        self.s_type
5411    }
5412
5413    #[inline]
5414    fn next(&self) -> *const c_void {
5415        self.next
5416    }
5417}
5418
5419unsafe impl InputChainStruct for IndirectExecutionSetShaderLayoutInfoEXT {
5420    const TYPE: StructureType = StructureType::INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT;
5421
5422    #[inline]
5423    fn s_type(&self) -> StructureType {
5424        self.s_type
5425    }
5426
5427    #[inline]
5428    fn next(&self) -> *const c_void {
5429        self.next
5430    }
5431}
5432
5433unsafe impl InputChainStruct for InitializePerformanceApiInfoINTEL {
5434    const TYPE: StructureType = StructureType::INITIALIZE_PERFORMANCE_API_INFO_INTEL;
5435
5436    #[inline]
5437    fn s_type(&self) -> StructureType {
5438        self.s_type
5439    }
5440
5441    #[inline]
5442    fn next(&self) -> *const c_void {
5443        self.next
5444    }
5445}
5446
5447unsafe impl InputChainStruct for InstanceCreateInfo {
5448    const TYPE: StructureType = StructureType::INSTANCE_CREATE_INFO;
5449
5450    #[inline]
5451    fn s_type(&self) -> StructureType {
5452        self.s_type
5453    }
5454
5455    #[inline]
5456    fn next(&self) -> *const c_void {
5457        self.next
5458    }
5459}
5460
5461unsafe impl InputChainStruct for LatencySleepInfoNV {
5462    const TYPE: StructureType = StructureType::LATENCY_SLEEP_INFO_NV;
5463
5464    #[inline]
5465    fn s_type(&self) -> StructureType {
5466        self.s_type
5467    }
5468
5469    #[inline]
5470    fn next(&self) -> *const c_void {
5471        self.next
5472    }
5473}
5474
5475unsafe impl InputChainStruct for LatencySleepModeInfoNV {
5476    const TYPE: StructureType = StructureType::LATENCY_SLEEP_MODE_INFO_NV;
5477
5478    #[inline]
5479    fn s_type(&self) -> StructureType {
5480        self.s_type
5481    }
5482
5483    #[inline]
5484    fn next(&self) -> *const c_void {
5485        self.next
5486    }
5487}
5488
5489unsafe impl InputChainStruct for LatencySubmissionPresentIdNV {
5490    const TYPE: StructureType = StructureType::LATENCY_SUBMISSION_PRESENT_ID_NV;
5491
5492    #[inline]
5493    fn s_type(&self) -> StructureType {
5494        self.s_type
5495    }
5496
5497    #[inline]
5498    fn next(&self) -> *const c_void {
5499        self.next
5500    }
5501}
5502
5503unsafe impl InputChainStruct for LatencySurfaceCapabilitiesNV {
5504    const TYPE: StructureType = StructureType::LATENCY_SURFACE_CAPABILITIES_NV;
5505
5506    #[inline]
5507    fn s_type(&self) -> StructureType {
5508        self.s_type
5509    }
5510
5511    #[inline]
5512    fn next(&self) -> *const c_void {
5513        self.next
5514    }
5515}
5516
5517unsafe impl InputChainStruct for LatencyTimingsFrameReportNV {
5518    const TYPE: StructureType = StructureType::LATENCY_TIMINGS_FRAME_REPORT_NV;
5519
5520    #[inline]
5521    fn s_type(&self) -> StructureType {
5522        self.s_type
5523    }
5524
5525    #[inline]
5526    fn next(&self) -> *const c_void {
5527        self.next
5528    }
5529}
5530
5531unsafe impl InputChainStruct for LayerSettingsCreateInfoEXT {
5532    const TYPE: StructureType = StructureType::LAYER_SETTINGS_CREATE_INFO_EXT;
5533
5534    #[inline]
5535    fn s_type(&self) -> StructureType {
5536        self.s_type
5537    }
5538
5539    #[inline]
5540    fn next(&self) -> *const c_void {
5541        self.next
5542    }
5543}
5544
5545unsafe impl InputChainStruct for MacOSSurfaceCreateInfoMVK {
5546    const TYPE: StructureType = StructureType::MACOS_SURFACE_CREATE_INFO_MVK;
5547
5548    #[inline]
5549    fn s_type(&self) -> StructureType {
5550        self.s_type
5551    }
5552
5553    #[inline]
5554    fn next(&self) -> *const c_void {
5555        self.next
5556    }
5557}
5558
5559unsafe impl InputChainStruct for MappedMemoryRange {
5560    const TYPE: StructureType = StructureType::MAPPED_MEMORY_RANGE;
5561
5562    #[inline]
5563    fn s_type(&self) -> StructureType {
5564        self.s_type
5565    }
5566
5567    #[inline]
5568    fn next(&self) -> *const c_void {
5569        self.next
5570    }
5571}
5572
5573unsafe impl InputChainStruct for MemoryAllocateFlagsInfo {
5574    const TYPE: StructureType = StructureType::MEMORY_ALLOCATE_FLAGS_INFO;
5575
5576    #[inline]
5577    fn s_type(&self) -> StructureType {
5578        self.s_type
5579    }
5580
5581    #[inline]
5582    fn next(&self) -> *const c_void {
5583        self.next
5584    }
5585}
5586
5587unsafe impl InputChainStruct for MemoryAllocateInfo {
5588    const TYPE: StructureType = StructureType::MEMORY_ALLOCATE_INFO;
5589
5590    #[inline]
5591    fn s_type(&self) -> StructureType {
5592        self.s_type
5593    }
5594
5595    #[inline]
5596    fn next(&self) -> *const c_void {
5597        self.next
5598    }
5599}
5600
5601unsafe impl InputChainStruct for MemoryBarrier {
5602    const TYPE: StructureType = StructureType::MEMORY_BARRIER;
5603
5604    #[inline]
5605    fn s_type(&self) -> StructureType {
5606        self.s_type
5607    }
5608
5609    #[inline]
5610    fn next(&self) -> *const c_void {
5611        self.next
5612    }
5613}
5614
5615unsafe impl InputChainStruct for MemoryBarrier2 {
5616    const TYPE: StructureType = StructureType::MEMORY_BARRIER_2;
5617
5618    #[inline]
5619    fn s_type(&self) -> StructureType {
5620        self.s_type
5621    }
5622
5623    #[inline]
5624    fn next(&self) -> *const c_void {
5625        self.next
5626    }
5627}
5628
5629unsafe impl InputChainStruct for MemoryBarrierAccessFlags3KHR {
5630    const TYPE: StructureType = StructureType::MEMORY_BARRIER_ACCESS_FLAGS_3_KHR;
5631
5632    #[inline]
5633    fn s_type(&self) -> StructureType {
5634        self.s_type
5635    }
5636
5637    #[inline]
5638    fn next(&self) -> *const c_void {
5639        self.next
5640    }
5641}
5642
5643unsafe impl InputChainStruct for MemoryDedicatedAllocateInfo {
5644    const TYPE: StructureType = StructureType::MEMORY_DEDICATED_ALLOCATE_INFO;
5645
5646    #[inline]
5647    fn s_type(&self) -> StructureType {
5648        self.s_type
5649    }
5650
5651    #[inline]
5652    fn next(&self) -> *const c_void {
5653        self.next
5654    }
5655}
5656
5657unsafe impl InputChainStruct for MemoryDedicatedAllocateInfoTensorARM {
5658    const TYPE: StructureType = StructureType::MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM;
5659
5660    #[inline]
5661    fn s_type(&self) -> StructureType {
5662        self.s_type
5663    }
5664
5665    #[inline]
5666    fn next(&self) -> *const c_void {
5667        self.next
5668    }
5669}
5670
5671unsafe impl InputChainStruct for MemoryDedicatedRequirements {
5672    const TYPE: StructureType = StructureType::MEMORY_DEDICATED_REQUIREMENTS;
5673
5674    #[inline]
5675    fn s_type(&self) -> StructureType {
5676        self.s_type
5677    }
5678
5679    #[inline]
5680    fn next(&self) -> *const c_void {
5681        self.next
5682    }
5683}
5684
5685unsafe impl OutputChainStruct for MemoryDedicatedRequirements {
5686    #[inline]
5687    fn next_mut(&self) -> *mut c_void {
5688        self.next
5689    }
5690}
5691
5692unsafe impl InputChainStruct for MemoryFdPropertiesKHR {
5693    const TYPE: StructureType = StructureType::MEMORY_FD_PROPERTIES_KHR;
5694
5695    #[inline]
5696    fn s_type(&self) -> StructureType {
5697        self.s_type
5698    }
5699
5700    #[inline]
5701    fn next(&self) -> *const c_void {
5702        self.next
5703    }
5704}
5705
5706unsafe impl OutputChainStruct for MemoryFdPropertiesKHR {
5707    #[inline]
5708    fn next_mut(&self) -> *mut c_void {
5709        self.next
5710    }
5711}
5712
5713unsafe impl InputChainStruct for MemoryGetAndroidHardwareBufferInfoANDROID {
5714    const TYPE: StructureType = StructureType::MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID;
5715
5716    #[inline]
5717    fn s_type(&self) -> StructureType {
5718        self.s_type
5719    }
5720
5721    #[inline]
5722    fn next(&self) -> *const c_void {
5723        self.next
5724    }
5725}
5726
5727unsafe impl InputChainStruct for MemoryGetFdInfoKHR {
5728    const TYPE: StructureType = StructureType::MEMORY_GET_FD_INFO_KHR;
5729
5730    #[inline]
5731    fn s_type(&self) -> StructureType {
5732        self.s_type
5733    }
5734
5735    #[inline]
5736    fn next(&self) -> *const c_void {
5737        self.next
5738    }
5739}
5740
5741unsafe impl InputChainStruct for MemoryGetMetalHandleInfoEXT {
5742    const TYPE: StructureType = StructureType::MEMORY_GET_METAL_HANDLE_INFO_EXT;
5743
5744    #[inline]
5745    fn s_type(&self) -> StructureType {
5746        self.s_type
5747    }
5748
5749    #[inline]
5750    fn next(&self) -> *const c_void {
5751        self.next
5752    }
5753}
5754
5755unsafe impl InputChainStruct for MemoryGetRemoteAddressInfoNV {
5756    const TYPE: StructureType = StructureType::MEMORY_GET_REMOTE_ADDRESS_INFO_NV;
5757
5758    #[inline]
5759    fn s_type(&self) -> StructureType {
5760        self.s_type
5761    }
5762
5763    #[inline]
5764    fn next(&self) -> *const c_void {
5765        self.next
5766    }
5767}
5768
5769unsafe impl InputChainStruct for MemoryGetSciBufInfoNV {
5770    const TYPE: StructureType = StructureType::MEMORY_GET_SCI_BUF_INFO_NV;
5771
5772    #[inline]
5773    fn s_type(&self) -> StructureType {
5774        self.s_type
5775    }
5776
5777    #[inline]
5778    fn next(&self) -> *const c_void {
5779        self.next
5780    }
5781}
5782
5783unsafe impl InputChainStruct for MemoryGetWin32HandleInfoKHR {
5784    const TYPE: StructureType = StructureType::MEMORY_GET_WIN32_HANDLE_INFO_KHR;
5785
5786    #[inline]
5787    fn s_type(&self) -> StructureType {
5788        self.s_type
5789    }
5790
5791    #[inline]
5792    fn next(&self) -> *const c_void {
5793        self.next
5794    }
5795}
5796
5797unsafe impl InputChainStruct for MemoryGetZirconHandleInfoFUCHSIA {
5798    const TYPE: StructureType = StructureType::MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA;
5799
5800    #[inline]
5801    fn s_type(&self) -> StructureType {
5802        self.s_type
5803    }
5804
5805    #[inline]
5806    fn next(&self) -> *const c_void {
5807        self.next
5808    }
5809}
5810
5811unsafe impl InputChainStruct for MemoryHostPointerPropertiesEXT {
5812    const TYPE: StructureType = StructureType::MEMORY_HOST_POINTER_PROPERTIES_EXT;
5813
5814    #[inline]
5815    fn s_type(&self) -> StructureType {
5816        self.s_type
5817    }
5818
5819    #[inline]
5820    fn next(&self) -> *const c_void {
5821        self.next
5822    }
5823}
5824
5825unsafe impl OutputChainStruct for MemoryHostPointerPropertiesEXT {
5826    #[inline]
5827    fn next_mut(&self) -> *mut c_void {
5828        self.next
5829    }
5830}
5831
5832unsafe impl InputChainStruct for MemoryMapInfo {
5833    const TYPE: StructureType = StructureType::MEMORY_MAP_INFO;
5834
5835    #[inline]
5836    fn s_type(&self) -> StructureType {
5837        self.s_type
5838    }
5839
5840    #[inline]
5841    fn next(&self) -> *const c_void {
5842        self.next
5843    }
5844}
5845
5846unsafe impl InputChainStruct for MemoryMapPlacedInfoEXT {
5847    const TYPE: StructureType = StructureType::MEMORY_MAP_PLACED_INFO_EXT;
5848
5849    #[inline]
5850    fn s_type(&self) -> StructureType {
5851        self.s_type
5852    }
5853
5854    #[inline]
5855    fn next(&self) -> *const c_void {
5856        self.next
5857    }
5858}
5859
5860unsafe impl InputChainStruct for MemoryMetalHandlePropertiesEXT {
5861    const TYPE: StructureType = StructureType::MEMORY_METAL_HANDLE_PROPERTIES_EXT;
5862
5863    #[inline]
5864    fn s_type(&self) -> StructureType {
5865        self.s_type
5866    }
5867
5868    #[inline]
5869    fn next(&self) -> *const c_void {
5870        self.next
5871    }
5872}
5873
5874unsafe impl OutputChainStruct for MemoryMetalHandlePropertiesEXT {
5875    #[inline]
5876    fn next_mut(&self) -> *mut c_void {
5877        self.next
5878    }
5879}
5880
5881unsafe impl InputChainStruct for MemoryOpaqueCaptureAddressAllocateInfo {
5882    const TYPE: StructureType = StructureType::MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO;
5883
5884    #[inline]
5885    fn s_type(&self) -> StructureType {
5886        self.s_type
5887    }
5888
5889    #[inline]
5890    fn next(&self) -> *const c_void {
5891        self.next
5892    }
5893}
5894
5895unsafe impl InputChainStruct for MemoryPriorityAllocateInfoEXT {
5896    const TYPE: StructureType = StructureType::MEMORY_PRIORITY_ALLOCATE_INFO_EXT;
5897
5898    #[inline]
5899    fn s_type(&self) -> StructureType {
5900        self.s_type
5901    }
5902
5903    #[inline]
5904    fn next(&self) -> *const c_void {
5905        self.next
5906    }
5907}
5908
5909unsafe impl InputChainStruct for MemoryRequirements2 {
5910    const TYPE: StructureType = StructureType::MEMORY_REQUIREMENTS_2;
5911
5912    #[inline]
5913    fn s_type(&self) -> StructureType {
5914        self.s_type
5915    }
5916
5917    #[inline]
5918    fn next(&self) -> *const c_void {
5919        self.next
5920    }
5921}
5922
5923unsafe impl OutputChainStruct for MemoryRequirements2 {
5924    #[inline]
5925    fn next_mut(&self) -> *mut c_void {
5926        self.next
5927    }
5928}
5929
5930unsafe impl InputChainStruct for MemorySciBufPropertiesNV {
5931    const TYPE: StructureType = StructureType::MEMORY_SCI_BUF_PROPERTIES_NV;
5932
5933    #[inline]
5934    fn s_type(&self) -> StructureType {
5935        self.s_type
5936    }
5937
5938    #[inline]
5939    fn next(&self) -> *const c_void {
5940        self.next
5941    }
5942}
5943
5944unsafe impl InputChainStruct for MemoryToImageCopy {
5945    const TYPE: StructureType = StructureType::MEMORY_TO_IMAGE_COPY;
5946
5947    #[inline]
5948    fn s_type(&self) -> StructureType {
5949        self.s_type
5950    }
5951
5952    #[inline]
5953    fn next(&self) -> *const c_void {
5954        self.next
5955    }
5956}
5957
5958unsafe impl InputChainStruct for MemoryUnmapInfo {
5959    const TYPE: StructureType = StructureType::MEMORY_UNMAP_INFO;
5960
5961    #[inline]
5962    fn s_type(&self) -> StructureType {
5963        self.s_type
5964    }
5965
5966    #[inline]
5967    fn next(&self) -> *const c_void {
5968        self.next
5969    }
5970}
5971
5972unsafe impl InputChainStruct for MemoryWin32HandlePropertiesKHR {
5973    const TYPE: StructureType = StructureType::MEMORY_WIN32_HANDLE_PROPERTIES_KHR;
5974
5975    #[inline]
5976    fn s_type(&self) -> StructureType {
5977        self.s_type
5978    }
5979
5980    #[inline]
5981    fn next(&self) -> *const c_void {
5982        self.next
5983    }
5984}
5985
5986unsafe impl OutputChainStruct for MemoryWin32HandlePropertiesKHR {
5987    #[inline]
5988    fn next_mut(&self) -> *mut c_void {
5989        self.next
5990    }
5991}
5992
5993unsafe impl InputChainStruct for MemoryZirconHandlePropertiesFUCHSIA {
5994    const TYPE: StructureType = StructureType::MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA;
5995
5996    #[inline]
5997    fn s_type(&self) -> StructureType {
5998        self.s_type
5999    }
6000
6001    #[inline]
6002    fn next(&self) -> *const c_void {
6003        self.next
6004    }
6005}
6006
6007unsafe impl OutputChainStruct for MemoryZirconHandlePropertiesFUCHSIA {
6008    #[inline]
6009    fn next_mut(&self) -> *mut c_void {
6010        self.next
6011    }
6012}
6013
6014unsafe impl InputChainStruct for MetalSurfaceCreateInfoEXT {
6015    const TYPE: StructureType = StructureType::METAL_SURFACE_CREATE_INFO_EXT;
6016
6017    #[inline]
6018    fn s_type(&self) -> StructureType {
6019        self.s_type
6020    }
6021
6022    #[inline]
6023    fn next(&self) -> *const c_void {
6024        self.next
6025    }
6026}
6027
6028unsafe impl InputChainStruct for MicromapBuildInfoEXT {
6029    const TYPE: StructureType = StructureType::MICROMAP_BUILD_INFO_EXT;
6030
6031    #[inline]
6032    fn s_type(&self) -> StructureType {
6033        self.s_type
6034    }
6035
6036    #[inline]
6037    fn next(&self) -> *const c_void {
6038        self.next
6039    }
6040}
6041
6042unsafe impl InputChainStruct for MicromapBuildSizesInfoEXT {
6043    const TYPE: StructureType = StructureType::MICROMAP_BUILD_SIZES_INFO_EXT;
6044
6045    #[inline]
6046    fn s_type(&self) -> StructureType {
6047        self.s_type
6048    }
6049
6050    #[inline]
6051    fn next(&self) -> *const c_void {
6052        self.next
6053    }
6054}
6055
6056unsafe impl InputChainStruct for MicromapCreateInfoEXT {
6057    const TYPE: StructureType = StructureType::MICROMAP_CREATE_INFO_EXT;
6058
6059    #[inline]
6060    fn s_type(&self) -> StructureType {
6061        self.s_type
6062    }
6063
6064    #[inline]
6065    fn next(&self) -> *const c_void {
6066        self.next
6067    }
6068}
6069
6070unsafe impl InputChainStruct for MicromapVersionInfoEXT {
6071    const TYPE: StructureType = StructureType::MICROMAP_VERSION_INFO_EXT;
6072
6073    #[inline]
6074    fn s_type(&self) -> StructureType {
6075        self.s_type
6076    }
6077
6078    #[inline]
6079    fn next(&self) -> *const c_void {
6080        self.next
6081    }
6082}
6083
6084unsafe impl InputChainStruct for MultisamplePropertiesEXT {
6085    const TYPE: StructureType = StructureType::MULTISAMPLE_PROPERTIES_EXT;
6086
6087    #[inline]
6088    fn s_type(&self) -> StructureType {
6089        self.s_type
6090    }
6091
6092    #[inline]
6093    fn next(&self) -> *const c_void {
6094        self.next
6095    }
6096}
6097
6098unsafe impl OutputChainStruct for MultisamplePropertiesEXT {
6099    #[inline]
6100    fn next_mut(&self) -> *mut c_void {
6101        self.next
6102    }
6103}
6104
6105unsafe impl InputChainStruct for MultisampledRenderToSingleSampledInfoEXT {
6106    const TYPE: StructureType = StructureType::MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT;
6107
6108    #[inline]
6109    fn s_type(&self) -> StructureType {
6110        self.s_type
6111    }
6112
6113    #[inline]
6114    fn next(&self) -> *const c_void {
6115        self.next
6116    }
6117}
6118
6119unsafe impl InputChainStruct for MultiviewPerViewAttributesInfoNVX {
6120    const TYPE: StructureType = StructureType::MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX;
6121
6122    #[inline]
6123    fn s_type(&self) -> StructureType {
6124        self.s_type
6125    }
6126
6127    #[inline]
6128    fn next(&self) -> *const c_void {
6129        self.next
6130    }
6131}
6132
6133unsafe impl InputChainStruct for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {
6134    const TYPE: StructureType =
6135        StructureType::MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM;
6136
6137    #[inline]
6138    fn s_type(&self) -> StructureType {
6139        self.s_type
6140    }
6141
6142    #[inline]
6143    fn next(&self) -> *const c_void {
6144        self.next
6145    }
6146}
6147
6148unsafe impl InputChainStruct for MutableDescriptorTypeCreateInfoEXT {
6149    const TYPE: StructureType = StructureType::MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT;
6150
6151    #[inline]
6152    fn s_type(&self) -> StructureType {
6153        self.s_type
6154    }
6155
6156    #[inline]
6157    fn next(&self) -> *const c_void {
6158        self.next
6159    }
6160}
6161
6162unsafe impl InputChainStruct for OpaqueCaptureDescriptorDataCreateInfoEXT {
6163    const TYPE: StructureType = StructureType::OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT;
6164
6165    #[inline]
6166    fn s_type(&self) -> StructureType {
6167        self.s_type
6168    }
6169
6170    #[inline]
6171    fn next(&self) -> *const c_void {
6172        self.next
6173    }
6174}
6175
6176unsafe impl InputChainStruct for OpticalFlowExecuteInfoNV {
6177    const TYPE: StructureType = StructureType::OPTICAL_FLOW_EXECUTE_INFO_NV;
6178
6179    #[inline]
6180    fn s_type(&self) -> StructureType {
6181        self.s_type
6182    }
6183
6184    #[inline]
6185    fn next(&self) -> *const c_void {
6186        self.next
6187    }
6188}
6189
6190unsafe impl OutputChainStruct for OpticalFlowExecuteInfoNV {
6191    #[inline]
6192    fn next_mut(&self) -> *mut c_void {
6193        self.next
6194    }
6195}
6196
6197unsafe impl InputChainStruct for OpticalFlowImageFormatInfoNV {
6198    const TYPE: StructureType = StructureType::OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV;
6199
6200    #[inline]
6201    fn s_type(&self) -> StructureType {
6202        self.s_type
6203    }
6204
6205    #[inline]
6206    fn next(&self) -> *const c_void {
6207        self.next
6208    }
6209}
6210
6211unsafe impl InputChainStruct for OpticalFlowImageFormatPropertiesNV {
6212    const TYPE: StructureType = StructureType::OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV;
6213
6214    #[inline]
6215    fn s_type(&self) -> StructureType {
6216        self.s_type
6217    }
6218
6219    #[inline]
6220    fn next(&self) -> *const c_void {
6221        self.next
6222    }
6223}
6224
6225unsafe impl InputChainStruct for OpticalFlowSessionCreateInfoNV {
6226    const TYPE: StructureType = StructureType::OPTICAL_FLOW_SESSION_CREATE_INFO_NV;
6227
6228    #[inline]
6229    fn s_type(&self) -> StructureType {
6230        self.s_type
6231    }
6232
6233    #[inline]
6234    fn next(&self) -> *const c_void {
6235        self.next
6236    }
6237}
6238
6239unsafe impl OutputChainStruct for OpticalFlowSessionCreateInfoNV {
6240    #[inline]
6241    fn next_mut(&self) -> *mut c_void {
6242        self.next
6243    }
6244}
6245
6246unsafe impl InputChainStruct for OpticalFlowSessionCreatePrivateDataInfoNV {
6247    const TYPE: StructureType = StructureType::OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV;
6248
6249    #[inline]
6250    fn s_type(&self) -> StructureType {
6251        self.s_type
6252    }
6253
6254    #[inline]
6255    fn next(&self) -> *const c_void {
6256        self.next
6257    }
6258}
6259
6260unsafe impl OutputChainStruct for OpticalFlowSessionCreatePrivateDataInfoNV {
6261    #[inline]
6262    fn next_mut(&self) -> *mut c_void {
6263        self.next
6264    }
6265}
6266
6267unsafe impl InputChainStruct for OutOfBandQueueTypeInfoNV {
6268    const TYPE: StructureType = StructureType::OUT_OF_BAND_QUEUE_TYPE_INFO_NV;
6269
6270    #[inline]
6271    fn s_type(&self) -> StructureType {
6272        self.s_type
6273    }
6274
6275    #[inline]
6276    fn next(&self) -> *const c_void {
6277        self.next
6278    }
6279}
6280
6281unsafe impl InputChainStruct for PartitionedAccelerationStructureFlagsNV {
6282    const TYPE: StructureType = StructureType::PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV;
6283
6284    #[inline]
6285    fn s_type(&self) -> StructureType {
6286        self.s_type
6287    }
6288
6289    #[inline]
6290    fn next(&self) -> *const c_void {
6291        self.next
6292    }
6293}
6294
6295unsafe impl OutputChainStruct for PartitionedAccelerationStructureFlagsNV {
6296    #[inline]
6297    fn next_mut(&self) -> *mut c_void {
6298        self.next
6299    }
6300}
6301
6302unsafe impl InputChainStruct for PartitionedAccelerationStructureInstancesInputNV {
6303    const TYPE: StructureType =
6304        StructureType::PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV;
6305
6306    #[inline]
6307    fn s_type(&self) -> StructureType {
6308        self.s_type
6309    }
6310
6311    #[inline]
6312    fn next(&self) -> *const c_void {
6313        self.next
6314    }
6315}
6316
6317unsafe impl OutputChainStruct for PartitionedAccelerationStructureInstancesInputNV {
6318    #[inline]
6319    fn next_mut(&self) -> *mut c_void {
6320        self.next
6321    }
6322}
6323
6324unsafe impl InputChainStruct for PerTileBeginInfoQCOM {
6325    const TYPE: StructureType = StructureType::PER_TILE_BEGIN_INFO_QCOM;
6326
6327    #[inline]
6328    fn s_type(&self) -> StructureType {
6329        self.s_type
6330    }
6331
6332    #[inline]
6333    fn next(&self) -> *const c_void {
6334        self.next
6335    }
6336}
6337
6338unsafe impl InputChainStruct for PerTileEndInfoQCOM {
6339    const TYPE: StructureType = StructureType::PER_TILE_END_INFO_QCOM;
6340
6341    #[inline]
6342    fn s_type(&self) -> StructureType {
6343        self.s_type
6344    }
6345
6346    #[inline]
6347    fn next(&self) -> *const c_void {
6348        self.next
6349    }
6350}
6351
6352unsafe impl InputChainStruct for PerformanceConfigurationAcquireInfoINTEL {
6353    const TYPE: StructureType = StructureType::PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL;
6354
6355    #[inline]
6356    fn s_type(&self) -> StructureType {
6357        self.s_type
6358    }
6359
6360    #[inline]
6361    fn next(&self) -> *const c_void {
6362        self.next
6363    }
6364}
6365
6366unsafe impl InputChainStruct for PerformanceCounterDescriptionKHR {
6367    const TYPE: StructureType = StructureType::PERFORMANCE_COUNTER_DESCRIPTION_KHR;
6368
6369    #[inline]
6370    fn s_type(&self) -> StructureType {
6371        self.s_type
6372    }
6373
6374    #[inline]
6375    fn next(&self) -> *const c_void {
6376        self.next
6377    }
6378}
6379
6380unsafe impl OutputChainStruct for PerformanceCounterDescriptionKHR {
6381    #[inline]
6382    fn next_mut(&self) -> *mut c_void {
6383        self.next
6384    }
6385}
6386
6387unsafe impl InputChainStruct for PerformanceCounterKHR {
6388    const TYPE: StructureType = StructureType::PERFORMANCE_COUNTER_KHR;
6389
6390    #[inline]
6391    fn s_type(&self) -> StructureType {
6392        self.s_type
6393    }
6394
6395    #[inline]
6396    fn next(&self) -> *const c_void {
6397        self.next
6398    }
6399}
6400
6401unsafe impl OutputChainStruct for PerformanceCounterKHR {
6402    #[inline]
6403    fn next_mut(&self) -> *mut c_void {
6404        self.next
6405    }
6406}
6407
6408unsafe impl InputChainStruct for PerformanceMarkerInfoINTEL {
6409    const TYPE: StructureType = StructureType::PERFORMANCE_MARKER_INFO_INTEL;
6410
6411    #[inline]
6412    fn s_type(&self) -> StructureType {
6413        self.s_type
6414    }
6415
6416    #[inline]
6417    fn next(&self) -> *const c_void {
6418        self.next
6419    }
6420}
6421
6422unsafe impl InputChainStruct for PerformanceOverrideInfoINTEL {
6423    const TYPE: StructureType = StructureType::PERFORMANCE_OVERRIDE_INFO_INTEL;
6424
6425    #[inline]
6426    fn s_type(&self) -> StructureType {
6427        self.s_type
6428    }
6429
6430    #[inline]
6431    fn next(&self) -> *const c_void {
6432        self.next
6433    }
6434}
6435
6436unsafe impl InputChainStruct for PerformanceQueryReservationInfoKHR {
6437    const TYPE: StructureType = StructureType::PERFORMANCE_QUERY_RESERVATION_INFO_KHR;
6438
6439    #[inline]
6440    fn s_type(&self) -> StructureType {
6441        self.s_type
6442    }
6443
6444    #[inline]
6445    fn next(&self) -> *const c_void {
6446        self.next
6447    }
6448}
6449
6450unsafe impl InputChainStruct for PerformanceQuerySubmitInfoKHR {
6451    const TYPE: StructureType = StructureType::PERFORMANCE_QUERY_SUBMIT_INFO_KHR;
6452
6453    #[inline]
6454    fn s_type(&self) -> StructureType {
6455        self.s_type
6456    }
6457
6458    #[inline]
6459    fn next(&self) -> *const c_void {
6460        self.next
6461    }
6462}
6463
6464unsafe impl InputChainStruct for PerformanceStreamMarkerInfoINTEL {
6465    const TYPE: StructureType = StructureType::PERFORMANCE_STREAM_MARKER_INFO_INTEL;
6466
6467    #[inline]
6468    fn s_type(&self) -> StructureType {
6469        self.s_type
6470    }
6471
6472    #[inline]
6473    fn next(&self) -> *const c_void {
6474        self.next
6475    }
6476}
6477
6478unsafe impl InputChainStruct for PhysicalDevice16BitStorageFeatures {
6479    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES;
6480
6481    #[inline]
6482    fn s_type(&self) -> StructureType {
6483        self.s_type
6484    }
6485
6486    #[inline]
6487    fn next(&self) -> *const c_void {
6488        self.next
6489    }
6490}
6491
6492unsafe impl OutputChainStruct for PhysicalDevice16BitStorageFeatures {
6493    #[inline]
6494    fn next_mut(&self) -> *mut c_void {
6495        self.next
6496    }
6497}
6498
6499unsafe impl InputChainStruct for PhysicalDevice4444FormatsFeaturesEXT {
6500    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT;
6501
6502    #[inline]
6503    fn s_type(&self) -> StructureType {
6504        self.s_type
6505    }
6506
6507    #[inline]
6508    fn next(&self) -> *const c_void {
6509        self.next
6510    }
6511}
6512
6513unsafe impl OutputChainStruct for PhysicalDevice4444FormatsFeaturesEXT {
6514    #[inline]
6515    fn next_mut(&self) -> *mut c_void {
6516        self.next
6517    }
6518}
6519
6520unsafe impl InputChainStruct for PhysicalDevice8BitStorageFeatures {
6521    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES;
6522
6523    #[inline]
6524    fn s_type(&self) -> StructureType {
6525        self.s_type
6526    }
6527
6528    #[inline]
6529    fn next(&self) -> *const c_void {
6530        self.next
6531    }
6532}
6533
6534unsafe impl OutputChainStruct for PhysicalDevice8BitStorageFeatures {
6535    #[inline]
6536    fn next_mut(&self) -> *mut c_void {
6537        self.next
6538    }
6539}
6540
6541unsafe impl InputChainStruct for PhysicalDeviceASTCDecodeFeaturesEXT {
6542    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT;
6543
6544    #[inline]
6545    fn s_type(&self) -> StructureType {
6546        self.s_type
6547    }
6548
6549    #[inline]
6550    fn next(&self) -> *const c_void {
6551        self.next
6552    }
6553}
6554
6555unsafe impl OutputChainStruct for PhysicalDeviceASTCDecodeFeaturesEXT {
6556    #[inline]
6557    fn next_mut(&self) -> *mut c_void {
6558        self.next
6559    }
6560}
6561
6562unsafe impl InputChainStruct for PhysicalDeviceAccelerationStructureFeaturesKHR {
6563    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR;
6564
6565    #[inline]
6566    fn s_type(&self) -> StructureType {
6567        self.s_type
6568    }
6569
6570    #[inline]
6571    fn next(&self) -> *const c_void {
6572        self.next
6573    }
6574}
6575
6576unsafe impl OutputChainStruct for PhysicalDeviceAccelerationStructureFeaturesKHR {
6577    #[inline]
6578    fn next_mut(&self) -> *mut c_void {
6579        self.next
6580    }
6581}
6582
6583unsafe impl InputChainStruct for PhysicalDeviceAccelerationStructurePropertiesKHR {
6584    const TYPE: StructureType =
6585        StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR;
6586
6587    #[inline]
6588    fn s_type(&self) -> StructureType {
6589        self.s_type
6590    }
6591
6592    #[inline]
6593    fn next(&self) -> *const c_void {
6594        self.next
6595    }
6596}
6597
6598unsafe impl OutputChainStruct for PhysicalDeviceAccelerationStructurePropertiesKHR {
6599    #[inline]
6600    fn next_mut(&self) -> *mut c_void {
6601        self.next
6602    }
6603}
6604
6605unsafe impl InputChainStruct for PhysicalDeviceAddressBindingReportFeaturesEXT {
6606    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT;
6607
6608    #[inline]
6609    fn s_type(&self) -> StructureType {
6610        self.s_type
6611    }
6612
6613    #[inline]
6614    fn next(&self) -> *const c_void {
6615        self.next
6616    }
6617}
6618
6619unsafe impl OutputChainStruct for PhysicalDeviceAddressBindingReportFeaturesEXT {
6620    #[inline]
6621    fn next_mut(&self) -> *mut c_void {
6622        self.next
6623    }
6624}
6625
6626unsafe impl InputChainStruct for PhysicalDeviceAmigoProfilingFeaturesSEC {
6627    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC;
6628
6629    #[inline]
6630    fn s_type(&self) -> StructureType {
6631        self.s_type
6632    }
6633
6634    #[inline]
6635    fn next(&self) -> *const c_void {
6636        self.next
6637    }
6638}
6639
6640unsafe impl OutputChainStruct for PhysicalDeviceAmigoProfilingFeaturesSEC {
6641    #[inline]
6642    fn next_mut(&self) -> *mut c_void {
6643        self.next
6644    }
6645}
6646
6647unsafe impl InputChainStruct for PhysicalDeviceAntiLagFeaturesAMD {
6648    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD;
6649
6650    #[inline]
6651    fn s_type(&self) -> StructureType {
6652        self.s_type
6653    }
6654
6655    #[inline]
6656    fn next(&self) -> *const c_void {
6657        self.next
6658    }
6659}
6660
6661unsafe impl OutputChainStruct for PhysicalDeviceAntiLagFeaturesAMD {
6662    #[inline]
6663    fn next_mut(&self) -> *mut c_void {
6664        self.next
6665    }
6666}
6667
6668unsafe impl InputChainStruct for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
6669    const TYPE: StructureType =
6670        StructureType::PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT;
6671
6672    #[inline]
6673    fn s_type(&self) -> StructureType {
6674        self.s_type
6675    }
6676
6677    #[inline]
6678    fn next(&self) -> *const c_void {
6679        self.next
6680    }
6681}
6682
6683unsafe impl OutputChainStruct for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
6684    #[inline]
6685    fn next_mut(&self) -> *mut c_void {
6686        self.next
6687    }
6688}
6689
6690unsafe impl InputChainStruct for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
6691    const TYPE: StructureType =
6692        StructureType::PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT;
6693
6694    #[inline]
6695    fn s_type(&self) -> StructureType {
6696        self.s_type
6697    }
6698
6699    #[inline]
6700    fn next(&self) -> *const c_void {
6701        self.next
6702    }
6703}
6704
6705unsafe impl OutputChainStruct for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
6706    #[inline]
6707    fn next_mut(&self) -> *mut c_void {
6708        self.next
6709    }
6710}
6711
6712unsafe impl InputChainStruct for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
6713    const TYPE: StructureType =
6714        StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT;
6715
6716    #[inline]
6717    fn s_type(&self) -> StructureType {
6718        self.s_type
6719    }
6720
6721    #[inline]
6722    fn next(&self) -> *const c_void {
6723        self.next
6724    }
6725}
6726
6727unsafe impl OutputChainStruct for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
6728    #[inline]
6729    fn next_mut(&self) -> *mut c_void {
6730        self.next
6731    }
6732}
6733
6734unsafe impl InputChainStruct for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
6735    const TYPE: StructureType =
6736        StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT;
6737
6738    #[inline]
6739    fn s_type(&self) -> StructureType {
6740        self.s_type
6741    }
6742
6743    #[inline]
6744    fn next(&self) -> *const c_void {
6745        self.next
6746    }
6747}
6748
6749unsafe impl OutputChainStruct for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
6750    #[inline]
6751    fn next_mut(&self) -> *mut c_void {
6752        self.next
6753    }
6754}
6755
6756unsafe impl InputChainStruct for PhysicalDeviceBorderColorSwizzleFeaturesEXT {
6757    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT;
6758
6759    #[inline]
6760    fn s_type(&self) -> StructureType {
6761        self.s_type
6762    }
6763
6764    #[inline]
6765    fn next(&self) -> *const c_void {
6766        self.next
6767    }
6768}
6769
6770unsafe impl OutputChainStruct for PhysicalDeviceBorderColorSwizzleFeaturesEXT {
6771    #[inline]
6772    fn next_mut(&self) -> *mut c_void {
6773        self.next
6774    }
6775}
6776
6777unsafe impl InputChainStruct for PhysicalDeviceBufferDeviceAddressFeatures {
6778    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES;
6779
6780    #[inline]
6781    fn s_type(&self) -> StructureType {
6782        self.s_type
6783    }
6784
6785    #[inline]
6786    fn next(&self) -> *const c_void {
6787        self.next
6788    }
6789}
6790
6791unsafe impl OutputChainStruct for PhysicalDeviceBufferDeviceAddressFeatures {
6792    #[inline]
6793    fn next_mut(&self) -> *mut c_void {
6794        self.next
6795    }
6796}
6797
6798unsafe impl InputChainStruct for PhysicalDeviceBufferDeviceAddressFeaturesEXT {
6799    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT;
6800
6801    #[inline]
6802    fn s_type(&self) -> StructureType {
6803        self.s_type
6804    }
6805
6806    #[inline]
6807    fn next(&self) -> *const c_void {
6808        self.next
6809    }
6810}
6811
6812unsafe impl OutputChainStruct for PhysicalDeviceBufferDeviceAddressFeaturesEXT {
6813    #[inline]
6814    fn next_mut(&self) -> *mut c_void {
6815        self.next
6816    }
6817}
6818
6819unsafe impl InputChainStruct for PhysicalDeviceClusterAccelerationStructureFeaturesNV {
6820    const TYPE: StructureType =
6821        StructureType::PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV;
6822
6823    #[inline]
6824    fn s_type(&self) -> StructureType {
6825        self.s_type
6826    }
6827
6828    #[inline]
6829    fn next(&self) -> *const c_void {
6830        self.next
6831    }
6832}
6833
6834unsafe impl OutputChainStruct for PhysicalDeviceClusterAccelerationStructureFeaturesNV {
6835    #[inline]
6836    fn next_mut(&self) -> *mut c_void {
6837        self.next
6838    }
6839}
6840
6841unsafe impl InputChainStruct for PhysicalDeviceClusterAccelerationStructurePropertiesNV {
6842    const TYPE: StructureType =
6843        StructureType::PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV;
6844
6845    #[inline]
6846    fn s_type(&self) -> StructureType {
6847        self.s_type
6848    }
6849
6850    #[inline]
6851    fn next(&self) -> *const c_void {
6852        self.next
6853    }
6854}
6855
6856unsafe impl OutputChainStruct for PhysicalDeviceClusterAccelerationStructurePropertiesNV {
6857    #[inline]
6858    fn next_mut(&self) -> *mut c_void {
6859        self.next
6860    }
6861}
6862
6863unsafe impl InputChainStruct for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
6864    const TYPE: StructureType =
6865        StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI;
6866
6867    #[inline]
6868    fn s_type(&self) -> StructureType {
6869        self.s_type
6870    }
6871
6872    #[inline]
6873    fn next(&self) -> *const c_void {
6874        self.next
6875    }
6876}
6877
6878unsafe impl OutputChainStruct for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
6879    #[inline]
6880    fn next_mut(&self) -> *mut c_void {
6881        self.next
6882    }
6883}
6884
6885unsafe impl InputChainStruct for PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
6886    const TYPE: StructureType =
6887        StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI;
6888
6889    #[inline]
6890    fn s_type(&self) -> StructureType {
6891        self.s_type
6892    }
6893
6894    #[inline]
6895    fn next(&self) -> *const c_void {
6896        self.next
6897    }
6898}
6899
6900unsafe impl OutputChainStruct for PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
6901    #[inline]
6902    fn next_mut(&self) -> *mut c_void {
6903        self.next
6904    }
6905}
6906
6907unsafe impl InputChainStruct for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
6908    const TYPE: StructureType =
6909        StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI;
6910
6911    #[inline]
6912    fn s_type(&self) -> StructureType {
6913        self.s_type
6914    }
6915
6916    #[inline]
6917    fn next(&self) -> *const c_void {
6918        self.next
6919    }
6920}
6921
6922unsafe impl OutputChainStruct for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
6923    #[inline]
6924    fn next_mut(&self) -> *mut c_void {
6925        self.next
6926    }
6927}
6928
6929unsafe impl InputChainStruct for PhysicalDeviceCoherentMemoryFeaturesAMD {
6930    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD;
6931
6932    #[inline]
6933    fn s_type(&self) -> StructureType {
6934        self.s_type
6935    }
6936
6937    #[inline]
6938    fn next(&self) -> *const c_void {
6939        self.next
6940    }
6941}
6942
6943unsafe impl OutputChainStruct for PhysicalDeviceCoherentMemoryFeaturesAMD {
6944    #[inline]
6945    fn next_mut(&self) -> *mut c_void {
6946        self.next
6947    }
6948}
6949
6950unsafe impl InputChainStruct for PhysicalDeviceColorWriteEnableFeaturesEXT {
6951    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT;
6952
6953    #[inline]
6954    fn s_type(&self) -> StructureType {
6955        self.s_type
6956    }
6957
6958    #[inline]
6959    fn next(&self) -> *const c_void {
6960        self.next
6961    }
6962}
6963
6964unsafe impl OutputChainStruct for PhysicalDeviceColorWriteEnableFeaturesEXT {
6965    #[inline]
6966    fn next_mut(&self) -> *mut c_void {
6967        self.next
6968    }
6969}
6970
6971unsafe impl InputChainStruct for PhysicalDeviceCommandBufferInheritanceFeaturesNV {
6972    const TYPE: StructureType =
6973        StructureType::PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV;
6974
6975    #[inline]
6976    fn s_type(&self) -> StructureType {
6977        self.s_type
6978    }
6979
6980    #[inline]
6981    fn next(&self) -> *const c_void {
6982        self.next
6983    }
6984}
6985
6986unsafe impl OutputChainStruct for PhysicalDeviceCommandBufferInheritanceFeaturesNV {
6987    #[inline]
6988    fn next_mut(&self) -> *mut c_void {
6989        self.next
6990    }
6991}
6992
6993unsafe impl InputChainStruct for PhysicalDeviceComputeShaderDerivativesFeaturesKHR {
6994    const TYPE: StructureType =
6995        StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR;
6996
6997    #[inline]
6998    fn s_type(&self) -> StructureType {
6999        self.s_type
7000    }
7001
7002    #[inline]
7003    fn next(&self) -> *const c_void {
7004        self.next
7005    }
7006}
7007
7008unsafe impl OutputChainStruct for PhysicalDeviceComputeShaderDerivativesFeaturesKHR {
7009    #[inline]
7010    fn next_mut(&self) -> *mut c_void {
7011        self.next
7012    }
7013}
7014
7015unsafe impl InputChainStruct for PhysicalDeviceComputeShaderDerivativesPropertiesKHR {
7016    const TYPE: StructureType =
7017        StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR;
7018
7019    #[inline]
7020    fn s_type(&self) -> StructureType {
7021        self.s_type
7022    }
7023
7024    #[inline]
7025    fn next(&self) -> *const c_void {
7026        self.next
7027    }
7028}
7029
7030unsafe impl OutputChainStruct for PhysicalDeviceComputeShaderDerivativesPropertiesKHR {
7031    #[inline]
7032    fn next_mut(&self) -> *mut c_void {
7033        self.next
7034    }
7035}
7036
7037unsafe impl InputChainStruct for PhysicalDeviceConditionalRenderingFeaturesEXT {
7038    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT;
7039
7040    #[inline]
7041    fn s_type(&self) -> StructureType {
7042        self.s_type
7043    }
7044
7045    #[inline]
7046    fn next(&self) -> *const c_void {
7047        self.next
7048    }
7049}
7050
7051unsafe impl OutputChainStruct for PhysicalDeviceConditionalRenderingFeaturesEXT {
7052    #[inline]
7053    fn next_mut(&self) -> *mut c_void {
7054        self.next
7055    }
7056}
7057
7058unsafe impl InputChainStruct for PhysicalDeviceConservativeRasterizationPropertiesEXT {
7059    const TYPE: StructureType =
7060        StructureType::PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT;
7061
7062    #[inline]
7063    fn s_type(&self) -> StructureType {
7064        self.s_type
7065    }
7066
7067    #[inline]
7068    fn next(&self) -> *const c_void {
7069        self.next
7070    }
7071}
7072
7073unsafe impl OutputChainStruct for PhysicalDeviceConservativeRasterizationPropertiesEXT {
7074    #[inline]
7075    fn next_mut(&self) -> *mut c_void {
7076        self.next
7077    }
7078}
7079
7080unsafe impl InputChainStruct for PhysicalDeviceCooperativeMatrix2FeaturesNV {
7081    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV;
7082
7083    #[inline]
7084    fn s_type(&self) -> StructureType {
7085        self.s_type
7086    }
7087
7088    #[inline]
7089    fn next(&self) -> *const c_void {
7090        self.next
7091    }
7092}
7093
7094unsafe impl OutputChainStruct for PhysicalDeviceCooperativeMatrix2FeaturesNV {
7095    #[inline]
7096    fn next_mut(&self) -> *mut c_void {
7097        self.next
7098    }
7099}
7100
7101unsafe impl InputChainStruct for PhysicalDeviceCooperativeMatrix2PropertiesNV {
7102    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV;
7103
7104    #[inline]
7105    fn s_type(&self) -> StructureType {
7106        self.s_type
7107    }
7108
7109    #[inline]
7110    fn next(&self) -> *const c_void {
7111        self.next
7112    }
7113}
7114
7115unsafe impl OutputChainStruct for PhysicalDeviceCooperativeMatrix2PropertiesNV {
7116    #[inline]
7117    fn next_mut(&self) -> *mut c_void {
7118        self.next
7119    }
7120}
7121
7122unsafe impl InputChainStruct for PhysicalDeviceCooperativeMatrixFeaturesKHR {
7123    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR;
7124
7125    #[inline]
7126    fn s_type(&self) -> StructureType {
7127        self.s_type
7128    }
7129
7130    #[inline]
7131    fn next(&self) -> *const c_void {
7132        self.next
7133    }
7134}
7135
7136unsafe impl OutputChainStruct for PhysicalDeviceCooperativeMatrixFeaturesKHR {
7137    #[inline]
7138    fn next_mut(&self) -> *mut c_void {
7139        self.next
7140    }
7141}
7142
7143unsafe impl InputChainStruct for PhysicalDeviceCooperativeMatrixFeaturesNV {
7144    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV;
7145
7146    #[inline]
7147    fn s_type(&self) -> StructureType {
7148        self.s_type
7149    }
7150
7151    #[inline]
7152    fn next(&self) -> *const c_void {
7153        self.next
7154    }
7155}
7156
7157unsafe impl OutputChainStruct for PhysicalDeviceCooperativeMatrixFeaturesNV {
7158    #[inline]
7159    fn next_mut(&self) -> *mut c_void {
7160        self.next
7161    }
7162}
7163
7164unsafe impl InputChainStruct for PhysicalDeviceCooperativeMatrixPropertiesKHR {
7165    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR;
7166
7167    #[inline]
7168    fn s_type(&self) -> StructureType {
7169        self.s_type
7170    }
7171
7172    #[inline]
7173    fn next(&self) -> *const c_void {
7174        self.next
7175    }
7176}
7177
7178unsafe impl OutputChainStruct for PhysicalDeviceCooperativeMatrixPropertiesKHR {
7179    #[inline]
7180    fn next_mut(&self) -> *mut c_void {
7181        self.next
7182    }
7183}
7184
7185unsafe impl InputChainStruct for PhysicalDeviceCooperativeMatrixPropertiesNV {
7186    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV;
7187
7188    #[inline]
7189    fn s_type(&self) -> StructureType {
7190        self.s_type
7191    }
7192
7193    #[inline]
7194    fn next(&self) -> *const c_void {
7195        self.next
7196    }
7197}
7198
7199unsafe impl OutputChainStruct for PhysicalDeviceCooperativeMatrixPropertiesNV {
7200    #[inline]
7201    fn next_mut(&self) -> *mut c_void {
7202        self.next
7203    }
7204}
7205
7206unsafe impl InputChainStruct for PhysicalDeviceCooperativeVectorFeaturesNV {
7207    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV;
7208
7209    #[inline]
7210    fn s_type(&self) -> StructureType {
7211        self.s_type
7212    }
7213
7214    #[inline]
7215    fn next(&self) -> *const c_void {
7216        self.next
7217    }
7218}
7219
7220unsafe impl OutputChainStruct for PhysicalDeviceCooperativeVectorFeaturesNV {
7221    #[inline]
7222    fn next_mut(&self) -> *mut c_void {
7223        self.next
7224    }
7225}
7226
7227unsafe impl InputChainStruct for PhysicalDeviceCooperativeVectorPropertiesNV {
7228    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV;
7229
7230    #[inline]
7231    fn s_type(&self) -> StructureType {
7232        self.s_type
7233    }
7234
7235    #[inline]
7236    fn next(&self) -> *const c_void {
7237        self.next
7238    }
7239}
7240
7241unsafe impl OutputChainStruct for PhysicalDeviceCooperativeVectorPropertiesNV {
7242    #[inline]
7243    fn next_mut(&self) -> *mut c_void {
7244        self.next
7245    }
7246}
7247
7248unsafe impl InputChainStruct for PhysicalDeviceCopyMemoryIndirectFeaturesKHR {
7249    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR;
7250
7251    #[inline]
7252    fn s_type(&self) -> StructureType {
7253        self.s_type
7254    }
7255
7256    #[inline]
7257    fn next(&self) -> *const c_void {
7258        self.next
7259    }
7260}
7261
7262unsafe impl OutputChainStruct for PhysicalDeviceCopyMemoryIndirectFeaturesKHR {
7263    #[inline]
7264    fn next_mut(&self) -> *mut c_void {
7265        self.next
7266    }
7267}
7268
7269unsafe impl InputChainStruct for PhysicalDeviceCopyMemoryIndirectFeaturesNV {
7270    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV;
7271
7272    #[inline]
7273    fn s_type(&self) -> StructureType {
7274        self.s_type
7275    }
7276
7277    #[inline]
7278    fn next(&self) -> *const c_void {
7279        self.next
7280    }
7281}
7282
7283unsafe impl OutputChainStruct for PhysicalDeviceCopyMemoryIndirectFeaturesNV {
7284    #[inline]
7285    fn next_mut(&self) -> *mut c_void {
7286        self.next
7287    }
7288}
7289
7290unsafe impl InputChainStruct for PhysicalDeviceCopyMemoryIndirectPropertiesKHR {
7291    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR;
7292
7293    #[inline]
7294    fn s_type(&self) -> StructureType {
7295        self.s_type
7296    }
7297
7298    #[inline]
7299    fn next(&self) -> *const c_void {
7300        self.next
7301    }
7302}
7303
7304unsafe impl OutputChainStruct for PhysicalDeviceCopyMemoryIndirectPropertiesKHR {
7305    #[inline]
7306    fn next_mut(&self) -> *mut c_void {
7307        self.next
7308    }
7309}
7310
7311unsafe impl InputChainStruct for PhysicalDeviceCornerSampledImageFeaturesNV {
7312    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV;
7313
7314    #[inline]
7315    fn s_type(&self) -> StructureType {
7316        self.s_type
7317    }
7318
7319    #[inline]
7320    fn next(&self) -> *const c_void {
7321        self.next
7322    }
7323}
7324
7325unsafe impl OutputChainStruct for PhysicalDeviceCornerSampledImageFeaturesNV {
7326    #[inline]
7327    fn next_mut(&self) -> *mut c_void {
7328        self.next
7329    }
7330}
7331
7332unsafe impl InputChainStruct for PhysicalDeviceCoverageReductionModeFeaturesNV {
7333    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV;
7334
7335    #[inline]
7336    fn s_type(&self) -> StructureType {
7337        self.s_type
7338    }
7339
7340    #[inline]
7341    fn next(&self) -> *const c_void {
7342        self.next
7343    }
7344}
7345
7346unsafe impl OutputChainStruct for PhysicalDeviceCoverageReductionModeFeaturesNV {
7347    #[inline]
7348    fn next_mut(&self) -> *mut c_void {
7349        self.next
7350    }
7351}
7352
7353unsafe impl InputChainStruct for PhysicalDeviceCubicClampFeaturesQCOM {
7354    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM;
7355
7356    #[inline]
7357    fn s_type(&self) -> StructureType {
7358        self.s_type
7359    }
7360
7361    #[inline]
7362    fn next(&self) -> *const c_void {
7363        self.next
7364    }
7365}
7366
7367unsafe impl OutputChainStruct for PhysicalDeviceCubicClampFeaturesQCOM {
7368    #[inline]
7369    fn next_mut(&self) -> *mut c_void {
7370        self.next
7371    }
7372}
7373
7374unsafe impl InputChainStruct for PhysicalDeviceCubicWeightsFeaturesQCOM {
7375    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM;
7376
7377    #[inline]
7378    fn s_type(&self) -> StructureType {
7379        self.s_type
7380    }
7381
7382    #[inline]
7383    fn next(&self) -> *const c_void {
7384        self.next
7385    }
7386}
7387
7388unsafe impl OutputChainStruct for PhysicalDeviceCubicWeightsFeaturesQCOM {
7389    #[inline]
7390    fn next_mut(&self) -> *mut c_void {
7391        self.next
7392    }
7393}
7394
7395unsafe impl InputChainStruct for PhysicalDeviceCudaKernelLaunchFeaturesNV {
7396    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV;
7397
7398    #[inline]
7399    fn s_type(&self) -> StructureType {
7400        self.s_type
7401    }
7402
7403    #[inline]
7404    fn next(&self) -> *const c_void {
7405        self.next
7406    }
7407}
7408
7409unsafe impl OutputChainStruct for PhysicalDeviceCudaKernelLaunchFeaturesNV {
7410    #[inline]
7411    fn next_mut(&self) -> *mut c_void {
7412        self.next
7413    }
7414}
7415
7416unsafe impl InputChainStruct for PhysicalDeviceCudaKernelLaunchPropertiesNV {
7417    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV;
7418
7419    #[inline]
7420    fn s_type(&self) -> StructureType {
7421        self.s_type
7422    }
7423
7424    #[inline]
7425    fn next(&self) -> *const c_void {
7426        self.next
7427    }
7428}
7429
7430unsafe impl OutputChainStruct for PhysicalDeviceCudaKernelLaunchPropertiesNV {
7431    #[inline]
7432    fn next_mut(&self) -> *mut c_void {
7433        self.next
7434    }
7435}
7436
7437unsafe impl InputChainStruct for PhysicalDeviceCustomBorderColorFeaturesEXT {
7438    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT;
7439
7440    #[inline]
7441    fn s_type(&self) -> StructureType {
7442        self.s_type
7443    }
7444
7445    #[inline]
7446    fn next(&self) -> *const c_void {
7447        self.next
7448    }
7449}
7450
7451unsafe impl OutputChainStruct for PhysicalDeviceCustomBorderColorFeaturesEXT {
7452    #[inline]
7453    fn next_mut(&self) -> *mut c_void {
7454        self.next
7455    }
7456}
7457
7458unsafe impl InputChainStruct for PhysicalDeviceCustomBorderColorPropertiesEXT {
7459    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT;
7460
7461    #[inline]
7462    fn s_type(&self) -> StructureType {
7463        self.s_type
7464    }
7465
7466    #[inline]
7467    fn next(&self) -> *const c_void {
7468        self.next
7469    }
7470}
7471
7472unsafe impl OutputChainStruct for PhysicalDeviceCustomBorderColorPropertiesEXT {
7473    #[inline]
7474    fn next_mut(&self) -> *mut c_void {
7475        self.next
7476    }
7477}
7478
7479unsafe impl InputChainStruct for PhysicalDeviceDataGraphFeaturesARM {
7480    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM;
7481
7482    #[inline]
7483    fn s_type(&self) -> StructureType {
7484        self.s_type
7485    }
7486
7487    #[inline]
7488    fn next(&self) -> *const c_void {
7489        self.next
7490    }
7491}
7492
7493unsafe impl OutputChainStruct for PhysicalDeviceDataGraphFeaturesARM {
7494    #[inline]
7495    fn next_mut(&self) -> *mut c_void {
7496        self.next
7497    }
7498}
7499
7500unsafe impl InputChainStruct for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
7501    const TYPE: StructureType =
7502        StructureType::PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV;
7503
7504    #[inline]
7505    fn s_type(&self) -> StructureType {
7506        self.s_type
7507    }
7508
7509    #[inline]
7510    fn next(&self) -> *const c_void {
7511        self.next
7512    }
7513}
7514
7515unsafe impl OutputChainStruct for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
7516    #[inline]
7517    fn next_mut(&self) -> *mut c_void {
7518        self.next
7519    }
7520}
7521
7522unsafe impl InputChainStruct for PhysicalDeviceDenseGeometryFormatFeaturesAMDX {
7523    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX;
7524
7525    #[inline]
7526    fn s_type(&self) -> StructureType {
7527        self.s_type
7528    }
7529
7530    #[inline]
7531    fn next(&self) -> *const c_void {
7532        self.next
7533    }
7534}
7535
7536unsafe impl OutputChainStruct for PhysicalDeviceDenseGeometryFormatFeaturesAMDX {
7537    #[inline]
7538    fn next_mut(&self) -> *mut c_void {
7539        self.next
7540    }
7541}
7542
7543unsafe impl InputChainStruct for PhysicalDeviceDepthBiasControlFeaturesEXT {
7544    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT;
7545
7546    #[inline]
7547    fn s_type(&self) -> StructureType {
7548        self.s_type
7549    }
7550
7551    #[inline]
7552    fn next(&self) -> *const c_void {
7553        self.next
7554    }
7555}
7556
7557unsafe impl OutputChainStruct for PhysicalDeviceDepthBiasControlFeaturesEXT {
7558    #[inline]
7559    fn next_mut(&self) -> *mut c_void {
7560        self.next
7561    }
7562}
7563
7564unsafe impl InputChainStruct for PhysicalDeviceDepthClampControlFeaturesEXT {
7565    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT;
7566
7567    #[inline]
7568    fn s_type(&self) -> StructureType {
7569        self.s_type
7570    }
7571
7572    #[inline]
7573    fn next(&self) -> *const c_void {
7574        self.next
7575    }
7576}
7577
7578unsafe impl OutputChainStruct for PhysicalDeviceDepthClampControlFeaturesEXT {
7579    #[inline]
7580    fn next_mut(&self) -> *mut c_void {
7581        self.next
7582    }
7583}
7584
7585unsafe impl InputChainStruct for PhysicalDeviceDepthClampZeroOneFeaturesKHR {
7586    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR;
7587
7588    #[inline]
7589    fn s_type(&self) -> StructureType {
7590        self.s_type
7591    }
7592
7593    #[inline]
7594    fn next(&self) -> *const c_void {
7595        self.next
7596    }
7597}
7598
7599unsafe impl OutputChainStruct for PhysicalDeviceDepthClampZeroOneFeaturesKHR {
7600    #[inline]
7601    fn next_mut(&self) -> *mut c_void {
7602        self.next
7603    }
7604}
7605
7606unsafe impl InputChainStruct for PhysicalDeviceDepthClipControlFeaturesEXT {
7607    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT;
7608
7609    #[inline]
7610    fn s_type(&self) -> StructureType {
7611        self.s_type
7612    }
7613
7614    #[inline]
7615    fn next(&self) -> *const c_void {
7616        self.next
7617    }
7618}
7619
7620unsafe impl OutputChainStruct for PhysicalDeviceDepthClipControlFeaturesEXT {
7621    #[inline]
7622    fn next_mut(&self) -> *mut c_void {
7623        self.next
7624    }
7625}
7626
7627unsafe impl InputChainStruct for PhysicalDeviceDepthClipEnableFeaturesEXT {
7628    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT;
7629
7630    #[inline]
7631    fn s_type(&self) -> StructureType {
7632        self.s_type
7633    }
7634
7635    #[inline]
7636    fn next(&self) -> *const c_void {
7637        self.next
7638    }
7639}
7640
7641unsafe impl OutputChainStruct for PhysicalDeviceDepthClipEnableFeaturesEXT {
7642    #[inline]
7643    fn next_mut(&self) -> *mut c_void {
7644        self.next
7645    }
7646}
7647
7648unsafe impl InputChainStruct for PhysicalDeviceDepthStencilResolveProperties {
7649    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES;
7650
7651    #[inline]
7652    fn s_type(&self) -> StructureType {
7653        self.s_type
7654    }
7655
7656    #[inline]
7657    fn next(&self) -> *const c_void {
7658        self.next
7659    }
7660}
7661
7662unsafe impl OutputChainStruct for PhysicalDeviceDepthStencilResolveProperties {
7663    #[inline]
7664    fn next_mut(&self) -> *mut c_void {
7665        self.next
7666    }
7667}
7668
7669unsafe impl InputChainStruct for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {
7670    const TYPE: StructureType =
7671        StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT;
7672
7673    #[inline]
7674    fn s_type(&self) -> StructureType {
7675        self.s_type
7676    }
7677
7678    #[inline]
7679    fn next(&self) -> *const c_void {
7680        self.next
7681    }
7682}
7683
7684unsafe impl OutputChainStruct for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {
7685    #[inline]
7686    fn next_mut(&self) -> *mut c_void {
7687        self.next
7688    }
7689}
7690
7691unsafe impl InputChainStruct for PhysicalDeviceDescriptorBufferFeaturesEXT {
7692    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT;
7693
7694    #[inline]
7695    fn s_type(&self) -> StructureType {
7696        self.s_type
7697    }
7698
7699    #[inline]
7700    fn next(&self) -> *const c_void {
7701        self.next
7702    }
7703}
7704
7705unsafe impl OutputChainStruct for PhysicalDeviceDescriptorBufferFeaturesEXT {
7706    #[inline]
7707    fn next_mut(&self) -> *mut c_void {
7708        self.next
7709    }
7710}
7711
7712unsafe impl InputChainStruct for PhysicalDeviceDescriptorBufferPropertiesEXT {
7713    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT;
7714
7715    #[inline]
7716    fn s_type(&self) -> StructureType {
7717        self.s_type
7718    }
7719
7720    #[inline]
7721    fn next(&self) -> *const c_void {
7722        self.next
7723    }
7724}
7725
7726unsafe impl OutputChainStruct for PhysicalDeviceDescriptorBufferPropertiesEXT {
7727    #[inline]
7728    fn next_mut(&self) -> *mut c_void {
7729        self.next
7730    }
7731}
7732
7733unsafe impl InputChainStruct for PhysicalDeviceDescriptorBufferTensorFeaturesARM {
7734    const TYPE: StructureType =
7735        StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM;
7736
7737    #[inline]
7738    fn s_type(&self) -> StructureType {
7739        self.s_type
7740    }
7741
7742    #[inline]
7743    fn next(&self) -> *const c_void {
7744        self.next
7745    }
7746}
7747
7748unsafe impl OutputChainStruct for PhysicalDeviceDescriptorBufferTensorFeaturesARM {
7749    #[inline]
7750    fn next_mut(&self) -> *mut c_void {
7751        self.next
7752    }
7753}
7754
7755unsafe impl InputChainStruct for PhysicalDeviceDescriptorBufferTensorPropertiesARM {
7756    const TYPE: StructureType =
7757        StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM;
7758
7759    #[inline]
7760    fn s_type(&self) -> StructureType {
7761        self.s_type
7762    }
7763
7764    #[inline]
7765    fn next(&self) -> *const c_void {
7766        self.next
7767    }
7768}
7769
7770unsafe impl OutputChainStruct for PhysicalDeviceDescriptorBufferTensorPropertiesARM {
7771    #[inline]
7772    fn next_mut(&self) -> *mut c_void {
7773        self.next
7774    }
7775}
7776
7777unsafe impl InputChainStruct for PhysicalDeviceDescriptorIndexingFeatures {
7778    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES;
7779
7780    #[inline]
7781    fn s_type(&self) -> StructureType {
7782        self.s_type
7783    }
7784
7785    #[inline]
7786    fn next(&self) -> *const c_void {
7787        self.next
7788    }
7789}
7790
7791unsafe impl OutputChainStruct for PhysicalDeviceDescriptorIndexingFeatures {
7792    #[inline]
7793    fn next_mut(&self) -> *mut c_void {
7794        self.next
7795    }
7796}
7797
7798unsafe impl InputChainStruct for PhysicalDeviceDescriptorIndexingProperties {
7799    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES;
7800
7801    #[inline]
7802    fn s_type(&self) -> StructureType {
7803        self.s_type
7804    }
7805
7806    #[inline]
7807    fn next(&self) -> *const c_void {
7808        self.next
7809    }
7810}
7811
7812unsafe impl OutputChainStruct for PhysicalDeviceDescriptorIndexingProperties {
7813    #[inline]
7814    fn next_mut(&self) -> *mut c_void {
7815        self.next
7816    }
7817}
7818
7819unsafe impl InputChainStruct for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
7820    const TYPE: StructureType =
7821        StructureType::PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV;
7822
7823    #[inline]
7824    fn s_type(&self) -> StructureType {
7825        self.s_type
7826    }
7827
7828    #[inline]
7829    fn next(&self) -> *const c_void {
7830        self.next
7831    }
7832}
7833
7834unsafe impl OutputChainStruct for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
7835    #[inline]
7836    fn next_mut(&self) -> *mut c_void {
7837        self.next
7838    }
7839}
7840
7841unsafe impl InputChainStruct for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {
7842    const TYPE: StructureType =
7843        StructureType::PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE;
7844
7845    #[inline]
7846    fn s_type(&self) -> StructureType {
7847        self.s_type
7848    }
7849
7850    #[inline]
7851    fn next(&self) -> *const c_void {
7852        self.next
7853    }
7854}
7855
7856unsafe impl OutputChainStruct for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {
7857    #[inline]
7858    fn next_mut(&self) -> *mut c_void {
7859        self.next
7860    }
7861}
7862
7863unsafe impl InputChainStruct for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {
7864    const TYPE: StructureType =
7865        StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV;
7866
7867    #[inline]
7868    fn s_type(&self) -> StructureType {
7869        self.s_type
7870    }
7871
7872    #[inline]
7873    fn next(&self) -> *const c_void {
7874        self.next
7875    }
7876}
7877
7878unsafe impl OutputChainStruct for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {
7879    #[inline]
7880    fn next_mut(&self) -> *mut c_void {
7881        self.next
7882    }
7883}
7884
7885unsafe impl InputChainStruct for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {
7886    const TYPE: StructureType =
7887        StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT;
7888
7889    #[inline]
7890    fn s_type(&self) -> StructureType {
7891        self.s_type
7892    }
7893
7894    #[inline]
7895    fn next(&self) -> *const c_void {
7896        self.next
7897    }
7898}
7899
7900unsafe impl OutputChainStruct for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {
7901    #[inline]
7902    fn next_mut(&self) -> *mut c_void {
7903        self.next
7904    }
7905}
7906
7907unsafe impl InputChainStruct for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
7908    const TYPE: StructureType =
7909        StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV;
7910
7911    #[inline]
7912    fn s_type(&self) -> StructureType {
7913        self.s_type
7914    }
7915
7916    #[inline]
7917    fn next(&self) -> *const c_void {
7918        self.next
7919    }
7920}
7921
7922unsafe impl OutputChainStruct for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
7923    #[inline]
7924    fn next_mut(&self) -> *mut c_void {
7925        self.next
7926    }
7927}
7928
7929unsafe impl InputChainStruct for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {
7930    const TYPE: StructureType =
7931        StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT;
7932
7933    #[inline]
7934    fn s_type(&self) -> StructureType {
7935        self.s_type
7936    }
7937
7938    #[inline]
7939    fn next(&self) -> *const c_void {
7940        self.next
7941    }
7942}
7943
7944unsafe impl OutputChainStruct for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {
7945    #[inline]
7946    fn next_mut(&self) -> *mut c_void {
7947        self.next
7948    }
7949}
7950
7951unsafe impl InputChainStruct for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
7952    const TYPE: StructureType =
7953        StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV;
7954
7955    #[inline]
7956    fn s_type(&self) -> StructureType {
7957        self.s_type
7958    }
7959
7960    #[inline]
7961    fn next(&self) -> *const c_void {
7962        self.next
7963    }
7964}
7965
7966unsafe impl OutputChainStruct for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
7967    #[inline]
7968    fn next_mut(&self) -> *mut c_void {
7969        self.next
7970    }
7971}
7972
7973unsafe impl InputChainStruct for PhysicalDeviceDeviceMemoryReportFeaturesEXT {
7974    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT;
7975
7976    #[inline]
7977    fn s_type(&self) -> StructureType {
7978        self.s_type
7979    }
7980
7981    #[inline]
7982    fn next(&self) -> *const c_void {
7983        self.next
7984    }
7985}
7986
7987unsafe impl OutputChainStruct for PhysicalDeviceDeviceMemoryReportFeaturesEXT {
7988    #[inline]
7989    fn next_mut(&self) -> *mut c_void {
7990        self.next
7991    }
7992}
7993
7994unsafe impl InputChainStruct for PhysicalDeviceDiagnosticsConfigFeaturesNV {
7995    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV;
7996
7997    #[inline]
7998    fn s_type(&self) -> StructureType {
7999        self.s_type
8000    }
8001
8002    #[inline]
8003    fn next(&self) -> *const c_void {
8004        self.next
8005    }
8006}
8007
8008unsafe impl OutputChainStruct for PhysicalDeviceDiagnosticsConfigFeaturesNV {
8009    #[inline]
8010    fn next_mut(&self) -> *mut c_void {
8011        self.next
8012    }
8013}
8014
8015unsafe impl InputChainStruct for PhysicalDeviceDiscardRectanglePropertiesEXT {
8016    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT;
8017
8018    #[inline]
8019    fn s_type(&self) -> StructureType {
8020        self.s_type
8021    }
8022
8023    #[inline]
8024    fn next(&self) -> *const c_void {
8025        self.next
8026    }
8027}
8028
8029unsafe impl OutputChainStruct for PhysicalDeviceDiscardRectanglePropertiesEXT {
8030    #[inline]
8031    fn next_mut(&self) -> *mut c_void {
8032        self.next
8033    }
8034}
8035
8036unsafe impl InputChainStruct for PhysicalDeviceDisplacementMicromapFeaturesNV {
8037    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV;
8038
8039    #[inline]
8040    fn s_type(&self) -> StructureType {
8041        self.s_type
8042    }
8043
8044    #[inline]
8045    fn next(&self) -> *const c_void {
8046        self.next
8047    }
8048}
8049
8050unsafe impl OutputChainStruct for PhysicalDeviceDisplacementMicromapFeaturesNV {
8051    #[inline]
8052    fn next_mut(&self) -> *mut c_void {
8053        self.next
8054    }
8055}
8056
8057unsafe impl InputChainStruct for PhysicalDeviceDisplacementMicromapPropertiesNV {
8058    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV;
8059
8060    #[inline]
8061    fn s_type(&self) -> StructureType {
8062        self.s_type
8063    }
8064
8065    #[inline]
8066    fn next(&self) -> *const c_void {
8067        self.next
8068    }
8069}
8070
8071unsafe impl OutputChainStruct for PhysicalDeviceDisplacementMicromapPropertiesNV {
8072    #[inline]
8073    fn next_mut(&self) -> *mut c_void {
8074        self.next
8075    }
8076}
8077
8078unsafe impl InputChainStruct for PhysicalDeviceDriverProperties {
8079    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DRIVER_PROPERTIES;
8080
8081    #[inline]
8082    fn s_type(&self) -> StructureType {
8083        self.s_type
8084    }
8085
8086    #[inline]
8087    fn next(&self) -> *const c_void {
8088        self.next
8089    }
8090}
8091
8092unsafe impl OutputChainStruct for PhysicalDeviceDriverProperties {
8093    #[inline]
8094    fn next_mut(&self) -> *mut c_void {
8095        self.next
8096    }
8097}
8098
8099unsafe impl InputChainStruct for PhysicalDeviceDrmPropertiesEXT {
8100    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DRM_PROPERTIES_EXT;
8101
8102    #[inline]
8103    fn s_type(&self) -> StructureType {
8104        self.s_type
8105    }
8106
8107    #[inline]
8108    fn next(&self) -> *const c_void {
8109        self.next
8110    }
8111}
8112
8113unsafe impl OutputChainStruct for PhysicalDeviceDrmPropertiesEXT {
8114    #[inline]
8115    fn next_mut(&self) -> *mut c_void {
8116        self.next
8117    }
8118}
8119
8120unsafe impl InputChainStruct for PhysicalDeviceDynamicRenderingFeatures {
8121    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES;
8122
8123    #[inline]
8124    fn s_type(&self) -> StructureType {
8125        self.s_type
8126    }
8127
8128    #[inline]
8129    fn next(&self) -> *const c_void {
8130        self.next
8131    }
8132}
8133
8134unsafe impl OutputChainStruct for PhysicalDeviceDynamicRenderingFeatures {
8135    #[inline]
8136    fn next_mut(&self) -> *mut c_void {
8137        self.next
8138    }
8139}
8140
8141unsafe impl InputChainStruct for PhysicalDeviceDynamicRenderingLocalReadFeatures {
8142    const TYPE: StructureType =
8143        StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES;
8144
8145    #[inline]
8146    fn s_type(&self) -> StructureType {
8147        self.s_type
8148    }
8149
8150    #[inline]
8151    fn next(&self) -> *const c_void {
8152        self.next
8153    }
8154}
8155
8156unsafe impl OutputChainStruct for PhysicalDeviceDynamicRenderingLocalReadFeatures {
8157    #[inline]
8158    fn next_mut(&self) -> *mut c_void {
8159        self.next
8160    }
8161}
8162
8163unsafe impl InputChainStruct for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
8164    const TYPE: StructureType =
8165        StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT;
8166
8167    #[inline]
8168    fn s_type(&self) -> StructureType {
8169        self.s_type
8170    }
8171
8172    #[inline]
8173    fn next(&self) -> *const c_void {
8174        self.next
8175    }
8176}
8177
8178unsafe impl OutputChainStruct for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
8179    #[inline]
8180    fn next_mut(&self) -> *mut c_void {
8181        self.next
8182    }
8183}
8184
8185unsafe impl InputChainStruct for PhysicalDeviceExclusiveScissorFeaturesNV {
8186    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV;
8187
8188    #[inline]
8189    fn s_type(&self) -> StructureType {
8190        self.s_type
8191    }
8192
8193    #[inline]
8194    fn next(&self) -> *const c_void {
8195        self.next
8196    }
8197}
8198
8199unsafe impl OutputChainStruct for PhysicalDeviceExclusiveScissorFeaturesNV {
8200    #[inline]
8201    fn next_mut(&self) -> *mut c_void {
8202        self.next
8203    }
8204}
8205
8206unsafe impl InputChainStruct for PhysicalDeviceExtendedDynamicState2FeaturesEXT {
8207    const TYPE: StructureType =
8208        StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT;
8209
8210    #[inline]
8211    fn s_type(&self) -> StructureType {
8212        self.s_type
8213    }
8214
8215    #[inline]
8216    fn next(&self) -> *const c_void {
8217        self.next
8218    }
8219}
8220
8221unsafe impl OutputChainStruct for PhysicalDeviceExtendedDynamicState2FeaturesEXT {
8222    #[inline]
8223    fn next_mut(&self) -> *mut c_void {
8224        self.next
8225    }
8226}
8227
8228unsafe impl InputChainStruct for PhysicalDeviceExtendedDynamicState3FeaturesEXT {
8229    const TYPE: StructureType =
8230        StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT;
8231
8232    #[inline]
8233    fn s_type(&self) -> StructureType {
8234        self.s_type
8235    }
8236
8237    #[inline]
8238    fn next(&self) -> *const c_void {
8239        self.next
8240    }
8241}
8242
8243unsafe impl OutputChainStruct for PhysicalDeviceExtendedDynamicState3FeaturesEXT {
8244    #[inline]
8245    fn next_mut(&self) -> *mut c_void {
8246        self.next
8247    }
8248}
8249
8250unsafe impl InputChainStruct for PhysicalDeviceExtendedDynamicState3PropertiesEXT {
8251    const TYPE: StructureType =
8252        StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT;
8253
8254    #[inline]
8255    fn s_type(&self) -> StructureType {
8256        self.s_type
8257    }
8258
8259    #[inline]
8260    fn next(&self) -> *const c_void {
8261        self.next
8262    }
8263}
8264
8265unsafe impl OutputChainStruct for PhysicalDeviceExtendedDynamicState3PropertiesEXT {
8266    #[inline]
8267    fn next_mut(&self) -> *mut c_void {
8268        self.next
8269    }
8270}
8271
8272unsafe impl InputChainStruct for PhysicalDeviceExtendedDynamicStateFeaturesEXT {
8273    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT;
8274
8275    #[inline]
8276    fn s_type(&self) -> StructureType {
8277        self.s_type
8278    }
8279
8280    #[inline]
8281    fn next(&self) -> *const c_void {
8282        self.next
8283    }
8284}
8285
8286unsafe impl OutputChainStruct for PhysicalDeviceExtendedDynamicStateFeaturesEXT {
8287    #[inline]
8288    fn next_mut(&self) -> *mut c_void {
8289        self.next
8290    }
8291}
8292
8293unsafe impl InputChainStruct for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
8294    const TYPE: StructureType =
8295        StructureType::PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV;
8296
8297    #[inline]
8298    fn s_type(&self) -> StructureType {
8299        self.s_type
8300    }
8301
8302    #[inline]
8303    fn next(&self) -> *const c_void {
8304        self.next
8305    }
8306}
8307
8308unsafe impl OutputChainStruct for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
8309    #[inline]
8310    fn next_mut(&self) -> *mut c_void {
8311        self.next
8312    }
8313}
8314
8315unsafe impl InputChainStruct for PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {
8316    const TYPE: StructureType =
8317        StructureType::PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV;
8318
8319    #[inline]
8320    fn s_type(&self) -> StructureType {
8321        self.s_type
8322    }
8323
8324    #[inline]
8325    fn next(&self) -> *const c_void {
8326        self.next
8327    }
8328}
8329
8330unsafe impl OutputChainStruct for PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {
8331    #[inline]
8332    fn next_mut(&self) -> *mut c_void {
8333        self.next
8334    }
8335}
8336
8337unsafe impl InputChainStruct for PhysicalDeviceExternalBufferInfo {
8338    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO;
8339
8340    #[inline]
8341    fn s_type(&self) -> StructureType {
8342        self.s_type
8343    }
8344
8345    #[inline]
8346    fn next(&self) -> *const c_void {
8347        self.next
8348    }
8349}
8350
8351unsafe impl InputChainStruct for PhysicalDeviceExternalComputeQueuePropertiesNV {
8352    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV;
8353
8354    #[inline]
8355    fn s_type(&self) -> StructureType {
8356        self.s_type
8357    }
8358
8359    #[inline]
8360    fn next(&self) -> *const c_void {
8361        self.next
8362    }
8363}
8364
8365unsafe impl OutputChainStruct for PhysicalDeviceExternalComputeQueuePropertiesNV {
8366    #[inline]
8367    fn next_mut(&self) -> *mut c_void {
8368        self.next
8369    }
8370}
8371
8372unsafe impl InputChainStruct for PhysicalDeviceExternalFenceInfo {
8373    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO;
8374
8375    #[inline]
8376    fn s_type(&self) -> StructureType {
8377        self.s_type
8378    }
8379
8380    #[inline]
8381    fn next(&self) -> *const c_void {
8382        self.next
8383    }
8384}
8385
8386unsafe impl InputChainStruct for PhysicalDeviceExternalFormatResolveFeaturesANDROID {
8387    const TYPE: StructureType =
8388        StructureType::PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID;
8389
8390    #[inline]
8391    fn s_type(&self) -> StructureType {
8392        self.s_type
8393    }
8394
8395    #[inline]
8396    fn next(&self) -> *const c_void {
8397        self.next
8398    }
8399}
8400
8401unsafe impl OutputChainStruct for PhysicalDeviceExternalFormatResolveFeaturesANDROID {
8402    #[inline]
8403    fn next_mut(&self) -> *mut c_void {
8404        self.next
8405    }
8406}
8407
8408unsafe impl InputChainStruct for PhysicalDeviceExternalFormatResolvePropertiesANDROID {
8409    const TYPE: StructureType =
8410        StructureType::PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID;
8411
8412    #[inline]
8413    fn s_type(&self) -> StructureType {
8414        self.s_type
8415    }
8416
8417    #[inline]
8418    fn next(&self) -> *const c_void {
8419        self.next
8420    }
8421}
8422
8423unsafe impl OutputChainStruct for PhysicalDeviceExternalFormatResolvePropertiesANDROID {
8424    #[inline]
8425    fn next_mut(&self) -> *mut c_void {
8426        self.next
8427    }
8428}
8429
8430unsafe impl InputChainStruct for PhysicalDeviceExternalImageFormatInfo {
8431    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO;
8432
8433    #[inline]
8434    fn s_type(&self) -> StructureType {
8435        self.s_type
8436    }
8437
8438    #[inline]
8439    fn next(&self) -> *const c_void {
8440        self.next
8441    }
8442}
8443
8444unsafe impl InputChainStruct for PhysicalDeviceExternalMemoryHostPropertiesEXT {
8445    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT;
8446
8447    #[inline]
8448    fn s_type(&self) -> StructureType {
8449        self.s_type
8450    }
8451
8452    #[inline]
8453    fn next(&self) -> *const c_void {
8454        self.next
8455    }
8456}
8457
8458unsafe impl OutputChainStruct for PhysicalDeviceExternalMemoryHostPropertiesEXT {
8459    #[inline]
8460    fn next_mut(&self) -> *mut c_void {
8461        self.next
8462    }
8463}
8464
8465unsafe impl InputChainStruct for PhysicalDeviceExternalMemoryRDMAFeaturesNV {
8466    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV;
8467
8468    #[inline]
8469    fn s_type(&self) -> StructureType {
8470        self.s_type
8471    }
8472
8473    #[inline]
8474    fn next(&self) -> *const c_void {
8475        self.next
8476    }
8477}
8478
8479unsafe impl OutputChainStruct for PhysicalDeviceExternalMemoryRDMAFeaturesNV {
8480    #[inline]
8481    fn next_mut(&self) -> *mut c_void {
8482        self.next
8483    }
8484}
8485
8486unsafe impl InputChainStruct for PhysicalDeviceExternalMemorySciBufFeaturesNV {
8487    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV;
8488
8489    #[inline]
8490    fn s_type(&self) -> StructureType {
8491        self.s_type
8492    }
8493
8494    #[inline]
8495    fn next(&self) -> *const c_void {
8496        self.next
8497    }
8498}
8499
8500unsafe impl OutputChainStruct for PhysicalDeviceExternalMemorySciBufFeaturesNV {
8501    #[inline]
8502    fn next_mut(&self) -> *mut c_void {
8503        self.next
8504    }
8505}
8506
8507unsafe impl InputChainStruct for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
8508    const TYPE: StructureType =
8509        StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX;
8510
8511    #[inline]
8512    fn s_type(&self) -> StructureType {
8513        self.s_type
8514    }
8515
8516    #[inline]
8517    fn next(&self) -> *const c_void {
8518        self.next
8519    }
8520}
8521
8522unsafe impl OutputChainStruct for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
8523    #[inline]
8524    fn next_mut(&self) -> *mut c_void {
8525        self.next
8526    }
8527}
8528
8529unsafe impl InputChainStruct for PhysicalDeviceExternalSciSync2FeaturesNV {
8530    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV;
8531
8532    #[inline]
8533    fn s_type(&self) -> StructureType {
8534        self.s_type
8535    }
8536
8537    #[inline]
8538    fn next(&self) -> *const c_void {
8539        self.next
8540    }
8541}
8542
8543unsafe impl OutputChainStruct for PhysicalDeviceExternalSciSync2FeaturesNV {
8544    #[inline]
8545    fn next_mut(&self) -> *mut c_void {
8546        self.next
8547    }
8548}
8549
8550unsafe impl InputChainStruct for PhysicalDeviceExternalSciSyncFeaturesNV {
8551    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_FEATURES_NV;
8552
8553    #[inline]
8554    fn s_type(&self) -> StructureType {
8555        self.s_type
8556    }
8557
8558    #[inline]
8559    fn next(&self) -> *const c_void {
8560        self.next
8561    }
8562}
8563
8564unsafe impl OutputChainStruct for PhysicalDeviceExternalSciSyncFeaturesNV {
8565    #[inline]
8566    fn next_mut(&self) -> *mut c_void {
8567        self.next
8568    }
8569}
8570
8571unsafe impl InputChainStruct for PhysicalDeviceExternalSemaphoreInfo {
8572    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO;
8573
8574    #[inline]
8575    fn s_type(&self) -> StructureType {
8576        self.s_type
8577    }
8578
8579    #[inline]
8580    fn next(&self) -> *const c_void {
8581        self.next
8582    }
8583}
8584
8585unsafe impl InputChainStruct for PhysicalDeviceExternalTensorInfoARM {
8586    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM;
8587
8588    #[inline]
8589    fn s_type(&self) -> StructureType {
8590        self.s_type
8591    }
8592
8593    #[inline]
8594    fn next(&self) -> *const c_void {
8595        self.next
8596    }
8597}
8598
8599unsafe impl InputChainStruct for PhysicalDeviceFaultFeaturesEXT {
8600    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FAULT_FEATURES_EXT;
8601
8602    #[inline]
8603    fn s_type(&self) -> StructureType {
8604        self.s_type
8605    }
8606
8607    #[inline]
8608    fn next(&self) -> *const c_void {
8609        self.next
8610    }
8611}
8612
8613unsafe impl OutputChainStruct for PhysicalDeviceFaultFeaturesEXT {
8614    #[inline]
8615    fn next_mut(&self) -> *mut c_void {
8616        self.next
8617    }
8618}
8619
8620unsafe impl InputChainStruct for PhysicalDeviceFeatures2 {
8621    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FEATURES_2;
8622
8623    #[inline]
8624    fn s_type(&self) -> StructureType {
8625        self.s_type
8626    }
8627
8628    #[inline]
8629    fn next(&self) -> *const c_void {
8630        self.next
8631    }
8632}
8633
8634unsafe impl OutputChainStruct for PhysicalDeviceFeatures2 {
8635    #[inline]
8636    fn next_mut(&self) -> *mut c_void {
8637        self.next
8638    }
8639}
8640
8641unsafe impl InputChainStruct for PhysicalDeviceFloatControlsProperties {
8642    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES;
8643
8644    #[inline]
8645    fn s_type(&self) -> StructureType {
8646        self.s_type
8647    }
8648
8649    #[inline]
8650    fn next(&self) -> *const c_void {
8651        self.next
8652    }
8653}
8654
8655unsafe impl OutputChainStruct for PhysicalDeviceFloatControlsProperties {
8656    #[inline]
8657    fn next_mut(&self) -> *mut c_void {
8658        self.next
8659    }
8660}
8661
8662unsafe impl InputChainStruct for PhysicalDeviceFormatPackFeaturesARM {
8663    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM;
8664
8665    #[inline]
8666    fn s_type(&self) -> StructureType {
8667        self.s_type
8668    }
8669
8670    #[inline]
8671    fn next(&self) -> *const c_void {
8672        self.next
8673    }
8674}
8675
8676unsafe impl OutputChainStruct for PhysicalDeviceFormatPackFeaturesARM {
8677    #[inline]
8678    fn next_mut(&self) -> *mut c_void {
8679        self.next
8680    }
8681}
8682
8683unsafe impl InputChainStruct for PhysicalDeviceFragmentDensityMap2FeaturesEXT {
8684    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT;
8685
8686    #[inline]
8687    fn s_type(&self) -> StructureType {
8688        self.s_type
8689    }
8690
8691    #[inline]
8692    fn next(&self) -> *const c_void {
8693        self.next
8694    }
8695}
8696
8697unsafe impl OutputChainStruct for PhysicalDeviceFragmentDensityMap2FeaturesEXT {
8698    #[inline]
8699    fn next_mut(&self) -> *mut c_void {
8700        self.next
8701    }
8702}
8703
8704unsafe impl InputChainStruct for PhysicalDeviceFragmentDensityMap2PropertiesEXT {
8705    const TYPE: StructureType =
8706        StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT;
8707
8708    #[inline]
8709    fn s_type(&self) -> StructureType {
8710        self.s_type
8711    }
8712
8713    #[inline]
8714    fn next(&self) -> *const c_void {
8715        self.next
8716    }
8717}
8718
8719unsafe impl OutputChainStruct for PhysicalDeviceFragmentDensityMap2PropertiesEXT {
8720    #[inline]
8721    fn next_mut(&self) -> *mut c_void {
8722        self.next
8723    }
8724}
8725
8726unsafe impl InputChainStruct for PhysicalDeviceFragmentDensityMapFeaturesEXT {
8727    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT;
8728
8729    #[inline]
8730    fn s_type(&self) -> StructureType {
8731        self.s_type
8732    }
8733
8734    #[inline]
8735    fn next(&self) -> *const c_void {
8736        self.next
8737    }
8738}
8739
8740unsafe impl OutputChainStruct for PhysicalDeviceFragmentDensityMapFeaturesEXT {
8741    #[inline]
8742    fn next_mut(&self) -> *mut c_void {
8743        self.next
8744    }
8745}
8746
8747unsafe impl InputChainStruct for PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {
8748    const TYPE: StructureType =
8749        StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE;
8750
8751    #[inline]
8752    fn s_type(&self) -> StructureType {
8753        self.s_type
8754    }
8755
8756    #[inline]
8757    fn next(&self) -> *const c_void {
8758        self.next
8759    }
8760}
8761
8762unsafe impl OutputChainStruct for PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {
8763    #[inline]
8764    fn next_mut(&self) -> *mut c_void {
8765        self.next
8766    }
8767}
8768
8769unsafe impl InputChainStruct for PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {
8770    const TYPE: StructureType =
8771        StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE;
8772
8773    #[inline]
8774    fn s_type(&self) -> StructureType {
8775        self.s_type
8776    }
8777
8778    #[inline]
8779    fn next(&self) -> *const c_void {
8780        self.next
8781    }
8782}
8783
8784unsafe impl OutputChainStruct for PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {
8785    #[inline]
8786    fn next_mut(&self) -> *mut c_void {
8787        self.next
8788    }
8789}
8790
8791unsafe impl InputChainStruct for PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {
8792    const TYPE: StructureType =
8793        StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT;
8794
8795    #[inline]
8796    fn s_type(&self) -> StructureType {
8797        self.s_type
8798    }
8799
8800    #[inline]
8801    fn next(&self) -> *const c_void {
8802        self.next
8803    }
8804}
8805
8806unsafe impl OutputChainStruct for PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {
8807    #[inline]
8808    fn next_mut(&self) -> *mut c_void {
8809        self.next
8810    }
8811}
8812
8813unsafe impl InputChainStruct for PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {
8814    const TYPE: StructureType =
8815        StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT;
8816
8817    #[inline]
8818    fn s_type(&self) -> StructureType {
8819        self.s_type
8820    }
8821
8822    #[inline]
8823    fn next(&self) -> *const c_void {
8824        self.next
8825    }
8826}
8827
8828unsafe impl OutputChainStruct for PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {
8829    #[inline]
8830    fn next_mut(&self) -> *mut c_void {
8831        self.next
8832    }
8833}
8834
8835unsafe impl InputChainStruct for PhysicalDeviceFragmentDensityMapPropertiesEXT {
8836    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT;
8837
8838    #[inline]
8839    fn s_type(&self) -> StructureType {
8840        self.s_type
8841    }
8842
8843    #[inline]
8844    fn next(&self) -> *const c_void {
8845        self.next
8846    }
8847}
8848
8849unsafe impl OutputChainStruct for PhysicalDeviceFragmentDensityMapPropertiesEXT {
8850    #[inline]
8851    fn next_mut(&self) -> *mut c_void {
8852        self.next
8853    }
8854}
8855
8856unsafe impl InputChainStruct for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {
8857    const TYPE: StructureType =
8858        StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR;
8859
8860    #[inline]
8861    fn s_type(&self) -> StructureType {
8862        self.s_type
8863    }
8864
8865    #[inline]
8866    fn next(&self) -> *const c_void {
8867        self.next
8868    }
8869}
8870
8871unsafe impl OutputChainStruct for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {
8872    #[inline]
8873    fn next_mut(&self) -> *mut c_void {
8874        self.next
8875    }
8876}
8877
8878unsafe impl InputChainStruct for PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {
8879    const TYPE: StructureType =
8880        StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR;
8881
8882    #[inline]
8883    fn s_type(&self) -> StructureType {
8884        self.s_type
8885    }
8886
8887    #[inline]
8888    fn next(&self) -> *const c_void {
8889        self.next
8890    }
8891}
8892
8893unsafe impl OutputChainStruct for PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {
8894    #[inline]
8895    fn next_mut(&self) -> *mut c_void {
8896        self.next
8897    }
8898}
8899
8900unsafe impl InputChainStruct for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
8901    const TYPE: StructureType =
8902        StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT;
8903
8904    #[inline]
8905    fn s_type(&self) -> StructureType {
8906        self.s_type
8907    }
8908
8909    #[inline]
8910    fn next(&self) -> *const c_void {
8911        self.next
8912    }
8913}
8914
8915unsafe impl OutputChainStruct for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
8916    #[inline]
8917    fn next_mut(&self) -> *mut c_void {
8918        self.next
8919    }
8920}
8921
8922unsafe impl InputChainStruct for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
8923    const TYPE: StructureType =
8924        StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV;
8925
8926    #[inline]
8927    fn s_type(&self) -> StructureType {
8928        self.s_type
8929    }
8930
8931    #[inline]
8932    fn next(&self) -> *const c_void {
8933        self.next
8934    }
8935}
8936
8937unsafe impl OutputChainStruct for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
8938    #[inline]
8939    fn next_mut(&self) -> *mut c_void {
8940        self.next
8941    }
8942}
8943
8944unsafe impl InputChainStruct for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
8945    const TYPE: StructureType =
8946        StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV;
8947
8948    #[inline]
8949    fn s_type(&self) -> StructureType {
8950        self.s_type
8951    }
8952
8953    #[inline]
8954    fn next(&self) -> *const c_void {
8955        self.next
8956    }
8957}
8958
8959unsafe impl OutputChainStruct for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
8960    #[inline]
8961    fn next_mut(&self) -> *mut c_void {
8962        self.next
8963    }
8964}
8965
8966unsafe impl InputChainStruct for PhysicalDeviceFragmentShadingRateFeaturesKHR {
8967    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR;
8968
8969    #[inline]
8970    fn s_type(&self) -> StructureType {
8971        self.s_type
8972    }
8973
8974    #[inline]
8975    fn next(&self) -> *const c_void {
8976        self.next
8977    }
8978}
8979
8980unsafe impl OutputChainStruct for PhysicalDeviceFragmentShadingRateFeaturesKHR {
8981    #[inline]
8982    fn next_mut(&self) -> *mut c_void {
8983        self.next
8984    }
8985}
8986
8987unsafe impl InputChainStruct for PhysicalDeviceFragmentShadingRateKHR {
8988    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR;
8989
8990    #[inline]
8991    fn s_type(&self) -> StructureType {
8992        self.s_type
8993    }
8994
8995    #[inline]
8996    fn next(&self) -> *const c_void {
8997        self.next
8998    }
8999}
9000
9001unsafe impl OutputChainStruct for PhysicalDeviceFragmentShadingRateKHR {
9002    #[inline]
9003    fn next_mut(&self) -> *mut c_void {
9004        self.next
9005    }
9006}
9007
9008unsafe impl InputChainStruct for PhysicalDeviceFragmentShadingRatePropertiesKHR {
9009    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR;
9010
9011    #[inline]
9012    fn s_type(&self) -> StructureType {
9013        self.s_type
9014    }
9015
9016    #[inline]
9017    fn next(&self) -> *const c_void {
9018        self.next
9019    }
9020}
9021
9022unsafe impl OutputChainStruct for PhysicalDeviceFragmentShadingRatePropertiesKHR {
9023    #[inline]
9024    fn next_mut(&self) -> *mut c_void {
9025        self.next
9026    }
9027}
9028
9029unsafe impl InputChainStruct for PhysicalDeviceFrameBoundaryFeaturesEXT {
9030    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT;
9031
9032    #[inline]
9033    fn s_type(&self) -> StructureType {
9034        self.s_type
9035    }
9036
9037    #[inline]
9038    fn next(&self) -> *const c_void {
9039        self.next
9040    }
9041}
9042
9043unsafe impl OutputChainStruct for PhysicalDeviceFrameBoundaryFeaturesEXT {
9044    #[inline]
9045    fn next_mut(&self) -> *mut c_void {
9046        self.next
9047    }
9048}
9049
9050unsafe impl InputChainStruct for PhysicalDeviceGlobalPriorityQueryFeatures {
9051    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES;
9052
9053    #[inline]
9054    fn s_type(&self) -> StructureType {
9055        self.s_type
9056    }
9057
9058    #[inline]
9059    fn next(&self) -> *const c_void {
9060        self.next
9061    }
9062}
9063
9064unsafe impl OutputChainStruct for PhysicalDeviceGlobalPriorityQueryFeatures {
9065    #[inline]
9066    fn next_mut(&self) -> *mut c_void {
9067        self.next
9068    }
9069}
9070
9071unsafe impl InputChainStruct for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
9072    const TYPE: StructureType =
9073        StructureType::PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT;
9074
9075    #[inline]
9076    fn s_type(&self) -> StructureType {
9077        self.s_type
9078    }
9079
9080    #[inline]
9081    fn next(&self) -> *const c_void {
9082        self.next
9083    }
9084}
9085
9086unsafe impl OutputChainStruct for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
9087    #[inline]
9088    fn next_mut(&self) -> *mut c_void {
9089        self.next
9090    }
9091}
9092
9093unsafe impl InputChainStruct for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {
9094    const TYPE: StructureType =
9095        StructureType::PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT;
9096
9097    #[inline]
9098    fn s_type(&self) -> StructureType {
9099        self.s_type
9100    }
9101
9102    #[inline]
9103    fn next(&self) -> *const c_void {
9104        self.next
9105    }
9106}
9107
9108unsafe impl OutputChainStruct for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {
9109    #[inline]
9110    fn next_mut(&self) -> *mut c_void {
9111        self.next
9112    }
9113}
9114
9115unsafe impl InputChainStruct for PhysicalDeviceGroupProperties {
9116    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_GROUP_PROPERTIES;
9117
9118    #[inline]
9119    fn s_type(&self) -> StructureType {
9120        self.s_type
9121    }
9122
9123    #[inline]
9124    fn next(&self) -> *const c_void {
9125        self.next
9126    }
9127}
9128
9129unsafe impl OutputChainStruct for PhysicalDeviceGroupProperties {
9130    #[inline]
9131    fn next_mut(&self) -> *mut c_void {
9132        self.next
9133    }
9134}
9135
9136unsafe impl InputChainStruct for PhysicalDeviceHdrVividFeaturesHUAWEI {
9137    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI;
9138
9139    #[inline]
9140    fn s_type(&self) -> StructureType {
9141        self.s_type
9142    }
9143
9144    #[inline]
9145    fn next(&self) -> *const c_void {
9146        self.next
9147    }
9148}
9149
9150unsafe impl OutputChainStruct for PhysicalDeviceHdrVividFeaturesHUAWEI {
9151    #[inline]
9152    fn next_mut(&self) -> *mut c_void {
9153        self.next
9154    }
9155}
9156
9157unsafe impl InputChainStruct for PhysicalDeviceHostImageCopyFeatures {
9158    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES;
9159
9160    #[inline]
9161    fn s_type(&self) -> StructureType {
9162        self.s_type
9163    }
9164
9165    #[inline]
9166    fn next(&self) -> *const c_void {
9167        self.next
9168    }
9169}
9170
9171unsafe impl OutputChainStruct for PhysicalDeviceHostImageCopyFeatures {
9172    #[inline]
9173    fn next_mut(&self) -> *mut c_void {
9174        self.next
9175    }
9176}
9177
9178unsafe impl InputChainStruct for PhysicalDeviceHostImageCopyProperties {
9179    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES;
9180
9181    #[inline]
9182    fn s_type(&self) -> StructureType {
9183        self.s_type
9184    }
9185
9186    #[inline]
9187    fn next(&self) -> *const c_void {
9188        self.next
9189    }
9190}
9191
9192unsafe impl OutputChainStruct for PhysicalDeviceHostImageCopyProperties {
9193    #[inline]
9194    fn next_mut(&self) -> *mut c_void {
9195        self.next
9196    }
9197}
9198
9199unsafe impl InputChainStruct for PhysicalDeviceHostQueryResetFeatures {
9200    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES;
9201
9202    #[inline]
9203    fn s_type(&self) -> StructureType {
9204        self.s_type
9205    }
9206
9207    #[inline]
9208    fn next(&self) -> *const c_void {
9209        self.next
9210    }
9211}
9212
9213unsafe impl OutputChainStruct for PhysicalDeviceHostQueryResetFeatures {
9214    #[inline]
9215    fn next_mut(&self) -> *mut c_void {
9216        self.next
9217    }
9218}
9219
9220unsafe impl InputChainStruct for PhysicalDeviceIDProperties {
9221    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_ID_PROPERTIES;
9222
9223    #[inline]
9224    fn s_type(&self) -> StructureType {
9225        self.s_type
9226    }
9227
9228    #[inline]
9229    fn next(&self) -> *const c_void {
9230        self.next
9231    }
9232}
9233
9234unsafe impl OutputChainStruct for PhysicalDeviceIDProperties {
9235    #[inline]
9236    fn next_mut(&self) -> *mut c_void {
9237        self.next
9238    }
9239}
9240
9241unsafe impl InputChainStruct for PhysicalDeviceImage2DViewOf3DFeaturesEXT {
9242    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT;
9243
9244    #[inline]
9245    fn s_type(&self) -> StructureType {
9246        self.s_type
9247    }
9248
9249    #[inline]
9250    fn next(&self) -> *const c_void {
9251        self.next
9252    }
9253}
9254
9255unsafe impl OutputChainStruct for PhysicalDeviceImage2DViewOf3DFeaturesEXT {
9256    #[inline]
9257    fn next_mut(&self) -> *mut c_void {
9258        self.next
9259    }
9260}
9261
9262unsafe impl InputChainStruct for PhysicalDeviceImageAlignmentControlFeaturesMESA {
9263    const TYPE: StructureType =
9264        StructureType::PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA;
9265
9266    #[inline]
9267    fn s_type(&self) -> StructureType {
9268        self.s_type
9269    }
9270
9271    #[inline]
9272    fn next(&self) -> *const c_void {
9273        self.next
9274    }
9275}
9276
9277unsafe impl OutputChainStruct for PhysicalDeviceImageAlignmentControlFeaturesMESA {
9278    #[inline]
9279    fn next_mut(&self) -> *mut c_void {
9280        self.next
9281    }
9282}
9283
9284unsafe impl InputChainStruct for PhysicalDeviceImageAlignmentControlPropertiesMESA {
9285    const TYPE: StructureType =
9286        StructureType::PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA;
9287
9288    #[inline]
9289    fn s_type(&self) -> StructureType {
9290        self.s_type
9291    }
9292
9293    #[inline]
9294    fn next(&self) -> *const c_void {
9295        self.next
9296    }
9297}
9298
9299unsafe impl OutputChainStruct for PhysicalDeviceImageAlignmentControlPropertiesMESA {
9300    #[inline]
9301    fn next_mut(&self) -> *mut c_void {
9302        self.next
9303    }
9304}
9305
9306unsafe impl InputChainStruct for PhysicalDeviceImageCompressionControlFeaturesEXT {
9307    const TYPE: StructureType =
9308        StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT;
9309
9310    #[inline]
9311    fn s_type(&self) -> StructureType {
9312        self.s_type
9313    }
9314
9315    #[inline]
9316    fn next(&self) -> *const c_void {
9317        self.next
9318    }
9319}
9320
9321unsafe impl OutputChainStruct for PhysicalDeviceImageCompressionControlFeaturesEXT {
9322    #[inline]
9323    fn next_mut(&self) -> *mut c_void {
9324        self.next
9325    }
9326}
9327
9328unsafe impl InputChainStruct for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
9329    const TYPE: StructureType =
9330        StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT;
9331
9332    #[inline]
9333    fn s_type(&self) -> StructureType {
9334        self.s_type
9335    }
9336
9337    #[inline]
9338    fn next(&self) -> *const c_void {
9339        self.next
9340    }
9341}
9342
9343unsafe impl OutputChainStruct for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
9344    #[inline]
9345    fn next_mut(&self) -> *mut c_void {
9346        self.next
9347    }
9348}
9349
9350unsafe impl InputChainStruct for PhysicalDeviceImageDrmFormatModifierInfoEXT {
9351    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT;
9352
9353    #[inline]
9354    fn s_type(&self) -> StructureType {
9355        self.s_type
9356    }
9357
9358    #[inline]
9359    fn next(&self) -> *const c_void {
9360        self.next
9361    }
9362}
9363
9364unsafe impl InputChainStruct for PhysicalDeviceImageFormatInfo2 {
9365    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2;
9366
9367    #[inline]
9368    fn s_type(&self) -> StructureType {
9369        self.s_type
9370    }
9371
9372    #[inline]
9373    fn next(&self) -> *const c_void {
9374        self.next
9375    }
9376}
9377
9378unsafe impl InputChainStruct for PhysicalDeviceImageProcessing2FeaturesQCOM {
9379    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM;
9380
9381    #[inline]
9382    fn s_type(&self) -> StructureType {
9383        self.s_type
9384    }
9385
9386    #[inline]
9387    fn next(&self) -> *const c_void {
9388        self.next
9389    }
9390}
9391
9392unsafe impl OutputChainStruct for PhysicalDeviceImageProcessing2FeaturesQCOM {
9393    #[inline]
9394    fn next_mut(&self) -> *mut c_void {
9395        self.next
9396    }
9397}
9398
9399unsafe impl InputChainStruct for PhysicalDeviceImageProcessing2PropertiesQCOM {
9400    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM;
9401
9402    #[inline]
9403    fn s_type(&self) -> StructureType {
9404        self.s_type
9405    }
9406
9407    #[inline]
9408    fn next(&self) -> *const c_void {
9409        self.next
9410    }
9411}
9412
9413unsafe impl OutputChainStruct for PhysicalDeviceImageProcessing2PropertiesQCOM {
9414    #[inline]
9415    fn next_mut(&self) -> *mut c_void {
9416        self.next
9417    }
9418}
9419
9420unsafe impl InputChainStruct for PhysicalDeviceImageProcessingFeaturesQCOM {
9421    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM;
9422
9423    #[inline]
9424    fn s_type(&self) -> StructureType {
9425        self.s_type
9426    }
9427
9428    #[inline]
9429    fn next(&self) -> *const c_void {
9430        self.next
9431    }
9432}
9433
9434unsafe impl OutputChainStruct for PhysicalDeviceImageProcessingFeaturesQCOM {
9435    #[inline]
9436    fn next_mut(&self) -> *mut c_void {
9437        self.next
9438    }
9439}
9440
9441unsafe impl InputChainStruct for PhysicalDeviceImageProcessingPropertiesQCOM {
9442    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM;
9443
9444    #[inline]
9445    fn s_type(&self) -> StructureType {
9446        self.s_type
9447    }
9448
9449    #[inline]
9450    fn next(&self) -> *const c_void {
9451        self.next
9452    }
9453}
9454
9455unsafe impl OutputChainStruct for PhysicalDeviceImageProcessingPropertiesQCOM {
9456    #[inline]
9457    fn next_mut(&self) -> *mut c_void {
9458        self.next
9459    }
9460}
9461
9462unsafe impl InputChainStruct for PhysicalDeviceImageRobustnessFeatures {
9463    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES;
9464
9465    #[inline]
9466    fn s_type(&self) -> StructureType {
9467        self.s_type
9468    }
9469
9470    #[inline]
9471    fn next(&self) -> *const c_void {
9472        self.next
9473    }
9474}
9475
9476unsafe impl OutputChainStruct for PhysicalDeviceImageRobustnessFeatures {
9477    #[inline]
9478    fn next_mut(&self) -> *mut c_void {
9479        self.next
9480    }
9481}
9482
9483unsafe impl InputChainStruct for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {
9484    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT;
9485
9486    #[inline]
9487    fn s_type(&self) -> StructureType {
9488        self.s_type
9489    }
9490
9491    #[inline]
9492    fn next(&self) -> *const c_void {
9493        self.next
9494    }
9495}
9496
9497unsafe impl OutputChainStruct for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {
9498    #[inline]
9499    fn next_mut(&self) -> *mut c_void {
9500        self.next
9501    }
9502}
9503
9504unsafe impl InputChainStruct for PhysicalDeviceImageViewImageFormatInfoEXT {
9505    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT;
9506
9507    #[inline]
9508    fn s_type(&self) -> StructureType {
9509        self.s_type
9510    }
9511
9512    #[inline]
9513    fn next(&self) -> *const c_void {
9514        self.next
9515    }
9516}
9517
9518unsafe impl OutputChainStruct for PhysicalDeviceImageViewImageFormatInfoEXT {
9519    #[inline]
9520    fn next_mut(&self) -> *mut c_void {
9521        self.next
9522    }
9523}
9524
9525unsafe impl InputChainStruct for PhysicalDeviceImageViewMinLodFeaturesEXT {
9526    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT;
9527
9528    #[inline]
9529    fn s_type(&self) -> StructureType {
9530        self.s_type
9531    }
9532
9533    #[inline]
9534    fn next(&self) -> *const c_void {
9535        self.next
9536    }
9537}
9538
9539unsafe impl OutputChainStruct for PhysicalDeviceImageViewMinLodFeaturesEXT {
9540    #[inline]
9541    fn next_mut(&self) -> *mut c_void {
9542        self.next
9543    }
9544}
9545
9546unsafe impl InputChainStruct for PhysicalDeviceImagelessFramebufferFeatures {
9547    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES;
9548
9549    #[inline]
9550    fn s_type(&self) -> StructureType {
9551        self.s_type
9552    }
9553
9554    #[inline]
9555    fn next(&self) -> *const c_void {
9556        self.next
9557    }
9558}
9559
9560unsafe impl OutputChainStruct for PhysicalDeviceImagelessFramebufferFeatures {
9561    #[inline]
9562    fn next_mut(&self) -> *mut c_void {
9563        self.next
9564    }
9565}
9566
9567unsafe impl InputChainStruct for PhysicalDeviceIndexTypeUint8Features {
9568    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES;
9569
9570    #[inline]
9571    fn s_type(&self) -> StructureType {
9572        self.s_type
9573    }
9574
9575    #[inline]
9576    fn next(&self) -> *const c_void {
9577        self.next
9578    }
9579}
9580
9581unsafe impl OutputChainStruct for PhysicalDeviceIndexTypeUint8Features {
9582    #[inline]
9583    fn next_mut(&self) -> *mut c_void {
9584        self.next
9585    }
9586}
9587
9588unsafe impl InputChainStruct for PhysicalDeviceInheritedViewportScissorFeaturesNV {
9589    const TYPE: StructureType =
9590        StructureType::PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV;
9591
9592    #[inline]
9593    fn s_type(&self) -> StructureType {
9594        self.s_type
9595    }
9596
9597    #[inline]
9598    fn next(&self) -> *const c_void {
9599        self.next
9600    }
9601}
9602
9603unsafe impl OutputChainStruct for PhysicalDeviceInheritedViewportScissorFeaturesNV {
9604    #[inline]
9605    fn next_mut(&self) -> *mut c_void {
9606        self.next
9607    }
9608}
9609
9610unsafe impl InputChainStruct for PhysicalDeviceInlineUniformBlockFeatures {
9611    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES;
9612
9613    #[inline]
9614    fn s_type(&self) -> StructureType {
9615        self.s_type
9616    }
9617
9618    #[inline]
9619    fn next(&self) -> *const c_void {
9620        self.next
9621    }
9622}
9623
9624unsafe impl OutputChainStruct for PhysicalDeviceInlineUniformBlockFeatures {
9625    #[inline]
9626    fn next_mut(&self) -> *mut c_void {
9627        self.next
9628    }
9629}
9630
9631unsafe impl InputChainStruct for PhysicalDeviceInlineUniformBlockProperties {
9632    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES;
9633
9634    #[inline]
9635    fn s_type(&self) -> StructureType {
9636        self.s_type
9637    }
9638
9639    #[inline]
9640    fn next(&self) -> *const c_void {
9641        self.next
9642    }
9643}
9644
9645unsafe impl OutputChainStruct for PhysicalDeviceInlineUniformBlockProperties {
9646    #[inline]
9647    fn next_mut(&self) -> *mut c_void {
9648        self.next
9649    }
9650}
9651
9652unsafe impl InputChainStruct for PhysicalDeviceInvocationMaskFeaturesHUAWEI {
9653    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI;
9654
9655    #[inline]
9656    fn s_type(&self) -> StructureType {
9657        self.s_type
9658    }
9659
9660    #[inline]
9661    fn next(&self) -> *const c_void {
9662        self.next
9663    }
9664}
9665
9666unsafe impl OutputChainStruct for PhysicalDeviceInvocationMaskFeaturesHUAWEI {
9667    #[inline]
9668    fn next_mut(&self) -> *mut c_void {
9669        self.next
9670    }
9671}
9672
9673unsafe impl InputChainStruct for PhysicalDeviceLayeredApiPropertiesKHR {
9674    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR;
9675
9676    #[inline]
9677    fn s_type(&self) -> StructureType {
9678        self.s_type
9679    }
9680
9681    #[inline]
9682    fn next(&self) -> *const c_void {
9683        self.next
9684    }
9685}
9686
9687unsafe impl OutputChainStruct for PhysicalDeviceLayeredApiPropertiesKHR {
9688    #[inline]
9689    fn next_mut(&self) -> *mut c_void {
9690        self.next
9691    }
9692}
9693
9694unsafe impl InputChainStruct for PhysicalDeviceLayeredApiPropertiesListKHR {
9695    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR;
9696
9697    #[inline]
9698    fn s_type(&self) -> StructureType {
9699        self.s_type
9700    }
9701
9702    #[inline]
9703    fn next(&self) -> *const c_void {
9704        self.next
9705    }
9706}
9707
9708unsafe impl OutputChainStruct for PhysicalDeviceLayeredApiPropertiesListKHR {
9709    #[inline]
9710    fn next_mut(&self) -> *mut c_void {
9711        self.next
9712    }
9713}
9714
9715unsafe impl InputChainStruct for PhysicalDeviceLayeredApiVulkanPropertiesKHR {
9716    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR;
9717
9718    #[inline]
9719    fn s_type(&self) -> StructureType {
9720        self.s_type
9721    }
9722
9723    #[inline]
9724    fn next(&self) -> *const c_void {
9725        self.next
9726    }
9727}
9728
9729unsafe impl OutputChainStruct for PhysicalDeviceLayeredApiVulkanPropertiesKHR {
9730    #[inline]
9731    fn next_mut(&self) -> *mut c_void {
9732        self.next
9733    }
9734}
9735
9736unsafe impl InputChainStruct for PhysicalDeviceLayeredDriverPropertiesMSFT {
9737    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT;
9738
9739    #[inline]
9740    fn s_type(&self) -> StructureType {
9741        self.s_type
9742    }
9743
9744    #[inline]
9745    fn next(&self) -> *const c_void {
9746        self.next
9747    }
9748}
9749
9750unsafe impl OutputChainStruct for PhysicalDeviceLayeredDriverPropertiesMSFT {
9751    #[inline]
9752    fn next_mut(&self) -> *mut c_void {
9753        self.next
9754    }
9755}
9756
9757unsafe impl InputChainStruct for PhysicalDeviceLegacyDitheringFeaturesEXT {
9758    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT;
9759
9760    #[inline]
9761    fn s_type(&self) -> StructureType {
9762        self.s_type
9763    }
9764
9765    #[inline]
9766    fn next(&self) -> *const c_void {
9767        self.next
9768    }
9769}
9770
9771unsafe impl OutputChainStruct for PhysicalDeviceLegacyDitheringFeaturesEXT {
9772    #[inline]
9773    fn next_mut(&self) -> *mut c_void {
9774        self.next
9775    }
9776}
9777
9778unsafe impl InputChainStruct for PhysicalDeviceLegacyVertexAttributesFeaturesEXT {
9779    const TYPE: StructureType =
9780        StructureType::PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT;
9781
9782    #[inline]
9783    fn s_type(&self) -> StructureType {
9784        self.s_type
9785    }
9786
9787    #[inline]
9788    fn next(&self) -> *const c_void {
9789        self.next
9790    }
9791}
9792
9793unsafe impl OutputChainStruct for PhysicalDeviceLegacyVertexAttributesFeaturesEXT {
9794    #[inline]
9795    fn next_mut(&self) -> *mut c_void {
9796        self.next
9797    }
9798}
9799
9800unsafe impl InputChainStruct for PhysicalDeviceLegacyVertexAttributesPropertiesEXT {
9801    const TYPE: StructureType =
9802        StructureType::PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT;
9803
9804    #[inline]
9805    fn s_type(&self) -> StructureType {
9806        self.s_type
9807    }
9808
9809    #[inline]
9810    fn next(&self) -> *const c_void {
9811        self.next
9812    }
9813}
9814
9815unsafe impl OutputChainStruct for PhysicalDeviceLegacyVertexAttributesPropertiesEXT {
9816    #[inline]
9817    fn next_mut(&self) -> *mut c_void {
9818        self.next
9819    }
9820}
9821
9822unsafe impl InputChainStruct for PhysicalDeviceLineRasterizationFeatures {
9823    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES;
9824
9825    #[inline]
9826    fn s_type(&self) -> StructureType {
9827        self.s_type
9828    }
9829
9830    #[inline]
9831    fn next(&self) -> *const c_void {
9832        self.next
9833    }
9834}
9835
9836unsafe impl OutputChainStruct for PhysicalDeviceLineRasterizationFeatures {
9837    #[inline]
9838    fn next_mut(&self) -> *mut c_void {
9839        self.next
9840    }
9841}
9842
9843unsafe impl InputChainStruct for PhysicalDeviceLineRasterizationProperties {
9844    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES;
9845
9846    #[inline]
9847    fn s_type(&self) -> StructureType {
9848        self.s_type
9849    }
9850
9851    #[inline]
9852    fn next(&self) -> *const c_void {
9853        self.next
9854    }
9855}
9856
9857unsafe impl OutputChainStruct for PhysicalDeviceLineRasterizationProperties {
9858    #[inline]
9859    fn next_mut(&self) -> *mut c_void {
9860        self.next
9861    }
9862}
9863
9864unsafe impl InputChainStruct for PhysicalDeviceLinearColorAttachmentFeaturesNV {
9865    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV;
9866
9867    #[inline]
9868    fn s_type(&self) -> StructureType {
9869        self.s_type
9870    }
9871
9872    #[inline]
9873    fn next(&self) -> *const c_void {
9874        self.next
9875    }
9876}
9877
9878unsafe impl OutputChainStruct for PhysicalDeviceLinearColorAttachmentFeaturesNV {
9879    #[inline]
9880    fn next_mut(&self) -> *mut c_void {
9881        self.next
9882    }
9883}
9884
9885unsafe impl InputChainStruct for PhysicalDeviceMaintenance3Properties {
9886    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES;
9887
9888    #[inline]
9889    fn s_type(&self) -> StructureType {
9890        self.s_type
9891    }
9892
9893    #[inline]
9894    fn next(&self) -> *const c_void {
9895        self.next
9896    }
9897}
9898
9899unsafe impl OutputChainStruct for PhysicalDeviceMaintenance3Properties {
9900    #[inline]
9901    fn next_mut(&self) -> *mut c_void {
9902        self.next
9903    }
9904}
9905
9906unsafe impl InputChainStruct for PhysicalDeviceMaintenance4Features {
9907    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES;
9908
9909    #[inline]
9910    fn s_type(&self) -> StructureType {
9911        self.s_type
9912    }
9913
9914    #[inline]
9915    fn next(&self) -> *const c_void {
9916        self.next
9917    }
9918}
9919
9920unsafe impl OutputChainStruct for PhysicalDeviceMaintenance4Features {
9921    #[inline]
9922    fn next_mut(&self) -> *mut c_void {
9923        self.next
9924    }
9925}
9926
9927unsafe impl InputChainStruct for PhysicalDeviceMaintenance4Properties {
9928    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES;
9929
9930    #[inline]
9931    fn s_type(&self) -> StructureType {
9932        self.s_type
9933    }
9934
9935    #[inline]
9936    fn next(&self) -> *const c_void {
9937        self.next
9938    }
9939}
9940
9941unsafe impl OutputChainStruct for PhysicalDeviceMaintenance4Properties {
9942    #[inline]
9943    fn next_mut(&self) -> *mut c_void {
9944        self.next
9945    }
9946}
9947
9948unsafe impl InputChainStruct for PhysicalDeviceMaintenance5Features {
9949    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES;
9950
9951    #[inline]
9952    fn s_type(&self) -> StructureType {
9953        self.s_type
9954    }
9955
9956    #[inline]
9957    fn next(&self) -> *const c_void {
9958        self.next
9959    }
9960}
9961
9962unsafe impl OutputChainStruct for PhysicalDeviceMaintenance5Features {
9963    #[inline]
9964    fn next_mut(&self) -> *mut c_void {
9965        self.next
9966    }
9967}
9968
9969unsafe impl InputChainStruct for PhysicalDeviceMaintenance5Properties {
9970    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES;
9971
9972    #[inline]
9973    fn s_type(&self) -> StructureType {
9974        self.s_type
9975    }
9976
9977    #[inline]
9978    fn next(&self) -> *const c_void {
9979        self.next
9980    }
9981}
9982
9983unsafe impl OutputChainStruct for PhysicalDeviceMaintenance5Properties {
9984    #[inline]
9985    fn next_mut(&self) -> *mut c_void {
9986        self.next
9987    }
9988}
9989
9990unsafe impl InputChainStruct for PhysicalDeviceMaintenance6Features {
9991    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES;
9992
9993    #[inline]
9994    fn s_type(&self) -> StructureType {
9995        self.s_type
9996    }
9997
9998    #[inline]
9999    fn next(&self) -> *const c_void {
10000        self.next
10001    }
10002}
10003
10004unsafe impl OutputChainStruct for PhysicalDeviceMaintenance6Features {
10005    #[inline]
10006    fn next_mut(&self) -> *mut c_void {
10007        self.next
10008    }
10009}
10010
10011unsafe impl InputChainStruct for PhysicalDeviceMaintenance6Properties {
10012    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES;
10013
10014    #[inline]
10015    fn s_type(&self) -> StructureType {
10016        self.s_type
10017    }
10018
10019    #[inline]
10020    fn next(&self) -> *const c_void {
10021        self.next
10022    }
10023}
10024
10025unsafe impl OutputChainStruct for PhysicalDeviceMaintenance6Properties {
10026    #[inline]
10027    fn next_mut(&self) -> *mut c_void {
10028        self.next
10029    }
10030}
10031
10032unsafe impl InputChainStruct for PhysicalDeviceMaintenance7FeaturesKHR {
10033    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR;
10034
10035    #[inline]
10036    fn s_type(&self) -> StructureType {
10037        self.s_type
10038    }
10039
10040    #[inline]
10041    fn next(&self) -> *const c_void {
10042        self.next
10043    }
10044}
10045
10046unsafe impl OutputChainStruct for PhysicalDeviceMaintenance7FeaturesKHR {
10047    #[inline]
10048    fn next_mut(&self) -> *mut c_void {
10049        self.next
10050    }
10051}
10052
10053unsafe impl InputChainStruct for PhysicalDeviceMaintenance7PropertiesKHR {
10054    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR;
10055
10056    #[inline]
10057    fn s_type(&self) -> StructureType {
10058        self.s_type
10059    }
10060
10061    #[inline]
10062    fn next(&self) -> *const c_void {
10063        self.next
10064    }
10065}
10066
10067unsafe impl OutputChainStruct for PhysicalDeviceMaintenance7PropertiesKHR {
10068    #[inline]
10069    fn next_mut(&self) -> *mut c_void {
10070        self.next
10071    }
10072}
10073
10074unsafe impl InputChainStruct for PhysicalDeviceMaintenance8FeaturesKHR {
10075    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR;
10076
10077    #[inline]
10078    fn s_type(&self) -> StructureType {
10079        self.s_type
10080    }
10081
10082    #[inline]
10083    fn next(&self) -> *const c_void {
10084        self.next
10085    }
10086}
10087
10088unsafe impl OutputChainStruct for PhysicalDeviceMaintenance8FeaturesKHR {
10089    #[inline]
10090    fn next_mut(&self) -> *mut c_void {
10091        self.next
10092    }
10093}
10094
10095unsafe impl InputChainStruct for PhysicalDeviceMaintenance9FeaturesKHR {
10096    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR;
10097
10098    #[inline]
10099    fn s_type(&self) -> StructureType {
10100        self.s_type
10101    }
10102
10103    #[inline]
10104    fn next(&self) -> *const c_void {
10105        self.next
10106    }
10107}
10108
10109unsafe impl OutputChainStruct for PhysicalDeviceMaintenance9FeaturesKHR {
10110    #[inline]
10111    fn next_mut(&self) -> *mut c_void {
10112        self.next
10113    }
10114}
10115
10116unsafe impl InputChainStruct for PhysicalDeviceMaintenance9PropertiesKHR {
10117    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR;
10118
10119    #[inline]
10120    fn s_type(&self) -> StructureType {
10121        self.s_type
10122    }
10123
10124    #[inline]
10125    fn next(&self) -> *const c_void {
10126        self.next
10127    }
10128}
10129
10130unsafe impl OutputChainStruct for PhysicalDeviceMaintenance9PropertiesKHR {
10131    #[inline]
10132    fn next_mut(&self) -> *mut c_void {
10133        self.next
10134    }
10135}
10136
10137unsafe impl InputChainStruct for PhysicalDeviceMapMemoryPlacedFeaturesEXT {
10138    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT;
10139
10140    #[inline]
10141    fn s_type(&self) -> StructureType {
10142        self.s_type
10143    }
10144
10145    #[inline]
10146    fn next(&self) -> *const c_void {
10147        self.next
10148    }
10149}
10150
10151unsafe impl OutputChainStruct for PhysicalDeviceMapMemoryPlacedFeaturesEXT {
10152    #[inline]
10153    fn next_mut(&self) -> *mut c_void {
10154        self.next
10155    }
10156}
10157
10158unsafe impl InputChainStruct for PhysicalDeviceMapMemoryPlacedPropertiesEXT {
10159    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT;
10160
10161    #[inline]
10162    fn s_type(&self) -> StructureType {
10163        self.s_type
10164    }
10165
10166    #[inline]
10167    fn next(&self) -> *const c_void {
10168        self.next
10169    }
10170}
10171
10172unsafe impl OutputChainStruct for PhysicalDeviceMapMemoryPlacedPropertiesEXT {
10173    #[inline]
10174    fn next_mut(&self) -> *mut c_void {
10175        self.next
10176    }
10177}
10178
10179unsafe impl InputChainStruct for PhysicalDeviceMemoryBudgetPropertiesEXT {
10180    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT;
10181
10182    #[inline]
10183    fn s_type(&self) -> StructureType {
10184        self.s_type
10185    }
10186
10187    #[inline]
10188    fn next(&self) -> *const c_void {
10189        self.next
10190    }
10191}
10192
10193unsafe impl OutputChainStruct for PhysicalDeviceMemoryBudgetPropertiesEXT {
10194    #[inline]
10195    fn next_mut(&self) -> *mut c_void {
10196        self.next
10197    }
10198}
10199
10200unsafe impl InputChainStruct for PhysicalDeviceMemoryDecompressionFeaturesNV {
10201    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV;
10202
10203    #[inline]
10204    fn s_type(&self) -> StructureType {
10205        self.s_type
10206    }
10207
10208    #[inline]
10209    fn next(&self) -> *const c_void {
10210        self.next
10211    }
10212}
10213
10214unsafe impl OutputChainStruct for PhysicalDeviceMemoryDecompressionFeaturesNV {
10215    #[inline]
10216    fn next_mut(&self) -> *mut c_void {
10217        self.next
10218    }
10219}
10220
10221unsafe impl InputChainStruct for PhysicalDeviceMemoryDecompressionPropertiesNV {
10222    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV;
10223
10224    #[inline]
10225    fn s_type(&self) -> StructureType {
10226        self.s_type
10227    }
10228
10229    #[inline]
10230    fn next(&self) -> *const c_void {
10231        self.next
10232    }
10233}
10234
10235unsafe impl OutputChainStruct for PhysicalDeviceMemoryDecompressionPropertiesNV {
10236    #[inline]
10237    fn next_mut(&self) -> *mut c_void {
10238        self.next
10239    }
10240}
10241
10242unsafe impl InputChainStruct for PhysicalDeviceMemoryPriorityFeaturesEXT {
10243    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT;
10244
10245    #[inline]
10246    fn s_type(&self) -> StructureType {
10247        self.s_type
10248    }
10249
10250    #[inline]
10251    fn next(&self) -> *const c_void {
10252        self.next
10253    }
10254}
10255
10256unsafe impl OutputChainStruct for PhysicalDeviceMemoryPriorityFeaturesEXT {
10257    #[inline]
10258    fn next_mut(&self) -> *mut c_void {
10259        self.next
10260    }
10261}
10262
10263unsafe impl InputChainStruct for PhysicalDeviceMemoryProperties2 {
10264    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MEMORY_PROPERTIES_2;
10265
10266    #[inline]
10267    fn s_type(&self) -> StructureType {
10268        self.s_type
10269    }
10270
10271    #[inline]
10272    fn next(&self) -> *const c_void {
10273        self.next
10274    }
10275}
10276
10277unsafe impl OutputChainStruct for PhysicalDeviceMemoryProperties2 {
10278    #[inline]
10279    fn next_mut(&self) -> *mut c_void {
10280        self.next
10281    }
10282}
10283
10284unsafe impl InputChainStruct for PhysicalDeviceMeshShaderFeaturesEXT {
10285    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT;
10286
10287    #[inline]
10288    fn s_type(&self) -> StructureType {
10289        self.s_type
10290    }
10291
10292    #[inline]
10293    fn next(&self) -> *const c_void {
10294        self.next
10295    }
10296}
10297
10298unsafe impl OutputChainStruct for PhysicalDeviceMeshShaderFeaturesEXT {
10299    #[inline]
10300    fn next_mut(&self) -> *mut c_void {
10301        self.next
10302    }
10303}
10304
10305unsafe impl InputChainStruct for PhysicalDeviceMeshShaderFeaturesNV {
10306    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV;
10307
10308    #[inline]
10309    fn s_type(&self) -> StructureType {
10310        self.s_type
10311    }
10312
10313    #[inline]
10314    fn next(&self) -> *const c_void {
10315        self.next
10316    }
10317}
10318
10319unsafe impl OutputChainStruct for PhysicalDeviceMeshShaderFeaturesNV {
10320    #[inline]
10321    fn next_mut(&self) -> *mut c_void {
10322        self.next
10323    }
10324}
10325
10326unsafe impl InputChainStruct for PhysicalDeviceMeshShaderPropertiesEXT {
10327    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT;
10328
10329    #[inline]
10330    fn s_type(&self) -> StructureType {
10331        self.s_type
10332    }
10333
10334    #[inline]
10335    fn next(&self) -> *const c_void {
10336        self.next
10337    }
10338}
10339
10340unsafe impl OutputChainStruct for PhysicalDeviceMeshShaderPropertiesEXT {
10341    #[inline]
10342    fn next_mut(&self) -> *mut c_void {
10343        self.next
10344    }
10345}
10346
10347unsafe impl InputChainStruct for PhysicalDeviceMeshShaderPropertiesNV {
10348    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV;
10349
10350    #[inline]
10351    fn s_type(&self) -> StructureType {
10352        self.s_type
10353    }
10354
10355    #[inline]
10356    fn next(&self) -> *const c_void {
10357        self.next
10358    }
10359}
10360
10361unsafe impl OutputChainStruct for PhysicalDeviceMeshShaderPropertiesNV {
10362    #[inline]
10363    fn next_mut(&self) -> *mut c_void {
10364        self.next
10365    }
10366}
10367
10368unsafe impl InputChainStruct for PhysicalDeviceMultiDrawFeaturesEXT {
10369    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT;
10370
10371    #[inline]
10372    fn s_type(&self) -> StructureType {
10373        self.s_type
10374    }
10375
10376    #[inline]
10377    fn next(&self) -> *const c_void {
10378        self.next
10379    }
10380}
10381
10382unsafe impl OutputChainStruct for PhysicalDeviceMultiDrawFeaturesEXT {
10383    #[inline]
10384    fn next_mut(&self) -> *mut c_void {
10385        self.next
10386    }
10387}
10388
10389unsafe impl InputChainStruct for PhysicalDeviceMultiDrawPropertiesEXT {
10390    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT;
10391
10392    #[inline]
10393    fn s_type(&self) -> StructureType {
10394        self.s_type
10395    }
10396
10397    #[inline]
10398    fn next(&self) -> *const c_void {
10399        self.next
10400    }
10401}
10402
10403unsafe impl OutputChainStruct for PhysicalDeviceMultiDrawPropertiesEXT {
10404    #[inline]
10405    fn next_mut(&self) -> *mut c_void {
10406        self.next
10407    }
10408}
10409
10410unsafe impl InputChainStruct for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
10411    const TYPE: StructureType =
10412        StructureType::PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT;
10413
10414    #[inline]
10415    fn s_type(&self) -> StructureType {
10416        self.s_type
10417    }
10418
10419    #[inline]
10420    fn next(&self) -> *const c_void {
10421        self.next
10422    }
10423}
10424
10425unsafe impl OutputChainStruct for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
10426    #[inline]
10427    fn next_mut(&self) -> *mut c_void {
10428        self.next
10429    }
10430}
10431
10432unsafe impl InputChainStruct for PhysicalDeviceMultiviewFeatures {
10433    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MULTIVIEW_FEATURES;
10434
10435    #[inline]
10436    fn s_type(&self) -> StructureType {
10437        self.s_type
10438    }
10439
10440    #[inline]
10441    fn next(&self) -> *const c_void {
10442        self.next
10443    }
10444}
10445
10446unsafe impl OutputChainStruct for PhysicalDeviceMultiviewFeatures {
10447    #[inline]
10448    fn next_mut(&self) -> *mut c_void {
10449        self.next
10450    }
10451}
10452
10453unsafe impl InputChainStruct for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
10454    const TYPE: StructureType =
10455        StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX;
10456
10457    #[inline]
10458    fn s_type(&self) -> StructureType {
10459        self.s_type
10460    }
10461
10462    #[inline]
10463    fn next(&self) -> *const c_void {
10464        self.next
10465    }
10466}
10467
10468unsafe impl OutputChainStruct for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
10469    #[inline]
10470    fn next_mut(&self) -> *mut c_void {
10471        self.next
10472    }
10473}
10474
10475unsafe impl InputChainStruct for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
10476    const TYPE: StructureType =
10477        StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM;
10478
10479    #[inline]
10480    fn s_type(&self) -> StructureType {
10481        self.s_type
10482    }
10483
10484    #[inline]
10485    fn next(&self) -> *const c_void {
10486        self.next
10487    }
10488}
10489
10490unsafe impl OutputChainStruct for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
10491    #[inline]
10492    fn next_mut(&self) -> *mut c_void {
10493        self.next
10494    }
10495}
10496
10497unsafe impl InputChainStruct for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
10498    const TYPE: StructureType =
10499        StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM;
10500
10501    #[inline]
10502    fn s_type(&self) -> StructureType {
10503        self.s_type
10504    }
10505
10506    #[inline]
10507    fn next(&self) -> *const c_void {
10508        self.next
10509    }
10510}
10511
10512unsafe impl OutputChainStruct for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
10513    #[inline]
10514    fn next_mut(&self) -> *mut c_void {
10515        self.next
10516    }
10517}
10518
10519unsafe impl InputChainStruct for PhysicalDeviceMultiviewProperties {
10520    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES;
10521
10522    #[inline]
10523    fn s_type(&self) -> StructureType {
10524        self.s_type
10525    }
10526
10527    #[inline]
10528    fn next(&self) -> *const c_void {
10529        self.next
10530    }
10531}
10532
10533unsafe impl OutputChainStruct for PhysicalDeviceMultiviewProperties {
10534    #[inline]
10535    fn next_mut(&self) -> *mut c_void {
10536        self.next
10537    }
10538}
10539
10540unsafe impl InputChainStruct for PhysicalDeviceMutableDescriptorTypeFeaturesEXT {
10541    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT;
10542
10543    #[inline]
10544    fn s_type(&self) -> StructureType {
10545        self.s_type
10546    }
10547
10548    #[inline]
10549    fn next(&self) -> *const c_void {
10550        self.next
10551    }
10552}
10553
10554unsafe impl OutputChainStruct for PhysicalDeviceMutableDescriptorTypeFeaturesEXT {
10555    #[inline]
10556    fn next_mut(&self) -> *mut c_void {
10557        self.next
10558    }
10559}
10560
10561unsafe impl InputChainStruct for PhysicalDeviceNestedCommandBufferFeaturesEXT {
10562    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT;
10563
10564    #[inline]
10565    fn s_type(&self) -> StructureType {
10566        self.s_type
10567    }
10568
10569    #[inline]
10570    fn next(&self) -> *const c_void {
10571        self.next
10572    }
10573}
10574
10575unsafe impl OutputChainStruct for PhysicalDeviceNestedCommandBufferFeaturesEXT {
10576    #[inline]
10577    fn next_mut(&self) -> *mut c_void {
10578        self.next
10579    }
10580}
10581
10582unsafe impl InputChainStruct for PhysicalDeviceNestedCommandBufferPropertiesEXT {
10583    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT;
10584
10585    #[inline]
10586    fn s_type(&self) -> StructureType {
10587        self.s_type
10588    }
10589
10590    #[inline]
10591    fn next(&self) -> *const c_void {
10592        self.next
10593    }
10594}
10595
10596unsafe impl OutputChainStruct for PhysicalDeviceNestedCommandBufferPropertiesEXT {
10597    #[inline]
10598    fn next_mut(&self) -> *mut c_void {
10599        self.next
10600    }
10601}
10602
10603unsafe impl InputChainStruct for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
10604    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT;
10605
10606    #[inline]
10607    fn s_type(&self) -> StructureType {
10608        self.s_type
10609    }
10610
10611    #[inline]
10612    fn next(&self) -> *const c_void {
10613        self.next
10614    }
10615}
10616
10617unsafe impl OutputChainStruct for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
10618    #[inline]
10619    fn next_mut(&self) -> *mut c_void {
10620        self.next
10621    }
10622}
10623
10624unsafe impl InputChainStruct for PhysicalDeviceOpacityMicromapFeaturesEXT {
10625    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT;
10626
10627    #[inline]
10628    fn s_type(&self) -> StructureType {
10629        self.s_type
10630    }
10631
10632    #[inline]
10633    fn next(&self) -> *const c_void {
10634        self.next
10635    }
10636}
10637
10638unsafe impl OutputChainStruct for PhysicalDeviceOpacityMicromapFeaturesEXT {
10639    #[inline]
10640    fn next_mut(&self) -> *mut c_void {
10641        self.next
10642    }
10643}
10644
10645unsafe impl InputChainStruct for PhysicalDeviceOpacityMicromapPropertiesEXT {
10646    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT;
10647
10648    #[inline]
10649    fn s_type(&self) -> StructureType {
10650        self.s_type
10651    }
10652
10653    #[inline]
10654    fn next(&self) -> *const c_void {
10655        self.next
10656    }
10657}
10658
10659unsafe impl OutputChainStruct for PhysicalDeviceOpacityMicromapPropertiesEXT {
10660    #[inline]
10661    fn next_mut(&self) -> *mut c_void {
10662        self.next
10663    }
10664}
10665
10666unsafe impl InputChainStruct for PhysicalDeviceOpticalFlowFeaturesNV {
10667    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV;
10668
10669    #[inline]
10670    fn s_type(&self) -> StructureType {
10671        self.s_type
10672    }
10673
10674    #[inline]
10675    fn next(&self) -> *const c_void {
10676        self.next
10677    }
10678}
10679
10680unsafe impl OutputChainStruct for PhysicalDeviceOpticalFlowFeaturesNV {
10681    #[inline]
10682    fn next_mut(&self) -> *mut c_void {
10683        self.next
10684    }
10685}
10686
10687unsafe impl InputChainStruct for PhysicalDeviceOpticalFlowPropertiesNV {
10688    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV;
10689
10690    #[inline]
10691    fn s_type(&self) -> StructureType {
10692        self.s_type
10693    }
10694
10695    #[inline]
10696    fn next(&self) -> *const c_void {
10697        self.next
10698    }
10699}
10700
10701unsafe impl OutputChainStruct for PhysicalDeviceOpticalFlowPropertiesNV {
10702    #[inline]
10703    fn next_mut(&self) -> *mut c_void {
10704        self.next
10705    }
10706}
10707
10708unsafe impl InputChainStruct for PhysicalDevicePCIBusInfoPropertiesEXT {
10709    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT;
10710
10711    #[inline]
10712    fn s_type(&self) -> StructureType {
10713        self.s_type
10714    }
10715
10716    #[inline]
10717    fn next(&self) -> *const c_void {
10718        self.next
10719    }
10720}
10721
10722unsafe impl OutputChainStruct for PhysicalDevicePCIBusInfoPropertiesEXT {
10723    #[inline]
10724    fn next_mut(&self) -> *mut c_void {
10725        self.next
10726    }
10727}
10728
10729unsafe impl InputChainStruct for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
10730    const TYPE: StructureType =
10731        StructureType::PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT;
10732
10733    #[inline]
10734    fn s_type(&self) -> StructureType {
10735        self.s_type
10736    }
10737
10738    #[inline]
10739    fn next(&self) -> *const c_void {
10740        self.next
10741    }
10742}
10743
10744unsafe impl OutputChainStruct for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
10745    #[inline]
10746    fn next_mut(&self) -> *mut c_void {
10747        self.next
10748    }
10749}
10750
10751unsafe impl InputChainStruct for PhysicalDevicePartitionedAccelerationStructureFeaturesNV {
10752    const TYPE: StructureType =
10753        StructureType::PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV;
10754
10755    #[inline]
10756    fn s_type(&self) -> StructureType {
10757        self.s_type
10758    }
10759
10760    #[inline]
10761    fn next(&self) -> *const c_void {
10762        self.next
10763    }
10764}
10765
10766unsafe impl OutputChainStruct for PhysicalDevicePartitionedAccelerationStructureFeaturesNV {
10767    #[inline]
10768    fn next_mut(&self) -> *mut c_void {
10769        self.next
10770    }
10771}
10772
10773unsafe impl InputChainStruct for PhysicalDevicePartitionedAccelerationStructurePropertiesNV {
10774    const TYPE: StructureType =
10775        StructureType::PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV;
10776
10777    #[inline]
10778    fn s_type(&self) -> StructureType {
10779        self.s_type
10780    }
10781
10782    #[inline]
10783    fn next(&self) -> *const c_void {
10784        self.next
10785    }
10786}
10787
10788unsafe impl OutputChainStruct for PhysicalDevicePartitionedAccelerationStructurePropertiesNV {
10789    #[inline]
10790    fn next_mut(&self) -> *mut c_void {
10791        self.next
10792    }
10793}
10794
10795unsafe impl InputChainStruct for PhysicalDevicePerStageDescriptorSetFeaturesNV {
10796    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV;
10797
10798    #[inline]
10799    fn s_type(&self) -> StructureType {
10800        self.s_type
10801    }
10802
10803    #[inline]
10804    fn next(&self) -> *const c_void {
10805        self.next
10806    }
10807}
10808
10809unsafe impl OutputChainStruct for PhysicalDevicePerStageDescriptorSetFeaturesNV {
10810    #[inline]
10811    fn next_mut(&self) -> *mut c_void {
10812        self.next
10813    }
10814}
10815
10816unsafe impl InputChainStruct for PhysicalDevicePerformanceQueryFeaturesKHR {
10817    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR;
10818
10819    #[inline]
10820    fn s_type(&self) -> StructureType {
10821        self.s_type
10822    }
10823
10824    #[inline]
10825    fn next(&self) -> *const c_void {
10826        self.next
10827    }
10828}
10829
10830unsafe impl OutputChainStruct for PhysicalDevicePerformanceQueryFeaturesKHR {
10831    #[inline]
10832    fn next_mut(&self) -> *mut c_void {
10833        self.next
10834    }
10835}
10836
10837unsafe impl InputChainStruct for PhysicalDevicePerformanceQueryPropertiesKHR {
10838    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR;
10839
10840    #[inline]
10841    fn s_type(&self) -> StructureType {
10842        self.s_type
10843    }
10844
10845    #[inline]
10846    fn next(&self) -> *const c_void {
10847        self.next
10848    }
10849}
10850
10851unsafe impl OutputChainStruct for PhysicalDevicePerformanceQueryPropertiesKHR {
10852    #[inline]
10853    fn next_mut(&self) -> *mut c_void {
10854        self.next
10855    }
10856}
10857
10858unsafe impl InputChainStruct for PhysicalDevicePipelineBinaryFeaturesKHR {
10859    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR;
10860
10861    #[inline]
10862    fn s_type(&self) -> StructureType {
10863        self.s_type
10864    }
10865
10866    #[inline]
10867    fn next(&self) -> *const c_void {
10868        self.next
10869    }
10870}
10871
10872unsafe impl OutputChainStruct for PhysicalDevicePipelineBinaryFeaturesKHR {
10873    #[inline]
10874    fn next_mut(&self) -> *mut c_void {
10875        self.next
10876    }
10877}
10878
10879unsafe impl InputChainStruct for PhysicalDevicePipelineBinaryPropertiesKHR {
10880    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR;
10881
10882    #[inline]
10883    fn s_type(&self) -> StructureType {
10884        self.s_type
10885    }
10886
10887    #[inline]
10888    fn next(&self) -> *const c_void {
10889        self.next
10890    }
10891}
10892
10893unsafe impl OutputChainStruct for PhysicalDevicePipelineBinaryPropertiesKHR {
10894    #[inline]
10895    fn next_mut(&self) -> *mut c_void {
10896        self.next
10897    }
10898}
10899
10900unsafe impl InputChainStruct for PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {
10901    const TYPE: StructureType =
10902        StructureType::PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC;
10903
10904    #[inline]
10905    fn s_type(&self) -> StructureType {
10906        self.s_type
10907    }
10908
10909    #[inline]
10910    fn next(&self) -> *const c_void {
10911        self.next
10912    }
10913}
10914
10915unsafe impl OutputChainStruct for PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {
10916    #[inline]
10917    fn next_mut(&self) -> *mut c_void {
10918        self.next
10919    }
10920}
10921
10922unsafe impl InputChainStruct for PhysicalDevicePipelineCreationCacheControlFeatures {
10923    const TYPE: StructureType =
10924        StructureType::PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES;
10925
10926    #[inline]
10927    fn s_type(&self) -> StructureType {
10928        self.s_type
10929    }
10930
10931    #[inline]
10932    fn next(&self) -> *const c_void {
10933        self.next
10934    }
10935}
10936
10937unsafe impl OutputChainStruct for PhysicalDevicePipelineCreationCacheControlFeatures {
10938    #[inline]
10939    fn next_mut(&self) -> *mut c_void {
10940        self.next
10941    }
10942}
10943
10944unsafe impl InputChainStruct for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
10945    const TYPE: StructureType =
10946        StructureType::PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR;
10947
10948    #[inline]
10949    fn s_type(&self) -> StructureType {
10950        self.s_type
10951    }
10952
10953    #[inline]
10954    fn next(&self) -> *const c_void {
10955        self.next
10956    }
10957}
10958
10959unsafe impl OutputChainStruct for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
10960    #[inline]
10961    fn next_mut(&self) -> *mut c_void {
10962        self.next
10963    }
10964}
10965
10966unsafe impl InputChainStruct for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
10967    const TYPE: StructureType =
10968        StructureType::PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT;
10969
10970    #[inline]
10971    fn s_type(&self) -> StructureType {
10972        self.s_type
10973    }
10974
10975    #[inline]
10976    fn next(&self) -> *const c_void {
10977        self.next
10978    }
10979}
10980
10981unsafe impl OutputChainStruct for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
10982    #[inline]
10983    fn next_mut(&self) -> *mut c_void {
10984        self.next
10985    }
10986}
10987
10988unsafe impl InputChainStruct for PhysicalDevicePipelineOpacityMicromapFeaturesARM {
10989    const TYPE: StructureType =
10990        StructureType::PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM;
10991
10992    #[inline]
10993    fn s_type(&self) -> StructureType {
10994        self.s_type
10995    }
10996
10997    #[inline]
10998    fn next(&self) -> *const c_void {
10999        self.next
11000    }
11001}
11002
11003unsafe impl OutputChainStruct for PhysicalDevicePipelineOpacityMicromapFeaturesARM {
11004    #[inline]
11005    fn next_mut(&self) -> *mut c_void {
11006        self.next
11007    }
11008}
11009
11010unsafe impl InputChainStruct for PhysicalDevicePipelinePropertiesFeaturesEXT {
11011    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT;
11012
11013    #[inline]
11014    fn s_type(&self) -> StructureType {
11015        self.s_type
11016    }
11017
11018    #[inline]
11019    fn next(&self) -> *const c_void {
11020        self.next
11021    }
11022}
11023
11024unsafe impl OutputChainStruct for PhysicalDevicePipelinePropertiesFeaturesEXT {
11025    #[inline]
11026    fn next_mut(&self) -> *mut c_void {
11027        self.next
11028    }
11029}
11030
11031unsafe impl InputChainStruct for PhysicalDevicePipelineProtectedAccessFeatures {
11032    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES;
11033
11034    #[inline]
11035    fn s_type(&self) -> StructureType {
11036        self.s_type
11037    }
11038
11039    #[inline]
11040    fn next(&self) -> *const c_void {
11041        self.next
11042    }
11043}
11044
11045unsafe impl OutputChainStruct for PhysicalDevicePipelineProtectedAccessFeatures {
11046    #[inline]
11047    fn next_mut(&self) -> *mut c_void {
11048        self.next
11049    }
11050}
11051
11052unsafe impl InputChainStruct for PhysicalDevicePipelineRobustnessFeatures {
11053    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES;
11054
11055    #[inline]
11056    fn s_type(&self) -> StructureType {
11057        self.s_type
11058    }
11059
11060    #[inline]
11061    fn next(&self) -> *const c_void {
11062        self.next
11063    }
11064}
11065
11066unsafe impl OutputChainStruct for PhysicalDevicePipelineRobustnessFeatures {
11067    #[inline]
11068    fn next_mut(&self) -> *mut c_void {
11069        self.next
11070    }
11071}
11072
11073unsafe impl InputChainStruct for PhysicalDevicePipelineRobustnessProperties {
11074    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES;
11075
11076    #[inline]
11077    fn s_type(&self) -> StructureType {
11078        self.s_type
11079    }
11080
11081    #[inline]
11082    fn next(&self) -> *const c_void {
11083        self.next
11084    }
11085}
11086
11087unsafe impl OutputChainStruct for PhysicalDevicePipelineRobustnessProperties {
11088    #[inline]
11089    fn next_mut(&self) -> *mut c_void {
11090        self.next
11091    }
11092}
11093
11094unsafe impl InputChainStruct for PhysicalDevicePointClippingProperties {
11095    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES;
11096
11097    #[inline]
11098    fn s_type(&self) -> StructureType {
11099        self.s_type
11100    }
11101
11102    #[inline]
11103    fn next(&self) -> *const c_void {
11104        self.next
11105    }
11106}
11107
11108unsafe impl OutputChainStruct for PhysicalDevicePointClippingProperties {
11109    #[inline]
11110    fn next_mut(&self) -> *mut c_void {
11111        self.next
11112    }
11113}
11114
11115unsafe impl InputChainStruct for PhysicalDevicePortabilitySubsetFeaturesKHR {
11116    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR;
11117
11118    #[inline]
11119    fn s_type(&self) -> StructureType {
11120        self.s_type
11121    }
11122
11123    #[inline]
11124    fn next(&self) -> *const c_void {
11125        self.next
11126    }
11127}
11128
11129unsafe impl OutputChainStruct for PhysicalDevicePortabilitySubsetFeaturesKHR {
11130    #[inline]
11131    fn next_mut(&self) -> *mut c_void {
11132        self.next
11133    }
11134}
11135
11136unsafe impl InputChainStruct for PhysicalDevicePortabilitySubsetPropertiesKHR {
11137    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR;
11138
11139    #[inline]
11140    fn s_type(&self) -> StructureType {
11141        self.s_type
11142    }
11143
11144    #[inline]
11145    fn next(&self) -> *const c_void {
11146        self.next
11147    }
11148}
11149
11150unsafe impl OutputChainStruct for PhysicalDevicePortabilitySubsetPropertiesKHR {
11151    #[inline]
11152    fn next_mut(&self) -> *mut c_void {
11153        self.next
11154    }
11155}
11156
11157unsafe impl InputChainStruct for PhysicalDevicePresentBarrierFeaturesNV {
11158    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV;
11159
11160    #[inline]
11161    fn s_type(&self) -> StructureType {
11162        self.s_type
11163    }
11164
11165    #[inline]
11166    fn next(&self) -> *const c_void {
11167        self.next
11168    }
11169}
11170
11171unsafe impl OutputChainStruct for PhysicalDevicePresentBarrierFeaturesNV {
11172    #[inline]
11173    fn next_mut(&self) -> *mut c_void {
11174        self.next
11175    }
11176}
11177
11178unsafe impl InputChainStruct for PhysicalDevicePresentId2FeaturesKHR {
11179    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR;
11180
11181    #[inline]
11182    fn s_type(&self) -> StructureType {
11183        self.s_type
11184    }
11185
11186    #[inline]
11187    fn next(&self) -> *const c_void {
11188        self.next
11189    }
11190}
11191
11192unsafe impl OutputChainStruct for PhysicalDevicePresentId2FeaturesKHR {
11193    #[inline]
11194    fn next_mut(&self) -> *mut c_void {
11195        self.next
11196    }
11197}
11198
11199unsafe impl InputChainStruct for PhysicalDevicePresentIdFeaturesKHR {
11200    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR;
11201
11202    #[inline]
11203    fn s_type(&self) -> StructureType {
11204        self.s_type
11205    }
11206
11207    #[inline]
11208    fn next(&self) -> *const c_void {
11209        self.next
11210    }
11211}
11212
11213unsafe impl OutputChainStruct for PhysicalDevicePresentIdFeaturesKHR {
11214    #[inline]
11215    fn next_mut(&self) -> *mut c_void {
11216        self.next
11217    }
11218}
11219
11220unsafe impl InputChainStruct for PhysicalDevicePresentMeteringFeaturesNV {
11221    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV;
11222
11223    #[inline]
11224    fn s_type(&self) -> StructureType {
11225        self.s_type
11226    }
11227
11228    #[inline]
11229    fn next(&self) -> *const c_void {
11230        self.next
11231    }
11232}
11233
11234unsafe impl OutputChainStruct for PhysicalDevicePresentMeteringFeaturesNV {
11235    #[inline]
11236    fn next_mut(&self) -> *mut c_void {
11237        self.next
11238    }
11239}
11240
11241unsafe impl InputChainStruct for PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {
11242    const TYPE: StructureType =
11243        StructureType::PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR;
11244
11245    #[inline]
11246    fn s_type(&self) -> StructureType {
11247        self.s_type
11248    }
11249
11250    #[inline]
11251    fn next(&self) -> *const c_void {
11252        self.next
11253    }
11254}
11255
11256unsafe impl OutputChainStruct for PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {
11257    #[inline]
11258    fn next_mut(&self) -> *mut c_void {
11259        self.next
11260    }
11261}
11262
11263unsafe impl InputChainStruct for PhysicalDevicePresentWait2FeaturesKHR {
11264    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR;
11265
11266    #[inline]
11267    fn s_type(&self) -> StructureType {
11268        self.s_type
11269    }
11270
11271    #[inline]
11272    fn next(&self) -> *const c_void {
11273        self.next
11274    }
11275}
11276
11277unsafe impl OutputChainStruct for PhysicalDevicePresentWait2FeaturesKHR {
11278    #[inline]
11279    fn next_mut(&self) -> *mut c_void {
11280        self.next
11281    }
11282}
11283
11284unsafe impl InputChainStruct for PhysicalDevicePresentWaitFeaturesKHR {
11285    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR;
11286
11287    #[inline]
11288    fn s_type(&self) -> StructureType {
11289        self.s_type
11290    }
11291
11292    #[inline]
11293    fn next(&self) -> *const c_void {
11294        self.next
11295    }
11296}
11297
11298unsafe impl OutputChainStruct for PhysicalDevicePresentWaitFeaturesKHR {
11299    #[inline]
11300    fn next_mut(&self) -> *mut c_void {
11301        self.next
11302    }
11303}
11304
11305unsafe impl InputChainStruct for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
11306    const TYPE: StructureType =
11307        StructureType::PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT;
11308
11309    #[inline]
11310    fn s_type(&self) -> StructureType {
11311        self.s_type
11312    }
11313
11314    #[inline]
11315    fn next(&self) -> *const c_void {
11316        self.next
11317    }
11318}
11319
11320unsafe impl OutputChainStruct for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
11321    #[inline]
11322    fn next_mut(&self) -> *mut c_void {
11323        self.next
11324    }
11325}
11326
11327unsafe impl InputChainStruct for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
11328    const TYPE: StructureType =
11329        StructureType::PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT;
11330
11331    #[inline]
11332    fn s_type(&self) -> StructureType {
11333        self.s_type
11334    }
11335
11336    #[inline]
11337    fn next(&self) -> *const c_void {
11338        self.next
11339    }
11340}
11341
11342unsafe impl OutputChainStruct for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
11343    #[inline]
11344    fn next_mut(&self) -> *mut c_void {
11345        self.next
11346    }
11347}
11348
11349unsafe impl InputChainStruct for PhysicalDevicePrivateDataFeatures {
11350    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES;
11351
11352    #[inline]
11353    fn s_type(&self) -> StructureType {
11354        self.s_type
11355    }
11356
11357    #[inline]
11358    fn next(&self) -> *const c_void {
11359        self.next
11360    }
11361}
11362
11363unsafe impl OutputChainStruct for PhysicalDevicePrivateDataFeatures {
11364    #[inline]
11365    fn next_mut(&self) -> *mut c_void {
11366        self.next
11367    }
11368}
11369
11370unsafe impl InputChainStruct for PhysicalDeviceProperties2 {
11371    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PROPERTIES_2;
11372
11373    #[inline]
11374    fn s_type(&self) -> StructureType {
11375        self.s_type
11376    }
11377
11378    #[inline]
11379    fn next(&self) -> *const c_void {
11380        self.next
11381    }
11382}
11383
11384unsafe impl OutputChainStruct for PhysicalDeviceProperties2 {
11385    #[inline]
11386    fn next_mut(&self) -> *mut c_void {
11387        self.next
11388    }
11389}
11390
11391unsafe impl InputChainStruct for PhysicalDeviceProtectedMemoryFeatures {
11392    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES;
11393
11394    #[inline]
11395    fn s_type(&self) -> StructureType {
11396        self.s_type
11397    }
11398
11399    #[inline]
11400    fn next(&self) -> *const c_void {
11401        self.next
11402    }
11403}
11404
11405unsafe impl OutputChainStruct for PhysicalDeviceProtectedMemoryFeatures {
11406    #[inline]
11407    fn next_mut(&self) -> *mut c_void {
11408        self.next
11409    }
11410}
11411
11412unsafe impl InputChainStruct for PhysicalDeviceProtectedMemoryProperties {
11413    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES;
11414
11415    #[inline]
11416    fn s_type(&self) -> StructureType {
11417        self.s_type
11418    }
11419
11420    #[inline]
11421    fn next(&self) -> *const c_void {
11422        self.next
11423    }
11424}
11425
11426unsafe impl OutputChainStruct for PhysicalDeviceProtectedMemoryProperties {
11427    #[inline]
11428    fn next_mut(&self) -> *mut c_void {
11429        self.next
11430    }
11431}
11432
11433unsafe impl InputChainStruct for PhysicalDeviceProvokingVertexFeaturesEXT {
11434    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT;
11435
11436    #[inline]
11437    fn s_type(&self) -> StructureType {
11438        self.s_type
11439    }
11440
11441    #[inline]
11442    fn next(&self) -> *const c_void {
11443        self.next
11444    }
11445}
11446
11447unsafe impl OutputChainStruct for PhysicalDeviceProvokingVertexFeaturesEXT {
11448    #[inline]
11449    fn next_mut(&self) -> *mut c_void {
11450        self.next
11451    }
11452}
11453
11454unsafe impl InputChainStruct for PhysicalDeviceProvokingVertexPropertiesEXT {
11455    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT;
11456
11457    #[inline]
11458    fn s_type(&self) -> StructureType {
11459        self.s_type
11460    }
11461
11462    #[inline]
11463    fn next(&self) -> *const c_void {
11464        self.next
11465    }
11466}
11467
11468unsafe impl OutputChainStruct for PhysicalDeviceProvokingVertexPropertiesEXT {
11469    #[inline]
11470    fn next_mut(&self) -> *mut c_void {
11471        self.next
11472    }
11473}
11474
11475unsafe impl InputChainStruct for PhysicalDevicePushDescriptorProperties {
11476    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES;
11477
11478    #[inline]
11479    fn s_type(&self) -> StructureType {
11480        self.s_type
11481    }
11482
11483    #[inline]
11484    fn next(&self) -> *const c_void {
11485        self.next
11486    }
11487}
11488
11489unsafe impl OutputChainStruct for PhysicalDevicePushDescriptorProperties {
11490    #[inline]
11491    fn next_mut(&self) -> *mut c_void {
11492        self.next
11493    }
11494}
11495
11496unsafe impl InputChainStruct for PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {
11497    const TYPE: StructureType =
11498        StructureType::PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM;
11499
11500    #[inline]
11501    fn s_type(&self) -> StructureType {
11502        self.s_type
11503    }
11504
11505    #[inline]
11506    fn next(&self) -> *const c_void {
11507        self.next
11508    }
11509}
11510
11511unsafe impl InputChainStruct for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
11512    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT;
11513
11514    #[inline]
11515    fn s_type(&self) -> StructureType {
11516        self.s_type
11517    }
11518
11519    #[inline]
11520    fn next(&self) -> *const c_void {
11521        self.next
11522    }
11523}
11524
11525unsafe impl OutputChainStruct for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
11526    #[inline]
11527    fn next_mut(&self) -> *mut c_void {
11528        self.next
11529    }
11530}
11531
11532unsafe impl InputChainStruct for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {
11533    const TYPE: StructureType =
11534        StructureType::PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT;
11535
11536    #[inline]
11537    fn s_type(&self) -> StructureType {
11538        self.s_type
11539    }
11540
11541    #[inline]
11542    fn next(&self) -> *const c_void {
11543        self.next
11544    }
11545}
11546
11547unsafe impl OutputChainStruct for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {
11548    #[inline]
11549    fn next_mut(&self) -> *mut c_void {
11550        self.next
11551    }
11552}
11553
11554unsafe impl InputChainStruct for PhysicalDeviceRawAccessChainsFeaturesNV {
11555    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV;
11556
11557    #[inline]
11558    fn s_type(&self) -> StructureType {
11559        self.s_type
11560    }
11561
11562    #[inline]
11563    fn next(&self) -> *const c_void {
11564        self.next
11565    }
11566}
11567
11568unsafe impl OutputChainStruct for PhysicalDeviceRawAccessChainsFeaturesNV {
11569    #[inline]
11570    fn next_mut(&self) -> *mut c_void {
11571        self.next
11572    }
11573}
11574
11575unsafe impl InputChainStruct for PhysicalDeviceRayQueryFeaturesKHR {
11576    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR;
11577
11578    #[inline]
11579    fn s_type(&self) -> StructureType {
11580        self.s_type
11581    }
11582
11583    #[inline]
11584    fn next(&self) -> *const c_void {
11585        self.next
11586    }
11587}
11588
11589unsafe impl OutputChainStruct for PhysicalDeviceRayQueryFeaturesKHR {
11590    #[inline]
11591    fn next_mut(&self) -> *mut c_void {
11592        self.next
11593    }
11594}
11595
11596unsafe impl InputChainStruct for PhysicalDeviceRayTracingInvocationReorderFeaturesNV {
11597    const TYPE: StructureType =
11598        StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV;
11599
11600    #[inline]
11601    fn s_type(&self) -> StructureType {
11602        self.s_type
11603    }
11604
11605    #[inline]
11606    fn next(&self) -> *const c_void {
11607        self.next
11608    }
11609}
11610
11611unsafe impl OutputChainStruct for PhysicalDeviceRayTracingInvocationReorderFeaturesNV {
11612    #[inline]
11613    fn next_mut(&self) -> *mut c_void {
11614        self.next
11615    }
11616}
11617
11618unsafe impl InputChainStruct for PhysicalDeviceRayTracingInvocationReorderPropertiesNV {
11619    const TYPE: StructureType =
11620        StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV;
11621
11622    #[inline]
11623    fn s_type(&self) -> StructureType {
11624        self.s_type
11625    }
11626
11627    #[inline]
11628    fn next(&self) -> *const c_void {
11629        self.next
11630    }
11631}
11632
11633unsafe impl OutputChainStruct for PhysicalDeviceRayTracingInvocationReorderPropertiesNV {
11634    #[inline]
11635    fn next_mut(&self) -> *mut c_void {
11636        self.next
11637    }
11638}
11639
11640unsafe impl InputChainStruct for PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {
11641    const TYPE: StructureType =
11642        StructureType::PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV;
11643
11644    #[inline]
11645    fn s_type(&self) -> StructureType {
11646        self.s_type
11647    }
11648
11649    #[inline]
11650    fn next(&self) -> *const c_void {
11651        self.next
11652    }
11653}
11654
11655unsafe impl OutputChainStruct for PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {
11656    #[inline]
11657    fn next_mut(&self) -> *mut c_void {
11658        self.next
11659    }
11660}
11661
11662unsafe impl InputChainStruct for PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
11663    const TYPE: StructureType =
11664        StructureType::PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR;
11665
11666    #[inline]
11667    fn s_type(&self) -> StructureType {
11668        self.s_type
11669    }
11670
11671    #[inline]
11672    fn next(&self) -> *const c_void {
11673        self.next
11674    }
11675}
11676
11677unsafe impl OutputChainStruct for PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
11678    #[inline]
11679    fn next_mut(&self) -> *mut c_void {
11680        self.next
11681    }
11682}
11683
11684unsafe impl InputChainStruct for PhysicalDeviceRayTracingMotionBlurFeaturesNV {
11685    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV;
11686
11687    #[inline]
11688    fn s_type(&self) -> StructureType {
11689        self.s_type
11690    }
11691
11692    #[inline]
11693    fn next(&self) -> *const c_void {
11694        self.next
11695    }
11696}
11697
11698unsafe impl OutputChainStruct for PhysicalDeviceRayTracingMotionBlurFeaturesNV {
11699    #[inline]
11700    fn next_mut(&self) -> *mut c_void {
11701        self.next
11702    }
11703}
11704
11705unsafe impl InputChainStruct for PhysicalDeviceRayTracingPipelineFeaturesKHR {
11706    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR;
11707
11708    #[inline]
11709    fn s_type(&self) -> StructureType {
11710        self.s_type
11711    }
11712
11713    #[inline]
11714    fn next(&self) -> *const c_void {
11715        self.next
11716    }
11717}
11718
11719unsafe impl OutputChainStruct for PhysicalDeviceRayTracingPipelineFeaturesKHR {
11720    #[inline]
11721    fn next_mut(&self) -> *mut c_void {
11722        self.next
11723    }
11724}
11725
11726unsafe impl InputChainStruct for PhysicalDeviceRayTracingPipelinePropertiesKHR {
11727    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR;
11728
11729    #[inline]
11730    fn s_type(&self) -> StructureType {
11731        self.s_type
11732    }
11733
11734    #[inline]
11735    fn next(&self) -> *const c_void {
11736        self.next
11737    }
11738}
11739
11740unsafe impl OutputChainStruct for PhysicalDeviceRayTracingPipelinePropertiesKHR {
11741    #[inline]
11742    fn next_mut(&self) -> *mut c_void {
11743        self.next
11744    }
11745}
11746
11747unsafe impl InputChainStruct for PhysicalDeviceRayTracingPositionFetchFeaturesKHR {
11748    const TYPE: StructureType =
11749        StructureType::PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR;
11750
11751    #[inline]
11752    fn s_type(&self) -> StructureType {
11753        self.s_type
11754    }
11755
11756    #[inline]
11757    fn next(&self) -> *const c_void {
11758        self.next
11759    }
11760}
11761
11762unsafe impl OutputChainStruct for PhysicalDeviceRayTracingPositionFetchFeaturesKHR {
11763    #[inline]
11764    fn next_mut(&self) -> *mut c_void {
11765        self.next
11766    }
11767}
11768
11769unsafe impl InputChainStruct for PhysicalDeviceRayTracingPropertiesNV {
11770    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV;
11771
11772    #[inline]
11773    fn s_type(&self) -> StructureType {
11774        self.s_type
11775    }
11776
11777    #[inline]
11778    fn next(&self) -> *const c_void {
11779        self.next
11780    }
11781}
11782
11783unsafe impl OutputChainStruct for PhysicalDeviceRayTracingPropertiesNV {
11784    #[inline]
11785    fn next_mut(&self) -> *mut c_void {
11786        self.next
11787    }
11788}
11789
11790unsafe impl InputChainStruct for PhysicalDeviceRayTracingValidationFeaturesNV {
11791    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV;
11792
11793    #[inline]
11794    fn s_type(&self) -> StructureType {
11795        self.s_type
11796    }
11797
11798    #[inline]
11799    fn next(&self) -> *const c_void {
11800        self.next
11801    }
11802}
11803
11804unsafe impl OutputChainStruct for PhysicalDeviceRayTracingValidationFeaturesNV {
11805    #[inline]
11806    fn next_mut(&self) -> *mut c_void {
11807        self.next
11808    }
11809}
11810
11811unsafe impl InputChainStruct for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
11812    const TYPE: StructureType =
11813        StructureType::PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG;
11814
11815    #[inline]
11816    fn s_type(&self) -> StructureType {
11817        self.s_type
11818    }
11819
11820    #[inline]
11821    fn next(&self) -> *const c_void {
11822        self.next
11823    }
11824}
11825
11826unsafe impl OutputChainStruct for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
11827    #[inline]
11828    fn next_mut(&self) -> *mut c_void {
11829        self.next
11830    }
11831}
11832
11833unsafe impl InputChainStruct for PhysicalDeviceRenderPassStripedFeaturesARM {
11834    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM;
11835
11836    #[inline]
11837    fn s_type(&self) -> StructureType {
11838        self.s_type
11839    }
11840
11841    #[inline]
11842    fn next(&self) -> *const c_void {
11843        self.next
11844    }
11845}
11846
11847unsafe impl OutputChainStruct for PhysicalDeviceRenderPassStripedFeaturesARM {
11848    #[inline]
11849    fn next_mut(&self) -> *mut c_void {
11850        self.next
11851    }
11852}
11853
11854unsafe impl InputChainStruct for PhysicalDeviceRenderPassStripedPropertiesARM {
11855    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM;
11856
11857    #[inline]
11858    fn s_type(&self) -> StructureType {
11859        self.s_type
11860    }
11861
11862    #[inline]
11863    fn next(&self) -> *const c_void {
11864        self.next
11865    }
11866}
11867
11868unsafe impl OutputChainStruct for PhysicalDeviceRenderPassStripedPropertiesARM {
11869    #[inline]
11870    fn next_mut(&self) -> *mut c_void {
11871        self.next
11872    }
11873}
11874
11875unsafe impl InputChainStruct for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
11876    const TYPE: StructureType =
11877        StructureType::PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV;
11878
11879    #[inline]
11880    fn s_type(&self) -> StructureType {
11881        self.s_type
11882    }
11883
11884    #[inline]
11885    fn next(&self) -> *const c_void {
11886        self.next
11887    }
11888}
11889
11890unsafe impl OutputChainStruct for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
11891    #[inline]
11892    fn next_mut(&self) -> *mut c_void {
11893        self.next
11894    }
11895}
11896
11897unsafe impl InputChainStruct for PhysicalDeviceRobustness2FeaturesKHR {
11898    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR;
11899
11900    #[inline]
11901    fn s_type(&self) -> StructureType {
11902        self.s_type
11903    }
11904
11905    #[inline]
11906    fn next(&self) -> *const c_void {
11907        self.next
11908    }
11909}
11910
11911unsafe impl OutputChainStruct for PhysicalDeviceRobustness2FeaturesKHR {
11912    #[inline]
11913    fn next_mut(&self) -> *mut c_void {
11914        self.next
11915    }
11916}
11917
11918unsafe impl InputChainStruct for PhysicalDeviceRobustness2PropertiesKHR {
11919    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR;
11920
11921    #[inline]
11922    fn s_type(&self) -> StructureType {
11923        self.s_type
11924    }
11925
11926    #[inline]
11927    fn next(&self) -> *const c_void {
11928        self.next
11929    }
11930}
11931
11932unsafe impl OutputChainStruct for PhysicalDeviceRobustness2PropertiesKHR {
11933    #[inline]
11934    fn next_mut(&self) -> *mut c_void {
11935        self.next
11936    }
11937}
11938
11939unsafe impl InputChainStruct for PhysicalDeviceSampleLocationsPropertiesEXT {
11940    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT;
11941
11942    #[inline]
11943    fn s_type(&self) -> StructureType {
11944        self.s_type
11945    }
11946
11947    #[inline]
11948    fn next(&self) -> *const c_void {
11949        self.next
11950    }
11951}
11952
11953unsafe impl OutputChainStruct for PhysicalDeviceSampleLocationsPropertiesEXT {
11954    #[inline]
11955    fn next_mut(&self) -> *mut c_void {
11956        self.next
11957    }
11958}
11959
11960unsafe impl InputChainStruct for PhysicalDeviceSamplerFilterMinmaxProperties {
11961    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES;
11962
11963    #[inline]
11964    fn s_type(&self) -> StructureType {
11965        self.s_type
11966    }
11967
11968    #[inline]
11969    fn next(&self) -> *const c_void {
11970        self.next
11971    }
11972}
11973
11974unsafe impl OutputChainStruct for PhysicalDeviceSamplerFilterMinmaxProperties {
11975    #[inline]
11976    fn next_mut(&self) -> *mut c_void {
11977        self.next
11978    }
11979}
11980
11981unsafe impl InputChainStruct for PhysicalDeviceSamplerYcbcrConversionFeatures {
11982    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES;
11983
11984    #[inline]
11985    fn s_type(&self) -> StructureType {
11986        self.s_type
11987    }
11988
11989    #[inline]
11990    fn next(&self) -> *const c_void {
11991        self.next
11992    }
11993}
11994
11995unsafe impl OutputChainStruct for PhysicalDeviceSamplerYcbcrConversionFeatures {
11996    #[inline]
11997    fn next_mut(&self) -> *mut c_void {
11998        self.next
11999    }
12000}
12001
12002unsafe impl InputChainStruct for PhysicalDeviceScalarBlockLayoutFeatures {
12003    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES;
12004
12005    #[inline]
12006    fn s_type(&self) -> StructureType {
12007        self.s_type
12008    }
12009
12010    #[inline]
12011    fn next(&self) -> *const c_void {
12012        self.next
12013    }
12014}
12015
12016unsafe impl OutputChainStruct for PhysicalDeviceScalarBlockLayoutFeatures {
12017    #[inline]
12018    fn next_mut(&self) -> *mut c_void {
12019        self.next
12020    }
12021}
12022
12023unsafe impl InputChainStruct for PhysicalDeviceSchedulingControlsFeaturesARM {
12024    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM;
12025
12026    #[inline]
12027    fn s_type(&self) -> StructureType {
12028        self.s_type
12029    }
12030
12031    #[inline]
12032    fn next(&self) -> *const c_void {
12033        self.next
12034    }
12035}
12036
12037unsafe impl OutputChainStruct for PhysicalDeviceSchedulingControlsFeaturesARM {
12038    #[inline]
12039    fn next_mut(&self) -> *mut c_void {
12040        self.next
12041    }
12042}
12043
12044unsafe impl InputChainStruct for PhysicalDeviceSchedulingControlsPropertiesARM {
12045    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM;
12046
12047    #[inline]
12048    fn s_type(&self) -> StructureType {
12049        self.s_type
12050    }
12051
12052    #[inline]
12053    fn next(&self) -> *const c_void {
12054        self.next
12055    }
12056}
12057
12058unsafe impl OutputChainStruct for PhysicalDeviceSchedulingControlsPropertiesARM {
12059    #[inline]
12060    fn next_mut(&self) -> *mut c_void {
12061        self.next
12062    }
12063}
12064
12065unsafe impl InputChainStruct for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
12066    const TYPE: StructureType =
12067        StructureType::PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES;
12068
12069    #[inline]
12070    fn s_type(&self) -> StructureType {
12071        self.s_type
12072    }
12073
12074    #[inline]
12075    fn next(&self) -> *const c_void {
12076        self.next
12077    }
12078}
12079
12080unsafe impl OutputChainStruct for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
12081    #[inline]
12082    fn next_mut(&self) -> *mut c_void {
12083        self.next
12084    }
12085}
12086
12087unsafe impl InputChainStruct for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {
12088    const TYPE: StructureType =
12089        StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV;
12090
12091    #[inline]
12092    fn s_type(&self) -> StructureType {
12093        self.s_type
12094    }
12095
12096    #[inline]
12097    fn next(&self) -> *const c_void {
12098        self.next
12099    }
12100}
12101
12102unsafe impl OutputChainStruct for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {
12103    #[inline]
12104    fn next_mut(&self) -> *mut c_void {
12105        self.next
12106    }
12107}
12108
12109unsafe impl InputChainStruct for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
12110    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT;
12111
12112    #[inline]
12113    fn s_type(&self) -> StructureType {
12114        self.s_type
12115    }
12116
12117    #[inline]
12118    fn next(&self) -> *const c_void {
12119        self.next
12120    }
12121}
12122
12123unsafe impl OutputChainStruct for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
12124    #[inline]
12125    fn next_mut(&self) -> *mut c_void {
12126        self.next
12127    }
12128}
12129
12130unsafe impl InputChainStruct for PhysicalDeviceShaderAtomicFloatFeaturesEXT {
12131    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT;
12132
12133    #[inline]
12134    fn s_type(&self) -> StructureType {
12135        self.s_type
12136    }
12137
12138    #[inline]
12139    fn next(&self) -> *const c_void {
12140        self.next
12141    }
12142}
12143
12144unsafe impl OutputChainStruct for PhysicalDeviceShaderAtomicFloatFeaturesEXT {
12145    #[inline]
12146    fn next_mut(&self) -> *mut c_void {
12147        self.next
12148    }
12149}
12150
12151unsafe impl InputChainStruct for PhysicalDeviceShaderAtomicInt64Features {
12152    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES;
12153
12154    #[inline]
12155    fn s_type(&self) -> StructureType {
12156        self.s_type
12157    }
12158
12159    #[inline]
12160    fn next(&self) -> *const c_void {
12161        self.next
12162    }
12163}
12164
12165unsafe impl OutputChainStruct for PhysicalDeviceShaderAtomicInt64Features {
12166    #[inline]
12167    fn next_mut(&self) -> *mut c_void {
12168        self.next
12169    }
12170}
12171
12172unsafe impl InputChainStruct for PhysicalDeviceShaderBfloat16FeaturesKHR {
12173    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR;
12174
12175    #[inline]
12176    fn s_type(&self) -> StructureType {
12177        self.s_type
12178    }
12179
12180    #[inline]
12181    fn next(&self) -> *const c_void {
12182        self.next
12183    }
12184}
12185
12186unsafe impl OutputChainStruct for PhysicalDeviceShaderBfloat16FeaturesKHR {
12187    #[inline]
12188    fn next_mut(&self) -> *mut c_void {
12189        self.next
12190    }
12191}
12192
12193unsafe impl InputChainStruct for PhysicalDeviceShaderClockFeaturesKHR {
12194    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR;
12195
12196    #[inline]
12197    fn s_type(&self) -> StructureType {
12198        self.s_type
12199    }
12200
12201    #[inline]
12202    fn next(&self) -> *const c_void {
12203        self.next
12204    }
12205}
12206
12207unsafe impl OutputChainStruct for PhysicalDeviceShaderClockFeaturesKHR {
12208    #[inline]
12209    fn next_mut(&self) -> *mut c_void {
12210        self.next
12211    }
12212}
12213
12214unsafe impl InputChainStruct for PhysicalDeviceShaderCoreBuiltinsFeaturesARM {
12215    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM;
12216
12217    #[inline]
12218    fn s_type(&self) -> StructureType {
12219        self.s_type
12220    }
12221
12222    #[inline]
12223    fn next(&self) -> *const c_void {
12224        self.next
12225    }
12226}
12227
12228unsafe impl OutputChainStruct for PhysicalDeviceShaderCoreBuiltinsFeaturesARM {
12229    #[inline]
12230    fn next_mut(&self) -> *mut c_void {
12231        self.next
12232    }
12233}
12234
12235unsafe impl InputChainStruct for PhysicalDeviceShaderCoreBuiltinsPropertiesARM {
12236    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM;
12237
12238    #[inline]
12239    fn s_type(&self) -> StructureType {
12240        self.s_type
12241    }
12242
12243    #[inline]
12244    fn next(&self) -> *const c_void {
12245        self.next
12246    }
12247}
12248
12249unsafe impl OutputChainStruct for PhysicalDeviceShaderCoreBuiltinsPropertiesARM {
12250    #[inline]
12251    fn next_mut(&self) -> *mut c_void {
12252        self.next
12253    }
12254}
12255
12256unsafe impl InputChainStruct for PhysicalDeviceShaderCoreProperties2AMD {
12257    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD;
12258
12259    #[inline]
12260    fn s_type(&self) -> StructureType {
12261        self.s_type
12262    }
12263
12264    #[inline]
12265    fn next(&self) -> *const c_void {
12266        self.next
12267    }
12268}
12269
12270unsafe impl OutputChainStruct for PhysicalDeviceShaderCoreProperties2AMD {
12271    #[inline]
12272    fn next_mut(&self) -> *mut c_void {
12273        self.next
12274    }
12275}
12276
12277unsafe impl InputChainStruct for PhysicalDeviceShaderCorePropertiesAMD {
12278    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD;
12279
12280    #[inline]
12281    fn s_type(&self) -> StructureType {
12282        self.s_type
12283    }
12284
12285    #[inline]
12286    fn next(&self) -> *const c_void {
12287        self.next
12288    }
12289}
12290
12291unsafe impl OutputChainStruct for PhysicalDeviceShaderCorePropertiesAMD {
12292    #[inline]
12293    fn next_mut(&self) -> *mut c_void {
12294        self.next
12295    }
12296}
12297
12298unsafe impl InputChainStruct for PhysicalDeviceShaderCorePropertiesARM {
12299    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM;
12300
12301    #[inline]
12302    fn s_type(&self) -> StructureType {
12303        self.s_type
12304    }
12305
12306    #[inline]
12307    fn next(&self) -> *const c_void {
12308        self.next
12309    }
12310}
12311
12312unsafe impl OutputChainStruct for PhysicalDeviceShaderCorePropertiesARM {
12313    #[inline]
12314    fn next_mut(&self) -> *mut c_void {
12315        self.next
12316    }
12317}
12318
12319unsafe impl InputChainStruct for PhysicalDeviceShaderDemoteToHelperInvocationFeatures {
12320    const TYPE: StructureType =
12321        StructureType::PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES;
12322
12323    #[inline]
12324    fn s_type(&self) -> StructureType {
12325        self.s_type
12326    }
12327
12328    #[inline]
12329    fn next(&self) -> *const c_void {
12330        self.next
12331    }
12332}
12333
12334unsafe impl OutputChainStruct for PhysicalDeviceShaderDemoteToHelperInvocationFeatures {
12335    #[inline]
12336    fn next_mut(&self) -> *mut c_void {
12337        self.next
12338    }
12339}
12340
12341unsafe impl InputChainStruct for PhysicalDeviceShaderDrawParametersFeatures {
12342    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES;
12343
12344    #[inline]
12345    fn s_type(&self) -> StructureType {
12346        self.s_type
12347    }
12348
12349    #[inline]
12350    fn next(&self) -> *const c_void {
12351        self.next
12352    }
12353}
12354
12355unsafe impl OutputChainStruct for PhysicalDeviceShaderDrawParametersFeatures {
12356    #[inline]
12357    fn next_mut(&self) -> *mut c_void {
12358        self.next
12359    }
12360}
12361
12362unsafe impl InputChainStruct for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
12363    const TYPE: StructureType =
12364        StructureType::PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD;
12365
12366    #[inline]
12367    fn s_type(&self) -> StructureType {
12368        self.s_type
12369    }
12370
12371    #[inline]
12372    fn next(&self) -> *const c_void {
12373        self.next
12374    }
12375}
12376
12377unsafe impl OutputChainStruct for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
12378    #[inline]
12379    fn next_mut(&self) -> *mut c_void {
12380        self.next
12381    }
12382}
12383
12384unsafe impl InputChainStruct for PhysicalDeviceShaderEnqueueFeaturesAMDX {
12385    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX;
12386
12387    #[inline]
12388    fn s_type(&self) -> StructureType {
12389        self.s_type
12390    }
12391
12392    #[inline]
12393    fn next(&self) -> *const c_void {
12394        self.next
12395    }
12396}
12397
12398unsafe impl OutputChainStruct for PhysicalDeviceShaderEnqueueFeaturesAMDX {
12399    #[inline]
12400    fn next_mut(&self) -> *mut c_void {
12401        self.next
12402    }
12403}
12404
12405unsafe impl InputChainStruct for PhysicalDeviceShaderEnqueuePropertiesAMDX {
12406    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX;
12407
12408    #[inline]
12409    fn s_type(&self) -> StructureType {
12410        self.s_type
12411    }
12412
12413    #[inline]
12414    fn next(&self) -> *const c_void {
12415        self.next
12416    }
12417}
12418
12419unsafe impl OutputChainStruct for PhysicalDeviceShaderEnqueuePropertiesAMDX {
12420    #[inline]
12421    fn next_mut(&self) -> *mut c_void {
12422        self.next
12423    }
12424}
12425
12426unsafe impl InputChainStruct for PhysicalDeviceShaderExpectAssumeFeatures {
12427    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES;
12428
12429    #[inline]
12430    fn s_type(&self) -> StructureType {
12431        self.s_type
12432    }
12433
12434    #[inline]
12435    fn next(&self) -> *const c_void {
12436        self.next
12437    }
12438}
12439
12440unsafe impl OutputChainStruct for PhysicalDeviceShaderExpectAssumeFeatures {
12441    #[inline]
12442    fn next_mut(&self) -> *mut c_void {
12443        self.next
12444    }
12445}
12446
12447unsafe impl InputChainStruct for PhysicalDeviceShaderFloat16Int8Features {
12448    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES;
12449
12450    #[inline]
12451    fn s_type(&self) -> StructureType {
12452        self.s_type
12453    }
12454
12455    #[inline]
12456    fn next(&self) -> *const c_void {
12457        self.next
12458    }
12459}
12460
12461unsafe impl OutputChainStruct for PhysicalDeviceShaderFloat16Int8Features {
12462    #[inline]
12463    fn next_mut(&self) -> *mut c_void {
12464        self.next
12465    }
12466}
12467
12468unsafe impl InputChainStruct for PhysicalDeviceShaderFloat8FeaturesEXT {
12469    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT;
12470
12471    #[inline]
12472    fn s_type(&self) -> StructureType {
12473        self.s_type
12474    }
12475
12476    #[inline]
12477    fn next(&self) -> *const c_void {
12478        self.next
12479    }
12480}
12481
12482unsafe impl OutputChainStruct for PhysicalDeviceShaderFloat8FeaturesEXT {
12483    #[inline]
12484    fn next_mut(&self) -> *mut c_void {
12485        self.next
12486    }
12487}
12488
12489unsafe impl InputChainStruct for PhysicalDeviceShaderFloatControls2Features {
12490    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES;
12491
12492    #[inline]
12493    fn s_type(&self) -> StructureType {
12494        self.s_type
12495    }
12496
12497    #[inline]
12498    fn next(&self) -> *const c_void {
12499        self.next
12500    }
12501}
12502
12503unsafe impl OutputChainStruct for PhysicalDeviceShaderFloatControls2Features {
12504    #[inline]
12505    fn next_mut(&self) -> *mut c_void {
12506        self.next
12507    }
12508}
12509
12510unsafe impl InputChainStruct for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
12511    const TYPE: StructureType =
12512        StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT;
12513
12514    #[inline]
12515    fn s_type(&self) -> StructureType {
12516        self.s_type
12517    }
12518
12519    #[inline]
12520    fn next(&self) -> *const c_void {
12521        self.next
12522    }
12523}
12524
12525unsafe impl OutputChainStruct for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
12526    #[inline]
12527    fn next_mut(&self) -> *mut c_void {
12528        self.next
12529    }
12530}
12531
12532unsafe impl InputChainStruct for PhysicalDeviceShaderImageFootprintFeaturesNV {
12533    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV;
12534
12535    #[inline]
12536    fn s_type(&self) -> StructureType {
12537        self.s_type
12538    }
12539
12540    #[inline]
12541    fn next(&self) -> *const c_void {
12542        self.next
12543    }
12544}
12545
12546unsafe impl OutputChainStruct for PhysicalDeviceShaderImageFootprintFeaturesNV {
12547    #[inline]
12548    fn next_mut(&self) -> *mut c_void {
12549        self.next
12550    }
12551}
12552
12553unsafe impl InputChainStruct for PhysicalDeviceShaderIntegerDotProductFeatures {
12554    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES;
12555
12556    #[inline]
12557    fn s_type(&self) -> StructureType {
12558        self.s_type
12559    }
12560
12561    #[inline]
12562    fn next(&self) -> *const c_void {
12563        self.next
12564    }
12565}
12566
12567unsafe impl OutputChainStruct for PhysicalDeviceShaderIntegerDotProductFeatures {
12568    #[inline]
12569    fn next_mut(&self) -> *mut c_void {
12570        self.next
12571    }
12572}
12573
12574unsafe impl InputChainStruct for PhysicalDeviceShaderIntegerDotProductProperties {
12575    const TYPE: StructureType =
12576        StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES;
12577
12578    #[inline]
12579    fn s_type(&self) -> StructureType {
12580        self.s_type
12581    }
12582
12583    #[inline]
12584    fn next(&self) -> *const c_void {
12585        self.next
12586    }
12587}
12588
12589unsafe impl OutputChainStruct for PhysicalDeviceShaderIntegerDotProductProperties {
12590    #[inline]
12591    fn next_mut(&self) -> *mut c_void {
12592        self.next
12593    }
12594}
12595
12596unsafe impl InputChainStruct for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
12597    const TYPE: StructureType =
12598        StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL;
12599
12600    #[inline]
12601    fn s_type(&self) -> StructureType {
12602        self.s_type
12603    }
12604
12605    #[inline]
12606    fn next(&self) -> *const c_void {
12607        self.next
12608    }
12609}
12610
12611unsafe impl OutputChainStruct for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
12612    #[inline]
12613    fn next_mut(&self) -> *mut c_void {
12614        self.next
12615    }
12616}
12617
12618unsafe impl InputChainStruct for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {
12619    const TYPE: StructureType =
12620        StructureType::PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR;
12621
12622    #[inline]
12623    fn s_type(&self) -> StructureType {
12624        self.s_type
12625    }
12626
12627    #[inline]
12628    fn next(&self) -> *const c_void {
12629        self.next
12630    }
12631}
12632
12633unsafe impl OutputChainStruct for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {
12634    #[inline]
12635    fn next_mut(&self) -> *mut c_void {
12636        self.next
12637    }
12638}
12639
12640unsafe impl InputChainStruct for PhysicalDeviceShaderModuleIdentifierFeaturesEXT {
12641    const TYPE: StructureType =
12642        StructureType::PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT;
12643
12644    #[inline]
12645    fn s_type(&self) -> StructureType {
12646        self.s_type
12647    }
12648
12649    #[inline]
12650    fn next(&self) -> *const c_void {
12651        self.next
12652    }
12653}
12654
12655unsafe impl OutputChainStruct for PhysicalDeviceShaderModuleIdentifierFeaturesEXT {
12656    #[inline]
12657    fn next_mut(&self) -> *mut c_void {
12658        self.next
12659    }
12660}
12661
12662unsafe impl InputChainStruct for PhysicalDeviceShaderModuleIdentifierPropertiesEXT {
12663    const TYPE: StructureType =
12664        StructureType::PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT;
12665
12666    #[inline]
12667    fn s_type(&self) -> StructureType {
12668        self.s_type
12669    }
12670
12671    #[inline]
12672    fn next(&self) -> *const c_void {
12673        self.next
12674    }
12675}
12676
12677unsafe impl OutputChainStruct for PhysicalDeviceShaderModuleIdentifierPropertiesEXT {
12678    #[inline]
12679    fn next_mut(&self) -> *mut c_void {
12680        self.next
12681    }
12682}
12683
12684unsafe impl InputChainStruct for PhysicalDeviceShaderObjectFeaturesEXT {
12685    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT;
12686
12687    #[inline]
12688    fn s_type(&self) -> StructureType {
12689        self.s_type
12690    }
12691
12692    #[inline]
12693    fn next(&self) -> *const c_void {
12694        self.next
12695    }
12696}
12697
12698unsafe impl OutputChainStruct for PhysicalDeviceShaderObjectFeaturesEXT {
12699    #[inline]
12700    fn next_mut(&self) -> *mut c_void {
12701        self.next
12702    }
12703}
12704
12705unsafe impl InputChainStruct for PhysicalDeviceShaderObjectPropertiesEXT {
12706    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT;
12707
12708    #[inline]
12709    fn s_type(&self) -> StructureType {
12710        self.s_type
12711    }
12712
12713    #[inline]
12714    fn next(&self) -> *const c_void {
12715        self.next
12716    }
12717}
12718
12719unsafe impl OutputChainStruct for PhysicalDeviceShaderObjectPropertiesEXT {
12720    #[inline]
12721    fn next_mut(&self) -> *mut c_void {
12722        self.next
12723    }
12724}
12725
12726unsafe impl InputChainStruct for PhysicalDeviceShaderQuadControlFeaturesKHR {
12727    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR;
12728
12729    #[inline]
12730    fn s_type(&self) -> StructureType {
12731        self.s_type
12732    }
12733
12734    #[inline]
12735    fn next(&self) -> *const c_void {
12736        self.next
12737    }
12738}
12739
12740unsafe impl OutputChainStruct for PhysicalDeviceShaderQuadControlFeaturesKHR {
12741    #[inline]
12742    fn next_mut(&self) -> *mut c_void {
12743        self.next
12744    }
12745}
12746
12747unsafe impl InputChainStruct for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {
12748    const TYPE: StructureType =
12749        StructureType::PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR;
12750
12751    #[inline]
12752    fn s_type(&self) -> StructureType {
12753        self.s_type
12754    }
12755
12756    #[inline]
12757    fn next(&self) -> *const c_void {
12758        self.next
12759    }
12760}
12761
12762unsafe impl OutputChainStruct for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {
12763    #[inline]
12764    fn next_mut(&self) -> *mut c_void {
12765        self.next
12766    }
12767}
12768
12769unsafe impl InputChainStruct for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {
12770    const TYPE: StructureType =
12771        StructureType::PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT;
12772
12773    #[inline]
12774    fn s_type(&self) -> StructureType {
12775        self.s_type
12776    }
12777
12778    #[inline]
12779    fn next(&self) -> *const c_void {
12780        self.next
12781    }
12782}
12783
12784unsafe impl OutputChainStruct for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {
12785    #[inline]
12786    fn next_mut(&self) -> *mut c_void {
12787        self.next
12788    }
12789}
12790
12791unsafe impl InputChainStruct for PhysicalDeviceShaderSMBuiltinsFeaturesNV {
12792    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV;
12793
12794    #[inline]
12795    fn s_type(&self) -> StructureType {
12796        self.s_type
12797    }
12798
12799    #[inline]
12800    fn next(&self) -> *const c_void {
12801        self.next
12802    }
12803}
12804
12805unsafe impl OutputChainStruct for PhysicalDeviceShaderSMBuiltinsFeaturesNV {
12806    #[inline]
12807    fn next_mut(&self) -> *mut c_void {
12808        self.next
12809    }
12810}
12811
12812unsafe impl InputChainStruct for PhysicalDeviceShaderSMBuiltinsPropertiesNV {
12813    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV;
12814
12815    #[inline]
12816    fn s_type(&self) -> StructureType {
12817        self.s_type
12818    }
12819
12820    #[inline]
12821    fn next(&self) -> *const c_void {
12822        self.next
12823    }
12824}
12825
12826unsafe impl OutputChainStruct for PhysicalDeviceShaderSMBuiltinsPropertiesNV {
12827    #[inline]
12828    fn next_mut(&self) -> *mut c_void {
12829        self.next
12830    }
12831}
12832
12833unsafe impl InputChainStruct for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
12834    const TYPE: StructureType =
12835        StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES;
12836
12837    #[inline]
12838    fn s_type(&self) -> StructureType {
12839        self.s_type
12840    }
12841
12842    #[inline]
12843    fn next(&self) -> *const c_void {
12844        self.next
12845    }
12846}
12847
12848unsafe impl OutputChainStruct for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
12849    #[inline]
12850    fn next_mut(&self) -> *mut c_void {
12851        self.next
12852    }
12853}
12854
12855unsafe impl InputChainStruct for PhysicalDeviceShaderSubgroupRotateFeatures {
12856    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES;
12857
12858    #[inline]
12859    fn s_type(&self) -> StructureType {
12860        self.s_type
12861    }
12862
12863    #[inline]
12864    fn next(&self) -> *const c_void {
12865        self.next
12866    }
12867}
12868
12869unsafe impl OutputChainStruct for PhysicalDeviceShaderSubgroupRotateFeatures {
12870    #[inline]
12871    fn next_mut(&self) -> *mut c_void {
12872        self.next
12873    }
12874}
12875
12876unsafe impl InputChainStruct for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
12877    const TYPE: StructureType =
12878        StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR;
12879
12880    #[inline]
12881    fn s_type(&self) -> StructureType {
12882        self.s_type
12883    }
12884
12885    #[inline]
12886    fn next(&self) -> *const c_void {
12887        self.next
12888    }
12889}
12890
12891unsafe impl OutputChainStruct for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
12892    #[inline]
12893    fn next_mut(&self) -> *mut c_void {
12894        self.next
12895    }
12896}
12897
12898unsafe impl InputChainStruct for PhysicalDeviceShaderTerminateInvocationFeatures {
12899    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES;
12900
12901    #[inline]
12902    fn s_type(&self) -> StructureType {
12903        self.s_type
12904    }
12905
12906    #[inline]
12907    fn next(&self) -> *const c_void {
12908        self.next
12909    }
12910}
12911
12912unsafe impl OutputChainStruct for PhysicalDeviceShaderTerminateInvocationFeatures {
12913    #[inline]
12914    fn next_mut(&self) -> *mut c_void {
12915        self.next
12916    }
12917}
12918
12919unsafe impl InputChainStruct for PhysicalDeviceShaderTileImageFeaturesEXT {
12920    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT;
12921
12922    #[inline]
12923    fn s_type(&self) -> StructureType {
12924        self.s_type
12925    }
12926
12927    #[inline]
12928    fn next(&self) -> *const c_void {
12929        self.next
12930    }
12931}
12932
12933unsafe impl OutputChainStruct for PhysicalDeviceShaderTileImageFeaturesEXT {
12934    #[inline]
12935    fn next_mut(&self) -> *mut c_void {
12936        self.next
12937    }
12938}
12939
12940unsafe impl InputChainStruct for PhysicalDeviceShaderTileImagePropertiesEXT {
12941    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT;
12942
12943    #[inline]
12944    fn s_type(&self) -> StructureType {
12945        self.s_type
12946    }
12947
12948    #[inline]
12949    fn next(&self) -> *const c_void {
12950        self.next
12951    }
12952}
12953
12954unsafe impl OutputChainStruct for PhysicalDeviceShaderTileImagePropertiesEXT {
12955    #[inline]
12956    fn next_mut(&self) -> *mut c_void {
12957        self.next
12958    }
12959}
12960
12961unsafe impl InputChainStruct for PhysicalDeviceShaderUntypedPointersFeaturesKHR {
12962    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR;
12963
12964    #[inline]
12965    fn s_type(&self) -> StructureType {
12966        self.s_type
12967    }
12968
12969    #[inline]
12970    fn next(&self) -> *const c_void {
12971        self.next
12972    }
12973}
12974
12975unsafe impl OutputChainStruct for PhysicalDeviceShaderUntypedPointersFeaturesKHR {
12976    #[inline]
12977    fn next_mut(&self) -> *mut c_void {
12978        self.next
12979    }
12980}
12981
12982unsafe impl InputChainStruct for PhysicalDeviceShadingRateImageFeaturesNV {
12983    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV;
12984
12985    #[inline]
12986    fn s_type(&self) -> StructureType {
12987        self.s_type
12988    }
12989
12990    #[inline]
12991    fn next(&self) -> *const c_void {
12992        self.next
12993    }
12994}
12995
12996unsafe impl OutputChainStruct for PhysicalDeviceShadingRateImageFeaturesNV {
12997    #[inline]
12998    fn next_mut(&self) -> *mut c_void {
12999        self.next
13000    }
13001}
13002
13003unsafe impl InputChainStruct for PhysicalDeviceShadingRateImagePropertiesNV {
13004    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV;
13005
13006    #[inline]
13007    fn s_type(&self) -> StructureType {
13008        self.s_type
13009    }
13010
13011    #[inline]
13012    fn next(&self) -> *const c_void {
13013        self.next
13014    }
13015}
13016
13017unsafe impl OutputChainStruct for PhysicalDeviceShadingRateImagePropertiesNV {
13018    #[inline]
13019    fn next_mut(&self) -> *mut c_void {
13020        self.next
13021    }
13022}
13023
13024unsafe impl InputChainStruct for PhysicalDeviceSparseImageFormatInfo2 {
13025    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2;
13026
13027    #[inline]
13028    fn s_type(&self) -> StructureType {
13029        self.s_type
13030    }
13031
13032    #[inline]
13033    fn next(&self) -> *const c_void {
13034        self.next
13035    }
13036}
13037
13038unsafe impl InputChainStruct for PhysicalDeviceSubgroupProperties {
13039    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SUBGROUP_PROPERTIES;
13040
13041    #[inline]
13042    fn s_type(&self) -> StructureType {
13043        self.s_type
13044    }
13045
13046    #[inline]
13047    fn next(&self) -> *const c_void {
13048        self.next
13049    }
13050}
13051
13052unsafe impl OutputChainStruct for PhysicalDeviceSubgroupProperties {
13053    #[inline]
13054    fn next_mut(&self) -> *mut c_void {
13055        self.next
13056    }
13057}
13058
13059unsafe impl InputChainStruct for PhysicalDeviceSubgroupSizeControlFeatures {
13060    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES;
13061
13062    #[inline]
13063    fn s_type(&self) -> StructureType {
13064        self.s_type
13065    }
13066
13067    #[inline]
13068    fn next(&self) -> *const c_void {
13069        self.next
13070    }
13071}
13072
13073unsafe impl OutputChainStruct for PhysicalDeviceSubgroupSizeControlFeatures {
13074    #[inline]
13075    fn next_mut(&self) -> *mut c_void {
13076        self.next
13077    }
13078}
13079
13080unsafe impl InputChainStruct for PhysicalDeviceSubgroupSizeControlProperties {
13081    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES;
13082
13083    #[inline]
13084    fn s_type(&self) -> StructureType {
13085        self.s_type
13086    }
13087
13088    #[inline]
13089    fn next(&self) -> *const c_void {
13090        self.next
13091    }
13092}
13093
13094unsafe impl OutputChainStruct for PhysicalDeviceSubgroupSizeControlProperties {
13095    #[inline]
13096    fn next_mut(&self) -> *mut c_void {
13097        self.next
13098    }
13099}
13100
13101unsafe impl InputChainStruct for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
13102    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT;
13103
13104    #[inline]
13105    fn s_type(&self) -> StructureType {
13106        self.s_type
13107    }
13108
13109    #[inline]
13110    fn next(&self) -> *const c_void {
13111        self.next
13112    }
13113}
13114
13115unsafe impl OutputChainStruct for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
13116    #[inline]
13117    fn next_mut(&self) -> *mut c_void {
13118        self.next
13119    }
13120}
13121
13122unsafe impl InputChainStruct for PhysicalDeviceSubpassShadingFeaturesHUAWEI {
13123    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI;
13124
13125    #[inline]
13126    fn s_type(&self) -> StructureType {
13127        self.s_type
13128    }
13129
13130    #[inline]
13131    fn next(&self) -> *const c_void {
13132        self.next
13133    }
13134}
13135
13136unsafe impl OutputChainStruct for PhysicalDeviceSubpassShadingFeaturesHUAWEI {
13137    #[inline]
13138    fn next_mut(&self) -> *mut c_void {
13139        self.next
13140    }
13141}
13142
13143unsafe impl InputChainStruct for PhysicalDeviceSubpassShadingPropertiesHUAWEI {
13144    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI;
13145
13146    #[inline]
13147    fn s_type(&self) -> StructureType {
13148        self.s_type
13149    }
13150
13151    #[inline]
13152    fn next(&self) -> *const c_void {
13153        self.next
13154    }
13155}
13156
13157unsafe impl OutputChainStruct for PhysicalDeviceSubpassShadingPropertiesHUAWEI {
13158    #[inline]
13159    fn next_mut(&self) -> *mut c_void {
13160        self.next
13161    }
13162}
13163
13164unsafe impl InputChainStruct for PhysicalDeviceSurfaceInfo2KHR {
13165    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SURFACE_INFO_2_KHR;
13166
13167    #[inline]
13168    fn s_type(&self) -> StructureType {
13169        self.s_type
13170    }
13171
13172    #[inline]
13173    fn next(&self) -> *const c_void {
13174        self.next
13175    }
13176}
13177
13178unsafe impl InputChainStruct for PhysicalDeviceSwapchainMaintenance1FeaturesKHR {
13179    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR;
13180
13181    #[inline]
13182    fn s_type(&self) -> StructureType {
13183        self.s_type
13184    }
13185
13186    #[inline]
13187    fn next(&self) -> *const c_void {
13188        self.next
13189    }
13190}
13191
13192unsafe impl OutputChainStruct for PhysicalDeviceSwapchainMaintenance1FeaturesKHR {
13193    #[inline]
13194    fn next_mut(&self) -> *mut c_void {
13195        self.next
13196    }
13197}
13198
13199unsafe impl InputChainStruct for PhysicalDeviceSynchronization2Features {
13200    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES;
13201
13202    #[inline]
13203    fn s_type(&self) -> StructureType {
13204        self.s_type
13205    }
13206
13207    #[inline]
13208    fn next(&self) -> *const c_void {
13209        self.next
13210    }
13211}
13212
13213unsafe impl OutputChainStruct for PhysicalDeviceSynchronization2Features {
13214    #[inline]
13215    fn next_mut(&self) -> *mut c_void {
13216        self.next
13217    }
13218}
13219
13220unsafe impl InputChainStruct for PhysicalDeviceTensorFeaturesARM {
13221    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TENSOR_FEATURES_ARM;
13222
13223    #[inline]
13224    fn s_type(&self) -> StructureType {
13225        self.s_type
13226    }
13227
13228    #[inline]
13229    fn next(&self) -> *const c_void {
13230        self.next
13231    }
13232}
13233
13234unsafe impl OutputChainStruct for PhysicalDeviceTensorFeaturesARM {
13235    #[inline]
13236    fn next_mut(&self) -> *mut c_void {
13237        self.next
13238    }
13239}
13240
13241unsafe impl InputChainStruct for PhysicalDeviceTensorPropertiesARM {
13242    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM;
13243
13244    #[inline]
13245    fn s_type(&self) -> StructureType {
13246        self.s_type
13247    }
13248
13249    #[inline]
13250    fn next(&self) -> *const c_void {
13251        self.next
13252    }
13253}
13254
13255unsafe impl OutputChainStruct for PhysicalDeviceTensorPropertiesARM {
13256    #[inline]
13257    fn next_mut(&self) -> *mut c_void {
13258        self.next
13259    }
13260}
13261
13262unsafe impl InputChainStruct for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
13263    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT;
13264
13265    #[inline]
13266    fn s_type(&self) -> StructureType {
13267        self.s_type
13268    }
13269
13270    #[inline]
13271    fn next(&self) -> *const c_void {
13272        self.next
13273    }
13274}
13275
13276unsafe impl OutputChainStruct for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
13277    #[inline]
13278    fn next_mut(&self) -> *mut c_void {
13279        self.next
13280    }
13281}
13282
13283unsafe impl InputChainStruct for PhysicalDeviceTexelBufferAlignmentProperties {
13284    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES;
13285
13286    #[inline]
13287    fn s_type(&self) -> StructureType {
13288        self.s_type
13289    }
13290
13291    #[inline]
13292    fn next(&self) -> *const c_void {
13293        self.next
13294    }
13295}
13296
13297unsafe impl OutputChainStruct for PhysicalDeviceTexelBufferAlignmentProperties {
13298    #[inline]
13299    fn next_mut(&self) -> *mut c_void {
13300        self.next
13301    }
13302}
13303
13304unsafe impl InputChainStruct for PhysicalDeviceTextureCompressionASTCHDRFeatures {
13305    const TYPE: StructureType =
13306        StructureType::PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES;
13307
13308    #[inline]
13309    fn s_type(&self) -> StructureType {
13310        self.s_type
13311    }
13312
13313    #[inline]
13314    fn next(&self) -> *const c_void {
13315        self.next
13316    }
13317}
13318
13319unsafe impl OutputChainStruct for PhysicalDeviceTextureCompressionASTCHDRFeatures {
13320    #[inline]
13321    fn next_mut(&self) -> *mut c_void {
13322        self.next
13323    }
13324}
13325
13326unsafe impl InputChainStruct for PhysicalDeviceTileMemoryHeapFeaturesQCOM {
13327    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM;
13328
13329    #[inline]
13330    fn s_type(&self) -> StructureType {
13331        self.s_type
13332    }
13333
13334    #[inline]
13335    fn next(&self) -> *const c_void {
13336        self.next
13337    }
13338}
13339
13340unsafe impl OutputChainStruct for PhysicalDeviceTileMemoryHeapFeaturesQCOM {
13341    #[inline]
13342    fn next_mut(&self) -> *mut c_void {
13343        self.next
13344    }
13345}
13346
13347unsafe impl InputChainStruct for PhysicalDeviceTileMemoryHeapPropertiesQCOM {
13348    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM;
13349
13350    #[inline]
13351    fn s_type(&self) -> StructureType {
13352        self.s_type
13353    }
13354
13355    #[inline]
13356    fn next(&self) -> *const c_void {
13357        self.next
13358    }
13359}
13360
13361unsafe impl OutputChainStruct for PhysicalDeviceTileMemoryHeapPropertiesQCOM {
13362    #[inline]
13363    fn next_mut(&self) -> *mut c_void {
13364        self.next
13365    }
13366}
13367
13368unsafe impl InputChainStruct for PhysicalDeviceTilePropertiesFeaturesQCOM {
13369    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM;
13370
13371    #[inline]
13372    fn s_type(&self) -> StructureType {
13373        self.s_type
13374    }
13375
13376    #[inline]
13377    fn next(&self) -> *const c_void {
13378        self.next
13379    }
13380}
13381
13382unsafe impl OutputChainStruct for PhysicalDeviceTilePropertiesFeaturesQCOM {
13383    #[inline]
13384    fn next_mut(&self) -> *mut c_void {
13385        self.next
13386    }
13387}
13388
13389unsafe impl InputChainStruct for PhysicalDeviceTileShadingFeaturesQCOM {
13390    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM;
13391
13392    #[inline]
13393    fn s_type(&self) -> StructureType {
13394        self.s_type
13395    }
13396
13397    #[inline]
13398    fn next(&self) -> *const c_void {
13399        self.next
13400    }
13401}
13402
13403unsafe impl OutputChainStruct for PhysicalDeviceTileShadingFeaturesQCOM {
13404    #[inline]
13405    fn next_mut(&self) -> *mut c_void {
13406        self.next
13407    }
13408}
13409
13410unsafe impl InputChainStruct for PhysicalDeviceTileShadingPropertiesQCOM {
13411    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM;
13412
13413    #[inline]
13414    fn s_type(&self) -> StructureType {
13415        self.s_type
13416    }
13417
13418    #[inline]
13419    fn next(&self) -> *const c_void {
13420        self.next
13421    }
13422}
13423
13424unsafe impl OutputChainStruct for PhysicalDeviceTileShadingPropertiesQCOM {
13425    #[inline]
13426    fn next_mut(&self) -> *mut c_void {
13427        self.next
13428    }
13429}
13430
13431unsafe impl InputChainStruct for PhysicalDeviceTimelineSemaphoreFeatures {
13432    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES;
13433
13434    #[inline]
13435    fn s_type(&self) -> StructureType {
13436        self.s_type
13437    }
13438
13439    #[inline]
13440    fn next(&self) -> *const c_void {
13441        self.next
13442    }
13443}
13444
13445unsafe impl OutputChainStruct for PhysicalDeviceTimelineSemaphoreFeatures {
13446    #[inline]
13447    fn next_mut(&self) -> *mut c_void {
13448        self.next
13449    }
13450}
13451
13452unsafe impl InputChainStruct for PhysicalDeviceTimelineSemaphoreProperties {
13453    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES;
13454
13455    #[inline]
13456    fn s_type(&self) -> StructureType {
13457        self.s_type
13458    }
13459
13460    #[inline]
13461    fn next(&self) -> *const c_void {
13462        self.next
13463    }
13464}
13465
13466unsafe impl OutputChainStruct for PhysicalDeviceTimelineSemaphoreProperties {
13467    #[inline]
13468    fn next_mut(&self) -> *mut c_void {
13469        self.next
13470    }
13471}
13472
13473unsafe impl InputChainStruct for PhysicalDeviceToolProperties {
13474    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TOOL_PROPERTIES;
13475
13476    #[inline]
13477    fn s_type(&self) -> StructureType {
13478        self.s_type
13479    }
13480
13481    #[inline]
13482    fn next(&self) -> *const c_void {
13483        self.next
13484    }
13485}
13486
13487unsafe impl OutputChainStruct for PhysicalDeviceToolProperties {
13488    #[inline]
13489    fn next_mut(&self) -> *mut c_void {
13490        self.next
13491    }
13492}
13493
13494unsafe impl InputChainStruct for PhysicalDeviceTransformFeedbackFeaturesEXT {
13495    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT;
13496
13497    #[inline]
13498    fn s_type(&self) -> StructureType {
13499        self.s_type
13500    }
13501
13502    #[inline]
13503    fn next(&self) -> *const c_void {
13504        self.next
13505    }
13506}
13507
13508unsafe impl OutputChainStruct for PhysicalDeviceTransformFeedbackFeaturesEXT {
13509    #[inline]
13510    fn next_mut(&self) -> *mut c_void {
13511        self.next
13512    }
13513}
13514
13515unsafe impl InputChainStruct for PhysicalDeviceTransformFeedbackPropertiesEXT {
13516    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT;
13517
13518    #[inline]
13519    fn s_type(&self) -> StructureType {
13520        self.s_type
13521    }
13522
13523    #[inline]
13524    fn next(&self) -> *const c_void {
13525        self.next
13526    }
13527}
13528
13529unsafe impl OutputChainStruct for PhysicalDeviceTransformFeedbackPropertiesEXT {
13530    #[inline]
13531    fn next_mut(&self) -> *mut c_void {
13532        self.next
13533    }
13534}
13535
13536unsafe impl InputChainStruct for PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {
13537    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR;
13538
13539    #[inline]
13540    fn s_type(&self) -> StructureType {
13541        self.s_type
13542    }
13543
13544    #[inline]
13545    fn next(&self) -> *const c_void {
13546        self.next
13547    }
13548}
13549
13550unsafe impl OutputChainStruct for PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {
13551    #[inline]
13552    fn next_mut(&self) -> *mut c_void {
13553        self.next
13554    }
13555}
13556
13557unsafe impl InputChainStruct for PhysicalDeviceUniformBufferStandardLayoutFeatures {
13558    const TYPE: StructureType =
13559        StructureType::PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES;
13560
13561    #[inline]
13562    fn s_type(&self) -> StructureType {
13563        self.s_type
13564    }
13565
13566    #[inline]
13567    fn next(&self) -> *const c_void {
13568        self.next
13569    }
13570}
13571
13572unsafe impl OutputChainStruct for PhysicalDeviceUniformBufferStandardLayoutFeatures {
13573    #[inline]
13574    fn next_mut(&self) -> *mut c_void {
13575        self.next
13576    }
13577}
13578
13579unsafe impl InputChainStruct for PhysicalDeviceVariablePointersFeatures {
13580    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES;
13581
13582    #[inline]
13583    fn s_type(&self) -> StructureType {
13584        self.s_type
13585    }
13586
13587    #[inline]
13588    fn next(&self) -> *const c_void {
13589        self.next
13590    }
13591}
13592
13593unsafe impl OutputChainStruct for PhysicalDeviceVariablePointersFeatures {
13594    #[inline]
13595    fn next_mut(&self) -> *mut c_void {
13596        self.next
13597    }
13598}
13599
13600unsafe impl InputChainStruct for PhysicalDeviceVertexAttributeDivisorFeatures {
13601    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES;
13602
13603    #[inline]
13604    fn s_type(&self) -> StructureType {
13605        self.s_type
13606    }
13607
13608    #[inline]
13609    fn next(&self) -> *const c_void {
13610        self.next
13611    }
13612}
13613
13614unsafe impl OutputChainStruct for PhysicalDeviceVertexAttributeDivisorFeatures {
13615    #[inline]
13616    fn next_mut(&self) -> *mut c_void {
13617        self.next
13618    }
13619}
13620
13621unsafe impl InputChainStruct for PhysicalDeviceVertexAttributeDivisorProperties {
13622    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES;
13623
13624    #[inline]
13625    fn s_type(&self) -> StructureType {
13626        self.s_type
13627    }
13628
13629    #[inline]
13630    fn next(&self) -> *const c_void {
13631        self.next
13632    }
13633}
13634
13635unsafe impl OutputChainStruct for PhysicalDeviceVertexAttributeDivisorProperties {
13636    #[inline]
13637    fn next_mut(&self) -> *mut c_void {
13638        self.next
13639    }
13640}
13641
13642unsafe impl InputChainStruct for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
13643    const TYPE: StructureType =
13644        StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT;
13645
13646    #[inline]
13647    fn s_type(&self) -> StructureType {
13648        self.s_type
13649    }
13650
13651    #[inline]
13652    fn next(&self) -> *const c_void {
13653        self.next
13654    }
13655}
13656
13657unsafe impl OutputChainStruct for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
13658    #[inline]
13659    fn next_mut(&self) -> *mut c_void {
13660        self.next
13661    }
13662}
13663
13664unsafe impl InputChainStruct for PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
13665    const TYPE: StructureType =
13666        StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT;
13667
13668    #[inline]
13669    fn s_type(&self) -> StructureType {
13670        self.s_type
13671    }
13672
13673    #[inline]
13674    fn next(&self) -> *const c_void {
13675        self.next
13676    }
13677}
13678
13679unsafe impl OutputChainStruct for PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
13680    #[inline]
13681    fn next_mut(&self) -> *mut c_void {
13682        self.next
13683    }
13684}
13685
13686unsafe impl InputChainStruct for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
13687    const TYPE: StructureType =
13688        StructureType::PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT;
13689
13690    #[inline]
13691    fn s_type(&self) -> StructureType {
13692        self.s_type
13693    }
13694
13695    #[inline]
13696    fn next(&self) -> *const c_void {
13697        self.next
13698    }
13699}
13700
13701unsafe impl OutputChainStruct for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
13702    #[inline]
13703    fn next_mut(&self) -> *mut c_void {
13704        self.next
13705    }
13706}
13707
13708unsafe impl InputChainStruct for PhysicalDeviceVideoDecodeVP9FeaturesKHR {
13709    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR;
13710
13711    #[inline]
13712    fn s_type(&self) -> StructureType {
13713        self.s_type
13714    }
13715
13716    #[inline]
13717    fn next(&self) -> *const c_void {
13718        self.next
13719    }
13720}
13721
13722unsafe impl OutputChainStruct for PhysicalDeviceVideoDecodeVP9FeaturesKHR {
13723    #[inline]
13724    fn next_mut(&self) -> *mut c_void {
13725        self.next
13726    }
13727}
13728
13729unsafe impl InputChainStruct for PhysicalDeviceVideoEncodeAV1FeaturesKHR {
13730    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR;
13731
13732    #[inline]
13733    fn s_type(&self) -> StructureType {
13734        self.s_type
13735    }
13736
13737    #[inline]
13738    fn next(&self) -> *const c_void {
13739        self.next
13740    }
13741}
13742
13743unsafe impl OutputChainStruct for PhysicalDeviceVideoEncodeAV1FeaturesKHR {
13744    #[inline]
13745    fn next_mut(&self) -> *mut c_void {
13746        self.next
13747    }
13748}
13749
13750unsafe impl InputChainStruct for PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {
13751    const TYPE: StructureType =
13752        StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR;
13753
13754    #[inline]
13755    fn s_type(&self) -> StructureType {
13756        self.s_type
13757    }
13758
13759    #[inline]
13760    fn next(&self) -> *const c_void {
13761        self.next
13762    }
13763}
13764
13765unsafe impl OutputChainStruct for PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {
13766    #[inline]
13767    fn next_mut(&self) -> *mut c_void {
13768        self.next
13769    }
13770}
13771
13772unsafe impl InputChainStruct for PhysicalDeviceVideoEncodeQualityLevelInfoKHR {
13773    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR;
13774
13775    #[inline]
13776    fn s_type(&self) -> StructureType {
13777        self.s_type
13778    }
13779
13780    #[inline]
13781    fn next(&self) -> *const c_void {
13782        self.next
13783    }
13784}
13785
13786unsafe impl InputChainStruct for PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {
13787    const TYPE: StructureType =
13788        StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR;
13789
13790    #[inline]
13791    fn s_type(&self) -> StructureType {
13792        self.s_type
13793    }
13794
13795    #[inline]
13796    fn next(&self) -> *const c_void {
13797        self.next
13798    }
13799}
13800
13801unsafe impl OutputChainStruct for PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {
13802    #[inline]
13803    fn next_mut(&self) -> *mut c_void {
13804        self.next
13805    }
13806}
13807
13808unsafe impl InputChainStruct for PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {
13809    const TYPE: StructureType =
13810        StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_RGB_CONVERSION_FEATURES_VALVE;
13811
13812    #[inline]
13813    fn s_type(&self) -> StructureType {
13814        self.s_type
13815    }
13816
13817    #[inline]
13818    fn next(&self) -> *const c_void {
13819        self.next
13820    }
13821}
13822
13823unsafe impl OutputChainStruct for PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {
13824    #[inline]
13825    fn next_mut(&self) -> *mut c_void {
13826        self.next
13827    }
13828}
13829
13830unsafe impl InputChainStruct for PhysicalDeviceVideoFormatInfoKHR {
13831    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR;
13832
13833    #[inline]
13834    fn s_type(&self) -> StructureType {
13835        self.s_type
13836    }
13837
13838    #[inline]
13839    fn next(&self) -> *const c_void {
13840        self.next
13841    }
13842}
13843
13844unsafe impl InputChainStruct for PhysicalDeviceVideoMaintenance1FeaturesKHR {
13845    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR;
13846
13847    #[inline]
13848    fn s_type(&self) -> StructureType {
13849        self.s_type
13850    }
13851
13852    #[inline]
13853    fn next(&self) -> *const c_void {
13854        self.next
13855    }
13856}
13857
13858unsafe impl OutputChainStruct for PhysicalDeviceVideoMaintenance1FeaturesKHR {
13859    #[inline]
13860    fn next_mut(&self) -> *mut c_void {
13861        self.next
13862    }
13863}
13864
13865unsafe impl InputChainStruct for PhysicalDeviceVideoMaintenance2FeaturesKHR {
13866    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR;
13867
13868    #[inline]
13869    fn s_type(&self) -> StructureType {
13870        self.s_type
13871    }
13872
13873    #[inline]
13874    fn next(&self) -> *const c_void {
13875        self.next
13876    }
13877}
13878
13879unsafe impl OutputChainStruct for PhysicalDeviceVideoMaintenance2FeaturesKHR {
13880    #[inline]
13881    fn next_mut(&self) -> *mut c_void {
13882        self.next
13883    }
13884}
13885
13886unsafe impl InputChainStruct for PhysicalDeviceVulkan11Features {
13887    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VULKAN_1_1_FEATURES;
13888
13889    #[inline]
13890    fn s_type(&self) -> StructureType {
13891        self.s_type
13892    }
13893
13894    #[inline]
13895    fn next(&self) -> *const c_void {
13896        self.next
13897    }
13898}
13899
13900unsafe impl OutputChainStruct for PhysicalDeviceVulkan11Features {
13901    #[inline]
13902    fn next_mut(&self) -> *mut c_void {
13903        self.next
13904    }
13905}
13906
13907unsafe impl InputChainStruct for PhysicalDeviceVulkan11Properties {
13908    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES;
13909
13910    #[inline]
13911    fn s_type(&self) -> StructureType {
13912        self.s_type
13913    }
13914
13915    #[inline]
13916    fn next(&self) -> *const c_void {
13917        self.next
13918    }
13919}
13920
13921unsafe impl OutputChainStruct for PhysicalDeviceVulkan11Properties {
13922    #[inline]
13923    fn next_mut(&self) -> *mut c_void {
13924        self.next
13925    }
13926}
13927
13928unsafe impl InputChainStruct for PhysicalDeviceVulkan12Features {
13929    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VULKAN_1_2_FEATURES;
13930
13931    #[inline]
13932    fn s_type(&self) -> StructureType {
13933        self.s_type
13934    }
13935
13936    #[inline]
13937    fn next(&self) -> *const c_void {
13938        self.next
13939    }
13940}
13941
13942unsafe impl OutputChainStruct for PhysicalDeviceVulkan12Features {
13943    #[inline]
13944    fn next_mut(&self) -> *mut c_void {
13945        self.next
13946    }
13947}
13948
13949unsafe impl InputChainStruct for PhysicalDeviceVulkan12Properties {
13950    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES;
13951
13952    #[inline]
13953    fn s_type(&self) -> StructureType {
13954        self.s_type
13955    }
13956
13957    #[inline]
13958    fn next(&self) -> *const c_void {
13959        self.next
13960    }
13961}
13962
13963unsafe impl OutputChainStruct for PhysicalDeviceVulkan12Properties {
13964    #[inline]
13965    fn next_mut(&self) -> *mut c_void {
13966        self.next
13967    }
13968}
13969
13970unsafe impl InputChainStruct for PhysicalDeviceVulkan13Features {
13971    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VULKAN_1_3_FEATURES;
13972
13973    #[inline]
13974    fn s_type(&self) -> StructureType {
13975        self.s_type
13976    }
13977
13978    #[inline]
13979    fn next(&self) -> *const c_void {
13980        self.next
13981    }
13982}
13983
13984unsafe impl OutputChainStruct for PhysicalDeviceVulkan13Features {
13985    #[inline]
13986    fn next_mut(&self) -> *mut c_void {
13987        self.next
13988    }
13989}
13990
13991unsafe impl InputChainStruct for PhysicalDeviceVulkan13Properties {
13992    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES;
13993
13994    #[inline]
13995    fn s_type(&self) -> StructureType {
13996        self.s_type
13997    }
13998
13999    #[inline]
14000    fn next(&self) -> *const c_void {
14001        self.next
14002    }
14003}
14004
14005unsafe impl OutputChainStruct for PhysicalDeviceVulkan13Properties {
14006    #[inline]
14007    fn next_mut(&self) -> *mut c_void {
14008        self.next
14009    }
14010}
14011
14012unsafe impl InputChainStruct for PhysicalDeviceVulkan14Features {
14013    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VULKAN_1_4_FEATURES;
14014
14015    #[inline]
14016    fn s_type(&self) -> StructureType {
14017        self.s_type
14018    }
14019
14020    #[inline]
14021    fn next(&self) -> *const c_void {
14022        self.next
14023    }
14024}
14025
14026unsafe impl OutputChainStruct for PhysicalDeviceVulkan14Features {
14027    #[inline]
14028    fn next_mut(&self) -> *mut c_void {
14029        self.next
14030    }
14031}
14032
14033unsafe impl InputChainStruct for PhysicalDeviceVulkan14Properties {
14034    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES;
14035
14036    #[inline]
14037    fn s_type(&self) -> StructureType {
14038        self.s_type
14039    }
14040
14041    #[inline]
14042    fn next(&self) -> *const c_void {
14043        self.next
14044    }
14045}
14046
14047unsafe impl OutputChainStruct for PhysicalDeviceVulkan14Properties {
14048    #[inline]
14049    fn next_mut(&self) -> *mut c_void {
14050        self.next
14051    }
14052}
14053
14054unsafe impl InputChainStruct for PhysicalDeviceVulkanMemoryModelFeatures {
14055    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES;
14056
14057    #[inline]
14058    fn s_type(&self) -> StructureType {
14059        self.s_type
14060    }
14061
14062    #[inline]
14063    fn next(&self) -> *const c_void {
14064        self.next
14065    }
14066}
14067
14068unsafe impl OutputChainStruct for PhysicalDeviceVulkanMemoryModelFeatures {
14069    #[inline]
14070    fn next_mut(&self) -> *mut c_void {
14071        self.next
14072    }
14073}
14074
14075unsafe impl InputChainStruct for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
14076    const TYPE: StructureType =
14077        StructureType::PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR;
14078
14079    #[inline]
14080    fn s_type(&self) -> StructureType {
14081        self.s_type
14082    }
14083
14084    #[inline]
14085    fn next(&self) -> *const c_void {
14086        self.next
14087    }
14088}
14089
14090unsafe impl OutputChainStruct for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
14091    #[inline]
14092    fn next_mut(&self) -> *mut c_void {
14093        self.next
14094    }
14095}
14096
14097unsafe impl InputChainStruct for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
14098    const TYPE: StructureType =
14099        StructureType::PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT;
14100
14101    #[inline]
14102    fn s_type(&self) -> StructureType {
14103        self.s_type
14104    }
14105
14106    #[inline]
14107    fn next(&self) -> *const c_void {
14108        self.next
14109    }
14110}
14111
14112unsafe impl OutputChainStruct for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
14113    #[inline]
14114    fn next_mut(&self) -> *mut c_void {
14115        self.next
14116    }
14117}
14118
14119unsafe impl InputChainStruct for PhysicalDeviceYcbcrDegammaFeaturesQCOM {
14120    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM;
14121
14122    #[inline]
14123    fn s_type(&self) -> StructureType {
14124        self.s_type
14125    }
14126
14127    #[inline]
14128    fn next(&self) -> *const c_void {
14129        self.next
14130    }
14131}
14132
14133unsafe impl OutputChainStruct for PhysicalDeviceYcbcrDegammaFeaturesQCOM {
14134    #[inline]
14135    fn next_mut(&self) -> *mut c_void {
14136        self.next
14137    }
14138}
14139
14140unsafe impl InputChainStruct for PhysicalDeviceYcbcrImageArraysFeaturesEXT {
14141    const TYPE: StructureType = StructureType::PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT;
14142
14143    #[inline]
14144    fn s_type(&self) -> StructureType {
14145        self.s_type
14146    }
14147
14148    #[inline]
14149    fn next(&self) -> *const c_void {
14150        self.next
14151    }
14152}
14153
14154unsafe impl OutputChainStruct for PhysicalDeviceYcbcrImageArraysFeaturesEXT {
14155    #[inline]
14156    fn next_mut(&self) -> *mut c_void {
14157        self.next
14158    }
14159}
14160
14161unsafe impl InputChainStruct for PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {
14162    const TYPE: StructureType =
14163        StructureType::PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT;
14164
14165    #[inline]
14166    fn s_type(&self) -> StructureType {
14167        self.s_type
14168    }
14169
14170    #[inline]
14171    fn next(&self) -> *const c_void {
14172        self.next
14173    }
14174}
14175
14176unsafe impl OutputChainStruct for PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {
14177    #[inline]
14178    fn next_mut(&self) -> *mut c_void {
14179        self.next
14180    }
14181}
14182
14183unsafe impl InputChainStruct for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {
14184    const TYPE: StructureType =
14185        StructureType::PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES;
14186
14187    #[inline]
14188    fn s_type(&self) -> StructureType {
14189        self.s_type
14190    }
14191
14192    #[inline]
14193    fn next(&self) -> *const c_void {
14194        self.next
14195    }
14196}
14197
14198unsafe impl OutputChainStruct for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {
14199    #[inline]
14200    fn next_mut(&self) -> *mut c_void {
14201        self.next
14202    }
14203}
14204
14205unsafe impl InputChainStruct for PipelineBinaryCreateInfoKHR {
14206    const TYPE: StructureType = StructureType::PIPELINE_BINARY_CREATE_INFO_KHR;
14207
14208    #[inline]
14209    fn s_type(&self) -> StructureType {
14210        self.s_type
14211    }
14212
14213    #[inline]
14214    fn next(&self) -> *const c_void {
14215        self.next
14216    }
14217}
14218
14219unsafe impl InputChainStruct for PipelineBinaryDataInfoKHR {
14220    const TYPE: StructureType = StructureType::PIPELINE_BINARY_DATA_INFO_KHR;
14221
14222    #[inline]
14223    fn s_type(&self) -> StructureType {
14224        self.s_type
14225    }
14226
14227    #[inline]
14228    fn next(&self) -> *const c_void {
14229        self.next
14230    }
14231}
14232
14233unsafe impl OutputChainStruct for PipelineBinaryDataInfoKHR {
14234    #[inline]
14235    fn next_mut(&self) -> *mut c_void {
14236        self.next
14237    }
14238}
14239
14240unsafe impl InputChainStruct for PipelineBinaryHandlesInfoKHR {
14241    const TYPE: StructureType = StructureType::PIPELINE_BINARY_HANDLES_INFO_KHR;
14242
14243    #[inline]
14244    fn s_type(&self) -> StructureType {
14245        self.s_type
14246    }
14247
14248    #[inline]
14249    fn next(&self) -> *const c_void {
14250        self.next
14251    }
14252}
14253
14254unsafe impl InputChainStruct for PipelineBinaryInfoKHR {
14255    const TYPE: StructureType = StructureType::PIPELINE_BINARY_INFO_KHR;
14256
14257    #[inline]
14258    fn s_type(&self) -> StructureType {
14259        self.s_type
14260    }
14261
14262    #[inline]
14263    fn next(&self) -> *const c_void {
14264        self.next
14265    }
14266}
14267
14268unsafe impl InputChainStruct for PipelineBinaryKeyKHR {
14269    const TYPE: StructureType = StructureType::PIPELINE_BINARY_KEY_KHR;
14270
14271    #[inline]
14272    fn s_type(&self) -> StructureType {
14273        self.s_type
14274    }
14275
14276    #[inline]
14277    fn next(&self) -> *const c_void {
14278        self.next
14279    }
14280}
14281
14282unsafe impl OutputChainStruct for PipelineBinaryKeyKHR {
14283    #[inline]
14284    fn next_mut(&self) -> *mut c_void {
14285        self.next
14286    }
14287}
14288
14289unsafe impl InputChainStruct for PipelineCacheCreateInfo {
14290    const TYPE: StructureType = StructureType::PIPELINE_CACHE_CREATE_INFO;
14291
14292    #[inline]
14293    fn s_type(&self) -> StructureType {
14294        self.s_type
14295    }
14296
14297    #[inline]
14298    fn next(&self) -> *const c_void {
14299        self.next
14300    }
14301}
14302
14303unsafe impl InputChainStruct for PipelineColorBlendAdvancedStateCreateInfoEXT {
14304    const TYPE: StructureType = StructureType::PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT;
14305
14306    #[inline]
14307    fn s_type(&self) -> StructureType {
14308        self.s_type
14309    }
14310
14311    #[inline]
14312    fn next(&self) -> *const c_void {
14313        self.next
14314    }
14315}
14316
14317unsafe impl InputChainStruct for PipelineColorBlendStateCreateInfo {
14318    const TYPE: StructureType = StructureType::PIPELINE_COLOR_BLEND_STATE_CREATE_INFO;
14319
14320    #[inline]
14321    fn s_type(&self) -> StructureType {
14322        self.s_type
14323    }
14324
14325    #[inline]
14326    fn next(&self) -> *const c_void {
14327        self.next
14328    }
14329}
14330
14331unsafe impl InputChainStruct for PipelineColorWriteCreateInfoEXT {
14332    const TYPE: StructureType = StructureType::PIPELINE_COLOR_WRITE_CREATE_INFO_EXT;
14333
14334    #[inline]
14335    fn s_type(&self) -> StructureType {
14336        self.s_type
14337    }
14338
14339    #[inline]
14340    fn next(&self) -> *const c_void {
14341        self.next
14342    }
14343}
14344
14345unsafe impl InputChainStruct for PipelineCompilerControlCreateInfoAMD {
14346    const TYPE: StructureType = StructureType::PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD;
14347
14348    #[inline]
14349    fn s_type(&self) -> StructureType {
14350        self.s_type
14351    }
14352
14353    #[inline]
14354    fn next(&self) -> *const c_void {
14355        self.next
14356    }
14357}
14358
14359unsafe impl InputChainStruct for PipelineCoverageModulationStateCreateInfoNV {
14360    const TYPE: StructureType = StructureType::PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV;
14361
14362    #[inline]
14363    fn s_type(&self) -> StructureType {
14364        self.s_type
14365    }
14366
14367    #[inline]
14368    fn next(&self) -> *const c_void {
14369        self.next
14370    }
14371}
14372
14373unsafe impl InputChainStruct for PipelineCoverageReductionStateCreateInfoNV {
14374    const TYPE: StructureType = StructureType::PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV;
14375
14376    #[inline]
14377    fn s_type(&self) -> StructureType {
14378        self.s_type
14379    }
14380
14381    #[inline]
14382    fn next(&self) -> *const c_void {
14383        self.next
14384    }
14385}
14386
14387unsafe impl InputChainStruct for PipelineCoverageToColorStateCreateInfoNV {
14388    const TYPE: StructureType = StructureType::PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV;
14389
14390    #[inline]
14391    fn s_type(&self) -> StructureType {
14392        self.s_type
14393    }
14394
14395    #[inline]
14396    fn next(&self) -> *const c_void {
14397        self.next
14398    }
14399}
14400
14401unsafe impl InputChainStruct for PipelineCreateFlags2CreateInfo {
14402    const TYPE: StructureType = StructureType::PIPELINE_CREATE_FLAGS_2_CREATE_INFO;
14403
14404    #[inline]
14405    fn s_type(&self) -> StructureType {
14406        self.s_type
14407    }
14408
14409    #[inline]
14410    fn next(&self) -> *const c_void {
14411        self.next
14412    }
14413}
14414
14415unsafe impl InputChainStruct for PipelineCreateInfoKHR {
14416    const TYPE: StructureType = StructureType::PIPELINE_CREATE_INFO_KHR;
14417
14418    #[inline]
14419    fn s_type(&self) -> StructureType {
14420        self.s_type
14421    }
14422
14423    #[inline]
14424    fn next(&self) -> *const c_void {
14425        self.next
14426    }
14427}
14428
14429unsafe impl OutputChainStruct for PipelineCreateInfoKHR {
14430    #[inline]
14431    fn next_mut(&self) -> *mut c_void {
14432        self.next
14433    }
14434}
14435
14436unsafe impl InputChainStruct for PipelineCreationFeedbackCreateInfo {
14437    const TYPE: StructureType = StructureType::PIPELINE_CREATION_FEEDBACK_CREATE_INFO;
14438
14439    #[inline]
14440    fn s_type(&self) -> StructureType {
14441        self.s_type
14442    }
14443
14444    #[inline]
14445    fn next(&self) -> *const c_void {
14446        self.next
14447    }
14448}
14449
14450unsafe impl InputChainStruct for PipelineDepthStencilStateCreateInfo {
14451    const TYPE: StructureType = StructureType::PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO;
14452
14453    #[inline]
14454    fn s_type(&self) -> StructureType {
14455        self.s_type
14456    }
14457
14458    #[inline]
14459    fn next(&self) -> *const c_void {
14460        self.next
14461    }
14462}
14463
14464unsafe impl InputChainStruct for PipelineDiscardRectangleStateCreateInfoEXT {
14465    const TYPE: StructureType = StructureType::PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT;
14466
14467    #[inline]
14468    fn s_type(&self) -> StructureType {
14469        self.s_type
14470    }
14471
14472    #[inline]
14473    fn next(&self) -> *const c_void {
14474        self.next
14475    }
14476}
14477
14478unsafe impl InputChainStruct for PipelineDynamicStateCreateInfo {
14479    const TYPE: StructureType = StructureType::PIPELINE_DYNAMIC_STATE_CREATE_INFO;
14480
14481    #[inline]
14482    fn s_type(&self) -> StructureType {
14483        self.s_type
14484    }
14485
14486    #[inline]
14487    fn next(&self) -> *const c_void {
14488        self.next
14489    }
14490}
14491
14492unsafe impl InputChainStruct for PipelineExecutableInfoKHR {
14493    const TYPE: StructureType = StructureType::PIPELINE_EXECUTABLE_INFO_KHR;
14494
14495    #[inline]
14496    fn s_type(&self) -> StructureType {
14497        self.s_type
14498    }
14499
14500    #[inline]
14501    fn next(&self) -> *const c_void {
14502        self.next
14503    }
14504}
14505
14506unsafe impl InputChainStruct for PipelineExecutableInternalRepresentationKHR {
14507    const TYPE: StructureType = StructureType::PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR;
14508
14509    #[inline]
14510    fn s_type(&self) -> StructureType {
14511        self.s_type
14512    }
14513
14514    #[inline]
14515    fn next(&self) -> *const c_void {
14516        self.next
14517    }
14518}
14519
14520unsafe impl OutputChainStruct for PipelineExecutableInternalRepresentationKHR {
14521    #[inline]
14522    fn next_mut(&self) -> *mut c_void {
14523        self.next
14524    }
14525}
14526
14527unsafe impl InputChainStruct for PipelineExecutablePropertiesKHR {
14528    const TYPE: StructureType = StructureType::PIPELINE_EXECUTABLE_PROPERTIES_KHR;
14529
14530    #[inline]
14531    fn s_type(&self) -> StructureType {
14532        self.s_type
14533    }
14534
14535    #[inline]
14536    fn next(&self) -> *const c_void {
14537        self.next
14538    }
14539}
14540
14541unsafe impl OutputChainStruct for PipelineExecutablePropertiesKHR {
14542    #[inline]
14543    fn next_mut(&self) -> *mut c_void {
14544        self.next
14545    }
14546}
14547
14548unsafe impl InputChainStruct for PipelineExecutableStatisticKHR {
14549    const TYPE: StructureType = StructureType::PIPELINE_EXECUTABLE_STATISTIC_KHR;
14550
14551    #[inline]
14552    fn s_type(&self) -> StructureType {
14553        self.s_type
14554    }
14555
14556    #[inline]
14557    fn next(&self) -> *const c_void {
14558        self.next
14559    }
14560}
14561
14562unsafe impl OutputChainStruct for PipelineExecutableStatisticKHR {
14563    #[inline]
14564    fn next_mut(&self) -> *mut c_void {
14565        self.next
14566    }
14567}
14568
14569unsafe impl InputChainStruct for PipelineFragmentDensityMapLayeredCreateInfoVALVE {
14570    const TYPE: StructureType =
14571        StructureType::PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE;
14572
14573    #[inline]
14574    fn s_type(&self) -> StructureType {
14575        self.s_type
14576    }
14577
14578    #[inline]
14579    fn next(&self) -> *const c_void {
14580        self.next
14581    }
14582}
14583
14584unsafe impl InputChainStruct for PipelineFragmentShadingRateEnumStateCreateInfoNV {
14585    const TYPE: StructureType =
14586        StructureType::PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV;
14587
14588    #[inline]
14589    fn s_type(&self) -> StructureType {
14590        self.s_type
14591    }
14592
14593    #[inline]
14594    fn next(&self) -> *const c_void {
14595        self.next
14596    }
14597}
14598
14599unsafe impl InputChainStruct for PipelineFragmentShadingRateStateCreateInfoKHR {
14600    const TYPE: StructureType = StructureType::PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR;
14601
14602    #[inline]
14603    fn s_type(&self) -> StructureType {
14604        self.s_type
14605    }
14606
14607    #[inline]
14608    fn next(&self) -> *const c_void {
14609        self.next
14610    }
14611}
14612
14613unsafe impl InputChainStruct for PipelineIndirectDeviceAddressInfoNV {
14614    const TYPE: StructureType = StructureType::PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV;
14615
14616    #[inline]
14617    fn s_type(&self) -> StructureType {
14618        self.s_type
14619    }
14620
14621    #[inline]
14622    fn next(&self) -> *const c_void {
14623        self.next
14624    }
14625}
14626
14627unsafe impl InputChainStruct for PipelineInfoKHR {
14628    const TYPE: StructureType = StructureType::PIPELINE_INFO_KHR;
14629
14630    #[inline]
14631    fn s_type(&self) -> StructureType {
14632        self.s_type
14633    }
14634
14635    #[inline]
14636    fn next(&self) -> *const c_void {
14637        self.next
14638    }
14639}
14640
14641unsafe impl InputChainStruct for PipelineInputAssemblyStateCreateInfo {
14642    const TYPE: StructureType = StructureType::PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO;
14643
14644    #[inline]
14645    fn s_type(&self) -> StructureType {
14646        self.s_type
14647    }
14648
14649    #[inline]
14650    fn next(&self) -> *const c_void {
14651        self.next
14652    }
14653}
14654
14655unsafe impl InputChainStruct for PipelineLayoutCreateInfo {
14656    const TYPE: StructureType = StructureType::PIPELINE_LAYOUT_CREATE_INFO;
14657
14658    #[inline]
14659    fn s_type(&self) -> StructureType {
14660        self.s_type
14661    }
14662
14663    #[inline]
14664    fn next(&self) -> *const c_void {
14665        self.next
14666    }
14667}
14668
14669unsafe impl InputChainStruct for PipelineLibraryCreateInfoKHR {
14670    const TYPE: StructureType = StructureType::PIPELINE_LIBRARY_CREATE_INFO_KHR;
14671
14672    #[inline]
14673    fn s_type(&self) -> StructureType {
14674        self.s_type
14675    }
14676
14677    #[inline]
14678    fn next(&self) -> *const c_void {
14679        self.next
14680    }
14681}
14682
14683unsafe impl InputChainStruct for PipelineMultisampleStateCreateInfo {
14684    const TYPE: StructureType = StructureType::PIPELINE_MULTISAMPLE_STATE_CREATE_INFO;
14685
14686    #[inline]
14687    fn s_type(&self) -> StructureType {
14688        self.s_type
14689    }
14690
14691    #[inline]
14692    fn next(&self) -> *const c_void {
14693        self.next
14694    }
14695}
14696
14697unsafe impl InputChainStruct for PipelinePropertiesIdentifierEXT {
14698    const TYPE: StructureType = StructureType::PIPELINE_PROPERTIES_IDENTIFIER_EXT;
14699
14700    #[inline]
14701    fn s_type(&self) -> StructureType {
14702        self.s_type
14703    }
14704
14705    #[inline]
14706    fn next(&self) -> *const c_void {
14707        self.next
14708    }
14709}
14710
14711unsafe impl OutputChainStruct for PipelinePropertiesIdentifierEXT {
14712    #[inline]
14713    fn next_mut(&self) -> *mut c_void {
14714        self.next
14715    }
14716}
14717
14718unsafe impl InputChainStruct for PipelineRasterizationConservativeStateCreateInfoEXT {
14719    const TYPE: StructureType =
14720        StructureType::PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT;
14721
14722    #[inline]
14723    fn s_type(&self) -> StructureType {
14724        self.s_type
14725    }
14726
14727    #[inline]
14728    fn next(&self) -> *const c_void {
14729        self.next
14730    }
14731}
14732
14733unsafe impl InputChainStruct for PipelineRasterizationDepthClipStateCreateInfoEXT {
14734    const TYPE: StructureType =
14735        StructureType::PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT;
14736
14737    #[inline]
14738    fn s_type(&self) -> StructureType {
14739        self.s_type
14740    }
14741
14742    #[inline]
14743    fn next(&self) -> *const c_void {
14744        self.next
14745    }
14746}
14747
14748unsafe impl InputChainStruct for PipelineRasterizationLineStateCreateInfo {
14749    const TYPE: StructureType = StructureType::PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO;
14750
14751    #[inline]
14752    fn s_type(&self) -> StructureType {
14753        self.s_type
14754    }
14755
14756    #[inline]
14757    fn next(&self) -> *const c_void {
14758        self.next
14759    }
14760}
14761
14762unsafe impl InputChainStruct for PipelineRasterizationProvokingVertexStateCreateInfoEXT {
14763    const TYPE: StructureType =
14764        StructureType::PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT;
14765
14766    #[inline]
14767    fn s_type(&self) -> StructureType {
14768        self.s_type
14769    }
14770
14771    #[inline]
14772    fn next(&self) -> *const c_void {
14773        self.next
14774    }
14775}
14776
14777unsafe impl InputChainStruct for PipelineRasterizationStateCreateInfo {
14778    const TYPE: StructureType = StructureType::PIPELINE_RASTERIZATION_STATE_CREATE_INFO;
14779
14780    #[inline]
14781    fn s_type(&self) -> StructureType {
14782        self.s_type
14783    }
14784
14785    #[inline]
14786    fn next(&self) -> *const c_void {
14787        self.next
14788    }
14789}
14790
14791unsafe impl InputChainStruct for PipelineRasterizationStateRasterizationOrderAMD {
14792    const TYPE: StructureType = StructureType::PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD;
14793
14794    #[inline]
14795    fn s_type(&self) -> StructureType {
14796        self.s_type
14797    }
14798
14799    #[inline]
14800    fn next(&self) -> *const c_void {
14801        self.next
14802    }
14803}
14804
14805unsafe impl InputChainStruct for PipelineRasterizationStateStreamCreateInfoEXT {
14806    const TYPE: StructureType = StructureType::PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT;
14807
14808    #[inline]
14809    fn s_type(&self) -> StructureType {
14810        self.s_type
14811    }
14812
14813    #[inline]
14814    fn next(&self) -> *const c_void {
14815        self.next
14816    }
14817}
14818
14819unsafe impl InputChainStruct for PipelineRenderingCreateInfo {
14820    const TYPE: StructureType = StructureType::PIPELINE_RENDERING_CREATE_INFO;
14821
14822    #[inline]
14823    fn s_type(&self) -> StructureType {
14824        self.s_type
14825    }
14826
14827    #[inline]
14828    fn next(&self) -> *const c_void {
14829        self.next
14830    }
14831}
14832
14833unsafe impl InputChainStruct for PipelineRepresentativeFragmentTestStateCreateInfoNV {
14834    const TYPE: StructureType =
14835        StructureType::PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV;
14836
14837    #[inline]
14838    fn s_type(&self) -> StructureType {
14839        self.s_type
14840    }
14841
14842    #[inline]
14843    fn next(&self) -> *const c_void {
14844        self.next
14845    }
14846}
14847
14848unsafe impl InputChainStruct for PipelineRobustnessCreateInfo {
14849    const TYPE: StructureType = StructureType::PIPELINE_ROBUSTNESS_CREATE_INFO;
14850
14851    #[inline]
14852    fn s_type(&self) -> StructureType {
14853        self.s_type
14854    }
14855
14856    #[inline]
14857    fn next(&self) -> *const c_void {
14858        self.next
14859    }
14860}
14861
14862unsafe impl InputChainStruct for PipelineSampleLocationsStateCreateInfoEXT {
14863    const TYPE: StructureType = StructureType::PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT;
14864
14865    #[inline]
14866    fn s_type(&self) -> StructureType {
14867        self.s_type
14868    }
14869
14870    #[inline]
14871    fn next(&self) -> *const c_void {
14872        self.next
14873    }
14874}
14875
14876unsafe impl InputChainStruct for PipelineShaderStageCreateInfo {
14877    const TYPE: StructureType = StructureType::PIPELINE_SHADER_STAGE_CREATE_INFO;
14878
14879    #[inline]
14880    fn s_type(&self) -> StructureType {
14881        self.s_type
14882    }
14883
14884    #[inline]
14885    fn next(&self) -> *const c_void {
14886        self.next
14887    }
14888}
14889
14890unsafe impl InputChainStruct for PipelineShaderStageModuleIdentifierCreateInfoEXT {
14891    const TYPE: StructureType =
14892        StructureType::PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT;
14893
14894    #[inline]
14895    fn s_type(&self) -> StructureType {
14896        self.s_type
14897    }
14898
14899    #[inline]
14900    fn next(&self) -> *const c_void {
14901        self.next
14902    }
14903}
14904
14905unsafe impl InputChainStruct for PipelineShaderStageNodeCreateInfoAMDX {
14906    const TYPE: StructureType = StructureType::PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX;
14907
14908    #[inline]
14909    fn s_type(&self) -> StructureType {
14910        self.s_type
14911    }
14912
14913    #[inline]
14914    fn next(&self) -> *const c_void {
14915        self.next
14916    }
14917}
14918
14919unsafe impl InputChainStruct for PipelineShaderStageRequiredSubgroupSizeCreateInfo {
14920    const TYPE: StructureType =
14921        StructureType::PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO;
14922
14923    #[inline]
14924    fn s_type(&self) -> StructureType {
14925        self.s_type
14926    }
14927
14928    #[inline]
14929    fn next(&self) -> *const c_void {
14930        self.next
14931    }
14932}
14933
14934unsafe impl InputChainStruct for PipelineTessellationDomainOriginStateCreateInfo {
14935    const TYPE: StructureType =
14936        StructureType::PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO;
14937
14938    #[inline]
14939    fn s_type(&self) -> StructureType {
14940        self.s_type
14941    }
14942
14943    #[inline]
14944    fn next(&self) -> *const c_void {
14945        self.next
14946    }
14947}
14948
14949unsafe impl InputChainStruct for PipelineTessellationStateCreateInfo {
14950    const TYPE: StructureType = StructureType::PIPELINE_TESSELLATION_STATE_CREATE_INFO;
14951
14952    #[inline]
14953    fn s_type(&self) -> StructureType {
14954        self.s_type
14955    }
14956
14957    #[inline]
14958    fn next(&self) -> *const c_void {
14959        self.next
14960    }
14961}
14962
14963unsafe impl InputChainStruct for PipelineVertexInputDivisorStateCreateInfo {
14964    const TYPE: StructureType = StructureType::PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO;
14965
14966    #[inline]
14967    fn s_type(&self) -> StructureType {
14968        self.s_type
14969    }
14970
14971    #[inline]
14972    fn next(&self) -> *const c_void {
14973        self.next
14974    }
14975}
14976
14977unsafe impl InputChainStruct for PipelineVertexInputStateCreateInfo {
14978    const TYPE: StructureType = StructureType::PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO;
14979
14980    #[inline]
14981    fn s_type(&self) -> StructureType {
14982        self.s_type
14983    }
14984
14985    #[inline]
14986    fn next(&self) -> *const c_void {
14987        self.next
14988    }
14989}
14990
14991unsafe impl InputChainStruct for PipelineViewportCoarseSampleOrderStateCreateInfoNV {
14992    const TYPE: StructureType =
14993        StructureType::PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV;
14994
14995    #[inline]
14996    fn s_type(&self) -> StructureType {
14997        self.s_type
14998    }
14999
15000    #[inline]
15001    fn next(&self) -> *const c_void {
15002        self.next
15003    }
15004}
15005
15006unsafe impl InputChainStruct for PipelineViewportDepthClampControlCreateInfoEXT {
15007    const TYPE: StructureType =
15008        StructureType::PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT;
15009
15010    #[inline]
15011    fn s_type(&self) -> StructureType {
15012        self.s_type
15013    }
15014
15015    #[inline]
15016    fn next(&self) -> *const c_void {
15017        self.next
15018    }
15019}
15020
15021unsafe impl InputChainStruct for PipelineViewportDepthClipControlCreateInfoEXT {
15022    const TYPE: StructureType = StructureType::PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT;
15023
15024    #[inline]
15025    fn s_type(&self) -> StructureType {
15026        self.s_type
15027    }
15028
15029    #[inline]
15030    fn next(&self) -> *const c_void {
15031        self.next
15032    }
15033}
15034
15035unsafe impl InputChainStruct for PipelineViewportExclusiveScissorStateCreateInfoNV {
15036    const TYPE: StructureType =
15037        StructureType::PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV;
15038
15039    #[inline]
15040    fn s_type(&self) -> StructureType {
15041        self.s_type
15042    }
15043
15044    #[inline]
15045    fn next(&self) -> *const c_void {
15046        self.next
15047    }
15048}
15049
15050unsafe impl InputChainStruct for PipelineViewportShadingRateImageStateCreateInfoNV {
15051    const TYPE: StructureType =
15052        StructureType::PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV;
15053
15054    #[inline]
15055    fn s_type(&self) -> StructureType {
15056        self.s_type
15057    }
15058
15059    #[inline]
15060    fn next(&self) -> *const c_void {
15061        self.next
15062    }
15063}
15064
15065unsafe impl InputChainStruct for PipelineViewportStateCreateInfo {
15066    const TYPE: StructureType = StructureType::PIPELINE_VIEWPORT_STATE_CREATE_INFO;
15067
15068    #[inline]
15069    fn s_type(&self) -> StructureType {
15070        self.s_type
15071    }
15072
15073    #[inline]
15074    fn next(&self) -> *const c_void {
15075        self.next
15076    }
15077}
15078
15079unsafe impl InputChainStruct for PipelineViewportSwizzleStateCreateInfoNV {
15080    const TYPE: StructureType = StructureType::PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV;
15081
15082    #[inline]
15083    fn s_type(&self) -> StructureType {
15084        self.s_type
15085    }
15086
15087    #[inline]
15088    fn next(&self) -> *const c_void {
15089        self.next
15090    }
15091}
15092
15093unsafe impl InputChainStruct for PipelineViewportWScalingStateCreateInfoNV {
15094    const TYPE: StructureType = StructureType::PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV;
15095
15096    #[inline]
15097    fn s_type(&self) -> StructureType {
15098        self.s_type
15099    }
15100
15101    #[inline]
15102    fn next(&self) -> *const c_void {
15103        self.next
15104    }
15105}
15106
15107unsafe impl InputChainStruct for PresentFrameTokenGGP {
15108    const TYPE: StructureType = StructureType::PRESENT_FRAME_TOKEN_GGP;
15109
15110    #[inline]
15111    fn s_type(&self) -> StructureType {
15112        self.s_type
15113    }
15114
15115    #[inline]
15116    fn next(&self) -> *const c_void {
15117        self.next
15118    }
15119}
15120
15121unsafe impl InputChainStruct for PresentId2KHR {
15122    const TYPE: StructureType = StructureType::PRESENT_ID_2_KHR;
15123
15124    #[inline]
15125    fn s_type(&self) -> StructureType {
15126        self.s_type
15127    }
15128
15129    #[inline]
15130    fn next(&self) -> *const c_void {
15131        self.next
15132    }
15133}
15134
15135unsafe impl InputChainStruct for PresentIdKHR {
15136    const TYPE: StructureType = StructureType::PRESENT_ID_KHR;
15137
15138    #[inline]
15139    fn s_type(&self) -> StructureType {
15140        self.s_type
15141    }
15142
15143    #[inline]
15144    fn next(&self) -> *const c_void {
15145        self.next
15146    }
15147}
15148
15149unsafe impl InputChainStruct for PresentInfoKHR {
15150    const TYPE: StructureType = StructureType::PRESENT_INFO_KHR;
15151
15152    #[inline]
15153    fn s_type(&self) -> StructureType {
15154        self.s_type
15155    }
15156
15157    #[inline]
15158    fn next(&self) -> *const c_void {
15159        self.next
15160    }
15161}
15162
15163unsafe impl InputChainStruct for PresentRegionsKHR {
15164    const TYPE: StructureType = StructureType::PRESENT_REGIONS_KHR;
15165
15166    #[inline]
15167    fn s_type(&self) -> StructureType {
15168        self.s_type
15169    }
15170
15171    #[inline]
15172    fn next(&self) -> *const c_void {
15173        self.next
15174    }
15175}
15176
15177unsafe impl InputChainStruct for PresentTimesInfoGOOGLE {
15178    const TYPE: StructureType = StructureType::PRESENT_TIMES_INFO_GOOGLE;
15179
15180    #[inline]
15181    fn s_type(&self) -> StructureType {
15182        self.s_type
15183    }
15184
15185    #[inline]
15186    fn next(&self) -> *const c_void {
15187        self.next
15188    }
15189}
15190
15191unsafe impl InputChainStruct for PresentWait2InfoKHR {
15192    const TYPE: StructureType = StructureType::PRESENT_WAIT_2_INFO_KHR;
15193
15194    #[inline]
15195    fn s_type(&self) -> StructureType {
15196        self.s_type
15197    }
15198
15199    #[inline]
15200    fn next(&self) -> *const c_void {
15201        self.next
15202    }
15203}
15204
15205unsafe impl InputChainStruct for PrivateDataSlotCreateInfo {
15206    const TYPE: StructureType = StructureType::PRIVATE_DATA_SLOT_CREATE_INFO;
15207
15208    #[inline]
15209    fn s_type(&self) -> StructureType {
15210        self.s_type
15211    }
15212
15213    #[inline]
15214    fn next(&self) -> *const c_void {
15215        self.next
15216    }
15217}
15218
15219unsafe impl InputChainStruct for ProtectedSubmitInfo {
15220    const TYPE: StructureType = StructureType::PROTECTED_SUBMIT_INFO;
15221
15222    #[inline]
15223    fn s_type(&self) -> StructureType {
15224        self.s_type
15225    }
15226
15227    #[inline]
15228    fn next(&self) -> *const c_void {
15229        self.next
15230    }
15231}
15232
15233unsafe impl InputChainStruct for PushConstantsInfo {
15234    const TYPE: StructureType = StructureType::PUSH_CONSTANTS_INFO;
15235
15236    #[inline]
15237    fn s_type(&self) -> StructureType {
15238        self.s_type
15239    }
15240
15241    #[inline]
15242    fn next(&self) -> *const c_void {
15243        self.next
15244    }
15245}
15246
15247unsafe impl InputChainStruct for PushDescriptorSetInfo {
15248    const TYPE: StructureType = StructureType::PUSH_DESCRIPTOR_SET_INFO;
15249
15250    #[inline]
15251    fn s_type(&self) -> StructureType {
15252        self.s_type
15253    }
15254
15255    #[inline]
15256    fn next(&self) -> *const c_void {
15257        self.next
15258    }
15259}
15260
15261unsafe impl InputChainStruct for PushDescriptorSetWithTemplateInfo {
15262    const TYPE: StructureType = StructureType::PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO;
15263
15264    #[inline]
15265    fn s_type(&self) -> StructureType {
15266        self.s_type
15267    }
15268
15269    #[inline]
15270    fn next(&self) -> *const c_void {
15271        self.next
15272    }
15273}
15274
15275unsafe impl InputChainStruct for QueryLowLatencySupportNV {
15276    const TYPE: StructureType = StructureType::QUERY_LOW_LATENCY_SUPPORT_NV;
15277
15278    #[inline]
15279    fn s_type(&self) -> StructureType {
15280        self.s_type
15281    }
15282
15283    #[inline]
15284    fn next(&self) -> *const c_void {
15285        self.next
15286    }
15287}
15288
15289unsafe impl InputChainStruct for QueryPoolCreateInfo {
15290    const TYPE: StructureType = StructureType::QUERY_POOL_CREATE_INFO;
15291
15292    #[inline]
15293    fn s_type(&self) -> StructureType {
15294        self.s_type
15295    }
15296
15297    #[inline]
15298    fn next(&self) -> *const c_void {
15299        self.next
15300    }
15301}
15302
15303unsafe impl InputChainStruct for QueryPoolPerformanceCreateInfoKHR {
15304    const TYPE: StructureType = StructureType::QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR;
15305
15306    #[inline]
15307    fn s_type(&self) -> StructureType {
15308        self.s_type
15309    }
15310
15311    #[inline]
15312    fn next(&self) -> *const c_void {
15313        self.next
15314    }
15315}
15316
15317unsafe impl InputChainStruct for QueryPoolPerformanceQueryCreateInfoINTEL {
15318    const TYPE: StructureType = StructureType::QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL;
15319
15320    #[inline]
15321    fn s_type(&self) -> StructureType {
15322        self.s_type
15323    }
15324
15325    #[inline]
15326    fn next(&self) -> *const c_void {
15327        self.next
15328    }
15329}
15330
15331unsafe impl InputChainStruct for QueryPoolVideoEncodeFeedbackCreateInfoKHR {
15332    const TYPE: StructureType = StructureType::QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR;
15333
15334    #[inline]
15335    fn s_type(&self) -> StructureType {
15336        self.s_type
15337    }
15338
15339    #[inline]
15340    fn next(&self) -> *const c_void {
15341        self.next
15342    }
15343}
15344
15345unsafe impl InputChainStruct for QueueFamilyCheckpointProperties2NV {
15346    const TYPE: StructureType = StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV;
15347
15348    #[inline]
15349    fn s_type(&self) -> StructureType {
15350        self.s_type
15351    }
15352
15353    #[inline]
15354    fn next(&self) -> *const c_void {
15355        self.next
15356    }
15357}
15358
15359unsafe impl OutputChainStruct for QueueFamilyCheckpointProperties2NV {
15360    #[inline]
15361    fn next_mut(&self) -> *mut c_void {
15362        self.next
15363    }
15364}
15365
15366unsafe impl InputChainStruct for QueueFamilyCheckpointPropertiesNV {
15367    const TYPE: StructureType = StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV;
15368
15369    #[inline]
15370    fn s_type(&self) -> StructureType {
15371        self.s_type
15372    }
15373
15374    #[inline]
15375    fn next(&self) -> *const c_void {
15376        self.next
15377    }
15378}
15379
15380unsafe impl OutputChainStruct for QueueFamilyCheckpointPropertiesNV {
15381    #[inline]
15382    fn next_mut(&self) -> *mut c_void {
15383        self.next
15384    }
15385}
15386
15387unsafe impl InputChainStruct for QueueFamilyDataGraphProcessingEnginePropertiesARM {
15388    const TYPE: StructureType =
15389        StructureType::QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM;
15390
15391    #[inline]
15392    fn s_type(&self) -> StructureType {
15393        self.s_type
15394    }
15395
15396    #[inline]
15397    fn next(&self) -> *const c_void {
15398        self.next
15399    }
15400}
15401
15402unsafe impl InputChainStruct for QueueFamilyDataGraphPropertiesARM {
15403    const TYPE: StructureType = StructureType::QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM;
15404
15405    #[inline]
15406    fn s_type(&self) -> StructureType {
15407        self.s_type
15408    }
15409
15410    #[inline]
15411    fn next(&self) -> *const c_void {
15412        self.next
15413    }
15414}
15415
15416unsafe impl InputChainStruct for QueueFamilyGlobalPriorityProperties {
15417    const TYPE: StructureType = StructureType::QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES;
15418
15419    #[inline]
15420    fn s_type(&self) -> StructureType {
15421        self.s_type
15422    }
15423
15424    #[inline]
15425    fn next(&self) -> *const c_void {
15426        self.next
15427    }
15428}
15429
15430unsafe impl OutputChainStruct for QueueFamilyGlobalPriorityProperties {
15431    #[inline]
15432    fn next_mut(&self) -> *mut c_void {
15433        self.next
15434    }
15435}
15436
15437unsafe impl InputChainStruct for QueueFamilyOwnershipTransferPropertiesKHR {
15438    const TYPE: StructureType = StructureType::QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR;
15439
15440    #[inline]
15441    fn s_type(&self) -> StructureType {
15442        self.s_type
15443    }
15444
15445    #[inline]
15446    fn next(&self) -> *const c_void {
15447        self.next
15448    }
15449}
15450
15451unsafe impl OutputChainStruct for QueueFamilyOwnershipTransferPropertiesKHR {
15452    #[inline]
15453    fn next_mut(&self) -> *mut c_void {
15454        self.next
15455    }
15456}
15457
15458unsafe impl InputChainStruct for QueueFamilyProperties2 {
15459    const TYPE: StructureType = StructureType::QUEUE_FAMILY_PROPERTIES_2;
15460
15461    #[inline]
15462    fn s_type(&self) -> StructureType {
15463        self.s_type
15464    }
15465
15466    #[inline]
15467    fn next(&self) -> *const c_void {
15468        self.next
15469    }
15470}
15471
15472unsafe impl OutputChainStruct for QueueFamilyProperties2 {
15473    #[inline]
15474    fn next_mut(&self) -> *mut c_void {
15475        self.next
15476    }
15477}
15478
15479unsafe impl InputChainStruct for QueueFamilyQueryResultStatusPropertiesKHR {
15480    const TYPE: StructureType = StructureType::QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR;
15481
15482    #[inline]
15483    fn s_type(&self) -> StructureType {
15484        self.s_type
15485    }
15486
15487    #[inline]
15488    fn next(&self) -> *const c_void {
15489        self.next
15490    }
15491}
15492
15493unsafe impl OutputChainStruct for QueueFamilyQueryResultStatusPropertiesKHR {
15494    #[inline]
15495    fn next_mut(&self) -> *mut c_void {
15496        self.next
15497    }
15498}
15499
15500unsafe impl InputChainStruct for QueueFamilyVideoPropertiesKHR {
15501    const TYPE: StructureType = StructureType::QUEUE_FAMILY_VIDEO_PROPERTIES_KHR;
15502
15503    #[inline]
15504    fn s_type(&self) -> StructureType {
15505        self.s_type
15506    }
15507
15508    #[inline]
15509    fn next(&self) -> *const c_void {
15510        self.next
15511    }
15512}
15513
15514unsafe impl OutputChainStruct for QueueFamilyVideoPropertiesKHR {
15515    #[inline]
15516    fn next_mut(&self) -> *mut c_void {
15517        self.next
15518    }
15519}
15520
15521unsafe impl InputChainStruct for RayTracingPipelineClusterAccelerationStructureCreateInfoNV {
15522    const TYPE: StructureType =
15523        StructureType::RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV;
15524
15525    #[inline]
15526    fn s_type(&self) -> StructureType {
15527        self.s_type
15528    }
15529
15530    #[inline]
15531    fn next(&self) -> *const c_void {
15532        self.next
15533    }
15534}
15535
15536unsafe impl OutputChainStruct for RayTracingPipelineClusterAccelerationStructureCreateInfoNV {
15537    #[inline]
15538    fn next_mut(&self) -> *mut c_void {
15539        self.next
15540    }
15541}
15542
15543unsafe impl InputChainStruct for RayTracingPipelineCreateInfoKHR {
15544    const TYPE: StructureType = StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_KHR;
15545
15546    #[inline]
15547    fn s_type(&self) -> StructureType {
15548        self.s_type
15549    }
15550
15551    #[inline]
15552    fn next(&self) -> *const c_void {
15553        self.next
15554    }
15555}
15556
15557unsafe impl InputChainStruct for RayTracingPipelineCreateInfoNV {
15558    const TYPE: StructureType = StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_NV;
15559
15560    #[inline]
15561    fn s_type(&self) -> StructureType {
15562        self.s_type
15563    }
15564
15565    #[inline]
15566    fn next(&self) -> *const c_void {
15567        self.next
15568    }
15569}
15570
15571unsafe impl InputChainStruct for RayTracingPipelineInterfaceCreateInfoKHR {
15572    const TYPE: StructureType = StructureType::RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR;
15573
15574    #[inline]
15575    fn s_type(&self) -> StructureType {
15576        self.s_type
15577    }
15578
15579    #[inline]
15580    fn next(&self) -> *const c_void {
15581        self.next
15582    }
15583}
15584
15585unsafe impl InputChainStruct for RayTracingShaderGroupCreateInfoKHR {
15586    const TYPE: StructureType = StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR;
15587
15588    #[inline]
15589    fn s_type(&self) -> StructureType {
15590        self.s_type
15591    }
15592
15593    #[inline]
15594    fn next(&self) -> *const c_void {
15595        self.next
15596    }
15597}
15598
15599unsafe impl InputChainStruct for RayTracingShaderGroupCreateInfoNV {
15600    const TYPE: StructureType = StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV;
15601
15602    #[inline]
15603    fn s_type(&self) -> StructureType {
15604        self.s_type
15605    }
15606
15607    #[inline]
15608    fn next(&self) -> *const c_void {
15609        self.next
15610    }
15611}
15612
15613unsafe impl InputChainStruct for RefreshObjectListKHR {
15614    const TYPE: StructureType = StructureType::REFRESH_OBJECT_LIST_KHR;
15615
15616    #[inline]
15617    fn s_type(&self) -> StructureType {
15618        self.s_type
15619    }
15620
15621    #[inline]
15622    fn next(&self) -> *const c_void {
15623        self.next
15624    }
15625}
15626
15627unsafe impl InputChainStruct for ReleaseCapturedPipelineDataInfoKHR {
15628    const TYPE: StructureType = StructureType::RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR;
15629
15630    #[inline]
15631    fn s_type(&self) -> StructureType {
15632        self.s_type
15633    }
15634
15635    #[inline]
15636    fn next(&self) -> *const c_void {
15637        self.next
15638    }
15639}
15640
15641unsafe impl OutputChainStruct for ReleaseCapturedPipelineDataInfoKHR {
15642    #[inline]
15643    fn next_mut(&self) -> *mut c_void {
15644        self.next
15645    }
15646}
15647
15648unsafe impl InputChainStruct for ReleaseSwapchainImagesInfoKHR {
15649    const TYPE: StructureType = StructureType::RELEASE_SWAPCHAIN_IMAGES_INFO_KHR;
15650
15651    #[inline]
15652    fn s_type(&self) -> StructureType {
15653        self.s_type
15654    }
15655
15656    #[inline]
15657    fn next(&self) -> *const c_void {
15658        self.next
15659    }
15660}
15661
15662unsafe impl InputChainStruct for RenderPassAttachmentBeginInfo {
15663    const TYPE: StructureType = StructureType::RENDER_PASS_ATTACHMENT_BEGIN_INFO;
15664
15665    #[inline]
15666    fn s_type(&self) -> StructureType {
15667        self.s_type
15668    }
15669
15670    #[inline]
15671    fn next(&self) -> *const c_void {
15672        self.next
15673    }
15674}
15675
15676unsafe impl InputChainStruct for RenderPassBeginInfo {
15677    const TYPE: StructureType = StructureType::RENDER_PASS_BEGIN_INFO;
15678
15679    #[inline]
15680    fn s_type(&self) -> StructureType {
15681        self.s_type
15682    }
15683
15684    #[inline]
15685    fn next(&self) -> *const c_void {
15686        self.next
15687    }
15688}
15689
15690unsafe impl InputChainStruct for RenderPassCreateInfo {
15691    const TYPE: StructureType = StructureType::RENDER_PASS_CREATE_INFO;
15692
15693    #[inline]
15694    fn s_type(&self) -> StructureType {
15695        self.s_type
15696    }
15697
15698    #[inline]
15699    fn next(&self) -> *const c_void {
15700        self.next
15701    }
15702}
15703
15704unsafe impl InputChainStruct for RenderPassCreateInfo2 {
15705    const TYPE: StructureType = StructureType::RENDER_PASS_CREATE_INFO_2;
15706
15707    #[inline]
15708    fn s_type(&self) -> StructureType {
15709        self.s_type
15710    }
15711
15712    #[inline]
15713    fn next(&self) -> *const c_void {
15714        self.next
15715    }
15716}
15717
15718unsafe impl InputChainStruct for RenderPassCreationControlEXT {
15719    const TYPE: StructureType = StructureType::RENDER_PASS_CREATION_CONTROL_EXT;
15720
15721    #[inline]
15722    fn s_type(&self) -> StructureType {
15723        self.s_type
15724    }
15725
15726    #[inline]
15727    fn next(&self) -> *const c_void {
15728        self.next
15729    }
15730}
15731
15732unsafe impl InputChainStruct for RenderPassCreationFeedbackCreateInfoEXT {
15733    const TYPE: StructureType = StructureType::RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT;
15734
15735    #[inline]
15736    fn s_type(&self) -> StructureType {
15737        self.s_type
15738    }
15739
15740    #[inline]
15741    fn next(&self) -> *const c_void {
15742        self.next
15743    }
15744}
15745
15746unsafe impl InputChainStruct for RenderPassFragmentDensityMapCreateInfoEXT {
15747    const TYPE: StructureType = StructureType::RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT;
15748
15749    #[inline]
15750    fn s_type(&self) -> StructureType {
15751        self.s_type
15752    }
15753
15754    #[inline]
15755    fn next(&self) -> *const c_void {
15756        self.next
15757    }
15758}
15759
15760unsafe impl InputChainStruct for RenderPassFragmentDensityMapOffsetEndInfoEXT {
15761    const TYPE: StructureType = StructureType::RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT;
15762
15763    #[inline]
15764    fn s_type(&self) -> StructureType {
15765        self.s_type
15766    }
15767
15768    #[inline]
15769    fn next(&self) -> *const c_void {
15770        self.next
15771    }
15772}
15773
15774unsafe impl InputChainStruct for RenderPassInputAttachmentAspectCreateInfo {
15775    const TYPE: StructureType = StructureType::RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO;
15776
15777    #[inline]
15778    fn s_type(&self) -> StructureType {
15779        self.s_type
15780    }
15781
15782    #[inline]
15783    fn next(&self) -> *const c_void {
15784        self.next
15785    }
15786}
15787
15788unsafe impl InputChainStruct for RenderPassMultiviewCreateInfo {
15789    const TYPE: StructureType = StructureType::RENDER_PASS_MULTIVIEW_CREATE_INFO;
15790
15791    #[inline]
15792    fn s_type(&self) -> StructureType {
15793        self.s_type
15794    }
15795
15796    #[inline]
15797    fn next(&self) -> *const c_void {
15798        self.next
15799    }
15800}
15801
15802unsafe impl InputChainStruct for RenderPassSampleLocationsBeginInfoEXT {
15803    const TYPE: StructureType = StructureType::RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT;
15804
15805    #[inline]
15806    fn s_type(&self) -> StructureType {
15807        self.s_type
15808    }
15809
15810    #[inline]
15811    fn next(&self) -> *const c_void {
15812        self.next
15813    }
15814}
15815
15816unsafe impl InputChainStruct for RenderPassStripeBeginInfoARM {
15817    const TYPE: StructureType = StructureType::RENDER_PASS_STRIPE_BEGIN_INFO_ARM;
15818
15819    #[inline]
15820    fn s_type(&self) -> StructureType {
15821        self.s_type
15822    }
15823
15824    #[inline]
15825    fn next(&self) -> *const c_void {
15826        self.next
15827    }
15828}
15829
15830unsafe impl InputChainStruct for RenderPassStripeInfoARM {
15831    const TYPE: StructureType = StructureType::RENDER_PASS_STRIPE_INFO_ARM;
15832
15833    #[inline]
15834    fn s_type(&self) -> StructureType {
15835        self.s_type
15836    }
15837
15838    #[inline]
15839    fn next(&self) -> *const c_void {
15840        self.next
15841    }
15842}
15843
15844unsafe impl InputChainStruct for RenderPassStripeSubmitInfoARM {
15845    const TYPE: StructureType = StructureType::RENDER_PASS_STRIPE_SUBMIT_INFO_ARM;
15846
15847    #[inline]
15848    fn s_type(&self) -> StructureType {
15849        self.s_type
15850    }
15851
15852    #[inline]
15853    fn next(&self) -> *const c_void {
15854        self.next
15855    }
15856}
15857
15858unsafe impl InputChainStruct for RenderPassSubpassFeedbackCreateInfoEXT {
15859    const TYPE: StructureType = StructureType::RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT;
15860
15861    #[inline]
15862    fn s_type(&self) -> StructureType {
15863        self.s_type
15864    }
15865
15866    #[inline]
15867    fn next(&self) -> *const c_void {
15868        self.next
15869    }
15870}
15871
15872unsafe impl InputChainStruct for RenderPassTileShadingCreateInfoQCOM {
15873    const TYPE: StructureType = StructureType::RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM;
15874
15875    #[inline]
15876    fn s_type(&self) -> StructureType {
15877        self.s_type
15878    }
15879
15880    #[inline]
15881    fn next(&self) -> *const c_void {
15882        self.next
15883    }
15884}
15885
15886unsafe impl InputChainStruct for RenderPassTransformBeginInfoQCOM {
15887    const TYPE: StructureType = StructureType::RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM;
15888
15889    #[inline]
15890    fn s_type(&self) -> StructureType {
15891        self.s_type
15892    }
15893
15894    #[inline]
15895    fn next(&self) -> *const c_void {
15896        self.next
15897    }
15898}
15899
15900unsafe impl InputChainStruct for RenderingAreaInfo {
15901    const TYPE: StructureType = StructureType::RENDERING_AREA_INFO;
15902
15903    #[inline]
15904    fn s_type(&self) -> StructureType {
15905        self.s_type
15906    }
15907
15908    #[inline]
15909    fn next(&self) -> *const c_void {
15910        self.next
15911    }
15912}
15913
15914unsafe impl InputChainStruct for RenderingAttachmentInfo {
15915    const TYPE: StructureType = StructureType::RENDERING_ATTACHMENT_INFO;
15916
15917    #[inline]
15918    fn s_type(&self) -> StructureType {
15919        self.s_type
15920    }
15921
15922    #[inline]
15923    fn next(&self) -> *const c_void {
15924        self.next
15925    }
15926}
15927
15928unsafe impl InputChainStruct for RenderingAttachmentLocationInfo {
15929    const TYPE: StructureType = StructureType::RENDERING_ATTACHMENT_LOCATION_INFO;
15930
15931    #[inline]
15932    fn s_type(&self) -> StructureType {
15933        self.s_type
15934    }
15935
15936    #[inline]
15937    fn next(&self) -> *const c_void {
15938        self.next
15939    }
15940}
15941
15942unsafe impl InputChainStruct for RenderingEndInfoEXT {
15943    const TYPE: StructureType = StructureType::RENDERING_END_INFO_EXT;
15944
15945    #[inline]
15946    fn s_type(&self) -> StructureType {
15947        self.s_type
15948    }
15949
15950    #[inline]
15951    fn next(&self) -> *const c_void {
15952        self.next
15953    }
15954}
15955
15956unsafe impl InputChainStruct for RenderingFragmentDensityMapAttachmentInfoEXT {
15957    const TYPE: StructureType = StructureType::RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT;
15958
15959    #[inline]
15960    fn s_type(&self) -> StructureType {
15961        self.s_type
15962    }
15963
15964    #[inline]
15965    fn next(&self) -> *const c_void {
15966        self.next
15967    }
15968}
15969
15970unsafe impl InputChainStruct for RenderingFragmentShadingRateAttachmentInfoKHR {
15971    const TYPE: StructureType = StructureType::RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR;
15972
15973    #[inline]
15974    fn s_type(&self) -> StructureType {
15975        self.s_type
15976    }
15977
15978    #[inline]
15979    fn next(&self) -> *const c_void {
15980        self.next
15981    }
15982}
15983
15984unsafe impl InputChainStruct for RenderingInfo {
15985    const TYPE: StructureType = StructureType::RENDERING_INFO;
15986
15987    #[inline]
15988    fn s_type(&self) -> StructureType {
15989        self.s_type
15990    }
15991
15992    #[inline]
15993    fn next(&self) -> *const c_void {
15994        self.next
15995    }
15996}
15997
15998unsafe impl InputChainStruct for RenderingInputAttachmentIndexInfo {
15999    const TYPE: StructureType = StructureType::RENDERING_INPUT_ATTACHMENT_INDEX_INFO;
16000
16001    #[inline]
16002    fn s_type(&self) -> StructureType {
16003        self.s_type
16004    }
16005
16006    #[inline]
16007    fn next(&self) -> *const c_void {
16008        self.next
16009    }
16010}
16011
16012unsafe impl InputChainStruct for ResolveImageInfo2 {
16013    const TYPE: StructureType = StructureType::RESOLVE_IMAGE_INFO_2;
16014
16015    #[inline]
16016    fn s_type(&self) -> StructureType {
16017        self.s_type
16018    }
16019
16020    #[inline]
16021    fn next(&self) -> *const c_void {
16022        self.next
16023    }
16024}
16025
16026unsafe impl InputChainStruct for SampleLocationsInfoEXT {
16027    const TYPE: StructureType = StructureType::SAMPLE_LOCATIONS_INFO_EXT;
16028
16029    #[inline]
16030    fn s_type(&self) -> StructureType {
16031        self.s_type
16032    }
16033
16034    #[inline]
16035    fn next(&self) -> *const c_void {
16036        self.next
16037    }
16038}
16039
16040unsafe impl InputChainStruct for SamplerBlockMatchWindowCreateInfoQCOM {
16041    const TYPE: StructureType = StructureType::SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM;
16042
16043    #[inline]
16044    fn s_type(&self) -> StructureType {
16045        self.s_type
16046    }
16047
16048    #[inline]
16049    fn next(&self) -> *const c_void {
16050        self.next
16051    }
16052}
16053
16054unsafe impl InputChainStruct for SamplerBorderColorComponentMappingCreateInfoEXT {
16055    const TYPE: StructureType =
16056        StructureType::SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT;
16057
16058    #[inline]
16059    fn s_type(&self) -> StructureType {
16060        self.s_type
16061    }
16062
16063    #[inline]
16064    fn next(&self) -> *const c_void {
16065        self.next
16066    }
16067}
16068
16069unsafe impl InputChainStruct for SamplerCaptureDescriptorDataInfoEXT {
16070    const TYPE: StructureType = StructureType::SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT;
16071
16072    #[inline]
16073    fn s_type(&self) -> StructureType {
16074        self.s_type
16075    }
16076
16077    #[inline]
16078    fn next(&self) -> *const c_void {
16079        self.next
16080    }
16081}
16082
16083unsafe impl InputChainStruct for SamplerCreateInfo {
16084    const TYPE: StructureType = StructureType::SAMPLER_CREATE_INFO;
16085
16086    #[inline]
16087    fn s_type(&self) -> StructureType {
16088        self.s_type
16089    }
16090
16091    #[inline]
16092    fn next(&self) -> *const c_void {
16093        self.next
16094    }
16095}
16096
16097unsafe impl InputChainStruct for SamplerCubicWeightsCreateInfoQCOM {
16098    const TYPE: StructureType = StructureType::SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM;
16099
16100    #[inline]
16101    fn s_type(&self) -> StructureType {
16102        self.s_type
16103    }
16104
16105    #[inline]
16106    fn next(&self) -> *const c_void {
16107        self.next
16108    }
16109}
16110
16111unsafe impl InputChainStruct for SamplerCustomBorderColorCreateInfoEXT {
16112    const TYPE: StructureType = StructureType::SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT;
16113
16114    #[inline]
16115    fn s_type(&self) -> StructureType {
16116        self.s_type
16117    }
16118
16119    #[inline]
16120    fn next(&self) -> *const c_void {
16121        self.next
16122    }
16123}
16124
16125unsafe impl InputChainStruct for SamplerReductionModeCreateInfo {
16126    const TYPE: StructureType = StructureType::SAMPLER_REDUCTION_MODE_CREATE_INFO;
16127
16128    #[inline]
16129    fn s_type(&self) -> StructureType {
16130        self.s_type
16131    }
16132
16133    #[inline]
16134    fn next(&self) -> *const c_void {
16135        self.next
16136    }
16137}
16138
16139unsafe impl InputChainStruct for SamplerYcbcrConversionCreateInfo {
16140    const TYPE: StructureType = StructureType::SAMPLER_YCBCR_CONVERSION_CREATE_INFO;
16141
16142    #[inline]
16143    fn s_type(&self) -> StructureType {
16144        self.s_type
16145    }
16146
16147    #[inline]
16148    fn next(&self) -> *const c_void {
16149        self.next
16150    }
16151}
16152
16153unsafe impl InputChainStruct for SamplerYcbcrConversionImageFormatProperties {
16154    const TYPE: StructureType = StructureType::SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES;
16155
16156    #[inline]
16157    fn s_type(&self) -> StructureType {
16158        self.s_type
16159    }
16160
16161    #[inline]
16162    fn next(&self) -> *const c_void {
16163        self.next
16164    }
16165}
16166
16167unsafe impl OutputChainStruct for SamplerYcbcrConversionImageFormatProperties {
16168    #[inline]
16169    fn next_mut(&self) -> *mut c_void {
16170        self.next
16171    }
16172}
16173
16174unsafe impl InputChainStruct for SamplerYcbcrConversionInfo {
16175    const TYPE: StructureType = StructureType::SAMPLER_YCBCR_CONVERSION_INFO;
16176
16177    #[inline]
16178    fn s_type(&self) -> StructureType {
16179        self.s_type
16180    }
16181
16182    #[inline]
16183    fn next(&self) -> *const c_void {
16184        self.next
16185    }
16186}
16187
16188unsafe impl InputChainStruct for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {
16189    const TYPE: StructureType =
16190        StructureType::SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM;
16191
16192    #[inline]
16193    fn s_type(&self) -> StructureType {
16194        self.s_type
16195    }
16196
16197    #[inline]
16198    fn next(&self) -> *const c_void {
16199        self.next
16200    }
16201}
16202
16203unsafe impl OutputChainStruct for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {
16204    #[inline]
16205    fn next_mut(&self) -> *mut c_void {
16206        self.next
16207    }
16208}
16209
16210unsafe impl InputChainStruct for SciSyncAttributesInfoNV {
16211    const TYPE: StructureType = StructureType::SCI_SYNC_ATTRIBUTES_INFO_NV;
16212
16213    #[inline]
16214    fn s_type(&self) -> StructureType {
16215        self.s_type
16216    }
16217
16218    #[inline]
16219    fn next(&self) -> *const c_void {
16220        self.next
16221    }
16222}
16223
16224unsafe impl InputChainStruct for ScreenBufferFormatPropertiesQNX {
16225    const TYPE: StructureType = StructureType::SCREEN_BUFFER_FORMAT_PROPERTIES_QNX;
16226
16227    #[inline]
16228    fn s_type(&self) -> StructureType {
16229        self.s_type
16230    }
16231
16232    #[inline]
16233    fn next(&self) -> *const c_void {
16234        self.next
16235    }
16236}
16237
16238unsafe impl OutputChainStruct for ScreenBufferFormatPropertiesQNX {
16239    #[inline]
16240    fn next_mut(&self) -> *mut c_void {
16241        self.next
16242    }
16243}
16244
16245unsafe impl InputChainStruct for ScreenBufferPropertiesQNX {
16246    const TYPE: StructureType = StructureType::SCREEN_BUFFER_PROPERTIES_QNX;
16247
16248    #[inline]
16249    fn s_type(&self) -> StructureType {
16250        self.s_type
16251    }
16252
16253    #[inline]
16254    fn next(&self) -> *const c_void {
16255        self.next
16256    }
16257}
16258
16259unsafe impl OutputChainStruct for ScreenBufferPropertiesQNX {
16260    #[inline]
16261    fn next_mut(&self) -> *mut c_void {
16262        self.next
16263    }
16264}
16265
16266unsafe impl InputChainStruct for ScreenSurfaceCreateInfoQNX {
16267    const TYPE: StructureType = StructureType::SCREEN_SURFACE_CREATE_INFO_QNX;
16268
16269    #[inline]
16270    fn s_type(&self) -> StructureType {
16271        self.s_type
16272    }
16273
16274    #[inline]
16275    fn next(&self) -> *const c_void {
16276        self.next
16277    }
16278}
16279
16280unsafe impl InputChainStruct for SemaphoreCreateInfo {
16281    const TYPE: StructureType = StructureType::SEMAPHORE_CREATE_INFO;
16282
16283    #[inline]
16284    fn s_type(&self) -> StructureType {
16285        self.s_type
16286    }
16287
16288    #[inline]
16289    fn next(&self) -> *const c_void {
16290        self.next
16291    }
16292}
16293
16294unsafe impl InputChainStruct for SemaphoreGetFdInfoKHR {
16295    const TYPE: StructureType = StructureType::SEMAPHORE_GET_FD_INFO_KHR;
16296
16297    #[inline]
16298    fn s_type(&self) -> StructureType {
16299        self.s_type
16300    }
16301
16302    #[inline]
16303    fn next(&self) -> *const c_void {
16304        self.next
16305    }
16306}
16307
16308unsafe impl InputChainStruct for SemaphoreGetSciSyncInfoNV {
16309    const TYPE: StructureType = StructureType::SEMAPHORE_GET_SCI_SYNC_INFO_NV;
16310
16311    #[inline]
16312    fn s_type(&self) -> StructureType {
16313        self.s_type
16314    }
16315
16316    #[inline]
16317    fn next(&self) -> *const c_void {
16318        self.next
16319    }
16320}
16321
16322unsafe impl InputChainStruct for SemaphoreGetWin32HandleInfoKHR {
16323    const TYPE: StructureType = StructureType::SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR;
16324
16325    #[inline]
16326    fn s_type(&self) -> StructureType {
16327        self.s_type
16328    }
16329
16330    #[inline]
16331    fn next(&self) -> *const c_void {
16332        self.next
16333    }
16334}
16335
16336unsafe impl InputChainStruct for SemaphoreGetZirconHandleInfoFUCHSIA {
16337    const TYPE: StructureType = StructureType::SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA;
16338
16339    #[inline]
16340    fn s_type(&self) -> StructureType {
16341        self.s_type
16342    }
16343
16344    #[inline]
16345    fn next(&self) -> *const c_void {
16346        self.next
16347    }
16348}
16349
16350unsafe impl InputChainStruct for SemaphoreSciSyncCreateInfoNV {
16351    const TYPE: StructureType = StructureType::SEMAPHORE_SCI_SYNC_CREATE_INFO_NV;
16352
16353    #[inline]
16354    fn s_type(&self) -> StructureType {
16355        self.s_type
16356    }
16357
16358    #[inline]
16359    fn next(&self) -> *const c_void {
16360        self.next
16361    }
16362}
16363
16364unsafe impl InputChainStruct for SemaphoreSciSyncPoolCreateInfoNV {
16365    const TYPE: StructureType = StructureType::SEMAPHORE_SCI_SYNC_POOL_CREATE_INFO_NV;
16366
16367    #[inline]
16368    fn s_type(&self) -> StructureType {
16369        self.s_type
16370    }
16371
16372    #[inline]
16373    fn next(&self) -> *const c_void {
16374        self.next
16375    }
16376}
16377
16378unsafe impl InputChainStruct for SemaphoreSignalInfo {
16379    const TYPE: StructureType = StructureType::SEMAPHORE_SIGNAL_INFO;
16380
16381    #[inline]
16382    fn s_type(&self) -> StructureType {
16383        self.s_type
16384    }
16385
16386    #[inline]
16387    fn next(&self) -> *const c_void {
16388        self.next
16389    }
16390}
16391
16392unsafe impl InputChainStruct for SemaphoreSubmitInfo {
16393    const TYPE: StructureType = StructureType::SEMAPHORE_SUBMIT_INFO;
16394
16395    #[inline]
16396    fn s_type(&self) -> StructureType {
16397        self.s_type
16398    }
16399
16400    #[inline]
16401    fn next(&self) -> *const c_void {
16402        self.next
16403    }
16404}
16405
16406unsafe impl InputChainStruct for SemaphoreTypeCreateInfo {
16407    const TYPE: StructureType = StructureType::SEMAPHORE_TYPE_CREATE_INFO;
16408
16409    #[inline]
16410    fn s_type(&self) -> StructureType {
16411        self.s_type
16412    }
16413
16414    #[inline]
16415    fn next(&self) -> *const c_void {
16416        self.next
16417    }
16418}
16419
16420unsafe impl InputChainStruct for SemaphoreWaitInfo {
16421    const TYPE: StructureType = StructureType::SEMAPHORE_WAIT_INFO;
16422
16423    #[inline]
16424    fn s_type(&self) -> StructureType {
16425        self.s_type
16426    }
16427
16428    #[inline]
16429    fn next(&self) -> *const c_void {
16430        self.next
16431    }
16432}
16433
16434unsafe impl InputChainStruct for SetDescriptorBufferOffsetsInfoEXT {
16435    const TYPE: StructureType = StructureType::SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT;
16436
16437    #[inline]
16438    fn s_type(&self) -> StructureType {
16439        self.s_type
16440    }
16441
16442    #[inline]
16443    fn next(&self) -> *const c_void {
16444        self.next
16445    }
16446}
16447
16448unsafe impl InputChainStruct for SetLatencyMarkerInfoNV {
16449    const TYPE: StructureType = StructureType::SET_LATENCY_MARKER_INFO_NV;
16450
16451    #[inline]
16452    fn s_type(&self) -> StructureType {
16453        self.s_type
16454    }
16455
16456    #[inline]
16457    fn next(&self) -> *const c_void {
16458        self.next
16459    }
16460}
16461
16462unsafe impl InputChainStruct for SetPresentConfigNV {
16463    const TYPE: StructureType = StructureType::SET_PRESENT_CONFIG_NV;
16464
16465    #[inline]
16466    fn s_type(&self) -> StructureType {
16467        self.s_type
16468    }
16469
16470    #[inline]
16471    fn next(&self) -> *const c_void {
16472        self.next
16473    }
16474}
16475
16476unsafe impl InputChainStruct for ShaderCreateInfoEXT {
16477    const TYPE: StructureType = StructureType::SHADER_CREATE_INFO_EXT;
16478
16479    #[inline]
16480    fn s_type(&self) -> StructureType {
16481        self.s_type
16482    }
16483
16484    #[inline]
16485    fn next(&self) -> *const c_void {
16486        self.next
16487    }
16488}
16489
16490unsafe impl InputChainStruct for ShaderModuleCreateInfo {
16491    const TYPE: StructureType = StructureType::SHADER_MODULE_CREATE_INFO;
16492
16493    #[inline]
16494    fn s_type(&self) -> StructureType {
16495        self.s_type
16496    }
16497
16498    #[inline]
16499    fn next(&self) -> *const c_void {
16500        self.next
16501    }
16502}
16503
16504unsafe impl InputChainStruct for ShaderModuleIdentifierEXT {
16505    const TYPE: StructureType = StructureType::SHADER_MODULE_IDENTIFIER_EXT;
16506
16507    #[inline]
16508    fn s_type(&self) -> StructureType {
16509        self.s_type
16510    }
16511
16512    #[inline]
16513    fn next(&self) -> *const c_void {
16514        self.next
16515    }
16516}
16517
16518unsafe impl OutputChainStruct for ShaderModuleIdentifierEXT {
16519    #[inline]
16520    fn next_mut(&self) -> *mut c_void {
16521        self.next
16522    }
16523}
16524
16525unsafe impl InputChainStruct for ShaderModuleValidationCacheCreateInfoEXT {
16526    const TYPE: StructureType = StructureType::SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT;
16527
16528    #[inline]
16529    fn s_type(&self) -> StructureType {
16530        self.s_type
16531    }
16532
16533    #[inline]
16534    fn next(&self) -> *const c_void {
16535        self.next
16536    }
16537}
16538
16539unsafe impl InputChainStruct for SharedPresentSurfaceCapabilitiesKHR {
16540    const TYPE: StructureType = StructureType::SHARED_PRESENT_SURFACE_CAPABILITIES_KHR;
16541
16542    #[inline]
16543    fn s_type(&self) -> StructureType {
16544        self.s_type
16545    }
16546
16547    #[inline]
16548    fn next(&self) -> *const c_void {
16549        self.next
16550    }
16551}
16552
16553unsafe impl OutputChainStruct for SharedPresentSurfaceCapabilitiesKHR {
16554    #[inline]
16555    fn next_mut(&self) -> *mut c_void {
16556        self.next
16557    }
16558}
16559
16560unsafe impl InputChainStruct for SparseImageFormatProperties2 {
16561    const TYPE: StructureType = StructureType::SPARSE_IMAGE_FORMAT_PROPERTIES_2;
16562
16563    #[inline]
16564    fn s_type(&self) -> StructureType {
16565        self.s_type
16566    }
16567
16568    #[inline]
16569    fn next(&self) -> *const c_void {
16570        self.next
16571    }
16572}
16573
16574unsafe impl OutputChainStruct for SparseImageFormatProperties2 {
16575    #[inline]
16576    fn next_mut(&self) -> *mut c_void {
16577        self.next
16578    }
16579}
16580
16581unsafe impl InputChainStruct for SparseImageMemoryRequirements2 {
16582    const TYPE: StructureType = StructureType::SPARSE_IMAGE_MEMORY_REQUIREMENTS_2;
16583
16584    #[inline]
16585    fn s_type(&self) -> StructureType {
16586        self.s_type
16587    }
16588
16589    #[inline]
16590    fn next(&self) -> *const c_void {
16591        self.next
16592    }
16593}
16594
16595unsafe impl OutputChainStruct for SparseImageMemoryRequirements2 {
16596    #[inline]
16597    fn next_mut(&self) -> *mut c_void {
16598        self.next
16599    }
16600}
16601
16602unsafe impl InputChainStruct for StreamDescriptorSurfaceCreateInfoGGP {
16603    const TYPE: StructureType = StructureType::STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP;
16604
16605    #[inline]
16606    fn s_type(&self) -> StructureType {
16607        self.s_type
16608    }
16609
16610    #[inline]
16611    fn next(&self) -> *const c_void {
16612        self.next
16613    }
16614}
16615
16616unsafe impl InputChainStruct for SubmitInfo {
16617    const TYPE: StructureType = StructureType::SUBMIT_INFO;
16618
16619    #[inline]
16620    fn s_type(&self) -> StructureType {
16621        self.s_type
16622    }
16623
16624    #[inline]
16625    fn next(&self) -> *const c_void {
16626        self.next
16627    }
16628}
16629
16630unsafe impl InputChainStruct for SubmitInfo2 {
16631    const TYPE: StructureType = StructureType::SUBMIT_INFO_2;
16632
16633    #[inline]
16634    fn s_type(&self) -> StructureType {
16635        self.s_type
16636    }
16637
16638    #[inline]
16639    fn next(&self) -> *const c_void {
16640        self.next
16641    }
16642}
16643
16644unsafe impl InputChainStruct for SubpassBeginInfo {
16645    const TYPE: StructureType = StructureType::SUBPASS_BEGIN_INFO;
16646
16647    #[inline]
16648    fn s_type(&self) -> StructureType {
16649        self.s_type
16650    }
16651
16652    #[inline]
16653    fn next(&self) -> *const c_void {
16654        self.next
16655    }
16656}
16657
16658unsafe impl InputChainStruct for SubpassDependency2 {
16659    const TYPE: StructureType = StructureType::SUBPASS_DEPENDENCY_2;
16660
16661    #[inline]
16662    fn s_type(&self) -> StructureType {
16663        self.s_type
16664    }
16665
16666    #[inline]
16667    fn next(&self) -> *const c_void {
16668        self.next
16669    }
16670}
16671
16672unsafe impl InputChainStruct for SubpassDescription2 {
16673    const TYPE: StructureType = StructureType::SUBPASS_DESCRIPTION_2;
16674
16675    #[inline]
16676    fn s_type(&self) -> StructureType {
16677        self.s_type
16678    }
16679
16680    #[inline]
16681    fn next(&self) -> *const c_void {
16682        self.next
16683    }
16684}
16685
16686unsafe impl InputChainStruct for SubpassDescriptionDepthStencilResolve {
16687    const TYPE: StructureType = StructureType::SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE;
16688
16689    #[inline]
16690    fn s_type(&self) -> StructureType {
16691        self.s_type
16692    }
16693
16694    #[inline]
16695    fn next(&self) -> *const c_void {
16696        self.next
16697    }
16698}
16699
16700unsafe impl InputChainStruct for SubpassEndInfo {
16701    const TYPE: StructureType = StructureType::SUBPASS_END_INFO;
16702
16703    #[inline]
16704    fn s_type(&self) -> StructureType {
16705        self.s_type
16706    }
16707
16708    #[inline]
16709    fn next(&self) -> *const c_void {
16710        self.next
16711    }
16712}
16713
16714unsafe impl InputChainStruct for SubpassResolvePerformanceQueryEXT {
16715    const TYPE: StructureType = StructureType::SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT;
16716
16717    #[inline]
16718    fn s_type(&self) -> StructureType {
16719        self.s_type
16720    }
16721
16722    #[inline]
16723    fn next(&self) -> *const c_void {
16724        self.next
16725    }
16726}
16727
16728unsafe impl OutputChainStruct for SubpassResolvePerformanceQueryEXT {
16729    #[inline]
16730    fn next_mut(&self) -> *mut c_void {
16731        self.next
16732    }
16733}
16734
16735unsafe impl InputChainStruct for SubpassShadingPipelineCreateInfoHUAWEI {
16736    const TYPE: StructureType = StructureType::SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI;
16737
16738    #[inline]
16739    fn s_type(&self) -> StructureType {
16740        self.s_type
16741    }
16742
16743    #[inline]
16744    fn next(&self) -> *const c_void {
16745        self.next
16746    }
16747}
16748
16749unsafe impl OutputChainStruct for SubpassShadingPipelineCreateInfoHUAWEI {
16750    #[inline]
16751    fn next_mut(&self) -> *mut c_void {
16752        self.next
16753    }
16754}
16755
16756unsafe impl InputChainStruct for SubresourceHostMemcpySize {
16757    const TYPE: StructureType = StructureType::SUBRESOURCE_HOST_MEMCPY_SIZE;
16758
16759    #[inline]
16760    fn s_type(&self) -> StructureType {
16761        self.s_type
16762    }
16763
16764    #[inline]
16765    fn next(&self) -> *const c_void {
16766        self.next
16767    }
16768}
16769
16770unsafe impl OutputChainStruct for SubresourceHostMemcpySize {
16771    #[inline]
16772    fn next_mut(&self) -> *mut c_void {
16773        self.next
16774    }
16775}
16776
16777unsafe impl InputChainStruct for SubresourceLayout2 {
16778    const TYPE: StructureType = StructureType::SUBRESOURCE_LAYOUT_2;
16779
16780    #[inline]
16781    fn s_type(&self) -> StructureType {
16782        self.s_type
16783    }
16784
16785    #[inline]
16786    fn next(&self) -> *const c_void {
16787        self.next
16788    }
16789}
16790
16791unsafe impl OutputChainStruct for SubresourceLayout2 {
16792    #[inline]
16793    fn next_mut(&self) -> *mut c_void {
16794        self.next
16795    }
16796}
16797
16798unsafe impl InputChainStruct for SurfaceCapabilities2EXT {
16799    const TYPE: StructureType = StructureType::SURFACE_CAPABILITIES_2_EXT;
16800
16801    #[inline]
16802    fn s_type(&self) -> StructureType {
16803        self.s_type
16804    }
16805
16806    #[inline]
16807    fn next(&self) -> *const c_void {
16808        self.next
16809    }
16810}
16811
16812unsafe impl OutputChainStruct for SurfaceCapabilities2EXT {
16813    #[inline]
16814    fn next_mut(&self) -> *mut c_void {
16815        self.next
16816    }
16817}
16818
16819unsafe impl InputChainStruct for SurfaceCapabilities2KHR {
16820    const TYPE: StructureType = StructureType::SURFACE_CAPABILITIES_2_KHR;
16821
16822    #[inline]
16823    fn s_type(&self) -> StructureType {
16824        self.s_type
16825    }
16826
16827    #[inline]
16828    fn next(&self) -> *const c_void {
16829        self.next
16830    }
16831}
16832
16833unsafe impl OutputChainStruct for SurfaceCapabilities2KHR {
16834    #[inline]
16835    fn next_mut(&self) -> *mut c_void {
16836        self.next
16837    }
16838}
16839
16840unsafe impl InputChainStruct for SurfaceCapabilitiesFullScreenExclusiveEXT {
16841    const TYPE: StructureType = StructureType::SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT;
16842
16843    #[inline]
16844    fn s_type(&self) -> StructureType {
16845        self.s_type
16846    }
16847
16848    #[inline]
16849    fn next(&self) -> *const c_void {
16850        self.next
16851    }
16852}
16853
16854unsafe impl OutputChainStruct for SurfaceCapabilitiesFullScreenExclusiveEXT {
16855    #[inline]
16856    fn next_mut(&self) -> *mut c_void {
16857        self.next
16858    }
16859}
16860
16861unsafe impl InputChainStruct for SurfaceCapabilitiesPresentBarrierNV {
16862    const TYPE: StructureType = StructureType::SURFACE_CAPABILITIES_PRESENT_BARRIER_NV;
16863
16864    #[inline]
16865    fn s_type(&self) -> StructureType {
16866        self.s_type
16867    }
16868
16869    #[inline]
16870    fn next(&self) -> *const c_void {
16871        self.next
16872    }
16873}
16874
16875unsafe impl OutputChainStruct for SurfaceCapabilitiesPresentBarrierNV {
16876    #[inline]
16877    fn next_mut(&self) -> *mut c_void {
16878        self.next
16879    }
16880}
16881
16882unsafe impl InputChainStruct for SurfaceCapabilitiesPresentId2KHR {
16883    const TYPE: StructureType = StructureType::SURFACE_CAPABILITIES_PRESENT_ID_2_KHR;
16884
16885    #[inline]
16886    fn s_type(&self) -> StructureType {
16887        self.s_type
16888    }
16889
16890    #[inline]
16891    fn next(&self) -> *const c_void {
16892        self.next
16893    }
16894}
16895
16896unsafe impl OutputChainStruct for SurfaceCapabilitiesPresentId2KHR {
16897    #[inline]
16898    fn next_mut(&self) -> *mut c_void {
16899        self.next
16900    }
16901}
16902
16903unsafe impl InputChainStruct for SurfaceCapabilitiesPresentWait2KHR {
16904    const TYPE: StructureType = StructureType::SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR;
16905
16906    #[inline]
16907    fn s_type(&self) -> StructureType {
16908        self.s_type
16909    }
16910
16911    #[inline]
16912    fn next(&self) -> *const c_void {
16913        self.next
16914    }
16915}
16916
16917unsafe impl OutputChainStruct for SurfaceCapabilitiesPresentWait2KHR {
16918    #[inline]
16919    fn next_mut(&self) -> *mut c_void {
16920        self.next
16921    }
16922}
16923
16924unsafe impl InputChainStruct for SurfaceCreateInfoOHOS {
16925    const TYPE: StructureType = StructureType::SURFACE_CREATE_INFO_OHOS;
16926
16927    #[inline]
16928    fn s_type(&self) -> StructureType {
16929        self.s_type
16930    }
16931
16932    #[inline]
16933    fn next(&self) -> *const c_void {
16934        self.next
16935    }
16936}
16937
16938unsafe impl InputChainStruct for SurfaceFormat2KHR {
16939    const TYPE: StructureType = StructureType::SURFACE_FORMAT_2_KHR;
16940
16941    #[inline]
16942    fn s_type(&self) -> StructureType {
16943        self.s_type
16944    }
16945
16946    #[inline]
16947    fn next(&self) -> *const c_void {
16948        self.next
16949    }
16950}
16951
16952unsafe impl OutputChainStruct for SurfaceFormat2KHR {
16953    #[inline]
16954    fn next_mut(&self) -> *mut c_void {
16955        self.next
16956    }
16957}
16958
16959unsafe impl InputChainStruct for SurfaceFullScreenExclusiveInfoEXT {
16960    const TYPE: StructureType = StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT;
16961
16962    #[inline]
16963    fn s_type(&self) -> StructureType {
16964        self.s_type
16965    }
16966
16967    #[inline]
16968    fn next(&self) -> *const c_void {
16969        self.next
16970    }
16971}
16972
16973unsafe impl OutputChainStruct for SurfaceFullScreenExclusiveInfoEXT {
16974    #[inline]
16975    fn next_mut(&self) -> *mut c_void {
16976        self.next
16977    }
16978}
16979
16980unsafe impl InputChainStruct for SurfaceFullScreenExclusiveWin32InfoEXT {
16981    const TYPE: StructureType = StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT;
16982
16983    #[inline]
16984    fn s_type(&self) -> StructureType {
16985        self.s_type
16986    }
16987
16988    #[inline]
16989    fn next(&self) -> *const c_void {
16990        self.next
16991    }
16992}
16993
16994unsafe impl InputChainStruct for SurfacePresentModeCompatibilityKHR {
16995    const TYPE: StructureType = StructureType::SURFACE_PRESENT_MODE_COMPATIBILITY_KHR;
16996
16997    #[inline]
16998    fn s_type(&self) -> StructureType {
16999        self.s_type
17000    }
17001
17002    #[inline]
17003    fn next(&self) -> *const c_void {
17004        self.next
17005    }
17006}
17007
17008unsafe impl OutputChainStruct for SurfacePresentModeCompatibilityKHR {
17009    #[inline]
17010    fn next_mut(&self) -> *mut c_void {
17011        self.next
17012    }
17013}
17014
17015unsafe impl InputChainStruct for SurfacePresentModeKHR {
17016    const TYPE: StructureType = StructureType::SURFACE_PRESENT_MODE_KHR;
17017
17018    #[inline]
17019    fn s_type(&self) -> StructureType {
17020        self.s_type
17021    }
17022
17023    #[inline]
17024    fn next(&self) -> *const c_void {
17025        self.next
17026    }
17027}
17028
17029unsafe impl OutputChainStruct for SurfacePresentModeKHR {
17030    #[inline]
17031    fn next_mut(&self) -> *mut c_void {
17032        self.next
17033    }
17034}
17035
17036unsafe impl InputChainStruct for SurfacePresentScalingCapabilitiesKHR {
17037    const TYPE: StructureType = StructureType::SURFACE_PRESENT_SCALING_CAPABILITIES_KHR;
17038
17039    #[inline]
17040    fn s_type(&self) -> StructureType {
17041        self.s_type
17042    }
17043
17044    #[inline]
17045    fn next(&self) -> *const c_void {
17046        self.next
17047    }
17048}
17049
17050unsafe impl OutputChainStruct for SurfacePresentScalingCapabilitiesKHR {
17051    #[inline]
17052    fn next_mut(&self) -> *mut c_void {
17053        self.next
17054    }
17055}
17056
17057unsafe impl InputChainStruct for SurfaceProtectedCapabilitiesKHR {
17058    const TYPE: StructureType = StructureType::SURFACE_PROTECTED_CAPABILITIES_KHR;
17059
17060    #[inline]
17061    fn s_type(&self) -> StructureType {
17062        self.s_type
17063    }
17064
17065    #[inline]
17066    fn next(&self) -> *const c_void {
17067        self.next
17068    }
17069}
17070
17071unsafe impl InputChainStruct for SwapchainCounterCreateInfoEXT {
17072    const TYPE: StructureType = StructureType::SWAPCHAIN_COUNTER_CREATE_INFO_EXT;
17073
17074    #[inline]
17075    fn s_type(&self) -> StructureType {
17076        self.s_type
17077    }
17078
17079    #[inline]
17080    fn next(&self) -> *const c_void {
17081        self.next
17082    }
17083}
17084
17085unsafe impl InputChainStruct for SwapchainCreateInfoKHR {
17086    const TYPE: StructureType = StructureType::SWAPCHAIN_CREATE_INFO_KHR;
17087
17088    #[inline]
17089    fn s_type(&self) -> StructureType {
17090        self.s_type
17091    }
17092
17093    #[inline]
17094    fn next(&self) -> *const c_void {
17095        self.next
17096    }
17097}
17098
17099unsafe impl InputChainStruct for SwapchainDisplayNativeHdrCreateInfoAMD {
17100    const TYPE: StructureType = StructureType::SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD;
17101
17102    #[inline]
17103    fn s_type(&self) -> StructureType {
17104        self.s_type
17105    }
17106
17107    #[inline]
17108    fn next(&self) -> *const c_void {
17109        self.next
17110    }
17111}
17112
17113unsafe impl InputChainStruct for SwapchainLatencyCreateInfoNV {
17114    const TYPE: StructureType = StructureType::SWAPCHAIN_LATENCY_CREATE_INFO_NV;
17115
17116    #[inline]
17117    fn s_type(&self) -> StructureType {
17118        self.s_type
17119    }
17120
17121    #[inline]
17122    fn next(&self) -> *const c_void {
17123        self.next
17124    }
17125}
17126
17127unsafe impl InputChainStruct for SwapchainPresentBarrierCreateInfoNV {
17128    const TYPE: StructureType = StructureType::SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV;
17129
17130    #[inline]
17131    fn s_type(&self) -> StructureType {
17132        self.s_type
17133    }
17134
17135    #[inline]
17136    fn next(&self) -> *const c_void {
17137        self.next
17138    }
17139}
17140
17141unsafe impl OutputChainStruct for SwapchainPresentBarrierCreateInfoNV {
17142    #[inline]
17143    fn next_mut(&self) -> *mut c_void {
17144        self.next
17145    }
17146}
17147
17148unsafe impl InputChainStruct for SwapchainPresentFenceInfoKHR {
17149    const TYPE: StructureType = StructureType::SWAPCHAIN_PRESENT_FENCE_INFO_KHR;
17150
17151    #[inline]
17152    fn s_type(&self) -> StructureType {
17153        self.s_type
17154    }
17155
17156    #[inline]
17157    fn next(&self) -> *const c_void {
17158        self.next
17159    }
17160}
17161
17162unsafe impl InputChainStruct for SwapchainPresentModeInfoKHR {
17163    const TYPE: StructureType = StructureType::SWAPCHAIN_PRESENT_MODE_INFO_KHR;
17164
17165    #[inline]
17166    fn s_type(&self) -> StructureType {
17167        self.s_type
17168    }
17169
17170    #[inline]
17171    fn next(&self) -> *const c_void {
17172        self.next
17173    }
17174}
17175
17176unsafe impl InputChainStruct for SwapchainPresentModesCreateInfoKHR {
17177    const TYPE: StructureType = StructureType::SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR;
17178
17179    #[inline]
17180    fn s_type(&self) -> StructureType {
17181        self.s_type
17182    }
17183
17184    #[inline]
17185    fn next(&self) -> *const c_void {
17186        self.next
17187    }
17188}
17189
17190unsafe impl InputChainStruct for SwapchainPresentScalingCreateInfoKHR {
17191    const TYPE: StructureType = StructureType::SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR;
17192
17193    #[inline]
17194    fn s_type(&self) -> StructureType {
17195        self.s_type
17196    }
17197
17198    #[inline]
17199    fn next(&self) -> *const c_void {
17200        self.next
17201    }
17202}
17203
17204unsafe impl InputChainStruct for SysmemColorSpaceFUCHSIA {
17205    const TYPE: StructureType = StructureType::SYSMEM_COLOR_SPACE_FUCHSIA;
17206
17207    #[inline]
17208    fn s_type(&self) -> StructureType {
17209        self.s_type
17210    }
17211
17212    #[inline]
17213    fn next(&self) -> *const c_void {
17214        self.next
17215    }
17216}
17217
17218unsafe impl InputChainStruct for TensorCaptureDescriptorDataInfoARM {
17219    const TYPE: StructureType = StructureType::TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM;
17220
17221    #[inline]
17222    fn s_type(&self) -> StructureType {
17223        self.s_type
17224    }
17225
17226    #[inline]
17227    fn next(&self) -> *const c_void {
17228        self.next
17229    }
17230}
17231
17232unsafe impl InputChainStruct for TensorCopyARM {
17233    const TYPE: StructureType = StructureType::TENSOR_COPY_ARM;
17234
17235    #[inline]
17236    fn s_type(&self) -> StructureType {
17237        self.s_type
17238    }
17239
17240    #[inline]
17241    fn next(&self) -> *const c_void {
17242        self.next
17243    }
17244}
17245
17246unsafe impl InputChainStruct for TensorCreateInfoARM {
17247    const TYPE: StructureType = StructureType::TENSOR_CREATE_INFO_ARM;
17248
17249    #[inline]
17250    fn s_type(&self) -> StructureType {
17251        self.s_type
17252    }
17253
17254    #[inline]
17255    fn next(&self) -> *const c_void {
17256        self.next
17257    }
17258}
17259
17260unsafe impl InputChainStruct for TensorDependencyInfoARM {
17261    const TYPE: StructureType = StructureType::TENSOR_DEPENDENCY_INFO_ARM;
17262
17263    #[inline]
17264    fn s_type(&self) -> StructureType {
17265        self.s_type
17266    }
17267
17268    #[inline]
17269    fn next(&self) -> *const c_void {
17270        self.next
17271    }
17272}
17273
17274unsafe impl InputChainStruct for TensorDescriptionARM {
17275    const TYPE: StructureType = StructureType::TENSOR_DESCRIPTION_ARM;
17276
17277    #[inline]
17278    fn s_type(&self) -> StructureType {
17279        self.s_type
17280    }
17281
17282    #[inline]
17283    fn next(&self) -> *const c_void {
17284        self.next
17285    }
17286}
17287
17288unsafe impl InputChainStruct for TensorFormatPropertiesARM {
17289    const TYPE: StructureType = StructureType::TENSOR_FORMAT_PROPERTIES_ARM;
17290
17291    #[inline]
17292    fn s_type(&self) -> StructureType {
17293        self.s_type
17294    }
17295
17296    #[inline]
17297    fn next(&self) -> *const c_void {
17298        self.next
17299    }
17300}
17301
17302unsafe impl InputChainStruct for TensorMemoryBarrierARM {
17303    const TYPE: StructureType = StructureType::TENSOR_MEMORY_BARRIER_ARM;
17304
17305    #[inline]
17306    fn s_type(&self) -> StructureType {
17307        self.s_type
17308    }
17309
17310    #[inline]
17311    fn next(&self) -> *const c_void {
17312        self.next
17313    }
17314}
17315
17316unsafe impl InputChainStruct for TensorMemoryRequirementsInfoARM {
17317    const TYPE: StructureType = StructureType::TENSOR_MEMORY_REQUIREMENTS_INFO_ARM;
17318
17319    #[inline]
17320    fn s_type(&self) -> StructureType {
17321        self.s_type
17322    }
17323
17324    #[inline]
17325    fn next(&self) -> *const c_void {
17326        self.next
17327    }
17328}
17329
17330unsafe impl InputChainStruct for TensorViewCaptureDescriptorDataInfoARM {
17331    const TYPE: StructureType = StructureType::TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM;
17332
17333    #[inline]
17334    fn s_type(&self) -> StructureType {
17335        self.s_type
17336    }
17337
17338    #[inline]
17339    fn next(&self) -> *const c_void {
17340        self.next
17341    }
17342}
17343
17344unsafe impl InputChainStruct for TensorViewCreateInfoARM {
17345    const TYPE: StructureType = StructureType::TENSOR_VIEW_CREATE_INFO_ARM;
17346
17347    #[inline]
17348    fn s_type(&self) -> StructureType {
17349        self.s_type
17350    }
17351
17352    #[inline]
17353    fn next(&self) -> *const c_void {
17354        self.next
17355    }
17356}
17357
17358unsafe impl InputChainStruct for TextureLODGatherFormatPropertiesAMD {
17359    const TYPE: StructureType = StructureType::TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD;
17360
17361    #[inline]
17362    fn s_type(&self) -> StructureType {
17363        self.s_type
17364    }
17365
17366    #[inline]
17367    fn next(&self) -> *const c_void {
17368        self.next
17369    }
17370}
17371
17372unsafe impl OutputChainStruct for TextureLODGatherFormatPropertiesAMD {
17373    #[inline]
17374    fn next_mut(&self) -> *mut c_void {
17375        self.next
17376    }
17377}
17378
17379unsafe impl InputChainStruct for TileMemoryBindInfoQCOM {
17380    const TYPE: StructureType = StructureType::TILE_MEMORY_BIND_INFO_QCOM;
17381
17382    #[inline]
17383    fn s_type(&self) -> StructureType {
17384        self.s_type
17385    }
17386
17387    #[inline]
17388    fn next(&self) -> *const c_void {
17389        self.next
17390    }
17391}
17392
17393unsafe impl InputChainStruct for TileMemoryRequirementsQCOM {
17394    const TYPE: StructureType = StructureType::TILE_MEMORY_REQUIREMENTS_QCOM;
17395
17396    #[inline]
17397    fn s_type(&self) -> StructureType {
17398        self.s_type
17399    }
17400
17401    #[inline]
17402    fn next(&self) -> *const c_void {
17403        self.next
17404    }
17405}
17406
17407unsafe impl OutputChainStruct for TileMemoryRequirementsQCOM {
17408    #[inline]
17409    fn next_mut(&self) -> *mut c_void {
17410        self.next
17411    }
17412}
17413
17414unsafe impl InputChainStruct for TileMemorySizeInfoQCOM {
17415    const TYPE: StructureType = StructureType::TILE_MEMORY_SIZE_INFO_QCOM;
17416
17417    #[inline]
17418    fn s_type(&self) -> StructureType {
17419        self.s_type
17420    }
17421
17422    #[inline]
17423    fn next(&self) -> *const c_void {
17424        self.next
17425    }
17426}
17427
17428unsafe impl InputChainStruct for TilePropertiesQCOM {
17429    const TYPE: StructureType = StructureType::TILE_PROPERTIES_QCOM;
17430
17431    #[inline]
17432    fn s_type(&self) -> StructureType {
17433        self.s_type
17434    }
17435
17436    #[inline]
17437    fn next(&self) -> *const c_void {
17438        self.next
17439    }
17440}
17441
17442unsafe impl OutputChainStruct for TilePropertiesQCOM {
17443    #[inline]
17444    fn next_mut(&self) -> *mut c_void {
17445        self.next
17446    }
17447}
17448
17449unsafe impl InputChainStruct for TimelineSemaphoreSubmitInfo {
17450    const TYPE: StructureType = StructureType::TIMELINE_SEMAPHORE_SUBMIT_INFO;
17451
17452    #[inline]
17453    fn s_type(&self) -> StructureType {
17454        self.s_type
17455    }
17456
17457    #[inline]
17458    fn next(&self) -> *const c_void {
17459        self.next
17460    }
17461}
17462
17463unsafe impl InputChainStruct for ValidationCacheCreateInfoEXT {
17464    const TYPE: StructureType = StructureType::VALIDATION_CACHE_CREATE_INFO_EXT;
17465
17466    #[inline]
17467    fn s_type(&self) -> StructureType {
17468        self.s_type
17469    }
17470
17471    #[inline]
17472    fn next(&self) -> *const c_void {
17473        self.next
17474    }
17475}
17476
17477unsafe impl InputChainStruct for ValidationFeaturesEXT {
17478    const TYPE: StructureType = StructureType::VALIDATION_FEATURES_EXT;
17479
17480    #[inline]
17481    fn s_type(&self) -> StructureType {
17482        self.s_type
17483    }
17484
17485    #[inline]
17486    fn next(&self) -> *const c_void {
17487        self.next
17488    }
17489}
17490
17491unsafe impl InputChainStruct for ValidationFlagsEXT {
17492    const TYPE: StructureType = StructureType::VALIDATION_FLAGS_EXT;
17493
17494    #[inline]
17495    fn s_type(&self) -> StructureType {
17496        self.s_type
17497    }
17498
17499    #[inline]
17500    fn next(&self) -> *const c_void {
17501        self.next
17502    }
17503}
17504
17505unsafe impl InputChainStruct for VertexInputAttributeDescription2EXT {
17506    const TYPE: StructureType = StructureType::VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT;
17507
17508    #[inline]
17509    fn s_type(&self) -> StructureType {
17510        self.s_type
17511    }
17512
17513    #[inline]
17514    fn next(&self) -> *const c_void {
17515        self.next
17516    }
17517}
17518
17519unsafe impl OutputChainStruct for VertexInputAttributeDescription2EXT {
17520    #[inline]
17521    fn next_mut(&self) -> *mut c_void {
17522        self.next
17523    }
17524}
17525
17526unsafe impl InputChainStruct for VertexInputBindingDescription2EXT {
17527    const TYPE: StructureType = StructureType::VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT;
17528
17529    #[inline]
17530    fn s_type(&self) -> StructureType {
17531        self.s_type
17532    }
17533
17534    #[inline]
17535    fn next(&self) -> *const c_void {
17536        self.next
17537    }
17538}
17539
17540unsafe impl OutputChainStruct for VertexInputBindingDescription2EXT {
17541    #[inline]
17542    fn next_mut(&self) -> *mut c_void {
17543        self.next
17544    }
17545}
17546
17547unsafe impl InputChainStruct for ViSurfaceCreateInfoNN {
17548    const TYPE: StructureType = StructureType::VI_SURFACE_CREATE_INFO_NN;
17549
17550    #[inline]
17551    fn s_type(&self) -> StructureType {
17552        self.s_type
17553    }
17554
17555    #[inline]
17556    fn next(&self) -> *const c_void {
17557        self.next
17558    }
17559}
17560
17561unsafe impl InputChainStruct for VideoBeginCodingInfoKHR {
17562    const TYPE: StructureType = StructureType::VIDEO_BEGIN_CODING_INFO_KHR;
17563
17564    #[inline]
17565    fn s_type(&self) -> StructureType {
17566        self.s_type
17567    }
17568
17569    #[inline]
17570    fn next(&self) -> *const c_void {
17571        self.next
17572    }
17573}
17574
17575unsafe impl InputChainStruct for VideoCapabilitiesKHR {
17576    const TYPE: StructureType = StructureType::VIDEO_CAPABILITIES_KHR;
17577
17578    #[inline]
17579    fn s_type(&self) -> StructureType {
17580        self.s_type
17581    }
17582
17583    #[inline]
17584    fn next(&self) -> *const c_void {
17585        self.next
17586    }
17587}
17588
17589unsafe impl OutputChainStruct for VideoCapabilitiesKHR {
17590    #[inline]
17591    fn next_mut(&self) -> *mut c_void {
17592        self.next
17593    }
17594}
17595
17596unsafe impl InputChainStruct for VideoCodingControlInfoKHR {
17597    const TYPE: StructureType = StructureType::VIDEO_CODING_CONTROL_INFO_KHR;
17598
17599    #[inline]
17600    fn s_type(&self) -> StructureType {
17601        self.s_type
17602    }
17603
17604    #[inline]
17605    fn next(&self) -> *const c_void {
17606        self.next
17607    }
17608}
17609
17610unsafe impl InputChainStruct for VideoDecodeAV1CapabilitiesKHR {
17611    const TYPE: StructureType = StructureType::VIDEO_DECODE_AV1_CAPABILITIES_KHR;
17612
17613    #[inline]
17614    fn s_type(&self) -> StructureType {
17615        self.s_type
17616    }
17617
17618    #[inline]
17619    fn next(&self) -> *const c_void {
17620        self.next
17621    }
17622}
17623
17624unsafe impl OutputChainStruct for VideoDecodeAV1CapabilitiesKHR {
17625    #[inline]
17626    fn next_mut(&self) -> *mut c_void {
17627        self.next
17628    }
17629}
17630
17631unsafe impl InputChainStruct for VideoDecodeAV1DpbSlotInfoKHR {
17632    const TYPE: StructureType = StructureType::VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR;
17633
17634    #[inline]
17635    fn s_type(&self) -> StructureType {
17636        self.s_type
17637    }
17638
17639    #[inline]
17640    fn next(&self) -> *const c_void {
17641        self.next
17642    }
17643}
17644
17645unsafe impl InputChainStruct for VideoDecodeAV1InlineSessionParametersInfoKHR {
17646    const TYPE: StructureType = StructureType::VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR;
17647
17648    #[inline]
17649    fn s_type(&self) -> StructureType {
17650        self.s_type
17651    }
17652
17653    #[inline]
17654    fn next(&self) -> *const c_void {
17655        self.next
17656    }
17657}
17658
17659unsafe impl InputChainStruct for VideoDecodeAV1PictureInfoKHR {
17660    const TYPE: StructureType = StructureType::VIDEO_DECODE_AV1_PICTURE_INFO_KHR;
17661
17662    #[inline]
17663    fn s_type(&self) -> StructureType {
17664        self.s_type
17665    }
17666
17667    #[inline]
17668    fn next(&self) -> *const c_void {
17669        self.next
17670    }
17671}
17672
17673unsafe impl InputChainStruct for VideoDecodeAV1ProfileInfoKHR {
17674    const TYPE: StructureType = StructureType::VIDEO_DECODE_AV1_PROFILE_INFO_KHR;
17675
17676    #[inline]
17677    fn s_type(&self) -> StructureType {
17678        self.s_type
17679    }
17680
17681    #[inline]
17682    fn next(&self) -> *const c_void {
17683        self.next
17684    }
17685}
17686
17687unsafe impl InputChainStruct for VideoDecodeAV1SessionParametersCreateInfoKHR {
17688    const TYPE: StructureType = StructureType::VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR;
17689
17690    #[inline]
17691    fn s_type(&self) -> StructureType {
17692        self.s_type
17693    }
17694
17695    #[inline]
17696    fn next(&self) -> *const c_void {
17697        self.next
17698    }
17699}
17700
17701unsafe impl InputChainStruct for VideoDecodeCapabilitiesKHR {
17702    const TYPE: StructureType = StructureType::VIDEO_DECODE_CAPABILITIES_KHR;
17703
17704    #[inline]
17705    fn s_type(&self) -> StructureType {
17706        self.s_type
17707    }
17708
17709    #[inline]
17710    fn next(&self) -> *const c_void {
17711        self.next
17712    }
17713}
17714
17715unsafe impl OutputChainStruct for VideoDecodeCapabilitiesKHR {
17716    #[inline]
17717    fn next_mut(&self) -> *mut c_void {
17718        self.next
17719    }
17720}
17721
17722unsafe impl InputChainStruct for VideoDecodeH264CapabilitiesKHR {
17723    const TYPE: StructureType = StructureType::VIDEO_DECODE_H264_CAPABILITIES_KHR;
17724
17725    #[inline]
17726    fn s_type(&self) -> StructureType {
17727        self.s_type
17728    }
17729
17730    #[inline]
17731    fn next(&self) -> *const c_void {
17732        self.next
17733    }
17734}
17735
17736unsafe impl OutputChainStruct for VideoDecodeH264CapabilitiesKHR {
17737    #[inline]
17738    fn next_mut(&self) -> *mut c_void {
17739        self.next
17740    }
17741}
17742
17743unsafe impl InputChainStruct for VideoDecodeH264DpbSlotInfoKHR {
17744    const TYPE: StructureType = StructureType::VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR;
17745
17746    #[inline]
17747    fn s_type(&self) -> StructureType {
17748        self.s_type
17749    }
17750
17751    #[inline]
17752    fn next(&self) -> *const c_void {
17753        self.next
17754    }
17755}
17756
17757unsafe impl InputChainStruct for VideoDecodeH264InlineSessionParametersInfoKHR {
17758    const TYPE: StructureType = StructureType::VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR;
17759
17760    #[inline]
17761    fn s_type(&self) -> StructureType {
17762        self.s_type
17763    }
17764
17765    #[inline]
17766    fn next(&self) -> *const c_void {
17767        self.next
17768    }
17769}
17770
17771unsafe impl InputChainStruct for VideoDecodeH264PictureInfoKHR {
17772    const TYPE: StructureType = StructureType::VIDEO_DECODE_H264_PICTURE_INFO_KHR;
17773
17774    #[inline]
17775    fn s_type(&self) -> StructureType {
17776        self.s_type
17777    }
17778
17779    #[inline]
17780    fn next(&self) -> *const c_void {
17781        self.next
17782    }
17783}
17784
17785unsafe impl InputChainStruct for VideoDecodeH264ProfileInfoKHR {
17786    const TYPE: StructureType = StructureType::VIDEO_DECODE_H264_PROFILE_INFO_KHR;
17787
17788    #[inline]
17789    fn s_type(&self) -> StructureType {
17790        self.s_type
17791    }
17792
17793    #[inline]
17794    fn next(&self) -> *const c_void {
17795        self.next
17796    }
17797}
17798
17799unsafe impl InputChainStruct for VideoDecodeH264SessionParametersAddInfoKHR {
17800    const TYPE: StructureType = StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR;
17801
17802    #[inline]
17803    fn s_type(&self) -> StructureType {
17804        self.s_type
17805    }
17806
17807    #[inline]
17808    fn next(&self) -> *const c_void {
17809        self.next
17810    }
17811}
17812
17813unsafe impl InputChainStruct for VideoDecodeH264SessionParametersCreateInfoKHR {
17814    const TYPE: StructureType = StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR;
17815
17816    #[inline]
17817    fn s_type(&self) -> StructureType {
17818        self.s_type
17819    }
17820
17821    #[inline]
17822    fn next(&self) -> *const c_void {
17823        self.next
17824    }
17825}
17826
17827unsafe impl InputChainStruct for VideoDecodeH265CapabilitiesKHR {
17828    const TYPE: StructureType = StructureType::VIDEO_DECODE_H265_CAPABILITIES_KHR;
17829
17830    #[inline]
17831    fn s_type(&self) -> StructureType {
17832        self.s_type
17833    }
17834
17835    #[inline]
17836    fn next(&self) -> *const c_void {
17837        self.next
17838    }
17839}
17840
17841unsafe impl OutputChainStruct for VideoDecodeH265CapabilitiesKHR {
17842    #[inline]
17843    fn next_mut(&self) -> *mut c_void {
17844        self.next
17845    }
17846}
17847
17848unsafe impl InputChainStruct for VideoDecodeH265DpbSlotInfoKHR {
17849    const TYPE: StructureType = StructureType::VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR;
17850
17851    #[inline]
17852    fn s_type(&self) -> StructureType {
17853        self.s_type
17854    }
17855
17856    #[inline]
17857    fn next(&self) -> *const c_void {
17858        self.next
17859    }
17860}
17861
17862unsafe impl InputChainStruct for VideoDecodeH265InlineSessionParametersInfoKHR {
17863    const TYPE: StructureType = StructureType::VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR;
17864
17865    #[inline]
17866    fn s_type(&self) -> StructureType {
17867        self.s_type
17868    }
17869
17870    #[inline]
17871    fn next(&self) -> *const c_void {
17872        self.next
17873    }
17874}
17875
17876unsafe impl InputChainStruct for VideoDecodeH265PictureInfoKHR {
17877    const TYPE: StructureType = StructureType::VIDEO_DECODE_H265_PICTURE_INFO_KHR;
17878
17879    #[inline]
17880    fn s_type(&self) -> StructureType {
17881        self.s_type
17882    }
17883
17884    #[inline]
17885    fn next(&self) -> *const c_void {
17886        self.next
17887    }
17888}
17889
17890unsafe impl InputChainStruct for VideoDecodeH265ProfileInfoKHR {
17891    const TYPE: StructureType = StructureType::VIDEO_DECODE_H265_PROFILE_INFO_KHR;
17892
17893    #[inline]
17894    fn s_type(&self) -> StructureType {
17895        self.s_type
17896    }
17897
17898    #[inline]
17899    fn next(&self) -> *const c_void {
17900        self.next
17901    }
17902}
17903
17904unsafe impl InputChainStruct for VideoDecodeH265SessionParametersAddInfoKHR {
17905    const TYPE: StructureType = StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR;
17906
17907    #[inline]
17908    fn s_type(&self) -> StructureType {
17909        self.s_type
17910    }
17911
17912    #[inline]
17913    fn next(&self) -> *const c_void {
17914        self.next
17915    }
17916}
17917
17918unsafe impl InputChainStruct for VideoDecodeH265SessionParametersCreateInfoKHR {
17919    const TYPE: StructureType = StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR;
17920
17921    #[inline]
17922    fn s_type(&self) -> StructureType {
17923        self.s_type
17924    }
17925
17926    #[inline]
17927    fn next(&self) -> *const c_void {
17928        self.next
17929    }
17930}
17931
17932unsafe impl InputChainStruct for VideoDecodeInfoKHR {
17933    const TYPE: StructureType = StructureType::VIDEO_DECODE_INFO_KHR;
17934
17935    #[inline]
17936    fn s_type(&self) -> StructureType {
17937        self.s_type
17938    }
17939
17940    #[inline]
17941    fn next(&self) -> *const c_void {
17942        self.next
17943    }
17944}
17945
17946unsafe impl InputChainStruct for VideoDecodeUsageInfoKHR {
17947    const TYPE: StructureType = StructureType::VIDEO_DECODE_USAGE_INFO_KHR;
17948
17949    #[inline]
17950    fn s_type(&self) -> StructureType {
17951        self.s_type
17952    }
17953
17954    #[inline]
17955    fn next(&self) -> *const c_void {
17956        self.next
17957    }
17958}
17959
17960unsafe impl InputChainStruct for VideoDecodeVP9CapabilitiesKHR {
17961    const TYPE: StructureType = StructureType::VIDEO_DECODE_VP9_CAPABILITIES_KHR;
17962
17963    #[inline]
17964    fn s_type(&self) -> StructureType {
17965        self.s_type
17966    }
17967
17968    #[inline]
17969    fn next(&self) -> *const c_void {
17970        self.next
17971    }
17972}
17973
17974unsafe impl OutputChainStruct for VideoDecodeVP9CapabilitiesKHR {
17975    #[inline]
17976    fn next_mut(&self) -> *mut c_void {
17977        self.next
17978    }
17979}
17980
17981unsafe impl InputChainStruct for VideoDecodeVP9PictureInfoKHR {
17982    const TYPE: StructureType = StructureType::VIDEO_DECODE_VP9_PICTURE_INFO_KHR;
17983
17984    #[inline]
17985    fn s_type(&self) -> StructureType {
17986        self.s_type
17987    }
17988
17989    #[inline]
17990    fn next(&self) -> *const c_void {
17991        self.next
17992    }
17993}
17994
17995unsafe impl InputChainStruct for VideoDecodeVP9ProfileInfoKHR {
17996    const TYPE: StructureType = StructureType::VIDEO_DECODE_VP9_PROFILE_INFO_KHR;
17997
17998    #[inline]
17999    fn s_type(&self) -> StructureType {
18000        self.s_type
18001    }
18002
18003    #[inline]
18004    fn next(&self) -> *const c_void {
18005        self.next
18006    }
18007}
18008
18009unsafe impl InputChainStruct for VideoEncodeAV1CapabilitiesKHR {
18010    const TYPE: StructureType = StructureType::VIDEO_ENCODE_AV1_CAPABILITIES_KHR;
18011
18012    #[inline]
18013    fn s_type(&self) -> StructureType {
18014        self.s_type
18015    }
18016
18017    #[inline]
18018    fn next(&self) -> *const c_void {
18019        self.next
18020    }
18021}
18022
18023unsafe impl OutputChainStruct for VideoEncodeAV1CapabilitiesKHR {
18024    #[inline]
18025    fn next_mut(&self) -> *mut c_void {
18026        self.next
18027    }
18028}
18029
18030unsafe impl InputChainStruct for VideoEncodeAV1DpbSlotInfoKHR {
18031    const TYPE: StructureType = StructureType::VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR;
18032
18033    #[inline]
18034    fn s_type(&self) -> StructureType {
18035        self.s_type
18036    }
18037
18038    #[inline]
18039    fn next(&self) -> *const c_void {
18040        self.next
18041    }
18042}
18043
18044unsafe impl InputChainStruct for VideoEncodeAV1GopRemainingFrameInfoKHR {
18045    const TYPE: StructureType = StructureType::VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR;
18046
18047    #[inline]
18048    fn s_type(&self) -> StructureType {
18049        self.s_type
18050    }
18051
18052    #[inline]
18053    fn next(&self) -> *const c_void {
18054        self.next
18055    }
18056}
18057
18058unsafe impl InputChainStruct for VideoEncodeAV1PictureInfoKHR {
18059    const TYPE: StructureType = StructureType::VIDEO_ENCODE_AV1_PICTURE_INFO_KHR;
18060
18061    #[inline]
18062    fn s_type(&self) -> StructureType {
18063        self.s_type
18064    }
18065
18066    #[inline]
18067    fn next(&self) -> *const c_void {
18068        self.next
18069    }
18070}
18071
18072unsafe impl InputChainStruct for VideoEncodeAV1ProfileInfoKHR {
18073    const TYPE: StructureType = StructureType::VIDEO_ENCODE_AV1_PROFILE_INFO_KHR;
18074
18075    #[inline]
18076    fn s_type(&self) -> StructureType {
18077        self.s_type
18078    }
18079
18080    #[inline]
18081    fn next(&self) -> *const c_void {
18082        self.next
18083    }
18084}
18085
18086unsafe impl InputChainStruct for VideoEncodeAV1QualityLevelPropertiesKHR {
18087    const TYPE: StructureType = StructureType::VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR;
18088
18089    #[inline]
18090    fn s_type(&self) -> StructureType {
18091        self.s_type
18092    }
18093
18094    #[inline]
18095    fn next(&self) -> *const c_void {
18096        self.next
18097    }
18098}
18099
18100unsafe impl OutputChainStruct for VideoEncodeAV1QualityLevelPropertiesKHR {
18101    #[inline]
18102    fn next_mut(&self) -> *mut c_void {
18103        self.next
18104    }
18105}
18106
18107unsafe impl InputChainStruct for VideoEncodeAV1QuantizationMapCapabilitiesKHR {
18108    const TYPE: StructureType = StructureType::VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR;
18109
18110    #[inline]
18111    fn s_type(&self) -> StructureType {
18112        self.s_type
18113    }
18114
18115    #[inline]
18116    fn next(&self) -> *const c_void {
18117        self.next
18118    }
18119}
18120
18121unsafe impl OutputChainStruct for VideoEncodeAV1QuantizationMapCapabilitiesKHR {
18122    #[inline]
18123    fn next_mut(&self) -> *mut c_void {
18124        self.next
18125    }
18126}
18127
18128unsafe impl InputChainStruct for VideoEncodeAV1RateControlInfoKHR {
18129    const TYPE: StructureType = StructureType::VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR;
18130
18131    #[inline]
18132    fn s_type(&self) -> StructureType {
18133        self.s_type
18134    }
18135
18136    #[inline]
18137    fn next(&self) -> *const c_void {
18138        self.next
18139    }
18140}
18141
18142unsafe impl InputChainStruct for VideoEncodeAV1RateControlLayerInfoKHR {
18143    const TYPE: StructureType = StructureType::VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR;
18144
18145    #[inline]
18146    fn s_type(&self) -> StructureType {
18147        self.s_type
18148    }
18149
18150    #[inline]
18151    fn next(&self) -> *const c_void {
18152        self.next
18153    }
18154}
18155
18156unsafe impl InputChainStruct for VideoEncodeAV1SessionCreateInfoKHR {
18157    const TYPE: StructureType = StructureType::VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR;
18158
18159    #[inline]
18160    fn s_type(&self) -> StructureType {
18161        self.s_type
18162    }
18163
18164    #[inline]
18165    fn next(&self) -> *const c_void {
18166        self.next
18167    }
18168}
18169
18170unsafe impl InputChainStruct for VideoEncodeAV1SessionParametersCreateInfoKHR {
18171    const TYPE: StructureType = StructureType::VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR;
18172
18173    #[inline]
18174    fn s_type(&self) -> StructureType {
18175        self.s_type
18176    }
18177
18178    #[inline]
18179    fn next(&self) -> *const c_void {
18180        self.next
18181    }
18182}
18183
18184unsafe impl InputChainStruct for VideoEncodeCapabilitiesKHR {
18185    const TYPE: StructureType = StructureType::VIDEO_ENCODE_CAPABILITIES_KHR;
18186
18187    #[inline]
18188    fn s_type(&self) -> StructureType {
18189        self.s_type
18190    }
18191
18192    #[inline]
18193    fn next(&self) -> *const c_void {
18194        self.next
18195    }
18196}
18197
18198unsafe impl OutputChainStruct for VideoEncodeCapabilitiesKHR {
18199    #[inline]
18200    fn next_mut(&self) -> *mut c_void {
18201        self.next
18202    }
18203}
18204
18205unsafe impl InputChainStruct for VideoEncodeH264CapabilitiesKHR {
18206    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_CAPABILITIES_KHR;
18207
18208    #[inline]
18209    fn s_type(&self) -> StructureType {
18210        self.s_type
18211    }
18212
18213    #[inline]
18214    fn next(&self) -> *const c_void {
18215        self.next
18216    }
18217}
18218
18219unsafe impl OutputChainStruct for VideoEncodeH264CapabilitiesKHR {
18220    #[inline]
18221    fn next_mut(&self) -> *mut c_void {
18222        self.next
18223    }
18224}
18225
18226unsafe impl InputChainStruct for VideoEncodeH264DpbSlotInfoKHR {
18227    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR;
18228
18229    #[inline]
18230    fn s_type(&self) -> StructureType {
18231        self.s_type
18232    }
18233
18234    #[inline]
18235    fn next(&self) -> *const c_void {
18236        self.next
18237    }
18238}
18239
18240unsafe impl InputChainStruct for VideoEncodeH264GopRemainingFrameInfoKHR {
18241    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR;
18242
18243    #[inline]
18244    fn s_type(&self) -> StructureType {
18245        self.s_type
18246    }
18247
18248    #[inline]
18249    fn next(&self) -> *const c_void {
18250        self.next
18251    }
18252}
18253
18254unsafe impl InputChainStruct for VideoEncodeH264NaluSliceInfoKHR {
18255    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR;
18256
18257    #[inline]
18258    fn s_type(&self) -> StructureType {
18259        self.s_type
18260    }
18261
18262    #[inline]
18263    fn next(&self) -> *const c_void {
18264        self.next
18265    }
18266}
18267
18268unsafe impl InputChainStruct for VideoEncodeH264PictureInfoKHR {
18269    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_PICTURE_INFO_KHR;
18270
18271    #[inline]
18272    fn s_type(&self) -> StructureType {
18273        self.s_type
18274    }
18275
18276    #[inline]
18277    fn next(&self) -> *const c_void {
18278        self.next
18279    }
18280}
18281
18282unsafe impl InputChainStruct for VideoEncodeH264ProfileInfoKHR {
18283    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_PROFILE_INFO_KHR;
18284
18285    #[inline]
18286    fn s_type(&self) -> StructureType {
18287        self.s_type
18288    }
18289
18290    #[inline]
18291    fn next(&self) -> *const c_void {
18292        self.next
18293    }
18294}
18295
18296unsafe impl InputChainStruct for VideoEncodeH264QualityLevelPropertiesKHR {
18297    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR;
18298
18299    #[inline]
18300    fn s_type(&self) -> StructureType {
18301        self.s_type
18302    }
18303
18304    #[inline]
18305    fn next(&self) -> *const c_void {
18306        self.next
18307    }
18308}
18309
18310unsafe impl OutputChainStruct for VideoEncodeH264QualityLevelPropertiesKHR {
18311    #[inline]
18312    fn next_mut(&self) -> *mut c_void {
18313        self.next
18314    }
18315}
18316
18317unsafe impl InputChainStruct for VideoEncodeH264QuantizationMapCapabilitiesKHR {
18318    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR;
18319
18320    #[inline]
18321    fn s_type(&self) -> StructureType {
18322        self.s_type
18323    }
18324
18325    #[inline]
18326    fn next(&self) -> *const c_void {
18327        self.next
18328    }
18329}
18330
18331unsafe impl OutputChainStruct for VideoEncodeH264QuantizationMapCapabilitiesKHR {
18332    #[inline]
18333    fn next_mut(&self) -> *mut c_void {
18334        self.next
18335    }
18336}
18337
18338unsafe impl InputChainStruct for VideoEncodeH264RateControlInfoKHR {
18339    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR;
18340
18341    #[inline]
18342    fn s_type(&self) -> StructureType {
18343        self.s_type
18344    }
18345
18346    #[inline]
18347    fn next(&self) -> *const c_void {
18348        self.next
18349    }
18350}
18351
18352unsafe impl InputChainStruct for VideoEncodeH264RateControlLayerInfoKHR {
18353    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR;
18354
18355    #[inline]
18356    fn s_type(&self) -> StructureType {
18357        self.s_type
18358    }
18359
18360    #[inline]
18361    fn next(&self) -> *const c_void {
18362        self.next
18363    }
18364}
18365
18366unsafe impl InputChainStruct for VideoEncodeH264SessionCreateInfoKHR {
18367    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR;
18368
18369    #[inline]
18370    fn s_type(&self) -> StructureType {
18371        self.s_type
18372    }
18373
18374    #[inline]
18375    fn next(&self) -> *const c_void {
18376        self.next
18377    }
18378}
18379
18380unsafe impl InputChainStruct for VideoEncodeH264SessionParametersAddInfoKHR {
18381    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR;
18382
18383    #[inline]
18384    fn s_type(&self) -> StructureType {
18385        self.s_type
18386    }
18387
18388    #[inline]
18389    fn next(&self) -> *const c_void {
18390        self.next
18391    }
18392}
18393
18394unsafe impl InputChainStruct for VideoEncodeH264SessionParametersCreateInfoKHR {
18395    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR;
18396
18397    #[inline]
18398    fn s_type(&self) -> StructureType {
18399        self.s_type
18400    }
18401
18402    #[inline]
18403    fn next(&self) -> *const c_void {
18404        self.next
18405    }
18406}
18407
18408unsafe impl InputChainStruct for VideoEncodeH264SessionParametersFeedbackInfoKHR {
18409    const TYPE: StructureType =
18410        StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR;
18411
18412    #[inline]
18413    fn s_type(&self) -> StructureType {
18414        self.s_type
18415    }
18416
18417    #[inline]
18418    fn next(&self) -> *const c_void {
18419        self.next
18420    }
18421}
18422
18423unsafe impl OutputChainStruct for VideoEncodeH264SessionParametersFeedbackInfoKHR {
18424    #[inline]
18425    fn next_mut(&self) -> *mut c_void {
18426        self.next
18427    }
18428}
18429
18430unsafe impl InputChainStruct for VideoEncodeH264SessionParametersGetInfoKHR {
18431    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR;
18432
18433    #[inline]
18434    fn s_type(&self) -> StructureType {
18435        self.s_type
18436    }
18437
18438    #[inline]
18439    fn next(&self) -> *const c_void {
18440        self.next
18441    }
18442}
18443
18444unsafe impl InputChainStruct for VideoEncodeH265CapabilitiesKHR {
18445    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_CAPABILITIES_KHR;
18446
18447    #[inline]
18448    fn s_type(&self) -> StructureType {
18449        self.s_type
18450    }
18451
18452    #[inline]
18453    fn next(&self) -> *const c_void {
18454        self.next
18455    }
18456}
18457
18458unsafe impl OutputChainStruct for VideoEncodeH265CapabilitiesKHR {
18459    #[inline]
18460    fn next_mut(&self) -> *mut c_void {
18461        self.next
18462    }
18463}
18464
18465unsafe impl InputChainStruct for VideoEncodeH265DpbSlotInfoKHR {
18466    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR;
18467
18468    #[inline]
18469    fn s_type(&self) -> StructureType {
18470        self.s_type
18471    }
18472
18473    #[inline]
18474    fn next(&self) -> *const c_void {
18475        self.next
18476    }
18477}
18478
18479unsafe impl InputChainStruct for VideoEncodeH265GopRemainingFrameInfoKHR {
18480    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR;
18481
18482    #[inline]
18483    fn s_type(&self) -> StructureType {
18484        self.s_type
18485    }
18486
18487    #[inline]
18488    fn next(&self) -> *const c_void {
18489        self.next
18490    }
18491}
18492
18493unsafe impl InputChainStruct for VideoEncodeH265NaluSliceSegmentInfoKHR {
18494    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR;
18495
18496    #[inline]
18497    fn s_type(&self) -> StructureType {
18498        self.s_type
18499    }
18500
18501    #[inline]
18502    fn next(&self) -> *const c_void {
18503        self.next
18504    }
18505}
18506
18507unsafe impl InputChainStruct for VideoEncodeH265PictureInfoKHR {
18508    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_PICTURE_INFO_KHR;
18509
18510    #[inline]
18511    fn s_type(&self) -> StructureType {
18512        self.s_type
18513    }
18514
18515    #[inline]
18516    fn next(&self) -> *const c_void {
18517        self.next
18518    }
18519}
18520
18521unsafe impl InputChainStruct for VideoEncodeH265ProfileInfoKHR {
18522    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_PROFILE_INFO_KHR;
18523
18524    #[inline]
18525    fn s_type(&self) -> StructureType {
18526        self.s_type
18527    }
18528
18529    #[inline]
18530    fn next(&self) -> *const c_void {
18531        self.next
18532    }
18533}
18534
18535unsafe impl InputChainStruct for VideoEncodeH265QualityLevelPropertiesKHR {
18536    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR;
18537
18538    #[inline]
18539    fn s_type(&self) -> StructureType {
18540        self.s_type
18541    }
18542
18543    #[inline]
18544    fn next(&self) -> *const c_void {
18545        self.next
18546    }
18547}
18548
18549unsafe impl OutputChainStruct for VideoEncodeH265QualityLevelPropertiesKHR {
18550    #[inline]
18551    fn next_mut(&self) -> *mut c_void {
18552        self.next
18553    }
18554}
18555
18556unsafe impl InputChainStruct for VideoEncodeH265QuantizationMapCapabilitiesKHR {
18557    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR;
18558
18559    #[inline]
18560    fn s_type(&self) -> StructureType {
18561        self.s_type
18562    }
18563
18564    #[inline]
18565    fn next(&self) -> *const c_void {
18566        self.next
18567    }
18568}
18569
18570unsafe impl OutputChainStruct for VideoEncodeH265QuantizationMapCapabilitiesKHR {
18571    #[inline]
18572    fn next_mut(&self) -> *mut c_void {
18573        self.next
18574    }
18575}
18576
18577unsafe impl InputChainStruct for VideoEncodeH265RateControlInfoKHR {
18578    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR;
18579
18580    #[inline]
18581    fn s_type(&self) -> StructureType {
18582        self.s_type
18583    }
18584
18585    #[inline]
18586    fn next(&self) -> *const c_void {
18587        self.next
18588    }
18589}
18590
18591unsafe impl InputChainStruct for VideoEncodeH265RateControlLayerInfoKHR {
18592    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR;
18593
18594    #[inline]
18595    fn s_type(&self) -> StructureType {
18596        self.s_type
18597    }
18598
18599    #[inline]
18600    fn next(&self) -> *const c_void {
18601        self.next
18602    }
18603}
18604
18605unsafe impl InputChainStruct for VideoEncodeH265SessionCreateInfoKHR {
18606    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR;
18607
18608    #[inline]
18609    fn s_type(&self) -> StructureType {
18610        self.s_type
18611    }
18612
18613    #[inline]
18614    fn next(&self) -> *const c_void {
18615        self.next
18616    }
18617}
18618
18619unsafe impl InputChainStruct for VideoEncodeH265SessionParametersAddInfoKHR {
18620    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR;
18621
18622    #[inline]
18623    fn s_type(&self) -> StructureType {
18624        self.s_type
18625    }
18626
18627    #[inline]
18628    fn next(&self) -> *const c_void {
18629        self.next
18630    }
18631}
18632
18633unsafe impl InputChainStruct for VideoEncodeH265SessionParametersCreateInfoKHR {
18634    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR;
18635
18636    #[inline]
18637    fn s_type(&self) -> StructureType {
18638        self.s_type
18639    }
18640
18641    #[inline]
18642    fn next(&self) -> *const c_void {
18643        self.next
18644    }
18645}
18646
18647unsafe impl InputChainStruct for VideoEncodeH265SessionParametersFeedbackInfoKHR {
18648    const TYPE: StructureType =
18649        StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR;
18650
18651    #[inline]
18652    fn s_type(&self) -> StructureType {
18653        self.s_type
18654    }
18655
18656    #[inline]
18657    fn next(&self) -> *const c_void {
18658        self.next
18659    }
18660}
18661
18662unsafe impl OutputChainStruct for VideoEncodeH265SessionParametersFeedbackInfoKHR {
18663    #[inline]
18664    fn next_mut(&self) -> *mut c_void {
18665        self.next
18666    }
18667}
18668
18669unsafe impl InputChainStruct for VideoEncodeH265SessionParametersGetInfoKHR {
18670    const TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR;
18671
18672    #[inline]
18673    fn s_type(&self) -> StructureType {
18674        self.s_type
18675    }
18676
18677    #[inline]
18678    fn next(&self) -> *const c_void {
18679        self.next
18680    }
18681}
18682
18683unsafe impl InputChainStruct for VideoEncodeInfoKHR {
18684    const TYPE: StructureType = StructureType::VIDEO_ENCODE_INFO_KHR;
18685
18686    #[inline]
18687    fn s_type(&self) -> StructureType {
18688        self.s_type
18689    }
18690
18691    #[inline]
18692    fn next(&self) -> *const c_void {
18693        self.next
18694    }
18695}
18696
18697unsafe impl InputChainStruct for VideoEncodeIntraRefreshCapabilitiesKHR {
18698    const TYPE: StructureType = StructureType::VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR;
18699
18700    #[inline]
18701    fn s_type(&self) -> StructureType {
18702        self.s_type
18703    }
18704
18705    #[inline]
18706    fn next(&self) -> *const c_void {
18707        self.next
18708    }
18709}
18710
18711unsafe impl OutputChainStruct for VideoEncodeIntraRefreshCapabilitiesKHR {
18712    #[inline]
18713    fn next_mut(&self) -> *mut c_void {
18714        self.next
18715    }
18716}
18717
18718unsafe impl InputChainStruct for VideoEncodeIntraRefreshInfoKHR {
18719    const TYPE: StructureType = StructureType::VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR;
18720
18721    #[inline]
18722    fn s_type(&self) -> StructureType {
18723        self.s_type
18724    }
18725
18726    #[inline]
18727    fn next(&self) -> *const c_void {
18728        self.next
18729    }
18730}
18731
18732unsafe impl InputChainStruct for VideoEncodeProfileRgbConversionInfoVALVE {
18733    const TYPE: StructureType = StructureType::VIDEO_ENCODE_PROFILE_RGB_CONVERSION_INFO_VALVE;
18734
18735    #[inline]
18736    fn s_type(&self) -> StructureType {
18737        self.s_type
18738    }
18739
18740    #[inline]
18741    fn next(&self) -> *const c_void {
18742        self.next
18743    }
18744}
18745
18746unsafe impl InputChainStruct for VideoEncodeQualityLevelInfoKHR {
18747    const TYPE: StructureType = StructureType::VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR;
18748
18749    #[inline]
18750    fn s_type(&self) -> StructureType {
18751        self.s_type
18752    }
18753
18754    #[inline]
18755    fn next(&self) -> *const c_void {
18756        self.next
18757    }
18758}
18759
18760unsafe impl InputChainStruct for VideoEncodeQualityLevelPropertiesKHR {
18761    const TYPE: StructureType = StructureType::VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR;
18762
18763    #[inline]
18764    fn s_type(&self) -> StructureType {
18765        self.s_type
18766    }
18767
18768    #[inline]
18769    fn next(&self) -> *const c_void {
18770        self.next
18771    }
18772}
18773
18774unsafe impl OutputChainStruct for VideoEncodeQualityLevelPropertiesKHR {
18775    #[inline]
18776    fn next_mut(&self) -> *mut c_void {
18777        self.next
18778    }
18779}
18780
18781unsafe impl InputChainStruct for VideoEncodeQuantizationMapCapabilitiesKHR {
18782    const TYPE: StructureType = StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR;
18783
18784    #[inline]
18785    fn s_type(&self) -> StructureType {
18786        self.s_type
18787    }
18788
18789    #[inline]
18790    fn next(&self) -> *const c_void {
18791        self.next
18792    }
18793}
18794
18795unsafe impl OutputChainStruct for VideoEncodeQuantizationMapCapabilitiesKHR {
18796    #[inline]
18797    fn next_mut(&self) -> *mut c_void {
18798        self.next
18799    }
18800}
18801
18802unsafe impl InputChainStruct for VideoEncodeQuantizationMapInfoKHR {
18803    const TYPE: StructureType = StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR;
18804
18805    #[inline]
18806    fn s_type(&self) -> StructureType {
18807        self.s_type
18808    }
18809
18810    #[inline]
18811    fn next(&self) -> *const c_void {
18812        self.next
18813    }
18814}
18815
18816unsafe impl InputChainStruct for VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {
18817    const TYPE: StructureType =
18818        StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR;
18819
18820    #[inline]
18821    fn s_type(&self) -> StructureType {
18822        self.s_type
18823    }
18824
18825    #[inline]
18826    fn next(&self) -> *const c_void {
18827        self.next
18828    }
18829}
18830
18831unsafe impl InputChainStruct for VideoEncodeRateControlInfoKHR {
18832    const TYPE: StructureType = StructureType::VIDEO_ENCODE_RATE_CONTROL_INFO_KHR;
18833
18834    #[inline]
18835    fn s_type(&self) -> StructureType {
18836        self.s_type
18837    }
18838
18839    #[inline]
18840    fn next(&self) -> *const c_void {
18841        self.next
18842    }
18843}
18844
18845unsafe impl InputChainStruct for VideoEncodeRateControlLayerInfoKHR {
18846    const TYPE: StructureType = StructureType::VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR;
18847
18848    #[inline]
18849    fn s_type(&self) -> StructureType {
18850        self.s_type
18851    }
18852
18853    #[inline]
18854    fn next(&self) -> *const c_void {
18855        self.next
18856    }
18857}
18858
18859unsafe impl InputChainStruct for VideoEncodeRgbConversionCapabilitiesVALVE {
18860    const TYPE: StructureType = StructureType::VIDEO_ENCODE_RGB_CONVERSION_CAPABILITIES_VALVE;
18861
18862    #[inline]
18863    fn s_type(&self) -> StructureType {
18864        self.s_type
18865    }
18866
18867    #[inline]
18868    fn next(&self) -> *const c_void {
18869        self.next
18870    }
18871}
18872
18873unsafe impl OutputChainStruct for VideoEncodeRgbConversionCapabilitiesVALVE {
18874    #[inline]
18875    fn next_mut(&self) -> *mut c_void {
18876        self.next
18877    }
18878}
18879
18880unsafe impl InputChainStruct for VideoEncodeSessionIntraRefreshCreateInfoKHR {
18881    const TYPE: StructureType = StructureType::VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR;
18882
18883    #[inline]
18884    fn s_type(&self) -> StructureType {
18885        self.s_type
18886    }
18887
18888    #[inline]
18889    fn next(&self) -> *const c_void {
18890        self.next
18891    }
18892}
18893
18894unsafe impl InputChainStruct for VideoEncodeSessionParametersFeedbackInfoKHR {
18895    const TYPE: StructureType = StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR;
18896
18897    #[inline]
18898    fn s_type(&self) -> StructureType {
18899        self.s_type
18900    }
18901
18902    #[inline]
18903    fn next(&self) -> *const c_void {
18904        self.next
18905    }
18906}
18907
18908unsafe impl OutputChainStruct for VideoEncodeSessionParametersFeedbackInfoKHR {
18909    #[inline]
18910    fn next_mut(&self) -> *mut c_void {
18911        self.next
18912    }
18913}
18914
18915unsafe impl InputChainStruct for VideoEncodeSessionParametersGetInfoKHR {
18916    const TYPE: StructureType = StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR;
18917
18918    #[inline]
18919    fn s_type(&self) -> StructureType {
18920        self.s_type
18921    }
18922
18923    #[inline]
18924    fn next(&self) -> *const c_void {
18925        self.next
18926    }
18927}
18928
18929unsafe impl InputChainStruct for VideoEncodeSessionRgbConversionCreateInfoVALVE {
18930    const TYPE: StructureType =
18931        StructureType::VIDEO_ENCODE_SESSION_RGB_CONVERSION_CREATE_INFO_VALVE;
18932
18933    #[inline]
18934    fn s_type(&self) -> StructureType {
18935        self.s_type
18936    }
18937
18938    #[inline]
18939    fn next(&self) -> *const c_void {
18940        self.next
18941    }
18942}
18943
18944unsafe impl InputChainStruct for VideoEncodeUsageInfoKHR {
18945    const TYPE: StructureType = StructureType::VIDEO_ENCODE_USAGE_INFO_KHR;
18946
18947    #[inline]
18948    fn s_type(&self) -> StructureType {
18949        self.s_type
18950    }
18951
18952    #[inline]
18953    fn next(&self) -> *const c_void {
18954        self.next
18955    }
18956}
18957
18958unsafe impl InputChainStruct for VideoEndCodingInfoKHR {
18959    const TYPE: StructureType = StructureType::VIDEO_END_CODING_INFO_KHR;
18960
18961    #[inline]
18962    fn s_type(&self) -> StructureType {
18963        self.s_type
18964    }
18965
18966    #[inline]
18967    fn next(&self) -> *const c_void {
18968        self.next
18969    }
18970}
18971
18972unsafe impl InputChainStruct for VideoFormatAV1QuantizationMapPropertiesKHR {
18973    const TYPE: StructureType = StructureType::VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR;
18974
18975    #[inline]
18976    fn s_type(&self) -> StructureType {
18977        self.s_type
18978    }
18979
18980    #[inline]
18981    fn next(&self) -> *const c_void {
18982        self.next
18983    }
18984}
18985
18986unsafe impl OutputChainStruct for VideoFormatAV1QuantizationMapPropertiesKHR {
18987    #[inline]
18988    fn next_mut(&self) -> *mut c_void {
18989        self.next
18990    }
18991}
18992
18993unsafe impl InputChainStruct for VideoFormatH265QuantizationMapPropertiesKHR {
18994    const TYPE: StructureType = StructureType::VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR;
18995
18996    #[inline]
18997    fn s_type(&self) -> StructureType {
18998        self.s_type
18999    }
19000
19001    #[inline]
19002    fn next(&self) -> *const c_void {
19003        self.next
19004    }
19005}
19006
19007unsafe impl OutputChainStruct for VideoFormatH265QuantizationMapPropertiesKHR {
19008    #[inline]
19009    fn next_mut(&self) -> *mut c_void {
19010        self.next
19011    }
19012}
19013
19014unsafe impl InputChainStruct for VideoFormatPropertiesKHR {
19015    const TYPE: StructureType = StructureType::VIDEO_FORMAT_PROPERTIES_KHR;
19016
19017    #[inline]
19018    fn s_type(&self) -> StructureType {
19019        self.s_type
19020    }
19021
19022    #[inline]
19023    fn next(&self) -> *const c_void {
19024        self.next
19025    }
19026}
19027
19028unsafe impl OutputChainStruct for VideoFormatPropertiesKHR {
19029    #[inline]
19030    fn next_mut(&self) -> *mut c_void {
19031        self.next
19032    }
19033}
19034
19035unsafe impl InputChainStruct for VideoFormatQuantizationMapPropertiesKHR {
19036    const TYPE: StructureType = StructureType::VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR;
19037
19038    #[inline]
19039    fn s_type(&self) -> StructureType {
19040        self.s_type
19041    }
19042
19043    #[inline]
19044    fn next(&self) -> *const c_void {
19045        self.next
19046    }
19047}
19048
19049unsafe impl OutputChainStruct for VideoFormatQuantizationMapPropertiesKHR {
19050    #[inline]
19051    fn next_mut(&self) -> *mut c_void {
19052        self.next
19053    }
19054}
19055
19056unsafe impl InputChainStruct for VideoInlineQueryInfoKHR {
19057    const TYPE: StructureType = StructureType::VIDEO_INLINE_QUERY_INFO_KHR;
19058
19059    #[inline]
19060    fn s_type(&self) -> StructureType {
19061        self.s_type
19062    }
19063
19064    #[inline]
19065    fn next(&self) -> *const c_void {
19066        self.next
19067    }
19068}
19069
19070unsafe impl InputChainStruct for VideoPictureResourceInfoKHR {
19071    const TYPE: StructureType = StructureType::VIDEO_PICTURE_RESOURCE_INFO_KHR;
19072
19073    #[inline]
19074    fn s_type(&self) -> StructureType {
19075        self.s_type
19076    }
19077
19078    #[inline]
19079    fn next(&self) -> *const c_void {
19080        self.next
19081    }
19082}
19083
19084unsafe impl InputChainStruct for VideoProfileInfoKHR {
19085    const TYPE: StructureType = StructureType::VIDEO_PROFILE_INFO_KHR;
19086
19087    #[inline]
19088    fn s_type(&self) -> StructureType {
19089        self.s_type
19090    }
19091
19092    #[inline]
19093    fn next(&self) -> *const c_void {
19094        self.next
19095    }
19096}
19097
19098unsafe impl InputChainStruct for VideoProfileListInfoKHR {
19099    const TYPE: StructureType = StructureType::VIDEO_PROFILE_LIST_INFO_KHR;
19100
19101    #[inline]
19102    fn s_type(&self) -> StructureType {
19103        self.s_type
19104    }
19105
19106    #[inline]
19107    fn next(&self) -> *const c_void {
19108        self.next
19109    }
19110}
19111
19112unsafe impl InputChainStruct for VideoReferenceIntraRefreshInfoKHR {
19113    const TYPE: StructureType = StructureType::VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR;
19114
19115    #[inline]
19116    fn s_type(&self) -> StructureType {
19117        self.s_type
19118    }
19119
19120    #[inline]
19121    fn next(&self) -> *const c_void {
19122        self.next
19123    }
19124}
19125
19126unsafe impl InputChainStruct for VideoReferenceSlotInfoKHR {
19127    const TYPE: StructureType = StructureType::VIDEO_REFERENCE_SLOT_INFO_KHR;
19128
19129    #[inline]
19130    fn s_type(&self) -> StructureType {
19131        self.s_type
19132    }
19133
19134    #[inline]
19135    fn next(&self) -> *const c_void {
19136        self.next
19137    }
19138}
19139
19140unsafe impl InputChainStruct for VideoSessionCreateInfoKHR {
19141    const TYPE: StructureType = StructureType::VIDEO_SESSION_CREATE_INFO_KHR;
19142
19143    #[inline]
19144    fn s_type(&self) -> StructureType {
19145        self.s_type
19146    }
19147
19148    #[inline]
19149    fn next(&self) -> *const c_void {
19150        self.next
19151    }
19152}
19153
19154unsafe impl InputChainStruct for VideoSessionMemoryRequirementsKHR {
19155    const TYPE: StructureType = StructureType::VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR;
19156
19157    #[inline]
19158    fn s_type(&self) -> StructureType {
19159        self.s_type
19160    }
19161
19162    #[inline]
19163    fn next(&self) -> *const c_void {
19164        self.next
19165    }
19166}
19167
19168unsafe impl OutputChainStruct for VideoSessionMemoryRequirementsKHR {
19169    #[inline]
19170    fn next_mut(&self) -> *mut c_void {
19171        self.next
19172    }
19173}
19174
19175unsafe impl InputChainStruct for VideoSessionParametersCreateInfoKHR {
19176    const TYPE: StructureType = StructureType::VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR;
19177
19178    #[inline]
19179    fn s_type(&self) -> StructureType {
19180        self.s_type
19181    }
19182
19183    #[inline]
19184    fn next(&self) -> *const c_void {
19185        self.next
19186    }
19187}
19188
19189unsafe impl InputChainStruct for VideoSessionParametersUpdateInfoKHR {
19190    const TYPE: StructureType = StructureType::VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR;
19191
19192    #[inline]
19193    fn s_type(&self) -> StructureType {
19194        self.s_type
19195    }
19196
19197    #[inline]
19198    fn next(&self) -> *const c_void {
19199        self.next
19200    }
19201}
19202
19203unsafe impl InputChainStruct for WaylandSurfaceCreateInfoKHR {
19204    const TYPE: StructureType = StructureType::WAYLAND_SURFACE_CREATE_INFO_KHR;
19205
19206    #[inline]
19207    fn s_type(&self) -> StructureType {
19208        self.s_type
19209    }
19210
19211    #[inline]
19212    fn next(&self) -> *const c_void {
19213        self.next
19214    }
19215}
19216
19217unsafe impl InputChainStruct for Win32KeyedMutexAcquireReleaseInfoKHR {
19218    const TYPE: StructureType = StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR;
19219
19220    #[inline]
19221    fn s_type(&self) -> StructureType {
19222        self.s_type
19223    }
19224
19225    #[inline]
19226    fn next(&self) -> *const c_void {
19227        self.next
19228    }
19229}
19230
19231unsafe impl InputChainStruct for Win32KeyedMutexAcquireReleaseInfoNV {
19232    const TYPE: StructureType = StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV;
19233
19234    #[inline]
19235    fn s_type(&self) -> StructureType {
19236        self.s_type
19237    }
19238
19239    #[inline]
19240    fn next(&self) -> *const c_void {
19241        self.next
19242    }
19243}
19244
19245unsafe impl InputChainStruct for Win32SurfaceCreateInfoKHR {
19246    const TYPE: StructureType = StructureType::WIN32_SURFACE_CREATE_INFO_KHR;
19247
19248    #[inline]
19249    fn s_type(&self) -> StructureType {
19250        self.s_type
19251    }
19252
19253    #[inline]
19254    fn next(&self) -> *const c_void {
19255        self.next
19256    }
19257}
19258
19259unsafe impl InputChainStruct for WriteDescriptorSet {
19260    const TYPE: StructureType = StructureType::WRITE_DESCRIPTOR_SET;
19261
19262    #[inline]
19263    fn s_type(&self) -> StructureType {
19264        self.s_type
19265    }
19266
19267    #[inline]
19268    fn next(&self) -> *const c_void {
19269        self.next
19270    }
19271}
19272
19273unsafe impl InputChainStruct for WriteDescriptorSetAccelerationStructureKHR {
19274    const TYPE: StructureType = StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR;
19275
19276    #[inline]
19277    fn s_type(&self) -> StructureType {
19278        self.s_type
19279    }
19280
19281    #[inline]
19282    fn next(&self) -> *const c_void {
19283        self.next
19284    }
19285}
19286
19287unsafe impl InputChainStruct for WriteDescriptorSetAccelerationStructureNV {
19288    const TYPE: StructureType = StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV;
19289
19290    #[inline]
19291    fn s_type(&self) -> StructureType {
19292        self.s_type
19293    }
19294
19295    #[inline]
19296    fn next(&self) -> *const c_void {
19297        self.next
19298    }
19299}
19300
19301unsafe impl InputChainStruct for WriteDescriptorSetInlineUniformBlock {
19302    const TYPE: StructureType = StructureType::WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK;
19303
19304    #[inline]
19305    fn s_type(&self) -> StructureType {
19306        self.s_type
19307    }
19308
19309    #[inline]
19310    fn next(&self) -> *const c_void {
19311        self.next
19312    }
19313}
19314
19315unsafe impl InputChainStruct for WriteDescriptorSetPartitionedAccelerationStructureNV {
19316    const TYPE: StructureType =
19317        StructureType::WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV;
19318
19319    #[inline]
19320    fn s_type(&self) -> StructureType {
19321        self.s_type
19322    }
19323
19324    #[inline]
19325    fn next(&self) -> *const c_void {
19326        self.next
19327    }
19328}
19329
19330unsafe impl OutputChainStruct for WriteDescriptorSetPartitionedAccelerationStructureNV {
19331    #[inline]
19332    fn next_mut(&self) -> *mut c_void {
19333        self.next
19334    }
19335}
19336
19337unsafe impl InputChainStruct for WriteDescriptorSetTensorARM {
19338    const TYPE: StructureType = StructureType::WRITE_DESCRIPTOR_SET_TENSOR_ARM;
19339
19340    #[inline]
19341    fn s_type(&self) -> StructureType {
19342        self.s_type
19343    }
19344
19345    #[inline]
19346    fn next(&self) -> *const c_void {
19347        self.next
19348    }
19349}
19350
19351unsafe impl InputChainStruct for WriteIndirectExecutionSetPipelineEXT {
19352    const TYPE: StructureType = StructureType::WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT;
19353
19354    #[inline]
19355    fn s_type(&self) -> StructureType {
19356        self.s_type
19357    }
19358
19359    #[inline]
19360    fn next(&self) -> *const c_void {
19361        self.next
19362    }
19363}
19364
19365unsafe impl InputChainStruct for WriteIndirectExecutionSetShaderEXT {
19366    const TYPE: StructureType = StructureType::WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT;
19367
19368    #[inline]
19369    fn s_type(&self) -> StructureType {
19370        self.s_type
19371    }
19372
19373    #[inline]
19374    fn next(&self) -> *const c_void {
19375        self.next
19376    }
19377}
19378
19379unsafe impl InputChainStruct for XcbSurfaceCreateInfoKHR {
19380    const TYPE: StructureType = StructureType::XCB_SURFACE_CREATE_INFO_KHR;
19381
19382    #[inline]
19383    fn s_type(&self) -> StructureType {
19384        self.s_type
19385    }
19386
19387    #[inline]
19388    fn next(&self) -> *const c_void {
19389        self.next
19390    }
19391}
19392
19393unsafe impl InputChainStruct for XlibSurfaceCreateInfoKHR {
19394    const TYPE: StructureType = StructureType::XLIB_SURFACE_CREATE_INFO_KHR;
19395
19396    #[inline]
19397    fn s_type(&self) -> StructureType {
19398        self.s_type
19399    }
19400
19401    #[inline]
19402    fn next(&self) -> *const c_void {
19403        self.next
19404    }
19405}