voodoo/
structs.rs

1//! Structs.
2//! 
3// 
4// NOTE: Do not edit this file directly; it is auto-generated.
5
6
7use std::ffi::{CStr};
8use std::marker::PhantomData;
9use std::slice;
10use libc::{c_void, c_char};
11use ::*;
12use vks;
13use vks::{PFN_vkAllocationFunction, PFN_vkReallocationFunction, PFN_vkFreeFunction, 
14    PFN_vkInternalAllocationNotification, PFN_vkInternalFreeNotification, 
15    PFN_vkDebugReportCallbackEXT};
16
17
18
19/// A `VkOffset2D`.
20///
21/// 
22#[derive(Debug, Clone, Default)]
23#[repr(C)]
24pub struct Offset2d {
25    raw: vks::VkOffset2D,
26}
27
28impl Offset2d {
29    pub fn builder() -> Offset2dBuilder {
30        Offset2dBuilder::new()
31    }
32
33    pub unsafe fn from_raw(raw: vks::VkOffset2D) -> Offset2d {
34        Offset2d { raw, }
35    }
36
37    pub fn x<'a>(&'a self) -> i32 {
38        self.raw.x.into()
39    }
40
41    pub fn y<'a>(&'a self) -> i32 {
42        self.raw.y.into()
43    }
44
45    pub fn set_x<'m>(&mut self, x: i32) {
46        self.raw.x = x.into();
47    }
48
49    pub fn set_y<'m>(&mut self, y: i32) {
50        self.raw.y = y.into();
51    }
52
53    pub fn as_raw(&self) -> &vks::VkOffset2D {
54        &self.raw
55    }
56}
57
58impl From<Offset2d> for vks::VkOffset2D {
59    fn from(f: Offset2d) -> vks::VkOffset2D {
60        f.raw
61    }
62}
63
64
65/// A builder for `VkOffset2D`.
66///
67/// 
68#[derive(Debug, Clone, Default)]
69pub struct Offset2dBuilder {
70    raw: vks::VkOffset2D,
71}
72
73impl Offset2dBuilder {
74    pub fn new() -> Offset2dBuilder {
75        Offset2dBuilder {
76            raw: vks::VkOffset2D::default(),
77        }
78    }
79
80    pub fn x<'m>(mut self, x: i32) -> Offset2dBuilder {
81        self.raw.x = x.into();
82        self
83    }
84
85    pub fn y<'m>(mut self, y: i32) -> Offset2dBuilder {
86        self.raw.y = y.into();
87        self
88    }
89
90    pub fn get_x<'a>(&'a self) -> i32 {
91        self.raw.x.into()
92    }
93
94    pub fn get_y<'a>(&'a self) -> i32 {
95        self.raw.y.into()
96    }
97
98    pub fn build(self) -> Offset2d {
99        Offset2d {
100            raw: self.raw,
101        }
102    }
103}
104
105
106/// A `VkOffset3D`.
107///
108/// 
109#[derive(Debug, Clone, Default)]
110#[repr(C)]
111pub struct Offset3d {
112    raw: vks::VkOffset3D,
113}
114
115impl Offset3d {
116    pub fn builder() -> Offset3dBuilder {
117        Offset3dBuilder::new()
118    }
119
120    pub unsafe fn from_raw(raw: vks::VkOffset3D) -> Offset3d {
121        Offset3d { raw, }
122    }
123
124    pub fn x<'a>(&'a self) -> i32 {
125        self.raw.x.into()
126    }
127
128    pub fn y<'a>(&'a self) -> i32 {
129        self.raw.y.into()
130    }
131
132    pub fn z<'a>(&'a self) -> i32 {
133        self.raw.z.into()
134    }
135
136    pub fn set_x<'m>(&mut self, x: i32) {
137        self.raw.x = x.into();
138    }
139
140    pub fn set_y<'m>(&mut self, y: i32) {
141        self.raw.y = y.into();
142    }
143
144    pub fn set_z<'m>(&mut self, z: i32) {
145        self.raw.z = z.into();
146    }
147
148    pub fn as_raw(&self) -> &vks::VkOffset3D {
149        &self.raw
150    }
151}
152
153impl From<Offset3d> for vks::VkOffset3D {
154    fn from(f: Offset3d) -> vks::VkOffset3D {
155        f.raw
156    }
157}
158
159
160/// A builder for `VkOffset3D`.
161///
162/// 
163#[derive(Debug, Clone, Default)]
164pub struct Offset3dBuilder {
165    raw: vks::VkOffset3D,
166}
167
168impl Offset3dBuilder {
169    pub fn new() -> Offset3dBuilder {
170        Offset3dBuilder {
171            raw: vks::VkOffset3D::default(),
172        }
173    }
174
175    pub fn x<'m>(mut self, x: i32) -> Offset3dBuilder {
176        self.raw.x = x.into();
177        self
178    }
179
180    pub fn y<'m>(mut self, y: i32) -> Offset3dBuilder {
181        self.raw.y = y.into();
182        self
183    }
184
185    pub fn z<'m>(mut self, z: i32) -> Offset3dBuilder {
186        self.raw.z = z.into();
187        self
188    }
189
190    pub fn get_x<'a>(&'a self) -> i32 {
191        self.raw.x.into()
192    }
193
194    pub fn get_y<'a>(&'a self) -> i32 {
195        self.raw.y.into()
196    }
197
198    pub fn get_z<'a>(&'a self) -> i32 {
199        self.raw.z.into()
200    }
201
202    pub fn build(self) -> Offset3d {
203        Offset3d {
204            raw: self.raw,
205        }
206    }
207}
208
209
210/// A `VkExtent2D`.
211///
212/// 
213#[derive(Debug, Clone, Default)]
214#[repr(C)]
215pub struct Extent2d {
216    raw: vks::VkExtent2D,
217}
218
219impl Extent2d {
220    pub fn builder() -> Extent2dBuilder {
221        Extent2dBuilder::new()
222    }
223
224    pub unsafe fn from_raw(raw: vks::VkExtent2D) -> Extent2d {
225        Extent2d { raw, }
226    }
227
228    pub fn width<'a>(&'a self) -> u32 {
229        self.raw.width.into()
230    }
231
232    pub fn height<'a>(&'a self) -> u32 {
233        self.raw.height.into()
234    }
235
236    pub fn set_width<'m>(&mut self, width: u32) {
237        self.raw.width = width.into();
238    }
239
240    pub fn set_height<'m>(&mut self, height: u32) {
241        self.raw.height = height.into();
242    }
243
244    pub fn as_raw(&self) -> &vks::VkExtent2D {
245        &self.raw
246    }
247}
248
249impl From<Extent2d> for vks::VkExtent2D {
250    fn from(f: Extent2d) -> vks::VkExtent2D {
251        f.raw
252    }
253}
254
255
256/// A builder for `VkExtent2D`.
257///
258/// 
259#[derive(Debug, Clone, Default)]
260pub struct Extent2dBuilder {
261    raw: vks::VkExtent2D,
262}
263
264impl Extent2dBuilder {
265    pub fn new() -> Extent2dBuilder {
266        Extent2dBuilder {
267            raw: vks::VkExtent2D::default(),
268        }
269    }
270
271    pub fn width<'m>(mut self, width: u32) -> Extent2dBuilder {
272        self.raw.width = width.into();
273        self
274    }
275
276    pub fn height<'m>(mut self, height: u32) -> Extent2dBuilder {
277        self.raw.height = height.into();
278        self
279    }
280
281    pub fn get_width<'a>(&'a self) -> u32 {
282        self.raw.width.into()
283    }
284
285    pub fn get_height<'a>(&'a self) -> u32 {
286        self.raw.height.into()
287    }
288
289    pub fn build(self) -> Extent2d {
290        Extent2d {
291            raw: self.raw,
292        }
293    }
294}
295
296
297/// A `VkExtent3D`.
298///
299/// 
300#[derive(Debug, Clone, Default)]
301#[repr(C)]
302pub struct Extent3d {
303    raw: vks::VkExtent3D,
304}
305
306impl Extent3d {
307    pub fn builder() -> Extent3dBuilder {
308        Extent3dBuilder::new()
309    }
310
311    pub unsafe fn from_raw(raw: vks::VkExtent3D) -> Extent3d {
312        Extent3d { raw, }
313    }
314
315    pub fn width<'a>(&'a self) -> u32 {
316        self.raw.width.into()
317    }
318
319    pub fn height<'a>(&'a self) -> u32 {
320        self.raw.height.into()
321    }
322
323    pub fn depth<'a>(&'a self) -> u32 {
324        self.raw.depth.into()
325    }
326
327    pub fn set_width<'m>(&mut self, width: u32) {
328        self.raw.width = width.into();
329    }
330
331    pub fn set_height<'m>(&mut self, height: u32) {
332        self.raw.height = height.into();
333    }
334
335    pub fn set_depth<'m>(&mut self, depth: u32) {
336        self.raw.depth = depth.into();
337    }
338
339    pub fn as_raw(&self) -> &vks::VkExtent3D {
340        &self.raw
341    }
342}
343
344impl From<Extent3d> for vks::VkExtent3D {
345    fn from(f: Extent3d) -> vks::VkExtent3D {
346        f.raw
347    }
348}
349
350
351/// A builder for `VkExtent3D`.
352///
353/// 
354#[derive(Debug, Clone, Default)]
355pub struct Extent3dBuilder {
356    raw: vks::VkExtent3D,
357}
358
359impl Extent3dBuilder {
360    pub fn new() -> Extent3dBuilder {
361        Extent3dBuilder {
362            raw: vks::VkExtent3D::default(),
363        }
364    }
365
366    pub fn width<'m>(mut self, width: u32) -> Extent3dBuilder {
367        self.raw.width = width.into();
368        self
369    }
370
371    pub fn height<'m>(mut self, height: u32) -> Extent3dBuilder {
372        self.raw.height = height.into();
373        self
374    }
375
376    pub fn depth<'m>(mut self, depth: u32) -> Extent3dBuilder {
377        self.raw.depth = depth.into();
378        self
379    }
380
381    pub fn get_width<'a>(&'a self) -> u32 {
382        self.raw.width.into()
383    }
384
385    pub fn get_height<'a>(&'a self) -> u32 {
386        self.raw.height.into()
387    }
388
389    pub fn get_depth<'a>(&'a self) -> u32 {
390        self.raw.depth.into()
391    }
392
393    pub fn build(self) -> Extent3d {
394        Extent3d {
395            raw: self.raw,
396        }
397    }
398}
399
400
401/// A `VkViewport`.
402///
403/// 
404#[derive(Debug, Clone, Default)]
405#[repr(C)]
406pub struct Viewport {
407    raw: vks::VkViewport,
408}
409
410impl Viewport {
411    pub fn builder() -> ViewportBuilder {
412        ViewportBuilder::new()
413    }
414
415    pub unsafe fn from_raw(raw: vks::VkViewport) -> Viewport {
416        Viewport { raw, }
417    }
418
419    pub fn x<'a>(&'a self) -> f32 {
420        self.raw.x.into()
421    }
422
423    pub fn y<'a>(&'a self) -> f32 {
424        self.raw.y.into()
425    }
426
427    pub fn width<'a>(&'a self) -> f32 {
428        self.raw.width.into()
429    }
430
431    pub fn height<'a>(&'a self) -> f32 {
432        self.raw.height.into()
433    }
434
435    pub fn min_depth<'a>(&'a self) -> f32 {
436        self.raw.minDepth.into()
437    }
438
439    pub fn max_depth<'a>(&'a self) -> f32 {
440        self.raw.maxDepth.into()
441    }
442
443    pub fn set_x<'m>(&mut self, x: f32) {
444        self.raw.x = x.into();
445    }
446
447    pub fn set_y<'m>(&mut self, y: f32) {
448        self.raw.y = y.into();
449    }
450
451    pub fn set_width<'m>(&mut self, width: f32) {
452        self.raw.width = width.into();
453    }
454
455    pub fn set_height<'m>(&mut self, height: f32) {
456        self.raw.height = height.into();
457    }
458
459    pub fn set_min_depth<'m>(&mut self, min_depth: f32) {
460        self.raw.minDepth = min_depth.into();
461    }
462
463    pub fn set_max_depth<'m>(&mut self, max_depth: f32) {
464        self.raw.maxDepth = max_depth.into();
465    }
466
467    pub fn as_raw(&self) -> &vks::VkViewport {
468        &self.raw
469    }
470}
471
472impl From<Viewport> for vks::VkViewport {
473    fn from(f: Viewport) -> vks::VkViewport {
474        f.raw
475    }
476}
477
478
479/// A builder for `VkViewport`.
480///
481/// 
482#[derive(Debug, Clone, Default)]
483pub struct ViewportBuilder {
484    raw: vks::VkViewport,
485}
486
487impl ViewportBuilder {
488    pub fn new() -> ViewportBuilder {
489        ViewportBuilder {
490            raw: vks::VkViewport::default(),
491        }
492    }
493
494    pub fn x<'m>(mut self, x: f32) -> ViewportBuilder {
495        self.raw.x = x.into();
496        self
497    }
498
499    pub fn y<'m>(mut self, y: f32) -> ViewportBuilder {
500        self.raw.y = y.into();
501        self
502    }
503
504    pub fn width<'m>(mut self, width: f32) -> ViewportBuilder {
505        self.raw.width = width.into();
506        self
507    }
508
509    pub fn height<'m>(mut self, height: f32) -> ViewportBuilder {
510        self.raw.height = height.into();
511        self
512    }
513
514    pub fn min_depth<'m>(mut self, min_depth: f32) -> ViewportBuilder {
515        self.raw.minDepth = min_depth.into();
516        self
517    }
518
519    pub fn max_depth<'m>(mut self, max_depth: f32) -> ViewportBuilder {
520        self.raw.maxDepth = max_depth.into();
521        self
522    }
523
524    pub fn get_x<'a>(&'a self) -> f32 {
525        self.raw.x.into()
526    }
527
528    pub fn get_y<'a>(&'a self) -> f32 {
529        self.raw.y.into()
530    }
531
532    pub fn get_width<'a>(&'a self) -> f32 {
533        self.raw.width.into()
534    }
535
536    pub fn get_height<'a>(&'a self) -> f32 {
537        self.raw.height.into()
538    }
539
540    pub fn get_min_depth<'a>(&'a self) -> f32 {
541        self.raw.minDepth.into()
542    }
543
544    pub fn get_max_depth<'a>(&'a self) -> f32 {
545        self.raw.maxDepth.into()
546    }
547
548    pub fn build(self) -> Viewport {
549        Viewport {
550            raw: self.raw,
551        }
552    }
553}
554
555
556/// A `VkRect2D`.
557///
558/// 
559#[derive(Debug, Clone, Default)]
560#[repr(C)]
561pub struct Rect2d {
562    raw: vks::VkRect2D,
563}
564
565impl Rect2d {
566    pub fn builder() -> Rect2dBuilder {
567        Rect2dBuilder::new()
568    }
569
570    pub unsafe fn from_raw(raw: vks::VkRect2D) -> Rect2d {
571        Rect2d { raw, }
572    }
573
574    pub fn offset<'a>(&'a self) -> &'a Offset2d {
575        unsafe { &*(&self.raw.offset as *const vks::VkOffset2D as *const Offset2d) }
576    }
577
578    pub fn offset_mut<'a>(&'a mut self) -> &'a mut Offset2d {
579        unsafe { &mut *(&mut self.raw.offset as *mut  vks::VkOffset2D as *mut Offset2d) }
580    }
581
582    pub fn extent<'a>(&'a self) -> &'a Extent2d {
583        unsafe { &*(&self.raw.extent as *const vks::VkExtent2D as *const Extent2d) }
584    }
585
586    pub fn extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
587        unsafe { &mut *(&mut self.raw.extent as *mut  vks::VkExtent2D as *mut Extent2d) }
588    }
589
590    pub fn set_offset<'m>(&mut self, offset: Offset2d) {
591        self.raw.offset = offset.raw;
592    }
593
594    pub fn set_extent<'m>(&mut self, extent: Extent2d) {
595        self.raw.extent = extent.raw;
596    }
597
598    pub fn as_raw(&self) -> &vks::VkRect2D {
599        &self.raw
600    }
601}
602
603impl From<Rect2d> for vks::VkRect2D {
604    fn from(f: Rect2d) -> vks::VkRect2D {
605        f.raw
606    }
607}
608
609
610/// A builder for `VkRect2D`.
611///
612/// 
613#[derive(Debug, Clone, Default)]
614pub struct Rect2dBuilder {
615    raw: vks::VkRect2D,
616}
617
618impl Rect2dBuilder {
619    pub fn new() -> Rect2dBuilder {
620        Rect2dBuilder {
621            raw: vks::VkRect2D::default(),
622        }
623    }
624
625    pub fn offset<'m>(mut self, offset: Offset2d) -> Rect2dBuilder {
626        self.raw.offset = offset.raw;
627        self
628    }
629
630    pub fn extent<'m>(mut self, extent: Extent2d) -> Rect2dBuilder {
631        self.raw.extent = extent.raw;
632        self
633    }
634
635    pub fn get_offset<'a>(&'a self) -> &'a Offset2d {
636        unsafe { &*(&self.raw.offset as *const vks::VkOffset2D as *const Offset2d) }
637    }
638
639    pub fn get_offset_mut<'a>(&'a mut self) -> &'a mut Offset2d {
640        unsafe { &mut *(&mut self.raw.offset as *mut  vks::VkOffset2D as *mut Offset2d) }
641    }
642
643    pub fn get_extent<'a>(&'a self) -> &'a Extent2d {
644        unsafe { &*(&self.raw.extent as *const vks::VkExtent2D as *const Extent2d) }
645    }
646
647    pub fn get_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
648        unsafe { &mut *(&mut self.raw.extent as *mut  vks::VkExtent2D as *mut Extent2d) }
649    }
650
651    pub fn build(self) -> Rect2d {
652        Rect2d {
653            raw: self.raw,
654        }
655    }
656}
657
658
659/// A `VkClearRect`.
660///
661/// 
662#[derive(Debug, Clone, Default)]
663#[repr(C)]
664pub struct ClearRect {
665    raw: vks::VkClearRect,
666}
667
668impl ClearRect {
669    pub fn builder() -> ClearRectBuilder {
670        ClearRectBuilder::new()
671    }
672
673    pub unsafe fn from_raw(raw: vks::VkClearRect) -> ClearRect {
674        ClearRect { raw, }
675    }
676
677    pub fn rect<'a>(&'a self) -> &'a Rect2d {
678        unsafe { &*(&self.raw.rect as *const vks::VkRect2D as *const Rect2d) }
679    }
680
681    pub fn rect_mut<'a>(&'a mut self) -> &'a mut Rect2d {
682        unsafe { &mut *(&mut self.raw.rect as *mut  vks::VkRect2D as *mut Rect2d) }
683    }
684
685    pub fn base_array_layer<'a>(&'a self) -> u32 {
686        self.raw.baseArrayLayer.into()
687    }
688
689    pub fn layer_count<'a>(&'a self) -> u32 {
690        self.raw.layerCount.into()
691    }
692
693    pub fn set_rect<'m>(&mut self, rect: Rect2d) {
694        self.raw.rect = rect.raw;
695    }
696
697    pub fn set_base_array_layer<'m>(&mut self, base_array_layer: u32) {
698        self.raw.baseArrayLayer = base_array_layer.into();
699    }
700
701    pub fn set_layer_count<'m>(&mut self, layer_count: u32) {
702        self.raw.layerCount = layer_count.into();
703    }
704
705    pub fn as_raw(&self) -> &vks::VkClearRect {
706        &self.raw
707    }
708}
709
710impl From<ClearRect> for vks::VkClearRect {
711    fn from(f: ClearRect) -> vks::VkClearRect {
712        f.raw
713    }
714}
715
716
717/// A builder for `VkClearRect`.
718///
719/// 
720#[derive(Debug, Clone, Default)]
721pub struct ClearRectBuilder {
722    raw: vks::VkClearRect,
723}
724
725impl ClearRectBuilder {
726    pub fn new() -> ClearRectBuilder {
727        ClearRectBuilder {
728            raw: vks::VkClearRect::default(),
729        }
730    }
731
732    pub fn rect<'m>(mut self, rect: Rect2d) -> ClearRectBuilder {
733        self.raw.rect = rect.raw;
734        self
735    }
736
737    pub fn base_array_layer<'m>(mut self, base_array_layer: u32) -> ClearRectBuilder {
738        self.raw.baseArrayLayer = base_array_layer.into();
739        self
740    }
741
742    pub fn layer_count<'m>(mut self, layer_count: u32) -> ClearRectBuilder {
743        self.raw.layerCount = layer_count.into();
744        self
745    }
746
747    pub fn get_rect<'a>(&'a self) -> &'a Rect2d {
748        unsafe { &*(&self.raw.rect as *const vks::VkRect2D as *const Rect2d) }
749    }
750
751    pub fn get_rect_mut<'a>(&'a mut self) -> &'a mut Rect2d {
752        unsafe { &mut *(&mut self.raw.rect as *mut  vks::VkRect2D as *mut Rect2d) }
753    }
754
755    pub fn get_base_array_layer<'a>(&'a self) -> u32 {
756        self.raw.baseArrayLayer.into()
757    }
758
759    pub fn get_layer_count<'a>(&'a self) -> u32 {
760        self.raw.layerCount.into()
761    }
762
763    pub fn build(self) -> ClearRect {
764        ClearRect {
765            raw: self.raw,
766        }
767    }
768}
769
770
771/// A `VkComponentMapping`.
772///
773/// 
774#[derive(Debug, Clone, Default)]
775#[repr(C)]
776pub struct ComponentMapping {
777    raw: vks::VkComponentMapping,
778}
779
780impl ComponentMapping {
781    pub fn builder() -> ComponentMappingBuilder {
782        ComponentMappingBuilder::new()
783    }
784
785    pub unsafe fn from_raw(raw: vks::VkComponentMapping) -> ComponentMapping {
786        ComponentMapping { raw, }
787    }
788
789    pub fn r<'a>(&'a self) -> ComponentSwizzle {
790        self.raw.r.into()
791    }
792
793    pub fn g<'a>(&'a self) -> ComponentSwizzle {
794        self.raw.g.into()
795    }
796
797    pub fn b<'a>(&'a self) -> ComponentSwizzle {
798        self.raw.b.into()
799    }
800
801    pub fn a<'a>(&'a self) -> ComponentSwizzle {
802        self.raw.a.into()
803    }
804
805    pub fn set_r<'m>(&mut self, r: ComponentSwizzle) {
806        self.raw.r = r.into();
807    }
808
809    pub fn set_g<'m>(&mut self, g: ComponentSwizzle) {
810        self.raw.g = g.into();
811    }
812
813    pub fn set_b<'m>(&mut self, b: ComponentSwizzle) {
814        self.raw.b = b.into();
815    }
816
817    pub fn set_a<'m>(&mut self, a: ComponentSwizzle) {
818        self.raw.a = a.into();
819    }
820
821    pub fn as_raw(&self) -> &vks::VkComponentMapping {
822        &self.raw
823    }
824}
825
826impl From<ComponentMapping> for vks::VkComponentMapping {
827    fn from(f: ComponentMapping) -> vks::VkComponentMapping {
828        f.raw
829    }
830}
831
832
833/// A builder for `VkComponentMapping`.
834///
835/// 
836#[derive(Debug, Clone, Default)]
837pub struct ComponentMappingBuilder {
838    raw: vks::VkComponentMapping,
839}
840
841impl ComponentMappingBuilder {
842    pub fn new() -> ComponentMappingBuilder {
843        ComponentMappingBuilder {
844            raw: vks::VkComponentMapping::default(),
845        }
846    }
847
848    pub fn r<'m>(mut self, r: ComponentSwizzle) -> ComponentMappingBuilder {
849        self.raw.r = r.into();
850        self
851    }
852
853    pub fn g<'m>(mut self, g: ComponentSwizzle) -> ComponentMappingBuilder {
854        self.raw.g = g.into();
855        self
856    }
857
858    pub fn b<'m>(mut self, b: ComponentSwizzle) -> ComponentMappingBuilder {
859        self.raw.b = b.into();
860        self
861    }
862
863    pub fn a<'m>(mut self, a: ComponentSwizzle) -> ComponentMappingBuilder {
864        self.raw.a = a.into();
865        self
866    }
867
868    pub fn get_r<'a>(&'a self) -> ComponentSwizzle {
869        self.raw.r.into()
870    }
871
872    pub fn get_g<'a>(&'a self) -> ComponentSwizzle {
873        self.raw.g.into()
874    }
875
876    pub fn get_b<'a>(&'a self) -> ComponentSwizzle {
877        self.raw.b.into()
878    }
879
880    pub fn get_a<'a>(&'a self) -> ComponentSwizzle {
881        self.raw.a.into()
882    }
883
884    pub fn build(self) -> ComponentMapping {
885        ComponentMapping {
886            raw: self.raw,
887        }
888    }
889}
890
891
892/// A `VkPhysicalDeviceProperties`.
893///
894/// 
895#[derive(Debug, Clone, Default)]
896#[repr(C)]
897pub struct PhysicalDeviceProperties {
898    raw: vks::VkPhysicalDeviceProperties,
899}
900
901impl PhysicalDeviceProperties {
902    pub fn builder() -> PhysicalDevicePropertiesBuilder {
903        PhysicalDevicePropertiesBuilder::new()
904    }
905
906    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceProperties) -> PhysicalDeviceProperties {
907        PhysicalDeviceProperties { raw, }
908    }
909
910    pub fn api_version<'a>(&'a self) -> Version {
911        self.raw.apiVersion.into()
912    }
913
914    pub fn driver_version<'a>(&'a self) -> Version {
915        self.raw.driverVersion.into()
916    }
917
918    pub fn vendor_id<'a>(&'a self) -> u32 {
919        self.raw.vendorID.into()
920    }
921
922    pub fn device_id<'a>(&'a self) -> u32 {
923        self.raw.deviceID.into()
924    }
925
926    pub fn device_type<'a>(&'a self) -> PhysicalDeviceType {
927        self.raw.deviceType.into()
928    }
929
930    pub fn device_name<'a>(&'a self) -> &'a CStr {
931        unsafe { CStr::from_ptr(&self.raw.deviceName as *const _) }
932    }
933
934    pub fn pipeline_cache_uuid<'a>(&'a self) -> &[u8] {
935        unsafe { slice::from_raw_parts(&self.raw.pipelineCacheUUID as *const _, vks::VK_UUID_SIZE as usize) }
936    }
937
938    pub fn limits<'a>(&'a self) -> &'a PhysicalDeviceLimits {
939        unsafe { &*(&self.raw.limits as *const vks::VkPhysicalDeviceLimits as *const PhysicalDeviceLimits) }
940    }
941
942    pub fn limits_mut<'a>(&'a mut self) -> &'a mut PhysicalDeviceLimits {
943        unsafe { &mut *(&mut self.raw.limits as *mut  vks::VkPhysicalDeviceLimits as *mut PhysicalDeviceLimits) }
944    }
945
946    pub fn sparse_properties<'a>(&'a self) -> &'a PhysicalDeviceSparseProperties {
947        unsafe { &*(&self.raw.sparseProperties as *const vks::VkPhysicalDeviceSparseProperties as *const PhysicalDeviceSparseProperties) }
948    }
949
950    pub fn sparse_properties_mut<'a>(&'a mut self) -> &'a mut PhysicalDeviceSparseProperties {
951        unsafe { &mut *(&mut self.raw.sparseProperties as *mut  vks::VkPhysicalDeviceSparseProperties as *mut PhysicalDeviceSparseProperties) }
952    }
953
954    pub fn set_api_version<'m, T>(&mut self, api_version: T)
955            where T: Into<Version> {
956        self.raw.apiVersion = api_version.into().into();
957    }
958
959    pub fn set_driver_version<'m, T>(&mut self, driver_version: T)
960            where T: Into<Version> {
961        self.raw.driverVersion = driver_version.into().into();
962    }
963
964    pub fn set_vendor_id<'m>(&mut self, vendor_id: u32) {
965        self.raw.vendorID = vendor_id.into();
966    }
967
968    pub fn set_device_id<'m>(&mut self, device_id: u32) {
969        self.raw.deviceID = device_id.into();
970    }
971
972    pub fn set_device_type<'m>(&mut self, device_type: PhysicalDeviceType) {
973        self.raw.deviceType = device_type.into();
974    }
975
976    pub unsafe fn set_device_name<'m>(&mut self, device_name: [i8; vks::VK_MAX_PHYSICAL_DEVICE_NAME_SIZE]) {
977        self.raw.deviceName = device_name;
978    }
979
980    pub fn set_pipeline_cache_uuid<'m>(&mut self, pipeline_cache_uuid: [u8; vks::VK_UUID_SIZE]) {
981        self.raw.pipelineCacheUUID = pipeline_cache_uuid;
982    }
983
984    pub fn set_limits<'m>(&mut self, limits: PhysicalDeviceLimits) {
985        self.raw.limits = limits.raw;
986    }
987
988    pub fn set_sparse_properties<'m>(&mut self, sparse_properties: PhysicalDeviceSparseProperties) {
989        self.raw.sparseProperties = sparse_properties.raw;
990    }
991
992    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceProperties {
993        &self.raw
994    }
995}
996
997impl From<PhysicalDeviceProperties> for vks::VkPhysicalDeviceProperties {
998    fn from(f: PhysicalDeviceProperties) -> vks::VkPhysicalDeviceProperties {
999        f.raw
1000    }
1001}
1002
1003
1004/// A builder for `VkPhysicalDeviceProperties`.
1005///
1006/// 
1007#[derive(Debug, Clone, Default)]
1008pub struct PhysicalDevicePropertiesBuilder {
1009    raw: vks::VkPhysicalDeviceProperties,
1010}
1011
1012impl PhysicalDevicePropertiesBuilder {
1013    pub fn new() -> PhysicalDevicePropertiesBuilder {
1014        PhysicalDevicePropertiesBuilder {
1015            raw: vks::VkPhysicalDeviceProperties::default(),
1016        }
1017    }
1018
1019    pub fn api_version<'m, T>(mut self, api_version: T) -> PhysicalDevicePropertiesBuilder
1020            where T: Into<Version> {
1021        self.raw.apiVersion = api_version.into().into();
1022        self
1023    }
1024
1025    pub fn driver_version<'m, T>(mut self, driver_version: T) -> PhysicalDevicePropertiesBuilder
1026            where T: Into<Version> {
1027        self.raw.driverVersion = driver_version.into().into();
1028        self
1029    }
1030
1031    pub fn vendor_id<'m>(mut self, vendor_id: u32) -> PhysicalDevicePropertiesBuilder {
1032        self.raw.vendorID = vendor_id.into();
1033        self
1034    }
1035
1036    pub fn device_id<'m>(mut self, device_id: u32) -> PhysicalDevicePropertiesBuilder {
1037        self.raw.deviceID = device_id.into();
1038        self
1039    }
1040
1041    pub fn device_type<'m>(mut self, device_type: PhysicalDeviceType) -> PhysicalDevicePropertiesBuilder {
1042        self.raw.deviceType = device_type.into();
1043        self
1044    }
1045
1046    pub unsafe fn device_name<'m>(mut self, device_name: [i8; vks::VK_MAX_PHYSICAL_DEVICE_NAME_SIZE]) -> PhysicalDevicePropertiesBuilder {
1047        self.raw.deviceName = device_name;
1048        self
1049    }
1050
1051    pub fn pipeline_cache_uuid<'m>(mut self, pipeline_cache_uuid: [u8; vks::VK_UUID_SIZE]) -> PhysicalDevicePropertiesBuilder {
1052        self.raw.pipelineCacheUUID = pipeline_cache_uuid;
1053        self
1054    }
1055
1056    pub fn limits<'m>(mut self, limits: PhysicalDeviceLimits) -> PhysicalDevicePropertiesBuilder {
1057        self.raw.limits = limits.raw;
1058        self
1059    }
1060
1061    pub fn sparse_properties<'m>(mut self, sparse_properties: PhysicalDeviceSparseProperties) -> PhysicalDevicePropertiesBuilder {
1062        self.raw.sparseProperties = sparse_properties.raw;
1063        self
1064    }
1065
1066    pub fn get_api_version<'a>(&'a self) -> Version {
1067        self.raw.apiVersion.into()
1068    }
1069
1070    pub fn get_driver_version<'a>(&'a self) -> Version {
1071        self.raw.driverVersion.into()
1072    }
1073
1074    pub fn get_vendor_id<'a>(&'a self) -> u32 {
1075        self.raw.vendorID.into()
1076    }
1077
1078    pub fn get_device_id<'a>(&'a self) -> u32 {
1079        self.raw.deviceID.into()
1080    }
1081
1082    pub fn get_device_type<'a>(&'a self) -> PhysicalDeviceType {
1083        self.raw.deviceType.into()
1084    }
1085
1086    pub fn get_device_name<'a>(&'a self) -> &'a CStr {
1087        unsafe { CStr::from_ptr(&self.raw.deviceName as *const _) }
1088    }
1089
1090    pub fn get_pipeline_cache_uuid<'a>(&'a self) -> &[u8] {
1091        unsafe { slice::from_raw_parts(&self.raw.pipelineCacheUUID as *const _, vks::VK_UUID_SIZE as usize) }
1092    }
1093
1094    pub fn get_limits<'a>(&'a self) -> &'a PhysicalDeviceLimits {
1095        unsafe { &*(&self.raw.limits as *const vks::VkPhysicalDeviceLimits as *const PhysicalDeviceLimits) }
1096    }
1097
1098    pub fn get_limits_mut<'a>(&'a mut self) -> &'a mut PhysicalDeviceLimits {
1099        unsafe { &mut *(&mut self.raw.limits as *mut  vks::VkPhysicalDeviceLimits as *mut PhysicalDeviceLimits) }
1100    }
1101
1102    pub fn get_sparse_properties<'a>(&'a self) -> &'a PhysicalDeviceSparseProperties {
1103        unsafe { &*(&self.raw.sparseProperties as *const vks::VkPhysicalDeviceSparseProperties as *const PhysicalDeviceSparseProperties) }
1104    }
1105
1106    pub fn get_sparse_properties_mut<'a>(&'a mut self) -> &'a mut PhysicalDeviceSparseProperties {
1107        unsafe { &mut *(&mut self.raw.sparseProperties as *mut  vks::VkPhysicalDeviceSparseProperties as *mut PhysicalDeviceSparseProperties) }
1108    }
1109
1110    pub fn build(self) -> PhysicalDeviceProperties {
1111        PhysicalDeviceProperties {
1112            raw: self.raw,
1113        }
1114    }
1115}
1116
1117
1118/// A `VkExtensionProperties`.
1119///
1120/// 
1121#[derive(Debug, Clone, Default)]
1122#[repr(C)]
1123pub struct ExtensionProperties {
1124    raw: vks::VkExtensionProperties,
1125}
1126
1127impl ExtensionProperties {
1128    pub fn builder() -> ExtensionPropertiesBuilder {
1129        ExtensionPropertiesBuilder::new()
1130    }
1131
1132    pub unsafe fn from_raw(raw: vks::VkExtensionProperties) -> ExtensionProperties {
1133        ExtensionProperties { raw, }
1134    }
1135
1136    pub fn extension_name<'a>(&'a self) -> &'a CStr {
1137        unsafe { CStr::from_ptr(&self.raw.extensionName as *const _) }
1138    }
1139
1140    pub fn spec_version<'a>(&'a self) -> Version {
1141        self.raw.specVersion.into()
1142    }
1143
1144    pub unsafe fn set_extension_name<'m>(&mut self, extension_name: [i8; vks::VK_MAX_EXTENSION_NAME_SIZE]) {
1145        self.raw.extensionName = extension_name;
1146    }
1147
1148    pub fn set_spec_version<'m, T>(&mut self, spec_version: T)
1149            where T: Into<Version> {
1150        self.raw.specVersion = spec_version.into().into();
1151    }
1152
1153    pub fn as_raw(&self) -> &vks::VkExtensionProperties {
1154        &self.raw
1155    }
1156}
1157
1158impl From<ExtensionProperties> for vks::VkExtensionProperties {
1159    fn from(f: ExtensionProperties) -> vks::VkExtensionProperties {
1160        f.raw
1161    }
1162}
1163
1164
1165/// A builder for `VkExtensionProperties`.
1166///
1167/// 
1168#[derive(Debug, Clone, Default)]
1169pub struct ExtensionPropertiesBuilder {
1170    raw: vks::VkExtensionProperties,
1171}
1172
1173impl ExtensionPropertiesBuilder {
1174    pub fn new() -> ExtensionPropertiesBuilder {
1175        ExtensionPropertiesBuilder {
1176            raw: vks::VkExtensionProperties::default(),
1177        }
1178    }
1179
1180    pub unsafe fn extension_name<'m>(mut self, extension_name: [i8; vks::VK_MAX_EXTENSION_NAME_SIZE]) -> ExtensionPropertiesBuilder {
1181        self.raw.extensionName = extension_name;
1182        self
1183    }
1184
1185    pub fn spec_version<'m, T>(mut self, spec_version: T) -> ExtensionPropertiesBuilder
1186            where T: Into<Version> {
1187        self.raw.specVersion = spec_version.into().into();
1188        self
1189    }
1190
1191    pub fn get_extension_name<'a>(&'a self) -> &'a CStr {
1192        unsafe { CStr::from_ptr(&self.raw.extensionName as *const _) }
1193    }
1194
1195    pub fn get_spec_version<'a>(&'a self) -> Version {
1196        self.raw.specVersion.into()
1197    }
1198
1199    pub fn build(self) -> ExtensionProperties {
1200        ExtensionProperties {
1201            raw: self.raw,
1202        }
1203    }
1204}
1205
1206
1207/// A `VkLayerProperties`.
1208///
1209/// 
1210#[derive(Debug, Clone, Default)]
1211#[repr(C)]
1212pub struct LayerProperties {
1213    raw: vks::VkLayerProperties,
1214}
1215
1216impl LayerProperties {
1217    pub fn builder() -> LayerPropertiesBuilder {
1218        LayerPropertiesBuilder::new()
1219    }
1220
1221    pub unsafe fn from_raw(raw: vks::VkLayerProperties) -> LayerProperties {
1222        LayerProperties { raw, }
1223    }
1224
1225    pub fn layer_name<'a>(&'a self) -> &'a CStr {
1226        unsafe { CStr::from_ptr(&self.raw.layerName as *const _) }
1227    }
1228
1229    pub fn spec_version<'a>(&'a self) -> Version {
1230        self.raw.specVersion.into()
1231    }
1232
1233    pub fn implementation_version<'a>(&'a self) -> Version {
1234        self.raw.implementationVersion.into()
1235    }
1236
1237    pub fn description<'a>(&'a self) -> &'a CStr {
1238        unsafe { CStr::from_ptr(&self.raw.description as *const _) }
1239    }
1240
1241    pub unsafe fn set_layer_name<'m>(&mut self, layer_name: [i8; vks::VK_MAX_EXTENSION_NAME_SIZE]) {
1242        self.raw.layerName = layer_name;
1243    }
1244
1245    pub fn set_spec_version<'m, T>(&mut self, spec_version: T)
1246            where T: Into<Version> {
1247        self.raw.specVersion = spec_version.into().into();
1248    }
1249
1250    pub fn set_implementation_version<'m, T>(&mut self, implementation_version: T)
1251            where T: Into<Version> {
1252        self.raw.implementationVersion = implementation_version.into().into();
1253    }
1254
1255    pub unsafe fn set_description<'m>(&mut self, description: [i8; vks::VK_MAX_DESCRIPTION_SIZE]) {
1256        self.raw.description = description;
1257    }
1258
1259    pub fn as_raw(&self) -> &vks::VkLayerProperties {
1260        &self.raw
1261    }
1262}
1263
1264impl From<LayerProperties> for vks::VkLayerProperties {
1265    fn from(f: LayerProperties) -> vks::VkLayerProperties {
1266        f.raw
1267    }
1268}
1269
1270
1271/// A builder for `VkLayerProperties`.
1272///
1273/// 
1274#[derive(Debug, Clone, Default)]
1275pub struct LayerPropertiesBuilder {
1276    raw: vks::VkLayerProperties,
1277}
1278
1279impl LayerPropertiesBuilder {
1280    pub fn new() -> LayerPropertiesBuilder {
1281        LayerPropertiesBuilder {
1282            raw: vks::VkLayerProperties::default(),
1283        }
1284    }
1285
1286    pub unsafe fn layer_name<'m>(mut self, layer_name: [i8; vks::VK_MAX_EXTENSION_NAME_SIZE]) -> LayerPropertiesBuilder {
1287        self.raw.layerName = layer_name;
1288        self
1289    }
1290
1291    pub fn spec_version<'m, T>(mut self, spec_version: T) -> LayerPropertiesBuilder
1292            where T: Into<Version> {
1293        self.raw.specVersion = spec_version.into().into();
1294        self
1295    }
1296
1297    pub fn implementation_version<'m, T>(mut self, implementation_version: T) -> LayerPropertiesBuilder
1298            where T: Into<Version> {
1299        self.raw.implementationVersion = implementation_version.into().into();
1300        self
1301    }
1302
1303    pub unsafe fn description<'m>(mut self, description: [i8; vks::VK_MAX_DESCRIPTION_SIZE]) -> LayerPropertiesBuilder {
1304        self.raw.description = description;
1305        self
1306    }
1307
1308    pub fn get_layer_name<'a>(&'a self) -> &'a CStr {
1309        unsafe { CStr::from_ptr(&self.raw.layerName as *const _) }
1310    }
1311
1312    pub fn get_spec_version<'a>(&'a self) -> Version {
1313        self.raw.specVersion.into()
1314    }
1315
1316    pub fn get_implementation_version<'a>(&'a self) -> Version {
1317        self.raw.implementationVersion.into()
1318    }
1319
1320    pub fn get_description<'a>(&'a self) -> &'a CStr {
1321        unsafe { CStr::from_ptr(&self.raw.description as *const _) }
1322    }
1323
1324    pub fn build(self) -> LayerProperties {
1325        LayerProperties {
1326            raw: self.raw,
1327        }
1328    }
1329}
1330
1331
1332/// A `VkApplicationInfo`.
1333///
1334/// 
1335#[derive(Debug, Clone, Default)]
1336#[repr(C)]
1337pub struct ApplicationInfo<'s> {
1338    raw: vks::VkApplicationInfo,
1339    _p: PhantomData<&'s ()>,
1340}
1341
1342impl<'s> ApplicationInfo<'s> {
1343    pub fn builder<'b>() -> ApplicationInfoBuilder<'b> {
1344        ApplicationInfoBuilder::new()
1345    }
1346
1347    pub unsafe fn from_raw(raw: vks::VkApplicationInfo) -> ApplicationInfo<'s> {
1348        ApplicationInfo { raw, _p: PhantomData }
1349    }
1350
1351    pub fn next<'a>(&'a self) -> *const c_void {
1352        self.raw.pNext
1353    }
1354
1355    pub fn application_name<'a>(&'a self) -> &'a CStr {
1356        unsafe { CStr::from_ptr(self.raw.pApplicationName) }
1357    }
1358
1359    pub fn application_version<'a>(&'a self) -> Version {
1360        self.raw.applicationVersion.into()
1361    }
1362
1363    pub fn engine_name<'a>(&'a self) -> &'a CStr {
1364        unsafe { CStr::from_ptr(self.raw.pEngineName) }
1365    }
1366
1367    pub fn engine_version<'a>(&'a self) -> Version {
1368        self.raw.engineVersion.into()
1369    }
1370
1371    pub fn api_version<'a>(&'a self) -> Version {
1372        self.raw.apiVersion.into()
1373    }
1374
1375    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
1376        self.raw.pNext = next;
1377    }
1378
1379    pub fn set_application_name<'m, 'a>(&mut self, application_name: &'a CStr)
1380            where 'a: 's {
1381        self.raw.pApplicationName = application_name.as_ptr();
1382    }
1383
1384    pub fn set_application_version<'m, T>(&mut self, application_version: T)
1385            where T: Into<Version> {
1386        self.raw.applicationVersion = application_version.into().into();
1387    }
1388
1389    pub fn set_engine_name<'m, 'a>(&mut self, engine_name: &'a CStr)
1390            where 'a: 's {
1391        self.raw.pEngineName = engine_name.as_ptr();
1392    }
1393
1394    pub fn set_engine_version<'m, T>(&mut self, engine_version: T)
1395            where T: Into<Version> {
1396        self.raw.engineVersion = engine_version.into().into();
1397    }
1398
1399    pub fn set_api_version<'m, T>(&mut self, api_version: T)
1400            where T: Into<Version> {
1401        self.raw.apiVersion = api_version.into().into();
1402    }
1403
1404    pub fn as_raw(&self) -> &vks::VkApplicationInfo {
1405        &self.raw
1406    }
1407}
1408
1409impl<'s> From<ApplicationInfo<'s>> for vks::VkApplicationInfo {
1410    fn from(f: ApplicationInfo<'s>) -> vks::VkApplicationInfo {
1411        f.raw
1412    }
1413}
1414
1415
1416/// A builder for `VkApplicationInfo`.
1417///
1418/// 
1419#[derive(Debug, Clone, Default)]
1420pub struct ApplicationInfoBuilder<'b> {
1421    raw: vks::VkApplicationInfo,
1422    _p: PhantomData<&'b ()>, 
1423}
1424
1425impl<'b> ApplicationInfoBuilder<'b> {
1426    pub fn new() -> ApplicationInfoBuilder<'b> {
1427        ApplicationInfoBuilder {
1428            raw: vks::VkApplicationInfo::default(),
1429            _p: PhantomData,
1430        }
1431    }
1432
1433    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ApplicationInfoBuilder<'b> {
1434        self.raw.pNext = next;
1435        self
1436    }
1437
1438    pub fn application_name<'m, 'a>(mut self, application_name: &'a CStr) -> ApplicationInfoBuilder<'b>
1439            where 'a: 'b {
1440        self.raw.pApplicationName = application_name.as_ptr();
1441        self
1442    }
1443
1444    pub fn application_version<'m, T>(mut self, application_version: T) -> ApplicationInfoBuilder<'b>
1445            where T: Into<Version> {
1446        self.raw.applicationVersion = application_version.into().into();
1447        self
1448    }
1449
1450    pub fn engine_name<'m, 'a>(mut self, engine_name: &'a CStr) -> ApplicationInfoBuilder<'b>
1451            where 'a: 'b {
1452        self.raw.pEngineName = engine_name.as_ptr();
1453        self
1454    }
1455
1456    pub fn engine_version<'m, T>(mut self, engine_version: T) -> ApplicationInfoBuilder<'b>
1457            where T: Into<Version> {
1458        self.raw.engineVersion = engine_version.into().into();
1459        self
1460    }
1461
1462    pub fn api_version<'m, T>(mut self, api_version: T) -> ApplicationInfoBuilder<'b>
1463            where T: Into<Version> {
1464        self.raw.apiVersion = api_version.into().into();
1465        self
1466    }
1467
1468    pub fn get_next<'a>(&'a self) -> *const c_void {
1469        self.raw.pNext
1470    }
1471
1472    pub fn get_application_name<'a>(&'a self) -> &'a CStr {
1473        unsafe { CStr::from_ptr(self.raw.pApplicationName) }
1474    }
1475
1476    pub fn get_application_version<'a>(&'a self) -> Version {
1477        self.raw.applicationVersion.into()
1478    }
1479
1480    pub fn get_engine_name<'a>(&'a self) -> &'a CStr {
1481        unsafe { CStr::from_ptr(self.raw.pEngineName) }
1482    }
1483
1484    pub fn get_engine_version<'a>(&'a self) -> Version {
1485        self.raw.engineVersion.into()
1486    }
1487
1488    pub fn get_api_version<'a>(&'a self) -> Version {
1489        self.raw.apiVersion.into()
1490    }
1491
1492    pub fn build(self) -> ApplicationInfo<'b> {
1493        ApplicationInfo {
1494            raw: self.raw,
1495            _p: PhantomData,
1496        }
1497    }
1498}
1499
1500
1501/// A `VkAllocationCallbacks`.
1502///
1503/// 
1504#[derive(Debug, Clone, Default)]
1505#[repr(C)]
1506pub struct AllocationCallbacks<'s> {
1507    raw: vks::VkAllocationCallbacks,
1508    _p: PhantomData<&'s ()>,
1509}
1510
1511impl<'s> AllocationCallbacks<'s> {
1512    pub fn builder<'b>() -> AllocationCallbacksBuilder<'b> {
1513        AllocationCallbacksBuilder::new()
1514    }
1515
1516    pub unsafe fn from_raw(raw: vks::VkAllocationCallbacks) -> AllocationCallbacks<'s> {
1517        AllocationCallbacks { raw, _p: PhantomData }
1518    }
1519
1520    pub fn user_data<'a>(&'a self) -> *mut c_void {
1521        self.raw.pUserData
1522    }
1523
1524    pub fn pfn_allocation<'a>(&'a self) -> PFN_vkAllocationFunction {
1525        self.raw.pfnAllocation.into()
1526    }
1527
1528    pub fn pfn_reallocation<'a>(&'a self) -> PFN_vkReallocationFunction {
1529        self.raw.pfnReallocation.into()
1530    }
1531
1532    pub fn pfn_free<'a>(&'a self) -> PFN_vkFreeFunction {
1533        self.raw.pfnFree.into()
1534    }
1535
1536    pub fn pfn_internal_allocation<'a>(&'a self) -> PFN_vkInternalAllocationNotification {
1537        self.raw.pfnInternalAllocation.into()
1538    }
1539
1540    pub fn pfn_internal_free<'a>(&'a self) -> PFN_vkInternalFreeNotification {
1541        self.raw.pfnInternalFree.into()
1542    }
1543
1544    pub unsafe fn set_user_data<'m>(&mut self, user_data: *mut c_void) {
1545        self.raw.pUserData = user_data;
1546    }
1547
1548    pub unsafe fn set_pfn_allocation<'m>(&mut self, pfn_allocation: PFN_vkAllocationFunction) {
1549        self.raw.pfnAllocation = pfn_allocation.into();
1550    }
1551
1552    pub unsafe fn set_pfn_reallocation<'m>(&mut self, pfn_reallocation: PFN_vkReallocationFunction) {
1553        self.raw.pfnReallocation = pfn_reallocation.into();
1554    }
1555
1556    pub unsafe fn set_pfn_free<'m>(&mut self, pfn_free: PFN_vkFreeFunction) {
1557        self.raw.pfnFree = pfn_free.into();
1558    }
1559
1560    pub unsafe fn set_pfn_internal_allocation<'m>(&mut self, pfn_internal_allocation: PFN_vkInternalAllocationNotification) {
1561        self.raw.pfnInternalAllocation = pfn_internal_allocation.into();
1562    }
1563
1564    pub unsafe fn set_pfn_internal_free<'m>(&mut self, pfn_internal_free: PFN_vkInternalFreeNotification) {
1565        self.raw.pfnInternalFree = pfn_internal_free.into();
1566    }
1567
1568    pub fn as_raw(&self) -> &vks::VkAllocationCallbacks {
1569        &self.raw
1570    }
1571}
1572
1573impl<'s> From<AllocationCallbacks<'s>> for vks::VkAllocationCallbacks {
1574    fn from(f: AllocationCallbacks<'s>) -> vks::VkAllocationCallbacks {
1575        f.raw
1576    }
1577}
1578
1579
1580/// A builder for `VkAllocationCallbacks`.
1581///
1582/// 
1583#[derive(Debug, Clone, Default)]
1584pub struct AllocationCallbacksBuilder<'b> {
1585    raw: vks::VkAllocationCallbacks,
1586    _p: PhantomData<&'b ()>, 
1587}
1588
1589impl<'b> AllocationCallbacksBuilder<'b> {
1590    pub fn new() -> AllocationCallbacksBuilder<'b> {
1591        AllocationCallbacksBuilder {
1592            raw: vks::VkAllocationCallbacks::default(),
1593            _p: PhantomData,
1594        }
1595    }
1596
1597    pub unsafe fn user_data<'m>(mut self, user_data: *mut c_void) -> AllocationCallbacksBuilder<'b> {
1598        self.raw.pUserData = user_data;
1599        self
1600    }
1601
1602    pub unsafe fn pfn_allocation<'m>(mut self, pfn_allocation: PFN_vkAllocationFunction) -> AllocationCallbacksBuilder<'b> {
1603        self.raw.pfnAllocation = pfn_allocation.into();
1604        self
1605    }
1606
1607    pub unsafe fn pfn_reallocation<'m>(mut self, pfn_reallocation: PFN_vkReallocationFunction) -> AllocationCallbacksBuilder<'b> {
1608        self.raw.pfnReallocation = pfn_reallocation.into();
1609        self
1610    }
1611
1612    pub unsafe fn pfn_free<'m>(mut self, pfn_free: PFN_vkFreeFunction) -> AllocationCallbacksBuilder<'b> {
1613        self.raw.pfnFree = pfn_free.into();
1614        self
1615    }
1616
1617    pub unsafe fn pfn_internal_allocation<'m>(mut self, pfn_internal_allocation: PFN_vkInternalAllocationNotification) -> AllocationCallbacksBuilder<'b> {
1618        self.raw.pfnInternalAllocation = pfn_internal_allocation.into();
1619        self
1620    }
1621
1622    pub unsafe fn pfn_internal_free<'m>(mut self, pfn_internal_free: PFN_vkInternalFreeNotification) -> AllocationCallbacksBuilder<'b> {
1623        self.raw.pfnInternalFree = pfn_internal_free.into();
1624        self
1625    }
1626
1627    pub fn get_user_data<'a>(&'a self) -> *mut c_void {
1628        self.raw.pUserData
1629    }
1630
1631    pub fn get_pfn_allocation<'a>(&'a self) -> PFN_vkAllocationFunction {
1632        self.raw.pfnAllocation.into()
1633    }
1634
1635    pub fn get_pfn_reallocation<'a>(&'a self) -> PFN_vkReallocationFunction {
1636        self.raw.pfnReallocation.into()
1637    }
1638
1639    pub fn get_pfn_free<'a>(&'a self) -> PFN_vkFreeFunction {
1640        self.raw.pfnFree.into()
1641    }
1642
1643    pub fn get_pfn_internal_allocation<'a>(&'a self) -> PFN_vkInternalAllocationNotification {
1644        self.raw.pfnInternalAllocation.into()
1645    }
1646
1647    pub fn get_pfn_internal_free<'a>(&'a self) -> PFN_vkInternalFreeNotification {
1648        self.raw.pfnInternalFree.into()
1649    }
1650
1651    pub fn build(self) -> AllocationCallbacks<'b> {
1652        AllocationCallbacks {
1653            raw: self.raw,
1654            _p: PhantomData,
1655        }
1656    }
1657}
1658
1659
1660/// A `VkDeviceQueueCreateInfo`.
1661///
1662/// 
1663#[derive(Debug, Clone, Default)]
1664#[repr(C)]
1665pub struct DeviceQueueCreateInfo<'s> {
1666    raw: vks::VkDeviceQueueCreateInfo,
1667    _p: PhantomData<&'s ()>,
1668}
1669
1670impl<'s> DeviceQueueCreateInfo<'s> {
1671    pub fn builder<'b>() -> DeviceQueueCreateInfoBuilder<'b> {
1672        DeviceQueueCreateInfoBuilder::new()
1673    }
1674
1675    pub unsafe fn from_raw(raw: vks::VkDeviceQueueCreateInfo) -> DeviceQueueCreateInfo<'s> {
1676        DeviceQueueCreateInfo { raw, _p: PhantomData }
1677    }
1678
1679    pub fn next<'a>(&'a self) -> *const c_void {
1680        self.raw.pNext
1681    }
1682
1683    pub fn flags<'a>(&'a self) -> DeviceQueueCreateFlags {
1684        DeviceQueueCreateFlags::from_bits(self.raw.flags)
1685            .expect("DeviceQueueCreateInfo::flags: error converting flags")
1686    }
1687
1688    pub fn queue_family_index<'a>(&'a self) -> u32 {
1689        self.raw.queueFamilyIndex.into()
1690    }
1691
1692    pub fn queue_priorities<'a>(&'a self) -> &'a [f32] {
1693        unsafe { slice::from_raw_parts(self.raw.pQueuePriorities as *const _, self.raw.queueCount as usize) }
1694    }
1695
1696    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
1697        self.raw.pNext = next;
1698    }
1699
1700    pub fn set_flags<'m>(&mut self, flags: DeviceQueueCreateFlags) {
1701        self.raw.flags = flags.bits();
1702    }
1703
1704    pub fn set_queue_family_index<'m>(&mut self, queue_family_index: u32) {
1705        self.raw.queueFamilyIndex = queue_family_index.into();
1706    }
1707
1708    pub fn set_queue_priorities<'m, 'a>(&mut self, queue_priorities: &'a [f32])
1709            where 'a: 's {
1710        assert!(self.raw.queueCount == 0 || self.raw.queueCount == queue_priorities.len() as _, 
1711            "count inconsistency found when specifying `DeviceQueueCreateInfo::queue_priorities`.");
1712        self.raw.queueCount = queue_priorities.len() as _;
1713        self.raw.pQueuePriorities = queue_priorities.as_ptr() as *const f32 as *const _;
1714    }
1715
1716    pub fn as_raw(&self) -> &vks::VkDeviceQueueCreateInfo {
1717        &self.raw
1718    }
1719}
1720
1721impl<'s> From<DeviceQueueCreateInfo<'s>> for vks::VkDeviceQueueCreateInfo {
1722    fn from(f: DeviceQueueCreateInfo<'s>) -> vks::VkDeviceQueueCreateInfo {
1723        f.raw
1724    }
1725}
1726
1727
1728/// A builder for `VkDeviceQueueCreateInfo`.
1729///
1730/// 
1731#[derive(Debug, Clone, Default)]
1732pub struct DeviceQueueCreateInfoBuilder<'b> {
1733    raw: vks::VkDeviceQueueCreateInfo,
1734    _p: PhantomData<&'b ()>, 
1735}
1736
1737impl<'b> DeviceQueueCreateInfoBuilder<'b> {
1738    pub fn new() -> DeviceQueueCreateInfoBuilder<'b> {
1739        DeviceQueueCreateInfoBuilder {
1740            raw: vks::VkDeviceQueueCreateInfo::default(),
1741            _p: PhantomData,
1742        }
1743    }
1744
1745    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DeviceQueueCreateInfoBuilder<'b> {
1746        self.raw.pNext = next;
1747        self
1748    }
1749
1750    pub fn flags<'m>(mut self, flags: DeviceQueueCreateFlags) -> DeviceQueueCreateInfoBuilder<'b> {
1751        self.raw.flags = flags.bits();
1752        self
1753    }
1754
1755    pub fn queue_family_index<'m>(mut self, queue_family_index: u32) -> DeviceQueueCreateInfoBuilder<'b> {
1756        self.raw.queueFamilyIndex = queue_family_index.into();
1757        self
1758    }
1759
1760    pub fn queue_priorities<'m, 'a>(mut self, queue_priorities: &'a [f32]) -> DeviceQueueCreateInfoBuilder<'b>
1761            where 'a: 'b {
1762        assert!(self.raw.queueCount == 0 || self.raw.queueCount == queue_priorities.len() as _, 
1763            "count inconsistency found when specifying `DeviceQueueCreateInfo::queue_priorities`.");
1764        self.raw.queueCount = queue_priorities.len() as _;
1765        self.raw.pQueuePriorities = queue_priorities.as_ptr() as *const f32 as *const _;
1766        self
1767    }
1768
1769    pub fn get_next<'a>(&'a self) -> *const c_void {
1770        self.raw.pNext
1771    }
1772
1773    pub fn get_flags<'a>(&'a self) -> DeviceQueueCreateFlags {
1774        DeviceQueueCreateFlags::from_bits(self.raw.flags)
1775            .expect("DeviceQueueCreateInfo::flags: error converting flags")
1776    }
1777
1778    pub fn get_queue_family_index<'a>(&'a self) -> u32 {
1779        self.raw.queueFamilyIndex.into()
1780    }
1781
1782    pub fn get_queue_priorities<'a>(&'a self) -> &'a [f32] {
1783        unsafe { slice::from_raw_parts(self.raw.pQueuePriorities as *const _, self.raw.queueCount as usize) }
1784    }
1785
1786    pub fn build(self) -> DeviceQueueCreateInfo<'b> {
1787        DeviceQueueCreateInfo {
1788            raw: self.raw,
1789            _p: PhantomData,
1790        }
1791    }
1792}
1793
1794
1795/// A `VkDeviceCreateInfo`.
1796///
1797/// 
1798#[derive(Debug, Clone, Default)]
1799#[repr(C)]
1800pub struct DeviceCreateInfo<'s> {
1801    raw: vks::VkDeviceCreateInfo,
1802    _p: PhantomData<&'s ()>,
1803}
1804
1805impl<'s> DeviceCreateInfo<'s> {
1806    pub fn builder<'b>() -> DeviceCreateInfoBuilder<'b> {
1807        DeviceCreateInfoBuilder::new()
1808    }
1809
1810    pub unsafe fn from_raw(raw: vks::VkDeviceCreateInfo) -> DeviceCreateInfo<'s> {
1811        DeviceCreateInfo { raw, _p: PhantomData }
1812    }
1813
1814    pub fn next<'a>(&'a self) -> *const c_void {
1815        self.raw.pNext
1816    }
1817
1818    pub fn flags<'a>(&'a self) -> DeviceCreateFlags {
1819        DeviceCreateFlags::from_bits(self.raw.flags)
1820            .expect("DeviceCreateInfo::flags: error converting flags")
1821    }
1822
1823    pub fn queue_create_infos<'a>(&'a self) -> &'a [DeviceQueueCreateInfo] {
1824        unsafe { slice::from_raw_parts(self.raw.pQueueCreateInfos as *const _, self.raw.queueCreateInfoCount as usize) }
1825    }
1826
1827    pub fn enabled_layer_names<'a>(&'a self) -> &'a [*const c_char] {
1828        unsafe { slice::from_raw_parts(self.raw.ppEnabledLayerNames as *const _, self.raw.enabledLayerCount as usize) }
1829    }
1830
1831    pub fn enabled_extension_names<'a>(&'a self) -> &'a [*const c_char] {
1832        unsafe { slice::from_raw_parts(self.raw.ppEnabledExtensionNames as *const _, self.raw.enabledExtensionCount as usize) }
1833    }
1834
1835    pub fn enabled_features<'a>(&'a self) -> &'a PhysicalDeviceFeatures {
1836        unsafe { &*(self.raw.pEnabledFeatures as *const vks::VkPhysicalDeviceFeatures as *const _) }
1837    }
1838
1839    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
1840        self.raw.pNext = next;
1841    }
1842
1843    pub fn set_flags<'m>(&mut self, flags: DeviceCreateFlags) {
1844        self.raw.flags = flags.bits();
1845    }
1846
1847    pub fn set_queue_create_infos<'m, 'a>(&mut self, queue_create_infos: &'a [DeviceQueueCreateInfo])
1848            where 'a: 's {
1849        assert!(self.raw.queueCreateInfoCount == 0 || self.raw.queueCreateInfoCount == queue_create_infos.len() as _, 
1850            "count inconsistency found when specifying `DeviceCreateInfo::queue_create_infos`.");
1851        self.raw.queueCreateInfoCount = queue_create_infos.len() as _;
1852        self.raw.pQueueCreateInfos = queue_create_infos.as_ptr() as *const vks::VkDeviceQueueCreateInfo;
1853    }
1854
1855    pub fn set_enabled_layer_names<'m, 'a>(&mut self, enabled_layer_names: &'a [*const c_char])
1856            where 'a: 's {
1857        assert!(self.raw.enabledLayerCount == 0 || self.raw.enabledLayerCount == enabled_layer_names.len() as _, 
1858            "count inconsistency found when specifying `DeviceCreateInfo::enabled_layer_names`.");
1859        self.raw.enabledLayerCount = enabled_layer_names.len() as _;
1860        self.raw.ppEnabledLayerNames = enabled_layer_names.as_ptr();
1861    }
1862
1863    pub fn set_enabled_extension_names<'m, 'a>(&mut self, enabled_extension_names: &'a [*const c_char])
1864            where 'a: 's {
1865        assert!(self.raw.enabledExtensionCount == 0 || self.raw.enabledExtensionCount == enabled_extension_names.len() as _, 
1866            "count inconsistency found when specifying `DeviceCreateInfo::enabled_extension_names`.");
1867        self.raw.enabledExtensionCount = enabled_extension_names.len() as _;
1868        self.raw.ppEnabledExtensionNames = enabled_extension_names.as_ptr();
1869    }
1870
1871    pub fn set_enabled_features<'m, 'a>(&mut self, enabled_features: &'a PhysicalDeviceFeatures)
1872            where 'a: 's {
1873        self.raw.pEnabledFeatures = enabled_features.as_raw();
1874    }
1875
1876    pub fn as_raw(&self) -> &vks::VkDeviceCreateInfo {
1877        &self.raw
1878    }
1879}
1880
1881impl<'s> From<DeviceCreateInfo<'s>> for vks::VkDeviceCreateInfo {
1882    fn from(f: DeviceCreateInfo<'s>) -> vks::VkDeviceCreateInfo {
1883        f.raw
1884    }
1885}
1886
1887
1888/// A builder for `VkDeviceCreateInfo`.
1889///
1890/// 
1891#[derive(Debug, Clone, Default)]
1892pub struct DeviceCreateInfoBuilder<'b> {
1893    raw: vks::VkDeviceCreateInfo,
1894    _p: PhantomData<&'b ()>, 
1895}
1896
1897impl<'b> DeviceCreateInfoBuilder<'b> {
1898    pub fn new() -> DeviceCreateInfoBuilder<'b> {
1899        DeviceCreateInfoBuilder {
1900            raw: vks::VkDeviceCreateInfo::default(),
1901            _p: PhantomData,
1902        }
1903    }
1904
1905    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DeviceCreateInfoBuilder<'b> {
1906        self.raw.pNext = next;
1907        self
1908    }
1909
1910    pub fn flags<'m>(mut self, flags: DeviceCreateFlags) -> DeviceCreateInfoBuilder<'b> {
1911        self.raw.flags = flags.bits();
1912        self
1913    }
1914
1915    pub fn queue_create_infos<'m, 'a>(mut self, queue_create_infos: &'a [DeviceQueueCreateInfo]) -> DeviceCreateInfoBuilder<'b>
1916            where 'a: 'b {
1917        assert!(self.raw.queueCreateInfoCount == 0 || self.raw.queueCreateInfoCount == queue_create_infos.len() as _, 
1918            "count inconsistency found when specifying `DeviceCreateInfo::queue_create_infos`.");
1919        self.raw.queueCreateInfoCount = queue_create_infos.len() as _;
1920        self.raw.pQueueCreateInfos = queue_create_infos.as_ptr() as *const vks::VkDeviceQueueCreateInfo;
1921        self
1922    }
1923
1924    pub fn enabled_layer_names<'m, 'a>(mut self, enabled_layer_names: &'a [*const c_char]) -> DeviceCreateInfoBuilder<'b>
1925            where 'a: 'b {
1926        assert!(self.raw.enabledLayerCount == 0 || self.raw.enabledLayerCount == enabled_layer_names.len() as _, 
1927            "count inconsistency found when specifying `DeviceCreateInfo::enabled_layer_names`.");
1928        self.raw.enabledLayerCount = enabled_layer_names.len() as _;
1929        self.raw.ppEnabledLayerNames = enabled_layer_names.as_ptr();
1930        self
1931    }
1932
1933    pub fn enabled_extension_names<'m, 'a>(mut self, enabled_extension_names: &'a [*const c_char]) -> DeviceCreateInfoBuilder<'b>
1934            where 'a: 'b {
1935        assert!(self.raw.enabledExtensionCount == 0 || self.raw.enabledExtensionCount == enabled_extension_names.len() as _, 
1936            "count inconsistency found when specifying `DeviceCreateInfo::enabled_extension_names`.");
1937        self.raw.enabledExtensionCount = enabled_extension_names.len() as _;
1938        self.raw.ppEnabledExtensionNames = enabled_extension_names.as_ptr();
1939        self
1940    }
1941
1942    pub fn enabled_features<'m, 'a>(mut self, enabled_features: &'a PhysicalDeviceFeatures) -> DeviceCreateInfoBuilder<'b>
1943            where 'a: 'b {
1944        self.raw.pEnabledFeatures = enabled_features.as_raw();
1945        self
1946    }
1947
1948    pub fn get_next<'a>(&'a self) -> *const c_void {
1949        self.raw.pNext
1950    }
1951
1952    pub fn get_flags<'a>(&'a self) -> DeviceCreateFlags {
1953        DeviceCreateFlags::from_bits(self.raw.flags)
1954            .expect("DeviceCreateInfo::flags: error converting flags")
1955    }
1956
1957    pub fn get_queue_create_infos<'a>(&'a self) -> &'a [DeviceQueueCreateInfo] {
1958        unsafe { slice::from_raw_parts(self.raw.pQueueCreateInfos as *const _, self.raw.queueCreateInfoCount as usize) }
1959    }
1960
1961    pub fn get_enabled_layer_names<'a>(&'a self) -> &'a [*const c_char] {
1962        unsafe { slice::from_raw_parts(self.raw.ppEnabledLayerNames as *const _, self.raw.enabledLayerCount as usize) }
1963    }
1964
1965    pub fn get_enabled_extension_names<'a>(&'a self) -> &'a [*const c_char] {
1966        unsafe { slice::from_raw_parts(self.raw.ppEnabledExtensionNames as *const _, self.raw.enabledExtensionCount as usize) }
1967    }
1968
1969    pub fn get_enabled_features<'a>(&'a self) -> &'a PhysicalDeviceFeatures {
1970        unsafe { &*(self.raw.pEnabledFeatures as *const vks::VkPhysicalDeviceFeatures as *const _) }
1971    }
1972
1973    pub fn build(self) -> DeviceCreateInfo<'b> {
1974        DeviceCreateInfo {
1975            raw: self.raw,
1976            _p: PhantomData,
1977        }
1978    }
1979}
1980
1981
1982/// A `VkInstanceCreateInfo`.
1983///
1984/// 
1985#[derive(Debug, Clone, Default)]
1986#[repr(C)]
1987pub struct InstanceCreateInfo<'s> {
1988    raw: vks::VkInstanceCreateInfo,
1989    _p: PhantomData<&'s ()>,
1990}
1991
1992impl<'s> InstanceCreateInfo<'s> {
1993    pub fn builder<'b>() -> InstanceCreateInfoBuilder<'b> {
1994        InstanceCreateInfoBuilder::new()
1995    }
1996
1997    pub unsafe fn from_raw(raw: vks::VkInstanceCreateInfo) -> InstanceCreateInfo<'s> {
1998        InstanceCreateInfo { raw, _p: PhantomData }
1999    }
2000
2001    pub fn next<'a>(&'a self) -> *const c_void {
2002        self.raw.pNext
2003    }
2004
2005    pub fn flags<'a>(&'a self) -> InstanceCreateFlags {
2006        InstanceCreateFlags::from_bits(self.raw.flags)
2007            .expect("InstanceCreateInfo::flags: error converting flags")
2008    }
2009
2010    pub fn application_info<'a>(&'a self) -> &'a ApplicationInfo {
2011        unsafe { &*(self.raw.pApplicationInfo as *const vks::VkApplicationInfo as *const _) }
2012    }
2013
2014    pub fn enabled_layer_names<'a>(&'a self) -> &'a [*const c_char] {
2015        unsafe { slice::from_raw_parts(self.raw.ppEnabledLayerNames as *const _, self.raw.enabledLayerCount as usize) }
2016    }
2017
2018    pub fn enabled_extension_names<'a>(&'a self) -> &'a [*const c_char] {
2019        unsafe { slice::from_raw_parts(self.raw.ppEnabledExtensionNames as *const _, self.raw.enabledExtensionCount as usize) }
2020    }
2021
2022    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
2023        self.raw.pNext = next;
2024    }
2025
2026    pub fn set_flags<'m>(&mut self, flags: InstanceCreateFlags) {
2027        self.raw.flags = flags.bits();
2028    }
2029
2030    pub fn set_application_info<'m, 'a>(&mut self, application_info: &'a ApplicationInfo)
2031            where 'a: 's {
2032        self.raw.pApplicationInfo = application_info.as_raw();
2033    }
2034
2035    pub fn set_enabled_layer_names<'m, 'a>(&mut self, enabled_layer_names: &'a [*const c_char])
2036            where 'a: 's {
2037        assert!(self.raw.enabledLayerCount == 0 || self.raw.enabledLayerCount == enabled_layer_names.len() as _, 
2038            "count inconsistency found when specifying `InstanceCreateInfo::enabled_layer_names`.");
2039        self.raw.enabledLayerCount = enabled_layer_names.len() as _;
2040        self.raw.ppEnabledLayerNames = enabled_layer_names.as_ptr();
2041    }
2042
2043    pub fn set_enabled_extension_names<'m, 'a>(&mut self, enabled_extension_names: &'a [*const c_char])
2044            where 'a: 's {
2045        assert!(self.raw.enabledExtensionCount == 0 || self.raw.enabledExtensionCount == enabled_extension_names.len() as _, 
2046            "count inconsistency found when specifying `InstanceCreateInfo::enabled_extension_names`.");
2047        self.raw.enabledExtensionCount = enabled_extension_names.len() as _;
2048        self.raw.ppEnabledExtensionNames = enabled_extension_names.as_ptr();
2049    }
2050
2051    pub fn as_raw(&self) -> &vks::VkInstanceCreateInfo {
2052        &self.raw
2053    }
2054}
2055
2056impl<'s> From<InstanceCreateInfo<'s>> for vks::VkInstanceCreateInfo {
2057    fn from(f: InstanceCreateInfo<'s>) -> vks::VkInstanceCreateInfo {
2058        f.raw
2059    }
2060}
2061
2062
2063/// A builder for `VkInstanceCreateInfo`.
2064///
2065/// 
2066#[derive(Debug, Clone, Default)]
2067pub struct InstanceCreateInfoBuilder<'b> {
2068    raw: vks::VkInstanceCreateInfo,
2069    _p: PhantomData<&'b ()>, 
2070}
2071
2072impl<'b> InstanceCreateInfoBuilder<'b> {
2073    pub fn new() -> InstanceCreateInfoBuilder<'b> {
2074        InstanceCreateInfoBuilder {
2075            raw: vks::VkInstanceCreateInfo::default(),
2076            _p: PhantomData,
2077        }
2078    }
2079
2080    pub unsafe fn next<'m>(mut self, next: *const c_void) -> InstanceCreateInfoBuilder<'b> {
2081        self.raw.pNext = next;
2082        self
2083    }
2084
2085    pub fn flags<'m>(mut self, flags: InstanceCreateFlags) -> InstanceCreateInfoBuilder<'b> {
2086        self.raw.flags = flags.bits();
2087        self
2088    }
2089
2090    pub fn application_info<'m, 'a>(mut self, application_info: &'a ApplicationInfo) -> InstanceCreateInfoBuilder<'b>
2091            where 'a: 'b {
2092        self.raw.pApplicationInfo = application_info.as_raw();
2093        self
2094    }
2095
2096    pub fn enabled_layer_names<'m, 'a>(mut self, enabled_layer_names: &'a [*const c_char]) -> InstanceCreateInfoBuilder<'b>
2097            where 'a: 'b {
2098        assert!(self.raw.enabledLayerCount == 0 || self.raw.enabledLayerCount == enabled_layer_names.len() as _, 
2099            "count inconsistency found when specifying `InstanceCreateInfo::enabled_layer_names`.");
2100        self.raw.enabledLayerCount = enabled_layer_names.len() as _;
2101        self.raw.ppEnabledLayerNames = enabled_layer_names.as_ptr();
2102        self
2103    }
2104
2105    pub fn enabled_extension_names<'m, 'a>(mut self, enabled_extension_names: &'a [*const c_char]) -> InstanceCreateInfoBuilder<'b>
2106            where 'a: 'b {
2107        assert!(self.raw.enabledExtensionCount == 0 || self.raw.enabledExtensionCount == enabled_extension_names.len() as _, 
2108            "count inconsistency found when specifying `InstanceCreateInfo::enabled_extension_names`.");
2109        self.raw.enabledExtensionCount = enabled_extension_names.len() as _;
2110        self.raw.ppEnabledExtensionNames = enabled_extension_names.as_ptr();
2111        self
2112    }
2113
2114    pub fn get_next<'a>(&'a self) -> *const c_void {
2115        self.raw.pNext
2116    }
2117
2118    pub fn get_flags<'a>(&'a self) -> InstanceCreateFlags {
2119        InstanceCreateFlags::from_bits(self.raw.flags)
2120            .expect("InstanceCreateInfo::flags: error converting flags")
2121    }
2122
2123    pub fn get_application_info<'a>(&'a self) -> &'a ApplicationInfo {
2124        unsafe { &*(self.raw.pApplicationInfo as *const vks::VkApplicationInfo as *const _) }
2125    }
2126
2127    pub fn get_enabled_layer_names<'a>(&'a self) -> &'a [*const c_char] {
2128        unsafe { slice::from_raw_parts(self.raw.ppEnabledLayerNames as *const _, self.raw.enabledLayerCount as usize) }
2129    }
2130
2131    pub fn get_enabled_extension_names<'a>(&'a self) -> &'a [*const c_char] {
2132        unsafe { slice::from_raw_parts(self.raw.ppEnabledExtensionNames as *const _, self.raw.enabledExtensionCount as usize) }
2133    }
2134
2135    pub fn build(self) -> InstanceCreateInfo<'b> {
2136        InstanceCreateInfo {
2137            raw: self.raw,
2138            _p: PhantomData,
2139        }
2140    }
2141}
2142
2143
2144/// A `VkQueueFamilyProperties`.
2145///
2146/// 
2147#[derive(Debug, Clone, Default)]
2148#[repr(C)]
2149pub struct QueueFamilyProperties {
2150    raw: vks::VkQueueFamilyProperties,
2151}
2152
2153impl QueueFamilyProperties {
2154    pub fn builder() -> QueueFamilyPropertiesBuilder {
2155        QueueFamilyPropertiesBuilder::new()
2156    }
2157
2158    pub unsafe fn from_raw(raw: vks::VkQueueFamilyProperties) -> QueueFamilyProperties {
2159        QueueFamilyProperties { raw, }
2160    }
2161
2162    pub fn queue_flags<'a>(&'a self) -> QueueFlags {
2163        QueueFlags::from_bits(self.raw.queueFlags)
2164            .expect("QueueFamilyProperties::queue_flags: error converting flags")
2165    }
2166
2167    pub fn queue_count<'a>(&'a self) -> u32 {
2168        self.raw.queueCount.into()
2169    }
2170
2171    pub fn timestamp_valid_bits<'a>(&'a self) -> u32 {
2172        self.raw.timestampValidBits.into()
2173    }
2174
2175    pub fn min_image_transfer_granularity<'a>(&'a self) -> &'a Extent3d {
2176        unsafe { &*(&self.raw.minImageTransferGranularity as *const vks::VkExtent3D as *const Extent3d) }
2177    }
2178
2179    pub fn min_image_transfer_granularity_mut<'a>(&'a mut self) -> &'a mut Extent3d {
2180        unsafe { &mut *(&mut self.raw.minImageTransferGranularity as *mut  vks::VkExtent3D as *mut Extent3d) }
2181    }
2182
2183    pub fn set_queue_flags<'m>(&mut self, queue_flags: QueueFlags) {
2184        self.raw.queueFlags = queue_flags.bits();
2185    }
2186
2187    pub fn set_queue_count<'m>(&mut self, queue_count: u32) {
2188        self.raw.queueCount = queue_count.into();
2189    }
2190
2191    pub fn set_timestamp_valid_bits<'m>(&mut self, timestamp_valid_bits: u32) {
2192        self.raw.timestampValidBits = timestamp_valid_bits.into();
2193    }
2194
2195    pub fn set_min_image_transfer_granularity<'m>(&mut self, min_image_transfer_granularity: Extent3d) {
2196        self.raw.minImageTransferGranularity = min_image_transfer_granularity.raw;
2197    }
2198
2199    pub fn as_raw(&self) -> &vks::VkQueueFamilyProperties {
2200        &self.raw
2201    }
2202}
2203
2204impl From<QueueFamilyProperties> for vks::VkQueueFamilyProperties {
2205    fn from(f: QueueFamilyProperties) -> vks::VkQueueFamilyProperties {
2206        f.raw
2207    }
2208}
2209
2210
2211/// A builder for `VkQueueFamilyProperties`.
2212///
2213/// 
2214#[derive(Debug, Clone, Default)]
2215pub struct QueueFamilyPropertiesBuilder {
2216    raw: vks::VkQueueFamilyProperties,
2217}
2218
2219impl QueueFamilyPropertiesBuilder {
2220    pub fn new() -> QueueFamilyPropertiesBuilder {
2221        QueueFamilyPropertiesBuilder {
2222            raw: vks::VkQueueFamilyProperties::default(),
2223        }
2224    }
2225
2226    pub fn queue_flags<'m>(mut self, queue_flags: QueueFlags) -> QueueFamilyPropertiesBuilder {
2227        self.raw.queueFlags = queue_flags.bits();
2228        self
2229    }
2230
2231    pub fn queue_count<'m>(mut self, queue_count: u32) -> QueueFamilyPropertiesBuilder {
2232        self.raw.queueCount = queue_count.into();
2233        self
2234    }
2235
2236    pub fn timestamp_valid_bits<'m>(mut self, timestamp_valid_bits: u32) -> QueueFamilyPropertiesBuilder {
2237        self.raw.timestampValidBits = timestamp_valid_bits.into();
2238        self
2239    }
2240
2241    pub fn min_image_transfer_granularity<'m>(mut self, min_image_transfer_granularity: Extent3d) -> QueueFamilyPropertiesBuilder {
2242        self.raw.minImageTransferGranularity = min_image_transfer_granularity.raw;
2243        self
2244    }
2245
2246    pub fn get_queue_flags<'a>(&'a self) -> QueueFlags {
2247        QueueFlags::from_bits(self.raw.queueFlags)
2248            .expect("QueueFamilyProperties::queue_flags: error converting flags")
2249    }
2250
2251    pub fn get_queue_count<'a>(&'a self) -> u32 {
2252        self.raw.queueCount.into()
2253    }
2254
2255    pub fn get_timestamp_valid_bits<'a>(&'a self) -> u32 {
2256        self.raw.timestampValidBits.into()
2257    }
2258
2259    pub fn get_min_image_transfer_granularity<'a>(&'a self) -> &'a Extent3d {
2260        unsafe { &*(&self.raw.minImageTransferGranularity as *const vks::VkExtent3D as *const Extent3d) }
2261    }
2262
2263    pub fn get_min_image_transfer_granularity_mut<'a>(&'a mut self) -> &'a mut Extent3d {
2264        unsafe { &mut *(&mut self.raw.minImageTransferGranularity as *mut  vks::VkExtent3D as *mut Extent3d) }
2265    }
2266
2267    pub fn build(self) -> QueueFamilyProperties {
2268        QueueFamilyProperties {
2269            raw: self.raw,
2270        }
2271    }
2272}
2273
2274
2275/// A `VkPhysicalDeviceMemoryProperties`.
2276///
2277/// 
2278#[derive(Debug, Clone, Default)]
2279#[repr(C)]
2280pub struct PhysicalDeviceMemoryProperties {
2281    raw: vks::VkPhysicalDeviceMemoryProperties,
2282}
2283
2284impl PhysicalDeviceMemoryProperties {
2285    pub fn builder() -> PhysicalDeviceMemoryPropertiesBuilder {
2286        PhysicalDeviceMemoryPropertiesBuilder::new()
2287    }
2288
2289    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceMemoryProperties) -> PhysicalDeviceMemoryProperties {
2290        PhysicalDeviceMemoryProperties { raw, }
2291    }
2292
2293    pub fn memory_type_count<'a>(&'a self) -> u32 {
2294        self.raw.memoryTypeCount.into()
2295    }
2296
2297    pub fn memory_types<'a>(&'a self) -> &[MemoryType] {
2298        unsafe { slice::from_raw_parts(&self.raw.memoryTypes as *const vks::VkMemoryType as *const _, vks::VK_MAX_MEMORY_TYPES as usize) }
2299    }
2300
2301    pub fn memory_heap_count<'a>(&'a self) -> u32 {
2302        self.raw.memoryHeapCount.into()
2303    }
2304
2305    pub fn memory_heaps<'a>(&'a self) -> &[MemoryHeap] {
2306        unsafe { slice::from_raw_parts(&self.raw.memoryHeaps as *const vks::VkMemoryHeap as *const _, vks::VK_MAX_MEMORY_HEAPS as usize) }
2307    }
2308
2309    pub fn set_memory_type_count<'m>(&mut self, memory_type_count: u32) {
2310        self.raw.memoryTypeCount = memory_type_count.into();
2311    }
2312
2313    pub fn set_memory_types<'m>(&mut self, memory_types: [MemoryType; vks::VK_MAX_MEMORY_TYPES]) {
2314        self.raw.memoryTypes = unsafe { *(&memory_types as *const [MemoryType; vks::VK_MAX_MEMORY_TYPES] as *const _) };
2315    }
2316
2317    pub fn set_memory_heap_count<'m>(&mut self, memory_heap_count: u32) {
2318        self.raw.memoryHeapCount = memory_heap_count.into();
2319    }
2320
2321    pub fn set_memory_heaps<'m>(&mut self, memory_heaps: [MemoryHeap; vks::VK_MAX_MEMORY_HEAPS]) {
2322        self.raw.memoryHeaps = unsafe { *(&memory_heaps as *const [MemoryHeap; vks::VK_MAX_MEMORY_HEAPS] as *const _) };
2323    }
2324
2325    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceMemoryProperties {
2326        &self.raw
2327    }
2328}
2329
2330impl From<PhysicalDeviceMemoryProperties> for vks::VkPhysicalDeviceMemoryProperties {
2331    fn from(f: PhysicalDeviceMemoryProperties) -> vks::VkPhysicalDeviceMemoryProperties {
2332        f.raw
2333    }
2334}
2335
2336
2337/// A builder for `VkPhysicalDeviceMemoryProperties`.
2338///
2339/// 
2340#[derive(Debug, Clone, Default)]
2341pub struct PhysicalDeviceMemoryPropertiesBuilder {
2342    raw: vks::VkPhysicalDeviceMemoryProperties,
2343}
2344
2345impl PhysicalDeviceMemoryPropertiesBuilder {
2346    pub fn new() -> PhysicalDeviceMemoryPropertiesBuilder {
2347        PhysicalDeviceMemoryPropertiesBuilder {
2348            raw: vks::VkPhysicalDeviceMemoryProperties::default(),
2349        }
2350    }
2351
2352    pub fn memory_type_count<'m>(mut self, memory_type_count: u32) -> PhysicalDeviceMemoryPropertiesBuilder {
2353        self.raw.memoryTypeCount = memory_type_count.into();
2354        self
2355    }
2356
2357    pub fn memory_types<'m>(mut self, memory_types: [MemoryType; vks::VK_MAX_MEMORY_TYPES]) -> PhysicalDeviceMemoryPropertiesBuilder {
2358        self.raw.memoryTypes = unsafe { *(&memory_types as *const [MemoryType; vks::VK_MAX_MEMORY_TYPES] as *const _) };
2359        self
2360    }
2361
2362    pub fn memory_heap_count<'m>(mut self, memory_heap_count: u32) -> PhysicalDeviceMemoryPropertiesBuilder {
2363        self.raw.memoryHeapCount = memory_heap_count.into();
2364        self
2365    }
2366
2367    pub fn memory_heaps<'m>(mut self, memory_heaps: [MemoryHeap; vks::VK_MAX_MEMORY_HEAPS]) -> PhysicalDeviceMemoryPropertiesBuilder {
2368        self.raw.memoryHeaps = unsafe { *(&memory_heaps as *const [MemoryHeap; vks::VK_MAX_MEMORY_HEAPS] as *const _) };
2369        self
2370    }
2371
2372    pub fn get_memory_type_count<'a>(&'a self) -> u32 {
2373        self.raw.memoryTypeCount.into()
2374    }
2375
2376    pub fn get_memory_types<'a>(&'a self) -> &[MemoryType] {
2377        unsafe { slice::from_raw_parts(&self.raw.memoryTypes as *const vks::VkMemoryType as *const _, vks::VK_MAX_MEMORY_TYPES as usize) }
2378    }
2379
2380    pub fn get_memory_heap_count<'a>(&'a self) -> u32 {
2381        self.raw.memoryHeapCount.into()
2382    }
2383
2384    pub fn get_memory_heaps<'a>(&'a self) -> &[MemoryHeap] {
2385        unsafe { slice::from_raw_parts(&self.raw.memoryHeaps as *const vks::VkMemoryHeap as *const _, vks::VK_MAX_MEMORY_HEAPS as usize) }
2386    }
2387
2388    pub fn build(self) -> PhysicalDeviceMemoryProperties {
2389        PhysicalDeviceMemoryProperties {
2390            raw: self.raw,
2391        }
2392    }
2393}
2394
2395
2396/// A `VkMemoryAllocateInfo`.
2397///
2398/// 
2399#[derive(Debug, Clone, Default)]
2400#[repr(C)]
2401pub struct MemoryAllocateInfo<'s> {
2402    raw: vks::VkMemoryAllocateInfo,
2403    _p: PhantomData<&'s ()>,
2404}
2405
2406impl<'s> MemoryAllocateInfo<'s> {
2407    pub fn builder<'b>() -> MemoryAllocateInfoBuilder<'b> {
2408        MemoryAllocateInfoBuilder::new()
2409    }
2410
2411    pub unsafe fn from_raw(raw: vks::VkMemoryAllocateInfo) -> MemoryAllocateInfo<'s> {
2412        MemoryAllocateInfo { raw, _p: PhantomData }
2413    }
2414
2415    pub fn next<'a>(&'a self) -> *const c_void {
2416        self.raw.pNext
2417    }
2418
2419    pub fn allocation_size<'a>(&'a self) -> u64 {
2420        self.raw.allocationSize.into()
2421    }
2422
2423    pub fn memory_type_index<'a>(&'a self) -> u32 {
2424        self.raw.memoryTypeIndex.into()
2425    }
2426
2427    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
2428        self.raw.pNext = next;
2429    }
2430
2431    pub fn set_allocation_size<'m>(&mut self, allocation_size: u64) {
2432        self.raw.allocationSize = allocation_size.into();
2433    }
2434
2435    pub fn set_memory_type_index<'m>(&mut self, memory_type_index: u32) {
2436        self.raw.memoryTypeIndex = memory_type_index.into();
2437    }
2438
2439    pub fn as_raw(&self) -> &vks::VkMemoryAllocateInfo {
2440        &self.raw
2441    }
2442}
2443
2444impl<'s> From<MemoryAllocateInfo<'s>> for vks::VkMemoryAllocateInfo {
2445    fn from(f: MemoryAllocateInfo<'s>) -> vks::VkMemoryAllocateInfo {
2446        f.raw
2447    }
2448}
2449
2450
2451/// A builder for `VkMemoryAllocateInfo`.
2452///
2453/// 
2454#[derive(Debug, Clone, Default)]
2455pub struct MemoryAllocateInfoBuilder<'b> {
2456    raw: vks::VkMemoryAllocateInfo,
2457    _p: PhantomData<&'b ()>, 
2458}
2459
2460impl<'b> MemoryAllocateInfoBuilder<'b> {
2461    pub fn new() -> MemoryAllocateInfoBuilder<'b> {
2462        MemoryAllocateInfoBuilder {
2463            raw: vks::VkMemoryAllocateInfo::default(),
2464            _p: PhantomData,
2465        }
2466    }
2467
2468    pub unsafe fn next<'m>(mut self, next: *const c_void) -> MemoryAllocateInfoBuilder<'b> {
2469        self.raw.pNext = next;
2470        self
2471    }
2472
2473    pub fn allocation_size<'m>(mut self, allocation_size: u64) -> MemoryAllocateInfoBuilder<'b> {
2474        self.raw.allocationSize = allocation_size.into();
2475        self
2476    }
2477
2478    pub fn memory_type_index<'m>(mut self, memory_type_index: u32) -> MemoryAllocateInfoBuilder<'b> {
2479        self.raw.memoryTypeIndex = memory_type_index.into();
2480        self
2481    }
2482
2483    pub fn get_next<'a>(&'a self) -> *const c_void {
2484        self.raw.pNext
2485    }
2486
2487    pub fn get_allocation_size<'a>(&'a self) -> u64 {
2488        self.raw.allocationSize.into()
2489    }
2490
2491    pub fn get_memory_type_index<'a>(&'a self) -> u32 {
2492        self.raw.memoryTypeIndex.into()
2493    }
2494
2495    pub fn build(self) -> MemoryAllocateInfo<'b> {
2496        MemoryAllocateInfo {
2497            raw: self.raw,
2498            _p: PhantomData,
2499        }
2500    }
2501}
2502
2503
2504/// A `VkMemoryRequirements`.
2505///
2506/// 
2507#[derive(Debug, Clone, Default)]
2508#[repr(C)]
2509pub struct MemoryRequirements {
2510    raw: vks::VkMemoryRequirements,
2511}
2512
2513impl MemoryRequirements {
2514    pub fn builder() -> MemoryRequirementsBuilder {
2515        MemoryRequirementsBuilder::new()
2516    }
2517
2518    pub unsafe fn from_raw(raw: vks::VkMemoryRequirements) -> MemoryRequirements {
2519        MemoryRequirements { raw, }
2520    }
2521
2522    pub fn size<'a>(&'a self) -> u64 {
2523        self.raw.size.into()
2524    }
2525
2526    pub fn alignment<'a>(&'a self) -> u64 {
2527        self.raw.alignment.into()
2528    }
2529
2530    pub fn memory_type_bits<'a>(&'a self) -> u32 {
2531        self.raw.memoryTypeBits.into()
2532    }
2533
2534    pub fn set_size<'m>(&mut self, size: u64) {
2535        self.raw.size = size.into();
2536    }
2537
2538    pub fn set_alignment<'m>(&mut self, alignment: u64) {
2539        self.raw.alignment = alignment.into();
2540    }
2541
2542    pub fn set_memory_type_bits<'m>(&mut self, memory_type_bits: u32) {
2543        self.raw.memoryTypeBits = memory_type_bits.into();
2544    }
2545
2546    pub fn as_raw(&self) -> &vks::VkMemoryRequirements {
2547        &self.raw
2548    }
2549}
2550
2551impl From<MemoryRequirements> for vks::VkMemoryRequirements {
2552    fn from(f: MemoryRequirements) -> vks::VkMemoryRequirements {
2553        f.raw
2554    }
2555}
2556
2557
2558/// A builder for `VkMemoryRequirements`.
2559///
2560/// 
2561#[derive(Debug, Clone, Default)]
2562pub struct MemoryRequirementsBuilder {
2563    raw: vks::VkMemoryRequirements,
2564}
2565
2566impl MemoryRequirementsBuilder {
2567    pub fn new() -> MemoryRequirementsBuilder {
2568        MemoryRequirementsBuilder {
2569            raw: vks::VkMemoryRequirements::default(),
2570        }
2571    }
2572
2573    pub fn size<'m>(mut self, size: u64) -> MemoryRequirementsBuilder {
2574        self.raw.size = size.into();
2575        self
2576    }
2577
2578    pub fn alignment<'m>(mut self, alignment: u64) -> MemoryRequirementsBuilder {
2579        self.raw.alignment = alignment.into();
2580        self
2581    }
2582
2583    pub fn memory_type_bits<'m>(mut self, memory_type_bits: u32) -> MemoryRequirementsBuilder {
2584        self.raw.memoryTypeBits = memory_type_bits.into();
2585        self
2586    }
2587
2588    pub fn get_size<'a>(&'a self) -> u64 {
2589        self.raw.size.into()
2590    }
2591
2592    pub fn get_alignment<'a>(&'a self) -> u64 {
2593        self.raw.alignment.into()
2594    }
2595
2596    pub fn get_memory_type_bits<'a>(&'a self) -> u32 {
2597        self.raw.memoryTypeBits.into()
2598    }
2599
2600    pub fn build(self) -> MemoryRequirements {
2601        MemoryRequirements {
2602            raw: self.raw,
2603        }
2604    }
2605}
2606
2607
2608/// A `VkSparseImageFormatProperties`.
2609///
2610/// 
2611#[derive(Debug, Clone, Default)]
2612#[repr(C)]
2613pub struct SparseImageFormatProperties {
2614    raw: vks::VkSparseImageFormatProperties,
2615}
2616
2617impl SparseImageFormatProperties {
2618    pub fn builder() -> SparseImageFormatPropertiesBuilder {
2619        SparseImageFormatPropertiesBuilder::new()
2620    }
2621
2622    pub unsafe fn from_raw(raw: vks::VkSparseImageFormatProperties) -> SparseImageFormatProperties {
2623        SparseImageFormatProperties { raw, }
2624    }
2625
2626    pub fn aspect_mask<'a>(&'a self) -> ImageAspectFlags {
2627        ImageAspectFlags::from_bits(self.raw.aspectMask)
2628            .expect("SparseImageFormatProperties::aspect_mask: error converting flags")
2629    }
2630
2631    pub fn image_granularity<'a>(&'a self) -> &'a Extent3d {
2632        unsafe { &*(&self.raw.imageGranularity as *const vks::VkExtent3D as *const Extent3d) }
2633    }
2634
2635    pub fn image_granularity_mut<'a>(&'a mut self) -> &'a mut Extent3d {
2636        unsafe { &mut *(&mut self.raw.imageGranularity as *mut  vks::VkExtent3D as *mut Extent3d) }
2637    }
2638
2639    pub fn flags<'a>(&'a self) -> SparseImageFormatFlags {
2640        SparseImageFormatFlags::from_bits(self.raw.flags)
2641            .expect("SparseImageFormatProperties::flags: error converting flags")
2642    }
2643
2644    pub fn set_aspect_mask<'m>(&mut self, aspect_mask: ImageAspectFlags) {
2645        self.raw.aspectMask = aspect_mask.bits();
2646    }
2647
2648    pub fn set_image_granularity<'m>(&mut self, image_granularity: Extent3d) {
2649        self.raw.imageGranularity = image_granularity.raw;
2650    }
2651
2652    pub fn set_flags<'m>(&mut self, flags: SparseImageFormatFlags) {
2653        self.raw.flags = flags.bits();
2654    }
2655
2656    pub fn as_raw(&self) -> &vks::VkSparseImageFormatProperties {
2657        &self.raw
2658    }
2659}
2660
2661impl From<SparseImageFormatProperties> for vks::VkSparseImageFormatProperties {
2662    fn from(f: SparseImageFormatProperties) -> vks::VkSparseImageFormatProperties {
2663        f.raw
2664    }
2665}
2666
2667
2668/// A builder for `VkSparseImageFormatProperties`.
2669///
2670/// 
2671#[derive(Debug, Clone, Default)]
2672pub struct SparseImageFormatPropertiesBuilder {
2673    raw: vks::VkSparseImageFormatProperties,
2674}
2675
2676impl SparseImageFormatPropertiesBuilder {
2677    pub fn new() -> SparseImageFormatPropertiesBuilder {
2678        SparseImageFormatPropertiesBuilder {
2679            raw: vks::VkSparseImageFormatProperties::default(),
2680        }
2681    }
2682
2683    pub fn aspect_mask<'m>(mut self, aspect_mask: ImageAspectFlags) -> SparseImageFormatPropertiesBuilder {
2684        self.raw.aspectMask = aspect_mask.bits();
2685        self
2686    }
2687
2688    pub fn image_granularity<'m>(mut self, image_granularity: Extent3d) -> SparseImageFormatPropertiesBuilder {
2689        self.raw.imageGranularity = image_granularity.raw;
2690        self
2691    }
2692
2693    pub fn flags<'m>(mut self, flags: SparseImageFormatFlags) -> SparseImageFormatPropertiesBuilder {
2694        self.raw.flags = flags.bits();
2695        self
2696    }
2697
2698    pub fn get_aspect_mask<'a>(&'a self) -> ImageAspectFlags {
2699        ImageAspectFlags::from_bits(self.raw.aspectMask)
2700            .expect("SparseImageFormatProperties::aspect_mask: error converting flags")
2701    }
2702
2703    pub fn get_image_granularity<'a>(&'a self) -> &'a Extent3d {
2704        unsafe { &*(&self.raw.imageGranularity as *const vks::VkExtent3D as *const Extent3d) }
2705    }
2706
2707    pub fn get_image_granularity_mut<'a>(&'a mut self) -> &'a mut Extent3d {
2708        unsafe { &mut *(&mut self.raw.imageGranularity as *mut  vks::VkExtent3D as *mut Extent3d) }
2709    }
2710
2711    pub fn get_flags<'a>(&'a self) -> SparseImageFormatFlags {
2712        SparseImageFormatFlags::from_bits(self.raw.flags)
2713            .expect("SparseImageFormatProperties::flags: error converting flags")
2714    }
2715
2716    pub fn build(self) -> SparseImageFormatProperties {
2717        SparseImageFormatProperties {
2718            raw: self.raw,
2719        }
2720    }
2721}
2722
2723
2724/// A `VkSparseImageMemoryRequirements`.
2725///
2726/// 
2727#[derive(Debug, Clone, Default)]
2728#[repr(C)]
2729pub struct SparseImageMemoryRequirements {
2730    raw: vks::VkSparseImageMemoryRequirements,
2731}
2732
2733impl SparseImageMemoryRequirements {
2734    pub fn builder() -> SparseImageMemoryRequirementsBuilder {
2735        SparseImageMemoryRequirementsBuilder::new()
2736    }
2737
2738    pub unsafe fn from_raw(raw: vks::VkSparseImageMemoryRequirements) -> SparseImageMemoryRequirements {
2739        SparseImageMemoryRequirements { raw, }
2740    }
2741
2742    pub fn format_properties<'a>(&'a self) -> &'a SparseImageFormatProperties {
2743        unsafe { &*(&self.raw.formatProperties as *const vks::VkSparseImageFormatProperties as *const SparseImageFormatProperties) }
2744    }
2745
2746    pub fn format_properties_mut<'a>(&'a mut self) -> &'a mut SparseImageFormatProperties {
2747        unsafe { &mut *(&mut self.raw.formatProperties as *mut  vks::VkSparseImageFormatProperties as *mut SparseImageFormatProperties) }
2748    }
2749
2750    pub fn image_mip_tail_first_lod<'a>(&'a self) -> u32 {
2751        self.raw.imageMipTailFirstLod.into()
2752    }
2753
2754    pub fn image_mip_tail_size<'a>(&'a self) -> u64 {
2755        self.raw.imageMipTailSize.into()
2756    }
2757
2758    pub fn image_mip_tail_offset<'a>(&'a self) -> u64 {
2759        self.raw.imageMipTailOffset.into()
2760    }
2761
2762    pub fn image_mip_tail_stride<'a>(&'a self) -> u64 {
2763        self.raw.imageMipTailStride.into()
2764    }
2765
2766    pub fn set_format_properties<'m>(&mut self, format_properties: SparseImageFormatProperties) {
2767        self.raw.formatProperties = format_properties.raw;
2768    }
2769
2770    pub fn set_image_mip_tail_first_lod<'m>(&mut self, image_mip_tail_first_lod: u32) {
2771        self.raw.imageMipTailFirstLod = image_mip_tail_first_lod.into();
2772    }
2773
2774    pub fn set_image_mip_tail_size<'m>(&mut self, image_mip_tail_size: u64) {
2775        self.raw.imageMipTailSize = image_mip_tail_size.into();
2776    }
2777
2778    pub fn set_image_mip_tail_offset<'m>(&mut self, image_mip_tail_offset: u64) {
2779        self.raw.imageMipTailOffset = image_mip_tail_offset.into();
2780    }
2781
2782    pub fn set_image_mip_tail_stride<'m>(&mut self, image_mip_tail_stride: u64) {
2783        self.raw.imageMipTailStride = image_mip_tail_stride.into();
2784    }
2785
2786    pub fn as_raw(&self) -> &vks::VkSparseImageMemoryRequirements {
2787        &self.raw
2788    }
2789}
2790
2791impl From<SparseImageMemoryRequirements> for vks::VkSparseImageMemoryRequirements {
2792    fn from(f: SparseImageMemoryRequirements) -> vks::VkSparseImageMemoryRequirements {
2793        f.raw
2794    }
2795}
2796
2797
2798/// A builder for `VkSparseImageMemoryRequirements`.
2799///
2800/// 
2801#[derive(Debug, Clone, Default)]
2802pub struct SparseImageMemoryRequirementsBuilder {
2803    raw: vks::VkSparseImageMemoryRequirements,
2804}
2805
2806impl SparseImageMemoryRequirementsBuilder {
2807    pub fn new() -> SparseImageMemoryRequirementsBuilder {
2808        SparseImageMemoryRequirementsBuilder {
2809            raw: vks::VkSparseImageMemoryRequirements::default(),
2810        }
2811    }
2812
2813    pub fn format_properties<'m>(mut self, format_properties: SparseImageFormatProperties) -> SparseImageMemoryRequirementsBuilder {
2814        self.raw.formatProperties = format_properties.raw;
2815        self
2816    }
2817
2818    pub fn image_mip_tail_first_lod<'m>(mut self, image_mip_tail_first_lod: u32) -> SparseImageMemoryRequirementsBuilder {
2819        self.raw.imageMipTailFirstLod = image_mip_tail_first_lod.into();
2820        self
2821    }
2822
2823    pub fn image_mip_tail_size<'m>(mut self, image_mip_tail_size: u64) -> SparseImageMemoryRequirementsBuilder {
2824        self.raw.imageMipTailSize = image_mip_tail_size.into();
2825        self
2826    }
2827
2828    pub fn image_mip_tail_offset<'m>(mut self, image_mip_tail_offset: u64) -> SparseImageMemoryRequirementsBuilder {
2829        self.raw.imageMipTailOffset = image_mip_tail_offset.into();
2830        self
2831    }
2832
2833    pub fn image_mip_tail_stride<'m>(mut self, image_mip_tail_stride: u64) -> SparseImageMemoryRequirementsBuilder {
2834        self.raw.imageMipTailStride = image_mip_tail_stride.into();
2835        self
2836    }
2837
2838    pub fn get_format_properties<'a>(&'a self) -> &'a SparseImageFormatProperties {
2839        unsafe { &*(&self.raw.formatProperties as *const vks::VkSparseImageFormatProperties as *const SparseImageFormatProperties) }
2840    }
2841
2842    pub fn get_format_properties_mut<'a>(&'a mut self) -> &'a mut SparseImageFormatProperties {
2843        unsafe { &mut *(&mut self.raw.formatProperties as *mut  vks::VkSparseImageFormatProperties as *mut SparseImageFormatProperties) }
2844    }
2845
2846    pub fn get_image_mip_tail_first_lod<'a>(&'a self) -> u32 {
2847        self.raw.imageMipTailFirstLod.into()
2848    }
2849
2850    pub fn get_image_mip_tail_size<'a>(&'a self) -> u64 {
2851        self.raw.imageMipTailSize.into()
2852    }
2853
2854    pub fn get_image_mip_tail_offset<'a>(&'a self) -> u64 {
2855        self.raw.imageMipTailOffset.into()
2856    }
2857
2858    pub fn get_image_mip_tail_stride<'a>(&'a self) -> u64 {
2859        self.raw.imageMipTailStride.into()
2860    }
2861
2862    pub fn build(self) -> SparseImageMemoryRequirements {
2863        SparseImageMemoryRequirements {
2864            raw: self.raw,
2865        }
2866    }
2867}
2868
2869
2870/// A `VkMemoryType`.
2871///
2872/// 
2873#[derive(Debug, Clone, Default)]
2874#[repr(C)]
2875pub struct MemoryType {
2876    raw: vks::VkMemoryType,
2877}
2878
2879impl MemoryType {
2880    pub fn builder() -> MemoryTypeBuilder {
2881        MemoryTypeBuilder::new()
2882    }
2883
2884    pub unsafe fn from_raw(raw: vks::VkMemoryType) -> MemoryType {
2885        MemoryType { raw, }
2886    }
2887
2888    pub fn property_flags<'a>(&'a self) -> MemoryPropertyFlags {
2889        MemoryPropertyFlags::from_bits(self.raw.propertyFlags)
2890            .expect("MemoryType::property_flags: error converting flags")
2891    }
2892
2893    pub fn heap_index<'a>(&'a self) -> u32 {
2894        self.raw.heapIndex.into()
2895    }
2896
2897    pub fn set_property_flags<'m>(&mut self, property_flags: MemoryPropertyFlags) {
2898        self.raw.propertyFlags = property_flags.bits();
2899    }
2900
2901    pub fn set_heap_index<'m>(&mut self, heap_index: u32) {
2902        self.raw.heapIndex = heap_index.into();
2903    }
2904
2905    pub fn as_raw(&self) -> &vks::VkMemoryType {
2906        &self.raw
2907    }
2908}
2909
2910impl From<MemoryType> for vks::VkMemoryType {
2911    fn from(f: MemoryType) -> vks::VkMemoryType {
2912        f.raw
2913    }
2914}
2915
2916
2917/// A builder for `VkMemoryType`.
2918///
2919/// 
2920#[derive(Debug, Clone, Default)]
2921pub struct MemoryTypeBuilder {
2922    raw: vks::VkMemoryType,
2923}
2924
2925impl MemoryTypeBuilder {
2926    pub fn new() -> MemoryTypeBuilder {
2927        MemoryTypeBuilder {
2928            raw: vks::VkMemoryType::default(),
2929        }
2930    }
2931
2932    pub fn property_flags<'m>(mut self, property_flags: MemoryPropertyFlags) -> MemoryTypeBuilder {
2933        self.raw.propertyFlags = property_flags.bits();
2934        self
2935    }
2936
2937    pub fn heap_index<'m>(mut self, heap_index: u32) -> MemoryTypeBuilder {
2938        self.raw.heapIndex = heap_index.into();
2939        self
2940    }
2941
2942    pub fn get_property_flags<'a>(&'a self) -> MemoryPropertyFlags {
2943        MemoryPropertyFlags::from_bits(self.raw.propertyFlags)
2944            .expect("MemoryType::property_flags: error converting flags")
2945    }
2946
2947    pub fn get_heap_index<'a>(&'a self) -> u32 {
2948        self.raw.heapIndex.into()
2949    }
2950
2951    pub fn build(self) -> MemoryType {
2952        MemoryType {
2953            raw: self.raw,
2954        }
2955    }
2956}
2957
2958
2959/// A `VkMemoryHeap`.
2960///
2961/// 
2962#[derive(Debug, Clone, Default)]
2963#[repr(C)]
2964pub struct MemoryHeap {
2965    raw: vks::VkMemoryHeap,
2966}
2967
2968impl MemoryHeap {
2969    pub fn builder() -> MemoryHeapBuilder {
2970        MemoryHeapBuilder::new()
2971    }
2972
2973    pub unsafe fn from_raw(raw: vks::VkMemoryHeap) -> MemoryHeap {
2974        MemoryHeap { raw, }
2975    }
2976
2977    pub fn size<'a>(&'a self) -> u64 {
2978        self.raw.size.into()
2979    }
2980
2981    pub fn flags<'a>(&'a self) -> MemoryHeapFlags {
2982        MemoryHeapFlags::from_bits(self.raw.flags)
2983            .expect("MemoryHeap::flags: error converting flags")
2984    }
2985
2986    pub fn set_size<'m>(&mut self, size: u64) {
2987        self.raw.size = size.into();
2988    }
2989
2990    pub fn set_flags<'m>(&mut self, flags: MemoryHeapFlags) {
2991        self.raw.flags = flags.bits();
2992    }
2993
2994    pub fn as_raw(&self) -> &vks::VkMemoryHeap {
2995        &self.raw
2996    }
2997}
2998
2999impl From<MemoryHeap> for vks::VkMemoryHeap {
3000    fn from(f: MemoryHeap) -> vks::VkMemoryHeap {
3001        f.raw
3002    }
3003}
3004
3005
3006/// A builder for `VkMemoryHeap`.
3007///
3008/// 
3009#[derive(Debug, Clone, Default)]
3010pub struct MemoryHeapBuilder {
3011    raw: vks::VkMemoryHeap,
3012}
3013
3014impl MemoryHeapBuilder {
3015    pub fn new() -> MemoryHeapBuilder {
3016        MemoryHeapBuilder {
3017            raw: vks::VkMemoryHeap::default(),
3018        }
3019    }
3020
3021    pub fn size<'m>(mut self, size: u64) -> MemoryHeapBuilder {
3022        self.raw.size = size.into();
3023        self
3024    }
3025
3026    pub fn flags<'m>(mut self, flags: MemoryHeapFlags) -> MemoryHeapBuilder {
3027        self.raw.flags = flags.bits();
3028        self
3029    }
3030
3031    pub fn get_size<'a>(&'a self) -> u64 {
3032        self.raw.size.into()
3033    }
3034
3035    pub fn get_flags<'a>(&'a self) -> MemoryHeapFlags {
3036        MemoryHeapFlags::from_bits(self.raw.flags)
3037            .expect("MemoryHeap::flags: error converting flags")
3038    }
3039
3040    pub fn build(self) -> MemoryHeap {
3041        MemoryHeap {
3042            raw: self.raw,
3043        }
3044    }
3045}
3046
3047
3048/// A `VkMappedMemoryRange`.
3049///
3050/// 
3051#[derive(Debug, Clone, Default)]
3052#[repr(C)]
3053pub struct MappedMemoryRange<'s> {
3054    raw: vks::VkMappedMemoryRange,
3055    _p: PhantomData<&'s ()>,
3056}
3057
3058impl<'s> MappedMemoryRange<'s> {
3059    pub fn builder<'b>() -> MappedMemoryRangeBuilder<'b> {
3060        MappedMemoryRangeBuilder::new()
3061    }
3062
3063    pub unsafe fn from_raw(raw: vks::VkMappedMemoryRange) -> MappedMemoryRange<'s> {
3064        MappedMemoryRange { raw, _p: PhantomData }
3065    }
3066
3067    pub fn next<'a>(&'a self) -> *const c_void {
3068        self.raw.pNext
3069    }
3070
3071    pub fn memory<'a>(&'a self) -> vks::VkDeviceMemory {
3072        self.raw.memory
3073    }
3074
3075    pub fn offset<'a>(&'a self) -> u64 {
3076        self.raw.offset.into()
3077    }
3078
3079    pub fn size<'a>(&'a self) -> u64 {
3080        self.raw.size.into()
3081    }
3082
3083    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
3084        self.raw.pNext = next;
3085    }
3086
3087    pub fn set_memory<'m, H>(&mut self, memory: H)
3088            where H: Handle<Target=DeviceMemoryHandle> {
3089        self.raw.memory = memory.handle().0;
3090    }
3091
3092    pub fn set_offset<'m>(&mut self, offset: u64) {
3093        self.raw.offset = offset.into();
3094    }
3095
3096    pub fn set_size<'m>(&mut self, size: u64) {
3097        self.raw.size = size.into();
3098    }
3099
3100    pub fn as_raw(&self) -> &vks::VkMappedMemoryRange {
3101        &self.raw
3102    }
3103}
3104
3105impl<'s> From<MappedMemoryRange<'s>> for vks::VkMappedMemoryRange {
3106    fn from(f: MappedMemoryRange<'s>) -> vks::VkMappedMemoryRange {
3107        f.raw
3108    }
3109}
3110
3111
3112/// A builder for `VkMappedMemoryRange`.
3113///
3114/// 
3115#[derive(Debug, Clone, Default)]
3116pub struct MappedMemoryRangeBuilder<'b> {
3117    raw: vks::VkMappedMemoryRange,
3118    _p: PhantomData<&'b ()>, 
3119}
3120
3121impl<'b> MappedMemoryRangeBuilder<'b> {
3122    pub fn new() -> MappedMemoryRangeBuilder<'b> {
3123        MappedMemoryRangeBuilder {
3124            raw: vks::VkMappedMemoryRange::default(),
3125            _p: PhantomData,
3126        }
3127    }
3128
3129    pub unsafe fn next<'m>(mut self, next: *const c_void) -> MappedMemoryRangeBuilder<'b> {
3130        self.raw.pNext = next;
3131        self
3132    }
3133
3134    pub fn memory<'m, H>(mut self, memory: H) -> MappedMemoryRangeBuilder<'b>
3135            where H: Handle<Target=DeviceMemoryHandle> {
3136        self.raw.memory = memory.handle().0;
3137        self
3138    }
3139
3140    pub fn offset<'m>(mut self, offset: u64) -> MappedMemoryRangeBuilder<'b> {
3141        self.raw.offset = offset.into();
3142        self
3143    }
3144
3145    pub fn size<'m>(mut self, size: u64) -> MappedMemoryRangeBuilder<'b> {
3146        self.raw.size = size.into();
3147        self
3148    }
3149
3150    pub fn get_next<'a>(&'a self) -> *const c_void {
3151        self.raw.pNext
3152    }
3153
3154    pub fn get_memory<'a>(&'a self) -> vks::VkDeviceMemory {
3155        self.raw.memory
3156    }
3157
3158    pub fn get_offset<'a>(&'a self) -> u64 {
3159        self.raw.offset.into()
3160    }
3161
3162    pub fn get_size<'a>(&'a self) -> u64 {
3163        self.raw.size.into()
3164    }
3165
3166    pub fn build(self) -> MappedMemoryRange<'b> {
3167        MappedMemoryRange {
3168            raw: self.raw,
3169            _p: PhantomData,
3170        }
3171    }
3172}
3173
3174
3175/// A `VkFormatProperties`.
3176///
3177/// 
3178#[derive(Debug, Clone, Default)]
3179#[repr(C)]
3180pub struct FormatProperties {
3181    raw: vks::VkFormatProperties,
3182}
3183
3184impl FormatProperties {
3185    pub fn builder() -> FormatPropertiesBuilder {
3186        FormatPropertiesBuilder::new()
3187    }
3188
3189    pub unsafe fn from_raw(raw: vks::VkFormatProperties) -> FormatProperties {
3190        FormatProperties { raw, }
3191    }
3192
3193    pub fn linear_tiling_features<'a>(&'a self) -> FormatFeatureFlags {
3194        FormatFeatureFlags::from_bits(self.raw.linearTilingFeatures)
3195            .expect("FormatProperties::linear_tiling_features: error converting flags")
3196    }
3197
3198    pub fn optimal_tiling_features<'a>(&'a self) -> FormatFeatureFlags {
3199        FormatFeatureFlags::from_bits(self.raw.optimalTilingFeatures)
3200            .expect("FormatProperties::optimal_tiling_features: error converting flags")
3201    }
3202
3203    pub fn buffer_features<'a>(&'a self) -> FormatFeatureFlags {
3204        FormatFeatureFlags::from_bits(self.raw.bufferFeatures)
3205            .expect("FormatProperties::buffer_features: error converting flags")
3206    }
3207
3208    pub fn set_linear_tiling_features<'m>(&mut self, linear_tiling_features: FormatFeatureFlags) {
3209        self.raw.linearTilingFeatures = linear_tiling_features.bits();
3210    }
3211
3212    pub fn set_optimal_tiling_features<'m>(&mut self, optimal_tiling_features: FormatFeatureFlags) {
3213        self.raw.optimalTilingFeatures = optimal_tiling_features.bits();
3214    }
3215
3216    pub fn set_buffer_features<'m>(&mut self, buffer_features: FormatFeatureFlags) {
3217        self.raw.bufferFeatures = buffer_features.bits();
3218    }
3219
3220    pub fn as_raw(&self) -> &vks::VkFormatProperties {
3221        &self.raw
3222    }
3223}
3224
3225impl From<FormatProperties> for vks::VkFormatProperties {
3226    fn from(f: FormatProperties) -> vks::VkFormatProperties {
3227        f.raw
3228    }
3229}
3230
3231
3232/// A builder for `VkFormatProperties`.
3233///
3234/// 
3235#[derive(Debug, Clone, Default)]
3236pub struct FormatPropertiesBuilder {
3237    raw: vks::VkFormatProperties,
3238}
3239
3240impl FormatPropertiesBuilder {
3241    pub fn new() -> FormatPropertiesBuilder {
3242        FormatPropertiesBuilder {
3243            raw: vks::VkFormatProperties::default(),
3244        }
3245    }
3246
3247    pub fn linear_tiling_features<'m>(mut self, linear_tiling_features: FormatFeatureFlags) -> FormatPropertiesBuilder {
3248        self.raw.linearTilingFeatures = linear_tiling_features.bits();
3249        self
3250    }
3251
3252    pub fn optimal_tiling_features<'m>(mut self, optimal_tiling_features: FormatFeatureFlags) -> FormatPropertiesBuilder {
3253        self.raw.optimalTilingFeatures = optimal_tiling_features.bits();
3254        self
3255    }
3256
3257    pub fn buffer_features<'m>(mut self, buffer_features: FormatFeatureFlags) -> FormatPropertiesBuilder {
3258        self.raw.bufferFeatures = buffer_features.bits();
3259        self
3260    }
3261
3262    pub fn get_linear_tiling_features<'a>(&'a self) -> FormatFeatureFlags {
3263        FormatFeatureFlags::from_bits(self.raw.linearTilingFeatures)
3264            .expect("FormatProperties::linear_tiling_features: error converting flags")
3265    }
3266
3267    pub fn get_optimal_tiling_features<'a>(&'a self) -> FormatFeatureFlags {
3268        FormatFeatureFlags::from_bits(self.raw.optimalTilingFeatures)
3269            .expect("FormatProperties::optimal_tiling_features: error converting flags")
3270    }
3271
3272    pub fn get_buffer_features<'a>(&'a self) -> FormatFeatureFlags {
3273        FormatFeatureFlags::from_bits(self.raw.bufferFeatures)
3274            .expect("FormatProperties::buffer_features: error converting flags")
3275    }
3276
3277    pub fn build(self) -> FormatProperties {
3278        FormatProperties {
3279            raw: self.raw,
3280        }
3281    }
3282}
3283
3284
3285/// A `VkImageFormatProperties`.
3286///
3287/// 
3288#[derive(Debug, Clone, Default)]
3289#[repr(C)]
3290pub struct ImageFormatProperties {
3291    raw: vks::VkImageFormatProperties,
3292}
3293
3294impl ImageFormatProperties {
3295    pub fn builder() -> ImageFormatPropertiesBuilder {
3296        ImageFormatPropertiesBuilder::new()
3297    }
3298
3299    pub unsafe fn from_raw(raw: vks::VkImageFormatProperties) -> ImageFormatProperties {
3300        ImageFormatProperties { raw, }
3301    }
3302
3303    pub fn max_extent<'a>(&'a self) -> &'a Extent3d {
3304        unsafe { &*(&self.raw.maxExtent as *const vks::VkExtent3D as *const Extent3d) }
3305    }
3306
3307    pub fn max_extent_mut<'a>(&'a mut self) -> &'a mut Extent3d {
3308        unsafe { &mut *(&mut self.raw.maxExtent as *mut  vks::VkExtent3D as *mut Extent3d) }
3309    }
3310
3311    pub fn max_mip_levels<'a>(&'a self) -> u32 {
3312        self.raw.maxMipLevels.into()
3313    }
3314
3315    pub fn max_array_layers<'a>(&'a self) -> u32 {
3316        self.raw.maxArrayLayers.into()
3317    }
3318
3319    pub fn sample_counts<'a>(&'a self) -> SampleCountFlags {
3320        SampleCountFlags::from_bits(self.raw.sampleCounts)
3321            .expect("ImageFormatProperties::sample_counts: error converting flags")
3322    }
3323
3324    pub fn max_resource_size<'a>(&'a self) -> u64 {
3325        self.raw.maxResourceSize.into()
3326    }
3327
3328    pub fn set_max_extent<'m>(&mut self, max_extent: Extent3d) {
3329        self.raw.maxExtent = max_extent.raw;
3330    }
3331
3332    pub fn set_max_mip_levels<'m>(&mut self, max_mip_levels: u32) {
3333        self.raw.maxMipLevels = max_mip_levels.into();
3334    }
3335
3336    pub fn set_max_array_layers<'m>(&mut self, max_array_layers: u32) {
3337        self.raw.maxArrayLayers = max_array_layers.into();
3338    }
3339
3340    pub fn set_sample_counts<'m>(&mut self, sample_counts: SampleCountFlags) {
3341        self.raw.sampleCounts = sample_counts.bits();
3342    }
3343
3344    pub fn set_max_resource_size<'m>(&mut self, max_resource_size: u64) {
3345        self.raw.maxResourceSize = max_resource_size.into();
3346    }
3347
3348    pub fn as_raw(&self) -> &vks::VkImageFormatProperties {
3349        &self.raw
3350    }
3351}
3352
3353impl From<ImageFormatProperties> for vks::VkImageFormatProperties {
3354    fn from(f: ImageFormatProperties) -> vks::VkImageFormatProperties {
3355        f.raw
3356    }
3357}
3358
3359
3360/// A builder for `VkImageFormatProperties`.
3361///
3362/// 
3363#[derive(Debug, Clone, Default)]
3364pub struct ImageFormatPropertiesBuilder {
3365    raw: vks::VkImageFormatProperties,
3366}
3367
3368impl ImageFormatPropertiesBuilder {
3369    pub fn new() -> ImageFormatPropertiesBuilder {
3370        ImageFormatPropertiesBuilder {
3371            raw: vks::VkImageFormatProperties::default(),
3372        }
3373    }
3374
3375    pub fn max_extent<'m>(mut self, max_extent: Extent3d) -> ImageFormatPropertiesBuilder {
3376        self.raw.maxExtent = max_extent.raw;
3377        self
3378    }
3379
3380    pub fn max_mip_levels<'m>(mut self, max_mip_levels: u32) -> ImageFormatPropertiesBuilder {
3381        self.raw.maxMipLevels = max_mip_levels.into();
3382        self
3383    }
3384
3385    pub fn max_array_layers<'m>(mut self, max_array_layers: u32) -> ImageFormatPropertiesBuilder {
3386        self.raw.maxArrayLayers = max_array_layers.into();
3387        self
3388    }
3389
3390    pub fn sample_counts<'m>(mut self, sample_counts: SampleCountFlags) -> ImageFormatPropertiesBuilder {
3391        self.raw.sampleCounts = sample_counts.bits();
3392        self
3393    }
3394
3395    pub fn max_resource_size<'m>(mut self, max_resource_size: u64) -> ImageFormatPropertiesBuilder {
3396        self.raw.maxResourceSize = max_resource_size.into();
3397        self
3398    }
3399
3400    pub fn get_max_extent<'a>(&'a self) -> &'a Extent3d {
3401        unsafe { &*(&self.raw.maxExtent as *const vks::VkExtent3D as *const Extent3d) }
3402    }
3403
3404    pub fn get_max_extent_mut<'a>(&'a mut self) -> &'a mut Extent3d {
3405        unsafe { &mut *(&mut self.raw.maxExtent as *mut  vks::VkExtent3D as *mut Extent3d) }
3406    }
3407
3408    pub fn get_max_mip_levels<'a>(&'a self) -> u32 {
3409        self.raw.maxMipLevels.into()
3410    }
3411
3412    pub fn get_max_array_layers<'a>(&'a self) -> u32 {
3413        self.raw.maxArrayLayers.into()
3414    }
3415
3416    pub fn get_sample_counts<'a>(&'a self) -> SampleCountFlags {
3417        SampleCountFlags::from_bits(self.raw.sampleCounts)
3418            .expect("ImageFormatProperties::sample_counts: error converting flags")
3419    }
3420
3421    pub fn get_max_resource_size<'a>(&'a self) -> u64 {
3422        self.raw.maxResourceSize.into()
3423    }
3424
3425    pub fn build(self) -> ImageFormatProperties {
3426        ImageFormatProperties {
3427            raw: self.raw,
3428        }
3429    }
3430}
3431
3432
3433/// A `VkDescriptorBufferInfo`.
3434///
3435/// 
3436#[derive(Debug, Clone, Default)]
3437#[repr(C)]
3438pub struct DescriptorBufferInfo {
3439    raw: vks::VkDescriptorBufferInfo,
3440}
3441
3442impl DescriptorBufferInfo {
3443    pub fn builder() -> DescriptorBufferInfoBuilder {
3444        DescriptorBufferInfoBuilder::new()
3445    }
3446
3447    pub unsafe fn from_raw(raw: vks::VkDescriptorBufferInfo) -> DescriptorBufferInfo {
3448        DescriptorBufferInfo { raw, }
3449    }
3450
3451    pub fn buffer<'a>(&'a self) -> vks::VkBuffer {
3452        self.raw.buffer
3453    }
3454
3455    pub fn offset<'a>(&'a self) -> u64 {
3456        self.raw.offset.into()
3457    }
3458
3459    pub fn range<'a>(&'a self) -> u64 {
3460        self.raw.range.into()
3461    }
3462
3463    pub fn set_buffer<'m, H>(&mut self, buffer: H)
3464            where H: Handle<Target=BufferHandle> {
3465        self.raw.buffer = buffer.handle().0;
3466    }
3467
3468    pub fn set_offset<'m>(&mut self, offset: u64) {
3469        self.raw.offset = offset.into();
3470    }
3471
3472    pub fn set_range<'m>(&mut self, range: u64) {
3473        self.raw.range = range.into();
3474    }
3475
3476    pub fn as_raw(&self) -> &vks::VkDescriptorBufferInfo {
3477        &self.raw
3478    }
3479}
3480
3481impl From<DescriptorBufferInfo> for vks::VkDescriptorBufferInfo {
3482    fn from(f: DescriptorBufferInfo) -> vks::VkDescriptorBufferInfo {
3483        f.raw
3484    }
3485}
3486
3487
3488/// A builder for `VkDescriptorBufferInfo`.
3489///
3490/// 
3491#[derive(Debug, Clone, Default)]
3492pub struct DescriptorBufferInfoBuilder {
3493    raw: vks::VkDescriptorBufferInfo,
3494}
3495
3496impl DescriptorBufferInfoBuilder {
3497    pub fn new() -> DescriptorBufferInfoBuilder {
3498        DescriptorBufferInfoBuilder {
3499            raw: vks::VkDescriptorBufferInfo::default(),
3500        }
3501    }
3502
3503    pub fn buffer<'m, H>(mut self, buffer: H) -> DescriptorBufferInfoBuilder
3504            where H: Handle<Target=BufferHandle> {
3505        self.raw.buffer = buffer.handle().0;
3506        self
3507    }
3508
3509    pub fn offset<'m>(mut self, offset: u64) -> DescriptorBufferInfoBuilder {
3510        self.raw.offset = offset.into();
3511        self
3512    }
3513
3514    pub fn range<'m>(mut self, range: u64) -> DescriptorBufferInfoBuilder {
3515        self.raw.range = range.into();
3516        self
3517    }
3518
3519    pub fn get_buffer<'a>(&'a self) -> vks::VkBuffer {
3520        self.raw.buffer
3521    }
3522
3523    pub fn get_offset<'a>(&'a self) -> u64 {
3524        self.raw.offset.into()
3525    }
3526
3527    pub fn get_range<'a>(&'a self) -> u64 {
3528        self.raw.range.into()
3529    }
3530
3531    pub fn build(self) -> DescriptorBufferInfo {
3532        DescriptorBufferInfo {
3533            raw: self.raw,
3534        }
3535    }
3536}
3537
3538
3539/// A `VkDescriptorImageInfo`.
3540///
3541/// 
3542#[derive(Debug, Clone, Default)]
3543#[repr(C)]
3544pub struct DescriptorImageInfo {
3545    raw: vks::VkDescriptorImageInfo,
3546}
3547
3548impl DescriptorImageInfo {
3549    pub fn builder() -> DescriptorImageInfoBuilder {
3550        DescriptorImageInfoBuilder::new()
3551    }
3552
3553    pub unsafe fn from_raw(raw: vks::VkDescriptorImageInfo) -> DescriptorImageInfo {
3554        DescriptorImageInfo { raw, }
3555    }
3556
3557    pub fn sampler<'a>(&'a self) -> vks::VkSampler {
3558        self.raw.sampler
3559    }
3560
3561    pub fn image_view<'a>(&'a self) -> vks::VkImageView {
3562        self.raw.imageView
3563    }
3564
3565    pub fn image_layout<'a>(&'a self) -> ImageLayout {
3566        self.raw.imageLayout.into()
3567    }
3568
3569    pub fn set_sampler<'m, H>(&mut self, sampler: H)
3570            where H: Handle<Target=SamplerHandle> {
3571        self.raw.sampler = sampler.handle().0;
3572    }
3573
3574    pub fn set_image_view<'m, H>(&mut self, image_view: H)
3575            where H: Handle<Target=ImageViewHandle> {
3576        self.raw.imageView = image_view.handle().0;
3577    }
3578
3579    pub fn set_image_layout<'m>(&mut self, image_layout: ImageLayout) {
3580        self.raw.imageLayout = image_layout.into();
3581    }
3582
3583    pub fn as_raw(&self) -> &vks::VkDescriptorImageInfo {
3584        &self.raw
3585    }
3586}
3587
3588impl From<DescriptorImageInfo> for vks::VkDescriptorImageInfo {
3589    fn from(f: DescriptorImageInfo) -> vks::VkDescriptorImageInfo {
3590        f.raw
3591    }
3592}
3593
3594
3595/// A builder for `VkDescriptorImageInfo`.
3596///
3597/// 
3598#[derive(Debug, Clone, Default)]
3599pub struct DescriptorImageInfoBuilder {
3600    raw: vks::VkDescriptorImageInfo,
3601}
3602
3603impl DescriptorImageInfoBuilder {
3604    pub fn new() -> DescriptorImageInfoBuilder {
3605        DescriptorImageInfoBuilder {
3606            raw: vks::VkDescriptorImageInfo::default(),
3607        }
3608    }
3609
3610    pub fn sampler<'m, H>(mut self, sampler: H) -> DescriptorImageInfoBuilder
3611            where H: Handle<Target=SamplerHandle> {
3612        self.raw.sampler = sampler.handle().0;
3613        self
3614    }
3615
3616    pub fn image_view<'m, H>(mut self, image_view: H) -> DescriptorImageInfoBuilder
3617            where H: Handle<Target=ImageViewHandle> {
3618        self.raw.imageView = image_view.handle().0;
3619        self
3620    }
3621
3622    pub fn image_layout<'m>(mut self, image_layout: ImageLayout) -> DescriptorImageInfoBuilder {
3623        self.raw.imageLayout = image_layout.into();
3624        self
3625    }
3626
3627    pub fn get_sampler<'a>(&'a self) -> vks::VkSampler {
3628        self.raw.sampler
3629    }
3630
3631    pub fn get_image_view<'a>(&'a self) -> vks::VkImageView {
3632        self.raw.imageView
3633    }
3634
3635    pub fn get_image_layout<'a>(&'a self) -> ImageLayout {
3636        self.raw.imageLayout.into()
3637    }
3638
3639    pub fn build(self) -> DescriptorImageInfo {
3640        DescriptorImageInfo {
3641            raw: self.raw,
3642        }
3643    }
3644}
3645
3646
3647/// A `VkWriteDescriptorSet`.
3648///
3649/// 
3650#[derive(Debug, Clone, Default)]
3651#[repr(C)]
3652pub struct WriteDescriptorSet<'s> {
3653    raw: vks::VkWriteDescriptorSet,
3654    _p: PhantomData<&'s ()>,
3655}
3656
3657impl<'s> WriteDescriptorSet<'s> {
3658    pub fn builder<'b>() -> WriteDescriptorSetBuilder<'b> {
3659        WriteDescriptorSetBuilder::new()
3660    }
3661
3662    pub unsafe fn from_raw(raw: vks::VkWriteDescriptorSet) -> WriteDescriptorSet<'s> {
3663        WriteDescriptorSet { raw, _p: PhantomData }
3664    }
3665
3666    pub fn next<'a>(&'a self) -> *const c_void {
3667        self.raw.pNext
3668    }
3669
3670    pub fn dst_set<'a>(&'a self) -> vks::VkDescriptorSet {
3671        self.raw.dstSet
3672    }
3673
3674    pub fn dst_binding<'a>(&'a self) -> u32 {
3675        self.raw.dstBinding.into()
3676    }
3677
3678    pub fn dst_array_element<'a>(&'a self) -> u32 {
3679        self.raw.dstArrayElement.into()
3680    }
3681
3682    pub fn descriptor_count<'a>(&'a self) -> u32 {
3683        self.raw.descriptorCount.into()
3684    }
3685
3686    pub fn descriptor_type<'a>(&'a self) -> DescriptorType {
3687        self.raw.descriptorType.into()
3688    }
3689
3690    pub fn image_info<'a>(&'a self) -> &'a DescriptorImageInfo {
3691        unsafe { &*(self.raw.pImageInfo as *const vks::VkDescriptorImageInfo as *const _) }
3692    }
3693
3694    pub fn buffer_info<'a>(&'a self) -> &'a DescriptorBufferInfo {
3695        unsafe { &*(self.raw.pBufferInfo as *const vks::VkDescriptorBufferInfo as *const _) }
3696    }
3697
3698    pub fn texel_buffer_view<'a>(&'a self) -> &'a vks::VkBufferView {
3699        unsafe { &*(self.raw.pTexelBufferView as *const _) }
3700    }
3701
3702    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
3703        self.raw.pNext = next;
3704    }
3705
3706    pub fn set_dst_set<'m, H>(&mut self, dst_set: H)
3707            where H: Handle<Target=DescriptorSetHandle> {
3708        self.raw.dstSet = dst_set.handle().0;
3709    }
3710
3711    pub fn set_dst_binding<'m>(&mut self, dst_binding: u32) {
3712        self.raw.dstBinding = dst_binding.into();
3713    }
3714
3715    pub fn set_dst_array_element<'m>(&mut self, dst_array_element: u32) {
3716        self.raw.dstArrayElement = dst_array_element.into();
3717    }
3718
3719    pub fn set_descriptor_count<'m>(&mut self, descriptor_count: u32) {
3720        self.raw.descriptorCount = descriptor_count.into();
3721    }
3722
3723    pub fn set_descriptor_type<'m>(&mut self, descriptor_type: DescriptorType) {
3724        self.raw.descriptorType = descriptor_type.into();
3725    }
3726
3727    pub fn set_image_info<'m, 'a>(&mut self, image_info: &'a DescriptorImageInfo)
3728            where 'a: 's {
3729        self.raw.pImageInfo = image_info.as_raw();
3730    }
3731
3732    pub fn set_buffer_info<'m, 'a>(&mut self, buffer_info: &'a DescriptorBufferInfo)
3733            where 'a: 's {
3734        self.raw.pBufferInfo = buffer_info.as_raw();
3735    }
3736
3737    pub fn set_texel_buffer_view<'m, 'a, H>(&mut self, texel_buffer_view: &'a H)
3738            where H: Handle<Target=BufferViewHandle> {
3739        self.raw.pTexelBufferView = &texel_buffer_view.handle().0;
3740    }
3741
3742    pub fn as_raw(&self) -> &vks::VkWriteDescriptorSet {
3743        &self.raw
3744    }
3745}
3746
3747impl<'s> From<WriteDescriptorSet<'s>> for vks::VkWriteDescriptorSet {
3748    fn from(f: WriteDescriptorSet<'s>) -> vks::VkWriteDescriptorSet {
3749        f.raw
3750    }
3751}
3752
3753
3754/// A builder for `VkWriteDescriptorSet`.
3755///
3756/// 
3757#[derive(Debug, Clone, Default)]
3758pub struct WriteDescriptorSetBuilder<'b> {
3759    raw: vks::VkWriteDescriptorSet,
3760    _p: PhantomData<&'b ()>, 
3761}
3762
3763impl<'b> WriteDescriptorSetBuilder<'b> {
3764    pub fn new() -> WriteDescriptorSetBuilder<'b> {
3765        WriteDescriptorSetBuilder {
3766            raw: vks::VkWriteDescriptorSet::default(),
3767            _p: PhantomData,
3768        }
3769    }
3770
3771    pub unsafe fn next<'m>(mut self, next: *const c_void) -> WriteDescriptorSetBuilder<'b> {
3772        self.raw.pNext = next;
3773        self
3774    }
3775
3776    pub fn dst_set<'m, H>(mut self, dst_set: H) -> WriteDescriptorSetBuilder<'b>
3777            where H: Handle<Target=DescriptorSetHandle> {
3778        self.raw.dstSet = dst_set.handle().0;
3779        self
3780    }
3781
3782    pub fn dst_binding<'m>(mut self, dst_binding: u32) -> WriteDescriptorSetBuilder<'b> {
3783        self.raw.dstBinding = dst_binding.into();
3784        self
3785    }
3786
3787    pub fn dst_array_element<'m>(mut self, dst_array_element: u32) -> WriteDescriptorSetBuilder<'b> {
3788        self.raw.dstArrayElement = dst_array_element.into();
3789        self
3790    }
3791
3792    pub fn descriptor_count<'m>(mut self, descriptor_count: u32) -> WriteDescriptorSetBuilder<'b> {
3793        self.raw.descriptorCount = descriptor_count.into();
3794        self
3795    }
3796
3797    pub fn descriptor_type<'m>(mut self, descriptor_type: DescriptorType) -> WriteDescriptorSetBuilder<'b> {
3798        self.raw.descriptorType = descriptor_type.into();
3799        self
3800    }
3801
3802    pub fn image_info<'m, 'a>(mut self, image_info: &'a DescriptorImageInfo) -> WriteDescriptorSetBuilder<'b>
3803            where 'a: 'b {
3804        self.raw.pImageInfo = image_info.as_raw();
3805        self
3806    }
3807
3808    pub fn buffer_info<'m, 'a>(mut self, buffer_info: &'a DescriptorBufferInfo) -> WriteDescriptorSetBuilder<'b>
3809            where 'a: 'b {
3810        self.raw.pBufferInfo = buffer_info.as_raw();
3811        self
3812    }
3813
3814    pub fn texel_buffer_view<'m, 'a, H>(mut self, texel_buffer_view: &'a H) -> WriteDescriptorSetBuilder<'b>
3815            where H: Handle<Target=BufferViewHandle> {
3816        self.raw.pTexelBufferView = &texel_buffer_view.handle().0;
3817        self
3818    }
3819
3820    pub fn get_next<'a>(&'a self) -> *const c_void {
3821        self.raw.pNext
3822    }
3823
3824    pub fn get_dst_set<'a>(&'a self) -> vks::VkDescriptorSet {
3825        self.raw.dstSet
3826    }
3827
3828    pub fn get_dst_binding<'a>(&'a self) -> u32 {
3829        self.raw.dstBinding.into()
3830    }
3831
3832    pub fn get_dst_array_element<'a>(&'a self) -> u32 {
3833        self.raw.dstArrayElement.into()
3834    }
3835
3836    pub fn get_descriptor_count<'a>(&'a self) -> u32 {
3837        self.raw.descriptorCount.into()
3838    }
3839
3840    pub fn get_descriptor_type<'a>(&'a self) -> DescriptorType {
3841        self.raw.descriptorType.into()
3842    }
3843
3844    pub fn get_image_info<'a>(&'a self) -> &'a DescriptorImageInfo {
3845        unsafe { &*(self.raw.pImageInfo as *const vks::VkDescriptorImageInfo as *const _) }
3846    }
3847
3848    pub fn get_buffer_info<'a>(&'a self) -> &'a DescriptorBufferInfo {
3849        unsafe { &*(self.raw.pBufferInfo as *const vks::VkDescriptorBufferInfo as *const _) }
3850    }
3851
3852    pub fn get_texel_buffer_view<'a>(&'a self) -> &'a vks::VkBufferView {
3853        unsafe { &*(self.raw.pTexelBufferView as *const _) }
3854    }
3855
3856    pub fn build(self) -> WriteDescriptorSet<'b> {
3857        WriteDescriptorSet {
3858            raw: self.raw,
3859            _p: PhantomData,
3860        }
3861    }
3862}
3863
3864
3865/// A `VkCopyDescriptorSet`.
3866///
3867/// 
3868#[derive(Debug, Clone, Default)]
3869#[repr(C)]
3870pub struct CopyDescriptorSet<'s> {
3871    raw: vks::VkCopyDescriptorSet,
3872    _p: PhantomData<&'s ()>,
3873}
3874
3875impl<'s> CopyDescriptorSet<'s> {
3876    pub fn builder<'b>() -> CopyDescriptorSetBuilder<'b> {
3877        CopyDescriptorSetBuilder::new()
3878    }
3879
3880    pub unsafe fn from_raw(raw: vks::VkCopyDescriptorSet) -> CopyDescriptorSet<'s> {
3881        CopyDescriptorSet { raw, _p: PhantomData }
3882    }
3883
3884    pub fn next<'a>(&'a self) -> *const c_void {
3885        self.raw.pNext
3886    }
3887
3888    pub fn src_set<'a>(&'a self) -> vks::VkDescriptorSet {
3889        self.raw.srcSet
3890    }
3891
3892    pub fn src_binding<'a>(&'a self) -> u32 {
3893        self.raw.srcBinding.into()
3894    }
3895
3896    pub fn src_array_element<'a>(&'a self) -> u32 {
3897        self.raw.srcArrayElement.into()
3898    }
3899
3900    pub fn dst_set<'a>(&'a self) -> vks::VkDescriptorSet {
3901        self.raw.dstSet
3902    }
3903
3904    pub fn dst_binding<'a>(&'a self) -> u32 {
3905        self.raw.dstBinding.into()
3906    }
3907
3908    pub fn dst_array_element<'a>(&'a self) -> u32 {
3909        self.raw.dstArrayElement.into()
3910    }
3911
3912    pub fn descriptor_count<'a>(&'a self) -> u32 {
3913        self.raw.descriptorCount.into()
3914    }
3915
3916    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
3917        self.raw.pNext = next;
3918    }
3919
3920    pub fn set_src_set<'m, H>(&mut self, src_set: H)
3921            where H: Handle<Target=DescriptorSetHandle> {
3922        self.raw.srcSet = src_set.handle().0;
3923    }
3924
3925    pub fn set_src_binding<'m>(&mut self, src_binding: u32) {
3926        self.raw.srcBinding = src_binding.into();
3927    }
3928
3929    pub fn set_src_array_element<'m>(&mut self, src_array_element: u32) {
3930        self.raw.srcArrayElement = src_array_element.into();
3931    }
3932
3933    pub fn set_dst_set<'m, H>(&mut self, dst_set: H)
3934            where H: Handle<Target=DescriptorSetHandle> {
3935        self.raw.dstSet = dst_set.handle().0;
3936    }
3937
3938    pub fn set_dst_binding<'m>(&mut self, dst_binding: u32) {
3939        self.raw.dstBinding = dst_binding.into();
3940    }
3941
3942    pub fn set_dst_array_element<'m>(&mut self, dst_array_element: u32) {
3943        self.raw.dstArrayElement = dst_array_element.into();
3944    }
3945
3946    pub fn set_descriptor_count<'m>(&mut self, descriptor_count: u32) {
3947        self.raw.descriptorCount = descriptor_count.into();
3948    }
3949
3950    pub fn as_raw(&self) -> &vks::VkCopyDescriptorSet {
3951        &self.raw
3952    }
3953}
3954
3955impl<'s> From<CopyDescriptorSet<'s>> for vks::VkCopyDescriptorSet {
3956    fn from(f: CopyDescriptorSet<'s>) -> vks::VkCopyDescriptorSet {
3957        f.raw
3958    }
3959}
3960
3961
3962/// A builder for `VkCopyDescriptorSet`.
3963///
3964/// 
3965#[derive(Debug, Clone, Default)]
3966pub struct CopyDescriptorSetBuilder<'b> {
3967    raw: vks::VkCopyDescriptorSet,
3968    _p: PhantomData<&'b ()>, 
3969}
3970
3971impl<'b> CopyDescriptorSetBuilder<'b> {
3972    pub fn new() -> CopyDescriptorSetBuilder<'b> {
3973        CopyDescriptorSetBuilder {
3974            raw: vks::VkCopyDescriptorSet::default(),
3975            _p: PhantomData,
3976        }
3977    }
3978
3979    pub unsafe fn next<'m>(mut self, next: *const c_void) -> CopyDescriptorSetBuilder<'b> {
3980        self.raw.pNext = next;
3981        self
3982    }
3983
3984    pub fn src_set<'m, H>(mut self, src_set: H) -> CopyDescriptorSetBuilder<'b>
3985            where H: Handle<Target=DescriptorSetHandle> {
3986        self.raw.srcSet = src_set.handle().0;
3987        self
3988    }
3989
3990    pub fn src_binding<'m>(mut self, src_binding: u32) -> CopyDescriptorSetBuilder<'b> {
3991        self.raw.srcBinding = src_binding.into();
3992        self
3993    }
3994
3995    pub fn src_array_element<'m>(mut self, src_array_element: u32) -> CopyDescriptorSetBuilder<'b> {
3996        self.raw.srcArrayElement = src_array_element.into();
3997        self
3998    }
3999
4000    pub fn dst_set<'m, H>(mut self, dst_set: H) -> CopyDescriptorSetBuilder<'b>
4001            where H: Handle<Target=DescriptorSetHandle> {
4002        self.raw.dstSet = dst_set.handle().0;
4003        self
4004    }
4005
4006    pub fn dst_binding<'m>(mut self, dst_binding: u32) -> CopyDescriptorSetBuilder<'b> {
4007        self.raw.dstBinding = dst_binding.into();
4008        self
4009    }
4010
4011    pub fn dst_array_element<'m>(mut self, dst_array_element: u32) -> CopyDescriptorSetBuilder<'b> {
4012        self.raw.dstArrayElement = dst_array_element.into();
4013        self
4014    }
4015
4016    pub fn descriptor_count<'m>(mut self, descriptor_count: u32) -> CopyDescriptorSetBuilder<'b> {
4017        self.raw.descriptorCount = descriptor_count.into();
4018        self
4019    }
4020
4021    pub fn get_next<'a>(&'a self) -> *const c_void {
4022        self.raw.pNext
4023    }
4024
4025    pub fn get_src_set<'a>(&'a self) -> vks::VkDescriptorSet {
4026        self.raw.srcSet
4027    }
4028
4029    pub fn get_src_binding<'a>(&'a self) -> u32 {
4030        self.raw.srcBinding.into()
4031    }
4032
4033    pub fn get_src_array_element<'a>(&'a self) -> u32 {
4034        self.raw.srcArrayElement.into()
4035    }
4036
4037    pub fn get_dst_set<'a>(&'a self) -> vks::VkDescriptorSet {
4038        self.raw.dstSet
4039    }
4040
4041    pub fn get_dst_binding<'a>(&'a self) -> u32 {
4042        self.raw.dstBinding.into()
4043    }
4044
4045    pub fn get_dst_array_element<'a>(&'a self) -> u32 {
4046        self.raw.dstArrayElement.into()
4047    }
4048
4049    pub fn get_descriptor_count<'a>(&'a self) -> u32 {
4050        self.raw.descriptorCount.into()
4051    }
4052
4053    pub fn build(self) -> CopyDescriptorSet<'b> {
4054        CopyDescriptorSet {
4055            raw: self.raw,
4056            _p: PhantomData,
4057        }
4058    }
4059}
4060
4061
4062/// A `VkBufferCreateInfo`.
4063///
4064/// 
4065#[derive(Debug, Clone, Default)]
4066#[repr(C)]
4067pub struct BufferCreateInfo<'s> {
4068    raw: vks::VkBufferCreateInfo,
4069    _p: PhantomData<&'s ()>,
4070}
4071
4072impl<'s> BufferCreateInfo<'s> {
4073    pub fn builder<'b>() -> BufferCreateInfoBuilder<'b> {
4074        BufferCreateInfoBuilder::new()
4075    }
4076
4077    pub unsafe fn from_raw(raw: vks::VkBufferCreateInfo) -> BufferCreateInfo<'s> {
4078        BufferCreateInfo { raw, _p: PhantomData }
4079    }
4080
4081    pub fn next<'a>(&'a self) -> *const c_void {
4082        self.raw.pNext
4083    }
4084
4085    pub fn flags<'a>(&'a self) -> BufferCreateFlags {
4086        BufferCreateFlags::from_bits(self.raw.flags)
4087            .expect("BufferCreateInfo::flags: error converting flags")
4088    }
4089
4090    pub fn size<'a>(&'a self) -> u64 {
4091        self.raw.size.into()
4092    }
4093
4094    pub fn usage<'a>(&'a self) -> BufferUsageFlags {
4095        BufferUsageFlags::from_bits(self.raw.usage)
4096            .expect("BufferCreateInfo::usage: error converting flags")
4097    }
4098
4099    pub fn sharing_mode<'a>(&'a self) -> SharingMode {
4100        self.raw.sharingMode.into()
4101    }
4102
4103    pub fn queue_family_indices<'a>(&'a self) -> &'a [u32] {
4104        unsafe { slice::from_raw_parts(self.raw.pQueueFamilyIndices as *const _, self.raw.queueFamilyIndexCount as usize) }
4105    }
4106
4107    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
4108        self.raw.pNext = next;
4109    }
4110
4111    pub fn set_flags<'m>(&mut self, flags: BufferCreateFlags) {
4112        self.raw.flags = flags.bits();
4113    }
4114
4115    pub fn set_size<'m>(&mut self, size: u64) {
4116        self.raw.size = size.into();
4117    }
4118
4119    pub fn set_usage<'m>(&mut self, usage: BufferUsageFlags) {
4120        self.raw.usage = usage.bits();
4121    }
4122
4123    pub fn set_sharing_mode<'m>(&mut self, sharing_mode: SharingMode) {
4124        self.raw.sharingMode = sharing_mode.into();
4125    }
4126
4127    pub fn set_queue_family_indices<'m, 'a>(&mut self, queue_family_indices: &'a [u32])
4128            where 'a: 's {
4129        assert!(self.raw.queueFamilyIndexCount == 0 || self.raw.queueFamilyIndexCount == queue_family_indices.len() as _, 
4130            "count inconsistency found when specifying `BufferCreateInfo::queue_family_indices`.");
4131        self.raw.queueFamilyIndexCount = queue_family_indices.len() as _;
4132        self.raw.pQueueFamilyIndices = queue_family_indices.as_ptr() as *const u32 as *const _;
4133    }
4134
4135    pub fn as_raw(&self) -> &vks::VkBufferCreateInfo {
4136        &self.raw
4137    }
4138}
4139
4140impl<'s> From<BufferCreateInfo<'s>> for vks::VkBufferCreateInfo {
4141    fn from(f: BufferCreateInfo<'s>) -> vks::VkBufferCreateInfo {
4142        f.raw
4143    }
4144}
4145
4146
4147/// A builder for `VkBufferCreateInfo`.
4148///
4149/// 
4150#[derive(Debug, Clone, Default)]
4151pub struct BufferCreateInfoBuilder<'b> {
4152    raw: vks::VkBufferCreateInfo,
4153    _p: PhantomData<&'b ()>, 
4154}
4155
4156impl<'b> BufferCreateInfoBuilder<'b> {
4157    pub fn new() -> BufferCreateInfoBuilder<'b> {
4158        BufferCreateInfoBuilder {
4159            raw: vks::VkBufferCreateInfo::default(),
4160            _p: PhantomData,
4161        }
4162    }
4163
4164    pub unsafe fn next<'m>(mut self, next: *const c_void) -> BufferCreateInfoBuilder<'b> {
4165        self.raw.pNext = next;
4166        self
4167    }
4168
4169    pub fn flags<'m>(mut self, flags: BufferCreateFlags) -> BufferCreateInfoBuilder<'b> {
4170        self.raw.flags = flags.bits();
4171        self
4172    }
4173
4174    pub fn size<'m>(mut self, size: u64) -> BufferCreateInfoBuilder<'b> {
4175        self.raw.size = size.into();
4176        self
4177    }
4178
4179    pub fn usage<'m>(mut self, usage: BufferUsageFlags) -> BufferCreateInfoBuilder<'b> {
4180        self.raw.usage = usage.bits();
4181        self
4182    }
4183
4184    pub fn sharing_mode<'m>(mut self, sharing_mode: SharingMode) -> BufferCreateInfoBuilder<'b> {
4185        self.raw.sharingMode = sharing_mode.into();
4186        self
4187    }
4188
4189    pub fn queue_family_indices<'m, 'a>(mut self, queue_family_indices: &'a [u32]) -> BufferCreateInfoBuilder<'b>
4190            where 'a: 'b {
4191        assert!(self.raw.queueFamilyIndexCount == 0 || self.raw.queueFamilyIndexCount == queue_family_indices.len() as _, 
4192            "count inconsistency found when specifying `BufferCreateInfo::queue_family_indices`.");
4193        self.raw.queueFamilyIndexCount = queue_family_indices.len() as _;
4194        self.raw.pQueueFamilyIndices = queue_family_indices.as_ptr() as *const u32 as *const _;
4195        self
4196    }
4197
4198    pub fn get_next<'a>(&'a self) -> *const c_void {
4199        self.raw.pNext
4200    }
4201
4202    pub fn get_flags<'a>(&'a self) -> BufferCreateFlags {
4203        BufferCreateFlags::from_bits(self.raw.flags)
4204            .expect("BufferCreateInfo::flags: error converting flags")
4205    }
4206
4207    pub fn get_size<'a>(&'a self) -> u64 {
4208        self.raw.size.into()
4209    }
4210
4211    pub fn get_usage<'a>(&'a self) -> BufferUsageFlags {
4212        BufferUsageFlags::from_bits(self.raw.usage)
4213            .expect("BufferCreateInfo::usage: error converting flags")
4214    }
4215
4216    pub fn get_sharing_mode<'a>(&'a self) -> SharingMode {
4217        self.raw.sharingMode.into()
4218    }
4219
4220    pub fn get_queue_family_indices<'a>(&'a self) -> &'a [u32] {
4221        unsafe { slice::from_raw_parts(self.raw.pQueueFamilyIndices as *const _, self.raw.queueFamilyIndexCount as usize) }
4222    }
4223
4224    pub fn build(self) -> BufferCreateInfo<'b> {
4225        BufferCreateInfo {
4226            raw: self.raw,
4227            _p: PhantomData,
4228        }
4229    }
4230}
4231
4232
4233/// A `VkBufferViewCreateInfo`.
4234///
4235/// 
4236#[derive(Debug, Clone, Default)]
4237#[repr(C)]
4238pub struct BufferViewCreateInfo<'s> {
4239    raw: vks::VkBufferViewCreateInfo,
4240    _p: PhantomData<&'s ()>,
4241}
4242
4243impl<'s> BufferViewCreateInfo<'s> {
4244    pub fn builder<'b>() -> BufferViewCreateInfoBuilder<'b> {
4245        BufferViewCreateInfoBuilder::new()
4246    }
4247
4248    pub unsafe fn from_raw(raw: vks::VkBufferViewCreateInfo) -> BufferViewCreateInfo<'s> {
4249        BufferViewCreateInfo { raw, _p: PhantomData }
4250    }
4251
4252    pub fn next<'a>(&'a self) -> *const c_void {
4253        self.raw.pNext
4254    }
4255
4256    pub fn flags<'a>(&'a self) -> BufferViewCreateFlags {
4257        BufferViewCreateFlags::from_bits(self.raw.flags)
4258            .expect("BufferViewCreateInfo::flags: error converting flags")
4259    }
4260
4261    pub fn buffer<'a>(&'a self) -> vks::VkBuffer {
4262        self.raw.buffer
4263    }
4264
4265    pub fn format<'a>(&'a self) -> Format {
4266        self.raw.format.into()
4267    }
4268
4269    pub fn offset<'a>(&'a self) -> u64 {
4270        self.raw.offset.into()
4271    }
4272
4273    pub fn range<'a>(&'a self) -> u64 {
4274        self.raw.range.into()
4275    }
4276
4277    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
4278        self.raw.pNext = next;
4279    }
4280
4281    pub fn set_flags<'m>(&mut self, flags: BufferViewCreateFlags) {
4282        self.raw.flags = flags.bits();
4283    }
4284
4285    pub fn set_buffer<'m, H>(&mut self, buffer: H)
4286            where H: Handle<Target=BufferHandle> {
4287        self.raw.buffer = buffer.handle().0;
4288    }
4289
4290    pub fn set_format<'m>(&mut self, format: Format) {
4291        self.raw.format = format.into();
4292    }
4293
4294    pub fn set_offset<'m>(&mut self, offset: u64) {
4295        self.raw.offset = offset.into();
4296    }
4297
4298    pub fn set_range<'m>(&mut self, range: u64) {
4299        self.raw.range = range.into();
4300    }
4301
4302    pub fn as_raw(&self) -> &vks::VkBufferViewCreateInfo {
4303        &self.raw
4304    }
4305}
4306
4307impl<'s> From<BufferViewCreateInfo<'s>> for vks::VkBufferViewCreateInfo {
4308    fn from(f: BufferViewCreateInfo<'s>) -> vks::VkBufferViewCreateInfo {
4309        f.raw
4310    }
4311}
4312
4313
4314/// A builder for `VkBufferViewCreateInfo`.
4315///
4316/// 
4317#[derive(Debug, Clone, Default)]
4318pub struct BufferViewCreateInfoBuilder<'b> {
4319    raw: vks::VkBufferViewCreateInfo,
4320    _p: PhantomData<&'b ()>, 
4321}
4322
4323impl<'b> BufferViewCreateInfoBuilder<'b> {
4324    pub fn new() -> BufferViewCreateInfoBuilder<'b> {
4325        BufferViewCreateInfoBuilder {
4326            raw: vks::VkBufferViewCreateInfo::default(),
4327            _p: PhantomData,
4328        }
4329    }
4330
4331    pub unsafe fn next<'m>(mut self, next: *const c_void) -> BufferViewCreateInfoBuilder<'b> {
4332        self.raw.pNext = next;
4333        self
4334    }
4335
4336    pub fn flags<'m>(mut self, flags: BufferViewCreateFlags) -> BufferViewCreateInfoBuilder<'b> {
4337        self.raw.flags = flags.bits();
4338        self
4339    }
4340
4341    pub fn buffer<'m, H>(mut self, buffer: H) -> BufferViewCreateInfoBuilder<'b>
4342            where H: Handle<Target=BufferHandle> {
4343        self.raw.buffer = buffer.handle().0;
4344        self
4345    }
4346
4347    pub fn format<'m>(mut self, format: Format) -> BufferViewCreateInfoBuilder<'b> {
4348        self.raw.format = format.into();
4349        self
4350    }
4351
4352    pub fn offset<'m>(mut self, offset: u64) -> BufferViewCreateInfoBuilder<'b> {
4353        self.raw.offset = offset.into();
4354        self
4355    }
4356
4357    pub fn range<'m>(mut self, range: u64) -> BufferViewCreateInfoBuilder<'b> {
4358        self.raw.range = range.into();
4359        self
4360    }
4361
4362    pub fn get_next<'a>(&'a self) -> *const c_void {
4363        self.raw.pNext
4364    }
4365
4366    pub fn get_flags<'a>(&'a self) -> BufferViewCreateFlags {
4367        BufferViewCreateFlags::from_bits(self.raw.flags)
4368            .expect("BufferViewCreateInfo::flags: error converting flags")
4369    }
4370
4371    pub fn get_buffer<'a>(&'a self) -> vks::VkBuffer {
4372        self.raw.buffer
4373    }
4374
4375    pub fn get_format<'a>(&'a self) -> Format {
4376        self.raw.format.into()
4377    }
4378
4379    pub fn get_offset<'a>(&'a self) -> u64 {
4380        self.raw.offset.into()
4381    }
4382
4383    pub fn get_range<'a>(&'a self) -> u64 {
4384        self.raw.range.into()
4385    }
4386
4387    pub fn build(self) -> BufferViewCreateInfo<'b> {
4388        BufferViewCreateInfo {
4389            raw: self.raw,
4390            _p: PhantomData,
4391        }
4392    }
4393}
4394
4395
4396/// A `VkImageSubresource`.
4397///
4398/// 
4399#[derive(Debug, Clone, Default)]
4400#[repr(C)]
4401pub struct ImageSubresource {
4402    raw: vks::VkImageSubresource,
4403}
4404
4405impl ImageSubresource {
4406    pub fn builder() -> ImageSubresourceBuilder {
4407        ImageSubresourceBuilder::new()
4408    }
4409
4410    pub unsafe fn from_raw(raw: vks::VkImageSubresource) -> ImageSubresource {
4411        ImageSubresource { raw, }
4412    }
4413
4414    pub fn aspect_mask<'a>(&'a self) -> ImageAspectFlags {
4415        ImageAspectFlags::from_bits(self.raw.aspectMask)
4416            .expect("ImageSubresource::aspect_mask: error converting flags")
4417    }
4418
4419    pub fn mip_level<'a>(&'a self) -> u32 {
4420        self.raw.mipLevel.into()
4421    }
4422
4423    pub fn array_layer<'a>(&'a self) -> u32 {
4424        self.raw.arrayLayer.into()
4425    }
4426
4427    pub fn set_aspect_mask<'m>(&mut self, aspect_mask: ImageAspectFlags) {
4428        self.raw.aspectMask = aspect_mask.bits();
4429    }
4430
4431    pub fn set_mip_level<'m>(&mut self, mip_level: u32) {
4432        self.raw.mipLevel = mip_level.into();
4433    }
4434
4435    pub fn set_array_layer<'m>(&mut self, array_layer: u32) {
4436        self.raw.arrayLayer = array_layer.into();
4437    }
4438
4439    pub fn as_raw(&self) -> &vks::VkImageSubresource {
4440        &self.raw
4441    }
4442}
4443
4444impl From<ImageSubresource> for vks::VkImageSubresource {
4445    fn from(f: ImageSubresource) -> vks::VkImageSubresource {
4446        f.raw
4447    }
4448}
4449
4450
4451/// A builder for `VkImageSubresource`.
4452///
4453/// 
4454#[derive(Debug, Clone, Default)]
4455pub struct ImageSubresourceBuilder {
4456    raw: vks::VkImageSubresource,
4457}
4458
4459impl ImageSubresourceBuilder {
4460    pub fn new() -> ImageSubresourceBuilder {
4461        ImageSubresourceBuilder {
4462            raw: vks::VkImageSubresource::default(),
4463        }
4464    }
4465
4466    pub fn aspect_mask<'m>(mut self, aspect_mask: ImageAspectFlags) -> ImageSubresourceBuilder {
4467        self.raw.aspectMask = aspect_mask.bits();
4468        self
4469    }
4470
4471    pub fn mip_level<'m>(mut self, mip_level: u32) -> ImageSubresourceBuilder {
4472        self.raw.mipLevel = mip_level.into();
4473        self
4474    }
4475
4476    pub fn array_layer<'m>(mut self, array_layer: u32) -> ImageSubresourceBuilder {
4477        self.raw.arrayLayer = array_layer.into();
4478        self
4479    }
4480
4481    pub fn get_aspect_mask<'a>(&'a self) -> ImageAspectFlags {
4482        ImageAspectFlags::from_bits(self.raw.aspectMask)
4483            .expect("ImageSubresource::aspect_mask: error converting flags")
4484    }
4485
4486    pub fn get_mip_level<'a>(&'a self) -> u32 {
4487        self.raw.mipLevel.into()
4488    }
4489
4490    pub fn get_array_layer<'a>(&'a self) -> u32 {
4491        self.raw.arrayLayer.into()
4492    }
4493
4494    pub fn build(self) -> ImageSubresource {
4495        ImageSubresource {
4496            raw: self.raw,
4497        }
4498    }
4499}
4500
4501
4502/// A `VkImageSubresourceLayers`.
4503///
4504/// 
4505#[derive(Debug, Clone, Default)]
4506#[repr(C)]
4507pub struct ImageSubresourceLayers {
4508    raw: vks::VkImageSubresourceLayers,
4509}
4510
4511impl ImageSubresourceLayers {
4512    pub fn builder() -> ImageSubresourceLayersBuilder {
4513        ImageSubresourceLayersBuilder::new()
4514    }
4515
4516    pub unsafe fn from_raw(raw: vks::VkImageSubresourceLayers) -> ImageSubresourceLayers {
4517        ImageSubresourceLayers { raw, }
4518    }
4519
4520    pub fn aspect_mask<'a>(&'a self) -> ImageAspectFlags {
4521        ImageAspectFlags::from_bits(self.raw.aspectMask)
4522            .expect("ImageSubresourceLayers::aspect_mask: error converting flags")
4523    }
4524
4525    pub fn mip_level<'a>(&'a self) -> u32 {
4526        self.raw.mipLevel.into()
4527    }
4528
4529    pub fn base_array_layer<'a>(&'a self) -> u32 {
4530        self.raw.baseArrayLayer.into()
4531    }
4532
4533    pub fn layer_count<'a>(&'a self) -> u32 {
4534        self.raw.layerCount.into()
4535    }
4536
4537    pub fn set_aspect_mask<'m>(&mut self, aspect_mask: ImageAspectFlags) {
4538        self.raw.aspectMask = aspect_mask.bits();
4539    }
4540
4541    pub fn set_mip_level<'m>(&mut self, mip_level: u32) {
4542        self.raw.mipLevel = mip_level.into();
4543    }
4544
4545    pub fn set_base_array_layer<'m>(&mut self, base_array_layer: u32) {
4546        self.raw.baseArrayLayer = base_array_layer.into();
4547    }
4548
4549    pub fn set_layer_count<'m>(&mut self, layer_count: u32) {
4550        self.raw.layerCount = layer_count.into();
4551    }
4552
4553    pub fn as_raw(&self) -> &vks::VkImageSubresourceLayers {
4554        &self.raw
4555    }
4556}
4557
4558impl From<ImageSubresourceLayers> for vks::VkImageSubresourceLayers {
4559    fn from(f: ImageSubresourceLayers) -> vks::VkImageSubresourceLayers {
4560        f.raw
4561    }
4562}
4563
4564
4565/// A builder for `VkImageSubresourceLayers`.
4566///
4567/// 
4568#[derive(Debug, Clone, Default)]
4569pub struct ImageSubresourceLayersBuilder {
4570    raw: vks::VkImageSubresourceLayers,
4571}
4572
4573impl ImageSubresourceLayersBuilder {
4574    pub fn new() -> ImageSubresourceLayersBuilder {
4575        ImageSubresourceLayersBuilder {
4576            raw: vks::VkImageSubresourceLayers::default(),
4577        }
4578    }
4579
4580    pub fn aspect_mask<'m>(mut self, aspect_mask: ImageAspectFlags) -> ImageSubresourceLayersBuilder {
4581        self.raw.aspectMask = aspect_mask.bits();
4582        self
4583    }
4584
4585    pub fn mip_level<'m>(mut self, mip_level: u32) -> ImageSubresourceLayersBuilder {
4586        self.raw.mipLevel = mip_level.into();
4587        self
4588    }
4589
4590    pub fn base_array_layer<'m>(mut self, base_array_layer: u32) -> ImageSubresourceLayersBuilder {
4591        self.raw.baseArrayLayer = base_array_layer.into();
4592        self
4593    }
4594
4595    pub fn layer_count<'m>(mut self, layer_count: u32) -> ImageSubresourceLayersBuilder {
4596        self.raw.layerCount = layer_count.into();
4597        self
4598    }
4599
4600    pub fn get_aspect_mask<'a>(&'a self) -> ImageAspectFlags {
4601        ImageAspectFlags::from_bits(self.raw.aspectMask)
4602            .expect("ImageSubresourceLayers::aspect_mask: error converting flags")
4603    }
4604
4605    pub fn get_mip_level<'a>(&'a self) -> u32 {
4606        self.raw.mipLevel.into()
4607    }
4608
4609    pub fn get_base_array_layer<'a>(&'a self) -> u32 {
4610        self.raw.baseArrayLayer.into()
4611    }
4612
4613    pub fn get_layer_count<'a>(&'a self) -> u32 {
4614        self.raw.layerCount.into()
4615    }
4616
4617    pub fn build(self) -> ImageSubresourceLayers {
4618        ImageSubresourceLayers {
4619            raw: self.raw,
4620        }
4621    }
4622}
4623
4624
4625/// A `VkImageSubresourceRange`.
4626///
4627/// 
4628#[derive(Debug, Clone, Default)]
4629#[repr(C)]
4630pub struct ImageSubresourceRange {
4631    raw: vks::VkImageSubresourceRange,
4632}
4633
4634impl ImageSubresourceRange {
4635    pub fn builder() -> ImageSubresourceRangeBuilder {
4636        ImageSubresourceRangeBuilder::new()
4637    }
4638
4639    pub unsafe fn from_raw(raw: vks::VkImageSubresourceRange) -> ImageSubresourceRange {
4640        ImageSubresourceRange { raw, }
4641    }
4642
4643    pub fn aspect_mask<'a>(&'a self) -> ImageAspectFlags {
4644        ImageAspectFlags::from_bits(self.raw.aspectMask)
4645            .expect("ImageSubresourceRange::aspect_mask: error converting flags")
4646    }
4647
4648    pub fn base_mip_level<'a>(&'a self) -> u32 {
4649        self.raw.baseMipLevel.into()
4650    }
4651
4652    pub fn level_count<'a>(&'a self) -> u32 {
4653        self.raw.levelCount.into()
4654    }
4655
4656    pub fn base_array_layer<'a>(&'a self) -> u32 {
4657        self.raw.baseArrayLayer.into()
4658    }
4659
4660    pub fn layer_count<'a>(&'a self) -> u32 {
4661        self.raw.layerCount.into()
4662    }
4663
4664    pub fn set_aspect_mask<'m>(&mut self, aspect_mask: ImageAspectFlags) {
4665        self.raw.aspectMask = aspect_mask.bits();
4666    }
4667
4668    pub fn set_base_mip_level<'m>(&mut self, base_mip_level: u32) {
4669        self.raw.baseMipLevel = base_mip_level.into();
4670    }
4671
4672    pub fn set_level_count<'m>(&mut self, level_count: u32) {
4673        self.raw.levelCount = level_count.into();
4674    }
4675
4676    pub fn set_base_array_layer<'m>(&mut self, base_array_layer: u32) {
4677        self.raw.baseArrayLayer = base_array_layer.into();
4678    }
4679
4680    pub fn set_layer_count<'m>(&mut self, layer_count: u32) {
4681        self.raw.layerCount = layer_count.into();
4682    }
4683
4684    pub fn as_raw(&self) -> &vks::VkImageSubresourceRange {
4685        &self.raw
4686    }
4687}
4688
4689impl From<ImageSubresourceRange> for vks::VkImageSubresourceRange {
4690    fn from(f: ImageSubresourceRange) -> vks::VkImageSubresourceRange {
4691        f.raw
4692    }
4693}
4694
4695
4696/// A builder for `VkImageSubresourceRange`.
4697///
4698/// 
4699#[derive(Debug, Clone, Default)]
4700pub struct ImageSubresourceRangeBuilder {
4701    raw: vks::VkImageSubresourceRange,
4702}
4703
4704impl ImageSubresourceRangeBuilder {
4705    pub fn new() -> ImageSubresourceRangeBuilder {
4706        ImageSubresourceRangeBuilder {
4707            raw: vks::VkImageSubresourceRange::default(),
4708        }
4709    }
4710
4711    pub fn aspect_mask<'m>(mut self, aspect_mask: ImageAspectFlags) -> ImageSubresourceRangeBuilder {
4712        self.raw.aspectMask = aspect_mask.bits();
4713        self
4714    }
4715
4716    pub fn base_mip_level<'m>(mut self, base_mip_level: u32) -> ImageSubresourceRangeBuilder {
4717        self.raw.baseMipLevel = base_mip_level.into();
4718        self
4719    }
4720
4721    pub fn level_count<'m>(mut self, level_count: u32) -> ImageSubresourceRangeBuilder {
4722        self.raw.levelCount = level_count.into();
4723        self
4724    }
4725
4726    pub fn base_array_layer<'m>(mut self, base_array_layer: u32) -> ImageSubresourceRangeBuilder {
4727        self.raw.baseArrayLayer = base_array_layer.into();
4728        self
4729    }
4730
4731    pub fn layer_count<'m>(mut self, layer_count: u32) -> ImageSubresourceRangeBuilder {
4732        self.raw.layerCount = layer_count.into();
4733        self
4734    }
4735
4736    pub fn get_aspect_mask<'a>(&'a self) -> ImageAspectFlags {
4737        ImageAspectFlags::from_bits(self.raw.aspectMask)
4738            .expect("ImageSubresourceRange::aspect_mask: error converting flags")
4739    }
4740
4741    pub fn get_base_mip_level<'a>(&'a self) -> u32 {
4742        self.raw.baseMipLevel.into()
4743    }
4744
4745    pub fn get_level_count<'a>(&'a self) -> u32 {
4746        self.raw.levelCount.into()
4747    }
4748
4749    pub fn get_base_array_layer<'a>(&'a self) -> u32 {
4750        self.raw.baseArrayLayer.into()
4751    }
4752
4753    pub fn get_layer_count<'a>(&'a self) -> u32 {
4754        self.raw.layerCount.into()
4755    }
4756
4757    pub fn build(self) -> ImageSubresourceRange {
4758        ImageSubresourceRange {
4759            raw: self.raw,
4760        }
4761    }
4762}
4763
4764
4765/// A `VkMemoryBarrier`.
4766///
4767/// 
4768#[derive(Debug, Clone, Default)]
4769#[repr(C)]
4770pub struct MemoryBarrier<'s> {
4771    raw: vks::VkMemoryBarrier,
4772    _p: PhantomData<&'s ()>,
4773}
4774
4775impl<'s> MemoryBarrier<'s> {
4776    pub fn builder<'b>() -> MemoryBarrierBuilder<'b> {
4777        MemoryBarrierBuilder::new()
4778    }
4779
4780    pub unsafe fn from_raw(raw: vks::VkMemoryBarrier) -> MemoryBarrier<'s> {
4781        MemoryBarrier { raw, _p: PhantomData }
4782    }
4783
4784    pub fn next<'a>(&'a self) -> *const c_void {
4785        self.raw.pNext
4786    }
4787
4788    pub fn src_access_mask<'a>(&'a self) -> AccessFlags {
4789        AccessFlags::from_bits(self.raw.srcAccessMask)
4790            .expect("MemoryBarrier::src_access_mask: error converting flags")
4791    }
4792
4793    pub fn dst_access_mask<'a>(&'a self) -> AccessFlags {
4794        AccessFlags::from_bits(self.raw.dstAccessMask)
4795            .expect("MemoryBarrier::dst_access_mask: error converting flags")
4796    }
4797
4798    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
4799        self.raw.pNext = next;
4800    }
4801
4802    pub fn set_src_access_mask<'m>(&mut self, src_access_mask: AccessFlags) {
4803        self.raw.srcAccessMask = src_access_mask.bits();
4804    }
4805
4806    pub fn set_dst_access_mask<'m>(&mut self, dst_access_mask: AccessFlags) {
4807        self.raw.dstAccessMask = dst_access_mask.bits();
4808    }
4809
4810    pub fn as_raw(&self) -> &vks::VkMemoryBarrier {
4811        &self.raw
4812    }
4813}
4814
4815impl<'s> From<MemoryBarrier<'s>> for vks::VkMemoryBarrier {
4816    fn from(f: MemoryBarrier<'s>) -> vks::VkMemoryBarrier {
4817        f.raw
4818    }
4819}
4820
4821
4822/// A builder for `VkMemoryBarrier`.
4823///
4824/// 
4825#[derive(Debug, Clone, Default)]
4826pub struct MemoryBarrierBuilder<'b> {
4827    raw: vks::VkMemoryBarrier,
4828    _p: PhantomData<&'b ()>, 
4829}
4830
4831impl<'b> MemoryBarrierBuilder<'b> {
4832    pub fn new() -> MemoryBarrierBuilder<'b> {
4833        MemoryBarrierBuilder {
4834            raw: vks::VkMemoryBarrier::default(),
4835            _p: PhantomData,
4836        }
4837    }
4838
4839    pub unsafe fn next<'m>(mut self, next: *const c_void) -> MemoryBarrierBuilder<'b> {
4840        self.raw.pNext = next;
4841        self
4842    }
4843
4844    pub fn src_access_mask<'m>(mut self, src_access_mask: AccessFlags) -> MemoryBarrierBuilder<'b> {
4845        self.raw.srcAccessMask = src_access_mask.bits();
4846        self
4847    }
4848
4849    pub fn dst_access_mask<'m>(mut self, dst_access_mask: AccessFlags) -> MemoryBarrierBuilder<'b> {
4850        self.raw.dstAccessMask = dst_access_mask.bits();
4851        self
4852    }
4853
4854    pub fn get_next<'a>(&'a self) -> *const c_void {
4855        self.raw.pNext
4856    }
4857
4858    pub fn get_src_access_mask<'a>(&'a self) -> AccessFlags {
4859        AccessFlags::from_bits(self.raw.srcAccessMask)
4860            .expect("MemoryBarrier::src_access_mask: error converting flags")
4861    }
4862
4863    pub fn get_dst_access_mask<'a>(&'a self) -> AccessFlags {
4864        AccessFlags::from_bits(self.raw.dstAccessMask)
4865            .expect("MemoryBarrier::dst_access_mask: error converting flags")
4866    }
4867
4868    pub fn build(self) -> MemoryBarrier<'b> {
4869        MemoryBarrier {
4870            raw: self.raw,
4871            _p: PhantomData,
4872        }
4873    }
4874}
4875
4876
4877/// A `VkBufferMemoryBarrier`.
4878///
4879/// 
4880#[derive(Debug, Clone, Default)]
4881#[repr(C)]
4882pub struct BufferMemoryBarrier<'s> {
4883    raw: vks::VkBufferMemoryBarrier,
4884    _p: PhantomData<&'s ()>,
4885}
4886
4887impl<'s> BufferMemoryBarrier<'s> {
4888    pub fn builder<'b>() -> BufferMemoryBarrierBuilder<'b> {
4889        BufferMemoryBarrierBuilder::new()
4890    }
4891
4892    pub unsafe fn from_raw(raw: vks::VkBufferMemoryBarrier) -> BufferMemoryBarrier<'s> {
4893        BufferMemoryBarrier { raw, _p: PhantomData }
4894    }
4895
4896    pub fn next<'a>(&'a self) -> *const c_void {
4897        self.raw.pNext
4898    }
4899
4900    pub fn src_access_mask<'a>(&'a self) -> AccessFlags {
4901        AccessFlags::from_bits(self.raw.srcAccessMask)
4902            .expect("BufferMemoryBarrier::src_access_mask: error converting flags")
4903    }
4904
4905    pub fn dst_access_mask<'a>(&'a self) -> AccessFlags {
4906        AccessFlags::from_bits(self.raw.dstAccessMask)
4907            .expect("BufferMemoryBarrier::dst_access_mask: error converting flags")
4908    }
4909
4910    pub fn src_queue_family_index<'a>(&'a self) -> u32 {
4911        self.raw.srcQueueFamilyIndex.into()
4912    }
4913
4914    pub fn dst_queue_family_index<'a>(&'a self) -> u32 {
4915        self.raw.dstQueueFamilyIndex.into()
4916    }
4917
4918    pub fn buffer<'a>(&'a self) -> vks::VkBuffer {
4919        self.raw.buffer
4920    }
4921
4922    pub fn offset<'a>(&'a self) -> u64 {
4923        self.raw.offset.into()
4924    }
4925
4926    pub fn size<'a>(&'a self) -> u64 {
4927        self.raw.size.into()
4928    }
4929
4930    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
4931        self.raw.pNext = next;
4932    }
4933
4934    pub fn set_src_access_mask<'m>(&mut self, src_access_mask: AccessFlags) {
4935        self.raw.srcAccessMask = src_access_mask.bits();
4936    }
4937
4938    pub fn set_dst_access_mask<'m>(&mut self, dst_access_mask: AccessFlags) {
4939        self.raw.dstAccessMask = dst_access_mask.bits();
4940    }
4941
4942    pub fn set_src_queue_family_index<'m>(&mut self, src_queue_family_index: u32) {
4943        self.raw.srcQueueFamilyIndex = src_queue_family_index.into();
4944    }
4945
4946    pub fn set_dst_queue_family_index<'m>(&mut self, dst_queue_family_index: u32) {
4947        self.raw.dstQueueFamilyIndex = dst_queue_family_index.into();
4948    }
4949
4950    pub fn set_buffer<'m, H>(&mut self, buffer: H)
4951            where H: Handle<Target=BufferHandle> {
4952        self.raw.buffer = buffer.handle().0;
4953    }
4954
4955    pub fn set_offset<'m>(&mut self, offset: u64) {
4956        self.raw.offset = offset.into();
4957    }
4958
4959    pub fn set_size<'m>(&mut self, size: u64) {
4960        self.raw.size = size.into();
4961    }
4962
4963    pub fn as_raw(&self) -> &vks::VkBufferMemoryBarrier {
4964        &self.raw
4965    }
4966}
4967
4968impl<'s> From<BufferMemoryBarrier<'s>> for vks::VkBufferMemoryBarrier {
4969    fn from(f: BufferMemoryBarrier<'s>) -> vks::VkBufferMemoryBarrier {
4970        f.raw
4971    }
4972}
4973
4974
4975/// A builder for `VkBufferMemoryBarrier`.
4976///
4977/// 
4978#[derive(Debug, Clone, Default)]
4979pub struct BufferMemoryBarrierBuilder<'b> {
4980    raw: vks::VkBufferMemoryBarrier,
4981    _p: PhantomData<&'b ()>, 
4982}
4983
4984impl<'b> BufferMemoryBarrierBuilder<'b> {
4985    pub fn new() -> BufferMemoryBarrierBuilder<'b> {
4986        BufferMemoryBarrierBuilder {
4987            raw: vks::VkBufferMemoryBarrier::default(),
4988            _p: PhantomData,
4989        }
4990    }
4991
4992    pub unsafe fn next<'m>(mut self, next: *const c_void) -> BufferMemoryBarrierBuilder<'b> {
4993        self.raw.pNext = next;
4994        self
4995    }
4996
4997    pub fn src_access_mask<'m>(mut self, src_access_mask: AccessFlags) -> BufferMemoryBarrierBuilder<'b> {
4998        self.raw.srcAccessMask = src_access_mask.bits();
4999        self
5000    }
5001
5002    pub fn dst_access_mask<'m>(mut self, dst_access_mask: AccessFlags) -> BufferMemoryBarrierBuilder<'b> {
5003        self.raw.dstAccessMask = dst_access_mask.bits();
5004        self
5005    }
5006
5007    pub fn src_queue_family_index<'m>(mut self, src_queue_family_index: u32) -> BufferMemoryBarrierBuilder<'b> {
5008        self.raw.srcQueueFamilyIndex = src_queue_family_index.into();
5009        self
5010    }
5011
5012    pub fn dst_queue_family_index<'m>(mut self, dst_queue_family_index: u32) -> BufferMemoryBarrierBuilder<'b> {
5013        self.raw.dstQueueFamilyIndex = dst_queue_family_index.into();
5014        self
5015    }
5016
5017    pub fn buffer<'m, H>(mut self, buffer: H) -> BufferMemoryBarrierBuilder<'b>
5018            where H: Handle<Target=BufferHandle> {
5019        self.raw.buffer = buffer.handle().0;
5020        self
5021    }
5022
5023    pub fn offset<'m>(mut self, offset: u64) -> BufferMemoryBarrierBuilder<'b> {
5024        self.raw.offset = offset.into();
5025        self
5026    }
5027
5028    pub fn size<'m>(mut self, size: u64) -> BufferMemoryBarrierBuilder<'b> {
5029        self.raw.size = size.into();
5030        self
5031    }
5032
5033    pub fn get_next<'a>(&'a self) -> *const c_void {
5034        self.raw.pNext
5035    }
5036
5037    pub fn get_src_access_mask<'a>(&'a self) -> AccessFlags {
5038        AccessFlags::from_bits(self.raw.srcAccessMask)
5039            .expect("BufferMemoryBarrier::src_access_mask: error converting flags")
5040    }
5041
5042    pub fn get_dst_access_mask<'a>(&'a self) -> AccessFlags {
5043        AccessFlags::from_bits(self.raw.dstAccessMask)
5044            .expect("BufferMemoryBarrier::dst_access_mask: error converting flags")
5045    }
5046
5047    pub fn get_src_queue_family_index<'a>(&'a self) -> u32 {
5048        self.raw.srcQueueFamilyIndex.into()
5049    }
5050
5051    pub fn get_dst_queue_family_index<'a>(&'a self) -> u32 {
5052        self.raw.dstQueueFamilyIndex.into()
5053    }
5054
5055    pub fn get_buffer<'a>(&'a self) -> vks::VkBuffer {
5056        self.raw.buffer
5057    }
5058
5059    pub fn get_offset<'a>(&'a self) -> u64 {
5060        self.raw.offset.into()
5061    }
5062
5063    pub fn get_size<'a>(&'a self) -> u64 {
5064        self.raw.size.into()
5065    }
5066
5067    pub fn build(self) -> BufferMemoryBarrier<'b> {
5068        BufferMemoryBarrier {
5069            raw: self.raw,
5070            _p: PhantomData,
5071        }
5072    }
5073}
5074
5075
5076/// A `VkImageMemoryBarrier`.
5077///
5078/// 
5079#[derive(Debug, Clone, Default)]
5080#[repr(C)]
5081pub struct ImageMemoryBarrier<'s> {
5082    raw: vks::VkImageMemoryBarrier,
5083    _p: PhantomData<&'s ()>,
5084}
5085
5086impl<'s> ImageMemoryBarrier<'s> {
5087    pub fn builder<'b>() -> ImageMemoryBarrierBuilder<'b> {
5088        ImageMemoryBarrierBuilder::new()
5089    }
5090
5091    pub unsafe fn from_raw(raw: vks::VkImageMemoryBarrier) -> ImageMemoryBarrier<'s> {
5092        ImageMemoryBarrier { raw, _p: PhantomData }
5093    }
5094
5095    pub fn next<'a>(&'a self) -> *const c_void {
5096        self.raw.pNext
5097    }
5098
5099    pub fn src_access_mask<'a>(&'a self) -> AccessFlags {
5100        AccessFlags::from_bits(self.raw.srcAccessMask)
5101            .expect("ImageMemoryBarrier::src_access_mask: error converting flags")
5102    }
5103
5104    pub fn dst_access_mask<'a>(&'a self) -> AccessFlags {
5105        AccessFlags::from_bits(self.raw.dstAccessMask)
5106            .expect("ImageMemoryBarrier::dst_access_mask: error converting flags")
5107    }
5108
5109    pub fn old_layout<'a>(&'a self) -> ImageLayout {
5110        self.raw.oldLayout.into()
5111    }
5112
5113    pub fn new_layout<'a>(&'a self) -> ImageLayout {
5114        self.raw.newLayout.into()
5115    }
5116
5117    pub fn src_queue_family_index<'a>(&'a self) -> u32 {
5118        self.raw.srcQueueFamilyIndex.into()
5119    }
5120
5121    pub fn dst_queue_family_index<'a>(&'a self) -> u32 {
5122        self.raw.dstQueueFamilyIndex.into()
5123    }
5124
5125    pub fn image<'a>(&'a self) -> vks::VkImage {
5126        self.raw.image
5127    }
5128
5129    pub fn subresource_range<'a>(&'a self) -> &'a ImageSubresourceRange {
5130        unsafe { &*(&self.raw.subresourceRange as *const vks::VkImageSubresourceRange as *const ImageSubresourceRange) }
5131    }
5132
5133    pub fn subresource_range_mut<'a>(&'a mut self) -> &'a mut ImageSubresourceRange {
5134        unsafe { &mut *(&mut self.raw.subresourceRange as *mut  vks::VkImageSubresourceRange as *mut ImageSubresourceRange) }
5135    }
5136
5137    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
5138        self.raw.pNext = next;
5139    }
5140
5141    pub fn set_src_access_mask<'m>(&mut self, src_access_mask: AccessFlags) {
5142        self.raw.srcAccessMask = src_access_mask.bits();
5143    }
5144
5145    pub fn set_dst_access_mask<'m>(&mut self, dst_access_mask: AccessFlags) {
5146        self.raw.dstAccessMask = dst_access_mask.bits();
5147    }
5148
5149    pub fn set_old_layout<'m>(&mut self, old_layout: ImageLayout) {
5150        self.raw.oldLayout = old_layout.into();
5151    }
5152
5153    pub fn set_new_layout<'m>(&mut self, new_layout: ImageLayout) {
5154        self.raw.newLayout = new_layout.into();
5155    }
5156
5157    pub fn set_src_queue_family_index<'m>(&mut self, src_queue_family_index: u32) {
5158        self.raw.srcQueueFamilyIndex = src_queue_family_index.into();
5159    }
5160
5161    pub fn set_dst_queue_family_index<'m>(&mut self, dst_queue_family_index: u32) {
5162        self.raw.dstQueueFamilyIndex = dst_queue_family_index.into();
5163    }
5164
5165    pub fn set_image<'m, H>(&mut self, image: H)
5166            where H: Handle<Target=ImageHandle> {
5167        self.raw.image = image.handle().0;
5168    }
5169
5170    pub fn set_subresource_range<'m>(&mut self, subresource_range: ImageSubresourceRange) {
5171        self.raw.subresourceRange = subresource_range.raw;
5172    }
5173
5174    pub fn as_raw(&self) -> &vks::VkImageMemoryBarrier {
5175        &self.raw
5176    }
5177}
5178
5179impl<'s> From<ImageMemoryBarrier<'s>> for vks::VkImageMemoryBarrier {
5180    fn from(f: ImageMemoryBarrier<'s>) -> vks::VkImageMemoryBarrier {
5181        f.raw
5182    }
5183}
5184
5185
5186/// A builder for `VkImageMemoryBarrier`.
5187///
5188/// 
5189#[derive(Debug, Clone, Default)]
5190pub struct ImageMemoryBarrierBuilder<'b> {
5191    raw: vks::VkImageMemoryBarrier,
5192    _p: PhantomData<&'b ()>, 
5193}
5194
5195impl<'b> ImageMemoryBarrierBuilder<'b> {
5196    pub fn new() -> ImageMemoryBarrierBuilder<'b> {
5197        ImageMemoryBarrierBuilder {
5198            raw: vks::VkImageMemoryBarrier::default(),
5199            _p: PhantomData,
5200        }
5201    }
5202
5203    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ImageMemoryBarrierBuilder<'b> {
5204        self.raw.pNext = next;
5205        self
5206    }
5207
5208    pub fn src_access_mask<'m>(mut self, src_access_mask: AccessFlags) -> ImageMemoryBarrierBuilder<'b> {
5209        self.raw.srcAccessMask = src_access_mask.bits();
5210        self
5211    }
5212
5213    pub fn dst_access_mask<'m>(mut self, dst_access_mask: AccessFlags) -> ImageMemoryBarrierBuilder<'b> {
5214        self.raw.dstAccessMask = dst_access_mask.bits();
5215        self
5216    }
5217
5218    pub fn old_layout<'m>(mut self, old_layout: ImageLayout) -> ImageMemoryBarrierBuilder<'b> {
5219        self.raw.oldLayout = old_layout.into();
5220        self
5221    }
5222
5223    pub fn new_layout<'m>(mut self, new_layout: ImageLayout) -> ImageMemoryBarrierBuilder<'b> {
5224        self.raw.newLayout = new_layout.into();
5225        self
5226    }
5227
5228    pub fn src_queue_family_index<'m>(mut self, src_queue_family_index: u32) -> ImageMemoryBarrierBuilder<'b> {
5229        self.raw.srcQueueFamilyIndex = src_queue_family_index.into();
5230        self
5231    }
5232
5233    pub fn dst_queue_family_index<'m>(mut self, dst_queue_family_index: u32) -> ImageMemoryBarrierBuilder<'b> {
5234        self.raw.dstQueueFamilyIndex = dst_queue_family_index.into();
5235        self
5236    }
5237
5238    pub fn image<'m, H>(mut self, image: H) -> ImageMemoryBarrierBuilder<'b>
5239            where H: Handle<Target=ImageHandle> {
5240        self.raw.image = image.handle().0;
5241        self
5242    }
5243
5244    pub fn subresource_range<'m>(mut self, subresource_range: ImageSubresourceRange) -> ImageMemoryBarrierBuilder<'b> {
5245        self.raw.subresourceRange = subresource_range.raw;
5246        self
5247    }
5248
5249    pub fn get_next<'a>(&'a self) -> *const c_void {
5250        self.raw.pNext
5251    }
5252
5253    pub fn get_src_access_mask<'a>(&'a self) -> AccessFlags {
5254        AccessFlags::from_bits(self.raw.srcAccessMask)
5255            .expect("ImageMemoryBarrier::src_access_mask: error converting flags")
5256    }
5257
5258    pub fn get_dst_access_mask<'a>(&'a self) -> AccessFlags {
5259        AccessFlags::from_bits(self.raw.dstAccessMask)
5260            .expect("ImageMemoryBarrier::dst_access_mask: error converting flags")
5261    }
5262
5263    pub fn get_old_layout<'a>(&'a self) -> ImageLayout {
5264        self.raw.oldLayout.into()
5265    }
5266
5267    pub fn get_new_layout<'a>(&'a self) -> ImageLayout {
5268        self.raw.newLayout.into()
5269    }
5270
5271    pub fn get_src_queue_family_index<'a>(&'a self) -> u32 {
5272        self.raw.srcQueueFamilyIndex.into()
5273    }
5274
5275    pub fn get_dst_queue_family_index<'a>(&'a self) -> u32 {
5276        self.raw.dstQueueFamilyIndex.into()
5277    }
5278
5279    pub fn get_image<'a>(&'a self) -> vks::VkImage {
5280        self.raw.image
5281    }
5282
5283    pub fn get_subresource_range<'a>(&'a self) -> &'a ImageSubresourceRange {
5284        unsafe { &*(&self.raw.subresourceRange as *const vks::VkImageSubresourceRange as *const ImageSubresourceRange) }
5285    }
5286
5287    pub fn get_subresource_range_mut<'a>(&'a mut self) -> &'a mut ImageSubresourceRange {
5288        unsafe { &mut *(&mut self.raw.subresourceRange as *mut  vks::VkImageSubresourceRange as *mut ImageSubresourceRange) }
5289    }
5290
5291    pub fn build(self) -> ImageMemoryBarrier<'b> {
5292        ImageMemoryBarrier {
5293            raw: self.raw,
5294            _p: PhantomData,
5295        }
5296    }
5297}
5298
5299
5300/// A `VkImageCreateInfo`.
5301///
5302/// 
5303#[derive(Debug, Clone, Default)]
5304#[repr(C)]
5305pub struct ImageCreateInfo<'s> {
5306    raw: vks::VkImageCreateInfo,
5307    _p: PhantomData<&'s ()>,
5308}
5309
5310impl<'s> ImageCreateInfo<'s> {
5311    pub fn builder<'b>() -> ImageCreateInfoBuilder<'b> {
5312        ImageCreateInfoBuilder::new()
5313    }
5314
5315    pub unsafe fn from_raw(raw: vks::VkImageCreateInfo) -> ImageCreateInfo<'s> {
5316        ImageCreateInfo { raw, _p: PhantomData }
5317    }
5318
5319    pub fn next<'a>(&'a self) -> *const c_void {
5320        self.raw.pNext
5321    }
5322
5323    pub fn flags<'a>(&'a self) -> ImageCreateFlags {
5324        ImageCreateFlags::from_bits(self.raw.flags)
5325            .expect("ImageCreateInfo::flags: error converting flags")
5326    }
5327
5328    pub fn image_type<'a>(&'a self) -> ImageType {
5329        self.raw.imageType.into()
5330    }
5331
5332    pub fn format<'a>(&'a self) -> Format {
5333        self.raw.format.into()
5334    }
5335
5336    pub fn extent<'a>(&'a self) -> &'a Extent3d {
5337        unsafe { &*(&self.raw.extent as *const vks::VkExtent3D as *const Extent3d) }
5338    }
5339
5340    pub fn extent_mut<'a>(&'a mut self) -> &'a mut Extent3d {
5341        unsafe { &mut *(&mut self.raw.extent as *mut  vks::VkExtent3D as *mut Extent3d) }
5342    }
5343
5344    pub fn mip_levels<'a>(&'a self) -> u32 {
5345        self.raw.mipLevels.into()
5346    }
5347
5348    pub fn array_layers<'a>(&'a self) -> u32 {
5349        self.raw.arrayLayers.into()
5350    }
5351
5352    pub fn samples<'a>(&'a self) -> SampleCountFlags {
5353        SampleCountFlags::from_bits(self.raw.samples)
5354            .expect("ImageCreateInfo::samples: error converting flags")
5355    }
5356
5357    pub fn tiling<'a>(&'a self) -> ImageTiling {
5358        self.raw.tiling.into()
5359    }
5360
5361    pub fn usage<'a>(&'a self) -> ImageUsageFlags {
5362        ImageUsageFlags::from_bits(self.raw.usage)
5363            .expect("ImageCreateInfo::usage: error converting flags")
5364    }
5365
5366    pub fn sharing_mode<'a>(&'a self) -> SharingMode {
5367        self.raw.sharingMode.into()
5368    }
5369
5370    pub fn queue_family_indices<'a>(&'a self) -> &'a [u32] {
5371        unsafe { slice::from_raw_parts(self.raw.pQueueFamilyIndices as *const _, self.raw.queueFamilyIndexCount as usize) }
5372    }
5373
5374    pub fn initial_layout<'a>(&'a self) -> ImageLayout {
5375        self.raw.initialLayout.into()
5376    }
5377
5378    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
5379        self.raw.pNext = next;
5380    }
5381
5382    pub fn set_flags<'m>(&mut self, flags: ImageCreateFlags) {
5383        self.raw.flags = flags.bits();
5384    }
5385
5386    pub fn set_image_type<'m>(&mut self, image_type: ImageType) {
5387        self.raw.imageType = image_type.into();
5388    }
5389
5390    pub fn set_format<'m>(&mut self, format: Format) {
5391        self.raw.format = format.into();
5392    }
5393
5394    pub fn set_extent<'m>(&mut self, extent: Extent3d) {
5395        self.raw.extent = extent.raw;
5396    }
5397
5398    pub fn set_mip_levels<'m>(&mut self, mip_levels: u32) {
5399        self.raw.mipLevels = mip_levels.into();
5400    }
5401
5402    pub fn set_array_layers<'m>(&mut self, array_layers: u32) {
5403        self.raw.arrayLayers = array_layers.into();
5404    }
5405
5406    pub fn set_samples<'m>(&mut self, samples: SampleCountFlags) {
5407        self.raw.samples = samples.bits();
5408    }
5409
5410    pub fn set_tiling<'m>(&mut self, tiling: ImageTiling) {
5411        self.raw.tiling = tiling.into();
5412    }
5413
5414    pub fn set_usage<'m>(&mut self, usage: ImageUsageFlags) {
5415        self.raw.usage = usage.bits();
5416    }
5417
5418    pub fn set_sharing_mode<'m>(&mut self, sharing_mode: SharingMode) {
5419        self.raw.sharingMode = sharing_mode.into();
5420    }
5421
5422    pub fn set_queue_family_indices<'m, 'a>(&mut self, queue_family_indices: &'a [u32])
5423            where 'a: 's {
5424        assert!(self.raw.queueFamilyIndexCount == 0 || self.raw.queueFamilyIndexCount == queue_family_indices.len() as _, 
5425            "count inconsistency found when specifying `ImageCreateInfo::queue_family_indices`.");
5426        self.raw.queueFamilyIndexCount = queue_family_indices.len() as _;
5427        self.raw.pQueueFamilyIndices = queue_family_indices.as_ptr() as *const u32 as *const _;
5428    }
5429
5430    pub fn set_initial_layout<'m>(&mut self, initial_layout: ImageLayout) {
5431        self.raw.initialLayout = initial_layout.into();
5432    }
5433
5434    pub fn as_raw(&self) -> &vks::VkImageCreateInfo {
5435        &self.raw
5436    }
5437}
5438
5439impl<'s> From<ImageCreateInfo<'s>> for vks::VkImageCreateInfo {
5440    fn from(f: ImageCreateInfo<'s>) -> vks::VkImageCreateInfo {
5441        f.raw
5442    }
5443}
5444
5445
5446/// A builder for `VkImageCreateInfo`.
5447///
5448/// 
5449#[derive(Debug, Clone, Default)]
5450pub struct ImageCreateInfoBuilder<'b> {
5451    raw: vks::VkImageCreateInfo,
5452    _p: PhantomData<&'b ()>, 
5453}
5454
5455impl<'b> ImageCreateInfoBuilder<'b> {
5456    pub fn new() -> ImageCreateInfoBuilder<'b> {
5457        ImageCreateInfoBuilder {
5458            raw: vks::VkImageCreateInfo::default(),
5459            _p: PhantomData,
5460        }
5461    }
5462
5463    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ImageCreateInfoBuilder<'b> {
5464        self.raw.pNext = next;
5465        self
5466    }
5467
5468    pub fn flags<'m>(mut self, flags: ImageCreateFlags) -> ImageCreateInfoBuilder<'b> {
5469        self.raw.flags = flags.bits();
5470        self
5471    }
5472
5473    pub fn image_type<'m>(mut self, image_type: ImageType) -> ImageCreateInfoBuilder<'b> {
5474        self.raw.imageType = image_type.into();
5475        self
5476    }
5477
5478    pub fn format<'m>(mut self, format: Format) -> ImageCreateInfoBuilder<'b> {
5479        self.raw.format = format.into();
5480        self
5481    }
5482
5483    pub fn extent<'m>(mut self, extent: Extent3d) -> ImageCreateInfoBuilder<'b> {
5484        self.raw.extent = extent.raw;
5485        self
5486    }
5487
5488    pub fn mip_levels<'m>(mut self, mip_levels: u32) -> ImageCreateInfoBuilder<'b> {
5489        self.raw.mipLevels = mip_levels.into();
5490        self
5491    }
5492
5493    pub fn array_layers<'m>(mut self, array_layers: u32) -> ImageCreateInfoBuilder<'b> {
5494        self.raw.arrayLayers = array_layers.into();
5495        self
5496    }
5497
5498    pub fn samples<'m>(mut self, samples: SampleCountFlags) -> ImageCreateInfoBuilder<'b> {
5499        self.raw.samples = samples.bits();
5500        self
5501    }
5502
5503    pub fn tiling<'m>(mut self, tiling: ImageTiling) -> ImageCreateInfoBuilder<'b> {
5504        self.raw.tiling = tiling.into();
5505        self
5506    }
5507
5508    pub fn usage<'m>(mut self, usage: ImageUsageFlags) -> ImageCreateInfoBuilder<'b> {
5509        self.raw.usage = usage.bits();
5510        self
5511    }
5512
5513    pub fn sharing_mode<'m>(mut self, sharing_mode: SharingMode) -> ImageCreateInfoBuilder<'b> {
5514        self.raw.sharingMode = sharing_mode.into();
5515        self
5516    }
5517
5518    pub fn queue_family_indices<'m, 'a>(mut self, queue_family_indices: &'a [u32]) -> ImageCreateInfoBuilder<'b>
5519            where 'a: 'b {
5520        assert!(self.raw.queueFamilyIndexCount == 0 || self.raw.queueFamilyIndexCount == queue_family_indices.len() as _, 
5521            "count inconsistency found when specifying `ImageCreateInfo::queue_family_indices`.");
5522        self.raw.queueFamilyIndexCount = queue_family_indices.len() as _;
5523        self.raw.pQueueFamilyIndices = queue_family_indices.as_ptr() as *const u32 as *const _;
5524        self
5525    }
5526
5527    pub fn initial_layout<'m>(mut self, initial_layout: ImageLayout) -> ImageCreateInfoBuilder<'b> {
5528        self.raw.initialLayout = initial_layout.into();
5529        self
5530    }
5531
5532    pub fn get_next<'a>(&'a self) -> *const c_void {
5533        self.raw.pNext
5534    }
5535
5536    pub fn get_flags<'a>(&'a self) -> ImageCreateFlags {
5537        ImageCreateFlags::from_bits(self.raw.flags)
5538            .expect("ImageCreateInfo::flags: error converting flags")
5539    }
5540
5541    pub fn get_image_type<'a>(&'a self) -> ImageType {
5542        self.raw.imageType.into()
5543    }
5544
5545    pub fn get_format<'a>(&'a self) -> Format {
5546        self.raw.format.into()
5547    }
5548
5549    pub fn get_extent<'a>(&'a self) -> &'a Extent3d {
5550        unsafe { &*(&self.raw.extent as *const vks::VkExtent3D as *const Extent3d) }
5551    }
5552
5553    pub fn get_extent_mut<'a>(&'a mut self) -> &'a mut Extent3d {
5554        unsafe { &mut *(&mut self.raw.extent as *mut  vks::VkExtent3D as *mut Extent3d) }
5555    }
5556
5557    pub fn get_mip_levels<'a>(&'a self) -> u32 {
5558        self.raw.mipLevels.into()
5559    }
5560
5561    pub fn get_array_layers<'a>(&'a self) -> u32 {
5562        self.raw.arrayLayers.into()
5563    }
5564
5565    pub fn get_samples<'a>(&'a self) -> SampleCountFlags {
5566        SampleCountFlags::from_bits(self.raw.samples)
5567            .expect("ImageCreateInfo::samples: error converting flags")
5568    }
5569
5570    pub fn get_tiling<'a>(&'a self) -> ImageTiling {
5571        self.raw.tiling.into()
5572    }
5573
5574    pub fn get_usage<'a>(&'a self) -> ImageUsageFlags {
5575        ImageUsageFlags::from_bits(self.raw.usage)
5576            .expect("ImageCreateInfo::usage: error converting flags")
5577    }
5578
5579    pub fn get_sharing_mode<'a>(&'a self) -> SharingMode {
5580        self.raw.sharingMode.into()
5581    }
5582
5583    pub fn get_queue_family_indices<'a>(&'a self) -> &'a [u32] {
5584        unsafe { slice::from_raw_parts(self.raw.pQueueFamilyIndices as *const _, self.raw.queueFamilyIndexCount as usize) }
5585    }
5586
5587    pub fn get_initial_layout<'a>(&'a self) -> ImageLayout {
5588        self.raw.initialLayout.into()
5589    }
5590
5591    pub fn build(self) -> ImageCreateInfo<'b> {
5592        ImageCreateInfo {
5593            raw: self.raw,
5594            _p: PhantomData,
5595        }
5596    }
5597}
5598
5599
5600/// A `VkSubresourceLayout`.
5601///
5602/// 
5603#[derive(Debug, Clone, Default)]
5604#[repr(C)]
5605pub struct SubresourceLayout {
5606    raw: vks::VkSubresourceLayout,
5607}
5608
5609impl SubresourceLayout {
5610    pub fn builder() -> SubresourceLayoutBuilder {
5611        SubresourceLayoutBuilder::new()
5612    }
5613
5614    pub unsafe fn from_raw(raw: vks::VkSubresourceLayout) -> SubresourceLayout {
5615        SubresourceLayout { raw, }
5616    }
5617
5618    pub fn offset<'a>(&'a self) -> u64 {
5619        self.raw.offset.into()
5620    }
5621
5622    pub fn size<'a>(&'a self) -> u64 {
5623        self.raw.size.into()
5624    }
5625
5626    pub fn row_pitch<'a>(&'a self) -> u64 {
5627        self.raw.rowPitch.into()
5628    }
5629
5630    pub fn array_pitch<'a>(&'a self) -> u64 {
5631        self.raw.arrayPitch.into()
5632    }
5633
5634    pub fn depth_pitch<'a>(&'a self) -> u64 {
5635        self.raw.depthPitch.into()
5636    }
5637
5638    pub fn set_offset<'m>(&mut self, offset: u64) {
5639        self.raw.offset = offset.into();
5640    }
5641
5642    pub fn set_size<'m>(&mut self, size: u64) {
5643        self.raw.size = size.into();
5644    }
5645
5646    pub fn set_row_pitch<'m>(&mut self, row_pitch: u64) {
5647        self.raw.rowPitch = row_pitch.into();
5648    }
5649
5650    pub fn set_array_pitch<'m>(&mut self, array_pitch: u64) {
5651        self.raw.arrayPitch = array_pitch.into();
5652    }
5653
5654    pub fn set_depth_pitch<'m>(&mut self, depth_pitch: u64) {
5655        self.raw.depthPitch = depth_pitch.into();
5656    }
5657
5658    pub fn as_raw(&self) -> &vks::VkSubresourceLayout {
5659        &self.raw
5660    }
5661}
5662
5663impl From<SubresourceLayout> for vks::VkSubresourceLayout {
5664    fn from(f: SubresourceLayout) -> vks::VkSubresourceLayout {
5665        f.raw
5666    }
5667}
5668
5669
5670/// A builder for `VkSubresourceLayout`.
5671///
5672/// 
5673#[derive(Debug, Clone, Default)]
5674pub struct SubresourceLayoutBuilder {
5675    raw: vks::VkSubresourceLayout,
5676}
5677
5678impl SubresourceLayoutBuilder {
5679    pub fn new() -> SubresourceLayoutBuilder {
5680        SubresourceLayoutBuilder {
5681            raw: vks::VkSubresourceLayout::default(),
5682        }
5683    }
5684
5685    pub fn offset<'m>(mut self, offset: u64) -> SubresourceLayoutBuilder {
5686        self.raw.offset = offset.into();
5687        self
5688    }
5689
5690    pub fn size<'m>(mut self, size: u64) -> SubresourceLayoutBuilder {
5691        self.raw.size = size.into();
5692        self
5693    }
5694
5695    pub fn row_pitch<'m>(mut self, row_pitch: u64) -> SubresourceLayoutBuilder {
5696        self.raw.rowPitch = row_pitch.into();
5697        self
5698    }
5699
5700    pub fn array_pitch<'m>(mut self, array_pitch: u64) -> SubresourceLayoutBuilder {
5701        self.raw.arrayPitch = array_pitch.into();
5702        self
5703    }
5704
5705    pub fn depth_pitch<'m>(mut self, depth_pitch: u64) -> SubresourceLayoutBuilder {
5706        self.raw.depthPitch = depth_pitch.into();
5707        self
5708    }
5709
5710    pub fn get_offset<'a>(&'a self) -> u64 {
5711        self.raw.offset.into()
5712    }
5713
5714    pub fn get_size<'a>(&'a self) -> u64 {
5715        self.raw.size.into()
5716    }
5717
5718    pub fn get_row_pitch<'a>(&'a self) -> u64 {
5719        self.raw.rowPitch.into()
5720    }
5721
5722    pub fn get_array_pitch<'a>(&'a self) -> u64 {
5723        self.raw.arrayPitch.into()
5724    }
5725
5726    pub fn get_depth_pitch<'a>(&'a self) -> u64 {
5727        self.raw.depthPitch.into()
5728    }
5729
5730    pub fn build(self) -> SubresourceLayout {
5731        SubresourceLayout {
5732            raw: self.raw,
5733        }
5734    }
5735}
5736
5737
5738/// A `VkImageViewCreateInfo`.
5739///
5740/// 
5741#[derive(Debug, Clone, Default)]
5742#[repr(C)]
5743pub struct ImageViewCreateInfo<'s> {
5744    raw: vks::VkImageViewCreateInfo,
5745    _p: PhantomData<&'s ()>,
5746}
5747
5748impl<'s> ImageViewCreateInfo<'s> {
5749    pub fn builder<'b>() -> ImageViewCreateInfoBuilder<'b> {
5750        ImageViewCreateInfoBuilder::new()
5751    }
5752
5753    pub unsafe fn from_raw(raw: vks::VkImageViewCreateInfo) -> ImageViewCreateInfo<'s> {
5754        ImageViewCreateInfo { raw, _p: PhantomData }
5755    }
5756
5757    pub fn next<'a>(&'a self) -> *const c_void {
5758        self.raw.pNext
5759    }
5760
5761    pub fn flags<'a>(&'a self) -> ImageViewCreateFlags {
5762        ImageViewCreateFlags::from_bits(self.raw.flags)
5763            .expect("ImageViewCreateInfo::flags: error converting flags")
5764    }
5765
5766    pub fn image<'a>(&'a self) -> vks::VkImage {
5767        self.raw.image
5768    }
5769
5770    pub fn view_type<'a>(&'a self) -> ImageViewType {
5771        self.raw.viewType.into()
5772    }
5773
5774    pub fn format<'a>(&'a self) -> Format {
5775        self.raw.format.into()
5776    }
5777
5778    pub fn components<'a>(&'a self) -> &'a ComponentMapping {
5779        unsafe { &*(&self.raw.components as *const vks::VkComponentMapping as *const ComponentMapping) }
5780    }
5781
5782    pub fn components_mut<'a>(&'a mut self) -> &'a mut ComponentMapping {
5783        unsafe { &mut *(&mut self.raw.components as *mut  vks::VkComponentMapping as *mut ComponentMapping) }
5784    }
5785
5786    pub fn subresource_range<'a>(&'a self) -> &'a ImageSubresourceRange {
5787        unsafe { &*(&self.raw.subresourceRange as *const vks::VkImageSubresourceRange as *const ImageSubresourceRange) }
5788    }
5789
5790    pub fn subresource_range_mut<'a>(&'a mut self) -> &'a mut ImageSubresourceRange {
5791        unsafe { &mut *(&mut self.raw.subresourceRange as *mut  vks::VkImageSubresourceRange as *mut ImageSubresourceRange) }
5792    }
5793
5794    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
5795        self.raw.pNext = next;
5796    }
5797
5798    pub fn set_flags<'m>(&mut self, flags: ImageViewCreateFlags) {
5799        self.raw.flags = flags.bits();
5800    }
5801
5802    pub fn set_image<'m, H>(&mut self, image: H)
5803            where H: Handle<Target=ImageHandle> {
5804        self.raw.image = image.handle().0;
5805    }
5806
5807    pub fn set_view_type<'m>(&mut self, view_type: ImageViewType) {
5808        self.raw.viewType = view_type.into();
5809    }
5810
5811    pub fn set_format<'m>(&mut self, format: Format) {
5812        self.raw.format = format.into();
5813    }
5814
5815    pub fn set_components<'m>(&mut self, components: ComponentMapping) {
5816        self.raw.components = components.raw;
5817    }
5818
5819    pub fn set_subresource_range<'m>(&mut self, subresource_range: ImageSubresourceRange) {
5820        self.raw.subresourceRange = subresource_range.raw;
5821    }
5822
5823    pub fn as_raw(&self) -> &vks::VkImageViewCreateInfo {
5824        &self.raw
5825    }
5826}
5827
5828impl<'s> From<ImageViewCreateInfo<'s>> for vks::VkImageViewCreateInfo {
5829    fn from(f: ImageViewCreateInfo<'s>) -> vks::VkImageViewCreateInfo {
5830        f.raw
5831    }
5832}
5833
5834
5835/// A builder for `VkImageViewCreateInfo`.
5836///
5837/// 
5838#[derive(Debug, Clone, Default)]
5839pub struct ImageViewCreateInfoBuilder<'b> {
5840    raw: vks::VkImageViewCreateInfo,
5841    _p: PhantomData<&'b ()>, 
5842}
5843
5844impl<'b> ImageViewCreateInfoBuilder<'b> {
5845    pub fn new() -> ImageViewCreateInfoBuilder<'b> {
5846        ImageViewCreateInfoBuilder {
5847            raw: vks::VkImageViewCreateInfo::default(),
5848            _p: PhantomData,
5849        }
5850    }
5851
5852    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ImageViewCreateInfoBuilder<'b> {
5853        self.raw.pNext = next;
5854        self
5855    }
5856
5857    pub fn flags<'m>(mut self, flags: ImageViewCreateFlags) -> ImageViewCreateInfoBuilder<'b> {
5858        self.raw.flags = flags.bits();
5859        self
5860    }
5861
5862    pub fn image<'m, H>(mut self, image: H) -> ImageViewCreateInfoBuilder<'b>
5863            where H: Handle<Target=ImageHandle> {
5864        self.raw.image = image.handle().0;
5865        self
5866    }
5867
5868    pub fn view_type<'m>(mut self, view_type: ImageViewType) -> ImageViewCreateInfoBuilder<'b> {
5869        self.raw.viewType = view_type.into();
5870        self
5871    }
5872
5873    pub fn format<'m>(mut self, format: Format) -> ImageViewCreateInfoBuilder<'b> {
5874        self.raw.format = format.into();
5875        self
5876    }
5877
5878    pub fn components<'m>(mut self, components: ComponentMapping) -> ImageViewCreateInfoBuilder<'b> {
5879        self.raw.components = components.raw;
5880        self
5881    }
5882
5883    pub fn subresource_range<'m>(mut self, subresource_range: ImageSubresourceRange) -> ImageViewCreateInfoBuilder<'b> {
5884        self.raw.subresourceRange = subresource_range.raw;
5885        self
5886    }
5887
5888    pub fn get_next<'a>(&'a self) -> *const c_void {
5889        self.raw.pNext
5890    }
5891
5892    pub fn get_flags<'a>(&'a self) -> ImageViewCreateFlags {
5893        ImageViewCreateFlags::from_bits(self.raw.flags)
5894            .expect("ImageViewCreateInfo::flags: error converting flags")
5895    }
5896
5897    pub fn get_image<'a>(&'a self) -> vks::VkImage {
5898        self.raw.image
5899    }
5900
5901    pub fn get_view_type<'a>(&'a self) -> ImageViewType {
5902        self.raw.viewType.into()
5903    }
5904
5905    pub fn get_format<'a>(&'a self) -> Format {
5906        self.raw.format.into()
5907    }
5908
5909    pub fn get_components<'a>(&'a self) -> &'a ComponentMapping {
5910        unsafe { &*(&self.raw.components as *const vks::VkComponentMapping as *const ComponentMapping) }
5911    }
5912
5913    pub fn get_components_mut<'a>(&'a mut self) -> &'a mut ComponentMapping {
5914        unsafe { &mut *(&mut self.raw.components as *mut  vks::VkComponentMapping as *mut ComponentMapping) }
5915    }
5916
5917    pub fn get_subresource_range<'a>(&'a self) -> &'a ImageSubresourceRange {
5918        unsafe { &*(&self.raw.subresourceRange as *const vks::VkImageSubresourceRange as *const ImageSubresourceRange) }
5919    }
5920
5921    pub fn get_subresource_range_mut<'a>(&'a mut self) -> &'a mut ImageSubresourceRange {
5922        unsafe { &mut *(&mut self.raw.subresourceRange as *mut  vks::VkImageSubresourceRange as *mut ImageSubresourceRange) }
5923    }
5924
5925    pub fn build(self) -> ImageViewCreateInfo<'b> {
5926        ImageViewCreateInfo {
5927            raw: self.raw,
5928            _p: PhantomData,
5929        }
5930    }
5931}
5932
5933
5934/// A `VkBufferCopy`.
5935///
5936/// 
5937#[derive(Debug, Clone, Default)]
5938#[repr(C)]
5939pub struct BufferCopy {
5940    raw: vks::VkBufferCopy,
5941}
5942
5943impl BufferCopy {
5944    pub fn builder() -> BufferCopyBuilder {
5945        BufferCopyBuilder::new()
5946    }
5947
5948    pub unsafe fn from_raw(raw: vks::VkBufferCopy) -> BufferCopy {
5949        BufferCopy { raw, }
5950    }
5951
5952    pub fn src_offset<'a>(&'a self) -> u64 {
5953        self.raw.srcOffset.into()
5954    }
5955
5956    pub fn dst_offset<'a>(&'a self) -> u64 {
5957        self.raw.dstOffset.into()
5958    }
5959
5960    pub fn size<'a>(&'a self) -> u64 {
5961        self.raw.size.into()
5962    }
5963
5964    pub fn set_src_offset<'m>(&mut self, src_offset: u64) {
5965        self.raw.srcOffset = src_offset.into();
5966    }
5967
5968    pub fn set_dst_offset<'m>(&mut self, dst_offset: u64) {
5969        self.raw.dstOffset = dst_offset.into();
5970    }
5971
5972    pub fn set_size<'m>(&mut self, size: u64) {
5973        self.raw.size = size.into();
5974    }
5975
5976    pub fn as_raw(&self) -> &vks::VkBufferCopy {
5977        &self.raw
5978    }
5979}
5980
5981impl From<BufferCopy> for vks::VkBufferCopy {
5982    fn from(f: BufferCopy) -> vks::VkBufferCopy {
5983        f.raw
5984    }
5985}
5986
5987
5988/// A builder for `VkBufferCopy`.
5989///
5990/// 
5991#[derive(Debug, Clone, Default)]
5992pub struct BufferCopyBuilder {
5993    raw: vks::VkBufferCopy,
5994}
5995
5996impl BufferCopyBuilder {
5997    pub fn new() -> BufferCopyBuilder {
5998        BufferCopyBuilder {
5999            raw: vks::VkBufferCopy::default(),
6000        }
6001    }
6002
6003    pub fn src_offset<'m>(mut self, src_offset: u64) -> BufferCopyBuilder {
6004        self.raw.srcOffset = src_offset.into();
6005        self
6006    }
6007
6008    pub fn dst_offset<'m>(mut self, dst_offset: u64) -> BufferCopyBuilder {
6009        self.raw.dstOffset = dst_offset.into();
6010        self
6011    }
6012
6013    pub fn size<'m>(mut self, size: u64) -> BufferCopyBuilder {
6014        self.raw.size = size.into();
6015        self
6016    }
6017
6018    pub fn get_src_offset<'a>(&'a self) -> u64 {
6019        self.raw.srcOffset.into()
6020    }
6021
6022    pub fn get_dst_offset<'a>(&'a self) -> u64 {
6023        self.raw.dstOffset.into()
6024    }
6025
6026    pub fn get_size<'a>(&'a self) -> u64 {
6027        self.raw.size.into()
6028    }
6029
6030    pub fn build(self) -> BufferCopy {
6031        BufferCopy {
6032            raw: self.raw,
6033        }
6034    }
6035}
6036
6037
6038/// A `VkSparseMemoryBind`.
6039///
6040/// 
6041#[derive(Debug, Clone, Default)]
6042#[repr(C)]
6043pub struct SparseMemoryBind {
6044    raw: vks::VkSparseMemoryBind,
6045}
6046
6047impl SparseMemoryBind {
6048    pub fn builder() -> SparseMemoryBindBuilder {
6049        SparseMemoryBindBuilder::new()
6050    }
6051
6052    pub unsafe fn from_raw(raw: vks::VkSparseMemoryBind) -> SparseMemoryBind {
6053        SparseMemoryBind { raw, }
6054    }
6055
6056    pub fn resource_offset<'a>(&'a self) -> u64 {
6057        self.raw.resourceOffset.into()
6058    }
6059
6060    pub fn size<'a>(&'a self) -> u64 {
6061        self.raw.size.into()
6062    }
6063
6064    pub fn memory<'a>(&'a self) -> vks::VkDeviceMemory {
6065        self.raw.memory
6066    }
6067
6068    pub fn memory_offset<'a>(&'a self) -> u64 {
6069        self.raw.memoryOffset.into()
6070    }
6071
6072    pub fn flags<'a>(&'a self) -> SparseMemoryBindFlags {
6073        SparseMemoryBindFlags::from_bits(self.raw.flags)
6074            .expect("SparseMemoryBind::flags: error converting flags")
6075    }
6076
6077    pub fn set_resource_offset<'m>(&mut self, resource_offset: u64) {
6078        self.raw.resourceOffset = resource_offset.into();
6079    }
6080
6081    pub fn set_size<'m>(&mut self, size: u64) {
6082        self.raw.size = size.into();
6083    }
6084
6085    pub fn set_memory<'m, H>(&mut self, memory: H)
6086            where H: Handle<Target=DeviceMemoryHandle> {
6087        self.raw.memory = memory.handle().0;
6088    }
6089
6090    pub fn set_memory_offset<'m>(&mut self, memory_offset: u64) {
6091        self.raw.memoryOffset = memory_offset.into();
6092    }
6093
6094    pub fn set_flags<'m>(&mut self, flags: SparseMemoryBindFlags) {
6095        self.raw.flags = flags.bits();
6096    }
6097
6098    pub fn as_raw(&self) -> &vks::VkSparseMemoryBind {
6099        &self.raw
6100    }
6101}
6102
6103impl From<SparseMemoryBind> for vks::VkSparseMemoryBind {
6104    fn from(f: SparseMemoryBind) -> vks::VkSparseMemoryBind {
6105        f.raw
6106    }
6107}
6108
6109
6110/// A builder for `VkSparseMemoryBind`.
6111///
6112/// 
6113#[derive(Debug, Clone, Default)]
6114pub struct SparseMemoryBindBuilder {
6115    raw: vks::VkSparseMemoryBind,
6116}
6117
6118impl SparseMemoryBindBuilder {
6119    pub fn new() -> SparseMemoryBindBuilder {
6120        SparseMemoryBindBuilder {
6121            raw: vks::VkSparseMemoryBind::default(),
6122        }
6123    }
6124
6125    pub fn resource_offset<'m>(mut self, resource_offset: u64) -> SparseMemoryBindBuilder {
6126        self.raw.resourceOffset = resource_offset.into();
6127        self
6128    }
6129
6130    pub fn size<'m>(mut self, size: u64) -> SparseMemoryBindBuilder {
6131        self.raw.size = size.into();
6132        self
6133    }
6134
6135    pub fn memory<'m, H>(mut self, memory: H) -> SparseMemoryBindBuilder
6136            where H: Handle<Target=DeviceMemoryHandle> {
6137        self.raw.memory = memory.handle().0;
6138        self
6139    }
6140
6141    pub fn memory_offset<'m>(mut self, memory_offset: u64) -> SparseMemoryBindBuilder {
6142        self.raw.memoryOffset = memory_offset.into();
6143        self
6144    }
6145
6146    pub fn flags<'m>(mut self, flags: SparseMemoryBindFlags) -> SparseMemoryBindBuilder {
6147        self.raw.flags = flags.bits();
6148        self
6149    }
6150
6151    pub fn get_resource_offset<'a>(&'a self) -> u64 {
6152        self.raw.resourceOffset.into()
6153    }
6154
6155    pub fn get_size<'a>(&'a self) -> u64 {
6156        self.raw.size.into()
6157    }
6158
6159    pub fn get_memory<'a>(&'a self) -> vks::VkDeviceMemory {
6160        self.raw.memory
6161    }
6162
6163    pub fn get_memory_offset<'a>(&'a self) -> u64 {
6164        self.raw.memoryOffset.into()
6165    }
6166
6167    pub fn get_flags<'a>(&'a self) -> SparseMemoryBindFlags {
6168        SparseMemoryBindFlags::from_bits(self.raw.flags)
6169            .expect("SparseMemoryBind::flags: error converting flags")
6170    }
6171
6172    pub fn build(self) -> SparseMemoryBind {
6173        SparseMemoryBind {
6174            raw: self.raw,
6175        }
6176    }
6177}
6178
6179
6180/// A `VkSparseImageMemoryBind`.
6181///
6182/// 
6183#[derive(Debug, Clone, Default)]
6184#[repr(C)]
6185pub struct SparseImageMemoryBind {
6186    raw: vks::VkSparseImageMemoryBind,
6187}
6188
6189impl SparseImageMemoryBind {
6190    pub fn builder() -> SparseImageMemoryBindBuilder {
6191        SparseImageMemoryBindBuilder::new()
6192    }
6193
6194    pub unsafe fn from_raw(raw: vks::VkSparseImageMemoryBind) -> SparseImageMemoryBind {
6195        SparseImageMemoryBind { raw, }
6196    }
6197
6198    pub fn subresource<'a>(&'a self) -> &'a ImageSubresource {
6199        unsafe { &*(&self.raw.subresource as *const vks::VkImageSubresource as *const ImageSubresource) }
6200    }
6201
6202    pub fn subresource_mut<'a>(&'a mut self) -> &'a mut ImageSubresource {
6203        unsafe { &mut *(&mut self.raw.subresource as *mut  vks::VkImageSubresource as *mut ImageSubresource) }
6204    }
6205
6206    pub fn offset<'a>(&'a self) -> &'a Offset3d {
6207        unsafe { &*(&self.raw.offset as *const vks::VkOffset3D as *const Offset3d) }
6208    }
6209
6210    pub fn offset_mut<'a>(&'a mut self) -> &'a mut Offset3d {
6211        unsafe { &mut *(&mut self.raw.offset as *mut  vks::VkOffset3D as *mut Offset3d) }
6212    }
6213
6214    pub fn extent<'a>(&'a self) -> &'a Extent3d {
6215        unsafe { &*(&self.raw.extent as *const vks::VkExtent3D as *const Extent3d) }
6216    }
6217
6218    pub fn extent_mut<'a>(&'a mut self) -> &'a mut Extent3d {
6219        unsafe { &mut *(&mut self.raw.extent as *mut  vks::VkExtent3D as *mut Extent3d) }
6220    }
6221
6222    pub fn memory<'a>(&'a self) -> vks::VkDeviceMemory {
6223        self.raw.memory
6224    }
6225
6226    pub fn memory_offset<'a>(&'a self) -> u64 {
6227        self.raw.memoryOffset.into()
6228    }
6229
6230    pub fn flags<'a>(&'a self) -> SparseMemoryBindFlags {
6231        SparseMemoryBindFlags::from_bits(self.raw.flags)
6232            .expect("SparseImageMemoryBind::flags: error converting flags")
6233    }
6234
6235    pub fn set_subresource<'m>(&mut self, subresource: ImageSubresource) {
6236        self.raw.subresource = subresource.raw;
6237    }
6238
6239    pub fn set_offset<'m>(&mut self, offset: Offset3d) {
6240        self.raw.offset = offset.raw;
6241    }
6242
6243    pub fn set_extent<'m>(&mut self, extent: Extent3d) {
6244        self.raw.extent = extent.raw;
6245    }
6246
6247    pub fn set_memory<'m, H>(&mut self, memory: H)
6248            where H: Handle<Target=DeviceMemoryHandle> {
6249        self.raw.memory = memory.handle().0;
6250    }
6251
6252    pub fn set_memory_offset<'m>(&mut self, memory_offset: u64) {
6253        self.raw.memoryOffset = memory_offset.into();
6254    }
6255
6256    pub fn set_flags<'m>(&mut self, flags: SparseMemoryBindFlags) {
6257        self.raw.flags = flags.bits();
6258    }
6259
6260    pub fn as_raw(&self) -> &vks::VkSparseImageMemoryBind {
6261        &self.raw
6262    }
6263}
6264
6265impl From<SparseImageMemoryBind> for vks::VkSparseImageMemoryBind {
6266    fn from(f: SparseImageMemoryBind) -> vks::VkSparseImageMemoryBind {
6267        f.raw
6268    }
6269}
6270
6271
6272/// A builder for `VkSparseImageMemoryBind`.
6273///
6274/// 
6275#[derive(Debug, Clone, Default)]
6276pub struct SparseImageMemoryBindBuilder {
6277    raw: vks::VkSparseImageMemoryBind,
6278}
6279
6280impl SparseImageMemoryBindBuilder {
6281    pub fn new() -> SparseImageMemoryBindBuilder {
6282        SparseImageMemoryBindBuilder {
6283            raw: vks::VkSparseImageMemoryBind::default(),
6284        }
6285    }
6286
6287    pub fn subresource<'m>(mut self, subresource: ImageSubresource) -> SparseImageMemoryBindBuilder {
6288        self.raw.subresource = subresource.raw;
6289        self
6290    }
6291
6292    pub fn offset<'m>(mut self, offset: Offset3d) -> SparseImageMemoryBindBuilder {
6293        self.raw.offset = offset.raw;
6294        self
6295    }
6296
6297    pub fn extent<'m>(mut self, extent: Extent3d) -> SparseImageMemoryBindBuilder {
6298        self.raw.extent = extent.raw;
6299        self
6300    }
6301
6302    pub fn memory<'m, H>(mut self, memory: H) -> SparseImageMemoryBindBuilder
6303            where H: Handle<Target=DeviceMemoryHandle> {
6304        self.raw.memory = memory.handle().0;
6305        self
6306    }
6307
6308    pub fn memory_offset<'m>(mut self, memory_offset: u64) -> SparseImageMemoryBindBuilder {
6309        self.raw.memoryOffset = memory_offset.into();
6310        self
6311    }
6312
6313    pub fn flags<'m>(mut self, flags: SparseMemoryBindFlags) -> SparseImageMemoryBindBuilder {
6314        self.raw.flags = flags.bits();
6315        self
6316    }
6317
6318    pub fn get_subresource<'a>(&'a self) -> &'a ImageSubresource {
6319        unsafe { &*(&self.raw.subresource as *const vks::VkImageSubresource as *const ImageSubresource) }
6320    }
6321
6322    pub fn get_subresource_mut<'a>(&'a mut self) -> &'a mut ImageSubresource {
6323        unsafe { &mut *(&mut self.raw.subresource as *mut  vks::VkImageSubresource as *mut ImageSubresource) }
6324    }
6325
6326    pub fn get_offset<'a>(&'a self) -> &'a Offset3d {
6327        unsafe { &*(&self.raw.offset as *const vks::VkOffset3D as *const Offset3d) }
6328    }
6329
6330    pub fn get_offset_mut<'a>(&'a mut self) -> &'a mut Offset3d {
6331        unsafe { &mut *(&mut self.raw.offset as *mut  vks::VkOffset3D as *mut Offset3d) }
6332    }
6333
6334    pub fn get_extent<'a>(&'a self) -> &'a Extent3d {
6335        unsafe { &*(&self.raw.extent as *const vks::VkExtent3D as *const Extent3d) }
6336    }
6337
6338    pub fn get_extent_mut<'a>(&'a mut self) -> &'a mut Extent3d {
6339        unsafe { &mut *(&mut self.raw.extent as *mut  vks::VkExtent3D as *mut Extent3d) }
6340    }
6341
6342    pub fn get_memory<'a>(&'a self) -> vks::VkDeviceMemory {
6343        self.raw.memory
6344    }
6345
6346    pub fn get_memory_offset<'a>(&'a self) -> u64 {
6347        self.raw.memoryOffset.into()
6348    }
6349
6350    pub fn get_flags<'a>(&'a self) -> SparseMemoryBindFlags {
6351        SparseMemoryBindFlags::from_bits(self.raw.flags)
6352            .expect("SparseImageMemoryBind::flags: error converting flags")
6353    }
6354
6355    pub fn build(self) -> SparseImageMemoryBind {
6356        SparseImageMemoryBind {
6357            raw: self.raw,
6358        }
6359    }
6360}
6361
6362
6363/// A `VkSparseBufferMemoryBindInfo`.
6364///
6365/// 
6366#[derive(Debug, Clone, Default)]
6367#[repr(C)]
6368pub struct SparseBufferMemoryBindInfo<'s> {
6369    raw: vks::VkSparseBufferMemoryBindInfo,
6370    _p: PhantomData<&'s ()>,
6371}
6372
6373impl<'s> SparseBufferMemoryBindInfo<'s> {
6374    pub fn builder<'b>() -> SparseBufferMemoryBindInfoBuilder<'b> {
6375        SparseBufferMemoryBindInfoBuilder::new()
6376    }
6377
6378    pub unsafe fn from_raw(raw: vks::VkSparseBufferMemoryBindInfo) -> SparseBufferMemoryBindInfo<'s> {
6379        SparseBufferMemoryBindInfo { raw, _p: PhantomData }
6380    }
6381
6382    pub fn buffer<'a>(&'a self) -> vks::VkBuffer {
6383        self.raw.buffer
6384    }
6385
6386    pub fn binds<'a>(&'a self) -> &'a [SparseMemoryBind] {
6387        unsafe { slice::from_raw_parts(self.raw.pBinds as *const _, self.raw.bindCount as usize) }
6388    }
6389
6390    pub fn set_buffer<'m, H>(&mut self, buffer: H)
6391            where H: Handle<Target=BufferHandle> {
6392        self.raw.buffer = buffer.handle().0;
6393    }
6394
6395    pub fn set_binds<'m, 'a>(&mut self, binds: &'a [SparseMemoryBind])
6396            where 'a: 's {
6397        assert!(self.raw.bindCount == 0 || self.raw.bindCount == binds.len() as _, 
6398            "count inconsistency found when specifying `SparseBufferMemoryBindInfo::binds`.");
6399        self.raw.bindCount = binds.len() as _;
6400        self.raw.pBinds = binds.as_ptr() as *const vks::VkSparseMemoryBind;
6401    }
6402
6403    pub fn as_raw(&self) -> &vks::VkSparseBufferMemoryBindInfo {
6404        &self.raw
6405    }
6406}
6407
6408impl<'s> From<SparseBufferMemoryBindInfo<'s>> for vks::VkSparseBufferMemoryBindInfo {
6409    fn from(f: SparseBufferMemoryBindInfo<'s>) -> vks::VkSparseBufferMemoryBindInfo {
6410        f.raw
6411    }
6412}
6413
6414
6415/// A builder for `VkSparseBufferMemoryBindInfo`.
6416///
6417/// 
6418#[derive(Debug, Clone, Default)]
6419pub struct SparseBufferMemoryBindInfoBuilder<'b> {
6420    raw: vks::VkSparseBufferMemoryBindInfo,
6421    _p: PhantomData<&'b ()>, 
6422}
6423
6424impl<'b> SparseBufferMemoryBindInfoBuilder<'b> {
6425    pub fn new() -> SparseBufferMemoryBindInfoBuilder<'b> {
6426        SparseBufferMemoryBindInfoBuilder {
6427            raw: vks::VkSparseBufferMemoryBindInfo::default(),
6428            _p: PhantomData,
6429        }
6430    }
6431
6432    pub fn buffer<'m, H>(mut self, buffer: H) -> SparseBufferMemoryBindInfoBuilder<'b>
6433            where H: Handle<Target=BufferHandle> {
6434        self.raw.buffer = buffer.handle().0;
6435        self
6436    }
6437
6438    pub fn binds<'m, 'a>(mut self, binds: &'a [SparseMemoryBind]) -> SparseBufferMemoryBindInfoBuilder<'b>
6439            where 'a: 'b {
6440        assert!(self.raw.bindCount == 0 || self.raw.bindCount == binds.len() as _, 
6441            "count inconsistency found when specifying `SparseBufferMemoryBindInfo::binds`.");
6442        self.raw.bindCount = binds.len() as _;
6443        self.raw.pBinds = binds.as_ptr() as *const vks::VkSparseMemoryBind;
6444        self
6445    }
6446
6447    pub fn get_buffer<'a>(&'a self) -> vks::VkBuffer {
6448        self.raw.buffer
6449    }
6450
6451    pub fn get_binds<'a>(&'a self) -> &'a [SparseMemoryBind] {
6452        unsafe { slice::from_raw_parts(self.raw.pBinds as *const _, self.raw.bindCount as usize) }
6453    }
6454
6455    pub fn build(self) -> SparseBufferMemoryBindInfo<'b> {
6456        SparseBufferMemoryBindInfo {
6457            raw: self.raw,
6458            _p: PhantomData,
6459        }
6460    }
6461}
6462
6463
6464/// A `VkSparseImageOpaqueMemoryBindInfo`.
6465///
6466/// 
6467#[derive(Debug, Clone, Default)]
6468#[repr(C)]
6469pub struct SparseImageOpaqueMemoryBindInfo<'s> {
6470    raw: vks::VkSparseImageOpaqueMemoryBindInfo,
6471    _p: PhantomData<&'s ()>,
6472}
6473
6474impl<'s> SparseImageOpaqueMemoryBindInfo<'s> {
6475    pub fn builder<'b>() -> SparseImageOpaqueMemoryBindInfoBuilder<'b> {
6476        SparseImageOpaqueMemoryBindInfoBuilder::new()
6477    }
6478
6479    pub unsafe fn from_raw(raw: vks::VkSparseImageOpaqueMemoryBindInfo) -> SparseImageOpaqueMemoryBindInfo<'s> {
6480        SparseImageOpaqueMemoryBindInfo { raw, _p: PhantomData }
6481    }
6482
6483    pub fn image<'a>(&'a self) -> vks::VkImage {
6484        self.raw.image
6485    }
6486
6487    pub fn binds<'a>(&'a self) -> &'a [SparseMemoryBind] {
6488        unsafe { slice::from_raw_parts(self.raw.pBinds as *const _, self.raw.bindCount as usize) }
6489    }
6490
6491    pub fn set_image<'m, H>(&mut self, image: H)
6492            where H: Handle<Target=ImageHandle> {
6493        self.raw.image = image.handle().0;
6494    }
6495
6496    pub fn set_binds<'m, 'a>(&mut self, binds: &'a [SparseMemoryBind])
6497            where 'a: 's {
6498        assert!(self.raw.bindCount == 0 || self.raw.bindCount == binds.len() as _, 
6499            "count inconsistency found when specifying `SparseImageOpaqueMemoryBindInfo::binds`.");
6500        self.raw.bindCount = binds.len() as _;
6501        self.raw.pBinds = binds.as_ptr() as *const vks::VkSparseMemoryBind;
6502    }
6503
6504    pub fn as_raw(&self) -> &vks::VkSparseImageOpaqueMemoryBindInfo {
6505        &self.raw
6506    }
6507}
6508
6509impl<'s> From<SparseImageOpaqueMemoryBindInfo<'s>> for vks::VkSparseImageOpaqueMemoryBindInfo {
6510    fn from(f: SparseImageOpaqueMemoryBindInfo<'s>) -> vks::VkSparseImageOpaqueMemoryBindInfo {
6511        f.raw
6512    }
6513}
6514
6515
6516/// A builder for `VkSparseImageOpaqueMemoryBindInfo`.
6517///
6518/// 
6519#[derive(Debug, Clone, Default)]
6520pub struct SparseImageOpaqueMemoryBindInfoBuilder<'b> {
6521    raw: vks::VkSparseImageOpaqueMemoryBindInfo,
6522    _p: PhantomData<&'b ()>, 
6523}
6524
6525impl<'b> SparseImageOpaqueMemoryBindInfoBuilder<'b> {
6526    pub fn new() -> SparseImageOpaqueMemoryBindInfoBuilder<'b> {
6527        SparseImageOpaqueMemoryBindInfoBuilder {
6528            raw: vks::VkSparseImageOpaqueMemoryBindInfo::default(),
6529            _p: PhantomData,
6530        }
6531    }
6532
6533    pub fn image<'m, H>(mut self, image: H) -> SparseImageOpaqueMemoryBindInfoBuilder<'b>
6534            where H: Handle<Target=ImageHandle> {
6535        self.raw.image = image.handle().0;
6536        self
6537    }
6538
6539    pub fn binds<'m, 'a>(mut self, binds: &'a [SparseMemoryBind]) -> SparseImageOpaqueMemoryBindInfoBuilder<'b>
6540            where 'a: 'b {
6541        assert!(self.raw.bindCount == 0 || self.raw.bindCount == binds.len() as _, 
6542            "count inconsistency found when specifying `SparseImageOpaqueMemoryBindInfo::binds`.");
6543        self.raw.bindCount = binds.len() as _;
6544        self.raw.pBinds = binds.as_ptr() as *const vks::VkSparseMemoryBind;
6545        self
6546    }
6547
6548    pub fn get_image<'a>(&'a self) -> vks::VkImage {
6549        self.raw.image
6550    }
6551
6552    pub fn get_binds<'a>(&'a self) -> &'a [SparseMemoryBind] {
6553        unsafe { slice::from_raw_parts(self.raw.pBinds as *const _, self.raw.bindCount as usize) }
6554    }
6555
6556    pub fn build(self) -> SparseImageOpaqueMemoryBindInfo<'b> {
6557        SparseImageOpaqueMemoryBindInfo {
6558            raw: self.raw,
6559            _p: PhantomData,
6560        }
6561    }
6562}
6563
6564
6565/// A `VkSparseImageMemoryBindInfo`.
6566///
6567/// 
6568#[derive(Debug, Clone, Default)]
6569#[repr(C)]
6570pub struct SparseImageMemoryBindInfo<'s> {
6571    raw: vks::VkSparseImageMemoryBindInfo,
6572    _p: PhantomData<&'s ()>,
6573}
6574
6575impl<'s> SparseImageMemoryBindInfo<'s> {
6576    pub fn builder<'b>() -> SparseImageMemoryBindInfoBuilder<'b> {
6577        SparseImageMemoryBindInfoBuilder::new()
6578    }
6579
6580    pub unsafe fn from_raw(raw: vks::VkSparseImageMemoryBindInfo) -> SparseImageMemoryBindInfo<'s> {
6581        SparseImageMemoryBindInfo { raw, _p: PhantomData }
6582    }
6583
6584    pub fn image<'a>(&'a self) -> vks::VkImage {
6585        self.raw.image
6586    }
6587
6588    pub fn binds<'a>(&'a self) -> &'a [SparseImageMemoryBind] {
6589        unsafe { slice::from_raw_parts(self.raw.pBinds as *const _, self.raw.bindCount as usize) }
6590    }
6591
6592    pub fn set_image<'m, H>(&mut self, image: H)
6593            where H: Handle<Target=ImageHandle> {
6594        self.raw.image = image.handle().0;
6595    }
6596
6597    pub fn set_binds<'m, 'a>(&mut self, binds: &'a [SparseImageMemoryBind])
6598            where 'a: 's {
6599        assert!(self.raw.bindCount == 0 || self.raw.bindCount == binds.len() as _, 
6600            "count inconsistency found when specifying `SparseImageMemoryBindInfo::binds`.");
6601        self.raw.bindCount = binds.len() as _;
6602        self.raw.pBinds = binds.as_ptr() as *const vks::VkSparseImageMemoryBind;
6603    }
6604
6605    pub fn as_raw(&self) -> &vks::VkSparseImageMemoryBindInfo {
6606        &self.raw
6607    }
6608}
6609
6610impl<'s> From<SparseImageMemoryBindInfo<'s>> for vks::VkSparseImageMemoryBindInfo {
6611    fn from(f: SparseImageMemoryBindInfo<'s>) -> vks::VkSparseImageMemoryBindInfo {
6612        f.raw
6613    }
6614}
6615
6616
6617/// A builder for `VkSparseImageMemoryBindInfo`.
6618///
6619/// 
6620#[derive(Debug, Clone, Default)]
6621pub struct SparseImageMemoryBindInfoBuilder<'b> {
6622    raw: vks::VkSparseImageMemoryBindInfo,
6623    _p: PhantomData<&'b ()>, 
6624}
6625
6626impl<'b> SparseImageMemoryBindInfoBuilder<'b> {
6627    pub fn new() -> SparseImageMemoryBindInfoBuilder<'b> {
6628        SparseImageMemoryBindInfoBuilder {
6629            raw: vks::VkSparseImageMemoryBindInfo::default(),
6630            _p: PhantomData,
6631        }
6632    }
6633
6634    pub fn image<'m, H>(mut self, image: H) -> SparseImageMemoryBindInfoBuilder<'b>
6635            where H: Handle<Target=ImageHandle> {
6636        self.raw.image = image.handle().0;
6637        self
6638    }
6639
6640    pub fn binds<'m, 'a>(mut self, binds: &'a [SparseImageMemoryBind]) -> SparseImageMemoryBindInfoBuilder<'b>
6641            where 'a: 'b {
6642        assert!(self.raw.bindCount == 0 || self.raw.bindCount == binds.len() as _, 
6643            "count inconsistency found when specifying `SparseImageMemoryBindInfo::binds`.");
6644        self.raw.bindCount = binds.len() as _;
6645        self.raw.pBinds = binds.as_ptr() as *const vks::VkSparseImageMemoryBind;
6646        self
6647    }
6648
6649    pub fn get_image<'a>(&'a self) -> vks::VkImage {
6650        self.raw.image
6651    }
6652
6653    pub fn get_binds<'a>(&'a self) -> &'a [SparseImageMemoryBind] {
6654        unsafe { slice::from_raw_parts(self.raw.pBinds as *const _, self.raw.bindCount as usize) }
6655    }
6656
6657    pub fn build(self) -> SparseImageMemoryBindInfo<'b> {
6658        SparseImageMemoryBindInfo {
6659            raw: self.raw,
6660            _p: PhantomData,
6661        }
6662    }
6663}
6664
6665
6666/// A `VkBindSparseInfo`.
6667///
6668/// 
6669#[derive(Debug, Clone, Default)]
6670#[repr(C)]
6671pub struct BindSparseInfo<'s> {
6672    raw: vks::VkBindSparseInfo,
6673    _p: PhantomData<&'s ()>,
6674}
6675
6676impl<'s> BindSparseInfo<'s> {
6677    pub fn builder<'b>() -> BindSparseInfoBuilder<'b> {
6678        BindSparseInfoBuilder::new()
6679    }
6680
6681    pub unsafe fn from_raw(raw: vks::VkBindSparseInfo) -> BindSparseInfo<'s> {
6682        BindSparseInfo { raw, _p: PhantomData }
6683    }
6684
6685    pub fn next<'a>(&'a self) -> *const c_void {
6686        self.raw.pNext
6687    }
6688
6689    pub fn wait_semaphores<'a>(&'a self) -> &'a [vks::VkSemaphore] {
6690        unsafe { slice::from_raw_parts(self.raw.pWaitSemaphores as *const _, self.raw.waitSemaphoreCount as usize) }
6691    }
6692
6693    pub fn buffer_binds<'a>(&'a self) -> &'a [SparseBufferMemoryBindInfo] {
6694        unsafe { slice::from_raw_parts(self.raw.pBufferBinds as *const _, self.raw.bufferBindCount as usize) }
6695    }
6696
6697    pub fn image_opaque_binds<'a>(&'a self) -> &'a [SparseImageOpaqueMemoryBindInfo] {
6698        unsafe { slice::from_raw_parts(self.raw.pImageOpaqueBinds as *const _, self.raw.imageOpaqueBindCount as usize) }
6699    }
6700
6701    pub fn image_binds<'a>(&'a self) -> &'a [SparseImageMemoryBindInfo] {
6702        unsafe { slice::from_raw_parts(self.raw.pImageBinds as *const _, self.raw.imageBindCount as usize) }
6703    }
6704
6705    pub fn signal_semaphores<'a>(&'a self) -> &'a [vks::VkSemaphore] {
6706        unsafe { slice::from_raw_parts(self.raw.pSignalSemaphores as *const _, self.raw.signalSemaphoreCount as usize) }
6707    }
6708
6709    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
6710        self.raw.pNext = next;
6711    }
6712
6713    pub fn set_wait_semaphores<'m, 'a>(&mut self, wait_semaphores: &'a [SemaphoreHandle])
6714            where 'a: 's {
6715        assert!(self.raw.waitSemaphoreCount == 0 || self.raw.waitSemaphoreCount == wait_semaphores.len() as _, 
6716            "count inconsistency found when specifying `BindSparseInfo::wait_semaphores`.");
6717        self.raw.waitSemaphoreCount = wait_semaphores.len() as _;
6718        self.raw.pWaitSemaphores = wait_semaphores.as_ptr() as *const vks::VkSemaphore;
6719    }
6720
6721    pub fn set_buffer_binds<'m, 'a>(&mut self, buffer_binds: &'a [SparseBufferMemoryBindInfo])
6722            where 'a: 's {
6723        assert!(self.raw.bufferBindCount == 0 || self.raw.bufferBindCount == buffer_binds.len() as _, 
6724            "count inconsistency found when specifying `BindSparseInfo::buffer_binds`.");
6725        self.raw.bufferBindCount = buffer_binds.len() as _;
6726        self.raw.pBufferBinds = buffer_binds.as_ptr() as *const vks::VkSparseBufferMemoryBindInfo;
6727    }
6728
6729    pub fn set_image_opaque_binds<'m, 'a>(&mut self, image_opaque_binds: &'a [SparseImageOpaqueMemoryBindInfo])
6730            where 'a: 's {
6731        assert!(self.raw.imageOpaqueBindCount == 0 || self.raw.imageOpaqueBindCount == image_opaque_binds.len() as _, 
6732            "count inconsistency found when specifying `BindSparseInfo::image_opaque_binds`.");
6733        self.raw.imageOpaqueBindCount = image_opaque_binds.len() as _;
6734        self.raw.pImageOpaqueBinds = image_opaque_binds.as_ptr() as *const vks::VkSparseImageOpaqueMemoryBindInfo;
6735    }
6736
6737    pub fn set_image_binds<'m, 'a>(&mut self, image_binds: &'a [SparseImageMemoryBindInfo])
6738            where 'a: 's {
6739        assert!(self.raw.imageBindCount == 0 || self.raw.imageBindCount == image_binds.len() as _, 
6740            "count inconsistency found when specifying `BindSparseInfo::image_binds`.");
6741        self.raw.imageBindCount = image_binds.len() as _;
6742        self.raw.pImageBinds = image_binds.as_ptr() as *const vks::VkSparseImageMemoryBindInfo;
6743    }
6744
6745    pub fn set_signal_semaphores<'m, 'a>(&mut self, signal_semaphores: &'a [SemaphoreHandle])
6746            where 'a: 's {
6747        assert!(self.raw.signalSemaphoreCount == 0 || self.raw.signalSemaphoreCount == signal_semaphores.len() as _, 
6748            "count inconsistency found when specifying `BindSparseInfo::signal_semaphores`.");
6749        self.raw.signalSemaphoreCount = signal_semaphores.len() as _;
6750        self.raw.pSignalSemaphores = signal_semaphores.as_ptr() as *const vks::VkSemaphore;
6751    }
6752
6753    pub fn as_raw(&self) -> &vks::VkBindSparseInfo {
6754        &self.raw
6755    }
6756}
6757
6758impl<'s> From<BindSparseInfo<'s>> for vks::VkBindSparseInfo {
6759    fn from(f: BindSparseInfo<'s>) -> vks::VkBindSparseInfo {
6760        f.raw
6761    }
6762}
6763
6764
6765/// A builder for `VkBindSparseInfo`.
6766///
6767/// 
6768#[derive(Debug, Clone, Default)]
6769pub struct BindSparseInfoBuilder<'b> {
6770    raw: vks::VkBindSparseInfo,
6771    _p: PhantomData<&'b ()>, 
6772}
6773
6774impl<'b> BindSparseInfoBuilder<'b> {
6775    pub fn new() -> BindSparseInfoBuilder<'b> {
6776        BindSparseInfoBuilder {
6777            raw: vks::VkBindSparseInfo::default(),
6778            _p: PhantomData,
6779        }
6780    }
6781
6782    pub unsafe fn next<'m>(mut self, next: *const c_void) -> BindSparseInfoBuilder<'b> {
6783        self.raw.pNext = next;
6784        self
6785    }
6786
6787    pub fn wait_semaphores<'m, 'a>(mut self, wait_semaphores: &'a [SemaphoreHandle]) -> BindSparseInfoBuilder<'b>
6788            where 'a: 'b {
6789        assert!(self.raw.waitSemaphoreCount == 0 || self.raw.waitSemaphoreCount == wait_semaphores.len() as _, 
6790            "count inconsistency found when specifying `BindSparseInfo::wait_semaphores`.");
6791        self.raw.waitSemaphoreCount = wait_semaphores.len() as _;
6792        self.raw.pWaitSemaphores = wait_semaphores.as_ptr() as *const vks::VkSemaphore;
6793        self
6794    }
6795
6796    pub fn buffer_binds<'m, 'a>(mut self, buffer_binds: &'a [SparseBufferMemoryBindInfo]) -> BindSparseInfoBuilder<'b>
6797            where 'a: 'b {
6798        assert!(self.raw.bufferBindCount == 0 || self.raw.bufferBindCount == buffer_binds.len() as _, 
6799            "count inconsistency found when specifying `BindSparseInfo::buffer_binds`.");
6800        self.raw.bufferBindCount = buffer_binds.len() as _;
6801        self.raw.pBufferBinds = buffer_binds.as_ptr() as *const vks::VkSparseBufferMemoryBindInfo;
6802        self
6803    }
6804
6805    pub fn image_opaque_binds<'m, 'a>(mut self, image_opaque_binds: &'a [SparseImageOpaqueMemoryBindInfo]) -> BindSparseInfoBuilder<'b>
6806            where 'a: 'b {
6807        assert!(self.raw.imageOpaqueBindCount == 0 || self.raw.imageOpaqueBindCount == image_opaque_binds.len() as _, 
6808            "count inconsistency found when specifying `BindSparseInfo::image_opaque_binds`.");
6809        self.raw.imageOpaqueBindCount = image_opaque_binds.len() as _;
6810        self.raw.pImageOpaqueBinds = image_opaque_binds.as_ptr() as *const vks::VkSparseImageOpaqueMemoryBindInfo;
6811        self
6812    }
6813
6814    pub fn image_binds<'m, 'a>(mut self, image_binds: &'a [SparseImageMemoryBindInfo]) -> BindSparseInfoBuilder<'b>
6815            where 'a: 'b {
6816        assert!(self.raw.imageBindCount == 0 || self.raw.imageBindCount == image_binds.len() as _, 
6817            "count inconsistency found when specifying `BindSparseInfo::image_binds`.");
6818        self.raw.imageBindCount = image_binds.len() as _;
6819        self.raw.pImageBinds = image_binds.as_ptr() as *const vks::VkSparseImageMemoryBindInfo;
6820        self
6821    }
6822
6823    pub fn signal_semaphores<'m, 'a>(mut self, signal_semaphores: &'a [SemaphoreHandle]) -> BindSparseInfoBuilder<'b>
6824            where 'a: 'b {
6825        assert!(self.raw.signalSemaphoreCount == 0 || self.raw.signalSemaphoreCount == signal_semaphores.len() as _, 
6826            "count inconsistency found when specifying `BindSparseInfo::signal_semaphores`.");
6827        self.raw.signalSemaphoreCount = signal_semaphores.len() as _;
6828        self.raw.pSignalSemaphores = signal_semaphores.as_ptr() as *const vks::VkSemaphore;
6829        self
6830    }
6831
6832    pub fn get_next<'a>(&'a self) -> *const c_void {
6833        self.raw.pNext
6834    }
6835
6836    pub fn get_wait_semaphores<'a>(&'a self) -> &'a [vks::VkSemaphore] {
6837        unsafe { slice::from_raw_parts(self.raw.pWaitSemaphores as *const _, self.raw.waitSemaphoreCount as usize) }
6838    }
6839
6840    pub fn get_buffer_binds<'a>(&'a self) -> &'a [SparseBufferMemoryBindInfo] {
6841        unsafe { slice::from_raw_parts(self.raw.pBufferBinds as *const _, self.raw.bufferBindCount as usize) }
6842    }
6843
6844    pub fn get_image_opaque_binds<'a>(&'a self) -> &'a [SparseImageOpaqueMemoryBindInfo] {
6845        unsafe { slice::from_raw_parts(self.raw.pImageOpaqueBinds as *const _, self.raw.imageOpaqueBindCount as usize) }
6846    }
6847
6848    pub fn get_image_binds<'a>(&'a self) -> &'a [SparseImageMemoryBindInfo] {
6849        unsafe { slice::from_raw_parts(self.raw.pImageBinds as *const _, self.raw.imageBindCount as usize) }
6850    }
6851
6852    pub fn get_signal_semaphores<'a>(&'a self) -> &'a [vks::VkSemaphore] {
6853        unsafe { slice::from_raw_parts(self.raw.pSignalSemaphores as *const _, self.raw.signalSemaphoreCount as usize) }
6854    }
6855
6856    pub fn build(self) -> BindSparseInfo<'b> {
6857        BindSparseInfo {
6858            raw: self.raw,
6859            _p: PhantomData,
6860        }
6861    }
6862}
6863
6864
6865/// A `VkImageCopy`.
6866///
6867/// 
6868#[derive(Debug, Clone, Default)]
6869#[repr(C)]
6870pub struct ImageCopy {
6871    raw: vks::VkImageCopy,
6872}
6873
6874impl ImageCopy {
6875    pub fn builder() -> ImageCopyBuilder {
6876        ImageCopyBuilder::new()
6877    }
6878
6879    pub unsafe fn from_raw(raw: vks::VkImageCopy) -> ImageCopy {
6880        ImageCopy { raw, }
6881    }
6882
6883    pub fn src_subresource<'a>(&'a self) -> &'a ImageSubresourceLayers {
6884        unsafe { &*(&self.raw.srcSubresource as *const vks::VkImageSubresourceLayers as *const ImageSubresourceLayers) }
6885    }
6886
6887    pub fn src_subresource_mut<'a>(&'a mut self) -> &'a mut ImageSubresourceLayers {
6888        unsafe { &mut *(&mut self.raw.srcSubresource as *mut  vks::VkImageSubresourceLayers as *mut ImageSubresourceLayers) }
6889    }
6890
6891    pub fn src_offset<'a>(&'a self) -> &'a Offset3d {
6892        unsafe { &*(&self.raw.srcOffset as *const vks::VkOffset3D as *const Offset3d) }
6893    }
6894
6895    pub fn src_offset_mut<'a>(&'a mut self) -> &'a mut Offset3d {
6896        unsafe { &mut *(&mut self.raw.srcOffset as *mut  vks::VkOffset3D as *mut Offset3d) }
6897    }
6898
6899    pub fn dst_subresource<'a>(&'a self) -> &'a ImageSubresourceLayers {
6900        unsafe { &*(&self.raw.dstSubresource as *const vks::VkImageSubresourceLayers as *const ImageSubresourceLayers) }
6901    }
6902
6903    pub fn dst_subresource_mut<'a>(&'a mut self) -> &'a mut ImageSubresourceLayers {
6904        unsafe { &mut *(&mut self.raw.dstSubresource as *mut  vks::VkImageSubresourceLayers as *mut ImageSubresourceLayers) }
6905    }
6906
6907    pub fn dst_offset<'a>(&'a self) -> &'a Offset3d {
6908        unsafe { &*(&self.raw.dstOffset as *const vks::VkOffset3D as *const Offset3d) }
6909    }
6910
6911    pub fn dst_offset_mut<'a>(&'a mut self) -> &'a mut Offset3d {
6912        unsafe { &mut *(&mut self.raw.dstOffset as *mut  vks::VkOffset3D as *mut Offset3d) }
6913    }
6914
6915    pub fn extent<'a>(&'a self) -> &'a Extent3d {
6916        unsafe { &*(&self.raw.extent as *const vks::VkExtent3D as *const Extent3d) }
6917    }
6918
6919    pub fn extent_mut<'a>(&'a mut self) -> &'a mut Extent3d {
6920        unsafe { &mut *(&mut self.raw.extent as *mut  vks::VkExtent3D as *mut Extent3d) }
6921    }
6922
6923    pub fn set_src_subresource<'m>(&mut self, src_subresource: ImageSubresourceLayers) {
6924        self.raw.srcSubresource = src_subresource.raw;
6925    }
6926
6927    pub fn set_src_offset<'m>(&mut self, src_offset: Offset3d) {
6928        self.raw.srcOffset = src_offset.raw;
6929    }
6930
6931    pub fn set_dst_subresource<'m>(&mut self, dst_subresource: ImageSubresourceLayers) {
6932        self.raw.dstSubresource = dst_subresource.raw;
6933    }
6934
6935    pub fn set_dst_offset<'m>(&mut self, dst_offset: Offset3d) {
6936        self.raw.dstOffset = dst_offset.raw;
6937    }
6938
6939    pub fn set_extent<'m>(&mut self, extent: Extent3d) {
6940        self.raw.extent = extent.raw;
6941    }
6942
6943    pub fn as_raw(&self) -> &vks::VkImageCopy {
6944        &self.raw
6945    }
6946}
6947
6948impl From<ImageCopy> for vks::VkImageCopy {
6949    fn from(f: ImageCopy) -> vks::VkImageCopy {
6950        f.raw
6951    }
6952}
6953
6954
6955/// A builder for `VkImageCopy`.
6956///
6957/// 
6958#[derive(Debug, Clone, Default)]
6959pub struct ImageCopyBuilder {
6960    raw: vks::VkImageCopy,
6961}
6962
6963impl ImageCopyBuilder {
6964    pub fn new() -> ImageCopyBuilder {
6965        ImageCopyBuilder {
6966            raw: vks::VkImageCopy::default(),
6967        }
6968    }
6969
6970    pub fn src_subresource<'m>(mut self, src_subresource: ImageSubresourceLayers) -> ImageCopyBuilder {
6971        self.raw.srcSubresource = src_subresource.raw;
6972        self
6973    }
6974
6975    pub fn src_offset<'m>(mut self, src_offset: Offset3d) -> ImageCopyBuilder {
6976        self.raw.srcOffset = src_offset.raw;
6977        self
6978    }
6979
6980    pub fn dst_subresource<'m>(mut self, dst_subresource: ImageSubresourceLayers) -> ImageCopyBuilder {
6981        self.raw.dstSubresource = dst_subresource.raw;
6982        self
6983    }
6984
6985    pub fn dst_offset<'m>(mut self, dst_offset: Offset3d) -> ImageCopyBuilder {
6986        self.raw.dstOffset = dst_offset.raw;
6987        self
6988    }
6989
6990    pub fn extent<'m>(mut self, extent: Extent3d) -> ImageCopyBuilder {
6991        self.raw.extent = extent.raw;
6992        self
6993    }
6994
6995    pub fn get_src_subresource<'a>(&'a self) -> &'a ImageSubresourceLayers {
6996        unsafe { &*(&self.raw.srcSubresource as *const vks::VkImageSubresourceLayers as *const ImageSubresourceLayers) }
6997    }
6998
6999    pub fn get_src_subresource_mut<'a>(&'a mut self) -> &'a mut ImageSubresourceLayers {
7000        unsafe { &mut *(&mut self.raw.srcSubresource as *mut  vks::VkImageSubresourceLayers as *mut ImageSubresourceLayers) }
7001    }
7002
7003    pub fn get_src_offset<'a>(&'a self) -> &'a Offset3d {
7004        unsafe { &*(&self.raw.srcOffset as *const vks::VkOffset3D as *const Offset3d) }
7005    }
7006
7007    pub fn get_src_offset_mut<'a>(&'a mut self) -> &'a mut Offset3d {
7008        unsafe { &mut *(&mut self.raw.srcOffset as *mut  vks::VkOffset3D as *mut Offset3d) }
7009    }
7010
7011    pub fn get_dst_subresource<'a>(&'a self) -> &'a ImageSubresourceLayers {
7012        unsafe { &*(&self.raw.dstSubresource as *const vks::VkImageSubresourceLayers as *const ImageSubresourceLayers) }
7013    }
7014
7015    pub fn get_dst_subresource_mut<'a>(&'a mut self) -> &'a mut ImageSubresourceLayers {
7016        unsafe { &mut *(&mut self.raw.dstSubresource as *mut  vks::VkImageSubresourceLayers as *mut ImageSubresourceLayers) }
7017    }
7018
7019    pub fn get_dst_offset<'a>(&'a self) -> &'a Offset3d {
7020        unsafe { &*(&self.raw.dstOffset as *const vks::VkOffset3D as *const Offset3d) }
7021    }
7022
7023    pub fn get_dst_offset_mut<'a>(&'a mut self) -> &'a mut Offset3d {
7024        unsafe { &mut *(&mut self.raw.dstOffset as *mut  vks::VkOffset3D as *mut Offset3d) }
7025    }
7026
7027    pub fn get_extent<'a>(&'a self) -> &'a Extent3d {
7028        unsafe { &*(&self.raw.extent as *const vks::VkExtent3D as *const Extent3d) }
7029    }
7030
7031    pub fn get_extent_mut<'a>(&'a mut self) -> &'a mut Extent3d {
7032        unsafe { &mut *(&mut self.raw.extent as *mut  vks::VkExtent3D as *mut Extent3d) }
7033    }
7034
7035    pub fn build(self) -> ImageCopy {
7036        ImageCopy {
7037            raw: self.raw,
7038        }
7039    }
7040}
7041
7042
7043/// A `VkImageBlit`.
7044///
7045/// 
7046#[derive(Debug, Clone, Default)]
7047#[repr(C)]
7048pub struct ImageBlit {
7049    raw: vks::VkImageBlit,
7050}
7051
7052impl ImageBlit {
7053    pub fn builder() -> ImageBlitBuilder {
7054        ImageBlitBuilder::new()
7055    }
7056
7057    pub unsafe fn from_raw(raw: vks::VkImageBlit) -> ImageBlit {
7058        ImageBlit { raw, }
7059    }
7060
7061    pub fn src_subresource<'a>(&'a self) -> &'a ImageSubresourceLayers {
7062        unsafe { &*(&self.raw.srcSubresource as *const vks::VkImageSubresourceLayers as *const ImageSubresourceLayers) }
7063    }
7064
7065    pub fn src_subresource_mut<'a>(&'a mut self) -> &'a mut ImageSubresourceLayers {
7066        unsafe { &mut *(&mut self.raw.srcSubresource as *mut  vks::VkImageSubresourceLayers as *mut ImageSubresourceLayers) }
7067    }
7068
7069    pub fn src_offsets<'a>(&'a self) -> &[Offset3d] {
7070        unsafe { slice::from_raw_parts(&self.raw.srcOffsets as *const vks::VkOffset3D as *const _, 2 as usize) }
7071    }
7072
7073    pub fn dst_subresource<'a>(&'a self) -> &'a ImageSubresourceLayers {
7074        unsafe { &*(&self.raw.dstSubresource as *const vks::VkImageSubresourceLayers as *const ImageSubresourceLayers) }
7075    }
7076
7077    pub fn dst_subresource_mut<'a>(&'a mut self) -> &'a mut ImageSubresourceLayers {
7078        unsafe { &mut *(&mut self.raw.dstSubresource as *mut  vks::VkImageSubresourceLayers as *mut ImageSubresourceLayers) }
7079    }
7080
7081    pub fn dst_offsets<'a>(&'a self) -> &[Offset3d] {
7082        unsafe { slice::from_raw_parts(&self.raw.dstOffsets as *const vks::VkOffset3D as *const _, 2 as usize) }
7083    }
7084
7085    pub fn set_src_subresource<'m>(&mut self, src_subresource: ImageSubresourceLayers) {
7086        self.raw.srcSubresource = src_subresource.raw;
7087    }
7088
7089    pub fn set_src_offsets<'m>(&mut self, src_offsets: [Offset3d; 2]) {
7090        self.raw.srcOffsets = [src_offsets[0].raw, src_offsets[1].raw, ];
7091    }
7092
7093    pub fn set_dst_subresource<'m>(&mut self, dst_subresource: ImageSubresourceLayers) {
7094        self.raw.dstSubresource = dst_subresource.raw;
7095    }
7096
7097    pub fn set_dst_offsets<'m>(&mut self, dst_offsets: [Offset3d; 2]) {
7098        self.raw.dstOffsets = [dst_offsets[0].raw, dst_offsets[1].raw, ];
7099    }
7100
7101    pub fn as_raw(&self) -> &vks::VkImageBlit {
7102        &self.raw
7103    }
7104}
7105
7106impl From<ImageBlit> for vks::VkImageBlit {
7107    fn from(f: ImageBlit) -> vks::VkImageBlit {
7108        f.raw
7109    }
7110}
7111
7112
7113/// A builder for `VkImageBlit`.
7114///
7115/// 
7116#[derive(Debug, Clone, Default)]
7117pub struct ImageBlitBuilder {
7118    raw: vks::VkImageBlit,
7119}
7120
7121impl ImageBlitBuilder {
7122    pub fn new() -> ImageBlitBuilder {
7123        ImageBlitBuilder {
7124            raw: vks::VkImageBlit::default(),
7125        }
7126    }
7127
7128    pub fn src_subresource<'m>(mut self, src_subresource: ImageSubresourceLayers) -> ImageBlitBuilder {
7129        self.raw.srcSubresource = src_subresource.raw;
7130        self
7131    }
7132
7133    pub fn src_offsets<'m>(mut self, src_offsets: [Offset3d; 2]) -> ImageBlitBuilder {
7134        self.raw.srcOffsets = [src_offsets[0].raw, src_offsets[1].raw, ];
7135        self
7136    }
7137
7138    pub fn dst_subresource<'m>(mut self, dst_subresource: ImageSubresourceLayers) -> ImageBlitBuilder {
7139        self.raw.dstSubresource = dst_subresource.raw;
7140        self
7141    }
7142
7143    pub fn dst_offsets<'m>(mut self, dst_offsets: [Offset3d; 2]) -> ImageBlitBuilder {
7144        self.raw.dstOffsets = [dst_offsets[0].raw, dst_offsets[1].raw, ];
7145        self
7146    }
7147
7148    pub fn get_src_subresource<'a>(&'a self) -> &'a ImageSubresourceLayers {
7149        unsafe { &*(&self.raw.srcSubresource as *const vks::VkImageSubresourceLayers as *const ImageSubresourceLayers) }
7150    }
7151
7152    pub fn get_src_subresource_mut<'a>(&'a mut self) -> &'a mut ImageSubresourceLayers {
7153        unsafe { &mut *(&mut self.raw.srcSubresource as *mut  vks::VkImageSubresourceLayers as *mut ImageSubresourceLayers) }
7154    }
7155
7156    pub fn get_src_offsets<'a>(&'a self) -> &[Offset3d] {
7157        unsafe { slice::from_raw_parts(&self.raw.srcOffsets as *const vks::VkOffset3D as *const _, 2 as usize) }
7158    }
7159
7160    pub fn get_dst_subresource<'a>(&'a self) -> &'a ImageSubresourceLayers {
7161        unsafe { &*(&self.raw.dstSubresource as *const vks::VkImageSubresourceLayers as *const ImageSubresourceLayers) }
7162    }
7163
7164    pub fn get_dst_subresource_mut<'a>(&'a mut self) -> &'a mut ImageSubresourceLayers {
7165        unsafe { &mut *(&mut self.raw.dstSubresource as *mut  vks::VkImageSubresourceLayers as *mut ImageSubresourceLayers) }
7166    }
7167
7168    pub fn get_dst_offsets<'a>(&'a self) -> &[Offset3d] {
7169        unsafe { slice::from_raw_parts(&self.raw.dstOffsets as *const vks::VkOffset3D as *const _, 2 as usize) }
7170    }
7171
7172    pub fn build(self) -> ImageBlit {
7173        ImageBlit {
7174            raw: self.raw,
7175        }
7176    }
7177}
7178
7179
7180/// A `VkBufferImageCopy`.
7181///
7182/// 
7183#[derive(Debug, Clone, Default)]
7184#[repr(C)]
7185pub struct BufferImageCopy {
7186    raw: vks::VkBufferImageCopy,
7187}
7188
7189impl BufferImageCopy {
7190    pub fn builder() -> BufferImageCopyBuilder {
7191        BufferImageCopyBuilder::new()
7192    }
7193
7194    pub unsafe fn from_raw(raw: vks::VkBufferImageCopy) -> BufferImageCopy {
7195        BufferImageCopy { raw, }
7196    }
7197
7198    pub fn buffer_offset<'a>(&'a self) -> u64 {
7199        self.raw.bufferOffset.into()
7200    }
7201
7202    pub fn buffer_row_length<'a>(&'a self) -> u32 {
7203        self.raw.bufferRowLength.into()
7204    }
7205
7206    pub fn buffer_image_height<'a>(&'a self) -> u32 {
7207        self.raw.bufferImageHeight.into()
7208    }
7209
7210    pub fn image_subresource<'a>(&'a self) -> &'a ImageSubresourceLayers {
7211        unsafe { &*(&self.raw.imageSubresource as *const vks::VkImageSubresourceLayers as *const ImageSubresourceLayers) }
7212    }
7213
7214    pub fn image_subresource_mut<'a>(&'a mut self) -> &'a mut ImageSubresourceLayers {
7215        unsafe { &mut *(&mut self.raw.imageSubresource as *mut  vks::VkImageSubresourceLayers as *mut ImageSubresourceLayers) }
7216    }
7217
7218    pub fn image_offset<'a>(&'a self) -> &'a Offset3d {
7219        unsafe { &*(&self.raw.imageOffset as *const vks::VkOffset3D as *const Offset3d) }
7220    }
7221
7222    pub fn image_offset_mut<'a>(&'a mut self) -> &'a mut Offset3d {
7223        unsafe { &mut *(&mut self.raw.imageOffset as *mut  vks::VkOffset3D as *mut Offset3d) }
7224    }
7225
7226    pub fn image_extent<'a>(&'a self) -> &'a Extent3d {
7227        unsafe { &*(&self.raw.imageExtent as *const vks::VkExtent3D as *const Extent3d) }
7228    }
7229
7230    pub fn image_extent_mut<'a>(&'a mut self) -> &'a mut Extent3d {
7231        unsafe { &mut *(&mut self.raw.imageExtent as *mut  vks::VkExtent3D as *mut Extent3d) }
7232    }
7233
7234    pub fn set_buffer_offset<'m>(&mut self, buffer_offset: u64) {
7235        self.raw.bufferOffset = buffer_offset.into();
7236    }
7237
7238    pub fn set_buffer_row_length<'m>(&mut self, buffer_row_length: u32) {
7239        self.raw.bufferRowLength = buffer_row_length.into();
7240    }
7241
7242    pub fn set_buffer_image_height<'m>(&mut self, buffer_image_height: u32) {
7243        self.raw.bufferImageHeight = buffer_image_height.into();
7244    }
7245
7246    pub fn set_image_subresource<'m>(&mut self, image_subresource: ImageSubresourceLayers) {
7247        self.raw.imageSubresource = image_subresource.raw;
7248    }
7249
7250    pub fn set_image_offset<'m>(&mut self, image_offset: Offset3d) {
7251        self.raw.imageOffset = image_offset.raw;
7252    }
7253
7254    pub fn set_image_extent<'m>(&mut self, image_extent: Extent3d) {
7255        self.raw.imageExtent = image_extent.raw;
7256    }
7257
7258    pub fn as_raw(&self) -> &vks::VkBufferImageCopy {
7259        &self.raw
7260    }
7261}
7262
7263impl From<BufferImageCopy> for vks::VkBufferImageCopy {
7264    fn from(f: BufferImageCopy) -> vks::VkBufferImageCopy {
7265        f.raw
7266    }
7267}
7268
7269
7270/// A builder for `VkBufferImageCopy`.
7271///
7272/// 
7273#[derive(Debug, Clone, Default)]
7274pub struct BufferImageCopyBuilder {
7275    raw: vks::VkBufferImageCopy,
7276}
7277
7278impl BufferImageCopyBuilder {
7279    pub fn new() -> BufferImageCopyBuilder {
7280        BufferImageCopyBuilder {
7281            raw: vks::VkBufferImageCopy::default(),
7282        }
7283    }
7284
7285    pub fn buffer_offset<'m>(mut self, buffer_offset: u64) -> BufferImageCopyBuilder {
7286        self.raw.bufferOffset = buffer_offset.into();
7287        self
7288    }
7289
7290    pub fn buffer_row_length<'m>(mut self, buffer_row_length: u32) -> BufferImageCopyBuilder {
7291        self.raw.bufferRowLength = buffer_row_length.into();
7292        self
7293    }
7294
7295    pub fn buffer_image_height<'m>(mut self, buffer_image_height: u32) -> BufferImageCopyBuilder {
7296        self.raw.bufferImageHeight = buffer_image_height.into();
7297        self
7298    }
7299
7300    pub fn image_subresource<'m>(mut self, image_subresource: ImageSubresourceLayers) -> BufferImageCopyBuilder {
7301        self.raw.imageSubresource = image_subresource.raw;
7302        self
7303    }
7304
7305    pub fn image_offset<'m>(mut self, image_offset: Offset3d) -> BufferImageCopyBuilder {
7306        self.raw.imageOffset = image_offset.raw;
7307        self
7308    }
7309
7310    pub fn image_extent<'m>(mut self, image_extent: Extent3d) -> BufferImageCopyBuilder {
7311        self.raw.imageExtent = image_extent.raw;
7312        self
7313    }
7314
7315    pub fn get_buffer_offset<'a>(&'a self) -> u64 {
7316        self.raw.bufferOffset.into()
7317    }
7318
7319    pub fn get_buffer_row_length<'a>(&'a self) -> u32 {
7320        self.raw.bufferRowLength.into()
7321    }
7322
7323    pub fn get_buffer_image_height<'a>(&'a self) -> u32 {
7324        self.raw.bufferImageHeight.into()
7325    }
7326
7327    pub fn get_image_subresource<'a>(&'a self) -> &'a ImageSubresourceLayers {
7328        unsafe { &*(&self.raw.imageSubresource as *const vks::VkImageSubresourceLayers as *const ImageSubresourceLayers) }
7329    }
7330
7331    pub fn get_image_subresource_mut<'a>(&'a mut self) -> &'a mut ImageSubresourceLayers {
7332        unsafe { &mut *(&mut self.raw.imageSubresource as *mut  vks::VkImageSubresourceLayers as *mut ImageSubresourceLayers) }
7333    }
7334
7335    pub fn get_image_offset<'a>(&'a self) -> &'a Offset3d {
7336        unsafe { &*(&self.raw.imageOffset as *const vks::VkOffset3D as *const Offset3d) }
7337    }
7338
7339    pub fn get_image_offset_mut<'a>(&'a mut self) -> &'a mut Offset3d {
7340        unsafe { &mut *(&mut self.raw.imageOffset as *mut  vks::VkOffset3D as *mut Offset3d) }
7341    }
7342
7343    pub fn get_image_extent<'a>(&'a self) -> &'a Extent3d {
7344        unsafe { &*(&self.raw.imageExtent as *const vks::VkExtent3D as *const Extent3d) }
7345    }
7346
7347    pub fn get_image_extent_mut<'a>(&'a mut self) -> &'a mut Extent3d {
7348        unsafe { &mut *(&mut self.raw.imageExtent as *mut  vks::VkExtent3D as *mut Extent3d) }
7349    }
7350
7351    pub fn build(self) -> BufferImageCopy {
7352        BufferImageCopy {
7353            raw: self.raw,
7354        }
7355    }
7356}
7357
7358
7359/// A `VkImageResolve`.
7360///
7361/// 
7362#[derive(Debug, Clone, Default)]
7363#[repr(C)]
7364pub struct ImageResolve {
7365    raw: vks::VkImageResolve,
7366}
7367
7368impl ImageResolve {
7369    pub fn builder() -> ImageResolveBuilder {
7370        ImageResolveBuilder::new()
7371    }
7372
7373    pub unsafe fn from_raw(raw: vks::VkImageResolve) -> ImageResolve {
7374        ImageResolve { raw, }
7375    }
7376
7377    pub fn src_subresource<'a>(&'a self) -> &'a ImageSubresourceLayers {
7378        unsafe { &*(&self.raw.srcSubresource as *const vks::VkImageSubresourceLayers as *const ImageSubresourceLayers) }
7379    }
7380
7381    pub fn src_subresource_mut<'a>(&'a mut self) -> &'a mut ImageSubresourceLayers {
7382        unsafe { &mut *(&mut self.raw.srcSubresource as *mut  vks::VkImageSubresourceLayers as *mut ImageSubresourceLayers) }
7383    }
7384
7385    pub fn src_offset<'a>(&'a self) -> &'a Offset3d {
7386        unsafe { &*(&self.raw.srcOffset as *const vks::VkOffset3D as *const Offset3d) }
7387    }
7388
7389    pub fn src_offset_mut<'a>(&'a mut self) -> &'a mut Offset3d {
7390        unsafe { &mut *(&mut self.raw.srcOffset as *mut  vks::VkOffset3D as *mut Offset3d) }
7391    }
7392
7393    pub fn dst_subresource<'a>(&'a self) -> &'a ImageSubresourceLayers {
7394        unsafe { &*(&self.raw.dstSubresource as *const vks::VkImageSubresourceLayers as *const ImageSubresourceLayers) }
7395    }
7396
7397    pub fn dst_subresource_mut<'a>(&'a mut self) -> &'a mut ImageSubresourceLayers {
7398        unsafe { &mut *(&mut self.raw.dstSubresource as *mut  vks::VkImageSubresourceLayers as *mut ImageSubresourceLayers) }
7399    }
7400
7401    pub fn dst_offset<'a>(&'a self) -> &'a Offset3d {
7402        unsafe { &*(&self.raw.dstOffset as *const vks::VkOffset3D as *const Offset3d) }
7403    }
7404
7405    pub fn dst_offset_mut<'a>(&'a mut self) -> &'a mut Offset3d {
7406        unsafe { &mut *(&mut self.raw.dstOffset as *mut  vks::VkOffset3D as *mut Offset3d) }
7407    }
7408
7409    pub fn extent<'a>(&'a self) -> &'a Extent3d {
7410        unsafe { &*(&self.raw.extent as *const vks::VkExtent3D as *const Extent3d) }
7411    }
7412
7413    pub fn extent_mut<'a>(&'a mut self) -> &'a mut Extent3d {
7414        unsafe { &mut *(&mut self.raw.extent as *mut  vks::VkExtent3D as *mut Extent3d) }
7415    }
7416
7417    pub fn set_src_subresource<'m>(&mut self, src_subresource: ImageSubresourceLayers) {
7418        self.raw.srcSubresource = src_subresource.raw;
7419    }
7420
7421    pub fn set_src_offset<'m>(&mut self, src_offset: Offset3d) {
7422        self.raw.srcOffset = src_offset.raw;
7423    }
7424
7425    pub fn set_dst_subresource<'m>(&mut self, dst_subresource: ImageSubresourceLayers) {
7426        self.raw.dstSubresource = dst_subresource.raw;
7427    }
7428
7429    pub fn set_dst_offset<'m>(&mut self, dst_offset: Offset3d) {
7430        self.raw.dstOffset = dst_offset.raw;
7431    }
7432
7433    pub fn set_extent<'m>(&mut self, extent: Extent3d) {
7434        self.raw.extent = extent.raw;
7435    }
7436
7437    pub fn as_raw(&self) -> &vks::VkImageResolve {
7438        &self.raw
7439    }
7440}
7441
7442impl From<ImageResolve> for vks::VkImageResolve {
7443    fn from(f: ImageResolve) -> vks::VkImageResolve {
7444        f.raw
7445    }
7446}
7447
7448
7449/// A builder for `VkImageResolve`.
7450///
7451/// 
7452#[derive(Debug, Clone, Default)]
7453pub struct ImageResolveBuilder {
7454    raw: vks::VkImageResolve,
7455}
7456
7457impl ImageResolveBuilder {
7458    pub fn new() -> ImageResolveBuilder {
7459        ImageResolveBuilder {
7460            raw: vks::VkImageResolve::default(),
7461        }
7462    }
7463
7464    pub fn src_subresource<'m>(mut self, src_subresource: ImageSubresourceLayers) -> ImageResolveBuilder {
7465        self.raw.srcSubresource = src_subresource.raw;
7466        self
7467    }
7468
7469    pub fn src_offset<'m>(mut self, src_offset: Offset3d) -> ImageResolveBuilder {
7470        self.raw.srcOffset = src_offset.raw;
7471        self
7472    }
7473
7474    pub fn dst_subresource<'m>(mut self, dst_subresource: ImageSubresourceLayers) -> ImageResolveBuilder {
7475        self.raw.dstSubresource = dst_subresource.raw;
7476        self
7477    }
7478
7479    pub fn dst_offset<'m>(mut self, dst_offset: Offset3d) -> ImageResolveBuilder {
7480        self.raw.dstOffset = dst_offset.raw;
7481        self
7482    }
7483
7484    pub fn extent<'m>(mut self, extent: Extent3d) -> ImageResolveBuilder {
7485        self.raw.extent = extent.raw;
7486        self
7487    }
7488
7489    pub fn get_src_subresource<'a>(&'a self) -> &'a ImageSubresourceLayers {
7490        unsafe { &*(&self.raw.srcSubresource as *const vks::VkImageSubresourceLayers as *const ImageSubresourceLayers) }
7491    }
7492
7493    pub fn get_src_subresource_mut<'a>(&'a mut self) -> &'a mut ImageSubresourceLayers {
7494        unsafe { &mut *(&mut self.raw.srcSubresource as *mut  vks::VkImageSubresourceLayers as *mut ImageSubresourceLayers) }
7495    }
7496
7497    pub fn get_src_offset<'a>(&'a self) -> &'a Offset3d {
7498        unsafe { &*(&self.raw.srcOffset as *const vks::VkOffset3D as *const Offset3d) }
7499    }
7500
7501    pub fn get_src_offset_mut<'a>(&'a mut self) -> &'a mut Offset3d {
7502        unsafe { &mut *(&mut self.raw.srcOffset as *mut  vks::VkOffset3D as *mut Offset3d) }
7503    }
7504
7505    pub fn get_dst_subresource<'a>(&'a self) -> &'a ImageSubresourceLayers {
7506        unsafe { &*(&self.raw.dstSubresource as *const vks::VkImageSubresourceLayers as *const ImageSubresourceLayers) }
7507    }
7508
7509    pub fn get_dst_subresource_mut<'a>(&'a mut self) -> &'a mut ImageSubresourceLayers {
7510        unsafe { &mut *(&mut self.raw.dstSubresource as *mut  vks::VkImageSubresourceLayers as *mut ImageSubresourceLayers) }
7511    }
7512
7513    pub fn get_dst_offset<'a>(&'a self) -> &'a Offset3d {
7514        unsafe { &*(&self.raw.dstOffset as *const vks::VkOffset3D as *const Offset3d) }
7515    }
7516
7517    pub fn get_dst_offset_mut<'a>(&'a mut self) -> &'a mut Offset3d {
7518        unsafe { &mut *(&mut self.raw.dstOffset as *mut  vks::VkOffset3D as *mut Offset3d) }
7519    }
7520
7521    pub fn get_extent<'a>(&'a self) -> &'a Extent3d {
7522        unsafe { &*(&self.raw.extent as *const vks::VkExtent3D as *const Extent3d) }
7523    }
7524
7525    pub fn get_extent_mut<'a>(&'a mut self) -> &'a mut Extent3d {
7526        unsafe { &mut *(&mut self.raw.extent as *mut  vks::VkExtent3D as *mut Extent3d) }
7527    }
7528
7529    pub fn build(self) -> ImageResolve {
7530        ImageResolve {
7531            raw: self.raw,
7532        }
7533    }
7534}
7535
7536
7537/// A `VkShaderModuleCreateInfo`.
7538///
7539/// 
7540#[derive(Debug, Clone, Default)]
7541#[repr(C)]
7542pub struct ShaderModuleCreateInfo<'s> {
7543    raw: vks::VkShaderModuleCreateInfo,
7544    _p: PhantomData<&'s ()>,
7545}
7546
7547impl<'s> ShaderModuleCreateInfo<'s> {
7548    pub fn builder<'b>() -> ShaderModuleCreateInfoBuilder<'b> {
7549        ShaderModuleCreateInfoBuilder::new()
7550    }
7551
7552    pub unsafe fn from_raw(raw: vks::VkShaderModuleCreateInfo) -> ShaderModuleCreateInfo<'s> {
7553        ShaderModuleCreateInfo { raw, _p: PhantomData }
7554    }
7555
7556    pub fn next<'a>(&'a self) -> *const c_void {
7557        self.raw.pNext
7558    }
7559
7560    pub fn flags<'a>(&'a self) -> ShaderModuleCreateFlags {
7561        ShaderModuleCreateFlags::from_bits(self.raw.flags)
7562            .expect("ShaderModuleCreateInfo::flags: error converting flags")
7563    }
7564
7565    pub fn code<'a>(&'a self) -> &'a [u32] {
7566        unsafe { slice::from_raw_parts(self.raw.pCode as *const _, self.raw.codeSize as usize) }
7567    }
7568
7569    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
7570        self.raw.pNext = next;
7571    }
7572
7573    pub fn set_flags<'m>(&mut self, flags: ShaderModuleCreateFlags) {
7574        self.raw.flags = flags.bits();
7575    }
7576
7577    pub fn set_code<'m, 'a>(&mut self, code: &'a [u32])
7578            where 'a: 's {
7579        self.raw.codeSize = code.len() * 4;
7580        self.raw.pCode = code.as_ptr() as *const u32 as *const _;
7581    }
7582
7583    pub fn as_raw(&self) -> &vks::VkShaderModuleCreateInfo {
7584        &self.raw
7585    }
7586}
7587
7588impl<'s> From<ShaderModuleCreateInfo<'s>> for vks::VkShaderModuleCreateInfo {
7589    fn from(f: ShaderModuleCreateInfo<'s>) -> vks::VkShaderModuleCreateInfo {
7590        f.raw
7591    }
7592}
7593
7594
7595/// A builder for `VkShaderModuleCreateInfo`.
7596///
7597/// 
7598#[derive(Debug, Clone, Default)]
7599pub struct ShaderModuleCreateInfoBuilder<'b> {
7600    raw: vks::VkShaderModuleCreateInfo,
7601    _p: PhantomData<&'b ()>, 
7602}
7603
7604impl<'b> ShaderModuleCreateInfoBuilder<'b> {
7605    pub fn new() -> ShaderModuleCreateInfoBuilder<'b> {
7606        ShaderModuleCreateInfoBuilder {
7607            raw: vks::VkShaderModuleCreateInfo::default(),
7608            _p: PhantomData,
7609        }
7610    }
7611
7612    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ShaderModuleCreateInfoBuilder<'b> {
7613        self.raw.pNext = next;
7614        self
7615    }
7616
7617    pub fn flags<'m>(mut self, flags: ShaderModuleCreateFlags) -> ShaderModuleCreateInfoBuilder<'b> {
7618        self.raw.flags = flags.bits();
7619        self
7620    }
7621
7622    pub fn code<'m, 'a>(mut self, code: &'a [u32]) -> ShaderModuleCreateInfoBuilder<'b>
7623            where 'a: 'b {
7624        self.raw.codeSize = code.len() * 4;
7625        self.raw.pCode = code.as_ptr() as *const u32 as *const _;
7626        self
7627    }
7628
7629    pub fn get_next<'a>(&'a self) -> *const c_void {
7630        self.raw.pNext
7631    }
7632
7633    pub fn get_flags<'a>(&'a self) -> ShaderModuleCreateFlags {
7634        ShaderModuleCreateFlags::from_bits(self.raw.flags)
7635            .expect("ShaderModuleCreateInfo::flags: error converting flags")
7636    }
7637
7638    pub fn get_code<'a>(&'a self) -> &'a [u32] {
7639        unsafe { slice::from_raw_parts(self.raw.pCode as *const _, self.raw.codeSize as usize) }
7640    }
7641
7642    pub fn build(self) -> ShaderModuleCreateInfo<'b> {
7643        ShaderModuleCreateInfo {
7644            raw: self.raw,
7645            _p: PhantomData,
7646        }
7647    }
7648}
7649
7650
7651/// A `VkDescriptorSetLayoutBinding`.
7652///
7653/// 
7654#[derive(Debug, Clone, Default)]
7655#[repr(C)]
7656pub struct DescriptorSetLayoutBinding<'s> {
7657    raw: vks::VkDescriptorSetLayoutBinding,
7658    _p: PhantomData<&'s ()>,
7659}
7660
7661impl<'s> DescriptorSetLayoutBinding<'s> {
7662    pub fn builder<'b>() -> DescriptorSetLayoutBindingBuilder<'b> {
7663        DescriptorSetLayoutBindingBuilder::new()
7664    }
7665
7666    pub unsafe fn from_raw(raw: vks::VkDescriptorSetLayoutBinding) -> DescriptorSetLayoutBinding<'s> {
7667        DescriptorSetLayoutBinding { raw, _p: PhantomData }
7668    }
7669
7670    pub fn binding<'a>(&'a self) -> u32 {
7671        self.raw.binding.into()
7672    }
7673
7674    pub fn descriptor_type<'a>(&'a self) -> DescriptorType {
7675        self.raw.descriptorType.into()
7676    }
7677
7678    pub fn descriptor_count<'a>(&'a self) -> u32 {
7679        self.raw.descriptorCount.into()
7680    }
7681
7682    pub fn stage_flags<'a>(&'a self) -> ShaderStageFlags {
7683        ShaderStageFlags::from_bits(self.raw.stageFlags)
7684            .expect("DescriptorSetLayoutBinding::stage_flags: error converting flags")
7685    }
7686
7687    pub fn immutable_samplers<'a>(&'a self) -> &'a vks::VkSampler {
7688        unsafe { &*(self.raw.pImmutableSamplers as *const _) }
7689    }
7690
7691    pub fn set_binding<'m>(&mut self, binding: u32) {
7692        self.raw.binding = binding.into();
7693    }
7694
7695    pub fn set_descriptor_type<'m>(&mut self, descriptor_type: DescriptorType) {
7696        self.raw.descriptorType = descriptor_type.into();
7697    }
7698
7699    pub fn set_descriptor_count<'m>(&mut self, descriptor_count: u32) {
7700        self.raw.descriptorCount = descriptor_count.into();
7701    }
7702
7703    pub fn set_stage_flags<'m>(&mut self, stage_flags: ShaderStageFlags) {
7704        self.raw.stageFlags = stage_flags.bits();
7705    }
7706
7707    pub fn set_immutable_samplers<'m, 'a>(&mut self, immutable_samplers: &'a [SamplerHandle])
7708            where 'a: 's {
7709        self.raw.pImmutableSamplers = immutable_samplers.as_ptr() as *const vks::VkSampler;
7710    }
7711
7712    pub fn as_raw(&self) -> &vks::VkDescriptorSetLayoutBinding {
7713        &self.raw
7714    }
7715}
7716
7717impl<'s> From<DescriptorSetLayoutBinding<'s>> for vks::VkDescriptorSetLayoutBinding {
7718    fn from(f: DescriptorSetLayoutBinding<'s>) -> vks::VkDescriptorSetLayoutBinding {
7719        f.raw
7720    }
7721}
7722
7723
7724/// A builder for `VkDescriptorSetLayoutBinding`.
7725///
7726/// 
7727#[derive(Debug, Clone, Default)]
7728pub struct DescriptorSetLayoutBindingBuilder<'b> {
7729    raw: vks::VkDescriptorSetLayoutBinding,
7730    _p: PhantomData<&'b ()>, 
7731}
7732
7733impl<'b> DescriptorSetLayoutBindingBuilder<'b> {
7734    pub fn new() -> DescriptorSetLayoutBindingBuilder<'b> {
7735        DescriptorSetLayoutBindingBuilder {
7736            raw: vks::VkDescriptorSetLayoutBinding::default(),
7737            _p: PhantomData,
7738        }
7739    }
7740
7741    pub fn binding<'m>(mut self, binding: u32) -> DescriptorSetLayoutBindingBuilder<'b> {
7742        self.raw.binding = binding.into();
7743        self
7744    }
7745
7746    pub fn descriptor_type<'m>(mut self, descriptor_type: DescriptorType) -> DescriptorSetLayoutBindingBuilder<'b> {
7747        self.raw.descriptorType = descriptor_type.into();
7748        self
7749    }
7750
7751    pub fn descriptor_count<'m>(mut self, descriptor_count: u32) -> DescriptorSetLayoutBindingBuilder<'b> {
7752        self.raw.descriptorCount = descriptor_count.into();
7753        self
7754    }
7755
7756    pub fn stage_flags<'m>(mut self, stage_flags: ShaderStageFlags) -> DescriptorSetLayoutBindingBuilder<'b> {
7757        self.raw.stageFlags = stage_flags.bits();
7758        self
7759    }
7760
7761    pub fn immutable_samplers<'m, 'a>(mut self, immutable_samplers: &'a [SamplerHandle]) -> DescriptorSetLayoutBindingBuilder<'b>
7762            where 'a: 'b {
7763        self.raw.pImmutableSamplers = immutable_samplers.as_ptr() as *const vks::VkSampler;
7764        self
7765    }
7766
7767    pub fn get_binding<'a>(&'a self) -> u32 {
7768        self.raw.binding.into()
7769    }
7770
7771    pub fn get_descriptor_type<'a>(&'a self) -> DescriptorType {
7772        self.raw.descriptorType.into()
7773    }
7774
7775    pub fn get_descriptor_count<'a>(&'a self) -> u32 {
7776        self.raw.descriptorCount.into()
7777    }
7778
7779    pub fn get_stage_flags<'a>(&'a self) -> ShaderStageFlags {
7780        ShaderStageFlags::from_bits(self.raw.stageFlags)
7781            .expect("DescriptorSetLayoutBinding::stage_flags: error converting flags")
7782    }
7783
7784    pub fn get_immutable_samplers<'a>(&'a self) -> &'a vks::VkSampler {
7785        unsafe { &*(self.raw.pImmutableSamplers as *const _) }
7786    }
7787
7788    pub fn build(self) -> DescriptorSetLayoutBinding<'b> {
7789        DescriptorSetLayoutBinding {
7790            raw: self.raw,
7791            _p: PhantomData,
7792        }
7793    }
7794}
7795
7796
7797/// A `VkDescriptorSetLayoutCreateInfo`.
7798///
7799/// 
7800#[derive(Debug, Clone, Default)]
7801#[repr(C)]
7802pub struct DescriptorSetLayoutCreateInfo<'s> {
7803    raw: vks::VkDescriptorSetLayoutCreateInfo,
7804    _p: PhantomData<&'s ()>,
7805}
7806
7807impl<'s> DescriptorSetLayoutCreateInfo<'s> {
7808    pub fn builder<'b>() -> DescriptorSetLayoutCreateInfoBuilder<'b> {
7809        DescriptorSetLayoutCreateInfoBuilder::new()
7810    }
7811
7812    pub unsafe fn from_raw(raw: vks::VkDescriptorSetLayoutCreateInfo) -> DescriptorSetLayoutCreateInfo<'s> {
7813        DescriptorSetLayoutCreateInfo { raw, _p: PhantomData }
7814    }
7815
7816    pub fn next<'a>(&'a self) -> *const c_void {
7817        self.raw.pNext
7818    }
7819
7820    pub fn flags<'a>(&'a self) -> DescriptorSetLayoutCreateFlags {
7821        DescriptorSetLayoutCreateFlags::from_bits(self.raw.flags)
7822            .expect("DescriptorSetLayoutCreateInfo::flags: error converting flags")
7823    }
7824
7825    pub fn bindings<'a>(&'a self) -> &'a [DescriptorSetLayoutBinding] {
7826        unsafe { slice::from_raw_parts(self.raw.pBindings as *const _, self.raw.bindingCount as usize) }
7827    }
7828
7829    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
7830        self.raw.pNext = next;
7831    }
7832
7833    pub fn set_flags<'m>(&mut self, flags: DescriptorSetLayoutCreateFlags) {
7834        self.raw.flags = flags.bits();
7835    }
7836
7837    pub fn set_bindings<'m, 'a>(&mut self, bindings: &'a [DescriptorSetLayoutBinding])
7838            where 'a: 's {
7839        assert!(self.raw.bindingCount == 0 || self.raw.bindingCount == bindings.len() as _, 
7840            "count inconsistency found when specifying `DescriptorSetLayoutCreateInfo::bindings`.");
7841        self.raw.bindingCount = bindings.len() as _;
7842        self.raw.pBindings = bindings.as_ptr() as *const vks::VkDescriptorSetLayoutBinding;
7843    }
7844
7845    pub fn as_raw(&self) -> &vks::VkDescriptorSetLayoutCreateInfo {
7846        &self.raw
7847    }
7848}
7849
7850impl<'s> From<DescriptorSetLayoutCreateInfo<'s>> for vks::VkDescriptorSetLayoutCreateInfo {
7851    fn from(f: DescriptorSetLayoutCreateInfo<'s>) -> vks::VkDescriptorSetLayoutCreateInfo {
7852        f.raw
7853    }
7854}
7855
7856
7857/// A builder for `VkDescriptorSetLayoutCreateInfo`.
7858///
7859/// 
7860#[derive(Debug, Clone, Default)]
7861pub struct DescriptorSetLayoutCreateInfoBuilder<'b> {
7862    raw: vks::VkDescriptorSetLayoutCreateInfo,
7863    _p: PhantomData<&'b ()>, 
7864}
7865
7866impl<'b> DescriptorSetLayoutCreateInfoBuilder<'b> {
7867    pub fn new() -> DescriptorSetLayoutCreateInfoBuilder<'b> {
7868        DescriptorSetLayoutCreateInfoBuilder {
7869            raw: vks::VkDescriptorSetLayoutCreateInfo::default(),
7870            _p: PhantomData,
7871        }
7872    }
7873
7874    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DescriptorSetLayoutCreateInfoBuilder<'b> {
7875        self.raw.pNext = next;
7876        self
7877    }
7878
7879    pub fn flags<'m>(mut self, flags: DescriptorSetLayoutCreateFlags) -> DescriptorSetLayoutCreateInfoBuilder<'b> {
7880        self.raw.flags = flags.bits();
7881        self
7882    }
7883
7884    pub fn bindings<'m, 'a>(mut self, bindings: &'a [DescriptorSetLayoutBinding]) -> DescriptorSetLayoutCreateInfoBuilder<'b>
7885            where 'a: 'b {
7886        assert!(self.raw.bindingCount == 0 || self.raw.bindingCount == bindings.len() as _, 
7887            "count inconsistency found when specifying `DescriptorSetLayoutCreateInfo::bindings`.");
7888        self.raw.bindingCount = bindings.len() as _;
7889        self.raw.pBindings = bindings.as_ptr() as *const vks::VkDescriptorSetLayoutBinding;
7890        self
7891    }
7892
7893    pub fn get_next<'a>(&'a self) -> *const c_void {
7894        self.raw.pNext
7895    }
7896
7897    pub fn get_flags<'a>(&'a self) -> DescriptorSetLayoutCreateFlags {
7898        DescriptorSetLayoutCreateFlags::from_bits(self.raw.flags)
7899            .expect("DescriptorSetLayoutCreateInfo::flags: error converting flags")
7900    }
7901
7902    pub fn get_bindings<'a>(&'a self) -> &'a [DescriptorSetLayoutBinding] {
7903        unsafe { slice::from_raw_parts(self.raw.pBindings as *const _, self.raw.bindingCount as usize) }
7904    }
7905
7906    pub fn build(self) -> DescriptorSetLayoutCreateInfo<'b> {
7907        DescriptorSetLayoutCreateInfo {
7908            raw: self.raw,
7909            _p: PhantomData,
7910        }
7911    }
7912}
7913
7914
7915/// A `VkDescriptorPoolSize`.
7916///
7917/// 
7918#[derive(Debug, Clone, Default)]
7919#[repr(C)]
7920pub struct DescriptorPoolSize {
7921    raw: vks::VkDescriptorPoolSize,
7922}
7923
7924impl DescriptorPoolSize {
7925    pub fn builder() -> DescriptorPoolSizeBuilder {
7926        DescriptorPoolSizeBuilder::new()
7927    }
7928
7929    pub unsafe fn from_raw(raw: vks::VkDescriptorPoolSize) -> DescriptorPoolSize {
7930        DescriptorPoolSize { raw, }
7931    }
7932
7933    pub fn type_of<'a>(&'a self) -> DescriptorType {
7934        self.raw.type_.into()
7935    }
7936
7937    pub fn descriptor_count<'a>(&'a self) -> u32 {
7938        self.raw.descriptorCount.into()
7939    }
7940
7941    pub fn set_type_of<'m>(&mut self, type_of: DescriptorType) {
7942        self.raw.type_ = type_of.into();
7943    }
7944
7945    pub fn set_descriptor_count<'m>(&mut self, descriptor_count: u32) {
7946        self.raw.descriptorCount = descriptor_count.into();
7947    }
7948
7949    pub fn as_raw(&self) -> &vks::VkDescriptorPoolSize {
7950        &self.raw
7951    }
7952}
7953
7954impl From<DescriptorPoolSize> for vks::VkDescriptorPoolSize {
7955    fn from(f: DescriptorPoolSize) -> vks::VkDescriptorPoolSize {
7956        f.raw
7957    }
7958}
7959
7960
7961/// A builder for `VkDescriptorPoolSize`.
7962///
7963/// 
7964#[derive(Debug, Clone, Default)]
7965pub struct DescriptorPoolSizeBuilder {
7966    raw: vks::VkDescriptorPoolSize,
7967}
7968
7969impl DescriptorPoolSizeBuilder {
7970    pub fn new() -> DescriptorPoolSizeBuilder {
7971        DescriptorPoolSizeBuilder {
7972            raw: vks::VkDescriptorPoolSize::default(),
7973        }
7974    }
7975
7976    pub fn type_of<'m>(mut self, type_of: DescriptorType) -> DescriptorPoolSizeBuilder {
7977        self.raw.type_ = type_of.into();
7978        self
7979    }
7980
7981    pub fn descriptor_count<'m>(mut self, descriptor_count: u32) -> DescriptorPoolSizeBuilder {
7982        self.raw.descriptorCount = descriptor_count.into();
7983        self
7984    }
7985
7986    pub fn get_type_of<'a>(&'a self) -> DescriptorType {
7987        self.raw.type_.into()
7988    }
7989
7990    pub fn get_descriptor_count<'a>(&'a self) -> u32 {
7991        self.raw.descriptorCount.into()
7992    }
7993
7994    pub fn build(self) -> DescriptorPoolSize {
7995        DescriptorPoolSize {
7996            raw: self.raw,
7997        }
7998    }
7999}
8000
8001
8002/// A `VkDescriptorPoolCreateInfo`.
8003///
8004/// 
8005#[derive(Debug, Clone, Default)]
8006#[repr(C)]
8007pub struct DescriptorPoolCreateInfo<'s> {
8008    raw: vks::VkDescriptorPoolCreateInfo,
8009    _p: PhantomData<&'s ()>,
8010}
8011
8012impl<'s> DescriptorPoolCreateInfo<'s> {
8013    pub fn builder<'b>() -> DescriptorPoolCreateInfoBuilder<'b> {
8014        DescriptorPoolCreateInfoBuilder::new()
8015    }
8016
8017    pub unsafe fn from_raw(raw: vks::VkDescriptorPoolCreateInfo) -> DescriptorPoolCreateInfo<'s> {
8018        DescriptorPoolCreateInfo { raw, _p: PhantomData }
8019    }
8020
8021    pub fn next<'a>(&'a self) -> *const c_void {
8022        self.raw.pNext
8023    }
8024
8025    pub fn flags<'a>(&'a self) -> DescriptorPoolCreateFlags {
8026        DescriptorPoolCreateFlags::from_bits(self.raw.flags)
8027            .expect("DescriptorPoolCreateInfo::flags: error converting flags")
8028    }
8029
8030    pub fn max_sets<'a>(&'a self) -> u32 {
8031        self.raw.maxSets.into()
8032    }
8033
8034    pub fn pool_sizes<'a>(&'a self) -> &'a [DescriptorPoolSize] {
8035        unsafe { slice::from_raw_parts(self.raw.pPoolSizes as *const _, self.raw.poolSizeCount as usize) }
8036    }
8037
8038    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
8039        self.raw.pNext = next;
8040    }
8041
8042    pub fn set_flags<'m>(&mut self, flags: DescriptorPoolCreateFlags) {
8043        self.raw.flags = flags.bits();
8044    }
8045
8046    pub fn set_max_sets<'m>(&mut self, max_sets: u32) {
8047        self.raw.maxSets = max_sets.into();
8048    }
8049
8050    pub fn set_pool_sizes<'m, 'a>(&mut self, pool_sizes: &'a [DescriptorPoolSize])
8051            where 'a: 's {
8052        assert!(self.raw.poolSizeCount == 0 || self.raw.poolSizeCount == pool_sizes.len() as _, 
8053            "count inconsistency found when specifying `DescriptorPoolCreateInfo::pool_sizes`.");
8054        self.raw.poolSizeCount = pool_sizes.len() as _;
8055        self.raw.pPoolSizes = pool_sizes.as_ptr() as *const vks::VkDescriptorPoolSize;
8056    }
8057
8058    pub fn as_raw(&self) -> &vks::VkDescriptorPoolCreateInfo {
8059        &self.raw
8060    }
8061}
8062
8063impl<'s> From<DescriptorPoolCreateInfo<'s>> for vks::VkDescriptorPoolCreateInfo {
8064    fn from(f: DescriptorPoolCreateInfo<'s>) -> vks::VkDescriptorPoolCreateInfo {
8065        f.raw
8066    }
8067}
8068
8069
8070/// A builder for `VkDescriptorPoolCreateInfo`.
8071///
8072/// 
8073#[derive(Debug, Clone, Default)]
8074pub struct DescriptorPoolCreateInfoBuilder<'b> {
8075    raw: vks::VkDescriptorPoolCreateInfo,
8076    _p: PhantomData<&'b ()>, 
8077}
8078
8079impl<'b> DescriptorPoolCreateInfoBuilder<'b> {
8080    pub fn new() -> DescriptorPoolCreateInfoBuilder<'b> {
8081        DescriptorPoolCreateInfoBuilder {
8082            raw: vks::VkDescriptorPoolCreateInfo::default(),
8083            _p: PhantomData,
8084        }
8085    }
8086
8087    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DescriptorPoolCreateInfoBuilder<'b> {
8088        self.raw.pNext = next;
8089        self
8090    }
8091
8092    pub fn flags<'m>(mut self, flags: DescriptorPoolCreateFlags) -> DescriptorPoolCreateInfoBuilder<'b> {
8093        self.raw.flags = flags.bits();
8094        self
8095    }
8096
8097    pub fn max_sets<'m>(mut self, max_sets: u32) -> DescriptorPoolCreateInfoBuilder<'b> {
8098        self.raw.maxSets = max_sets.into();
8099        self
8100    }
8101
8102    pub fn pool_sizes<'m, 'a>(mut self, pool_sizes: &'a [DescriptorPoolSize]) -> DescriptorPoolCreateInfoBuilder<'b>
8103            where 'a: 'b {
8104        assert!(self.raw.poolSizeCount == 0 || self.raw.poolSizeCount == pool_sizes.len() as _, 
8105            "count inconsistency found when specifying `DescriptorPoolCreateInfo::pool_sizes`.");
8106        self.raw.poolSizeCount = pool_sizes.len() as _;
8107        self.raw.pPoolSizes = pool_sizes.as_ptr() as *const vks::VkDescriptorPoolSize;
8108        self
8109    }
8110
8111    pub fn get_next<'a>(&'a self) -> *const c_void {
8112        self.raw.pNext
8113    }
8114
8115    pub fn get_flags<'a>(&'a self) -> DescriptorPoolCreateFlags {
8116        DescriptorPoolCreateFlags::from_bits(self.raw.flags)
8117            .expect("DescriptorPoolCreateInfo::flags: error converting flags")
8118    }
8119
8120    pub fn get_max_sets<'a>(&'a self) -> u32 {
8121        self.raw.maxSets.into()
8122    }
8123
8124    pub fn get_pool_sizes<'a>(&'a self) -> &'a [DescriptorPoolSize] {
8125        unsafe { slice::from_raw_parts(self.raw.pPoolSizes as *const _, self.raw.poolSizeCount as usize) }
8126    }
8127
8128    pub fn build(self) -> DescriptorPoolCreateInfo<'b> {
8129        DescriptorPoolCreateInfo {
8130            raw: self.raw,
8131            _p: PhantomData,
8132        }
8133    }
8134}
8135
8136
8137/// A `VkDescriptorSetAllocateInfo`.
8138///
8139/// 
8140#[derive(Debug, Clone, Default)]
8141#[repr(C)]
8142pub struct DescriptorSetAllocateInfo<'s> {
8143    raw: vks::VkDescriptorSetAllocateInfo,
8144    _p: PhantomData<&'s ()>,
8145}
8146
8147impl<'s> DescriptorSetAllocateInfo<'s> {
8148    pub fn builder<'b>() -> DescriptorSetAllocateInfoBuilder<'b> {
8149        DescriptorSetAllocateInfoBuilder::new()
8150    }
8151
8152    pub unsafe fn from_raw(raw: vks::VkDescriptorSetAllocateInfo) -> DescriptorSetAllocateInfo<'s> {
8153        DescriptorSetAllocateInfo { raw, _p: PhantomData }
8154    }
8155
8156    pub fn next<'a>(&'a self) -> *const c_void {
8157        self.raw.pNext
8158    }
8159
8160    pub fn descriptor_pool<'a>(&'a self) -> vks::VkDescriptorPool {
8161        self.raw.descriptorPool
8162    }
8163
8164    pub fn set_layouts<'a>(&'a self) -> &'a [vks::VkDescriptorSetLayout] {
8165        unsafe { slice::from_raw_parts(self.raw.pSetLayouts as *const _, self.raw.descriptorSetCount as usize) }
8166    }
8167
8168    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
8169        self.raw.pNext = next;
8170    }
8171
8172    pub fn set_descriptor_pool<'m, H>(&mut self, descriptor_pool: H)
8173            where H: Handle<Target=DescriptorPoolHandle> {
8174        self.raw.descriptorPool = descriptor_pool.handle().0;
8175    }
8176
8177    pub fn set_set_layouts<'m, 'a>(&mut self, set_layouts: &'a [DescriptorSetLayoutHandle])
8178            where 'a: 's {
8179        assert!(self.raw.descriptorSetCount == 0 || self.raw.descriptorSetCount == set_layouts.len() as _, 
8180            "count inconsistency found when specifying `DescriptorSetAllocateInfo::set_layouts`.");
8181        self.raw.descriptorSetCount = set_layouts.len() as _;
8182        self.raw.pSetLayouts = set_layouts.as_ptr() as *const vks::VkDescriptorSetLayout;
8183    }
8184
8185    pub fn as_raw(&self) -> &vks::VkDescriptorSetAllocateInfo {
8186        &self.raw
8187    }
8188}
8189
8190impl<'s> From<DescriptorSetAllocateInfo<'s>> for vks::VkDescriptorSetAllocateInfo {
8191    fn from(f: DescriptorSetAllocateInfo<'s>) -> vks::VkDescriptorSetAllocateInfo {
8192        f.raw
8193    }
8194}
8195
8196
8197/// A builder for `VkDescriptorSetAllocateInfo`.
8198///
8199/// 
8200#[derive(Debug, Clone, Default)]
8201pub struct DescriptorSetAllocateInfoBuilder<'b> {
8202    raw: vks::VkDescriptorSetAllocateInfo,
8203    _p: PhantomData<&'b ()>, 
8204}
8205
8206impl<'b> DescriptorSetAllocateInfoBuilder<'b> {
8207    pub fn new() -> DescriptorSetAllocateInfoBuilder<'b> {
8208        DescriptorSetAllocateInfoBuilder {
8209            raw: vks::VkDescriptorSetAllocateInfo::default(),
8210            _p: PhantomData,
8211        }
8212    }
8213
8214    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DescriptorSetAllocateInfoBuilder<'b> {
8215        self.raw.pNext = next;
8216        self
8217    }
8218
8219    pub fn descriptor_pool<'m, H>(mut self, descriptor_pool: H) -> DescriptorSetAllocateInfoBuilder<'b>
8220            where H: Handle<Target=DescriptorPoolHandle> {
8221        self.raw.descriptorPool = descriptor_pool.handle().0;
8222        self
8223    }
8224
8225    pub fn set_layouts<'m, 'a>(mut self, set_layouts: &'a [DescriptorSetLayoutHandle]) -> DescriptorSetAllocateInfoBuilder<'b>
8226            where 'a: 'b {
8227        assert!(self.raw.descriptorSetCount == 0 || self.raw.descriptorSetCount == set_layouts.len() as _, 
8228            "count inconsistency found when specifying `DescriptorSetAllocateInfo::set_layouts`.");
8229        self.raw.descriptorSetCount = set_layouts.len() as _;
8230        self.raw.pSetLayouts = set_layouts.as_ptr() as *const vks::VkDescriptorSetLayout;
8231        self
8232    }
8233
8234    pub fn get_next<'a>(&'a self) -> *const c_void {
8235        self.raw.pNext
8236    }
8237
8238    pub fn get_descriptor_pool<'a>(&'a self) -> vks::VkDescriptorPool {
8239        self.raw.descriptorPool
8240    }
8241
8242    pub fn get_set_layouts<'a>(&'a self) -> &'a [vks::VkDescriptorSetLayout] {
8243        unsafe { slice::from_raw_parts(self.raw.pSetLayouts as *const _, self.raw.descriptorSetCount as usize) }
8244    }
8245
8246    pub fn build(self) -> DescriptorSetAllocateInfo<'b> {
8247        DescriptorSetAllocateInfo {
8248            raw: self.raw,
8249            _p: PhantomData,
8250        }
8251    }
8252}
8253
8254
8255/// A `VkSpecializationMapEntry`.
8256///
8257/// 
8258#[derive(Debug, Clone, Default)]
8259#[repr(C)]
8260pub struct SpecializationMapEntry {
8261    raw: vks::VkSpecializationMapEntry,
8262}
8263
8264impl SpecializationMapEntry {
8265    pub fn builder() -> SpecializationMapEntryBuilder {
8266        SpecializationMapEntryBuilder::new()
8267    }
8268
8269    pub unsafe fn from_raw(raw: vks::VkSpecializationMapEntry) -> SpecializationMapEntry {
8270        SpecializationMapEntry { raw, }
8271    }
8272
8273    pub fn constant_id<'a>(&'a self) -> u32 {
8274        self.raw.constantID.into()
8275    }
8276
8277    pub fn offset<'a>(&'a self) -> u32 {
8278        self.raw.offset.into()
8279    }
8280
8281    pub fn size<'a>(&'a self) -> usize {
8282        self.raw.size.into()
8283    }
8284
8285    pub fn set_constant_id<'m>(&mut self, constant_id: u32) {
8286        self.raw.constantID = constant_id.into();
8287    }
8288
8289    pub fn set_offset<'m>(&mut self, offset: u32) {
8290        self.raw.offset = offset.into();
8291    }
8292
8293    pub fn set_size<'m>(&mut self, size: usize) {
8294        self.raw.size = size.into();
8295    }
8296
8297    pub fn as_raw(&self) -> &vks::VkSpecializationMapEntry {
8298        &self.raw
8299    }
8300}
8301
8302impl From<SpecializationMapEntry> for vks::VkSpecializationMapEntry {
8303    fn from(f: SpecializationMapEntry) -> vks::VkSpecializationMapEntry {
8304        f.raw
8305    }
8306}
8307
8308
8309/// A builder for `VkSpecializationMapEntry`.
8310///
8311/// 
8312#[derive(Debug, Clone, Default)]
8313pub struct SpecializationMapEntryBuilder {
8314    raw: vks::VkSpecializationMapEntry,
8315}
8316
8317impl SpecializationMapEntryBuilder {
8318    pub fn new() -> SpecializationMapEntryBuilder {
8319        SpecializationMapEntryBuilder {
8320            raw: vks::VkSpecializationMapEntry::default(),
8321        }
8322    }
8323
8324    pub fn constant_id<'m>(mut self, constant_id: u32) -> SpecializationMapEntryBuilder {
8325        self.raw.constantID = constant_id.into();
8326        self
8327    }
8328
8329    pub fn offset<'m>(mut self, offset: u32) -> SpecializationMapEntryBuilder {
8330        self.raw.offset = offset.into();
8331        self
8332    }
8333
8334    pub fn size<'m>(mut self, size: usize) -> SpecializationMapEntryBuilder {
8335        self.raw.size = size.into();
8336        self
8337    }
8338
8339    pub fn get_constant_id<'a>(&'a self) -> u32 {
8340        self.raw.constantID.into()
8341    }
8342
8343    pub fn get_offset<'a>(&'a self) -> u32 {
8344        self.raw.offset.into()
8345    }
8346
8347    pub fn get_size<'a>(&'a self) -> usize {
8348        self.raw.size.into()
8349    }
8350
8351    pub fn build(self) -> SpecializationMapEntry {
8352        SpecializationMapEntry {
8353            raw: self.raw,
8354        }
8355    }
8356}
8357
8358
8359/// A `VkSpecializationInfo`.
8360///
8361/// 
8362#[derive(Debug, Clone, Default)]
8363#[repr(C)]
8364pub struct SpecializationInfo<'s> {
8365    raw: vks::VkSpecializationInfo,
8366    _p: PhantomData<&'s ()>,
8367}
8368
8369impl<'s> SpecializationInfo<'s> {
8370    pub fn builder<'b>() -> SpecializationInfoBuilder<'b> {
8371        SpecializationInfoBuilder::new()
8372    }
8373
8374    pub unsafe fn from_raw(raw: vks::VkSpecializationInfo) -> SpecializationInfo<'s> {
8375        SpecializationInfo { raw, _p: PhantomData }
8376    }
8377
8378    pub fn map_entries<'a>(&'a self) -> &'a [SpecializationMapEntry] {
8379        unsafe { slice::from_raw_parts(self.raw.pMapEntries as *const _, self.raw.mapEntryCount as usize) }
8380    }
8381
8382    pub fn data_size<'a>(&'a self) -> usize {
8383        self.raw.dataSize.into()
8384    }
8385
8386    pub fn data<'a>(&'a self) -> *const c_void {
8387        self.raw.pData
8388    }
8389
8390    pub fn set_map_entries<'m, 'a>(&mut self, map_entries: &'a [SpecializationMapEntry])
8391            where 'a: 's {
8392        assert!(self.raw.mapEntryCount == 0 || self.raw.mapEntryCount == map_entries.len() as _, 
8393            "count inconsistency found when specifying `SpecializationInfo::map_entries`.");
8394        self.raw.mapEntryCount = map_entries.len() as _;
8395        self.raw.pMapEntries = map_entries.as_ptr() as *const vks::VkSpecializationMapEntry;
8396    }
8397
8398    pub fn set_data_size<'m>(&mut self, data_size: usize) {
8399        self.raw.dataSize = data_size.into();
8400    }
8401
8402    pub unsafe fn set_data<'m>(&mut self, data: *const c_void) {
8403        self.raw.pData = data;
8404    }
8405
8406    pub fn as_raw(&self) -> &vks::VkSpecializationInfo {
8407        &self.raw
8408    }
8409}
8410
8411impl<'s> From<SpecializationInfo<'s>> for vks::VkSpecializationInfo {
8412    fn from(f: SpecializationInfo<'s>) -> vks::VkSpecializationInfo {
8413        f.raw
8414    }
8415}
8416
8417
8418/// A builder for `VkSpecializationInfo`.
8419///
8420/// 
8421#[derive(Debug, Clone, Default)]
8422pub struct SpecializationInfoBuilder<'b> {
8423    raw: vks::VkSpecializationInfo,
8424    _p: PhantomData<&'b ()>, 
8425}
8426
8427impl<'b> SpecializationInfoBuilder<'b> {
8428    pub fn new() -> SpecializationInfoBuilder<'b> {
8429        SpecializationInfoBuilder {
8430            raw: vks::VkSpecializationInfo::default(),
8431            _p: PhantomData,
8432        }
8433    }
8434
8435    pub fn map_entries<'m, 'a>(mut self, map_entries: &'a [SpecializationMapEntry]) -> SpecializationInfoBuilder<'b>
8436            where 'a: 'b {
8437        assert!(self.raw.mapEntryCount == 0 || self.raw.mapEntryCount == map_entries.len() as _, 
8438            "count inconsistency found when specifying `SpecializationInfo::map_entries`.");
8439        self.raw.mapEntryCount = map_entries.len() as _;
8440        self.raw.pMapEntries = map_entries.as_ptr() as *const vks::VkSpecializationMapEntry;
8441        self
8442    }
8443
8444    pub fn data_size<'m>(mut self, data_size: usize) -> SpecializationInfoBuilder<'b> {
8445        self.raw.dataSize = data_size.into();
8446        self
8447    }
8448
8449    pub unsafe fn data<'m>(mut self, data: *const c_void) -> SpecializationInfoBuilder<'b> {
8450        self.raw.pData = data;
8451        self
8452    }
8453
8454    pub fn get_map_entries<'a>(&'a self) -> &'a [SpecializationMapEntry] {
8455        unsafe { slice::from_raw_parts(self.raw.pMapEntries as *const _, self.raw.mapEntryCount as usize) }
8456    }
8457
8458    pub fn get_data_size<'a>(&'a self) -> usize {
8459        self.raw.dataSize.into()
8460    }
8461
8462    pub fn get_data<'a>(&'a self) -> *const c_void {
8463        self.raw.pData
8464    }
8465
8466    pub fn build(self) -> SpecializationInfo<'b> {
8467        SpecializationInfo {
8468            raw: self.raw,
8469            _p: PhantomData,
8470        }
8471    }
8472}
8473
8474
8475/// A `VkPipelineShaderStageCreateInfo`.
8476///
8477/// 
8478#[derive(Debug, Clone, Default)]
8479#[repr(C)]
8480pub struct PipelineShaderStageCreateInfo<'s> {
8481    raw: vks::VkPipelineShaderStageCreateInfo,
8482    _p: PhantomData<&'s ()>,
8483}
8484
8485impl<'s> PipelineShaderStageCreateInfo<'s> {
8486    pub fn builder<'b>() -> PipelineShaderStageCreateInfoBuilder<'b> {
8487        PipelineShaderStageCreateInfoBuilder::new()
8488    }
8489
8490    pub unsafe fn from_raw(raw: vks::VkPipelineShaderStageCreateInfo) -> PipelineShaderStageCreateInfo<'s> {
8491        PipelineShaderStageCreateInfo { raw, _p: PhantomData }
8492    }
8493
8494    pub fn next<'a>(&'a self) -> *const c_void {
8495        self.raw.pNext
8496    }
8497
8498    pub fn flags<'a>(&'a self) -> PipelineShaderStageCreateFlags {
8499        PipelineShaderStageCreateFlags::from_bits(self.raw.flags)
8500            .expect("PipelineShaderStageCreateInfo::flags: error converting flags")
8501    }
8502
8503    pub fn stage<'a>(&'a self) -> ShaderStageFlags {
8504        ShaderStageFlags::from_bits(self.raw.stage)
8505            .expect("PipelineShaderStageCreateInfo::stage: error converting flags")
8506    }
8507
8508    pub fn module<'a>(&'a self) -> vks::VkShaderModule {
8509        self.raw.module
8510    }
8511
8512    pub fn name<'a>(&'a self) -> &'a CStr {
8513        unsafe { CStr::from_ptr(self.raw.pName) }
8514    }
8515
8516    pub fn specialization_info<'a>(&'a self) -> &'a SpecializationInfo {
8517        unsafe { &*(self.raw.pSpecializationInfo as *const vks::VkSpecializationInfo as *const _) }
8518    }
8519
8520    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
8521        self.raw.pNext = next;
8522    }
8523
8524    pub fn set_flags<'m>(&mut self, flags: PipelineShaderStageCreateFlags) {
8525        self.raw.flags = flags.bits();
8526    }
8527
8528    pub fn set_stage<'m>(&mut self, stage: ShaderStageFlags) {
8529        self.raw.stage = stage.bits();
8530    }
8531
8532    pub fn set_module<'m, H>(&mut self, module: H)
8533            where H: Handle<Target=ShaderModuleHandle> {
8534        self.raw.module = module.handle().0;
8535    }
8536
8537    pub fn set_name<'m, 'a>(&mut self, name: &'a CStr)
8538            where 'a: 's {
8539        self.raw.pName = name.as_ptr();
8540    }
8541
8542    pub fn set_specialization_info<'m, 'a>(&mut self, specialization_info: &'a SpecializationInfo)
8543            where 'a: 's {
8544        self.raw.pSpecializationInfo = specialization_info.as_raw();
8545    }
8546
8547    pub fn as_raw(&self) -> &vks::VkPipelineShaderStageCreateInfo {
8548        &self.raw
8549    }
8550}
8551
8552impl<'s> From<PipelineShaderStageCreateInfo<'s>> for vks::VkPipelineShaderStageCreateInfo {
8553    fn from(f: PipelineShaderStageCreateInfo<'s>) -> vks::VkPipelineShaderStageCreateInfo {
8554        f.raw
8555    }
8556}
8557
8558
8559/// A builder for `VkPipelineShaderStageCreateInfo`.
8560///
8561/// 
8562#[derive(Debug, Clone, Default)]
8563pub struct PipelineShaderStageCreateInfoBuilder<'b> {
8564    raw: vks::VkPipelineShaderStageCreateInfo,
8565    _p: PhantomData<&'b ()>, 
8566}
8567
8568impl<'b> PipelineShaderStageCreateInfoBuilder<'b> {
8569    pub fn new() -> PipelineShaderStageCreateInfoBuilder<'b> {
8570        PipelineShaderStageCreateInfoBuilder {
8571            raw: vks::VkPipelineShaderStageCreateInfo::default(),
8572            _p: PhantomData,
8573        }
8574    }
8575
8576    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PipelineShaderStageCreateInfoBuilder<'b> {
8577        self.raw.pNext = next;
8578        self
8579    }
8580
8581    pub fn flags<'m>(mut self, flags: PipelineShaderStageCreateFlags) -> PipelineShaderStageCreateInfoBuilder<'b> {
8582        self.raw.flags = flags.bits();
8583        self
8584    }
8585
8586    pub fn stage<'m>(mut self, stage: ShaderStageFlags) -> PipelineShaderStageCreateInfoBuilder<'b> {
8587        self.raw.stage = stage.bits();
8588        self
8589    }
8590
8591    pub fn module<'m, H>(mut self, module: H) -> PipelineShaderStageCreateInfoBuilder<'b>
8592            where H: Handle<Target=ShaderModuleHandle> {
8593        self.raw.module = module.handle().0;
8594        self
8595    }
8596
8597    pub fn name<'m, 'a>(mut self, name: &'a CStr) -> PipelineShaderStageCreateInfoBuilder<'b>
8598            where 'a: 'b {
8599        self.raw.pName = name.as_ptr();
8600        self
8601    }
8602
8603    pub fn specialization_info<'m, 'a>(mut self, specialization_info: &'a SpecializationInfo) -> PipelineShaderStageCreateInfoBuilder<'b>
8604            where 'a: 'b {
8605        self.raw.pSpecializationInfo = specialization_info.as_raw();
8606        self
8607    }
8608
8609    pub fn get_next<'a>(&'a self) -> *const c_void {
8610        self.raw.pNext
8611    }
8612
8613    pub fn get_flags<'a>(&'a self) -> PipelineShaderStageCreateFlags {
8614        PipelineShaderStageCreateFlags::from_bits(self.raw.flags)
8615            .expect("PipelineShaderStageCreateInfo::flags: error converting flags")
8616    }
8617
8618    pub fn get_stage<'a>(&'a self) -> ShaderStageFlags {
8619        ShaderStageFlags::from_bits(self.raw.stage)
8620            .expect("PipelineShaderStageCreateInfo::stage: error converting flags")
8621    }
8622
8623    pub fn get_module<'a>(&'a self) -> vks::VkShaderModule {
8624        self.raw.module
8625    }
8626
8627    pub fn get_name<'a>(&'a self) -> &'a CStr {
8628        unsafe { CStr::from_ptr(self.raw.pName) }
8629    }
8630
8631    pub fn get_specialization_info<'a>(&'a self) -> &'a SpecializationInfo {
8632        unsafe { &*(self.raw.pSpecializationInfo as *const vks::VkSpecializationInfo as *const _) }
8633    }
8634
8635    pub fn build(self) -> PipelineShaderStageCreateInfo<'b> {
8636        PipelineShaderStageCreateInfo {
8637            raw: self.raw,
8638            _p: PhantomData,
8639        }
8640    }
8641}
8642
8643
8644/// A `VkComputePipelineCreateInfo`.
8645///
8646/// 
8647#[derive(Debug, Clone, Default)]
8648#[repr(C)]
8649pub struct ComputePipelineCreateInfo<'s> {
8650    raw: vks::VkComputePipelineCreateInfo,
8651    _p: PhantomData<&'s ()>,
8652}
8653
8654impl<'s> ComputePipelineCreateInfo<'s> {
8655    pub fn builder<'b>() -> ComputePipelineCreateInfoBuilder<'b> {
8656        ComputePipelineCreateInfoBuilder::new()
8657    }
8658
8659    pub unsafe fn from_raw(raw: vks::VkComputePipelineCreateInfo) -> ComputePipelineCreateInfo<'s> {
8660        ComputePipelineCreateInfo { raw, _p: PhantomData }
8661    }
8662
8663    pub fn next<'a>(&'a self) -> *const c_void {
8664        self.raw.pNext
8665    }
8666
8667    pub fn flags<'a>(&'a self) -> PipelineCreateFlags {
8668        PipelineCreateFlags::from_bits(self.raw.flags)
8669            .expect("ComputePipelineCreateInfo::flags: error converting flags")
8670    }
8671
8672    pub fn stage<'a>(&'a self) -> &'a PipelineShaderStageCreateInfo {
8673        unsafe { &*(&self.raw.stage as *const vks::VkPipelineShaderStageCreateInfo as *const PipelineShaderStageCreateInfo) }
8674    }
8675
8676    pub fn stage_mut<'a>(&'a mut self) -> &'a mut PipelineShaderStageCreateInfo {
8677        unsafe { &mut *(&mut self.raw.stage as *mut  vks::VkPipelineShaderStageCreateInfo as *mut PipelineShaderStageCreateInfo) }
8678    }
8679
8680    pub fn layout<'a>(&'a self) -> vks::VkPipelineLayout {
8681        self.raw.layout
8682    }
8683
8684    pub fn base_pipeline_handle<'a>(&'a self) -> vks::VkPipeline {
8685        self.raw.basePipelineHandle
8686    }
8687
8688    pub fn base_pipeline_index<'a>(&'a self) -> i32 {
8689        self.raw.basePipelineIndex.into()
8690    }
8691
8692    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
8693        self.raw.pNext = next;
8694    }
8695
8696    pub fn set_flags<'m>(&mut self, flags: PipelineCreateFlags) {
8697        self.raw.flags = flags.bits();
8698    }
8699
8700    pub fn set_stage<'m>(&mut self, stage: PipelineShaderStageCreateInfo) {
8701        self.raw.stage = stage.raw;
8702    }
8703
8704    pub fn set_layout<'m, H>(&mut self, layout: H)
8705            where H: Handle<Target=PipelineLayoutHandle> {
8706        self.raw.layout = layout.handle().0;
8707    }
8708
8709    pub fn set_base_pipeline_handle<'m, H>(&mut self, base_pipeline_handle: H)
8710            where H: Handle<Target=PipelineHandle> {
8711        self.raw.basePipelineHandle = base_pipeline_handle.handle().0;
8712    }
8713
8714    pub fn set_base_pipeline_index<'m>(&mut self, base_pipeline_index: i32) {
8715        self.raw.basePipelineIndex = base_pipeline_index.into();
8716    }
8717
8718    pub fn as_raw(&self) -> &vks::VkComputePipelineCreateInfo {
8719        &self.raw
8720    }
8721}
8722
8723impl<'s> From<ComputePipelineCreateInfo<'s>> for vks::VkComputePipelineCreateInfo {
8724    fn from(f: ComputePipelineCreateInfo<'s>) -> vks::VkComputePipelineCreateInfo {
8725        f.raw
8726    }
8727}
8728
8729
8730/// A builder for `VkComputePipelineCreateInfo`.
8731///
8732/// 
8733#[derive(Debug, Clone, Default)]
8734pub struct ComputePipelineCreateInfoBuilder<'b> {
8735    raw: vks::VkComputePipelineCreateInfo,
8736    _p: PhantomData<&'b ()>, 
8737}
8738
8739impl<'b> ComputePipelineCreateInfoBuilder<'b> {
8740    pub fn new() -> ComputePipelineCreateInfoBuilder<'b> {
8741        ComputePipelineCreateInfoBuilder {
8742            raw: vks::VkComputePipelineCreateInfo::default(),
8743            _p: PhantomData,
8744        }
8745    }
8746
8747    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ComputePipelineCreateInfoBuilder<'b> {
8748        self.raw.pNext = next;
8749        self
8750    }
8751
8752    pub fn flags<'m>(mut self, flags: PipelineCreateFlags) -> ComputePipelineCreateInfoBuilder<'b> {
8753        self.raw.flags = flags.bits();
8754        self
8755    }
8756
8757    pub fn stage<'m>(mut self, stage: PipelineShaderStageCreateInfo) -> ComputePipelineCreateInfoBuilder<'b> {
8758        self.raw.stage = stage.raw;
8759        self
8760    }
8761
8762    pub fn layout<'m, H>(mut self, layout: H) -> ComputePipelineCreateInfoBuilder<'b>
8763            where H: Handle<Target=PipelineLayoutHandle> {
8764        self.raw.layout = layout.handle().0;
8765        self
8766    }
8767
8768    pub fn base_pipeline_handle<'m, H>(mut self, base_pipeline_handle: H) -> ComputePipelineCreateInfoBuilder<'b>
8769            where H: Handle<Target=PipelineHandle> {
8770        self.raw.basePipelineHandle = base_pipeline_handle.handle().0;
8771        self
8772    }
8773
8774    pub fn base_pipeline_index<'m>(mut self, base_pipeline_index: i32) -> ComputePipelineCreateInfoBuilder<'b> {
8775        self.raw.basePipelineIndex = base_pipeline_index.into();
8776        self
8777    }
8778
8779    pub fn get_next<'a>(&'a self) -> *const c_void {
8780        self.raw.pNext
8781    }
8782
8783    pub fn get_flags<'a>(&'a self) -> PipelineCreateFlags {
8784        PipelineCreateFlags::from_bits(self.raw.flags)
8785            .expect("ComputePipelineCreateInfo::flags: error converting flags")
8786    }
8787
8788    pub fn get_stage<'a>(&'a self) -> &'a PipelineShaderStageCreateInfo {
8789        unsafe { &*(&self.raw.stage as *const vks::VkPipelineShaderStageCreateInfo as *const PipelineShaderStageCreateInfo) }
8790    }
8791
8792    pub fn get_stage_mut<'a>(&'a mut self) -> &'a mut PipelineShaderStageCreateInfo {
8793        unsafe { &mut *(&mut self.raw.stage as *mut  vks::VkPipelineShaderStageCreateInfo as *mut PipelineShaderStageCreateInfo) }
8794    }
8795
8796    pub fn get_layout<'a>(&'a self) -> vks::VkPipelineLayout {
8797        self.raw.layout
8798    }
8799
8800    pub fn get_base_pipeline_handle<'a>(&'a self) -> vks::VkPipeline {
8801        self.raw.basePipelineHandle
8802    }
8803
8804    pub fn get_base_pipeline_index<'a>(&'a self) -> i32 {
8805        self.raw.basePipelineIndex.into()
8806    }
8807
8808    pub fn build(self) -> ComputePipelineCreateInfo<'b> {
8809        ComputePipelineCreateInfo {
8810            raw: self.raw,
8811            _p: PhantomData,
8812        }
8813    }
8814}
8815
8816
8817/// A `VkVertexInputBindingDescription`.
8818///
8819/// 
8820#[derive(Debug, Clone, Default)]
8821#[repr(C)]
8822pub struct VertexInputBindingDescription {
8823    raw: vks::VkVertexInputBindingDescription,
8824}
8825
8826impl VertexInputBindingDescription {
8827    pub fn builder() -> VertexInputBindingDescriptionBuilder {
8828        VertexInputBindingDescriptionBuilder::new()
8829    }
8830
8831    pub unsafe fn from_raw(raw: vks::VkVertexInputBindingDescription) -> VertexInputBindingDescription {
8832        VertexInputBindingDescription { raw, }
8833    }
8834
8835    pub fn binding<'a>(&'a self) -> u32 {
8836        self.raw.binding.into()
8837    }
8838
8839    pub fn stride<'a>(&'a self) -> u32 {
8840        self.raw.stride.into()
8841    }
8842
8843    pub fn input_rate<'a>(&'a self) -> VertexInputRate {
8844        self.raw.inputRate.into()
8845    }
8846
8847    pub fn set_binding<'m>(&mut self, binding: u32) {
8848        self.raw.binding = binding.into();
8849    }
8850
8851    pub fn set_stride<'m>(&mut self, stride: u32) {
8852        self.raw.stride = stride.into();
8853    }
8854
8855    pub fn set_input_rate<'m>(&mut self, input_rate: VertexInputRate) {
8856        self.raw.inputRate = input_rate.into();
8857    }
8858
8859    pub fn as_raw(&self) -> &vks::VkVertexInputBindingDescription {
8860        &self.raw
8861    }
8862}
8863
8864impl From<VertexInputBindingDescription> for vks::VkVertexInputBindingDescription {
8865    fn from(f: VertexInputBindingDescription) -> vks::VkVertexInputBindingDescription {
8866        f.raw
8867    }
8868}
8869
8870
8871/// A builder for `VkVertexInputBindingDescription`.
8872///
8873/// 
8874#[derive(Debug, Clone, Default)]
8875pub struct VertexInputBindingDescriptionBuilder {
8876    raw: vks::VkVertexInputBindingDescription,
8877}
8878
8879impl VertexInputBindingDescriptionBuilder {
8880    pub fn new() -> VertexInputBindingDescriptionBuilder {
8881        VertexInputBindingDescriptionBuilder {
8882            raw: vks::VkVertexInputBindingDescription::default(),
8883        }
8884    }
8885
8886    pub fn binding<'m>(mut self, binding: u32) -> VertexInputBindingDescriptionBuilder {
8887        self.raw.binding = binding.into();
8888        self
8889    }
8890
8891    pub fn stride<'m>(mut self, stride: u32) -> VertexInputBindingDescriptionBuilder {
8892        self.raw.stride = stride.into();
8893        self
8894    }
8895
8896    pub fn input_rate<'m>(mut self, input_rate: VertexInputRate) -> VertexInputBindingDescriptionBuilder {
8897        self.raw.inputRate = input_rate.into();
8898        self
8899    }
8900
8901    pub fn get_binding<'a>(&'a self) -> u32 {
8902        self.raw.binding.into()
8903    }
8904
8905    pub fn get_stride<'a>(&'a self) -> u32 {
8906        self.raw.stride.into()
8907    }
8908
8909    pub fn get_input_rate<'a>(&'a self) -> VertexInputRate {
8910        self.raw.inputRate.into()
8911    }
8912
8913    pub fn build(self) -> VertexInputBindingDescription {
8914        VertexInputBindingDescription {
8915            raw: self.raw,
8916        }
8917    }
8918}
8919
8920
8921/// A `VkVertexInputAttributeDescription`.
8922///
8923/// 
8924#[derive(Debug, Clone, Default)]
8925#[repr(C)]
8926pub struct VertexInputAttributeDescription {
8927    raw: vks::VkVertexInputAttributeDescription,
8928}
8929
8930impl VertexInputAttributeDescription {
8931    pub fn builder() -> VertexInputAttributeDescriptionBuilder {
8932        VertexInputAttributeDescriptionBuilder::new()
8933    }
8934
8935    pub unsafe fn from_raw(raw: vks::VkVertexInputAttributeDescription) -> VertexInputAttributeDescription {
8936        VertexInputAttributeDescription { raw, }
8937    }
8938
8939    pub fn location<'a>(&'a self) -> u32 {
8940        self.raw.location.into()
8941    }
8942
8943    pub fn binding<'a>(&'a self) -> u32 {
8944        self.raw.binding.into()
8945    }
8946
8947    pub fn format<'a>(&'a self) -> Format {
8948        self.raw.format.into()
8949    }
8950
8951    pub fn offset<'a>(&'a self) -> u32 {
8952        self.raw.offset.into()
8953    }
8954
8955    pub fn set_location<'m>(&mut self, location: u32) {
8956        self.raw.location = location.into();
8957    }
8958
8959    pub fn set_binding<'m>(&mut self, binding: u32) {
8960        self.raw.binding = binding.into();
8961    }
8962
8963    pub fn set_format<'m>(&mut self, format: Format) {
8964        self.raw.format = format.into();
8965    }
8966
8967    pub fn set_offset<'m>(&mut self, offset: u32) {
8968        self.raw.offset = offset.into();
8969    }
8970
8971    pub fn as_raw(&self) -> &vks::VkVertexInputAttributeDescription {
8972        &self.raw
8973    }
8974}
8975
8976impl From<VertexInputAttributeDescription> for vks::VkVertexInputAttributeDescription {
8977    fn from(f: VertexInputAttributeDescription) -> vks::VkVertexInputAttributeDescription {
8978        f.raw
8979    }
8980}
8981
8982
8983/// A builder for `VkVertexInputAttributeDescription`.
8984///
8985/// 
8986#[derive(Debug, Clone, Default)]
8987pub struct VertexInputAttributeDescriptionBuilder {
8988    raw: vks::VkVertexInputAttributeDescription,
8989}
8990
8991impl VertexInputAttributeDescriptionBuilder {
8992    pub fn new() -> VertexInputAttributeDescriptionBuilder {
8993        VertexInputAttributeDescriptionBuilder {
8994            raw: vks::VkVertexInputAttributeDescription::default(),
8995        }
8996    }
8997
8998    pub fn location<'m>(mut self, location: u32) -> VertexInputAttributeDescriptionBuilder {
8999        self.raw.location = location.into();
9000        self
9001    }
9002
9003    pub fn binding<'m>(mut self, binding: u32) -> VertexInputAttributeDescriptionBuilder {
9004        self.raw.binding = binding.into();
9005        self
9006    }
9007
9008    pub fn format<'m>(mut self, format: Format) -> VertexInputAttributeDescriptionBuilder {
9009        self.raw.format = format.into();
9010        self
9011    }
9012
9013    pub fn offset<'m>(mut self, offset: u32) -> VertexInputAttributeDescriptionBuilder {
9014        self.raw.offset = offset.into();
9015        self
9016    }
9017
9018    pub fn get_location<'a>(&'a self) -> u32 {
9019        self.raw.location.into()
9020    }
9021
9022    pub fn get_binding<'a>(&'a self) -> u32 {
9023        self.raw.binding.into()
9024    }
9025
9026    pub fn get_format<'a>(&'a self) -> Format {
9027        self.raw.format.into()
9028    }
9029
9030    pub fn get_offset<'a>(&'a self) -> u32 {
9031        self.raw.offset.into()
9032    }
9033
9034    pub fn build(self) -> VertexInputAttributeDescription {
9035        VertexInputAttributeDescription {
9036            raw: self.raw,
9037        }
9038    }
9039}
9040
9041
9042/// A `VkPipelineVertexInputStateCreateInfo`.
9043///
9044/// 
9045#[derive(Debug, Clone, Default)]
9046#[repr(C)]
9047pub struct PipelineVertexInputStateCreateInfo<'s> {
9048    raw: vks::VkPipelineVertexInputStateCreateInfo,
9049    _p: PhantomData<&'s ()>,
9050}
9051
9052impl<'s> PipelineVertexInputStateCreateInfo<'s> {
9053    pub fn builder<'b>() -> PipelineVertexInputStateCreateInfoBuilder<'b> {
9054        PipelineVertexInputStateCreateInfoBuilder::new()
9055    }
9056
9057    pub unsafe fn from_raw(raw: vks::VkPipelineVertexInputStateCreateInfo) -> PipelineVertexInputStateCreateInfo<'s> {
9058        PipelineVertexInputStateCreateInfo { raw, _p: PhantomData }
9059    }
9060
9061    pub fn next<'a>(&'a self) -> *const c_void {
9062        self.raw.pNext
9063    }
9064
9065    pub fn flags<'a>(&'a self) -> PipelineVertexInputStateCreateFlags {
9066        PipelineVertexInputStateCreateFlags::from_bits(self.raw.flags)
9067            .expect("PipelineVertexInputStateCreateInfo::flags: error converting flags")
9068    }
9069
9070    pub fn vertex_binding_descriptions<'a>(&'a self) -> &'a [VertexInputBindingDescription] {
9071        unsafe { slice::from_raw_parts(self.raw.pVertexBindingDescriptions as *const _, self.raw.vertexBindingDescriptionCount as usize) }
9072    }
9073
9074    pub fn vertex_attribute_descriptions<'a>(&'a self) -> &'a [VertexInputAttributeDescription] {
9075        unsafe { slice::from_raw_parts(self.raw.pVertexAttributeDescriptions as *const _, self.raw.vertexAttributeDescriptionCount as usize) }
9076    }
9077
9078    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
9079        self.raw.pNext = next;
9080    }
9081
9082    pub fn set_flags<'m>(&mut self, flags: PipelineVertexInputStateCreateFlags) {
9083        self.raw.flags = flags.bits();
9084    }
9085
9086    pub fn set_vertex_binding_descriptions<'m, 'a>(&mut self, vertex_binding_descriptions: &'a [VertexInputBindingDescription])
9087            where 'a: 's {
9088        assert!(self.raw.vertexBindingDescriptionCount == 0 || self.raw.vertexBindingDescriptionCount == vertex_binding_descriptions.len() as _, 
9089            "count inconsistency found when specifying `PipelineVertexInputStateCreateInfo::vertex_binding_descriptions`.");
9090        self.raw.vertexBindingDescriptionCount = vertex_binding_descriptions.len() as _;
9091        self.raw.pVertexBindingDescriptions = vertex_binding_descriptions.as_ptr() as *const vks::VkVertexInputBindingDescription;
9092    }
9093
9094    pub fn set_vertex_attribute_descriptions<'m, 'a>(&mut self, vertex_attribute_descriptions: &'a [VertexInputAttributeDescription])
9095            where 'a: 's {
9096        assert!(self.raw.vertexAttributeDescriptionCount == 0 || self.raw.vertexAttributeDescriptionCount == vertex_attribute_descriptions.len() as _, 
9097            "count inconsistency found when specifying `PipelineVertexInputStateCreateInfo::vertex_attribute_descriptions`.");
9098        self.raw.vertexAttributeDescriptionCount = vertex_attribute_descriptions.len() as _;
9099        self.raw.pVertexAttributeDescriptions = vertex_attribute_descriptions.as_ptr() as *const vks::VkVertexInputAttributeDescription;
9100    }
9101
9102    pub fn as_raw(&self) -> &vks::VkPipelineVertexInputStateCreateInfo {
9103        &self.raw
9104    }
9105}
9106
9107impl<'s> From<PipelineVertexInputStateCreateInfo<'s>> for vks::VkPipelineVertexInputStateCreateInfo {
9108    fn from(f: PipelineVertexInputStateCreateInfo<'s>) -> vks::VkPipelineVertexInputStateCreateInfo {
9109        f.raw
9110    }
9111}
9112
9113
9114/// A builder for `VkPipelineVertexInputStateCreateInfo`.
9115///
9116/// 
9117#[derive(Debug, Clone, Default)]
9118pub struct PipelineVertexInputStateCreateInfoBuilder<'b> {
9119    raw: vks::VkPipelineVertexInputStateCreateInfo,
9120    _p: PhantomData<&'b ()>, 
9121}
9122
9123impl<'b> PipelineVertexInputStateCreateInfoBuilder<'b> {
9124    pub fn new() -> PipelineVertexInputStateCreateInfoBuilder<'b> {
9125        PipelineVertexInputStateCreateInfoBuilder {
9126            raw: vks::VkPipelineVertexInputStateCreateInfo::default(),
9127            _p: PhantomData,
9128        }
9129    }
9130
9131    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PipelineVertexInputStateCreateInfoBuilder<'b> {
9132        self.raw.pNext = next;
9133        self
9134    }
9135
9136    pub fn flags<'m>(mut self, flags: PipelineVertexInputStateCreateFlags) -> PipelineVertexInputStateCreateInfoBuilder<'b> {
9137        self.raw.flags = flags.bits();
9138        self
9139    }
9140
9141    pub fn vertex_binding_descriptions<'m, 'a>(mut self, vertex_binding_descriptions: &'a [VertexInputBindingDescription]) -> PipelineVertexInputStateCreateInfoBuilder<'b>
9142            where 'a: 'b {
9143        assert!(self.raw.vertexBindingDescriptionCount == 0 || self.raw.vertexBindingDescriptionCount == vertex_binding_descriptions.len() as _, 
9144            "count inconsistency found when specifying `PipelineVertexInputStateCreateInfo::vertex_binding_descriptions`.");
9145        self.raw.vertexBindingDescriptionCount = vertex_binding_descriptions.len() as _;
9146        self.raw.pVertexBindingDescriptions = vertex_binding_descriptions.as_ptr() as *const vks::VkVertexInputBindingDescription;
9147        self
9148    }
9149
9150    pub fn vertex_attribute_descriptions<'m, 'a>(mut self, vertex_attribute_descriptions: &'a [VertexInputAttributeDescription]) -> PipelineVertexInputStateCreateInfoBuilder<'b>
9151            where 'a: 'b {
9152        assert!(self.raw.vertexAttributeDescriptionCount == 0 || self.raw.vertexAttributeDescriptionCount == vertex_attribute_descriptions.len() as _, 
9153            "count inconsistency found when specifying `PipelineVertexInputStateCreateInfo::vertex_attribute_descriptions`.");
9154        self.raw.vertexAttributeDescriptionCount = vertex_attribute_descriptions.len() as _;
9155        self.raw.pVertexAttributeDescriptions = vertex_attribute_descriptions.as_ptr() as *const vks::VkVertexInputAttributeDescription;
9156        self
9157    }
9158
9159    pub fn get_next<'a>(&'a self) -> *const c_void {
9160        self.raw.pNext
9161    }
9162
9163    pub fn get_flags<'a>(&'a self) -> PipelineVertexInputStateCreateFlags {
9164        PipelineVertexInputStateCreateFlags::from_bits(self.raw.flags)
9165            .expect("PipelineVertexInputStateCreateInfo::flags: error converting flags")
9166    }
9167
9168    pub fn get_vertex_binding_descriptions<'a>(&'a self) -> &'a [VertexInputBindingDescription] {
9169        unsafe { slice::from_raw_parts(self.raw.pVertexBindingDescriptions as *const _, self.raw.vertexBindingDescriptionCount as usize) }
9170    }
9171
9172    pub fn get_vertex_attribute_descriptions<'a>(&'a self) -> &'a [VertexInputAttributeDescription] {
9173        unsafe { slice::from_raw_parts(self.raw.pVertexAttributeDescriptions as *const _, self.raw.vertexAttributeDescriptionCount as usize) }
9174    }
9175
9176    pub fn build(self) -> PipelineVertexInputStateCreateInfo<'b> {
9177        PipelineVertexInputStateCreateInfo {
9178            raw: self.raw,
9179            _p: PhantomData,
9180        }
9181    }
9182}
9183
9184
9185/// A `VkPipelineInputAssemblyStateCreateInfo`.
9186///
9187/// 
9188#[derive(Debug, Clone, Default)]
9189#[repr(C)]
9190pub struct PipelineInputAssemblyStateCreateInfo<'s> {
9191    raw: vks::VkPipelineInputAssemblyStateCreateInfo,
9192    _p: PhantomData<&'s ()>,
9193}
9194
9195impl<'s> PipelineInputAssemblyStateCreateInfo<'s> {
9196    pub fn builder<'b>() -> PipelineInputAssemblyStateCreateInfoBuilder<'b> {
9197        PipelineInputAssemblyStateCreateInfoBuilder::new()
9198    }
9199
9200    pub unsafe fn from_raw(raw: vks::VkPipelineInputAssemblyStateCreateInfo) -> PipelineInputAssemblyStateCreateInfo<'s> {
9201        PipelineInputAssemblyStateCreateInfo { raw, _p: PhantomData }
9202    }
9203
9204    pub fn next<'a>(&'a self) -> *const c_void {
9205        self.raw.pNext
9206    }
9207
9208    pub fn flags<'a>(&'a self) -> PipelineInputAssemblyStateCreateFlags {
9209        PipelineInputAssemblyStateCreateFlags::from_bits(self.raw.flags)
9210            .expect("PipelineInputAssemblyStateCreateInfo::flags: error converting flags")
9211    }
9212
9213    pub fn topology<'a>(&'a self) -> PrimitiveTopology {
9214        self.raw.topology.into()
9215    }
9216
9217    pub fn primitive_restart_enable<'a>(&'a self) -> bool {
9218        self.raw.primitiveRestartEnable != 0
9219    }
9220
9221    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
9222        self.raw.pNext = next;
9223    }
9224
9225    pub fn set_flags<'m>(&mut self, flags: PipelineInputAssemblyStateCreateFlags) {
9226        self.raw.flags = flags.bits();
9227    }
9228
9229    pub fn set_topology<'m>(&mut self, topology: PrimitiveTopology) {
9230        self.raw.topology = topology.into();
9231    }
9232
9233    pub fn set_primitive_restart_enable<'m>(&mut self, primitive_restart_enable: bool) {
9234        self.raw.primitiveRestartEnable = primitive_restart_enable as u32;
9235    }
9236
9237    pub fn as_raw(&self) -> &vks::VkPipelineInputAssemblyStateCreateInfo {
9238        &self.raw
9239    }
9240}
9241
9242impl<'s> From<PipelineInputAssemblyStateCreateInfo<'s>> for vks::VkPipelineInputAssemblyStateCreateInfo {
9243    fn from(f: PipelineInputAssemblyStateCreateInfo<'s>) -> vks::VkPipelineInputAssemblyStateCreateInfo {
9244        f.raw
9245    }
9246}
9247
9248
9249/// A builder for `VkPipelineInputAssemblyStateCreateInfo`.
9250///
9251/// 
9252#[derive(Debug, Clone, Default)]
9253pub struct PipelineInputAssemblyStateCreateInfoBuilder<'b> {
9254    raw: vks::VkPipelineInputAssemblyStateCreateInfo,
9255    _p: PhantomData<&'b ()>, 
9256}
9257
9258impl<'b> PipelineInputAssemblyStateCreateInfoBuilder<'b> {
9259    pub fn new() -> PipelineInputAssemblyStateCreateInfoBuilder<'b> {
9260        PipelineInputAssemblyStateCreateInfoBuilder {
9261            raw: vks::VkPipelineInputAssemblyStateCreateInfo::default(),
9262            _p: PhantomData,
9263        }
9264    }
9265
9266    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PipelineInputAssemblyStateCreateInfoBuilder<'b> {
9267        self.raw.pNext = next;
9268        self
9269    }
9270
9271    pub fn flags<'m>(mut self, flags: PipelineInputAssemblyStateCreateFlags) -> PipelineInputAssemblyStateCreateInfoBuilder<'b> {
9272        self.raw.flags = flags.bits();
9273        self
9274    }
9275
9276    pub fn topology<'m>(mut self, topology: PrimitiveTopology) -> PipelineInputAssemblyStateCreateInfoBuilder<'b> {
9277        self.raw.topology = topology.into();
9278        self
9279    }
9280
9281    pub fn primitive_restart_enable<'m>(mut self, primitive_restart_enable: bool) -> PipelineInputAssemblyStateCreateInfoBuilder<'b> {
9282        self.raw.primitiveRestartEnable = primitive_restart_enable as u32;
9283        self
9284    }
9285
9286    pub fn get_next<'a>(&'a self) -> *const c_void {
9287        self.raw.pNext
9288    }
9289
9290    pub fn get_flags<'a>(&'a self) -> PipelineInputAssemblyStateCreateFlags {
9291        PipelineInputAssemblyStateCreateFlags::from_bits(self.raw.flags)
9292            .expect("PipelineInputAssemblyStateCreateInfo::flags: error converting flags")
9293    }
9294
9295    pub fn get_topology<'a>(&'a self) -> PrimitiveTopology {
9296        self.raw.topology.into()
9297    }
9298
9299    pub fn get_primitive_restart_enable<'a>(&'a self) -> bool {
9300        self.raw.primitiveRestartEnable != 0
9301    }
9302
9303    pub fn build(self) -> PipelineInputAssemblyStateCreateInfo<'b> {
9304        PipelineInputAssemblyStateCreateInfo {
9305            raw: self.raw,
9306            _p: PhantomData,
9307        }
9308    }
9309}
9310
9311
9312/// A `VkPipelineTessellationStateCreateInfo`.
9313///
9314/// 
9315#[derive(Debug, Clone, Default)]
9316#[repr(C)]
9317pub struct PipelineTessellationStateCreateInfo<'s> {
9318    raw: vks::VkPipelineTessellationStateCreateInfo,
9319    _p: PhantomData<&'s ()>,
9320}
9321
9322impl<'s> PipelineTessellationStateCreateInfo<'s> {
9323    pub fn builder<'b>() -> PipelineTessellationStateCreateInfoBuilder<'b> {
9324        PipelineTessellationStateCreateInfoBuilder::new()
9325    }
9326
9327    pub unsafe fn from_raw(raw: vks::VkPipelineTessellationStateCreateInfo) -> PipelineTessellationStateCreateInfo<'s> {
9328        PipelineTessellationStateCreateInfo { raw, _p: PhantomData }
9329    }
9330
9331    pub fn next<'a>(&'a self) -> *const c_void {
9332        self.raw.pNext
9333    }
9334
9335    pub fn flags<'a>(&'a self) -> PipelineTessellationStateCreateFlags {
9336        PipelineTessellationStateCreateFlags::from_bits(self.raw.flags)
9337            .expect("PipelineTessellationStateCreateInfo::flags: error converting flags")
9338    }
9339
9340    pub fn patch_control_points<'a>(&'a self) -> u32 {
9341        self.raw.patchControlPoints.into()
9342    }
9343
9344    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
9345        self.raw.pNext = next;
9346    }
9347
9348    pub fn set_flags<'m>(&mut self, flags: PipelineTessellationStateCreateFlags) {
9349        self.raw.flags = flags.bits();
9350    }
9351
9352    pub fn set_patch_control_points<'m>(&mut self, patch_control_points: u32) {
9353        self.raw.patchControlPoints = patch_control_points.into();
9354    }
9355
9356    pub fn as_raw(&self) -> &vks::VkPipelineTessellationStateCreateInfo {
9357        &self.raw
9358    }
9359}
9360
9361impl<'s> From<PipelineTessellationStateCreateInfo<'s>> for vks::VkPipelineTessellationStateCreateInfo {
9362    fn from(f: PipelineTessellationStateCreateInfo<'s>) -> vks::VkPipelineTessellationStateCreateInfo {
9363        f.raw
9364    }
9365}
9366
9367
9368/// A builder for `VkPipelineTessellationStateCreateInfo`.
9369///
9370/// 
9371#[derive(Debug, Clone, Default)]
9372pub struct PipelineTessellationStateCreateInfoBuilder<'b> {
9373    raw: vks::VkPipelineTessellationStateCreateInfo,
9374    _p: PhantomData<&'b ()>, 
9375}
9376
9377impl<'b> PipelineTessellationStateCreateInfoBuilder<'b> {
9378    pub fn new() -> PipelineTessellationStateCreateInfoBuilder<'b> {
9379        PipelineTessellationStateCreateInfoBuilder {
9380            raw: vks::VkPipelineTessellationStateCreateInfo::default(),
9381            _p: PhantomData,
9382        }
9383    }
9384
9385    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PipelineTessellationStateCreateInfoBuilder<'b> {
9386        self.raw.pNext = next;
9387        self
9388    }
9389
9390    pub fn flags<'m>(mut self, flags: PipelineTessellationStateCreateFlags) -> PipelineTessellationStateCreateInfoBuilder<'b> {
9391        self.raw.flags = flags.bits();
9392        self
9393    }
9394
9395    pub fn patch_control_points<'m>(mut self, patch_control_points: u32) -> PipelineTessellationStateCreateInfoBuilder<'b> {
9396        self.raw.patchControlPoints = patch_control_points.into();
9397        self
9398    }
9399
9400    pub fn get_next<'a>(&'a self) -> *const c_void {
9401        self.raw.pNext
9402    }
9403
9404    pub fn get_flags<'a>(&'a self) -> PipelineTessellationStateCreateFlags {
9405        PipelineTessellationStateCreateFlags::from_bits(self.raw.flags)
9406            .expect("PipelineTessellationStateCreateInfo::flags: error converting flags")
9407    }
9408
9409    pub fn get_patch_control_points<'a>(&'a self) -> u32 {
9410        self.raw.patchControlPoints.into()
9411    }
9412
9413    pub fn build(self) -> PipelineTessellationStateCreateInfo<'b> {
9414        PipelineTessellationStateCreateInfo {
9415            raw: self.raw,
9416            _p: PhantomData,
9417        }
9418    }
9419}
9420
9421
9422/// A `VkPipelineViewportStateCreateInfo`.
9423///
9424/// 
9425#[derive(Debug, Clone, Default)]
9426#[repr(C)]
9427pub struct PipelineViewportStateCreateInfo<'s> {
9428    raw: vks::VkPipelineViewportStateCreateInfo,
9429    _p: PhantomData<&'s ()>,
9430}
9431
9432impl<'s> PipelineViewportStateCreateInfo<'s> {
9433    pub fn builder<'b>() -> PipelineViewportStateCreateInfoBuilder<'b> {
9434        PipelineViewportStateCreateInfoBuilder::new()
9435    }
9436
9437    pub unsafe fn from_raw(raw: vks::VkPipelineViewportStateCreateInfo) -> PipelineViewportStateCreateInfo<'s> {
9438        PipelineViewportStateCreateInfo { raw, _p: PhantomData }
9439    }
9440
9441    pub fn next<'a>(&'a self) -> *const c_void {
9442        self.raw.pNext
9443    }
9444
9445    pub fn flags<'a>(&'a self) -> PipelineViewportStateCreateFlags {
9446        PipelineViewportStateCreateFlags::from_bits(self.raw.flags)
9447            .expect("PipelineViewportStateCreateInfo::flags: error converting flags")
9448    }
9449
9450    pub fn viewports<'a>(&'a self) -> &'a [Viewport] {
9451        unsafe { slice::from_raw_parts(self.raw.pViewports as *const _, self.raw.viewportCount as usize) }
9452    }
9453
9454    pub fn scissors<'a>(&'a self) -> &'a [Rect2d] {
9455        unsafe { slice::from_raw_parts(self.raw.pScissors as *const _, self.raw.scissorCount as usize) }
9456    }
9457
9458    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
9459        self.raw.pNext = next;
9460    }
9461
9462    pub fn set_flags<'m>(&mut self, flags: PipelineViewportStateCreateFlags) {
9463        self.raw.flags = flags.bits();
9464    }
9465
9466    pub fn set_viewports<'m, 'a>(&mut self, viewports: &'a [Viewport])
9467            where 'a: 's {
9468        assert!(self.raw.viewportCount == 0 || self.raw.viewportCount == viewports.len() as _, 
9469            "count inconsistency found when specifying `PipelineViewportStateCreateInfo::viewports`.");
9470        self.raw.viewportCount = viewports.len() as _;
9471        self.raw.pViewports = viewports.as_ptr() as *const vks::VkViewport;
9472    }
9473
9474    pub fn set_scissors<'m, 'a>(&mut self, scissors: &'a [Rect2d])
9475            where 'a: 's {
9476        assert!(self.raw.scissorCount == 0 || self.raw.scissorCount == scissors.len() as _, 
9477            "count inconsistency found when specifying `PipelineViewportStateCreateInfo::scissors`.");
9478        self.raw.scissorCount = scissors.len() as _;
9479        self.raw.pScissors = scissors.as_ptr() as *const vks::VkRect2D;
9480    }
9481
9482    pub fn as_raw(&self) -> &vks::VkPipelineViewportStateCreateInfo {
9483        &self.raw
9484    }
9485}
9486
9487impl<'s> From<PipelineViewportStateCreateInfo<'s>> for vks::VkPipelineViewportStateCreateInfo {
9488    fn from(f: PipelineViewportStateCreateInfo<'s>) -> vks::VkPipelineViewportStateCreateInfo {
9489        f.raw
9490    }
9491}
9492
9493
9494/// A builder for `VkPipelineViewportStateCreateInfo`.
9495///
9496/// 
9497#[derive(Debug, Clone, Default)]
9498pub struct PipelineViewportStateCreateInfoBuilder<'b> {
9499    raw: vks::VkPipelineViewportStateCreateInfo,
9500    _p: PhantomData<&'b ()>, 
9501}
9502
9503impl<'b> PipelineViewportStateCreateInfoBuilder<'b> {
9504    pub fn new() -> PipelineViewportStateCreateInfoBuilder<'b> {
9505        PipelineViewportStateCreateInfoBuilder {
9506            raw: vks::VkPipelineViewportStateCreateInfo::default(),
9507            _p: PhantomData,
9508        }
9509    }
9510
9511    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PipelineViewportStateCreateInfoBuilder<'b> {
9512        self.raw.pNext = next;
9513        self
9514    }
9515
9516    pub fn flags<'m>(mut self, flags: PipelineViewportStateCreateFlags) -> PipelineViewportStateCreateInfoBuilder<'b> {
9517        self.raw.flags = flags.bits();
9518        self
9519    }
9520
9521    pub fn viewports<'m, 'a>(mut self, viewports: &'a [Viewport]) -> PipelineViewportStateCreateInfoBuilder<'b>
9522            where 'a: 'b {
9523        assert!(self.raw.viewportCount == 0 || self.raw.viewportCount == viewports.len() as _, 
9524            "count inconsistency found when specifying `PipelineViewportStateCreateInfo::viewports`.");
9525        self.raw.viewportCount = viewports.len() as _;
9526        self.raw.pViewports = viewports.as_ptr() as *const vks::VkViewport;
9527        self
9528    }
9529
9530    pub fn scissors<'m, 'a>(mut self, scissors: &'a [Rect2d]) -> PipelineViewportStateCreateInfoBuilder<'b>
9531            where 'a: 'b {
9532        assert!(self.raw.scissorCount == 0 || self.raw.scissorCount == scissors.len() as _, 
9533            "count inconsistency found when specifying `PipelineViewportStateCreateInfo::scissors`.");
9534        self.raw.scissorCount = scissors.len() as _;
9535        self.raw.pScissors = scissors.as_ptr() as *const vks::VkRect2D;
9536        self
9537    }
9538
9539    pub fn get_next<'a>(&'a self) -> *const c_void {
9540        self.raw.pNext
9541    }
9542
9543    pub fn get_flags<'a>(&'a self) -> PipelineViewportStateCreateFlags {
9544        PipelineViewportStateCreateFlags::from_bits(self.raw.flags)
9545            .expect("PipelineViewportStateCreateInfo::flags: error converting flags")
9546    }
9547
9548    pub fn get_viewports<'a>(&'a self) -> &'a [Viewport] {
9549        unsafe { slice::from_raw_parts(self.raw.pViewports as *const _, self.raw.viewportCount as usize) }
9550    }
9551
9552    pub fn get_scissors<'a>(&'a self) -> &'a [Rect2d] {
9553        unsafe { slice::from_raw_parts(self.raw.pScissors as *const _, self.raw.scissorCount as usize) }
9554    }
9555
9556    pub fn build(self) -> PipelineViewportStateCreateInfo<'b> {
9557        PipelineViewportStateCreateInfo {
9558            raw: self.raw,
9559            _p: PhantomData,
9560        }
9561    }
9562}
9563
9564
9565/// A `VkPipelineRasterizationStateCreateInfo`.
9566///
9567/// 
9568#[derive(Debug, Clone, Default)]
9569#[repr(C)]
9570pub struct PipelineRasterizationStateCreateInfo<'s> {
9571    raw: vks::VkPipelineRasterizationStateCreateInfo,
9572    _p: PhantomData<&'s ()>,
9573}
9574
9575impl<'s> PipelineRasterizationStateCreateInfo<'s> {
9576    pub fn builder<'b>() -> PipelineRasterizationStateCreateInfoBuilder<'b> {
9577        PipelineRasterizationStateCreateInfoBuilder::new()
9578    }
9579
9580    pub unsafe fn from_raw(raw: vks::VkPipelineRasterizationStateCreateInfo) -> PipelineRasterizationStateCreateInfo<'s> {
9581        PipelineRasterizationStateCreateInfo { raw, _p: PhantomData }
9582    }
9583
9584    pub fn next<'a>(&'a self) -> *const c_void {
9585        self.raw.pNext
9586    }
9587
9588    pub fn flags<'a>(&'a self) -> PipelineRasterizationStateCreateFlags {
9589        PipelineRasterizationStateCreateFlags::from_bits(self.raw.flags)
9590            .expect("PipelineRasterizationStateCreateInfo::flags: error converting flags")
9591    }
9592
9593    pub fn depth_clamp_enable<'a>(&'a self) -> bool {
9594        self.raw.depthClampEnable != 0
9595    }
9596
9597    pub fn rasterizer_discard_enable<'a>(&'a self) -> bool {
9598        self.raw.rasterizerDiscardEnable != 0
9599    }
9600
9601    pub fn polygon_mode<'a>(&'a self) -> PolygonMode {
9602        self.raw.polygonMode.into()
9603    }
9604
9605    pub fn cull_mode<'a>(&'a self) -> CullModeFlags {
9606        CullModeFlags::from_bits(self.raw.cullMode)
9607            .expect("PipelineRasterizationStateCreateInfo::cull_mode: error converting flags")
9608    }
9609
9610    pub fn front_face<'a>(&'a self) -> FrontFace {
9611        self.raw.frontFace.into()
9612    }
9613
9614    pub fn depth_bias_enable<'a>(&'a self) -> bool {
9615        self.raw.depthBiasEnable != 0
9616    }
9617
9618    pub fn depth_bias_constant_factor<'a>(&'a self) -> f32 {
9619        self.raw.depthBiasConstantFactor.into()
9620    }
9621
9622    pub fn depth_bias_clamp<'a>(&'a self) -> f32 {
9623        self.raw.depthBiasClamp.into()
9624    }
9625
9626    pub fn depth_bias_slope_factor<'a>(&'a self) -> f32 {
9627        self.raw.depthBiasSlopeFactor.into()
9628    }
9629
9630    pub fn line_width<'a>(&'a self) -> f32 {
9631        self.raw.lineWidth.into()
9632    }
9633
9634    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
9635        self.raw.pNext = next;
9636    }
9637
9638    pub fn set_flags<'m>(&mut self, flags: PipelineRasterizationStateCreateFlags) {
9639        self.raw.flags = flags.bits();
9640    }
9641
9642    pub fn set_depth_clamp_enable<'m>(&mut self, depth_clamp_enable: bool) {
9643        self.raw.depthClampEnable = depth_clamp_enable as u32;
9644    }
9645
9646    pub fn set_rasterizer_discard_enable<'m>(&mut self, rasterizer_discard_enable: bool) {
9647        self.raw.rasterizerDiscardEnable = rasterizer_discard_enable as u32;
9648    }
9649
9650    pub fn set_polygon_mode<'m>(&mut self, polygon_mode: PolygonMode) {
9651        self.raw.polygonMode = polygon_mode.into();
9652    }
9653
9654    pub fn set_cull_mode<'m>(&mut self, cull_mode: CullModeFlags) {
9655        self.raw.cullMode = cull_mode.bits();
9656    }
9657
9658    pub fn set_front_face<'m>(&mut self, front_face: FrontFace) {
9659        self.raw.frontFace = front_face.into();
9660    }
9661
9662    pub fn set_depth_bias_enable<'m>(&mut self, depth_bias_enable: bool) {
9663        self.raw.depthBiasEnable = depth_bias_enable as u32;
9664    }
9665
9666    pub fn set_depth_bias_constant_factor<'m>(&mut self, depth_bias_constant_factor: f32) {
9667        self.raw.depthBiasConstantFactor = depth_bias_constant_factor.into();
9668    }
9669
9670    pub fn set_depth_bias_clamp<'m>(&mut self, depth_bias_clamp: f32) {
9671        self.raw.depthBiasClamp = depth_bias_clamp.into();
9672    }
9673
9674    pub fn set_depth_bias_slope_factor<'m>(&mut self, depth_bias_slope_factor: f32) {
9675        self.raw.depthBiasSlopeFactor = depth_bias_slope_factor.into();
9676    }
9677
9678    pub fn set_line_width<'m>(&mut self, line_width: f32) {
9679        self.raw.lineWidth = line_width.into();
9680    }
9681
9682    pub fn as_raw(&self) -> &vks::VkPipelineRasterizationStateCreateInfo {
9683        &self.raw
9684    }
9685}
9686
9687impl<'s> From<PipelineRasterizationStateCreateInfo<'s>> for vks::VkPipelineRasterizationStateCreateInfo {
9688    fn from(f: PipelineRasterizationStateCreateInfo<'s>) -> vks::VkPipelineRasterizationStateCreateInfo {
9689        f.raw
9690    }
9691}
9692
9693
9694/// A builder for `VkPipelineRasterizationStateCreateInfo`.
9695///
9696/// 
9697#[derive(Debug, Clone, Default)]
9698pub struct PipelineRasterizationStateCreateInfoBuilder<'b> {
9699    raw: vks::VkPipelineRasterizationStateCreateInfo,
9700    _p: PhantomData<&'b ()>, 
9701}
9702
9703impl<'b> PipelineRasterizationStateCreateInfoBuilder<'b> {
9704    pub fn new() -> PipelineRasterizationStateCreateInfoBuilder<'b> {
9705        PipelineRasterizationStateCreateInfoBuilder {
9706            raw: vks::VkPipelineRasterizationStateCreateInfo::default(),
9707            _p: PhantomData,
9708        }
9709    }
9710
9711    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PipelineRasterizationStateCreateInfoBuilder<'b> {
9712        self.raw.pNext = next;
9713        self
9714    }
9715
9716    pub fn flags<'m>(mut self, flags: PipelineRasterizationStateCreateFlags) -> PipelineRasterizationStateCreateInfoBuilder<'b> {
9717        self.raw.flags = flags.bits();
9718        self
9719    }
9720
9721    pub fn depth_clamp_enable<'m>(mut self, depth_clamp_enable: bool) -> PipelineRasterizationStateCreateInfoBuilder<'b> {
9722        self.raw.depthClampEnable = depth_clamp_enable as u32;
9723        self
9724    }
9725
9726    pub fn rasterizer_discard_enable<'m>(mut self, rasterizer_discard_enable: bool) -> PipelineRasterizationStateCreateInfoBuilder<'b> {
9727        self.raw.rasterizerDiscardEnable = rasterizer_discard_enable as u32;
9728        self
9729    }
9730
9731    pub fn polygon_mode<'m>(mut self, polygon_mode: PolygonMode) -> PipelineRasterizationStateCreateInfoBuilder<'b> {
9732        self.raw.polygonMode = polygon_mode.into();
9733        self
9734    }
9735
9736    pub fn cull_mode<'m>(mut self, cull_mode: CullModeFlags) -> PipelineRasterizationStateCreateInfoBuilder<'b> {
9737        self.raw.cullMode = cull_mode.bits();
9738        self
9739    }
9740
9741    pub fn front_face<'m>(mut self, front_face: FrontFace) -> PipelineRasterizationStateCreateInfoBuilder<'b> {
9742        self.raw.frontFace = front_face.into();
9743        self
9744    }
9745
9746    pub fn depth_bias_enable<'m>(mut self, depth_bias_enable: bool) -> PipelineRasterizationStateCreateInfoBuilder<'b> {
9747        self.raw.depthBiasEnable = depth_bias_enable as u32;
9748        self
9749    }
9750
9751    pub fn depth_bias_constant_factor<'m>(mut self, depth_bias_constant_factor: f32) -> PipelineRasterizationStateCreateInfoBuilder<'b> {
9752        self.raw.depthBiasConstantFactor = depth_bias_constant_factor.into();
9753        self
9754    }
9755
9756    pub fn depth_bias_clamp<'m>(mut self, depth_bias_clamp: f32) -> PipelineRasterizationStateCreateInfoBuilder<'b> {
9757        self.raw.depthBiasClamp = depth_bias_clamp.into();
9758        self
9759    }
9760
9761    pub fn depth_bias_slope_factor<'m>(mut self, depth_bias_slope_factor: f32) -> PipelineRasterizationStateCreateInfoBuilder<'b> {
9762        self.raw.depthBiasSlopeFactor = depth_bias_slope_factor.into();
9763        self
9764    }
9765
9766    pub fn line_width<'m>(mut self, line_width: f32) -> PipelineRasterizationStateCreateInfoBuilder<'b> {
9767        self.raw.lineWidth = line_width.into();
9768        self
9769    }
9770
9771    pub fn get_next<'a>(&'a self) -> *const c_void {
9772        self.raw.pNext
9773    }
9774
9775    pub fn get_flags<'a>(&'a self) -> PipelineRasterizationStateCreateFlags {
9776        PipelineRasterizationStateCreateFlags::from_bits(self.raw.flags)
9777            .expect("PipelineRasterizationStateCreateInfo::flags: error converting flags")
9778    }
9779
9780    pub fn get_depth_clamp_enable<'a>(&'a self) -> bool {
9781        self.raw.depthClampEnable != 0
9782    }
9783
9784    pub fn get_rasterizer_discard_enable<'a>(&'a self) -> bool {
9785        self.raw.rasterizerDiscardEnable != 0
9786    }
9787
9788    pub fn get_polygon_mode<'a>(&'a self) -> PolygonMode {
9789        self.raw.polygonMode.into()
9790    }
9791
9792    pub fn get_cull_mode<'a>(&'a self) -> CullModeFlags {
9793        CullModeFlags::from_bits(self.raw.cullMode)
9794            .expect("PipelineRasterizationStateCreateInfo::cull_mode: error converting flags")
9795    }
9796
9797    pub fn get_front_face<'a>(&'a self) -> FrontFace {
9798        self.raw.frontFace.into()
9799    }
9800
9801    pub fn get_depth_bias_enable<'a>(&'a self) -> bool {
9802        self.raw.depthBiasEnable != 0
9803    }
9804
9805    pub fn get_depth_bias_constant_factor<'a>(&'a self) -> f32 {
9806        self.raw.depthBiasConstantFactor.into()
9807    }
9808
9809    pub fn get_depth_bias_clamp<'a>(&'a self) -> f32 {
9810        self.raw.depthBiasClamp.into()
9811    }
9812
9813    pub fn get_depth_bias_slope_factor<'a>(&'a self) -> f32 {
9814        self.raw.depthBiasSlopeFactor.into()
9815    }
9816
9817    pub fn get_line_width<'a>(&'a self) -> f32 {
9818        self.raw.lineWidth.into()
9819    }
9820
9821    pub fn build(self) -> PipelineRasterizationStateCreateInfo<'b> {
9822        PipelineRasterizationStateCreateInfo {
9823            raw: self.raw,
9824            _p: PhantomData,
9825        }
9826    }
9827}
9828
9829
9830/// A `VkPipelineMultisampleStateCreateInfo`.
9831///
9832/// 
9833#[derive(Debug, Clone, Default)]
9834#[repr(C)]
9835pub struct PipelineMultisampleStateCreateInfo<'s> {
9836    raw: vks::VkPipelineMultisampleStateCreateInfo,
9837    _p: PhantomData<&'s ()>,
9838}
9839
9840impl<'s> PipelineMultisampleStateCreateInfo<'s> {
9841    pub fn builder<'b>() -> PipelineMultisampleStateCreateInfoBuilder<'b> {
9842        PipelineMultisampleStateCreateInfoBuilder::new()
9843    }
9844
9845    pub unsafe fn from_raw(raw: vks::VkPipelineMultisampleStateCreateInfo) -> PipelineMultisampleStateCreateInfo<'s> {
9846        PipelineMultisampleStateCreateInfo { raw, _p: PhantomData }
9847    }
9848
9849    pub fn next<'a>(&'a self) -> *const c_void {
9850        self.raw.pNext
9851    }
9852
9853    pub fn flags<'a>(&'a self) -> PipelineMultisampleStateCreateFlags {
9854        PipelineMultisampleStateCreateFlags::from_bits(self.raw.flags)
9855            .expect("PipelineMultisampleStateCreateInfo::flags: error converting flags")
9856    }
9857
9858    pub fn rasterization_samples<'a>(&'a self) -> SampleCountFlags {
9859        SampleCountFlags::from_bits(self.raw.rasterizationSamples)
9860            .expect("PipelineMultisampleStateCreateInfo::rasterization_samples: error converting flags")
9861    }
9862
9863    pub fn sample_shading_enable<'a>(&'a self) -> bool {
9864        self.raw.sampleShadingEnable != 0
9865    }
9866
9867    pub fn min_sample_shading<'a>(&'a self) -> f32 {
9868        self.raw.minSampleShading.into()
9869    }
9870
9871    pub fn sample_mask<'a>(&'a self) -> &'a u32 {
9872        unsafe { &*(self.raw.pSampleMask as *const _) }
9873    }
9874
9875    pub fn alpha_to_coverage_enable<'a>(&'a self) -> bool {
9876        self.raw.alphaToCoverageEnable != 0
9877    }
9878
9879    pub fn alpha_to_one_enable<'a>(&'a self) -> bool {
9880        self.raw.alphaToOneEnable != 0
9881    }
9882
9883    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
9884        self.raw.pNext = next;
9885    }
9886
9887    pub fn set_flags<'m>(&mut self, flags: PipelineMultisampleStateCreateFlags) {
9888        self.raw.flags = flags.bits();
9889    }
9890
9891    pub fn set_rasterization_samples<'m>(&mut self, rasterization_samples: SampleCountFlags) {
9892        self.raw.rasterizationSamples = rasterization_samples.bits();
9893    }
9894
9895    pub fn set_sample_shading_enable<'m>(&mut self, sample_shading_enable: bool) {
9896        self.raw.sampleShadingEnable = sample_shading_enable as u32;
9897    }
9898
9899    pub fn set_min_sample_shading<'m>(&mut self, min_sample_shading: f32) {
9900        self.raw.minSampleShading = min_sample_shading.into();
9901    }
9902
9903    pub fn set_sample_mask<'m, 'a>(&mut self, sample_mask: &'a u32) {
9904        self.raw.pSampleMask = sample_mask;
9905    }
9906
9907    pub fn set_alpha_to_coverage_enable<'m>(&mut self, alpha_to_coverage_enable: bool) {
9908        self.raw.alphaToCoverageEnable = alpha_to_coverage_enable as u32;
9909    }
9910
9911    pub fn set_alpha_to_one_enable<'m>(&mut self, alpha_to_one_enable: bool) {
9912        self.raw.alphaToOneEnable = alpha_to_one_enable as u32;
9913    }
9914
9915    pub fn as_raw(&self) -> &vks::VkPipelineMultisampleStateCreateInfo {
9916        &self.raw
9917    }
9918}
9919
9920impl<'s> From<PipelineMultisampleStateCreateInfo<'s>> for vks::VkPipelineMultisampleStateCreateInfo {
9921    fn from(f: PipelineMultisampleStateCreateInfo<'s>) -> vks::VkPipelineMultisampleStateCreateInfo {
9922        f.raw
9923    }
9924}
9925
9926
9927/// A builder for `VkPipelineMultisampleStateCreateInfo`.
9928///
9929/// 
9930#[derive(Debug, Clone, Default)]
9931pub struct PipelineMultisampleStateCreateInfoBuilder<'b> {
9932    raw: vks::VkPipelineMultisampleStateCreateInfo,
9933    _p: PhantomData<&'b ()>, 
9934}
9935
9936impl<'b> PipelineMultisampleStateCreateInfoBuilder<'b> {
9937    pub fn new() -> PipelineMultisampleStateCreateInfoBuilder<'b> {
9938        PipelineMultisampleStateCreateInfoBuilder {
9939            raw: vks::VkPipelineMultisampleStateCreateInfo::default(),
9940            _p: PhantomData,
9941        }
9942    }
9943
9944    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PipelineMultisampleStateCreateInfoBuilder<'b> {
9945        self.raw.pNext = next;
9946        self
9947    }
9948
9949    pub fn flags<'m>(mut self, flags: PipelineMultisampleStateCreateFlags) -> PipelineMultisampleStateCreateInfoBuilder<'b> {
9950        self.raw.flags = flags.bits();
9951        self
9952    }
9953
9954    pub fn rasterization_samples<'m>(mut self, rasterization_samples: SampleCountFlags) -> PipelineMultisampleStateCreateInfoBuilder<'b> {
9955        self.raw.rasterizationSamples = rasterization_samples.bits();
9956        self
9957    }
9958
9959    pub fn sample_shading_enable<'m>(mut self, sample_shading_enable: bool) -> PipelineMultisampleStateCreateInfoBuilder<'b> {
9960        self.raw.sampleShadingEnable = sample_shading_enable as u32;
9961        self
9962    }
9963
9964    pub fn min_sample_shading<'m>(mut self, min_sample_shading: f32) -> PipelineMultisampleStateCreateInfoBuilder<'b> {
9965        self.raw.minSampleShading = min_sample_shading.into();
9966        self
9967    }
9968
9969    pub fn sample_mask<'m, 'a>(mut self, sample_mask: &'a u32) -> PipelineMultisampleStateCreateInfoBuilder<'b> {
9970        self.raw.pSampleMask = sample_mask;
9971        self
9972    }
9973
9974    pub fn alpha_to_coverage_enable<'m>(mut self, alpha_to_coverage_enable: bool) -> PipelineMultisampleStateCreateInfoBuilder<'b> {
9975        self.raw.alphaToCoverageEnable = alpha_to_coverage_enable as u32;
9976        self
9977    }
9978
9979    pub fn alpha_to_one_enable<'m>(mut self, alpha_to_one_enable: bool) -> PipelineMultisampleStateCreateInfoBuilder<'b> {
9980        self.raw.alphaToOneEnable = alpha_to_one_enable as u32;
9981        self
9982    }
9983
9984    pub fn get_next<'a>(&'a self) -> *const c_void {
9985        self.raw.pNext
9986    }
9987
9988    pub fn get_flags<'a>(&'a self) -> PipelineMultisampleStateCreateFlags {
9989        PipelineMultisampleStateCreateFlags::from_bits(self.raw.flags)
9990            .expect("PipelineMultisampleStateCreateInfo::flags: error converting flags")
9991    }
9992
9993    pub fn get_rasterization_samples<'a>(&'a self) -> SampleCountFlags {
9994        SampleCountFlags::from_bits(self.raw.rasterizationSamples)
9995            .expect("PipelineMultisampleStateCreateInfo::rasterization_samples: error converting flags")
9996    }
9997
9998    pub fn get_sample_shading_enable<'a>(&'a self) -> bool {
9999        self.raw.sampleShadingEnable != 0
10000    }
10001
10002    pub fn get_min_sample_shading<'a>(&'a self) -> f32 {
10003        self.raw.minSampleShading.into()
10004    }
10005
10006    pub fn get_sample_mask<'a>(&'a self) -> &'a u32 {
10007        unsafe { &*(self.raw.pSampleMask as *const _) }
10008    }
10009
10010    pub fn get_alpha_to_coverage_enable<'a>(&'a self) -> bool {
10011        self.raw.alphaToCoverageEnable != 0
10012    }
10013
10014    pub fn get_alpha_to_one_enable<'a>(&'a self) -> bool {
10015        self.raw.alphaToOneEnable != 0
10016    }
10017
10018    pub fn build(self) -> PipelineMultisampleStateCreateInfo<'b> {
10019        PipelineMultisampleStateCreateInfo {
10020            raw: self.raw,
10021            _p: PhantomData,
10022        }
10023    }
10024}
10025
10026
10027/// A `VkPipelineColorBlendAttachmentState`.
10028///
10029/// 
10030#[derive(Debug, Clone, Default)]
10031#[repr(C)]
10032pub struct PipelineColorBlendAttachmentState {
10033    raw: vks::VkPipelineColorBlendAttachmentState,
10034}
10035
10036impl PipelineColorBlendAttachmentState {
10037    pub fn builder() -> PipelineColorBlendAttachmentStateBuilder {
10038        PipelineColorBlendAttachmentStateBuilder::new()
10039    }
10040
10041    pub unsafe fn from_raw(raw: vks::VkPipelineColorBlendAttachmentState) -> PipelineColorBlendAttachmentState {
10042        PipelineColorBlendAttachmentState { raw, }
10043    }
10044
10045    pub fn blend_enable<'a>(&'a self) -> bool {
10046        self.raw.blendEnable != 0
10047    }
10048
10049    pub fn src_color_blend_factor<'a>(&'a self) -> BlendFactor {
10050        self.raw.srcColorBlendFactor.into()
10051    }
10052
10053    pub fn dst_color_blend_factor<'a>(&'a self) -> BlendFactor {
10054        self.raw.dstColorBlendFactor.into()
10055    }
10056
10057    pub fn color_blend_op<'a>(&'a self) -> BlendOp {
10058        self.raw.colorBlendOp.into()
10059    }
10060
10061    pub fn src_alpha_blend_factor<'a>(&'a self) -> BlendFactor {
10062        self.raw.srcAlphaBlendFactor.into()
10063    }
10064
10065    pub fn dst_alpha_blend_factor<'a>(&'a self) -> BlendFactor {
10066        self.raw.dstAlphaBlendFactor.into()
10067    }
10068
10069    pub fn alpha_blend_op<'a>(&'a self) -> BlendOp {
10070        self.raw.alphaBlendOp.into()
10071    }
10072
10073    pub fn color_write_mask<'a>(&'a self) -> ColorComponentFlags {
10074        ColorComponentFlags::from_bits(self.raw.colorWriteMask)
10075            .expect("PipelineColorBlendAttachmentState::color_write_mask: error converting flags")
10076    }
10077
10078    pub fn set_blend_enable<'m>(&mut self, blend_enable: bool) {
10079        self.raw.blendEnable = blend_enable as u32;
10080    }
10081
10082    pub fn set_src_color_blend_factor<'m>(&mut self, src_color_blend_factor: BlendFactor) {
10083        self.raw.srcColorBlendFactor = src_color_blend_factor.into();
10084    }
10085
10086    pub fn set_dst_color_blend_factor<'m>(&mut self, dst_color_blend_factor: BlendFactor) {
10087        self.raw.dstColorBlendFactor = dst_color_blend_factor.into();
10088    }
10089
10090    pub fn set_color_blend_op<'m>(&mut self, color_blend_op: BlendOp) {
10091        self.raw.colorBlendOp = color_blend_op.into();
10092    }
10093
10094    pub fn set_src_alpha_blend_factor<'m>(&mut self, src_alpha_blend_factor: BlendFactor) {
10095        self.raw.srcAlphaBlendFactor = src_alpha_blend_factor.into();
10096    }
10097
10098    pub fn set_dst_alpha_blend_factor<'m>(&mut self, dst_alpha_blend_factor: BlendFactor) {
10099        self.raw.dstAlphaBlendFactor = dst_alpha_blend_factor.into();
10100    }
10101
10102    pub fn set_alpha_blend_op<'m>(&mut self, alpha_blend_op: BlendOp) {
10103        self.raw.alphaBlendOp = alpha_blend_op.into();
10104    }
10105
10106    pub fn set_color_write_mask<'m>(&mut self, color_write_mask: ColorComponentFlags) {
10107        self.raw.colorWriteMask = color_write_mask.bits();
10108    }
10109
10110    pub fn as_raw(&self) -> &vks::VkPipelineColorBlendAttachmentState {
10111        &self.raw
10112    }
10113}
10114
10115impl From<PipelineColorBlendAttachmentState> for vks::VkPipelineColorBlendAttachmentState {
10116    fn from(f: PipelineColorBlendAttachmentState) -> vks::VkPipelineColorBlendAttachmentState {
10117        f.raw
10118    }
10119}
10120
10121
10122/// A builder for `VkPipelineColorBlendAttachmentState`.
10123///
10124/// 
10125#[derive(Debug, Clone, Default)]
10126pub struct PipelineColorBlendAttachmentStateBuilder {
10127    raw: vks::VkPipelineColorBlendAttachmentState,
10128}
10129
10130impl PipelineColorBlendAttachmentStateBuilder {
10131    pub fn new() -> PipelineColorBlendAttachmentStateBuilder {
10132        PipelineColorBlendAttachmentStateBuilder {
10133            raw: vks::VkPipelineColorBlendAttachmentState::default(),
10134        }
10135    }
10136
10137    pub fn blend_enable<'m>(mut self, blend_enable: bool) -> PipelineColorBlendAttachmentStateBuilder {
10138        self.raw.blendEnable = blend_enable as u32;
10139        self
10140    }
10141
10142    pub fn src_color_blend_factor<'m>(mut self, src_color_blend_factor: BlendFactor) -> PipelineColorBlendAttachmentStateBuilder {
10143        self.raw.srcColorBlendFactor = src_color_blend_factor.into();
10144        self
10145    }
10146
10147    pub fn dst_color_blend_factor<'m>(mut self, dst_color_blend_factor: BlendFactor) -> PipelineColorBlendAttachmentStateBuilder {
10148        self.raw.dstColorBlendFactor = dst_color_blend_factor.into();
10149        self
10150    }
10151
10152    pub fn color_blend_op<'m>(mut self, color_blend_op: BlendOp) -> PipelineColorBlendAttachmentStateBuilder {
10153        self.raw.colorBlendOp = color_blend_op.into();
10154        self
10155    }
10156
10157    pub fn src_alpha_blend_factor<'m>(mut self, src_alpha_blend_factor: BlendFactor) -> PipelineColorBlendAttachmentStateBuilder {
10158        self.raw.srcAlphaBlendFactor = src_alpha_blend_factor.into();
10159        self
10160    }
10161
10162    pub fn dst_alpha_blend_factor<'m>(mut self, dst_alpha_blend_factor: BlendFactor) -> PipelineColorBlendAttachmentStateBuilder {
10163        self.raw.dstAlphaBlendFactor = dst_alpha_blend_factor.into();
10164        self
10165    }
10166
10167    pub fn alpha_blend_op<'m>(mut self, alpha_blend_op: BlendOp) -> PipelineColorBlendAttachmentStateBuilder {
10168        self.raw.alphaBlendOp = alpha_blend_op.into();
10169        self
10170    }
10171
10172    pub fn color_write_mask<'m>(mut self, color_write_mask: ColorComponentFlags) -> PipelineColorBlendAttachmentStateBuilder {
10173        self.raw.colorWriteMask = color_write_mask.bits();
10174        self
10175    }
10176
10177    pub fn get_blend_enable<'a>(&'a self) -> bool {
10178        self.raw.blendEnable != 0
10179    }
10180
10181    pub fn get_src_color_blend_factor<'a>(&'a self) -> BlendFactor {
10182        self.raw.srcColorBlendFactor.into()
10183    }
10184
10185    pub fn get_dst_color_blend_factor<'a>(&'a self) -> BlendFactor {
10186        self.raw.dstColorBlendFactor.into()
10187    }
10188
10189    pub fn get_color_blend_op<'a>(&'a self) -> BlendOp {
10190        self.raw.colorBlendOp.into()
10191    }
10192
10193    pub fn get_src_alpha_blend_factor<'a>(&'a self) -> BlendFactor {
10194        self.raw.srcAlphaBlendFactor.into()
10195    }
10196
10197    pub fn get_dst_alpha_blend_factor<'a>(&'a self) -> BlendFactor {
10198        self.raw.dstAlphaBlendFactor.into()
10199    }
10200
10201    pub fn get_alpha_blend_op<'a>(&'a self) -> BlendOp {
10202        self.raw.alphaBlendOp.into()
10203    }
10204
10205    pub fn get_color_write_mask<'a>(&'a self) -> ColorComponentFlags {
10206        ColorComponentFlags::from_bits(self.raw.colorWriteMask)
10207            .expect("PipelineColorBlendAttachmentState::color_write_mask: error converting flags")
10208    }
10209
10210    pub fn build(self) -> PipelineColorBlendAttachmentState {
10211        PipelineColorBlendAttachmentState {
10212            raw: self.raw,
10213        }
10214    }
10215}
10216
10217
10218/// A `VkPipelineColorBlendStateCreateInfo`.
10219///
10220/// 
10221#[derive(Debug, Clone, Default)]
10222#[repr(C)]
10223pub struct PipelineColorBlendStateCreateInfo<'s> {
10224    raw: vks::VkPipelineColorBlendStateCreateInfo,
10225    _p: PhantomData<&'s ()>,
10226}
10227
10228impl<'s> PipelineColorBlendStateCreateInfo<'s> {
10229    pub fn builder<'b>() -> PipelineColorBlendStateCreateInfoBuilder<'b> {
10230        PipelineColorBlendStateCreateInfoBuilder::new()
10231    }
10232
10233    pub unsafe fn from_raw(raw: vks::VkPipelineColorBlendStateCreateInfo) -> PipelineColorBlendStateCreateInfo<'s> {
10234        PipelineColorBlendStateCreateInfo { raw, _p: PhantomData }
10235    }
10236
10237    pub fn next<'a>(&'a self) -> *const c_void {
10238        self.raw.pNext
10239    }
10240
10241    pub fn flags<'a>(&'a self) -> PipelineColorBlendStateCreateFlags {
10242        PipelineColorBlendStateCreateFlags::from_bits(self.raw.flags)
10243            .expect("PipelineColorBlendStateCreateInfo::flags: error converting flags")
10244    }
10245
10246    pub fn logic_op_enable<'a>(&'a self) -> bool {
10247        self.raw.logicOpEnable != 0
10248    }
10249
10250    pub fn logic_op<'a>(&'a self) -> LogicOp {
10251        self.raw.logicOp.into()
10252    }
10253
10254    pub fn attachments<'a>(&'a self) -> &'a [PipelineColorBlendAttachmentState] {
10255        unsafe { slice::from_raw_parts(self.raw.pAttachments as *const _, self.raw.attachmentCount as usize) }
10256    }
10257
10258    pub fn blend_constants<'a>(&'a self) -> &[f32] {
10259        unsafe { slice::from_raw_parts(&self.raw.blendConstants as *const _, 4 as usize) }
10260    }
10261
10262    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
10263        self.raw.pNext = next;
10264    }
10265
10266    pub fn set_flags<'m>(&mut self, flags: PipelineColorBlendStateCreateFlags) {
10267        self.raw.flags = flags.bits();
10268    }
10269
10270    pub fn set_logic_op_enable<'m>(&mut self, logic_op_enable: bool) {
10271        self.raw.logicOpEnable = logic_op_enable as u32;
10272    }
10273
10274    pub fn set_logic_op<'m>(&mut self, logic_op: LogicOp) {
10275        self.raw.logicOp = logic_op.into();
10276    }
10277
10278    pub fn set_attachments<'m, 'a>(&mut self, attachments: &'a [PipelineColorBlendAttachmentState])
10279            where 'a: 's {
10280        assert!(self.raw.attachmentCount == 0 || self.raw.attachmentCount == attachments.len() as _, 
10281            "count inconsistency found when specifying `PipelineColorBlendStateCreateInfo::attachments`.");
10282        self.raw.attachmentCount = attachments.len() as _;
10283        self.raw.pAttachments = attachments.as_ptr() as *const vks::VkPipelineColorBlendAttachmentState;
10284    }
10285
10286    pub fn set_blend_constants<'m>(&mut self, blend_constants: [f32; 4]) {
10287        self.raw.blendConstants = blend_constants;
10288    }
10289
10290    pub fn as_raw(&self) -> &vks::VkPipelineColorBlendStateCreateInfo {
10291        &self.raw
10292    }
10293}
10294
10295impl<'s> From<PipelineColorBlendStateCreateInfo<'s>> for vks::VkPipelineColorBlendStateCreateInfo {
10296    fn from(f: PipelineColorBlendStateCreateInfo<'s>) -> vks::VkPipelineColorBlendStateCreateInfo {
10297        f.raw
10298    }
10299}
10300
10301
10302/// A builder for `VkPipelineColorBlendStateCreateInfo`.
10303///
10304/// 
10305#[derive(Debug, Clone, Default)]
10306pub struct PipelineColorBlendStateCreateInfoBuilder<'b> {
10307    raw: vks::VkPipelineColorBlendStateCreateInfo,
10308    _p: PhantomData<&'b ()>, 
10309}
10310
10311impl<'b> PipelineColorBlendStateCreateInfoBuilder<'b> {
10312    pub fn new() -> PipelineColorBlendStateCreateInfoBuilder<'b> {
10313        PipelineColorBlendStateCreateInfoBuilder {
10314            raw: vks::VkPipelineColorBlendStateCreateInfo::default(),
10315            _p: PhantomData,
10316        }
10317    }
10318
10319    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PipelineColorBlendStateCreateInfoBuilder<'b> {
10320        self.raw.pNext = next;
10321        self
10322    }
10323
10324    pub fn flags<'m>(mut self, flags: PipelineColorBlendStateCreateFlags) -> PipelineColorBlendStateCreateInfoBuilder<'b> {
10325        self.raw.flags = flags.bits();
10326        self
10327    }
10328
10329    pub fn logic_op_enable<'m>(mut self, logic_op_enable: bool) -> PipelineColorBlendStateCreateInfoBuilder<'b> {
10330        self.raw.logicOpEnable = logic_op_enable as u32;
10331        self
10332    }
10333
10334    pub fn logic_op<'m>(mut self, logic_op: LogicOp) -> PipelineColorBlendStateCreateInfoBuilder<'b> {
10335        self.raw.logicOp = logic_op.into();
10336        self
10337    }
10338
10339    pub fn attachments<'m, 'a>(mut self, attachments: &'a [PipelineColorBlendAttachmentState]) -> PipelineColorBlendStateCreateInfoBuilder<'b>
10340            where 'a: 'b {
10341        assert!(self.raw.attachmentCount == 0 || self.raw.attachmentCount == attachments.len() as _, 
10342            "count inconsistency found when specifying `PipelineColorBlendStateCreateInfo::attachments`.");
10343        self.raw.attachmentCount = attachments.len() as _;
10344        self.raw.pAttachments = attachments.as_ptr() as *const vks::VkPipelineColorBlendAttachmentState;
10345        self
10346    }
10347
10348    pub fn blend_constants<'m>(mut self, blend_constants: [f32; 4]) -> PipelineColorBlendStateCreateInfoBuilder<'b> {
10349        self.raw.blendConstants = blend_constants;
10350        self
10351    }
10352
10353    pub fn get_next<'a>(&'a self) -> *const c_void {
10354        self.raw.pNext
10355    }
10356
10357    pub fn get_flags<'a>(&'a self) -> PipelineColorBlendStateCreateFlags {
10358        PipelineColorBlendStateCreateFlags::from_bits(self.raw.flags)
10359            .expect("PipelineColorBlendStateCreateInfo::flags: error converting flags")
10360    }
10361
10362    pub fn get_logic_op_enable<'a>(&'a self) -> bool {
10363        self.raw.logicOpEnable != 0
10364    }
10365
10366    pub fn get_logic_op<'a>(&'a self) -> LogicOp {
10367        self.raw.logicOp.into()
10368    }
10369
10370    pub fn get_attachments<'a>(&'a self) -> &'a [PipelineColorBlendAttachmentState] {
10371        unsafe { slice::from_raw_parts(self.raw.pAttachments as *const _, self.raw.attachmentCount as usize) }
10372    }
10373
10374    pub fn get_blend_constants<'a>(&'a self) -> &[f32] {
10375        unsafe { slice::from_raw_parts(&self.raw.blendConstants as *const _, 4 as usize) }
10376    }
10377
10378    pub fn build(self) -> PipelineColorBlendStateCreateInfo<'b> {
10379        PipelineColorBlendStateCreateInfo {
10380            raw: self.raw,
10381            _p: PhantomData,
10382        }
10383    }
10384}
10385
10386
10387/// A `VkPipelineDynamicStateCreateInfo`.
10388///
10389/// 
10390#[derive(Debug, Clone, Default)]
10391#[repr(C)]
10392pub struct PipelineDynamicStateCreateInfo<'s> {
10393    raw: vks::VkPipelineDynamicStateCreateInfo,
10394    _p: PhantomData<&'s ()>,
10395}
10396
10397impl<'s> PipelineDynamicStateCreateInfo<'s> {
10398    pub fn builder<'b>() -> PipelineDynamicStateCreateInfoBuilder<'b> {
10399        PipelineDynamicStateCreateInfoBuilder::new()
10400    }
10401
10402    pub unsafe fn from_raw(raw: vks::VkPipelineDynamicStateCreateInfo) -> PipelineDynamicStateCreateInfo<'s> {
10403        PipelineDynamicStateCreateInfo { raw, _p: PhantomData }
10404    }
10405
10406    pub fn next<'a>(&'a self) -> *const c_void {
10407        self.raw.pNext
10408    }
10409
10410    pub fn flags<'a>(&'a self) -> PipelineDynamicStateCreateFlags {
10411        PipelineDynamicStateCreateFlags::from_bits(self.raw.flags)
10412            .expect("PipelineDynamicStateCreateInfo::flags: error converting flags")
10413    }
10414
10415    pub fn dynamic_states<'a>(&'a self) -> &'a [DynamicState] {
10416        unsafe { slice::from_raw_parts(self.raw.pDynamicStates as *const _, self.raw.dynamicStateCount as usize) }
10417    }
10418
10419    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
10420        self.raw.pNext = next;
10421    }
10422
10423    pub fn set_flags<'m>(&mut self, flags: PipelineDynamicStateCreateFlags) {
10424        self.raw.flags = flags.bits();
10425    }
10426
10427    pub fn set_dynamic_states<'m, 'a>(&mut self, dynamic_states: &'a [DynamicState])
10428            where 'a: 's {
10429        assert!(self.raw.dynamicStateCount == 0 || self.raw.dynamicStateCount == dynamic_states.len() as _, 
10430            "count inconsistency found when specifying `PipelineDynamicStateCreateInfo::dynamic_states`.");
10431        self.raw.dynamicStateCount = dynamic_states.len() as _;
10432        self.raw.pDynamicStates = dynamic_states.as_ptr() as *const DynamicState as *const _;
10433    }
10434
10435    pub fn as_raw(&self) -> &vks::VkPipelineDynamicStateCreateInfo {
10436        &self.raw
10437    }
10438}
10439
10440impl<'s> From<PipelineDynamicStateCreateInfo<'s>> for vks::VkPipelineDynamicStateCreateInfo {
10441    fn from(f: PipelineDynamicStateCreateInfo<'s>) -> vks::VkPipelineDynamicStateCreateInfo {
10442        f.raw
10443    }
10444}
10445
10446
10447/// A builder for `VkPipelineDynamicStateCreateInfo`.
10448///
10449/// 
10450#[derive(Debug, Clone, Default)]
10451pub struct PipelineDynamicStateCreateInfoBuilder<'b> {
10452    raw: vks::VkPipelineDynamicStateCreateInfo,
10453    _p: PhantomData<&'b ()>, 
10454}
10455
10456impl<'b> PipelineDynamicStateCreateInfoBuilder<'b> {
10457    pub fn new() -> PipelineDynamicStateCreateInfoBuilder<'b> {
10458        PipelineDynamicStateCreateInfoBuilder {
10459            raw: vks::VkPipelineDynamicStateCreateInfo::default(),
10460            _p: PhantomData,
10461        }
10462    }
10463
10464    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PipelineDynamicStateCreateInfoBuilder<'b> {
10465        self.raw.pNext = next;
10466        self
10467    }
10468
10469    pub fn flags<'m>(mut self, flags: PipelineDynamicStateCreateFlags) -> PipelineDynamicStateCreateInfoBuilder<'b> {
10470        self.raw.flags = flags.bits();
10471        self
10472    }
10473
10474    pub fn dynamic_states<'m, 'a>(mut self, dynamic_states: &'a [DynamicState]) -> PipelineDynamicStateCreateInfoBuilder<'b>
10475            where 'a: 'b {
10476        assert!(self.raw.dynamicStateCount == 0 || self.raw.dynamicStateCount == dynamic_states.len() as _, 
10477            "count inconsistency found when specifying `PipelineDynamicStateCreateInfo::dynamic_states`.");
10478        self.raw.dynamicStateCount = dynamic_states.len() as _;
10479        self.raw.pDynamicStates = dynamic_states.as_ptr() as *const DynamicState as *const _;
10480        self
10481    }
10482
10483    pub fn get_next<'a>(&'a self) -> *const c_void {
10484        self.raw.pNext
10485    }
10486
10487    pub fn get_flags<'a>(&'a self) -> PipelineDynamicStateCreateFlags {
10488        PipelineDynamicStateCreateFlags::from_bits(self.raw.flags)
10489            .expect("PipelineDynamicStateCreateInfo::flags: error converting flags")
10490    }
10491
10492    pub fn get_dynamic_states<'a>(&'a self) -> &'a [DynamicState] {
10493        unsafe { slice::from_raw_parts(self.raw.pDynamicStates as *const _, self.raw.dynamicStateCount as usize) }
10494    }
10495
10496    pub fn build(self) -> PipelineDynamicStateCreateInfo<'b> {
10497        PipelineDynamicStateCreateInfo {
10498            raw: self.raw,
10499            _p: PhantomData,
10500        }
10501    }
10502}
10503
10504
10505/// A `VkStencilOpState`.
10506///
10507/// 
10508#[derive(Debug, Clone, Default)]
10509#[repr(C)]
10510pub struct StencilOpState {
10511    raw: vks::VkStencilOpState,
10512}
10513
10514impl StencilOpState {
10515    pub fn builder() -> StencilOpStateBuilder {
10516        StencilOpStateBuilder::new()
10517    }
10518
10519    pub unsafe fn from_raw(raw: vks::VkStencilOpState) -> StencilOpState {
10520        StencilOpState { raw, }
10521    }
10522
10523    pub fn fail_op<'a>(&'a self) -> StencilOp {
10524        self.raw.failOp.into()
10525    }
10526
10527    pub fn pass_op<'a>(&'a self) -> StencilOp {
10528        self.raw.passOp.into()
10529    }
10530
10531    pub fn depth_fail_op<'a>(&'a self) -> StencilOp {
10532        self.raw.depthFailOp.into()
10533    }
10534
10535    pub fn compare_op<'a>(&'a self) -> CompareOp {
10536        self.raw.compareOp.into()
10537    }
10538
10539    pub fn compare_mask<'a>(&'a self) -> u32 {
10540        self.raw.compareMask.into()
10541    }
10542
10543    pub fn write_mask<'a>(&'a self) -> u32 {
10544        self.raw.writeMask.into()
10545    }
10546
10547    pub fn reference<'a>(&'a self) -> u32 {
10548        self.raw.reference.into()
10549    }
10550
10551    pub fn set_fail_op<'m>(&mut self, fail_op: StencilOp) {
10552        self.raw.failOp = fail_op.into();
10553    }
10554
10555    pub fn set_pass_op<'m>(&mut self, pass_op: StencilOp) {
10556        self.raw.passOp = pass_op.into();
10557    }
10558
10559    pub fn set_depth_fail_op<'m>(&mut self, depth_fail_op: StencilOp) {
10560        self.raw.depthFailOp = depth_fail_op.into();
10561    }
10562
10563    pub fn set_compare_op<'m>(&mut self, compare_op: CompareOp) {
10564        self.raw.compareOp = compare_op.into();
10565    }
10566
10567    pub fn set_compare_mask<'m>(&mut self, compare_mask: u32) {
10568        self.raw.compareMask = compare_mask.into();
10569    }
10570
10571    pub fn set_write_mask<'m>(&mut self, write_mask: u32) {
10572        self.raw.writeMask = write_mask.into();
10573    }
10574
10575    pub fn set_reference<'m>(&mut self, reference: u32) {
10576        self.raw.reference = reference.into();
10577    }
10578
10579    pub fn as_raw(&self) -> &vks::VkStencilOpState {
10580        &self.raw
10581    }
10582}
10583
10584impl From<StencilOpState> for vks::VkStencilOpState {
10585    fn from(f: StencilOpState) -> vks::VkStencilOpState {
10586        f.raw
10587    }
10588}
10589
10590
10591/// A builder for `VkStencilOpState`.
10592///
10593/// 
10594#[derive(Debug, Clone, Default)]
10595pub struct StencilOpStateBuilder {
10596    raw: vks::VkStencilOpState,
10597}
10598
10599impl StencilOpStateBuilder {
10600    pub fn new() -> StencilOpStateBuilder {
10601        StencilOpStateBuilder {
10602            raw: vks::VkStencilOpState::default(),
10603        }
10604    }
10605
10606    pub fn fail_op<'m>(mut self, fail_op: StencilOp) -> StencilOpStateBuilder {
10607        self.raw.failOp = fail_op.into();
10608        self
10609    }
10610
10611    pub fn pass_op<'m>(mut self, pass_op: StencilOp) -> StencilOpStateBuilder {
10612        self.raw.passOp = pass_op.into();
10613        self
10614    }
10615
10616    pub fn depth_fail_op<'m>(mut self, depth_fail_op: StencilOp) -> StencilOpStateBuilder {
10617        self.raw.depthFailOp = depth_fail_op.into();
10618        self
10619    }
10620
10621    pub fn compare_op<'m>(mut self, compare_op: CompareOp) -> StencilOpStateBuilder {
10622        self.raw.compareOp = compare_op.into();
10623        self
10624    }
10625
10626    pub fn compare_mask<'m>(mut self, compare_mask: u32) -> StencilOpStateBuilder {
10627        self.raw.compareMask = compare_mask.into();
10628        self
10629    }
10630
10631    pub fn write_mask<'m>(mut self, write_mask: u32) -> StencilOpStateBuilder {
10632        self.raw.writeMask = write_mask.into();
10633        self
10634    }
10635
10636    pub fn reference<'m>(mut self, reference: u32) -> StencilOpStateBuilder {
10637        self.raw.reference = reference.into();
10638        self
10639    }
10640
10641    pub fn get_fail_op<'a>(&'a self) -> StencilOp {
10642        self.raw.failOp.into()
10643    }
10644
10645    pub fn get_pass_op<'a>(&'a self) -> StencilOp {
10646        self.raw.passOp.into()
10647    }
10648
10649    pub fn get_depth_fail_op<'a>(&'a self) -> StencilOp {
10650        self.raw.depthFailOp.into()
10651    }
10652
10653    pub fn get_compare_op<'a>(&'a self) -> CompareOp {
10654        self.raw.compareOp.into()
10655    }
10656
10657    pub fn get_compare_mask<'a>(&'a self) -> u32 {
10658        self.raw.compareMask.into()
10659    }
10660
10661    pub fn get_write_mask<'a>(&'a self) -> u32 {
10662        self.raw.writeMask.into()
10663    }
10664
10665    pub fn get_reference<'a>(&'a self) -> u32 {
10666        self.raw.reference.into()
10667    }
10668
10669    pub fn build(self) -> StencilOpState {
10670        StencilOpState {
10671            raw: self.raw,
10672        }
10673    }
10674}
10675
10676
10677/// A `VkPipelineDepthStencilStateCreateInfo`.
10678///
10679/// 
10680#[derive(Debug, Clone, Default)]
10681#[repr(C)]
10682pub struct PipelineDepthStencilStateCreateInfo<'s> {
10683    raw: vks::VkPipelineDepthStencilStateCreateInfo,
10684    _p: PhantomData<&'s ()>,
10685}
10686
10687impl<'s> PipelineDepthStencilStateCreateInfo<'s> {
10688    pub fn builder<'b>() -> PipelineDepthStencilStateCreateInfoBuilder<'b> {
10689        PipelineDepthStencilStateCreateInfoBuilder::new()
10690    }
10691
10692    pub unsafe fn from_raw(raw: vks::VkPipelineDepthStencilStateCreateInfo) -> PipelineDepthStencilStateCreateInfo<'s> {
10693        PipelineDepthStencilStateCreateInfo { raw, _p: PhantomData }
10694    }
10695
10696    pub fn next<'a>(&'a self) -> *const c_void {
10697        self.raw.pNext
10698    }
10699
10700    pub fn flags<'a>(&'a self) -> PipelineDepthStencilStateCreateFlags {
10701        PipelineDepthStencilStateCreateFlags::from_bits(self.raw.flags)
10702            .expect("PipelineDepthStencilStateCreateInfo::flags: error converting flags")
10703    }
10704
10705    pub fn depth_test_enable<'a>(&'a self) -> bool {
10706        self.raw.depthTestEnable != 0
10707    }
10708
10709    pub fn depth_write_enable<'a>(&'a self) -> bool {
10710        self.raw.depthWriteEnable != 0
10711    }
10712
10713    pub fn depth_compare_op<'a>(&'a self) -> CompareOp {
10714        self.raw.depthCompareOp.into()
10715    }
10716
10717    pub fn depth_bounds_test_enable<'a>(&'a self) -> bool {
10718        self.raw.depthBoundsTestEnable != 0
10719    }
10720
10721    pub fn stencil_test_enable<'a>(&'a self) -> bool {
10722        self.raw.stencilTestEnable != 0
10723    }
10724
10725    pub fn front<'a>(&'a self) -> &'a StencilOpState {
10726        unsafe { &*(&self.raw.front as *const vks::VkStencilOpState as *const StencilOpState) }
10727    }
10728
10729    pub fn front_mut<'a>(&'a mut self) -> &'a mut StencilOpState {
10730        unsafe { &mut *(&mut self.raw.front as *mut  vks::VkStencilOpState as *mut StencilOpState) }
10731    }
10732
10733    pub fn back<'a>(&'a self) -> &'a StencilOpState {
10734        unsafe { &*(&self.raw.back as *const vks::VkStencilOpState as *const StencilOpState) }
10735    }
10736
10737    pub fn back_mut<'a>(&'a mut self) -> &'a mut StencilOpState {
10738        unsafe { &mut *(&mut self.raw.back as *mut  vks::VkStencilOpState as *mut StencilOpState) }
10739    }
10740
10741    pub fn min_depth_bounds<'a>(&'a self) -> f32 {
10742        self.raw.minDepthBounds.into()
10743    }
10744
10745    pub fn max_depth_bounds<'a>(&'a self) -> f32 {
10746        self.raw.maxDepthBounds.into()
10747    }
10748
10749    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
10750        self.raw.pNext = next;
10751    }
10752
10753    pub fn set_flags<'m>(&mut self, flags: PipelineDepthStencilStateCreateFlags) {
10754        self.raw.flags = flags.bits();
10755    }
10756
10757    pub fn set_depth_test_enable<'m>(&mut self, depth_test_enable: bool) {
10758        self.raw.depthTestEnable = depth_test_enable as u32;
10759    }
10760
10761    pub fn set_depth_write_enable<'m>(&mut self, depth_write_enable: bool) {
10762        self.raw.depthWriteEnable = depth_write_enable as u32;
10763    }
10764
10765    pub fn set_depth_compare_op<'m>(&mut self, depth_compare_op: CompareOp) {
10766        self.raw.depthCompareOp = depth_compare_op.into();
10767    }
10768
10769    pub fn set_depth_bounds_test_enable<'m>(&mut self, depth_bounds_test_enable: bool) {
10770        self.raw.depthBoundsTestEnable = depth_bounds_test_enable as u32;
10771    }
10772
10773    pub fn set_stencil_test_enable<'m>(&mut self, stencil_test_enable: bool) {
10774        self.raw.stencilTestEnable = stencil_test_enable as u32;
10775    }
10776
10777    pub fn set_front<'m>(&mut self, front: StencilOpState) {
10778        self.raw.front = front.raw;
10779    }
10780
10781    pub fn set_back<'m>(&mut self, back: StencilOpState) {
10782        self.raw.back = back.raw;
10783    }
10784
10785    pub fn set_min_depth_bounds<'m>(&mut self, min_depth_bounds: f32) {
10786        self.raw.minDepthBounds = min_depth_bounds.into();
10787    }
10788
10789    pub fn set_max_depth_bounds<'m>(&mut self, max_depth_bounds: f32) {
10790        self.raw.maxDepthBounds = max_depth_bounds.into();
10791    }
10792
10793    pub fn as_raw(&self) -> &vks::VkPipelineDepthStencilStateCreateInfo {
10794        &self.raw
10795    }
10796}
10797
10798impl<'s> From<PipelineDepthStencilStateCreateInfo<'s>> for vks::VkPipelineDepthStencilStateCreateInfo {
10799    fn from(f: PipelineDepthStencilStateCreateInfo<'s>) -> vks::VkPipelineDepthStencilStateCreateInfo {
10800        f.raw
10801    }
10802}
10803
10804
10805/// A builder for `VkPipelineDepthStencilStateCreateInfo`.
10806///
10807/// 
10808#[derive(Debug, Clone, Default)]
10809pub struct PipelineDepthStencilStateCreateInfoBuilder<'b> {
10810    raw: vks::VkPipelineDepthStencilStateCreateInfo,
10811    _p: PhantomData<&'b ()>, 
10812}
10813
10814impl<'b> PipelineDepthStencilStateCreateInfoBuilder<'b> {
10815    pub fn new() -> PipelineDepthStencilStateCreateInfoBuilder<'b> {
10816        PipelineDepthStencilStateCreateInfoBuilder {
10817            raw: vks::VkPipelineDepthStencilStateCreateInfo::default(),
10818            _p: PhantomData,
10819        }
10820    }
10821
10822    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PipelineDepthStencilStateCreateInfoBuilder<'b> {
10823        self.raw.pNext = next;
10824        self
10825    }
10826
10827    pub fn flags<'m>(mut self, flags: PipelineDepthStencilStateCreateFlags) -> PipelineDepthStencilStateCreateInfoBuilder<'b> {
10828        self.raw.flags = flags.bits();
10829        self
10830    }
10831
10832    pub fn depth_test_enable<'m>(mut self, depth_test_enable: bool) -> PipelineDepthStencilStateCreateInfoBuilder<'b> {
10833        self.raw.depthTestEnable = depth_test_enable as u32;
10834        self
10835    }
10836
10837    pub fn depth_write_enable<'m>(mut self, depth_write_enable: bool) -> PipelineDepthStencilStateCreateInfoBuilder<'b> {
10838        self.raw.depthWriteEnable = depth_write_enable as u32;
10839        self
10840    }
10841
10842    pub fn depth_compare_op<'m>(mut self, depth_compare_op: CompareOp) -> PipelineDepthStencilStateCreateInfoBuilder<'b> {
10843        self.raw.depthCompareOp = depth_compare_op.into();
10844        self
10845    }
10846
10847    pub fn depth_bounds_test_enable<'m>(mut self, depth_bounds_test_enable: bool) -> PipelineDepthStencilStateCreateInfoBuilder<'b> {
10848        self.raw.depthBoundsTestEnable = depth_bounds_test_enable as u32;
10849        self
10850    }
10851
10852    pub fn stencil_test_enable<'m>(mut self, stencil_test_enable: bool) -> PipelineDepthStencilStateCreateInfoBuilder<'b> {
10853        self.raw.stencilTestEnable = stencil_test_enable as u32;
10854        self
10855    }
10856
10857    pub fn front<'m>(mut self, front: StencilOpState) -> PipelineDepthStencilStateCreateInfoBuilder<'b> {
10858        self.raw.front = front.raw;
10859        self
10860    }
10861
10862    pub fn back<'m>(mut self, back: StencilOpState) -> PipelineDepthStencilStateCreateInfoBuilder<'b> {
10863        self.raw.back = back.raw;
10864        self
10865    }
10866
10867    pub fn min_depth_bounds<'m>(mut self, min_depth_bounds: f32) -> PipelineDepthStencilStateCreateInfoBuilder<'b> {
10868        self.raw.minDepthBounds = min_depth_bounds.into();
10869        self
10870    }
10871
10872    pub fn max_depth_bounds<'m>(mut self, max_depth_bounds: f32) -> PipelineDepthStencilStateCreateInfoBuilder<'b> {
10873        self.raw.maxDepthBounds = max_depth_bounds.into();
10874        self
10875    }
10876
10877    pub fn get_next<'a>(&'a self) -> *const c_void {
10878        self.raw.pNext
10879    }
10880
10881    pub fn get_flags<'a>(&'a self) -> PipelineDepthStencilStateCreateFlags {
10882        PipelineDepthStencilStateCreateFlags::from_bits(self.raw.flags)
10883            .expect("PipelineDepthStencilStateCreateInfo::flags: error converting flags")
10884    }
10885
10886    pub fn get_depth_test_enable<'a>(&'a self) -> bool {
10887        self.raw.depthTestEnable != 0
10888    }
10889
10890    pub fn get_depth_write_enable<'a>(&'a self) -> bool {
10891        self.raw.depthWriteEnable != 0
10892    }
10893
10894    pub fn get_depth_compare_op<'a>(&'a self) -> CompareOp {
10895        self.raw.depthCompareOp.into()
10896    }
10897
10898    pub fn get_depth_bounds_test_enable<'a>(&'a self) -> bool {
10899        self.raw.depthBoundsTestEnable != 0
10900    }
10901
10902    pub fn get_stencil_test_enable<'a>(&'a self) -> bool {
10903        self.raw.stencilTestEnable != 0
10904    }
10905
10906    pub fn get_front<'a>(&'a self) -> &'a StencilOpState {
10907        unsafe { &*(&self.raw.front as *const vks::VkStencilOpState as *const StencilOpState) }
10908    }
10909
10910    pub fn get_front_mut<'a>(&'a mut self) -> &'a mut StencilOpState {
10911        unsafe { &mut *(&mut self.raw.front as *mut  vks::VkStencilOpState as *mut StencilOpState) }
10912    }
10913
10914    pub fn get_back<'a>(&'a self) -> &'a StencilOpState {
10915        unsafe { &*(&self.raw.back as *const vks::VkStencilOpState as *const StencilOpState) }
10916    }
10917
10918    pub fn get_back_mut<'a>(&'a mut self) -> &'a mut StencilOpState {
10919        unsafe { &mut *(&mut self.raw.back as *mut  vks::VkStencilOpState as *mut StencilOpState) }
10920    }
10921
10922    pub fn get_min_depth_bounds<'a>(&'a self) -> f32 {
10923        self.raw.minDepthBounds.into()
10924    }
10925
10926    pub fn get_max_depth_bounds<'a>(&'a self) -> f32 {
10927        self.raw.maxDepthBounds.into()
10928    }
10929
10930    pub fn build(self) -> PipelineDepthStencilStateCreateInfo<'b> {
10931        PipelineDepthStencilStateCreateInfo {
10932            raw: self.raw,
10933            _p: PhantomData,
10934        }
10935    }
10936}
10937
10938
10939/// A `VkGraphicsPipelineCreateInfo`.
10940///
10941/// 
10942#[derive(Debug, Clone, Default)]
10943#[repr(C)]
10944pub struct GraphicsPipelineCreateInfo<'s> {
10945    raw: vks::VkGraphicsPipelineCreateInfo,
10946    _p: PhantomData<&'s ()>,
10947}
10948
10949impl<'s> GraphicsPipelineCreateInfo<'s> {
10950    pub fn builder<'b>() -> GraphicsPipelineCreateInfoBuilder<'b> {
10951        GraphicsPipelineCreateInfoBuilder::new()
10952    }
10953
10954    pub unsafe fn from_raw(raw: vks::VkGraphicsPipelineCreateInfo) -> GraphicsPipelineCreateInfo<'s> {
10955        GraphicsPipelineCreateInfo { raw, _p: PhantomData }
10956    }
10957
10958    pub fn next<'a>(&'a self) -> *const c_void {
10959        self.raw.pNext
10960    }
10961
10962    pub fn flags<'a>(&'a self) -> PipelineCreateFlags {
10963        PipelineCreateFlags::from_bits(self.raw.flags)
10964            .expect("GraphicsPipelineCreateInfo::flags: error converting flags")
10965    }
10966
10967    pub fn stages<'a>(&'a self) -> &'a [PipelineShaderStageCreateInfo] {
10968        unsafe { slice::from_raw_parts(self.raw.pStages as *const _, self.raw.stageCount as usize) }
10969    }
10970
10971    pub fn vertex_input_state<'a>(&'a self) -> &'a PipelineVertexInputStateCreateInfo {
10972        unsafe { &*(self.raw.pVertexInputState as *const vks::VkPipelineVertexInputStateCreateInfo as *const _) }
10973    }
10974
10975    pub fn input_assembly_state<'a>(&'a self) -> &'a PipelineInputAssemblyStateCreateInfo {
10976        unsafe { &*(self.raw.pInputAssemblyState as *const vks::VkPipelineInputAssemblyStateCreateInfo as *const _) }
10977    }
10978
10979    pub fn tessellation_state<'a>(&'a self) -> &'a PipelineTessellationStateCreateInfo {
10980        unsafe { &*(self.raw.pTessellationState as *const vks::VkPipelineTessellationStateCreateInfo as *const _) }
10981    }
10982
10983    pub fn viewport_state<'a>(&'a self) -> &'a PipelineViewportStateCreateInfo {
10984        unsafe { &*(self.raw.pViewportState as *const vks::VkPipelineViewportStateCreateInfo as *const _) }
10985    }
10986
10987    pub fn rasterization_state<'a>(&'a self) -> &'a PipelineRasterizationStateCreateInfo {
10988        unsafe { &*(self.raw.pRasterizationState as *const vks::VkPipelineRasterizationStateCreateInfo as *const _) }
10989    }
10990
10991    pub fn multisample_state<'a>(&'a self) -> &'a PipelineMultisampleStateCreateInfo {
10992        unsafe { &*(self.raw.pMultisampleState as *const vks::VkPipelineMultisampleStateCreateInfo as *const _) }
10993    }
10994
10995    pub fn depth_stencil_state<'a>(&'a self) -> &'a PipelineDepthStencilStateCreateInfo {
10996        unsafe { &*(self.raw.pDepthStencilState as *const vks::VkPipelineDepthStencilStateCreateInfo as *const _) }
10997    }
10998
10999    pub fn color_blend_state<'a>(&'a self) -> &'a PipelineColorBlendStateCreateInfo {
11000        unsafe { &*(self.raw.pColorBlendState as *const vks::VkPipelineColorBlendStateCreateInfo as *const _) }
11001    }
11002
11003    pub fn dynamic_state<'a>(&'a self) -> &'a PipelineDynamicStateCreateInfo {
11004        unsafe { &*(self.raw.pDynamicState as *const vks::VkPipelineDynamicStateCreateInfo as *const _) }
11005    }
11006
11007    pub fn layout<'a>(&'a self) -> vks::VkPipelineLayout {
11008        self.raw.layout
11009    }
11010
11011    pub fn render_pass<'a>(&'a self) -> vks::VkRenderPass {
11012        self.raw.renderPass
11013    }
11014
11015    pub fn subpass<'a>(&'a self) -> u32 {
11016        self.raw.subpass.into()
11017    }
11018
11019    pub fn base_pipeline_handle<'a>(&'a self) -> vks::VkPipeline {
11020        self.raw.basePipelineHandle
11021    }
11022
11023    pub fn base_pipeline_index<'a>(&'a self) -> i32 {
11024        self.raw.basePipelineIndex.into()
11025    }
11026
11027    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
11028        self.raw.pNext = next;
11029    }
11030
11031    pub fn set_flags<'m>(&mut self, flags: PipelineCreateFlags) {
11032        self.raw.flags = flags.bits();
11033    }
11034
11035    pub fn set_stages<'m, 'a>(&mut self, stages: &'a [PipelineShaderStageCreateInfo])
11036            where 'a: 's {
11037        assert!(self.raw.stageCount == 0 || self.raw.stageCount == stages.len() as _, 
11038            "count inconsistency found when specifying `GraphicsPipelineCreateInfo::stages`.");
11039        self.raw.stageCount = stages.len() as _;
11040        self.raw.pStages = stages.as_ptr() as *const vks::VkPipelineShaderStageCreateInfo;
11041    }
11042
11043    pub fn set_vertex_input_state<'m, 'a>(&mut self, vertex_input_state: &'a PipelineVertexInputStateCreateInfo)
11044            where 'a: 's {
11045        self.raw.pVertexInputState = vertex_input_state.as_raw();
11046    }
11047
11048    pub fn set_input_assembly_state<'m, 'a>(&mut self, input_assembly_state: &'a PipelineInputAssemblyStateCreateInfo)
11049            where 'a: 's {
11050        self.raw.pInputAssemblyState = input_assembly_state.as_raw();
11051    }
11052
11053    pub fn set_tessellation_state<'m, 'a>(&mut self, tessellation_state: &'a PipelineTessellationStateCreateInfo)
11054            where 'a: 's {
11055        self.raw.pTessellationState = tessellation_state.as_raw();
11056    }
11057
11058    pub fn set_viewport_state<'m, 'a>(&mut self, viewport_state: &'a PipelineViewportStateCreateInfo)
11059            where 'a: 's {
11060        self.raw.pViewportState = viewport_state.as_raw();
11061    }
11062
11063    pub fn set_rasterization_state<'m, 'a>(&mut self, rasterization_state: &'a PipelineRasterizationStateCreateInfo)
11064            where 'a: 's {
11065        self.raw.pRasterizationState = rasterization_state.as_raw();
11066    }
11067
11068    pub fn set_multisample_state<'m, 'a>(&mut self, multisample_state: &'a PipelineMultisampleStateCreateInfo)
11069            where 'a: 's {
11070        self.raw.pMultisampleState = multisample_state.as_raw();
11071    }
11072
11073    pub fn set_depth_stencil_state<'m, 'a>(&mut self, depth_stencil_state: &'a PipelineDepthStencilStateCreateInfo)
11074            where 'a: 's {
11075        self.raw.pDepthStencilState = depth_stencil_state.as_raw();
11076    }
11077
11078    pub fn set_color_blend_state<'m, 'a>(&mut self, color_blend_state: &'a PipelineColorBlendStateCreateInfo)
11079            where 'a: 's {
11080        self.raw.pColorBlendState = color_blend_state.as_raw();
11081    }
11082
11083    pub fn set_dynamic_state<'m, 'a>(&mut self, dynamic_state: &'a PipelineDynamicStateCreateInfo)
11084            where 'a: 's {
11085        self.raw.pDynamicState = dynamic_state.as_raw();
11086    }
11087
11088    pub fn set_layout<'m, H>(&mut self, layout: H)
11089            where H: Handle<Target=PipelineLayoutHandle> {
11090        self.raw.layout = layout.handle().0;
11091    }
11092
11093    pub fn set_render_pass<'m, H>(&mut self, render_pass: H)
11094            where H: Handle<Target=RenderPassHandle> {
11095        self.raw.renderPass = render_pass.handle().0;
11096    }
11097
11098    pub fn set_subpass<'m>(&mut self, subpass: u32) {
11099        self.raw.subpass = subpass.into();
11100    }
11101
11102    pub fn set_base_pipeline_handle<'m, H>(&mut self, base_pipeline_handle: H)
11103            where H: Handle<Target=PipelineHandle> {
11104        self.raw.basePipelineHandle = base_pipeline_handle.handle().0;
11105    }
11106
11107    pub fn set_base_pipeline_index<'m>(&mut self, base_pipeline_index: i32) {
11108        self.raw.basePipelineIndex = base_pipeline_index.into();
11109    }
11110
11111    pub fn as_raw(&self) -> &vks::VkGraphicsPipelineCreateInfo {
11112        &self.raw
11113    }
11114}
11115
11116impl<'s> From<GraphicsPipelineCreateInfo<'s>> for vks::VkGraphicsPipelineCreateInfo {
11117    fn from(f: GraphicsPipelineCreateInfo<'s>) -> vks::VkGraphicsPipelineCreateInfo {
11118        f.raw
11119    }
11120}
11121
11122
11123/// A builder for `VkGraphicsPipelineCreateInfo`.
11124///
11125/// 
11126#[derive(Debug, Clone, Default)]
11127pub struct GraphicsPipelineCreateInfoBuilder<'b> {
11128    raw: vks::VkGraphicsPipelineCreateInfo,
11129    _p: PhantomData<&'b ()>, 
11130}
11131
11132impl<'b> GraphicsPipelineCreateInfoBuilder<'b> {
11133    pub fn new() -> GraphicsPipelineCreateInfoBuilder<'b> {
11134        GraphicsPipelineCreateInfoBuilder {
11135            raw: vks::VkGraphicsPipelineCreateInfo::default(),
11136            _p: PhantomData,
11137        }
11138    }
11139
11140    pub unsafe fn next<'m>(mut self, next: *const c_void) -> GraphicsPipelineCreateInfoBuilder<'b> {
11141        self.raw.pNext = next;
11142        self
11143    }
11144
11145    pub fn flags<'m>(mut self, flags: PipelineCreateFlags) -> GraphicsPipelineCreateInfoBuilder<'b> {
11146        self.raw.flags = flags.bits();
11147        self
11148    }
11149
11150    pub fn stages<'m, 'a>(mut self, stages: &'a [PipelineShaderStageCreateInfo]) -> GraphicsPipelineCreateInfoBuilder<'b>
11151            where 'a: 'b {
11152        assert!(self.raw.stageCount == 0 || self.raw.stageCount == stages.len() as _, 
11153            "count inconsistency found when specifying `GraphicsPipelineCreateInfo::stages`.");
11154        self.raw.stageCount = stages.len() as _;
11155        self.raw.pStages = stages.as_ptr() as *const vks::VkPipelineShaderStageCreateInfo;
11156        self
11157    }
11158
11159    pub fn vertex_input_state<'m, 'a>(mut self, vertex_input_state: &'a PipelineVertexInputStateCreateInfo) -> GraphicsPipelineCreateInfoBuilder<'b>
11160            where 'a: 'b {
11161        self.raw.pVertexInputState = vertex_input_state.as_raw();
11162        self
11163    }
11164
11165    pub fn input_assembly_state<'m, 'a>(mut self, input_assembly_state: &'a PipelineInputAssemblyStateCreateInfo) -> GraphicsPipelineCreateInfoBuilder<'b>
11166            where 'a: 'b {
11167        self.raw.pInputAssemblyState = input_assembly_state.as_raw();
11168        self
11169    }
11170
11171    pub fn tessellation_state<'m, 'a>(mut self, tessellation_state: &'a PipelineTessellationStateCreateInfo) -> GraphicsPipelineCreateInfoBuilder<'b>
11172            where 'a: 'b {
11173        self.raw.pTessellationState = tessellation_state.as_raw();
11174        self
11175    }
11176
11177    pub fn viewport_state<'m, 'a>(mut self, viewport_state: &'a PipelineViewportStateCreateInfo) -> GraphicsPipelineCreateInfoBuilder<'b>
11178            where 'a: 'b {
11179        self.raw.pViewportState = viewport_state.as_raw();
11180        self
11181    }
11182
11183    pub fn rasterization_state<'m, 'a>(mut self, rasterization_state: &'a PipelineRasterizationStateCreateInfo) -> GraphicsPipelineCreateInfoBuilder<'b>
11184            where 'a: 'b {
11185        self.raw.pRasterizationState = rasterization_state.as_raw();
11186        self
11187    }
11188
11189    pub fn multisample_state<'m, 'a>(mut self, multisample_state: &'a PipelineMultisampleStateCreateInfo) -> GraphicsPipelineCreateInfoBuilder<'b>
11190            where 'a: 'b {
11191        self.raw.pMultisampleState = multisample_state.as_raw();
11192        self
11193    }
11194
11195    pub fn depth_stencil_state<'m, 'a>(mut self, depth_stencil_state: &'a PipelineDepthStencilStateCreateInfo) -> GraphicsPipelineCreateInfoBuilder<'b>
11196            where 'a: 'b {
11197        self.raw.pDepthStencilState = depth_stencil_state.as_raw();
11198        self
11199    }
11200
11201    pub fn color_blend_state<'m, 'a>(mut self, color_blend_state: &'a PipelineColorBlendStateCreateInfo) -> GraphicsPipelineCreateInfoBuilder<'b>
11202            where 'a: 'b {
11203        self.raw.pColorBlendState = color_blend_state.as_raw();
11204        self
11205    }
11206
11207    pub fn dynamic_state<'m, 'a>(mut self, dynamic_state: &'a PipelineDynamicStateCreateInfo) -> GraphicsPipelineCreateInfoBuilder<'b>
11208            where 'a: 'b {
11209        self.raw.pDynamicState = dynamic_state.as_raw();
11210        self
11211    }
11212
11213    pub fn layout<'m, H>(mut self, layout: H) -> GraphicsPipelineCreateInfoBuilder<'b>
11214            where H: Handle<Target=PipelineLayoutHandle> {
11215        self.raw.layout = layout.handle().0;
11216        self
11217    }
11218
11219    pub fn render_pass<'m, H>(mut self, render_pass: H) -> GraphicsPipelineCreateInfoBuilder<'b>
11220            where H: Handle<Target=RenderPassHandle> {
11221        self.raw.renderPass = render_pass.handle().0;
11222        self
11223    }
11224
11225    pub fn subpass<'m>(mut self, subpass: u32) -> GraphicsPipelineCreateInfoBuilder<'b> {
11226        self.raw.subpass = subpass.into();
11227        self
11228    }
11229
11230    pub fn base_pipeline_handle<'m, H>(mut self, base_pipeline_handle: H) -> GraphicsPipelineCreateInfoBuilder<'b>
11231            where H: Handle<Target=PipelineHandle> {
11232        self.raw.basePipelineHandle = base_pipeline_handle.handle().0;
11233        self
11234    }
11235
11236    pub fn base_pipeline_index<'m>(mut self, base_pipeline_index: i32) -> GraphicsPipelineCreateInfoBuilder<'b> {
11237        self.raw.basePipelineIndex = base_pipeline_index.into();
11238        self
11239    }
11240
11241    pub fn get_next<'a>(&'a self) -> *const c_void {
11242        self.raw.pNext
11243    }
11244
11245    pub fn get_flags<'a>(&'a self) -> PipelineCreateFlags {
11246        PipelineCreateFlags::from_bits(self.raw.flags)
11247            .expect("GraphicsPipelineCreateInfo::flags: error converting flags")
11248    }
11249
11250    pub fn get_stages<'a>(&'a self) -> &'a [PipelineShaderStageCreateInfo] {
11251        unsafe { slice::from_raw_parts(self.raw.pStages as *const _, self.raw.stageCount as usize) }
11252    }
11253
11254    pub fn get_vertex_input_state<'a>(&'a self) -> &'a PipelineVertexInputStateCreateInfo {
11255        unsafe { &*(self.raw.pVertexInputState as *const vks::VkPipelineVertexInputStateCreateInfo as *const _) }
11256    }
11257
11258    pub fn get_input_assembly_state<'a>(&'a self) -> &'a PipelineInputAssemblyStateCreateInfo {
11259        unsafe { &*(self.raw.pInputAssemblyState as *const vks::VkPipelineInputAssemblyStateCreateInfo as *const _) }
11260    }
11261
11262    pub fn get_tessellation_state<'a>(&'a self) -> &'a PipelineTessellationStateCreateInfo {
11263        unsafe { &*(self.raw.pTessellationState as *const vks::VkPipelineTessellationStateCreateInfo as *const _) }
11264    }
11265
11266    pub fn get_viewport_state<'a>(&'a self) -> &'a PipelineViewportStateCreateInfo {
11267        unsafe { &*(self.raw.pViewportState as *const vks::VkPipelineViewportStateCreateInfo as *const _) }
11268    }
11269
11270    pub fn get_rasterization_state<'a>(&'a self) -> &'a PipelineRasterizationStateCreateInfo {
11271        unsafe { &*(self.raw.pRasterizationState as *const vks::VkPipelineRasterizationStateCreateInfo as *const _) }
11272    }
11273
11274    pub fn get_multisample_state<'a>(&'a self) -> &'a PipelineMultisampleStateCreateInfo {
11275        unsafe { &*(self.raw.pMultisampleState as *const vks::VkPipelineMultisampleStateCreateInfo as *const _) }
11276    }
11277
11278    pub fn get_depth_stencil_state<'a>(&'a self) -> &'a PipelineDepthStencilStateCreateInfo {
11279        unsafe { &*(self.raw.pDepthStencilState as *const vks::VkPipelineDepthStencilStateCreateInfo as *const _) }
11280    }
11281
11282    pub fn get_color_blend_state<'a>(&'a self) -> &'a PipelineColorBlendStateCreateInfo {
11283        unsafe { &*(self.raw.pColorBlendState as *const vks::VkPipelineColorBlendStateCreateInfo as *const _) }
11284    }
11285
11286    pub fn get_dynamic_state<'a>(&'a self) -> &'a PipelineDynamicStateCreateInfo {
11287        unsafe { &*(self.raw.pDynamicState as *const vks::VkPipelineDynamicStateCreateInfo as *const _) }
11288    }
11289
11290    pub fn get_layout<'a>(&'a self) -> vks::VkPipelineLayout {
11291        self.raw.layout
11292    }
11293
11294    pub fn get_render_pass<'a>(&'a self) -> vks::VkRenderPass {
11295        self.raw.renderPass
11296    }
11297
11298    pub fn get_subpass<'a>(&'a self) -> u32 {
11299        self.raw.subpass.into()
11300    }
11301
11302    pub fn get_base_pipeline_handle<'a>(&'a self) -> vks::VkPipeline {
11303        self.raw.basePipelineHandle
11304    }
11305
11306    pub fn get_base_pipeline_index<'a>(&'a self) -> i32 {
11307        self.raw.basePipelineIndex.into()
11308    }
11309
11310    pub fn build(self) -> GraphicsPipelineCreateInfo<'b> {
11311        GraphicsPipelineCreateInfo {
11312            raw: self.raw,
11313            _p: PhantomData,
11314        }
11315    }
11316}
11317
11318
11319/// A `VkPipelineCacheCreateInfo`.
11320///
11321/// 
11322#[derive(Debug, Clone, Default)]
11323#[repr(C)]
11324pub struct PipelineCacheCreateInfo<'s> {
11325    raw: vks::VkPipelineCacheCreateInfo,
11326    _p: PhantomData<&'s ()>,
11327}
11328
11329impl<'s> PipelineCacheCreateInfo<'s> {
11330    pub fn builder<'b>() -> PipelineCacheCreateInfoBuilder<'b> {
11331        PipelineCacheCreateInfoBuilder::new()
11332    }
11333
11334    pub unsafe fn from_raw(raw: vks::VkPipelineCacheCreateInfo) -> PipelineCacheCreateInfo<'s> {
11335        PipelineCacheCreateInfo { raw, _p: PhantomData }
11336    }
11337
11338    pub fn next<'a>(&'a self) -> *const c_void {
11339        self.raw.pNext
11340    }
11341
11342    pub fn flags<'a>(&'a self) -> PipelineCacheCreateFlags {
11343        PipelineCacheCreateFlags::from_bits(self.raw.flags)
11344            .expect("PipelineCacheCreateInfo::flags: error converting flags")
11345    }
11346
11347    pub fn initial_data_size<'a>(&'a self) -> usize {
11348        self.raw.initialDataSize.into()
11349    }
11350
11351    pub fn initial_data<'a>(&'a self) -> *const c_void {
11352        self.raw.pInitialData
11353    }
11354
11355    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
11356        self.raw.pNext = next;
11357    }
11358
11359    pub fn set_flags<'m>(&mut self, flags: PipelineCacheCreateFlags) {
11360        self.raw.flags = flags.bits();
11361    }
11362
11363    pub fn set_initial_data_size<'m>(&mut self, initial_data_size: usize) {
11364        self.raw.initialDataSize = initial_data_size.into();
11365    }
11366
11367    pub unsafe fn set_initial_data<'m>(&mut self, initial_data: *const c_void) {
11368        self.raw.pInitialData = initial_data;
11369    }
11370
11371    pub fn as_raw(&self) -> &vks::VkPipelineCacheCreateInfo {
11372        &self.raw
11373    }
11374}
11375
11376impl<'s> From<PipelineCacheCreateInfo<'s>> for vks::VkPipelineCacheCreateInfo {
11377    fn from(f: PipelineCacheCreateInfo<'s>) -> vks::VkPipelineCacheCreateInfo {
11378        f.raw
11379    }
11380}
11381
11382
11383/// A builder for `VkPipelineCacheCreateInfo`.
11384///
11385/// 
11386#[derive(Debug, Clone, Default)]
11387pub struct PipelineCacheCreateInfoBuilder<'b> {
11388    raw: vks::VkPipelineCacheCreateInfo,
11389    _p: PhantomData<&'b ()>, 
11390}
11391
11392impl<'b> PipelineCacheCreateInfoBuilder<'b> {
11393    pub fn new() -> PipelineCacheCreateInfoBuilder<'b> {
11394        PipelineCacheCreateInfoBuilder {
11395            raw: vks::VkPipelineCacheCreateInfo::default(),
11396            _p: PhantomData,
11397        }
11398    }
11399
11400    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PipelineCacheCreateInfoBuilder<'b> {
11401        self.raw.pNext = next;
11402        self
11403    }
11404
11405    pub fn flags<'m>(mut self, flags: PipelineCacheCreateFlags) -> PipelineCacheCreateInfoBuilder<'b> {
11406        self.raw.flags = flags.bits();
11407        self
11408    }
11409
11410    pub fn initial_data_size<'m>(mut self, initial_data_size: usize) -> PipelineCacheCreateInfoBuilder<'b> {
11411        self.raw.initialDataSize = initial_data_size.into();
11412        self
11413    }
11414
11415    pub unsafe fn initial_data<'m>(mut self, initial_data: *const c_void) -> PipelineCacheCreateInfoBuilder<'b> {
11416        self.raw.pInitialData = initial_data;
11417        self
11418    }
11419
11420    pub fn get_next<'a>(&'a self) -> *const c_void {
11421        self.raw.pNext
11422    }
11423
11424    pub fn get_flags<'a>(&'a self) -> PipelineCacheCreateFlags {
11425        PipelineCacheCreateFlags::from_bits(self.raw.flags)
11426            .expect("PipelineCacheCreateInfo::flags: error converting flags")
11427    }
11428
11429    pub fn get_initial_data_size<'a>(&'a self) -> usize {
11430        self.raw.initialDataSize.into()
11431    }
11432
11433    pub fn get_initial_data<'a>(&'a self) -> *const c_void {
11434        self.raw.pInitialData
11435    }
11436
11437    pub fn build(self) -> PipelineCacheCreateInfo<'b> {
11438        PipelineCacheCreateInfo {
11439            raw: self.raw,
11440            _p: PhantomData,
11441        }
11442    }
11443}
11444
11445
11446/// A `VkPushConstantRange`.
11447///
11448/// 
11449#[derive(Debug, Clone, Default)]
11450#[repr(C)]
11451pub struct PushConstantRange {
11452    raw: vks::VkPushConstantRange,
11453}
11454
11455impl PushConstantRange {
11456    pub fn builder() -> PushConstantRangeBuilder {
11457        PushConstantRangeBuilder::new()
11458    }
11459
11460    pub unsafe fn from_raw(raw: vks::VkPushConstantRange) -> PushConstantRange {
11461        PushConstantRange { raw, }
11462    }
11463
11464    pub fn stage_flags<'a>(&'a self) -> ShaderStageFlags {
11465        ShaderStageFlags::from_bits(self.raw.stageFlags)
11466            .expect("PushConstantRange::stage_flags: error converting flags")
11467    }
11468
11469    pub fn offset<'a>(&'a self) -> u32 {
11470        self.raw.offset.into()
11471    }
11472
11473    pub fn size<'a>(&'a self) -> u32 {
11474        self.raw.size.into()
11475    }
11476
11477    pub fn set_stage_flags<'m>(&mut self, stage_flags: ShaderStageFlags) {
11478        self.raw.stageFlags = stage_flags.bits();
11479    }
11480
11481    pub fn set_offset<'m>(&mut self, offset: u32) {
11482        self.raw.offset = offset.into();
11483    }
11484
11485    pub fn set_size<'m>(&mut self, size: u32) {
11486        self.raw.size = size.into();
11487    }
11488
11489    pub fn as_raw(&self) -> &vks::VkPushConstantRange {
11490        &self.raw
11491    }
11492}
11493
11494impl From<PushConstantRange> for vks::VkPushConstantRange {
11495    fn from(f: PushConstantRange) -> vks::VkPushConstantRange {
11496        f.raw
11497    }
11498}
11499
11500
11501/// A builder for `VkPushConstantRange`.
11502///
11503/// 
11504#[derive(Debug, Clone, Default)]
11505pub struct PushConstantRangeBuilder {
11506    raw: vks::VkPushConstantRange,
11507}
11508
11509impl PushConstantRangeBuilder {
11510    pub fn new() -> PushConstantRangeBuilder {
11511        PushConstantRangeBuilder {
11512            raw: vks::VkPushConstantRange::default(),
11513        }
11514    }
11515
11516    pub fn stage_flags<'m>(mut self, stage_flags: ShaderStageFlags) -> PushConstantRangeBuilder {
11517        self.raw.stageFlags = stage_flags.bits();
11518        self
11519    }
11520
11521    pub fn offset<'m>(mut self, offset: u32) -> PushConstantRangeBuilder {
11522        self.raw.offset = offset.into();
11523        self
11524    }
11525
11526    pub fn size<'m>(mut self, size: u32) -> PushConstantRangeBuilder {
11527        self.raw.size = size.into();
11528        self
11529    }
11530
11531    pub fn get_stage_flags<'a>(&'a self) -> ShaderStageFlags {
11532        ShaderStageFlags::from_bits(self.raw.stageFlags)
11533            .expect("PushConstantRange::stage_flags: error converting flags")
11534    }
11535
11536    pub fn get_offset<'a>(&'a self) -> u32 {
11537        self.raw.offset.into()
11538    }
11539
11540    pub fn get_size<'a>(&'a self) -> u32 {
11541        self.raw.size.into()
11542    }
11543
11544    pub fn build(self) -> PushConstantRange {
11545        PushConstantRange {
11546            raw: self.raw,
11547        }
11548    }
11549}
11550
11551
11552/// A `VkPipelineLayoutCreateInfo`.
11553///
11554/// 
11555#[derive(Debug, Clone, Default)]
11556#[repr(C)]
11557pub struct PipelineLayoutCreateInfo<'s> {
11558    raw: vks::VkPipelineLayoutCreateInfo,
11559    _p: PhantomData<&'s ()>,
11560}
11561
11562impl<'s> PipelineLayoutCreateInfo<'s> {
11563    pub fn builder<'b>() -> PipelineLayoutCreateInfoBuilder<'b> {
11564        PipelineLayoutCreateInfoBuilder::new()
11565    }
11566
11567    pub unsafe fn from_raw(raw: vks::VkPipelineLayoutCreateInfo) -> PipelineLayoutCreateInfo<'s> {
11568        PipelineLayoutCreateInfo { raw, _p: PhantomData }
11569    }
11570
11571    pub fn next<'a>(&'a self) -> *const c_void {
11572        self.raw.pNext
11573    }
11574
11575    pub fn flags<'a>(&'a self) -> PipelineLayoutCreateFlags {
11576        PipelineLayoutCreateFlags::from_bits(self.raw.flags)
11577            .expect("PipelineLayoutCreateInfo::flags: error converting flags")
11578    }
11579
11580    pub fn set_layouts<'a>(&'a self) -> &'a [vks::VkDescriptorSetLayout] {
11581        unsafe { slice::from_raw_parts(self.raw.pSetLayouts as *const _, self.raw.setLayoutCount as usize) }
11582    }
11583
11584    pub fn push_constant_ranges<'a>(&'a self) -> &'a [PushConstantRange] {
11585        unsafe { slice::from_raw_parts(self.raw.pPushConstantRanges as *const _, self.raw.pushConstantRangeCount as usize) }
11586    }
11587
11588    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
11589        self.raw.pNext = next;
11590    }
11591
11592    pub fn set_flags<'m>(&mut self, flags: PipelineLayoutCreateFlags) {
11593        self.raw.flags = flags.bits();
11594    }
11595
11596    pub fn set_set_layouts<'m, 'a>(&mut self, set_layouts: &'a [DescriptorSetLayoutHandle])
11597            where 'a: 's {
11598        assert!(self.raw.setLayoutCount == 0 || self.raw.setLayoutCount == set_layouts.len() as _, 
11599            "count inconsistency found when specifying `PipelineLayoutCreateInfo::set_layouts`.");
11600        self.raw.setLayoutCount = set_layouts.len() as _;
11601        self.raw.pSetLayouts = set_layouts.as_ptr() as *const vks::VkDescriptorSetLayout;
11602    }
11603
11604    pub fn set_push_constant_ranges<'m, 'a>(&mut self, push_constant_ranges: &'a [PushConstantRange])
11605            where 'a: 's {
11606        assert!(self.raw.pushConstantRangeCount == 0 || self.raw.pushConstantRangeCount == push_constant_ranges.len() as _, 
11607            "count inconsistency found when specifying `PipelineLayoutCreateInfo::push_constant_ranges`.");
11608        self.raw.pushConstantRangeCount = push_constant_ranges.len() as _;
11609        self.raw.pPushConstantRanges = push_constant_ranges.as_ptr() as *const vks::VkPushConstantRange;
11610    }
11611
11612    pub fn as_raw(&self) -> &vks::VkPipelineLayoutCreateInfo {
11613        &self.raw
11614    }
11615}
11616
11617impl<'s> From<PipelineLayoutCreateInfo<'s>> for vks::VkPipelineLayoutCreateInfo {
11618    fn from(f: PipelineLayoutCreateInfo<'s>) -> vks::VkPipelineLayoutCreateInfo {
11619        f.raw
11620    }
11621}
11622
11623
11624/// A builder for `VkPipelineLayoutCreateInfo`.
11625///
11626/// 
11627#[derive(Debug, Clone, Default)]
11628pub struct PipelineLayoutCreateInfoBuilder<'b> {
11629    raw: vks::VkPipelineLayoutCreateInfo,
11630    _p: PhantomData<&'b ()>, 
11631}
11632
11633impl<'b> PipelineLayoutCreateInfoBuilder<'b> {
11634    pub fn new() -> PipelineLayoutCreateInfoBuilder<'b> {
11635        PipelineLayoutCreateInfoBuilder {
11636            raw: vks::VkPipelineLayoutCreateInfo::default(),
11637            _p: PhantomData,
11638        }
11639    }
11640
11641    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PipelineLayoutCreateInfoBuilder<'b> {
11642        self.raw.pNext = next;
11643        self
11644    }
11645
11646    pub fn flags<'m>(mut self, flags: PipelineLayoutCreateFlags) -> PipelineLayoutCreateInfoBuilder<'b> {
11647        self.raw.flags = flags.bits();
11648        self
11649    }
11650
11651    pub fn set_layouts<'m, 'a>(mut self, set_layouts: &'a [DescriptorSetLayoutHandle]) -> PipelineLayoutCreateInfoBuilder<'b>
11652            where 'a: 'b {
11653        assert!(self.raw.setLayoutCount == 0 || self.raw.setLayoutCount == set_layouts.len() as _, 
11654            "count inconsistency found when specifying `PipelineLayoutCreateInfo::set_layouts`.");
11655        self.raw.setLayoutCount = set_layouts.len() as _;
11656        self.raw.pSetLayouts = set_layouts.as_ptr() as *const vks::VkDescriptorSetLayout;
11657        self
11658    }
11659
11660    pub fn push_constant_ranges<'m, 'a>(mut self, push_constant_ranges: &'a [PushConstantRange]) -> PipelineLayoutCreateInfoBuilder<'b>
11661            where 'a: 'b {
11662        assert!(self.raw.pushConstantRangeCount == 0 || self.raw.pushConstantRangeCount == push_constant_ranges.len() as _, 
11663            "count inconsistency found when specifying `PipelineLayoutCreateInfo::push_constant_ranges`.");
11664        self.raw.pushConstantRangeCount = push_constant_ranges.len() as _;
11665        self.raw.pPushConstantRanges = push_constant_ranges.as_ptr() as *const vks::VkPushConstantRange;
11666        self
11667    }
11668
11669    pub fn get_next<'a>(&'a self) -> *const c_void {
11670        self.raw.pNext
11671    }
11672
11673    pub fn get_flags<'a>(&'a self) -> PipelineLayoutCreateFlags {
11674        PipelineLayoutCreateFlags::from_bits(self.raw.flags)
11675            .expect("PipelineLayoutCreateInfo::flags: error converting flags")
11676    }
11677
11678    pub fn get_set_layouts<'a>(&'a self) -> &'a [vks::VkDescriptorSetLayout] {
11679        unsafe { slice::from_raw_parts(self.raw.pSetLayouts as *const _, self.raw.setLayoutCount as usize) }
11680    }
11681
11682    pub fn get_push_constant_ranges<'a>(&'a self) -> &'a [PushConstantRange] {
11683        unsafe { slice::from_raw_parts(self.raw.pPushConstantRanges as *const _, self.raw.pushConstantRangeCount as usize) }
11684    }
11685
11686    pub fn build(self) -> PipelineLayoutCreateInfo<'b> {
11687        PipelineLayoutCreateInfo {
11688            raw: self.raw,
11689            _p: PhantomData,
11690        }
11691    }
11692}
11693
11694
11695/// A `VkSamplerCreateInfo`.
11696///
11697/// 
11698#[derive(Debug, Clone, Default)]
11699#[repr(C)]
11700pub struct SamplerCreateInfo<'s> {
11701    raw: vks::VkSamplerCreateInfo,
11702    _p: PhantomData<&'s ()>,
11703}
11704
11705impl<'s> SamplerCreateInfo<'s> {
11706    pub fn builder<'b>() -> SamplerCreateInfoBuilder<'b> {
11707        SamplerCreateInfoBuilder::new()
11708    }
11709
11710    pub unsafe fn from_raw(raw: vks::VkSamplerCreateInfo) -> SamplerCreateInfo<'s> {
11711        SamplerCreateInfo { raw, _p: PhantomData }
11712    }
11713
11714    pub fn next<'a>(&'a self) -> *const c_void {
11715        self.raw.pNext
11716    }
11717
11718    pub fn flags<'a>(&'a self) -> SamplerCreateFlags {
11719        SamplerCreateFlags::from_bits(self.raw.flags)
11720            .expect("SamplerCreateInfo::flags: error converting flags")
11721    }
11722
11723    pub fn mag_filter<'a>(&'a self) -> Filter {
11724        self.raw.magFilter.into()
11725    }
11726
11727    pub fn min_filter<'a>(&'a self) -> Filter {
11728        self.raw.minFilter.into()
11729    }
11730
11731    pub fn mipmap_mode<'a>(&'a self) -> SamplerMipmapMode {
11732        self.raw.mipmapMode.into()
11733    }
11734
11735    pub fn address_mode_u<'a>(&'a self) -> SamplerAddressMode {
11736        self.raw.addressModeU.into()
11737    }
11738
11739    pub fn address_mode_v<'a>(&'a self) -> SamplerAddressMode {
11740        self.raw.addressModeV.into()
11741    }
11742
11743    pub fn address_mode_w<'a>(&'a self) -> SamplerAddressMode {
11744        self.raw.addressModeW.into()
11745    }
11746
11747    pub fn mip_lod_bias<'a>(&'a self) -> f32 {
11748        self.raw.mipLodBias.into()
11749    }
11750
11751    pub fn anisotropy_enable<'a>(&'a self) -> bool {
11752        self.raw.anisotropyEnable != 0
11753    }
11754
11755    pub fn max_anisotropy<'a>(&'a self) -> f32 {
11756        self.raw.maxAnisotropy.into()
11757    }
11758
11759    pub fn compare_enable<'a>(&'a self) -> bool {
11760        self.raw.compareEnable != 0
11761    }
11762
11763    pub fn compare_op<'a>(&'a self) -> CompareOp {
11764        self.raw.compareOp.into()
11765    }
11766
11767    pub fn min_lod<'a>(&'a self) -> f32 {
11768        self.raw.minLod.into()
11769    }
11770
11771    pub fn max_lod<'a>(&'a self) -> f32 {
11772        self.raw.maxLod.into()
11773    }
11774
11775    pub fn border_color<'a>(&'a self) -> BorderColor {
11776        self.raw.borderColor.into()
11777    }
11778
11779    pub fn unnormalized_coordinates<'a>(&'a self) -> bool {
11780        self.raw.unnormalizedCoordinates != 0
11781    }
11782
11783    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
11784        self.raw.pNext = next;
11785    }
11786
11787    pub fn set_flags<'m>(&mut self, flags: SamplerCreateFlags) {
11788        self.raw.flags = flags.bits();
11789    }
11790
11791    pub fn set_mag_filter<'m>(&mut self, mag_filter: Filter) {
11792        self.raw.magFilter = mag_filter.into();
11793    }
11794
11795    pub fn set_min_filter<'m>(&mut self, min_filter: Filter) {
11796        self.raw.minFilter = min_filter.into();
11797    }
11798
11799    pub fn set_mipmap_mode<'m>(&mut self, mipmap_mode: SamplerMipmapMode) {
11800        self.raw.mipmapMode = mipmap_mode.into();
11801    }
11802
11803    pub fn set_address_mode_u<'m>(&mut self, address_mode_u: SamplerAddressMode) {
11804        self.raw.addressModeU = address_mode_u.into();
11805    }
11806
11807    pub fn set_address_mode_v<'m>(&mut self, address_mode_v: SamplerAddressMode) {
11808        self.raw.addressModeV = address_mode_v.into();
11809    }
11810
11811    pub fn set_address_mode_w<'m>(&mut self, address_mode_w: SamplerAddressMode) {
11812        self.raw.addressModeW = address_mode_w.into();
11813    }
11814
11815    pub fn set_mip_lod_bias<'m>(&mut self, mip_lod_bias: f32) {
11816        self.raw.mipLodBias = mip_lod_bias.into();
11817    }
11818
11819    pub fn set_anisotropy_enable<'m>(&mut self, anisotropy_enable: bool) {
11820        self.raw.anisotropyEnable = anisotropy_enable as u32;
11821    }
11822
11823    pub fn set_max_anisotropy<'m>(&mut self, max_anisotropy: f32) {
11824        self.raw.maxAnisotropy = max_anisotropy.into();
11825    }
11826
11827    pub fn set_compare_enable<'m>(&mut self, compare_enable: bool) {
11828        self.raw.compareEnable = compare_enable as u32;
11829    }
11830
11831    pub fn set_compare_op<'m>(&mut self, compare_op: CompareOp) {
11832        self.raw.compareOp = compare_op.into();
11833    }
11834
11835    pub fn set_min_lod<'m>(&mut self, min_lod: f32) {
11836        self.raw.minLod = min_lod.into();
11837    }
11838
11839    pub fn set_max_lod<'m>(&mut self, max_lod: f32) {
11840        self.raw.maxLod = max_lod.into();
11841    }
11842
11843    pub fn set_border_color<'m>(&mut self, border_color: BorderColor) {
11844        self.raw.borderColor = border_color.into();
11845    }
11846
11847    pub fn set_unnormalized_coordinates<'m>(&mut self, unnormalized_coordinates: bool) {
11848        self.raw.unnormalizedCoordinates = unnormalized_coordinates as u32;
11849    }
11850
11851    pub fn as_raw(&self) -> &vks::VkSamplerCreateInfo {
11852        &self.raw
11853    }
11854}
11855
11856impl<'s> From<SamplerCreateInfo<'s>> for vks::VkSamplerCreateInfo {
11857    fn from(f: SamplerCreateInfo<'s>) -> vks::VkSamplerCreateInfo {
11858        f.raw
11859    }
11860}
11861
11862
11863/// A builder for `VkSamplerCreateInfo`.
11864///
11865/// 
11866#[derive(Debug, Clone, Default)]
11867pub struct SamplerCreateInfoBuilder<'b> {
11868    raw: vks::VkSamplerCreateInfo,
11869    _p: PhantomData<&'b ()>, 
11870}
11871
11872impl<'b> SamplerCreateInfoBuilder<'b> {
11873    pub fn new() -> SamplerCreateInfoBuilder<'b> {
11874        SamplerCreateInfoBuilder {
11875            raw: vks::VkSamplerCreateInfo::default(),
11876            _p: PhantomData,
11877        }
11878    }
11879
11880    pub unsafe fn next<'m>(mut self, next: *const c_void) -> SamplerCreateInfoBuilder<'b> {
11881        self.raw.pNext = next;
11882        self
11883    }
11884
11885    pub fn flags<'m>(mut self, flags: SamplerCreateFlags) -> SamplerCreateInfoBuilder<'b> {
11886        self.raw.flags = flags.bits();
11887        self
11888    }
11889
11890    pub fn mag_filter<'m>(mut self, mag_filter: Filter) -> SamplerCreateInfoBuilder<'b> {
11891        self.raw.magFilter = mag_filter.into();
11892        self
11893    }
11894
11895    pub fn min_filter<'m>(mut self, min_filter: Filter) -> SamplerCreateInfoBuilder<'b> {
11896        self.raw.minFilter = min_filter.into();
11897        self
11898    }
11899
11900    pub fn mipmap_mode<'m>(mut self, mipmap_mode: SamplerMipmapMode) -> SamplerCreateInfoBuilder<'b> {
11901        self.raw.mipmapMode = mipmap_mode.into();
11902        self
11903    }
11904
11905    pub fn address_mode_u<'m>(mut self, address_mode_u: SamplerAddressMode) -> SamplerCreateInfoBuilder<'b> {
11906        self.raw.addressModeU = address_mode_u.into();
11907        self
11908    }
11909
11910    pub fn address_mode_v<'m>(mut self, address_mode_v: SamplerAddressMode) -> SamplerCreateInfoBuilder<'b> {
11911        self.raw.addressModeV = address_mode_v.into();
11912        self
11913    }
11914
11915    pub fn address_mode_w<'m>(mut self, address_mode_w: SamplerAddressMode) -> SamplerCreateInfoBuilder<'b> {
11916        self.raw.addressModeW = address_mode_w.into();
11917        self
11918    }
11919
11920    pub fn mip_lod_bias<'m>(mut self, mip_lod_bias: f32) -> SamplerCreateInfoBuilder<'b> {
11921        self.raw.mipLodBias = mip_lod_bias.into();
11922        self
11923    }
11924
11925    pub fn anisotropy_enable<'m>(mut self, anisotropy_enable: bool) -> SamplerCreateInfoBuilder<'b> {
11926        self.raw.anisotropyEnable = anisotropy_enable as u32;
11927        self
11928    }
11929
11930    pub fn max_anisotropy<'m>(mut self, max_anisotropy: f32) -> SamplerCreateInfoBuilder<'b> {
11931        self.raw.maxAnisotropy = max_anisotropy.into();
11932        self
11933    }
11934
11935    pub fn compare_enable<'m>(mut self, compare_enable: bool) -> SamplerCreateInfoBuilder<'b> {
11936        self.raw.compareEnable = compare_enable as u32;
11937        self
11938    }
11939
11940    pub fn compare_op<'m>(mut self, compare_op: CompareOp) -> SamplerCreateInfoBuilder<'b> {
11941        self.raw.compareOp = compare_op.into();
11942        self
11943    }
11944
11945    pub fn min_lod<'m>(mut self, min_lod: f32) -> SamplerCreateInfoBuilder<'b> {
11946        self.raw.minLod = min_lod.into();
11947        self
11948    }
11949
11950    pub fn max_lod<'m>(mut self, max_lod: f32) -> SamplerCreateInfoBuilder<'b> {
11951        self.raw.maxLod = max_lod.into();
11952        self
11953    }
11954
11955    pub fn border_color<'m>(mut self, border_color: BorderColor) -> SamplerCreateInfoBuilder<'b> {
11956        self.raw.borderColor = border_color.into();
11957        self
11958    }
11959
11960    pub fn unnormalized_coordinates<'m>(mut self, unnormalized_coordinates: bool) -> SamplerCreateInfoBuilder<'b> {
11961        self.raw.unnormalizedCoordinates = unnormalized_coordinates as u32;
11962        self
11963    }
11964
11965    pub fn get_next<'a>(&'a self) -> *const c_void {
11966        self.raw.pNext
11967    }
11968
11969    pub fn get_flags<'a>(&'a self) -> SamplerCreateFlags {
11970        SamplerCreateFlags::from_bits(self.raw.flags)
11971            .expect("SamplerCreateInfo::flags: error converting flags")
11972    }
11973
11974    pub fn get_mag_filter<'a>(&'a self) -> Filter {
11975        self.raw.magFilter.into()
11976    }
11977
11978    pub fn get_min_filter<'a>(&'a self) -> Filter {
11979        self.raw.minFilter.into()
11980    }
11981
11982    pub fn get_mipmap_mode<'a>(&'a self) -> SamplerMipmapMode {
11983        self.raw.mipmapMode.into()
11984    }
11985
11986    pub fn get_address_mode_u<'a>(&'a self) -> SamplerAddressMode {
11987        self.raw.addressModeU.into()
11988    }
11989
11990    pub fn get_address_mode_v<'a>(&'a self) -> SamplerAddressMode {
11991        self.raw.addressModeV.into()
11992    }
11993
11994    pub fn get_address_mode_w<'a>(&'a self) -> SamplerAddressMode {
11995        self.raw.addressModeW.into()
11996    }
11997
11998    pub fn get_mip_lod_bias<'a>(&'a self) -> f32 {
11999        self.raw.mipLodBias.into()
12000    }
12001
12002    pub fn get_anisotropy_enable<'a>(&'a self) -> bool {
12003        self.raw.anisotropyEnable != 0
12004    }
12005
12006    pub fn get_max_anisotropy<'a>(&'a self) -> f32 {
12007        self.raw.maxAnisotropy.into()
12008    }
12009
12010    pub fn get_compare_enable<'a>(&'a self) -> bool {
12011        self.raw.compareEnable != 0
12012    }
12013
12014    pub fn get_compare_op<'a>(&'a self) -> CompareOp {
12015        self.raw.compareOp.into()
12016    }
12017
12018    pub fn get_min_lod<'a>(&'a self) -> f32 {
12019        self.raw.minLod.into()
12020    }
12021
12022    pub fn get_max_lod<'a>(&'a self) -> f32 {
12023        self.raw.maxLod.into()
12024    }
12025
12026    pub fn get_border_color<'a>(&'a self) -> BorderColor {
12027        self.raw.borderColor.into()
12028    }
12029
12030    pub fn get_unnormalized_coordinates<'a>(&'a self) -> bool {
12031        self.raw.unnormalizedCoordinates != 0
12032    }
12033
12034    pub fn build(self) -> SamplerCreateInfo<'b> {
12035        SamplerCreateInfo {
12036            raw: self.raw,
12037            _p: PhantomData,
12038        }
12039    }
12040}
12041
12042
12043/// A `VkCommandPoolCreateInfo`.
12044///
12045/// 
12046#[derive(Debug, Clone, Default)]
12047#[repr(C)]
12048pub struct CommandPoolCreateInfo<'s> {
12049    raw: vks::VkCommandPoolCreateInfo,
12050    _p: PhantomData<&'s ()>,
12051}
12052
12053impl<'s> CommandPoolCreateInfo<'s> {
12054    pub fn builder<'b>() -> CommandPoolCreateInfoBuilder<'b> {
12055        CommandPoolCreateInfoBuilder::new()
12056    }
12057
12058    pub unsafe fn from_raw(raw: vks::VkCommandPoolCreateInfo) -> CommandPoolCreateInfo<'s> {
12059        CommandPoolCreateInfo { raw, _p: PhantomData }
12060    }
12061
12062    pub fn next<'a>(&'a self) -> *const c_void {
12063        self.raw.pNext
12064    }
12065
12066    pub fn flags<'a>(&'a self) -> CommandPoolCreateFlags {
12067        CommandPoolCreateFlags::from_bits(self.raw.flags)
12068            .expect("CommandPoolCreateInfo::flags: error converting flags")
12069    }
12070
12071    pub fn queue_family_index<'a>(&'a self) -> u32 {
12072        self.raw.queueFamilyIndex.into()
12073    }
12074
12075    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
12076        self.raw.pNext = next;
12077    }
12078
12079    pub fn set_flags<'m>(&mut self, flags: CommandPoolCreateFlags) {
12080        self.raw.flags = flags.bits();
12081    }
12082
12083    pub fn set_queue_family_index<'m>(&mut self, queue_family_index: u32) {
12084        self.raw.queueFamilyIndex = queue_family_index.into();
12085    }
12086
12087    pub fn as_raw(&self) -> &vks::VkCommandPoolCreateInfo {
12088        &self.raw
12089    }
12090}
12091
12092impl<'s> From<CommandPoolCreateInfo<'s>> for vks::VkCommandPoolCreateInfo {
12093    fn from(f: CommandPoolCreateInfo<'s>) -> vks::VkCommandPoolCreateInfo {
12094        f.raw
12095    }
12096}
12097
12098
12099/// A builder for `VkCommandPoolCreateInfo`.
12100///
12101/// 
12102#[derive(Debug, Clone, Default)]
12103pub struct CommandPoolCreateInfoBuilder<'b> {
12104    raw: vks::VkCommandPoolCreateInfo,
12105    _p: PhantomData<&'b ()>, 
12106}
12107
12108impl<'b> CommandPoolCreateInfoBuilder<'b> {
12109    pub fn new() -> CommandPoolCreateInfoBuilder<'b> {
12110        CommandPoolCreateInfoBuilder {
12111            raw: vks::VkCommandPoolCreateInfo::default(),
12112            _p: PhantomData,
12113        }
12114    }
12115
12116    pub unsafe fn next<'m>(mut self, next: *const c_void) -> CommandPoolCreateInfoBuilder<'b> {
12117        self.raw.pNext = next;
12118        self
12119    }
12120
12121    pub fn flags<'m>(mut self, flags: CommandPoolCreateFlags) -> CommandPoolCreateInfoBuilder<'b> {
12122        self.raw.flags = flags.bits();
12123        self
12124    }
12125
12126    pub fn queue_family_index<'m>(mut self, queue_family_index: u32) -> CommandPoolCreateInfoBuilder<'b> {
12127        self.raw.queueFamilyIndex = queue_family_index.into();
12128        self
12129    }
12130
12131    pub fn get_next<'a>(&'a self) -> *const c_void {
12132        self.raw.pNext
12133    }
12134
12135    pub fn get_flags<'a>(&'a self) -> CommandPoolCreateFlags {
12136        CommandPoolCreateFlags::from_bits(self.raw.flags)
12137            .expect("CommandPoolCreateInfo::flags: error converting flags")
12138    }
12139
12140    pub fn get_queue_family_index<'a>(&'a self) -> u32 {
12141        self.raw.queueFamilyIndex.into()
12142    }
12143
12144    pub fn build(self) -> CommandPoolCreateInfo<'b> {
12145        CommandPoolCreateInfo {
12146            raw: self.raw,
12147            _p: PhantomData,
12148        }
12149    }
12150}
12151
12152
12153/// A `VkCommandBufferAllocateInfo`.
12154///
12155/// 
12156#[derive(Debug, Clone, Default)]
12157#[repr(C)]
12158pub struct CommandBufferAllocateInfo<'s> {
12159    raw: vks::VkCommandBufferAllocateInfo,
12160    _p: PhantomData<&'s ()>,
12161}
12162
12163impl<'s> CommandBufferAllocateInfo<'s> {
12164    pub fn builder<'b>() -> CommandBufferAllocateInfoBuilder<'b> {
12165        CommandBufferAllocateInfoBuilder::new()
12166    }
12167
12168    pub unsafe fn from_raw(raw: vks::VkCommandBufferAllocateInfo) -> CommandBufferAllocateInfo<'s> {
12169        CommandBufferAllocateInfo { raw, _p: PhantomData }
12170    }
12171
12172    pub fn next<'a>(&'a self) -> *const c_void {
12173        self.raw.pNext
12174    }
12175
12176    pub fn command_pool<'a>(&'a self) -> vks::VkCommandPool {
12177        self.raw.commandPool
12178    }
12179
12180    pub fn level<'a>(&'a self) -> CommandBufferLevel {
12181        self.raw.level.into()
12182    }
12183
12184    pub fn command_buffer_count<'a>(&'a self) -> u32 {
12185        self.raw.commandBufferCount.into()
12186    }
12187
12188    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
12189        self.raw.pNext = next;
12190    }
12191
12192    pub fn set_command_pool<'m, H>(&mut self, command_pool: H)
12193            where H: Handle<Target=CommandPoolHandle> {
12194        self.raw.commandPool = command_pool.handle().0;
12195    }
12196
12197    pub fn set_level<'m>(&mut self, level: CommandBufferLevel) {
12198        self.raw.level = level.into();
12199    }
12200
12201    pub fn set_command_buffer_count<'m>(&mut self, command_buffer_count: u32) {
12202        self.raw.commandBufferCount = command_buffer_count.into();
12203    }
12204
12205    pub fn as_raw(&self) -> &vks::VkCommandBufferAllocateInfo {
12206        &self.raw
12207    }
12208}
12209
12210impl<'s> From<CommandBufferAllocateInfo<'s>> for vks::VkCommandBufferAllocateInfo {
12211    fn from(f: CommandBufferAllocateInfo<'s>) -> vks::VkCommandBufferAllocateInfo {
12212        f.raw
12213    }
12214}
12215
12216
12217/// A builder for `VkCommandBufferAllocateInfo`.
12218///
12219/// 
12220#[derive(Debug, Clone, Default)]
12221pub struct CommandBufferAllocateInfoBuilder<'b> {
12222    raw: vks::VkCommandBufferAllocateInfo,
12223    _p: PhantomData<&'b ()>, 
12224}
12225
12226impl<'b> CommandBufferAllocateInfoBuilder<'b> {
12227    pub fn new() -> CommandBufferAllocateInfoBuilder<'b> {
12228        CommandBufferAllocateInfoBuilder {
12229            raw: vks::VkCommandBufferAllocateInfo::default(),
12230            _p: PhantomData,
12231        }
12232    }
12233
12234    pub unsafe fn next<'m>(mut self, next: *const c_void) -> CommandBufferAllocateInfoBuilder<'b> {
12235        self.raw.pNext = next;
12236        self
12237    }
12238
12239    pub fn command_pool<'m, H>(mut self, command_pool: H) -> CommandBufferAllocateInfoBuilder<'b>
12240            where H: Handle<Target=CommandPoolHandle> {
12241        self.raw.commandPool = command_pool.handle().0;
12242        self
12243    }
12244
12245    pub fn level<'m>(mut self, level: CommandBufferLevel) -> CommandBufferAllocateInfoBuilder<'b> {
12246        self.raw.level = level.into();
12247        self
12248    }
12249
12250    pub fn command_buffer_count<'m>(mut self, command_buffer_count: u32) -> CommandBufferAllocateInfoBuilder<'b> {
12251        self.raw.commandBufferCount = command_buffer_count.into();
12252        self
12253    }
12254
12255    pub fn get_next<'a>(&'a self) -> *const c_void {
12256        self.raw.pNext
12257    }
12258
12259    pub fn get_command_pool<'a>(&'a self) -> vks::VkCommandPool {
12260        self.raw.commandPool
12261    }
12262
12263    pub fn get_level<'a>(&'a self) -> CommandBufferLevel {
12264        self.raw.level.into()
12265    }
12266
12267    pub fn get_command_buffer_count<'a>(&'a self) -> u32 {
12268        self.raw.commandBufferCount.into()
12269    }
12270
12271    pub fn build(self) -> CommandBufferAllocateInfo<'b> {
12272        CommandBufferAllocateInfo {
12273            raw: self.raw,
12274            _p: PhantomData,
12275        }
12276    }
12277}
12278
12279
12280/// A `VkCommandBufferInheritanceInfo`.
12281///
12282/// 
12283#[derive(Debug, Clone, Default)]
12284#[repr(C)]
12285pub struct CommandBufferInheritanceInfo<'s> {
12286    raw: vks::VkCommandBufferInheritanceInfo,
12287    _p: PhantomData<&'s ()>,
12288}
12289
12290impl<'s> CommandBufferInheritanceInfo<'s> {
12291    pub fn builder<'b>() -> CommandBufferInheritanceInfoBuilder<'b> {
12292        CommandBufferInheritanceInfoBuilder::new()
12293    }
12294
12295    pub unsafe fn from_raw(raw: vks::VkCommandBufferInheritanceInfo) -> CommandBufferInheritanceInfo<'s> {
12296        CommandBufferInheritanceInfo { raw, _p: PhantomData }
12297    }
12298
12299    pub fn next<'a>(&'a self) -> *const c_void {
12300        self.raw.pNext
12301    }
12302
12303    pub fn render_pass<'a>(&'a self) -> vks::VkRenderPass {
12304        self.raw.renderPass
12305    }
12306
12307    pub fn subpass<'a>(&'a self) -> u32 {
12308        self.raw.subpass.into()
12309    }
12310
12311    pub fn framebuffer<'a>(&'a self) -> vks::VkFramebuffer {
12312        self.raw.framebuffer
12313    }
12314
12315    pub fn occlusion_query_enable<'a>(&'a self) -> bool {
12316        self.raw.occlusionQueryEnable != 0
12317    }
12318
12319    pub fn query_flags<'a>(&'a self) -> QueryControlFlags {
12320        QueryControlFlags::from_bits(self.raw.queryFlags)
12321            .expect("CommandBufferInheritanceInfo::query_flags: error converting flags")
12322    }
12323
12324    pub fn pipeline_statistics<'a>(&'a self) -> QueryPipelineStatisticFlags {
12325        QueryPipelineStatisticFlags::from_bits(self.raw.pipelineStatistics)
12326            .expect("CommandBufferInheritanceInfo::pipeline_statistics: error converting flags")
12327    }
12328
12329    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
12330        self.raw.pNext = next;
12331    }
12332
12333    pub fn set_render_pass<'m, H>(&mut self, render_pass: H)
12334            where H: Handle<Target=RenderPassHandle> {
12335        self.raw.renderPass = render_pass.handle().0;
12336    }
12337
12338    pub fn set_subpass<'m>(&mut self, subpass: u32) {
12339        self.raw.subpass = subpass.into();
12340    }
12341
12342    pub fn set_framebuffer<'m, H>(&mut self, framebuffer: H)
12343            where H: Handle<Target=FramebufferHandle> {
12344        self.raw.framebuffer = framebuffer.handle().0;
12345    }
12346
12347    pub fn set_occlusion_query_enable<'m>(&mut self, occlusion_query_enable: bool) {
12348        self.raw.occlusionQueryEnable = occlusion_query_enable as u32;
12349    }
12350
12351    pub fn set_query_flags<'m>(&mut self, query_flags: QueryControlFlags) {
12352        self.raw.queryFlags = query_flags.bits();
12353    }
12354
12355    pub fn set_pipeline_statistics<'m>(&mut self, pipeline_statistics: QueryPipelineStatisticFlags) {
12356        self.raw.pipelineStatistics = pipeline_statistics.bits();
12357    }
12358
12359    pub fn as_raw(&self) -> &vks::VkCommandBufferInheritanceInfo {
12360        &self.raw
12361    }
12362}
12363
12364impl<'s> From<CommandBufferInheritanceInfo<'s>> for vks::VkCommandBufferInheritanceInfo {
12365    fn from(f: CommandBufferInheritanceInfo<'s>) -> vks::VkCommandBufferInheritanceInfo {
12366        f.raw
12367    }
12368}
12369
12370
12371/// A builder for `VkCommandBufferInheritanceInfo`.
12372///
12373/// 
12374#[derive(Debug, Clone, Default)]
12375pub struct CommandBufferInheritanceInfoBuilder<'b> {
12376    raw: vks::VkCommandBufferInheritanceInfo,
12377    _p: PhantomData<&'b ()>, 
12378}
12379
12380impl<'b> CommandBufferInheritanceInfoBuilder<'b> {
12381    pub fn new() -> CommandBufferInheritanceInfoBuilder<'b> {
12382        CommandBufferInheritanceInfoBuilder {
12383            raw: vks::VkCommandBufferInheritanceInfo::default(),
12384            _p: PhantomData,
12385        }
12386    }
12387
12388    pub unsafe fn next<'m>(mut self, next: *const c_void) -> CommandBufferInheritanceInfoBuilder<'b> {
12389        self.raw.pNext = next;
12390        self
12391    }
12392
12393    pub fn render_pass<'m, H>(mut self, render_pass: H) -> CommandBufferInheritanceInfoBuilder<'b>
12394            where H: Handle<Target=RenderPassHandle> {
12395        self.raw.renderPass = render_pass.handle().0;
12396        self
12397    }
12398
12399    pub fn subpass<'m>(mut self, subpass: u32) -> CommandBufferInheritanceInfoBuilder<'b> {
12400        self.raw.subpass = subpass.into();
12401        self
12402    }
12403
12404    pub fn framebuffer<'m, H>(mut self, framebuffer: H) -> CommandBufferInheritanceInfoBuilder<'b>
12405            where H: Handle<Target=FramebufferHandle> {
12406        self.raw.framebuffer = framebuffer.handle().0;
12407        self
12408    }
12409
12410    pub fn occlusion_query_enable<'m>(mut self, occlusion_query_enable: bool) -> CommandBufferInheritanceInfoBuilder<'b> {
12411        self.raw.occlusionQueryEnable = occlusion_query_enable as u32;
12412        self
12413    }
12414
12415    pub fn query_flags<'m>(mut self, query_flags: QueryControlFlags) -> CommandBufferInheritanceInfoBuilder<'b> {
12416        self.raw.queryFlags = query_flags.bits();
12417        self
12418    }
12419
12420    pub fn pipeline_statistics<'m>(mut self, pipeline_statistics: QueryPipelineStatisticFlags) -> CommandBufferInheritanceInfoBuilder<'b> {
12421        self.raw.pipelineStatistics = pipeline_statistics.bits();
12422        self
12423    }
12424
12425    pub fn get_next<'a>(&'a self) -> *const c_void {
12426        self.raw.pNext
12427    }
12428
12429    pub fn get_render_pass<'a>(&'a self) -> vks::VkRenderPass {
12430        self.raw.renderPass
12431    }
12432
12433    pub fn get_subpass<'a>(&'a self) -> u32 {
12434        self.raw.subpass.into()
12435    }
12436
12437    pub fn get_framebuffer<'a>(&'a self) -> vks::VkFramebuffer {
12438        self.raw.framebuffer
12439    }
12440
12441    pub fn get_occlusion_query_enable<'a>(&'a self) -> bool {
12442        self.raw.occlusionQueryEnable != 0
12443    }
12444
12445    pub fn get_query_flags<'a>(&'a self) -> QueryControlFlags {
12446        QueryControlFlags::from_bits(self.raw.queryFlags)
12447            .expect("CommandBufferInheritanceInfo::query_flags: error converting flags")
12448    }
12449
12450    pub fn get_pipeline_statistics<'a>(&'a self) -> QueryPipelineStatisticFlags {
12451        QueryPipelineStatisticFlags::from_bits(self.raw.pipelineStatistics)
12452            .expect("CommandBufferInheritanceInfo::pipeline_statistics: error converting flags")
12453    }
12454
12455    pub fn build(self) -> CommandBufferInheritanceInfo<'b> {
12456        CommandBufferInheritanceInfo {
12457            raw: self.raw,
12458            _p: PhantomData,
12459        }
12460    }
12461}
12462
12463
12464/// A `VkCommandBufferBeginInfo`.
12465///
12466/// 
12467#[derive(Debug, Clone, Default)]
12468#[repr(C)]
12469pub struct CommandBufferBeginInfo<'s> {
12470    raw: vks::VkCommandBufferBeginInfo,
12471    _p: PhantomData<&'s ()>,
12472}
12473
12474impl<'s> CommandBufferBeginInfo<'s> {
12475    pub fn builder<'b>() -> CommandBufferBeginInfoBuilder<'b> {
12476        CommandBufferBeginInfoBuilder::new()
12477    }
12478
12479    pub unsafe fn from_raw(raw: vks::VkCommandBufferBeginInfo) -> CommandBufferBeginInfo<'s> {
12480        CommandBufferBeginInfo { raw, _p: PhantomData }
12481    }
12482
12483    pub fn next<'a>(&'a self) -> *const c_void {
12484        self.raw.pNext
12485    }
12486
12487    pub fn flags<'a>(&'a self) -> CommandBufferUsageFlags {
12488        CommandBufferUsageFlags::from_bits(self.raw.flags)
12489            .expect("CommandBufferBeginInfo::flags: error converting flags")
12490    }
12491
12492    pub fn inheritance_info<'a>(&'a self) -> &'a CommandBufferInheritanceInfo {
12493        unsafe { &*(self.raw.pInheritanceInfo as *const vks::VkCommandBufferInheritanceInfo as *const _) }
12494    }
12495
12496    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
12497        self.raw.pNext = next;
12498    }
12499
12500    pub fn set_flags<'m>(&mut self, flags: CommandBufferUsageFlags) {
12501        self.raw.flags = flags.bits();
12502    }
12503
12504    pub fn set_inheritance_info<'m, 'a>(&mut self, inheritance_info: &'a CommandBufferInheritanceInfo)
12505            where 'a: 's {
12506        self.raw.pInheritanceInfo = inheritance_info.as_raw();
12507    }
12508
12509    pub fn as_raw(&self) -> &vks::VkCommandBufferBeginInfo {
12510        &self.raw
12511    }
12512}
12513
12514impl<'s> From<CommandBufferBeginInfo<'s>> for vks::VkCommandBufferBeginInfo {
12515    fn from(f: CommandBufferBeginInfo<'s>) -> vks::VkCommandBufferBeginInfo {
12516        f.raw
12517    }
12518}
12519
12520
12521/// A builder for `VkCommandBufferBeginInfo`.
12522///
12523/// 
12524#[derive(Debug, Clone, Default)]
12525pub struct CommandBufferBeginInfoBuilder<'b> {
12526    raw: vks::VkCommandBufferBeginInfo,
12527    _p: PhantomData<&'b ()>, 
12528}
12529
12530impl<'b> CommandBufferBeginInfoBuilder<'b> {
12531    pub fn new() -> CommandBufferBeginInfoBuilder<'b> {
12532        CommandBufferBeginInfoBuilder {
12533            raw: vks::VkCommandBufferBeginInfo::default(),
12534            _p: PhantomData,
12535        }
12536    }
12537
12538    pub unsafe fn next<'m>(mut self, next: *const c_void) -> CommandBufferBeginInfoBuilder<'b> {
12539        self.raw.pNext = next;
12540        self
12541    }
12542
12543    pub fn flags<'m>(mut self, flags: CommandBufferUsageFlags) -> CommandBufferBeginInfoBuilder<'b> {
12544        self.raw.flags = flags.bits();
12545        self
12546    }
12547
12548    pub fn inheritance_info<'m, 'a>(mut self, inheritance_info: &'a CommandBufferInheritanceInfo) -> CommandBufferBeginInfoBuilder<'b>
12549            where 'a: 'b {
12550        self.raw.pInheritanceInfo = inheritance_info.as_raw();
12551        self
12552    }
12553
12554    pub fn get_next<'a>(&'a self) -> *const c_void {
12555        self.raw.pNext
12556    }
12557
12558    pub fn get_flags<'a>(&'a self) -> CommandBufferUsageFlags {
12559        CommandBufferUsageFlags::from_bits(self.raw.flags)
12560            .expect("CommandBufferBeginInfo::flags: error converting flags")
12561    }
12562
12563    pub fn get_inheritance_info<'a>(&'a self) -> &'a CommandBufferInheritanceInfo {
12564        unsafe { &*(self.raw.pInheritanceInfo as *const vks::VkCommandBufferInheritanceInfo as *const _) }
12565    }
12566
12567    pub fn build(self) -> CommandBufferBeginInfo<'b> {
12568        CommandBufferBeginInfo {
12569            raw: self.raw,
12570            _p: PhantomData,
12571        }
12572    }
12573}
12574
12575
12576/// A `VkRenderPassBeginInfo`.
12577///
12578/// 
12579#[derive(Debug, Clone, Default)]
12580#[repr(C)]
12581pub struct RenderPassBeginInfo<'s> {
12582    raw: vks::VkRenderPassBeginInfo,
12583    _p: PhantomData<&'s ()>,
12584}
12585
12586impl<'s> RenderPassBeginInfo<'s> {
12587    pub fn builder<'b>() -> RenderPassBeginInfoBuilder<'b> {
12588        RenderPassBeginInfoBuilder::new()
12589    }
12590
12591    pub unsafe fn from_raw(raw: vks::VkRenderPassBeginInfo) -> RenderPassBeginInfo<'s> {
12592        RenderPassBeginInfo { raw, _p: PhantomData }
12593    }
12594
12595    pub fn next<'a>(&'a self) -> *const c_void {
12596        self.raw.pNext
12597    }
12598
12599    pub fn render_pass<'a>(&'a self) -> vks::VkRenderPass {
12600        self.raw.renderPass
12601    }
12602
12603    pub fn framebuffer<'a>(&'a self) -> vks::VkFramebuffer {
12604        self.raw.framebuffer
12605    }
12606
12607    pub fn render_area<'a>(&'a self) -> &'a Rect2d {
12608        unsafe { &*(&self.raw.renderArea as *const vks::VkRect2D as *const Rect2d) }
12609    }
12610
12611    pub fn render_area_mut<'a>(&'a mut self) -> &'a mut Rect2d {
12612        unsafe { &mut *(&mut self.raw.renderArea as *mut  vks::VkRect2D as *mut Rect2d) }
12613    }
12614
12615    pub fn clear_values<'a>(&'a self) -> &'a [ClearValue] {
12616        unsafe { slice::from_raw_parts(self.raw.pClearValues as *const _, self.raw.clearValueCount as usize) }
12617    }
12618
12619    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
12620        self.raw.pNext = next;
12621    }
12622
12623    pub fn set_render_pass<'m, H>(&mut self, render_pass: H)
12624            where H: Handle<Target=RenderPassHandle> {
12625        self.raw.renderPass = render_pass.handle().0;
12626    }
12627
12628    pub fn set_framebuffer<'m, H>(&mut self, framebuffer: H)
12629            where H: Handle<Target=FramebufferHandle> {
12630        self.raw.framebuffer = framebuffer.handle().0;
12631    }
12632
12633    pub fn set_render_area<'m>(&mut self, render_area: Rect2d) {
12634        self.raw.renderArea = render_area.raw;
12635    }
12636
12637    pub fn set_clear_values<'m, 'a>(&mut self, clear_values: &'a [ClearValue])
12638            where 'a: 's {
12639        assert!(self.raw.clearValueCount == 0 || self.raw.clearValueCount == clear_values.len() as _, 
12640            "count inconsistency found when specifying `RenderPassBeginInfo::clear_values`.");
12641        self.raw.clearValueCount = clear_values.len() as _;
12642        self.raw.pClearValues = clear_values.as_ptr() as *const ClearValue as *const _;
12643    }
12644
12645    pub fn as_raw(&self) -> &vks::VkRenderPassBeginInfo {
12646        &self.raw
12647    }
12648}
12649
12650impl<'s> From<RenderPassBeginInfo<'s>> for vks::VkRenderPassBeginInfo {
12651    fn from(f: RenderPassBeginInfo<'s>) -> vks::VkRenderPassBeginInfo {
12652        f.raw
12653    }
12654}
12655
12656
12657/// A builder for `VkRenderPassBeginInfo`.
12658///
12659/// 
12660#[derive(Debug, Clone, Default)]
12661pub struct RenderPassBeginInfoBuilder<'b> {
12662    raw: vks::VkRenderPassBeginInfo,
12663    _p: PhantomData<&'b ()>, 
12664}
12665
12666impl<'b> RenderPassBeginInfoBuilder<'b> {
12667    pub fn new() -> RenderPassBeginInfoBuilder<'b> {
12668        RenderPassBeginInfoBuilder {
12669            raw: vks::VkRenderPassBeginInfo::default(),
12670            _p: PhantomData,
12671        }
12672    }
12673
12674    pub unsafe fn next<'m>(mut self, next: *const c_void) -> RenderPassBeginInfoBuilder<'b> {
12675        self.raw.pNext = next;
12676        self
12677    }
12678
12679    pub fn render_pass<'m, H>(mut self, render_pass: H) -> RenderPassBeginInfoBuilder<'b>
12680            where H: Handle<Target=RenderPassHandle> {
12681        self.raw.renderPass = render_pass.handle().0;
12682        self
12683    }
12684
12685    pub fn framebuffer<'m, H>(mut self, framebuffer: H) -> RenderPassBeginInfoBuilder<'b>
12686            where H: Handle<Target=FramebufferHandle> {
12687        self.raw.framebuffer = framebuffer.handle().0;
12688        self
12689    }
12690
12691    pub fn render_area<'m>(mut self, render_area: Rect2d) -> RenderPassBeginInfoBuilder<'b> {
12692        self.raw.renderArea = render_area.raw;
12693        self
12694    }
12695
12696    pub fn clear_values<'m, 'a>(mut self, clear_values: &'a [ClearValue]) -> RenderPassBeginInfoBuilder<'b>
12697            where 'a: 'b {
12698        assert!(self.raw.clearValueCount == 0 || self.raw.clearValueCount == clear_values.len() as _, 
12699            "count inconsistency found when specifying `RenderPassBeginInfo::clear_values`.");
12700        self.raw.clearValueCount = clear_values.len() as _;
12701        self.raw.pClearValues = clear_values.as_ptr() as *const ClearValue as *const _;
12702        self
12703    }
12704
12705    pub fn get_next<'a>(&'a self) -> *const c_void {
12706        self.raw.pNext
12707    }
12708
12709    pub fn get_render_pass<'a>(&'a self) -> vks::VkRenderPass {
12710        self.raw.renderPass
12711    }
12712
12713    pub fn get_framebuffer<'a>(&'a self) -> vks::VkFramebuffer {
12714        self.raw.framebuffer
12715    }
12716
12717    pub fn get_render_area<'a>(&'a self) -> &'a Rect2d {
12718        unsafe { &*(&self.raw.renderArea as *const vks::VkRect2D as *const Rect2d) }
12719    }
12720
12721    pub fn get_render_area_mut<'a>(&'a mut self) -> &'a mut Rect2d {
12722        unsafe { &mut *(&mut self.raw.renderArea as *mut  vks::VkRect2D as *mut Rect2d) }
12723    }
12724
12725    pub fn get_clear_values<'a>(&'a self) -> &'a [ClearValue] {
12726        unsafe { slice::from_raw_parts(self.raw.pClearValues as *const _, self.raw.clearValueCount as usize) }
12727    }
12728
12729    pub fn build(self) -> RenderPassBeginInfo<'b> {
12730        RenderPassBeginInfo {
12731            raw: self.raw,
12732            _p: PhantomData,
12733        }
12734    }
12735}
12736
12737
12738/// A `VkClearDepthStencilValue`.
12739///
12740/// 
12741#[derive(Debug, Clone, Default)]
12742#[repr(C)]
12743pub struct ClearDepthStencilValue {
12744    raw: vks::VkClearDepthStencilValue,
12745}
12746
12747impl ClearDepthStencilValue {
12748    pub fn builder() -> ClearDepthStencilValueBuilder {
12749        ClearDepthStencilValueBuilder::new()
12750    }
12751
12752    pub unsafe fn from_raw(raw: vks::VkClearDepthStencilValue) -> ClearDepthStencilValue {
12753        ClearDepthStencilValue { raw, }
12754    }
12755
12756    pub fn depth<'a>(&'a self) -> f32 {
12757        self.raw.depth.into()
12758    }
12759
12760    pub fn stencil<'a>(&'a self) -> u32 {
12761        self.raw.stencil.into()
12762    }
12763
12764    pub fn set_depth<'m>(&mut self, depth: f32) {
12765        self.raw.depth = depth.into();
12766    }
12767
12768    pub fn set_stencil<'m>(&mut self, stencil: u32) {
12769        self.raw.stencil = stencil.into();
12770    }
12771
12772    pub fn as_raw(&self) -> &vks::VkClearDepthStencilValue {
12773        &self.raw
12774    }
12775}
12776
12777impl From<ClearDepthStencilValue> for vks::VkClearDepthStencilValue {
12778    fn from(f: ClearDepthStencilValue) -> vks::VkClearDepthStencilValue {
12779        f.raw
12780    }
12781}
12782
12783
12784/// A builder for `VkClearDepthStencilValue`.
12785///
12786/// 
12787#[derive(Debug, Clone, Default)]
12788pub struct ClearDepthStencilValueBuilder {
12789    raw: vks::VkClearDepthStencilValue,
12790}
12791
12792impl ClearDepthStencilValueBuilder {
12793    pub fn new() -> ClearDepthStencilValueBuilder {
12794        ClearDepthStencilValueBuilder {
12795            raw: vks::VkClearDepthStencilValue::default(),
12796        }
12797    }
12798
12799    pub fn depth<'m>(mut self, depth: f32) -> ClearDepthStencilValueBuilder {
12800        self.raw.depth = depth.into();
12801        self
12802    }
12803
12804    pub fn stencil<'m>(mut self, stencil: u32) -> ClearDepthStencilValueBuilder {
12805        self.raw.stencil = stencil.into();
12806        self
12807    }
12808
12809    pub fn get_depth<'a>(&'a self) -> f32 {
12810        self.raw.depth.into()
12811    }
12812
12813    pub fn get_stencil<'a>(&'a self) -> u32 {
12814        self.raw.stencil.into()
12815    }
12816
12817    pub fn build(self) -> ClearDepthStencilValue {
12818        ClearDepthStencilValue {
12819            raw: self.raw,
12820        }
12821    }
12822}
12823
12824
12825/// A `VkClearAttachment`.
12826///
12827/// 
12828#[derive(Debug, Clone, Default)]
12829#[repr(C)]
12830pub struct ClearAttachment {
12831    raw: vks::VkClearAttachment,
12832}
12833
12834impl ClearAttachment {
12835    pub fn builder() -> ClearAttachmentBuilder {
12836        ClearAttachmentBuilder::new()
12837    }
12838
12839    pub unsafe fn from_raw(raw: vks::VkClearAttachment) -> ClearAttachment {
12840        ClearAttachment { raw, }
12841    }
12842
12843    pub fn aspect_mask<'a>(&'a self) -> ImageAspectFlags {
12844        ImageAspectFlags::from_bits(self.raw.aspectMask)
12845            .expect("ClearAttachment::aspect_mask: error converting flags")
12846    }
12847
12848    pub fn color_attachment<'a>(&'a self) -> u32 {
12849        self.raw.colorAttachment.into()
12850    }
12851
12852    pub fn clear_value<'a>(&'a self) -> ClearValue {
12853        self.raw.clearValue.into()
12854    }
12855
12856    pub fn set_aspect_mask<'m>(&mut self, aspect_mask: ImageAspectFlags) {
12857        self.raw.aspectMask = aspect_mask.bits();
12858    }
12859
12860    pub fn set_color_attachment<'m>(&mut self, color_attachment: u32) {
12861        self.raw.colorAttachment = color_attachment.into();
12862    }
12863
12864    pub fn set_clear_value<'m>(&mut self, clear_value: ClearValue) {
12865        self.raw.clearValue = clear_value.into();
12866    }
12867
12868    pub fn as_raw(&self) -> &vks::VkClearAttachment {
12869        &self.raw
12870    }
12871}
12872
12873impl From<ClearAttachment> for vks::VkClearAttachment {
12874    fn from(f: ClearAttachment) -> vks::VkClearAttachment {
12875        f.raw
12876    }
12877}
12878
12879
12880/// A builder for `VkClearAttachment`.
12881///
12882/// 
12883#[derive(Debug, Clone, Default)]
12884pub struct ClearAttachmentBuilder {
12885    raw: vks::VkClearAttachment,
12886}
12887
12888impl ClearAttachmentBuilder {
12889    pub fn new() -> ClearAttachmentBuilder {
12890        ClearAttachmentBuilder {
12891            raw: vks::VkClearAttachment::default(),
12892        }
12893    }
12894
12895    pub fn aspect_mask<'m>(mut self, aspect_mask: ImageAspectFlags) -> ClearAttachmentBuilder {
12896        self.raw.aspectMask = aspect_mask.bits();
12897        self
12898    }
12899
12900    pub fn color_attachment<'m>(mut self, color_attachment: u32) -> ClearAttachmentBuilder {
12901        self.raw.colorAttachment = color_attachment.into();
12902        self
12903    }
12904
12905    pub fn clear_value<'m>(mut self, clear_value: ClearValue) -> ClearAttachmentBuilder {
12906        self.raw.clearValue = clear_value.into();
12907        self
12908    }
12909
12910    pub fn get_aspect_mask<'a>(&'a self) -> ImageAspectFlags {
12911        ImageAspectFlags::from_bits(self.raw.aspectMask)
12912            .expect("ClearAttachment::aspect_mask: error converting flags")
12913    }
12914
12915    pub fn get_color_attachment<'a>(&'a self) -> u32 {
12916        self.raw.colorAttachment.into()
12917    }
12918
12919    pub fn get_clear_value<'a>(&'a self) -> ClearValue {
12920        self.raw.clearValue.into()
12921    }
12922
12923    pub fn build(self) -> ClearAttachment {
12924        ClearAttachment {
12925            raw: self.raw,
12926        }
12927    }
12928}
12929
12930
12931/// A `VkAttachmentDescription`.
12932///
12933/// 
12934#[derive(Debug, Clone, Default)]
12935#[repr(C)]
12936pub struct AttachmentDescription {
12937    raw: vks::VkAttachmentDescription,
12938}
12939
12940impl AttachmentDescription {
12941    pub fn builder() -> AttachmentDescriptionBuilder {
12942        AttachmentDescriptionBuilder::new()
12943    }
12944
12945    pub unsafe fn from_raw(raw: vks::VkAttachmentDescription) -> AttachmentDescription {
12946        AttachmentDescription { raw, }
12947    }
12948
12949    pub fn flags<'a>(&'a self) -> AttachmentDescriptionFlags {
12950        AttachmentDescriptionFlags::from_bits(self.raw.flags)
12951            .expect("AttachmentDescription::flags: error converting flags")
12952    }
12953
12954    pub fn format<'a>(&'a self) -> Format {
12955        self.raw.format.into()
12956    }
12957
12958    pub fn samples<'a>(&'a self) -> SampleCountFlags {
12959        SampleCountFlags::from_bits(self.raw.samples)
12960            .expect("AttachmentDescription::samples: error converting flags")
12961    }
12962
12963    pub fn load_op<'a>(&'a self) -> AttachmentLoadOp {
12964        self.raw.loadOp.into()
12965    }
12966
12967    pub fn store_op<'a>(&'a self) -> AttachmentStoreOp {
12968        self.raw.storeOp.into()
12969    }
12970
12971    pub fn stencil_load_op<'a>(&'a self) -> AttachmentLoadOp {
12972        self.raw.stencilLoadOp.into()
12973    }
12974
12975    pub fn stencil_store_op<'a>(&'a self) -> AttachmentStoreOp {
12976        self.raw.stencilStoreOp.into()
12977    }
12978
12979    pub fn initial_layout<'a>(&'a self) -> ImageLayout {
12980        self.raw.initialLayout.into()
12981    }
12982
12983    pub fn final_layout<'a>(&'a self) -> ImageLayout {
12984        self.raw.finalLayout.into()
12985    }
12986
12987    pub fn set_flags<'m>(&mut self, flags: AttachmentDescriptionFlags) {
12988        self.raw.flags = flags.bits();
12989    }
12990
12991    pub fn set_format<'m>(&mut self, format: Format) {
12992        self.raw.format = format.into();
12993    }
12994
12995    pub fn set_samples<'m>(&mut self, samples: SampleCountFlags) {
12996        self.raw.samples = samples.bits();
12997    }
12998
12999    pub fn set_load_op<'m>(&mut self, load_op: AttachmentLoadOp) {
13000        self.raw.loadOp = load_op.into();
13001    }
13002
13003    pub fn set_store_op<'m>(&mut self, store_op: AttachmentStoreOp) {
13004        self.raw.storeOp = store_op.into();
13005    }
13006
13007    pub fn set_stencil_load_op<'m>(&mut self, stencil_load_op: AttachmentLoadOp) {
13008        self.raw.stencilLoadOp = stencil_load_op.into();
13009    }
13010
13011    pub fn set_stencil_store_op<'m>(&mut self, stencil_store_op: AttachmentStoreOp) {
13012        self.raw.stencilStoreOp = stencil_store_op.into();
13013    }
13014
13015    pub fn set_initial_layout<'m>(&mut self, initial_layout: ImageLayout) {
13016        self.raw.initialLayout = initial_layout.into();
13017    }
13018
13019    pub fn set_final_layout<'m>(&mut self, final_layout: ImageLayout) {
13020        self.raw.finalLayout = final_layout.into();
13021    }
13022
13023    pub fn as_raw(&self) -> &vks::VkAttachmentDescription {
13024        &self.raw
13025    }
13026}
13027
13028impl From<AttachmentDescription> for vks::VkAttachmentDescription {
13029    fn from(f: AttachmentDescription) -> vks::VkAttachmentDescription {
13030        f.raw
13031    }
13032}
13033
13034
13035/// A builder for `VkAttachmentDescription`.
13036///
13037/// 
13038#[derive(Debug, Clone, Default)]
13039pub struct AttachmentDescriptionBuilder {
13040    raw: vks::VkAttachmentDescription,
13041}
13042
13043impl AttachmentDescriptionBuilder {
13044    pub fn new() -> AttachmentDescriptionBuilder {
13045        AttachmentDescriptionBuilder {
13046            raw: vks::VkAttachmentDescription::default(),
13047        }
13048    }
13049
13050    pub fn flags<'m>(mut self, flags: AttachmentDescriptionFlags) -> AttachmentDescriptionBuilder {
13051        self.raw.flags = flags.bits();
13052        self
13053    }
13054
13055    pub fn format<'m>(mut self, format: Format) -> AttachmentDescriptionBuilder {
13056        self.raw.format = format.into();
13057        self
13058    }
13059
13060    pub fn samples<'m>(mut self, samples: SampleCountFlags) -> AttachmentDescriptionBuilder {
13061        self.raw.samples = samples.bits();
13062        self
13063    }
13064
13065    pub fn load_op<'m>(mut self, load_op: AttachmentLoadOp) -> AttachmentDescriptionBuilder {
13066        self.raw.loadOp = load_op.into();
13067        self
13068    }
13069
13070    pub fn store_op<'m>(mut self, store_op: AttachmentStoreOp) -> AttachmentDescriptionBuilder {
13071        self.raw.storeOp = store_op.into();
13072        self
13073    }
13074
13075    pub fn stencil_load_op<'m>(mut self, stencil_load_op: AttachmentLoadOp) -> AttachmentDescriptionBuilder {
13076        self.raw.stencilLoadOp = stencil_load_op.into();
13077        self
13078    }
13079
13080    pub fn stencil_store_op<'m>(mut self, stencil_store_op: AttachmentStoreOp) -> AttachmentDescriptionBuilder {
13081        self.raw.stencilStoreOp = stencil_store_op.into();
13082        self
13083    }
13084
13085    pub fn initial_layout<'m>(mut self, initial_layout: ImageLayout) -> AttachmentDescriptionBuilder {
13086        self.raw.initialLayout = initial_layout.into();
13087        self
13088    }
13089
13090    pub fn final_layout<'m>(mut self, final_layout: ImageLayout) -> AttachmentDescriptionBuilder {
13091        self.raw.finalLayout = final_layout.into();
13092        self
13093    }
13094
13095    pub fn get_flags<'a>(&'a self) -> AttachmentDescriptionFlags {
13096        AttachmentDescriptionFlags::from_bits(self.raw.flags)
13097            .expect("AttachmentDescription::flags: error converting flags")
13098    }
13099
13100    pub fn get_format<'a>(&'a self) -> Format {
13101        self.raw.format.into()
13102    }
13103
13104    pub fn get_samples<'a>(&'a self) -> SampleCountFlags {
13105        SampleCountFlags::from_bits(self.raw.samples)
13106            .expect("AttachmentDescription::samples: error converting flags")
13107    }
13108
13109    pub fn get_load_op<'a>(&'a self) -> AttachmentLoadOp {
13110        self.raw.loadOp.into()
13111    }
13112
13113    pub fn get_store_op<'a>(&'a self) -> AttachmentStoreOp {
13114        self.raw.storeOp.into()
13115    }
13116
13117    pub fn get_stencil_load_op<'a>(&'a self) -> AttachmentLoadOp {
13118        self.raw.stencilLoadOp.into()
13119    }
13120
13121    pub fn get_stencil_store_op<'a>(&'a self) -> AttachmentStoreOp {
13122        self.raw.stencilStoreOp.into()
13123    }
13124
13125    pub fn get_initial_layout<'a>(&'a self) -> ImageLayout {
13126        self.raw.initialLayout.into()
13127    }
13128
13129    pub fn get_final_layout<'a>(&'a self) -> ImageLayout {
13130        self.raw.finalLayout.into()
13131    }
13132
13133    pub fn build(self) -> AttachmentDescription {
13134        AttachmentDescription {
13135            raw: self.raw,
13136        }
13137    }
13138}
13139
13140
13141/// A `VkAttachmentReference`.
13142///
13143/// 
13144#[derive(Debug, Clone, Default)]
13145#[repr(C)]
13146pub struct AttachmentReference {
13147    raw: vks::VkAttachmentReference,
13148}
13149
13150impl AttachmentReference {
13151    pub fn builder() -> AttachmentReferenceBuilder {
13152        AttachmentReferenceBuilder::new()
13153    }
13154
13155    pub unsafe fn from_raw(raw: vks::VkAttachmentReference) -> AttachmentReference {
13156        AttachmentReference { raw, }
13157    }
13158
13159    pub fn attachment<'a>(&'a self) -> u32 {
13160        self.raw.attachment.into()
13161    }
13162
13163    pub fn layout<'a>(&'a self) -> ImageLayout {
13164        self.raw.layout.into()
13165    }
13166
13167    pub fn set_attachment<'m>(&mut self, attachment: u32) {
13168        self.raw.attachment = attachment.into();
13169    }
13170
13171    pub fn set_layout<'m>(&mut self, layout: ImageLayout) {
13172        self.raw.layout = layout.into();
13173    }
13174
13175    pub fn as_raw(&self) -> &vks::VkAttachmentReference {
13176        &self.raw
13177    }
13178}
13179
13180impl From<AttachmentReference> for vks::VkAttachmentReference {
13181    fn from(f: AttachmentReference) -> vks::VkAttachmentReference {
13182        f.raw
13183    }
13184}
13185
13186
13187/// A builder for `VkAttachmentReference`.
13188///
13189/// 
13190#[derive(Debug, Clone, Default)]
13191pub struct AttachmentReferenceBuilder {
13192    raw: vks::VkAttachmentReference,
13193}
13194
13195impl AttachmentReferenceBuilder {
13196    pub fn new() -> AttachmentReferenceBuilder {
13197        AttachmentReferenceBuilder {
13198            raw: vks::VkAttachmentReference::default(),
13199        }
13200    }
13201
13202    pub fn attachment<'m>(mut self, attachment: u32) -> AttachmentReferenceBuilder {
13203        self.raw.attachment = attachment.into();
13204        self
13205    }
13206
13207    pub fn layout<'m>(mut self, layout: ImageLayout) -> AttachmentReferenceBuilder {
13208        self.raw.layout = layout.into();
13209        self
13210    }
13211
13212    pub fn get_attachment<'a>(&'a self) -> u32 {
13213        self.raw.attachment.into()
13214    }
13215
13216    pub fn get_layout<'a>(&'a self) -> ImageLayout {
13217        self.raw.layout.into()
13218    }
13219
13220    pub fn build(self) -> AttachmentReference {
13221        AttachmentReference {
13222            raw: self.raw,
13223        }
13224    }
13225}
13226
13227
13228/// A `VkSubpassDescription`.
13229///
13230/// 
13231#[derive(Debug, Clone, Default)]
13232#[repr(C)]
13233pub struct SubpassDescription<'s> {
13234    raw: vks::VkSubpassDescription,
13235    _p: PhantomData<&'s ()>,
13236}
13237
13238impl<'s> SubpassDescription<'s> {
13239    pub fn builder<'b>() -> SubpassDescriptionBuilder<'b> {
13240        SubpassDescriptionBuilder::new()
13241    }
13242
13243    pub unsafe fn from_raw(raw: vks::VkSubpassDescription) -> SubpassDescription<'s> {
13244        SubpassDescription { raw, _p: PhantomData }
13245    }
13246
13247    pub fn flags<'a>(&'a self) -> SubpassDescriptionFlags {
13248        SubpassDescriptionFlags::from_bits(self.raw.flags)
13249            .expect("SubpassDescription::flags: error converting flags")
13250    }
13251
13252    pub fn pipeline_bind_point<'a>(&'a self) -> PipelineBindPoint {
13253        self.raw.pipelineBindPoint.into()
13254    }
13255
13256    pub fn input_attachments<'a>(&'a self) -> &'a [AttachmentReference] {
13257        unsafe { slice::from_raw_parts(self.raw.pInputAttachments as *const _, self.raw.inputAttachmentCount as usize) }
13258    }
13259
13260    pub fn color_attachments<'a>(&'a self) -> &'a [AttachmentReference] {
13261        unsafe { slice::from_raw_parts(self.raw.pColorAttachments as *const _, self.raw.colorAttachmentCount as usize) }
13262    }
13263
13264    pub fn resolve_attachments<'a>(&'a self) -> &'a [AttachmentReference] {
13265        unsafe { slice::from_raw_parts(self.raw.pResolveAttachments as *const _, self.raw.colorAttachmentCount as usize) }
13266    }
13267
13268    pub fn depth_stencil_attachment<'a>(&'a self) -> &'a AttachmentReference {
13269        unsafe { &*(self.raw.pDepthStencilAttachment as *const vks::VkAttachmentReference as *const _) }
13270    }
13271
13272    pub fn preserve_attachments<'a>(&'a self) -> &'a [u32] {
13273        unsafe { slice::from_raw_parts(self.raw.pPreserveAttachments as *const _, self.raw.preserveAttachmentCount as usize) }
13274    }
13275
13276    pub fn set_flags<'m>(&mut self, flags: SubpassDescriptionFlags) {
13277        self.raw.flags = flags.bits();
13278    }
13279
13280    pub fn set_pipeline_bind_point<'m>(&mut self, pipeline_bind_point: PipelineBindPoint) {
13281        self.raw.pipelineBindPoint = pipeline_bind_point.into();
13282    }
13283
13284    pub fn set_input_attachments<'m, 'a>(&mut self, input_attachments: &'a [AttachmentReference])
13285            where 'a: 's {
13286        assert!(self.raw.inputAttachmentCount == 0 || self.raw.inputAttachmentCount == input_attachments.len() as _, 
13287            "count inconsistency found when specifying `SubpassDescription::input_attachments`.");
13288        self.raw.inputAttachmentCount = input_attachments.len() as _;
13289        self.raw.pInputAttachments = input_attachments.as_ptr() as *const vks::VkAttachmentReference;
13290    }
13291
13292    pub fn set_color_attachments<'m, 'a>(&mut self, color_attachments: &'a [AttachmentReference])
13293            where 'a: 's {
13294        assert!(self.raw.colorAttachmentCount == 0 || self.raw.colorAttachmentCount == color_attachments.len() as _, 
13295            "count inconsistency found when specifying `SubpassDescription::color_attachments`.");
13296        self.raw.colorAttachmentCount = color_attachments.len() as _;
13297        self.raw.pColorAttachments = color_attachments.as_ptr() as *const vks::VkAttachmentReference;
13298    }
13299
13300    pub fn set_resolve_attachments<'m, 'a>(&mut self, resolve_attachments: &'a [AttachmentReference])
13301            where 'a: 's {
13302        assert!(self.raw.colorAttachmentCount == 0 || self.raw.colorAttachmentCount == resolve_attachments.len() as _, 
13303            "count inconsistency found when specifying `SubpassDescription::resolve_attachments`.");
13304        self.raw.colorAttachmentCount = resolve_attachments.len() as _;
13305        self.raw.pResolveAttachments = resolve_attachments.as_ptr() as *const vks::VkAttachmentReference;
13306    }
13307
13308    pub fn set_depth_stencil_attachment<'m, 'a>(&mut self, depth_stencil_attachment: &'a AttachmentReference)
13309            where 'a: 's {
13310        self.raw.pDepthStencilAttachment = depth_stencil_attachment.as_raw();
13311    }
13312
13313    pub fn set_preserve_attachments<'m, 'a>(&mut self, preserve_attachments: &'a [u32])
13314            where 'a: 's {
13315        assert!(self.raw.preserveAttachmentCount == 0 || self.raw.preserveAttachmentCount == preserve_attachments.len() as _, 
13316            "count inconsistency found when specifying `SubpassDescription::preserve_attachments`.");
13317        self.raw.preserveAttachmentCount = preserve_attachments.len() as _;
13318        self.raw.pPreserveAttachments = preserve_attachments.as_ptr() as *const u32 as *const _;
13319    }
13320
13321    pub fn as_raw(&self) -> &vks::VkSubpassDescription {
13322        &self.raw
13323    }
13324}
13325
13326impl<'s> From<SubpassDescription<'s>> for vks::VkSubpassDescription {
13327    fn from(f: SubpassDescription<'s>) -> vks::VkSubpassDescription {
13328        f.raw
13329    }
13330}
13331
13332
13333/// A builder for `VkSubpassDescription`.
13334///
13335/// 
13336#[derive(Debug, Clone, Default)]
13337pub struct SubpassDescriptionBuilder<'b> {
13338    raw: vks::VkSubpassDescription,
13339    _p: PhantomData<&'b ()>, 
13340}
13341
13342impl<'b> SubpassDescriptionBuilder<'b> {
13343    pub fn new() -> SubpassDescriptionBuilder<'b> {
13344        SubpassDescriptionBuilder {
13345            raw: vks::VkSubpassDescription::default(),
13346            _p: PhantomData,
13347        }
13348    }
13349
13350    pub fn flags<'m>(mut self, flags: SubpassDescriptionFlags) -> SubpassDescriptionBuilder<'b> {
13351        self.raw.flags = flags.bits();
13352        self
13353    }
13354
13355    pub fn pipeline_bind_point<'m>(mut self, pipeline_bind_point: PipelineBindPoint) -> SubpassDescriptionBuilder<'b> {
13356        self.raw.pipelineBindPoint = pipeline_bind_point.into();
13357        self
13358    }
13359
13360    pub fn input_attachments<'m, 'a>(mut self, input_attachments: &'a [AttachmentReference]) -> SubpassDescriptionBuilder<'b>
13361            where 'a: 'b {
13362        assert!(self.raw.inputAttachmentCount == 0 || self.raw.inputAttachmentCount == input_attachments.len() as _, 
13363            "count inconsistency found when specifying `SubpassDescription::input_attachments`.");
13364        self.raw.inputAttachmentCount = input_attachments.len() as _;
13365        self.raw.pInputAttachments = input_attachments.as_ptr() as *const vks::VkAttachmentReference;
13366        self
13367    }
13368
13369    pub fn color_attachments<'m, 'a>(mut self, color_attachments: &'a [AttachmentReference]) -> SubpassDescriptionBuilder<'b>
13370            where 'a: 'b {
13371        assert!(self.raw.colorAttachmentCount == 0 || self.raw.colorAttachmentCount == color_attachments.len() as _, 
13372            "count inconsistency found when specifying `SubpassDescription::color_attachments`.");
13373        self.raw.colorAttachmentCount = color_attachments.len() as _;
13374        self.raw.pColorAttachments = color_attachments.as_ptr() as *const vks::VkAttachmentReference;
13375        self
13376    }
13377
13378    pub fn resolve_attachments<'m, 'a>(mut self, resolve_attachments: &'a [AttachmentReference]) -> SubpassDescriptionBuilder<'b>
13379            where 'a: 'b {
13380        assert!(self.raw.colorAttachmentCount == 0 || self.raw.colorAttachmentCount == resolve_attachments.len() as _, 
13381            "count inconsistency found when specifying `SubpassDescription::resolve_attachments`.");
13382        self.raw.colorAttachmentCount = resolve_attachments.len() as _;
13383        self.raw.pResolveAttachments = resolve_attachments.as_ptr() as *const vks::VkAttachmentReference;
13384        self
13385    }
13386
13387    pub fn depth_stencil_attachment<'m, 'a>(mut self, depth_stencil_attachment: &'a AttachmentReference) -> SubpassDescriptionBuilder<'b>
13388            where 'a: 'b {
13389        self.raw.pDepthStencilAttachment = depth_stencil_attachment.as_raw();
13390        self
13391    }
13392
13393    pub fn preserve_attachments<'m, 'a>(mut self, preserve_attachments: &'a [u32]) -> SubpassDescriptionBuilder<'b>
13394            where 'a: 'b {
13395        assert!(self.raw.preserveAttachmentCount == 0 || self.raw.preserveAttachmentCount == preserve_attachments.len() as _, 
13396            "count inconsistency found when specifying `SubpassDescription::preserve_attachments`.");
13397        self.raw.preserveAttachmentCount = preserve_attachments.len() as _;
13398        self.raw.pPreserveAttachments = preserve_attachments.as_ptr() as *const u32 as *const _;
13399        self
13400    }
13401
13402    pub fn get_flags<'a>(&'a self) -> SubpassDescriptionFlags {
13403        SubpassDescriptionFlags::from_bits(self.raw.flags)
13404            .expect("SubpassDescription::flags: error converting flags")
13405    }
13406
13407    pub fn get_pipeline_bind_point<'a>(&'a self) -> PipelineBindPoint {
13408        self.raw.pipelineBindPoint.into()
13409    }
13410
13411    pub fn get_input_attachments<'a>(&'a self) -> &'a [AttachmentReference] {
13412        unsafe { slice::from_raw_parts(self.raw.pInputAttachments as *const _, self.raw.inputAttachmentCount as usize) }
13413    }
13414
13415    pub fn get_color_attachments<'a>(&'a self) -> &'a [AttachmentReference] {
13416        unsafe { slice::from_raw_parts(self.raw.pColorAttachments as *const _, self.raw.colorAttachmentCount as usize) }
13417    }
13418
13419    pub fn get_resolve_attachments<'a>(&'a self) -> &'a [AttachmentReference] {
13420        unsafe { slice::from_raw_parts(self.raw.pResolveAttachments as *const _, self.raw.colorAttachmentCount as usize) }
13421    }
13422
13423    pub fn get_depth_stencil_attachment<'a>(&'a self) -> &'a AttachmentReference {
13424        unsafe { &*(self.raw.pDepthStencilAttachment as *const vks::VkAttachmentReference as *const _) }
13425    }
13426
13427    pub fn get_preserve_attachments<'a>(&'a self) -> &'a [u32] {
13428        unsafe { slice::from_raw_parts(self.raw.pPreserveAttachments as *const _, self.raw.preserveAttachmentCount as usize) }
13429    }
13430
13431    pub fn build(self) -> SubpassDescription<'b> {
13432        SubpassDescription {
13433            raw: self.raw,
13434            _p: PhantomData,
13435        }
13436    }
13437}
13438
13439
13440/// A `VkSubpassDependency`.
13441///
13442/// 
13443#[derive(Debug, Clone, Default)]
13444#[repr(C)]
13445pub struct SubpassDependency {
13446    raw: vks::VkSubpassDependency,
13447}
13448
13449impl SubpassDependency {
13450    pub fn builder() -> SubpassDependencyBuilder {
13451        SubpassDependencyBuilder::new()
13452    }
13453
13454    pub unsafe fn from_raw(raw: vks::VkSubpassDependency) -> SubpassDependency {
13455        SubpassDependency { raw, }
13456    }
13457
13458    pub fn src_subpass<'a>(&'a self) -> u32 {
13459        self.raw.srcSubpass.into()
13460    }
13461
13462    pub fn dst_subpass<'a>(&'a self) -> u32 {
13463        self.raw.dstSubpass.into()
13464    }
13465
13466    pub fn src_stage_mask<'a>(&'a self) -> PipelineStageFlags {
13467        PipelineStageFlags::from_bits(self.raw.srcStageMask)
13468            .expect("SubpassDependency::src_stage_mask: error converting flags")
13469    }
13470
13471    pub fn dst_stage_mask<'a>(&'a self) -> PipelineStageFlags {
13472        PipelineStageFlags::from_bits(self.raw.dstStageMask)
13473            .expect("SubpassDependency::dst_stage_mask: error converting flags")
13474    }
13475
13476    pub fn src_access_mask<'a>(&'a self) -> AccessFlags {
13477        AccessFlags::from_bits(self.raw.srcAccessMask)
13478            .expect("SubpassDependency::src_access_mask: error converting flags")
13479    }
13480
13481    pub fn dst_access_mask<'a>(&'a self) -> AccessFlags {
13482        AccessFlags::from_bits(self.raw.dstAccessMask)
13483            .expect("SubpassDependency::dst_access_mask: error converting flags")
13484    }
13485
13486    pub fn dependency_flags<'a>(&'a self) -> DependencyFlags {
13487        DependencyFlags::from_bits(self.raw.dependencyFlags)
13488            .expect("SubpassDependency::dependency_flags: error converting flags")
13489    }
13490
13491    pub fn set_src_subpass<'m>(&mut self, src_subpass: u32) {
13492        self.raw.srcSubpass = src_subpass.into();
13493    }
13494
13495    pub fn set_dst_subpass<'m>(&mut self, dst_subpass: u32) {
13496        self.raw.dstSubpass = dst_subpass.into();
13497    }
13498
13499    pub fn set_src_stage_mask<'m>(&mut self, src_stage_mask: PipelineStageFlags) {
13500        self.raw.srcStageMask = src_stage_mask.bits();
13501    }
13502
13503    pub fn set_dst_stage_mask<'m>(&mut self, dst_stage_mask: PipelineStageFlags) {
13504        self.raw.dstStageMask = dst_stage_mask.bits();
13505    }
13506
13507    pub fn set_src_access_mask<'m>(&mut self, src_access_mask: AccessFlags) {
13508        self.raw.srcAccessMask = src_access_mask.bits();
13509    }
13510
13511    pub fn set_dst_access_mask<'m>(&mut self, dst_access_mask: AccessFlags) {
13512        self.raw.dstAccessMask = dst_access_mask.bits();
13513    }
13514
13515    pub fn set_dependency_flags<'m>(&mut self, dependency_flags: DependencyFlags) {
13516        self.raw.dependencyFlags = dependency_flags.bits();
13517    }
13518
13519    pub fn as_raw(&self) -> &vks::VkSubpassDependency {
13520        &self.raw
13521    }
13522}
13523
13524impl From<SubpassDependency> for vks::VkSubpassDependency {
13525    fn from(f: SubpassDependency) -> vks::VkSubpassDependency {
13526        f.raw
13527    }
13528}
13529
13530
13531/// A builder for `VkSubpassDependency`.
13532///
13533/// 
13534#[derive(Debug, Clone, Default)]
13535pub struct SubpassDependencyBuilder {
13536    raw: vks::VkSubpassDependency,
13537}
13538
13539impl SubpassDependencyBuilder {
13540    pub fn new() -> SubpassDependencyBuilder {
13541        SubpassDependencyBuilder {
13542            raw: vks::VkSubpassDependency::default(),
13543        }
13544    }
13545
13546    pub fn src_subpass<'m>(mut self, src_subpass: u32) -> SubpassDependencyBuilder {
13547        self.raw.srcSubpass = src_subpass.into();
13548        self
13549    }
13550
13551    pub fn dst_subpass<'m>(mut self, dst_subpass: u32) -> SubpassDependencyBuilder {
13552        self.raw.dstSubpass = dst_subpass.into();
13553        self
13554    }
13555
13556    pub fn src_stage_mask<'m>(mut self, src_stage_mask: PipelineStageFlags) -> SubpassDependencyBuilder {
13557        self.raw.srcStageMask = src_stage_mask.bits();
13558        self
13559    }
13560
13561    pub fn dst_stage_mask<'m>(mut self, dst_stage_mask: PipelineStageFlags) -> SubpassDependencyBuilder {
13562        self.raw.dstStageMask = dst_stage_mask.bits();
13563        self
13564    }
13565
13566    pub fn src_access_mask<'m>(mut self, src_access_mask: AccessFlags) -> SubpassDependencyBuilder {
13567        self.raw.srcAccessMask = src_access_mask.bits();
13568        self
13569    }
13570
13571    pub fn dst_access_mask<'m>(mut self, dst_access_mask: AccessFlags) -> SubpassDependencyBuilder {
13572        self.raw.dstAccessMask = dst_access_mask.bits();
13573        self
13574    }
13575
13576    pub fn dependency_flags<'m>(mut self, dependency_flags: DependencyFlags) -> SubpassDependencyBuilder {
13577        self.raw.dependencyFlags = dependency_flags.bits();
13578        self
13579    }
13580
13581    pub fn get_src_subpass<'a>(&'a self) -> u32 {
13582        self.raw.srcSubpass.into()
13583    }
13584
13585    pub fn get_dst_subpass<'a>(&'a self) -> u32 {
13586        self.raw.dstSubpass.into()
13587    }
13588
13589    pub fn get_src_stage_mask<'a>(&'a self) -> PipelineStageFlags {
13590        PipelineStageFlags::from_bits(self.raw.srcStageMask)
13591            .expect("SubpassDependency::src_stage_mask: error converting flags")
13592    }
13593
13594    pub fn get_dst_stage_mask<'a>(&'a self) -> PipelineStageFlags {
13595        PipelineStageFlags::from_bits(self.raw.dstStageMask)
13596            .expect("SubpassDependency::dst_stage_mask: error converting flags")
13597    }
13598
13599    pub fn get_src_access_mask<'a>(&'a self) -> AccessFlags {
13600        AccessFlags::from_bits(self.raw.srcAccessMask)
13601            .expect("SubpassDependency::src_access_mask: error converting flags")
13602    }
13603
13604    pub fn get_dst_access_mask<'a>(&'a self) -> AccessFlags {
13605        AccessFlags::from_bits(self.raw.dstAccessMask)
13606            .expect("SubpassDependency::dst_access_mask: error converting flags")
13607    }
13608
13609    pub fn get_dependency_flags<'a>(&'a self) -> DependencyFlags {
13610        DependencyFlags::from_bits(self.raw.dependencyFlags)
13611            .expect("SubpassDependency::dependency_flags: error converting flags")
13612    }
13613
13614    pub fn build(self) -> SubpassDependency {
13615        SubpassDependency {
13616            raw: self.raw,
13617        }
13618    }
13619}
13620
13621
13622/// A `VkRenderPassCreateInfo`.
13623///
13624/// 
13625#[derive(Debug, Clone, Default)]
13626#[repr(C)]
13627pub struct RenderPassCreateInfo<'s> {
13628    raw: vks::VkRenderPassCreateInfo,
13629    _p: PhantomData<&'s ()>,
13630}
13631
13632impl<'s> RenderPassCreateInfo<'s> {
13633    pub fn builder<'b>() -> RenderPassCreateInfoBuilder<'b> {
13634        RenderPassCreateInfoBuilder::new()
13635    }
13636
13637    pub unsafe fn from_raw(raw: vks::VkRenderPassCreateInfo) -> RenderPassCreateInfo<'s> {
13638        RenderPassCreateInfo { raw, _p: PhantomData }
13639    }
13640
13641    pub fn next<'a>(&'a self) -> *const c_void {
13642        self.raw.pNext
13643    }
13644
13645    pub fn flags<'a>(&'a self) -> RenderPassCreateFlags {
13646        RenderPassCreateFlags::from_bits(self.raw.flags)
13647            .expect("RenderPassCreateInfo::flags: error converting flags")
13648    }
13649
13650    pub fn attachments<'a>(&'a self) -> &'a [AttachmentDescription] {
13651        unsafe { slice::from_raw_parts(self.raw.pAttachments as *const _, self.raw.attachmentCount as usize) }
13652    }
13653
13654    pub fn subpasses<'a>(&'a self) -> &'a [SubpassDescription] {
13655        unsafe { slice::from_raw_parts(self.raw.pSubpasses as *const _, self.raw.subpassCount as usize) }
13656    }
13657
13658    pub fn dependencies<'a>(&'a self) -> &'a [SubpassDependency] {
13659        unsafe { slice::from_raw_parts(self.raw.pDependencies as *const _, self.raw.dependencyCount as usize) }
13660    }
13661
13662    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
13663        self.raw.pNext = next;
13664    }
13665
13666    pub fn set_flags<'m>(&mut self, flags: RenderPassCreateFlags) {
13667        self.raw.flags = flags.bits();
13668    }
13669
13670    pub fn set_attachments<'m, 'a>(&mut self, attachments: &'a [AttachmentDescription])
13671            where 'a: 's {
13672        assert!(self.raw.attachmentCount == 0 || self.raw.attachmentCount == attachments.len() as _, 
13673            "count inconsistency found when specifying `RenderPassCreateInfo::attachments`.");
13674        self.raw.attachmentCount = attachments.len() as _;
13675        self.raw.pAttachments = attachments.as_ptr() as *const vks::VkAttachmentDescription;
13676    }
13677
13678    pub fn set_subpasses<'m, 'a>(&mut self, subpasses: &'a [SubpassDescription])
13679            where 'a: 's {
13680        assert!(self.raw.subpassCount == 0 || self.raw.subpassCount == subpasses.len() as _, 
13681            "count inconsistency found when specifying `RenderPassCreateInfo::subpasses`.");
13682        self.raw.subpassCount = subpasses.len() as _;
13683        self.raw.pSubpasses = subpasses.as_ptr() as *const vks::VkSubpassDescription;
13684    }
13685
13686    pub fn set_dependencies<'m, 'a>(&mut self, dependencies: &'a [SubpassDependency])
13687            where 'a: 's {
13688        assert!(self.raw.dependencyCount == 0 || self.raw.dependencyCount == dependencies.len() as _, 
13689            "count inconsistency found when specifying `RenderPassCreateInfo::dependencies`.");
13690        self.raw.dependencyCount = dependencies.len() as _;
13691        self.raw.pDependencies = dependencies.as_ptr() as *const vks::VkSubpassDependency;
13692    }
13693
13694    pub fn as_raw(&self) -> &vks::VkRenderPassCreateInfo {
13695        &self.raw
13696    }
13697}
13698
13699impl<'s> From<RenderPassCreateInfo<'s>> for vks::VkRenderPassCreateInfo {
13700    fn from(f: RenderPassCreateInfo<'s>) -> vks::VkRenderPassCreateInfo {
13701        f.raw
13702    }
13703}
13704
13705
13706/// A builder for `VkRenderPassCreateInfo`.
13707///
13708/// 
13709#[derive(Debug, Clone, Default)]
13710pub struct RenderPassCreateInfoBuilder<'b> {
13711    raw: vks::VkRenderPassCreateInfo,
13712    _p: PhantomData<&'b ()>, 
13713}
13714
13715impl<'b> RenderPassCreateInfoBuilder<'b> {
13716    pub fn new() -> RenderPassCreateInfoBuilder<'b> {
13717        RenderPassCreateInfoBuilder {
13718            raw: vks::VkRenderPassCreateInfo::default(),
13719            _p: PhantomData,
13720        }
13721    }
13722
13723    pub unsafe fn next<'m>(mut self, next: *const c_void) -> RenderPassCreateInfoBuilder<'b> {
13724        self.raw.pNext = next;
13725        self
13726    }
13727
13728    pub fn flags<'m>(mut self, flags: RenderPassCreateFlags) -> RenderPassCreateInfoBuilder<'b> {
13729        self.raw.flags = flags.bits();
13730        self
13731    }
13732
13733    pub fn attachments<'m, 'a>(mut self, attachments: &'a [AttachmentDescription]) -> RenderPassCreateInfoBuilder<'b>
13734            where 'a: 'b {
13735        assert!(self.raw.attachmentCount == 0 || self.raw.attachmentCount == attachments.len() as _, 
13736            "count inconsistency found when specifying `RenderPassCreateInfo::attachments`.");
13737        self.raw.attachmentCount = attachments.len() as _;
13738        self.raw.pAttachments = attachments.as_ptr() as *const vks::VkAttachmentDescription;
13739        self
13740    }
13741
13742    pub fn subpasses<'m, 'a>(mut self, subpasses: &'a [SubpassDescription]) -> RenderPassCreateInfoBuilder<'b>
13743            where 'a: 'b {
13744        assert!(self.raw.subpassCount == 0 || self.raw.subpassCount == subpasses.len() as _, 
13745            "count inconsistency found when specifying `RenderPassCreateInfo::subpasses`.");
13746        self.raw.subpassCount = subpasses.len() as _;
13747        self.raw.pSubpasses = subpasses.as_ptr() as *const vks::VkSubpassDescription;
13748        self
13749    }
13750
13751    pub fn dependencies<'m, 'a>(mut self, dependencies: &'a [SubpassDependency]) -> RenderPassCreateInfoBuilder<'b>
13752            where 'a: 'b {
13753        assert!(self.raw.dependencyCount == 0 || self.raw.dependencyCount == dependencies.len() as _, 
13754            "count inconsistency found when specifying `RenderPassCreateInfo::dependencies`.");
13755        self.raw.dependencyCount = dependencies.len() as _;
13756        self.raw.pDependencies = dependencies.as_ptr() as *const vks::VkSubpassDependency;
13757        self
13758    }
13759
13760    pub fn get_next<'a>(&'a self) -> *const c_void {
13761        self.raw.pNext
13762    }
13763
13764    pub fn get_flags<'a>(&'a self) -> RenderPassCreateFlags {
13765        RenderPassCreateFlags::from_bits(self.raw.flags)
13766            .expect("RenderPassCreateInfo::flags: error converting flags")
13767    }
13768
13769    pub fn get_attachments<'a>(&'a self) -> &'a [AttachmentDescription] {
13770        unsafe { slice::from_raw_parts(self.raw.pAttachments as *const _, self.raw.attachmentCount as usize) }
13771    }
13772
13773    pub fn get_subpasses<'a>(&'a self) -> &'a [SubpassDescription] {
13774        unsafe { slice::from_raw_parts(self.raw.pSubpasses as *const _, self.raw.subpassCount as usize) }
13775    }
13776
13777    pub fn get_dependencies<'a>(&'a self) -> &'a [SubpassDependency] {
13778        unsafe { slice::from_raw_parts(self.raw.pDependencies as *const _, self.raw.dependencyCount as usize) }
13779    }
13780
13781    pub fn build(self) -> RenderPassCreateInfo<'b> {
13782        RenderPassCreateInfo {
13783            raw: self.raw,
13784            _p: PhantomData,
13785        }
13786    }
13787}
13788
13789
13790/// A `VkEventCreateInfo`.
13791///
13792/// 
13793#[derive(Debug, Clone, Default)]
13794#[repr(C)]
13795pub struct EventCreateInfo<'s> {
13796    raw: vks::VkEventCreateInfo,
13797    _p: PhantomData<&'s ()>,
13798}
13799
13800impl<'s> EventCreateInfo<'s> {
13801    pub fn builder<'b>() -> EventCreateInfoBuilder<'b> {
13802        EventCreateInfoBuilder::new()
13803    }
13804
13805    pub unsafe fn from_raw(raw: vks::VkEventCreateInfo) -> EventCreateInfo<'s> {
13806        EventCreateInfo { raw, _p: PhantomData }
13807    }
13808
13809    pub fn next<'a>(&'a self) -> *const c_void {
13810        self.raw.pNext
13811    }
13812
13813    pub fn flags<'a>(&'a self) -> EventCreateFlags {
13814        EventCreateFlags::from_bits(self.raw.flags)
13815            .expect("EventCreateInfo::flags: error converting flags")
13816    }
13817
13818    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
13819        self.raw.pNext = next;
13820    }
13821
13822    pub fn set_flags<'m>(&mut self, flags: EventCreateFlags) {
13823        self.raw.flags = flags.bits();
13824    }
13825
13826    pub fn as_raw(&self) -> &vks::VkEventCreateInfo {
13827        &self.raw
13828    }
13829}
13830
13831impl<'s> From<EventCreateInfo<'s>> for vks::VkEventCreateInfo {
13832    fn from(f: EventCreateInfo<'s>) -> vks::VkEventCreateInfo {
13833        f.raw
13834    }
13835}
13836
13837
13838/// A builder for `VkEventCreateInfo`.
13839///
13840/// 
13841#[derive(Debug, Clone, Default)]
13842pub struct EventCreateInfoBuilder<'b> {
13843    raw: vks::VkEventCreateInfo,
13844    _p: PhantomData<&'b ()>, 
13845}
13846
13847impl<'b> EventCreateInfoBuilder<'b> {
13848    pub fn new() -> EventCreateInfoBuilder<'b> {
13849        EventCreateInfoBuilder {
13850            raw: vks::VkEventCreateInfo::default(),
13851            _p: PhantomData,
13852        }
13853    }
13854
13855    pub unsafe fn next<'m>(mut self, next: *const c_void) -> EventCreateInfoBuilder<'b> {
13856        self.raw.pNext = next;
13857        self
13858    }
13859
13860    pub fn flags<'m>(mut self, flags: EventCreateFlags) -> EventCreateInfoBuilder<'b> {
13861        self.raw.flags = flags.bits();
13862        self
13863    }
13864
13865    pub fn get_next<'a>(&'a self) -> *const c_void {
13866        self.raw.pNext
13867    }
13868
13869    pub fn get_flags<'a>(&'a self) -> EventCreateFlags {
13870        EventCreateFlags::from_bits(self.raw.flags)
13871            .expect("EventCreateInfo::flags: error converting flags")
13872    }
13873
13874    pub fn build(self) -> EventCreateInfo<'b> {
13875        EventCreateInfo {
13876            raw: self.raw,
13877            _p: PhantomData,
13878        }
13879    }
13880}
13881
13882
13883/// A `VkFenceCreateInfo`.
13884///
13885/// 
13886#[derive(Debug, Clone, Default)]
13887#[repr(C)]
13888pub struct FenceCreateInfo<'s> {
13889    raw: vks::VkFenceCreateInfo,
13890    _p: PhantomData<&'s ()>,
13891}
13892
13893impl<'s> FenceCreateInfo<'s> {
13894    pub fn builder<'b>() -> FenceCreateInfoBuilder<'b> {
13895        FenceCreateInfoBuilder::new()
13896    }
13897
13898    pub unsafe fn from_raw(raw: vks::VkFenceCreateInfo) -> FenceCreateInfo<'s> {
13899        FenceCreateInfo { raw, _p: PhantomData }
13900    }
13901
13902    pub fn next<'a>(&'a self) -> *const c_void {
13903        self.raw.pNext
13904    }
13905
13906    pub fn flags<'a>(&'a self) -> FenceCreateFlags {
13907        FenceCreateFlags::from_bits(self.raw.flags)
13908            .expect("FenceCreateInfo::flags: error converting flags")
13909    }
13910
13911    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
13912        self.raw.pNext = next;
13913    }
13914
13915    pub fn set_flags<'m>(&mut self, flags: FenceCreateFlags) {
13916        self.raw.flags = flags.bits();
13917    }
13918
13919    pub fn as_raw(&self) -> &vks::VkFenceCreateInfo {
13920        &self.raw
13921    }
13922}
13923
13924impl<'s> From<FenceCreateInfo<'s>> for vks::VkFenceCreateInfo {
13925    fn from(f: FenceCreateInfo<'s>) -> vks::VkFenceCreateInfo {
13926        f.raw
13927    }
13928}
13929
13930
13931/// A builder for `VkFenceCreateInfo`.
13932///
13933/// 
13934#[derive(Debug, Clone, Default)]
13935pub struct FenceCreateInfoBuilder<'b> {
13936    raw: vks::VkFenceCreateInfo,
13937    _p: PhantomData<&'b ()>, 
13938}
13939
13940impl<'b> FenceCreateInfoBuilder<'b> {
13941    pub fn new() -> FenceCreateInfoBuilder<'b> {
13942        FenceCreateInfoBuilder {
13943            raw: vks::VkFenceCreateInfo::default(),
13944            _p: PhantomData,
13945        }
13946    }
13947
13948    pub unsafe fn next<'m>(mut self, next: *const c_void) -> FenceCreateInfoBuilder<'b> {
13949        self.raw.pNext = next;
13950        self
13951    }
13952
13953    pub fn flags<'m>(mut self, flags: FenceCreateFlags) -> FenceCreateInfoBuilder<'b> {
13954        self.raw.flags = flags.bits();
13955        self
13956    }
13957
13958    pub fn get_next<'a>(&'a self) -> *const c_void {
13959        self.raw.pNext
13960    }
13961
13962    pub fn get_flags<'a>(&'a self) -> FenceCreateFlags {
13963        FenceCreateFlags::from_bits(self.raw.flags)
13964            .expect("FenceCreateInfo::flags: error converting flags")
13965    }
13966
13967    pub fn build(self) -> FenceCreateInfo<'b> {
13968        FenceCreateInfo {
13969            raw: self.raw,
13970            _p: PhantomData,
13971        }
13972    }
13973}
13974
13975
13976/// A `VkPhysicalDeviceFeatures`.
13977///
13978/// 
13979#[derive(Debug, Clone, Default)]
13980#[repr(C)]
13981pub struct PhysicalDeviceFeatures {
13982    raw: vks::VkPhysicalDeviceFeatures,
13983}
13984
13985impl PhysicalDeviceFeatures {
13986    pub fn builder() -> PhysicalDeviceFeaturesBuilder {
13987        PhysicalDeviceFeaturesBuilder::new()
13988    }
13989
13990    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceFeatures) -> PhysicalDeviceFeatures {
13991        PhysicalDeviceFeatures { raw, }
13992    }
13993
13994    pub fn robust_buffer_access<'a>(&'a self) -> bool {
13995        self.raw.robustBufferAccess != 0
13996    }
13997
13998    pub fn full_draw_index_uint_32<'a>(&'a self) -> bool {
13999        self.raw.fullDrawIndexUint32 != 0
14000    }
14001
14002    pub fn image_cube_array<'a>(&'a self) -> bool {
14003        self.raw.imageCubeArray != 0
14004    }
14005
14006    pub fn independent_blend<'a>(&'a self) -> bool {
14007        self.raw.independentBlend != 0
14008    }
14009
14010    pub fn geometry_shader<'a>(&'a self) -> bool {
14011        self.raw.geometryShader != 0
14012    }
14013
14014    pub fn tessellation_shader<'a>(&'a self) -> bool {
14015        self.raw.tessellationShader != 0
14016    }
14017
14018    pub fn sample_rate_shading<'a>(&'a self) -> bool {
14019        self.raw.sampleRateShading != 0
14020    }
14021
14022    pub fn dual_src_blend<'a>(&'a self) -> bool {
14023        self.raw.dualSrcBlend != 0
14024    }
14025
14026    pub fn logic_op<'a>(&'a self) -> bool {
14027        self.raw.logicOp != 0
14028    }
14029
14030    pub fn multi_draw_indirect<'a>(&'a self) -> bool {
14031        self.raw.multiDrawIndirect != 0
14032    }
14033
14034    pub fn draw_indirect_first_instance<'a>(&'a self) -> bool {
14035        self.raw.drawIndirectFirstInstance != 0
14036    }
14037
14038    pub fn depth_clamp<'a>(&'a self) -> bool {
14039        self.raw.depthClamp != 0
14040    }
14041
14042    pub fn depth_bias_clamp<'a>(&'a self) -> bool {
14043        self.raw.depthBiasClamp != 0
14044    }
14045
14046    pub fn fill_mode_non_solid<'a>(&'a self) -> bool {
14047        self.raw.fillModeNonSolid != 0
14048    }
14049
14050    pub fn depth_bounds<'a>(&'a self) -> bool {
14051        self.raw.depthBounds != 0
14052    }
14053
14054    pub fn wide_lines<'a>(&'a self) -> bool {
14055        self.raw.wideLines != 0
14056    }
14057
14058    pub fn large_points<'a>(&'a self) -> bool {
14059        self.raw.largePoints != 0
14060    }
14061
14062    pub fn alpha_to_one<'a>(&'a self) -> bool {
14063        self.raw.alphaToOne != 0
14064    }
14065
14066    pub fn multi_viewport<'a>(&'a self) -> bool {
14067        self.raw.multiViewport != 0
14068    }
14069
14070    pub fn sampler_anisotropy<'a>(&'a self) -> bool {
14071        self.raw.samplerAnisotropy != 0
14072    }
14073
14074    pub fn texture_compression_etc2<'a>(&'a self) -> bool {
14075        self.raw.textureCompressionETC2 != 0
14076    }
14077
14078    pub fn texture_compression_astcldr<'a>(&'a self) -> bool {
14079        self.raw.textureCompressionASTC_LDR != 0
14080    }
14081
14082    pub fn texture_compression_bc<'a>(&'a self) -> bool {
14083        self.raw.textureCompressionBC != 0
14084    }
14085
14086    pub fn occlusion_query_precise<'a>(&'a self) -> bool {
14087        self.raw.occlusionQueryPrecise != 0
14088    }
14089
14090    pub fn pipeline_statistics_query<'a>(&'a self) -> bool {
14091        self.raw.pipelineStatisticsQuery != 0
14092    }
14093
14094    pub fn vertex_pipeline_stores_and_atomics<'a>(&'a self) -> bool {
14095        self.raw.vertexPipelineStoresAndAtomics != 0
14096    }
14097
14098    pub fn fragment_stores_and_atomics<'a>(&'a self) -> bool {
14099        self.raw.fragmentStoresAndAtomics != 0
14100    }
14101
14102    pub fn shader_tessellation_and_geometry_point_size<'a>(&'a self) -> bool {
14103        self.raw.shaderTessellationAndGeometryPointSize != 0
14104    }
14105
14106    pub fn shader_image_gather_extended<'a>(&'a self) -> bool {
14107        self.raw.shaderImageGatherExtended != 0
14108    }
14109
14110    pub fn shader_storage_image_extended_formats<'a>(&'a self) -> bool {
14111        self.raw.shaderStorageImageExtendedFormats != 0
14112    }
14113
14114    pub fn shader_storage_image_multisample<'a>(&'a self) -> bool {
14115        self.raw.shaderStorageImageMultisample != 0
14116    }
14117
14118    pub fn shader_storage_image_read_without_format<'a>(&'a self) -> bool {
14119        self.raw.shaderStorageImageReadWithoutFormat != 0
14120    }
14121
14122    pub fn shader_storage_image_write_without_format<'a>(&'a self) -> bool {
14123        self.raw.shaderStorageImageWriteWithoutFormat != 0
14124    }
14125
14126    pub fn shader_uniform_buffer_array_dynamic_indexing<'a>(&'a self) -> bool {
14127        self.raw.shaderUniformBufferArrayDynamicIndexing != 0
14128    }
14129
14130    pub fn shader_sampled_image_array_dynamic_indexing<'a>(&'a self) -> bool {
14131        self.raw.shaderSampledImageArrayDynamicIndexing != 0
14132    }
14133
14134    pub fn shader_storage_buffer_array_dynamic_indexing<'a>(&'a self) -> bool {
14135        self.raw.shaderStorageBufferArrayDynamicIndexing != 0
14136    }
14137
14138    pub fn shader_storage_image_array_dynamic_indexing<'a>(&'a self) -> bool {
14139        self.raw.shaderStorageImageArrayDynamicIndexing != 0
14140    }
14141
14142    pub fn shader_clip_distance<'a>(&'a self) -> bool {
14143        self.raw.shaderClipDistance != 0
14144    }
14145
14146    pub fn shader_cull_distance<'a>(&'a self) -> bool {
14147        self.raw.shaderCullDistance != 0
14148    }
14149
14150    pub fn shader_float_64<'a>(&'a self) -> bool {
14151        self.raw.shaderFloat64 != 0
14152    }
14153
14154    pub fn shader_int_64<'a>(&'a self) -> bool {
14155        self.raw.shaderInt64 != 0
14156    }
14157
14158    pub fn shader_int_16<'a>(&'a self) -> bool {
14159        self.raw.shaderInt16 != 0
14160    }
14161
14162    pub fn shader_resource_residency<'a>(&'a self) -> bool {
14163        self.raw.shaderResourceResidency != 0
14164    }
14165
14166    pub fn shader_resource_min_lod<'a>(&'a self) -> bool {
14167        self.raw.shaderResourceMinLod != 0
14168    }
14169
14170    pub fn sparse_binding<'a>(&'a self) -> bool {
14171        self.raw.sparseBinding != 0
14172    }
14173
14174    pub fn sparse_residency_buffer<'a>(&'a self) -> bool {
14175        self.raw.sparseResidencyBuffer != 0
14176    }
14177
14178    pub fn sparse_residency_image_2d<'a>(&'a self) -> bool {
14179        self.raw.sparseResidencyImage2D != 0
14180    }
14181
14182    pub fn sparse_residency_image_3d<'a>(&'a self) -> bool {
14183        self.raw.sparseResidencyImage3D != 0
14184    }
14185
14186    pub fn sparse_residency_2samples<'a>(&'a self) -> bool {
14187        self.raw.sparseResidency2Samples != 0
14188    }
14189
14190    pub fn sparse_residency_4samples<'a>(&'a self) -> bool {
14191        self.raw.sparseResidency4Samples != 0
14192    }
14193
14194    pub fn sparse_residency_8samples<'a>(&'a self) -> bool {
14195        self.raw.sparseResidency8Samples != 0
14196    }
14197
14198    pub fn sparse_residency_16_samples<'a>(&'a self) -> bool {
14199        self.raw.sparseResidency16Samples != 0
14200    }
14201
14202    pub fn sparse_residency_aliased<'a>(&'a self) -> bool {
14203        self.raw.sparseResidencyAliased != 0
14204    }
14205
14206    pub fn variable_multisample_rate<'a>(&'a self) -> bool {
14207        self.raw.variableMultisampleRate != 0
14208    }
14209
14210    pub fn inherited_queries<'a>(&'a self) -> bool {
14211        self.raw.inheritedQueries != 0
14212    }
14213
14214    pub fn set_robust_buffer_access<'m>(&mut self, robust_buffer_access: bool) {
14215        self.raw.robustBufferAccess = robust_buffer_access as u32;
14216    }
14217
14218    pub fn set_full_draw_index_uint_32<'m>(&mut self, full_draw_index_uint_32: bool) {
14219        self.raw.fullDrawIndexUint32 = full_draw_index_uint_32 as u32;
14220    }
14221
14222    pub fn set_image_cube_array<'m>(&mut self, image_cube_array: bool) {
14223        self.raw.imageCubeArray = image_cube_array as u32;
14224    }
14225
14226    pub fn set_independent_blend<'m>(&mut self, independent_blend: bool) {
14227        self.raw.independentBlend = independent_blend as u32;
14228    }
14229
14230    pub fn set_geometry_shader<'m>(&mut self, geometry_shader: bool) {
14231        self.raw.geometryShader = geometry_shader as u32;
14232    }
14233
14234    pub fn set_tessellation_shader<'m>(&mut self, tessellation_shader: bool) {
14235        self.raw.tessellationShader = tessellation_shader as u32;
14236    }
14237
14238    pub fn set_sample_rate_shading<'m>(&mut self, sample_rate_shading: bool) {
14239        self.raw.sampleRateShading = sample_rate_shading as u32;
14240    }
14241
14242    pub fn set_dual_src_blend<'m>(&mut self, dual_src_blend: bool) {
14243        self.raw.dualSrcBlend = dual_src_blend as u32;
14244    }
14245
14246    pub fn set_logic_op<'m>(&mut self, logic_op: bool) {
14247        self.raw.logicOp = logic_op as u32;
14248    }
14249
14250    pub fn set_multi_draw_indirect<'m>(&mut self, multi_draw_indirect: bool) {
14251        self.raw.multiDrawIndirect = multi_draw_indirect as u32;
14252    }
14253
14254    pub fn set_draw_indirect_first_instance<'m>(&mut self, draw_indirect_first_instance: bool) {
14255        self.raw.drawIndirectFirstInstance = draw_indirect_first_instance as u32;
14256    }
14257
14258    pub fn set_depth_clamp<'m>(&mut self, depth_clamp: bool) {
14259        self.raw.depthClamp = depth_clamp as u32;
14260    }
14261
14262    pub fn set_depth_bias_clamp<'m>(&mut self, depth_bias_clamp: bool) {
14263        self.raw.depthBiasClamp = depth_bias_clamp as u32;
14264    }
14265
14266    pub fn set_fill_mode_non_solid<'m>(&mut self, fill_mode_non_solid: bool) {
14267        self.raw.fillModeNonSolid = fill_mode_non_solid as u32;
14268    }
14269
14270    pub fn set_depth_bounds<'m>(&mut self, depth_bounds: bool) {
14271        self.raw.depthBounds = depth_bounds as u32;
14272    }
14273
14274    pub fn set_wide_lines<'m>(&mut self, wide_lines: bool) {
14275        self.raw.wideLines = wide_lines as u32;
14276    }
14277
14278    pub fn set_large_points<'m>(&mut self, large_points: bool) {
14279        self.raw.largePoints = large_points as u32;
14280    }
14281
14282    pub fn set_alpha_to_one<'m>(&mut self, alpha_to_one: bool) {
14283        self.raw.alphaToOne = alpha_to_one as u32;
14284    }
14285
14286    pub fn set_multi_viewport<'m>(&mut self, multi_viewport: bool) {
14287        self.raw.multiViewport = multi_viewport as u32;
14288    }
14289
14290    pub fn set_sampler_anisotropy<'m>(&mut self, sampler_anisotropy: bool) {
14291        self.raw.samplerAnisotropy = sampler_anisotropy as u32;
14292    }
14293
14294    pub fn set_texture_compression_etc2<'m>(&mut self, texture_compression_etc2: bool) {
14295        self.raw.textureCompressionETC2 = texture_compression_etc2 as u32;
14296    }
14297
14298    pub fn set_texture_compression_astcldr<'m>(&mut self, texture_compression_astcldr: bool) {
14299        self.raw.textureCompressionASTC_LDR = texture_compression_astcldr as u32;
14300    }
14301
14302    pub fn set_texture_compression_bc<'m>(&mut self, texture_compression_bc: bool) {
14303        self.raw.textureCompressionBC = texture_compression_bc as u32;
14304    }
14305
14306    pub fn set_occlusion_query_precise<'m>(&mut self, occlusion_query_precise: bool) {
14307        self.raw.occlusionQueryPrecise = occlusion_query_precise as u32;
14308    }
14309
14310    pub fn set_pipeline_statistics_query<'m>(&mut self, pipeline_statistics_query: bool) {
14311        self.raw.pipelineStatisticsQuery = pipeline_statistics_query as u32;
14312    }
14313
14314    pub fn set_vertex_pipeline_stores_and_atomics<'m>(&mut self, vertex_pipeline_stores_and_atomics: bool) {
14315        self.raw.vertexPipelineStoresAndAtomics = vertex_pipeline_stores_and_atomics as u32;
14316    }
14317
14318    pub fn set_fragment_stores_and_atomics<'m>(&mut self, fragment_stores_and_atomics: bool) {
14319        self.raw.fragmentStoresAndAtomics = fragment_stores_and_atomics as u32;
14320    }
14321
14322    pub fn set_shader_tessellation_and_geometry_point_size<'m>(&mut self, shader_tessellation_and_geometry_point_size: bool) {
14323        self.raw.shaderTessellationAndGeometryPointSize = shader_tessellation_and_geometry_point_size as u32;
14324    }
14325
14326    pub fn set_shader_image_gather_extended<'m>(&mut self, shader_image_gather_extended: bool) {
14327        self.raw.shaderImageGatherExtended = shader_image_gather_extended as u32;
14328    }
14329
14330    pub fn set_shader_storage_image_extended_formats<'m>(&mut self, shader_storage_image_extended_formats: bool) {
14331        self.raw.shaderStorageImageExtendedFormats = shader_storage_image_extended_formats as u32;
14332    }
14333
14334    pub fn set_shader_storage_image_multisample<'m>(&mut self, shader_storage_image_multisample: bool) {
14335        self.raw.shaderStorageImageMultisample = shader_storage_image_multisample as u32;
14336    }
14337
14338    pub fn set_shader_storage_image_read_without_format<'m>(&mut self, shader_storage_image_read_without_format: bool) {
14339        self.raw.shaderStorageImageReadWithoutFormat = shader_storage_image_read_without_format as u32;
14340    }
14341
14342    pub fn set_shader_storage_image_write_without_format<'m>(&mut self, shader_storage_image_write_without_format: bool) {
14343        self.raw.shaderStorageImageWriteWithoutFormat = shader_storage_image_write_without_format as u32;
14344    }
14345
14346    pub fn set_shader_uniform_buffer_array_dynamic_indexing<'m>(&mut self, shader_uniform_buffer_array_dynamic_indexing: bool) {
14347        self.raw.shaderUniformBufferArrayDynamicIndexing = shader_uniform_buffer_array_dynamic_indexing as u32;
14348    }
14349
14350    pub fn set_shader_sampled_image_array_dynamic_indexing<'m>(&mut self, shader_sampled_image_array_dynamic_indexing: bool) {
14351        self.raw.shaderSampledImageArrayDynamicIndexing = shader_sampled_image_array_dynamic_indexing as u32;
14352    }
14353
14354    pub fn set_shader_storage_buffer_array_dynamic_indexing<'m>(&mut self, shader_storage_buffer_array_dynamic_indexing: bool) {
14355        self.raw.shaderStorageBufferArrayDynamicIndexing = shader_storage_buffer_array_dynamic_indexing as u32;
14356    }
14357
14358    pub fn set_shader_storage_image_array_dynamic_indexing<'m>(&mut self, shader_storage_image_array_dynamic_indexing: bool) {
14359        self.raw.shaderStorageImageArrayDynamicIndexing = shader_storage_image_array_dynamic_indexing as u32;
14360    }
14361
14362    pub fn set_shader_clip_distance<'m>(&mut self, shader_clip_distance: bool) {
14363        self.raw.shaderClipDistance = shader_clip_distance as u32;
14364    }
14365
14366    pub fn set_shader_cull_distance<'m>(&mut self, shader_cull_distance: bool) {
14367        self.raw.shaderCullDistance = shader_cull_distance as u32;
14368    }
14369
14370    pub fn set_shader_float_64<'m>(&mut self, shader_float_64: bool) {
14371        self.raw.shaderFloat64 = shader_float_64 as u32;
14372    }
14373
14374    pub fn set_shader_int_64<'m>(&mut self, shader_int_64: bool) {
14375        self.raw.shaderInt64 = shader_int_64 as u32;
14376    }
14377
14378    pub fn set_shader_int_16<'m>(&mut self, shader_int_16: bool) {
14379        self.raw.shaderInt16 = shader_int_16 as u32;
14380    }
14381
14382    pub fn set_shader_resource_residency<'m>(&mut self, shader_resource_residency: bool) {
14383        self.raw.shaderResourceResidency = shader_resource_residency as u32;
14384    }
14385
14386    pub fn set_shader_resource_min_lod<'m>(&mut self, shader_resource_min_lod: bool) {
14387        self.raw.shaderResourceMinLod = shader_resource_min_lod as u32;
14388    }
14389
14390    pub fn set_sparse_binding<'m>(&mut self, sparse_binding: bool) {
14391        self.raw.sparseBinding = sparse_binding as u32;
14392    }
14393
14394    pub fn set_sparse_residency_buffer<'m>(&mut self, sparse_residency_buffer: bool) {
14395        self.raw.sparseResidencyBuffer = sparse_residency_buffer as u32;
14396    }
14397
14398    pub fn set_sparse_residency_image_2d<'m>(&mut self, sparse_residency_image_2d: bool) {
14399        self.raw.sparseResidencyImage2D = sparse_residency_image_2d as u32;
14400    }
14401
14402    pub fn set_sparse_residency_image_3d<'m>(&mut self, sparse_residency_image_3d: bool) {
14403        self.raw.sparseResidencyImage3D = sparse_residency_image_3d as u32;
14404    }
14405
14406    pub fn set_sparse_residency_2samples<'m>(&mut self, sparse_residency_2samples: bool) {
14407        self.raw.sparseResidency2Samples = sparse_residency_2samples as u32;
14408    }
14409
14410    pub fn set_sparse_residency_4samples<'m>(&mut self, sparse_residency_4samples: bool) {
14411        self.raw.sparseResidency4Samples = sparse_residency_4samples as u32;
14412    }
14413
14414    pub fn set_sparse_residency_8samples<'m>(&mut self, sparse_residency_8samples: bool) {
14415        self.raw.sparseResidency8Samples = sparse_residency_8samples as u32;
14416    }
14417
14418    pub fn set_sparse_residency_16_samples<'m>(&mut self, sparse_residency_16_samples: bool) {
14419        self.raw.sparseResidency16Samples = sparse_residency_16_samples as u32;
14420    }
14421
14422    pub fn set_sparse_residency_aliased<'m>(&mut self, sparse_residency_aliased: bool) {
14423        self.raw.sparseResidencyAliased = sparse_residency_aliased as u32;
14424    }
14425
14426    pub fn set_variable_multisample_rate<'m>(&mut self, variable_multisample_rate: bool) {
14427        self.raw.variableMultisampleRate = variable_multisample_rate as u32;
14428    }
14429
14430    pub fn set_inherited_queries<'m>(&mut self, inherited_queries: bool) {
14431        self.raw.inheritedQueries = inherited_queries as u32;
14432    }
14433
14434    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceFeatures {
14435        &self.raw
14436    }
14437}
14438
14439impl From<PhysicalDeviceFeatures> for vks::VkPhysicalDeviceFeatures {
14440    fn from(f: PhysicalDeviceFeatures) -> vks::VkPhysicalDeviceFeatures {
14441        f.raw
14442    }
14443}
14444
14445
14446/// A builder for `VkPhysicalDeviceFeatures`.
14447///
14448/// 
14449#[derive(Debug, Clone, Default)]
14450pub struct PhysicalDeviceFeaturesBuilder {
14451    raw: vks::VkPhysicalDeviceFeatures,
14452}
14453
14454impl PhysicalDeviceFeaturesBuilder {
14455    pub fn new() -> PhysicalDeviceFeaturesBuilder {
14456        PhysicalDeviceFeaturesBuilder {
14457            raw: vks::VkPhysicalDeviceFeatures::default(),
14458        }
14459    }
14460
14461    pub fn robust_buffer_access<'m>(mut self, robust_buffer_access: bool) -> PhysicalDeviceFeaturesBuilder {
14462        self.raw.robustBufferAccess = robust_buffer_access as u32;
14463        self
14464    }
14465
14466    pub fn full_draw_index_uint_32<'m>(mut self, full_draw_index_uint_32: bool) -> PhysicalDeviceFeaturesBuilder {
14467        self.raw.fullDrawIndexUint32 = full_draw_index_uint_32 as u32;
14468        self
14469    }
14470
14471    pub fn image_cube_array<'m>(mut self, image_cube_array: bool) -> PhysicalDeviceFeaturesBuilder {
14472        self.raw.imageCubeArray = image_cube_array as u32;
14473        self
14474    }
14475
14476    pub fn independent_blend<'m>(mut self, independent_blend: bool) -> PhysicalDeviceFeaturesBuilder {
14477        self.raw.independentBlend = independent_blend as u32;
14478        self
14479    }
14480
14481    pub fn geometry_shader<'m>(mut self, geometry_shader: bool) -> PhysicalDeviceFeaturesBuilder {
14482        self.raw.geometryShader = geometry_shader as u32;
14483        self
14484    }
14485
14486    pub fn tessellation_shader<'m>(mut self, tessellation_shader: bool) -> PhysicalDeviceFeaturesBuilder {
14487        self.raw.tessellationShader = tessellation_shader as u32;
14488        self
14489    }
14490
14491    pub fn sample_rate_shading<'m>(mut self, sample_rate_shading: bool) -> PhysicalDeviceFeaturesBuilder {
14492        self.raw.sampleRateShading = sample_rate_shading as u32;
14493        self
14494    }
14495
14496    pub fn dual_src_blend<'m>(mut self, dual_src_blend: bool) -> PhysicalDeviceFeaturesBuilder {
14497        self.raw.dualSrcBlend = dual_src_blend as u32;
14498        self
14499    }
14500
14501    pub fn logic_op<'m>(mut self, logic_op: bool) -> PhysicalDeviceFeaturesBuilder {
14502        self.raw.logicOp = logic_op as u32;
14503        self
14504    }
14505
14506    pub fn multi_draw_indirect<'m>(mut self, multi_draw_indirect: bool) -> PhysicalDeviceFeaturesBuilder {
14507        self.raw.multiDrawIndirect = multi_draw_indirect as u32;
14508        self
14509    }
14510
14511    pub fn draw_indirect_first_instance<'m>(mut self, draw_indirect_first_instance: bool) -> PhysicalDeviceFeaturesBuilder {
14512        self.raw.drawIndirectFirstInstance = draw_indirect_first_instance as u32;
14513        self
14514    }
14515
14516    pub fn depth_clamp<'m>(mut self, depth_clamp: bool) -> PhysicalDeviceFeaturesBuilder {
14517        self.raw.depthClamp = depth_clamp as u32;
14518        self
14519    }
14520
14521    pub fn depth_bias_clamp<'m>(mut self, depth_bias_clamp: bool) -> PhysicalDeviceFeaturesBuilder {
14522        self.raw.depthBiasClamp = depth_bias_clamp as u32;
14523        self
14524    }
14525
14526    pub fn fill_mode_non_solid<'m>(mut self, fill_mode_non_solid: bool) -> PhysicalDeviceFeaturesBuilder {
14527        self.raw.fillModeNonSolid = fill_mode_non_solid as u32;
14528        self
14529    }
14530
14531    pub fn depth_bounds<'m>(mut self, depth_bounds: bool) -> PhysicalDeviceFeaturesBuilder {
14532        self.raw.depthBounds = depth_bounds as u32;
14533        self
14534    }
14535
14536    pub fn wide_lines<'m>(mut self, wide_lines: bool) -> PhysicalDeviceFeaturesBuilder {
14537        self.raw.wideLines = wide_lines as u32;
14538        self
14539    }
14540
14541    pub fn large_points<'m>(mut self, large_points: bool) -> PhysicalDeviceFeaturesBuilder {
14542        self.raw.largePoints = large_points as u32;
14543        self
14544    }
14545
14546    pub fn alpha_to_one<'m>(mut self, alpha_to_one: bool) -> PhysicalDeviceFeaturesBuilder {
14547        self.raw.alphaToOne = alpha_to_one as u32;
14548        self
14549    }
14550
14551    pub fn multi_viewport<'m>(mut self, multi_viewport: bool) -> PhysicalDeviceFeaturesBuilder {
14552        self.raw.multiViewport = multi_viewport as u32;
14553        self
14554    }
14555
14556    pub fn sampler_anisotropy<'m>(mut self, sampler_anisotropy: bool) -> PhysicalDeviceFeaturesBuilder {
14557        self.raw.samplerAnisotropy = sampler_anisotropy as u32;
14558        self
14559    }
14560
14561    pub fn texture_compression_etc2<'m>(mut self, texture_compression_etc2: bool) -> PhysicalDeviceFeaturesBuilder {
14562        self.raw.textureCompressionETC2 = texture_compression_etc2 as u32;
14563        self
14564    }
14565
14566    pub fn texture_compression_astcldr<'m>(mut self, texture_compression_astcldr: bool) -> PhysicalDeviceFeaturesBuilder {
14567        self.raw.textureCompressionASTC_LDR = texture_compression_astcldr as u32;
14568        self
14569    }
14570
14571    pub fn texture_compression_bc<'m>(mut self, texture_compression_bc: bool) -> PhysicalDeviceFeaturesBuilder {
14572        self.raw.textureCompressionBC = texture_compression_bc as u32;
14573        self
14574    }
14575
14576    pub fn occlusion_query_precise<'m>(mut self, occlusion_query_precise: bool) -> PhysicalDeviceFeaturesBuilder {
14577        self.raw.occlusionQueryPrecise = occlusion_query_precise as u32;
14578        self
14579    }
14580
14581    pub fn pipeline_statistics_query<'m>(mut self, pipeline_statistics_query: bool) -> PhysicalDeviceFeaturesBuilder {
14582        self.raw.pipelineStatisticsQuery = pipeline_statistics_query as u32;
14583        self
14584    }
14585
14586    pub fn vertex_pipeline_stores_and_atomics<'m>(mut self, vertex_pipeline_stores_and_atomics: bool) -> PhysicalDeviceFeaturesBuilder {
14587        self.raw.vertexPipelineStoresAndAtomics = vertex_pipeline_stores_and_atomics as u32;
14588        self
14589    }
14590
14591    pub fn fragment_stores_and_atomics<'m>(mut self, fragment_stores_and_atomics: bool) -> PhysicalDeviceFeaturesBuilder {
14592        self.raw.fragmentStoresAndAtomics = fragment_stores_and_atomics as u32;
14593        self
14594    }
14595
14596    pub fn shader_tessellation_and_geometry_point_size<'m>(mut self, shader_tessellation_and_geometry_point_size: bool) -> PhysicalDeviceFeaturesBuilder {
14597        self.raw.shaderTessellationAndGeometryPointSize = shader_tessellation_and_geometry_point_size as u32;
14598        self
14599    }
14600
14601    pub fn shader_image_gather_extended<'m>(mut self, shader_image_gather_extended: bool) -> PhysicalDeviceFeaturesBuilder {
14602        self.raw.shaderImageGatherExtended = shader_image_gather_extended as u32;
14603        self
14604    }
14605
14606    pub fn shader_storage_image_extended_formats<'m>(mut self, shader_storage_image_extended_formats: bool) -> PhysicalDeviceFeaturesBuilder {
14607        self.raw.shaderStorageImageExtendedFormats = shader_storage_image_extended_formats as u32;
14608        self
14609    }
14610
14611    pub fn shader_storage_image_multisample<'m>(mut self, shader_storage_image_multisample: bool) -> PhysicalDeviceFeaturesBuilder {
14612        self.raw.shaderStorageImageMultisample = shader_storage_image_multisample as u32;
14613        self
14614    }
14615
14616    pub fn shader_storage_image_read_without_format<'m>(mut self, shader_storage_image_read_without_format: bool) -> PhysicalDeviceFeaturesBuilder {
14617        self.raw.shaderStorageImageReadWithoutFormat = shader_storage_image_read_without_format as u32;
14618        self
14619    }
14620
14621    pub fn shader_storage_image_write_without_format<'m>(mut self, shader_storage_image_write_without_format: bool) -> PhysicalDeviceFeaturesBuilder {
14622        self.raw.shaderStorageImageWriteWithoutFormat = shader_storage_image_write_without_format as u32;
14623        self
14624    }
14625
14626    pub fn shader_uniform_buffer_array_dynamic_indexing<'m>(mut self, shader_uniform_buffer_array_dynamic_indexing: bool) -> PhysicalDeviceFeaturesBuilder {
14627        self.raw.shaderUniformBufferArrayDynamicIndexing = shader_uniform_buffer_array_dynamic_indexing as u32;
14628        self
14629    }
14630
14631    pub fn shader_sampled_image_array_dynamic_indexing<'m>(mut self, shader_sampled_image_array_dynamic_indexing: bool) -> PhysicalDeviceFeaturesBuilder {
14632        self.raw.shaderSampledImageArrayDynamicIndexing = shader_sampled_image_array_dynamic_indexing as u32;
14633        self
14634    }
14635
14636    pub fn shader_storage_buffer_array_dynamic_indexing<'m>(mut self, shader_storage_buffer_array_dynamic_indexing: bool) -> PhysicalDeviceFeaturesBuilder {
14637        self.raw.shaderStorageBufferArrayDynamicIndexing = shader_storage_buffer_array_dynamic_indexing as u32;
14638        self
14639    }
14640
14641    pub fn shader_storage_image_array_dynamic_indexing<'m>(mut self, shader_storage_image_array_dynamic_indexing: bool) -> PhysicalDeviceFeaturesBuilder {
14642        self.raw.shaderStorageImageArrayDynamicIndexing = shader_storage_image_array_dynamic_indexing as u32;
14643        self
14644    }
14645
14646    pub fn shader_clip_distance<'m>(mut self, shader_clip_distance: bool) -> PhysicalDeviceFeaturesBuilder {
14647        self.raw.shaderClipDistance = shader_clip_distance as u32;
14648        self
14649    }
14650
14651    pub fn shader_cull_distance<'m>(mut self, shader_cull_distance: bool) -> PhysicalDeviceFeaturesBuilder {
14652        self.raw.shaderCullDistance = shader_cull_distance as u32;
14653        self
14654    }
14655
14656    pub fn shader_float_64<'m>(mut self, shader_float_64: bool) -> PhysicalDeviceFeaturesBuilder {
14657        self.raw.shaderFloat64 = shader_float_64 as u32;
14658        self
14659    }
14660
14661    pub fn shader_int_64<'m>(mut self, shader_int_64: bool) -> PhysicalDeviceFeaturesBuilder {
14662        self.raw.shaderInt64 = shader_int_64 as u32;
14663        self
14664    }
14665
14666    pub fn shader_int_16<'m>(mut self, shader_int_16: bool) -> PhysicalDeviceFeaturesBuilder {
14667        self.raw.shaderInt16 = shader_int_16 as u32;
14668        self
14669    }
14670
14671    pub fn shader_resource_residency<'m>(mut self, shader_resource_residency: bool) -> PhysicalDeviceFeaturesBuilder {
14672        self.raw.shaderResourceResidency = shader_resource_residency as u32;
14673        self
14674    }
14675
14676    pub fn shader_resource_min_lod<'m>(mut self, shader_resource_min_lod: bool) -> PhysicalDeviceFeaturesBuilder {
14677        self.raw.shaderResourceMinLod = shader_resource_min_lod as u32;
14678        self
14679    }
14680
14681    pub fn sparse_binding<'m>(mut self, sparse_binding: bool) -> PhysicalDeviceFeaturesBuilder {
14682        self.raw.sparseBinding = sparse_binding as u32;
14683        self
14684    }
14685
14686    pub fn sparse_residency_buffer<'m>(mut self, sparse_residency_buffer: bool) -> PhysicalDeviceFeaturesBuilder {
14687        self.raw.sparseResidencyBuffer = sparse_residency_buffer as u32;
14688        self
14689    }
14690
14691    pub fn sparse_residency_image_2d<'m>(mut self, sparse_residency_image_2d: bool) -> PhysicalDeviceFeaturesBuilder {
14692        self.raw.sparseResidencyImage2D = sparse_residency_image_2d as u32;
14693        self
14694    }
14695
14696    pub fn sparse_residency_image_3d<'m>(mut self, sparse_residency_image_3d: bool) -> PhysicalDeviceFeaturesBuilder {
14697        self.raw.sparseResidencyImage3D = sparse_residency_image_3d as u32;
14698        self
14699    }
14700
14701    pub fn sparse_residency_2samples<'m>(mut self, sparse_residency_2samples: bool) -> PhysicalDeviceFeaturesBuilder {
14702        self.raw.sparseResidency2Samples = sparse_residency_2samples as u32;
14703        self
14704    }
14705
14706    pub fn sparse_residency_4samples<'m>(mut self, sparse_residency_4samples: bool) -> PhysicalDeviceFeaturesBuilder {
14707        self.raw.sparseResidency4Samples = sparse_residency_4samples as u32;
14708        self
14709    }
14710
14711    pub fn sparse_residency_8samples<'m>(mut self, sparse_residency_8samples: bool) -> PhysicalDeviceFeaturesBuilder {
14712        self.raw.sparseResidency8Samples = sparse_residency_8samples as u32;
14713        self
14714    }
14715
14716    pub fn sparse_residency_16_samples<'m>(mut self, sparse_residency_16_samples: bool) -> PhysicalDeviceFeaturesBuilder {
14717        self.raw.sparseResidency16Samples = sparse_residency_16_samples as u32;
14718        self
14719    }
14720
14721    pub fn sparse_residency_aliased<'m>(mut self, sparse_residency_aliased: bool) -> PhysicalDeviceFeaturesBuilder {
14722        self.raw.sparseResidencyAliased = sparse_residency_aliased as u32;
14723        self
14724    }
14725
14726    pub fn variable_multisample_rate<'m>(mut self, variable_multisample_rate: bool) -> PhysicalDeviceFeaturesBuilder {
14727        self.raw.variableMultisampleRate = variable_multisample_rate as u32;
14728        self
14729    }
14730
14731    pub fn inherited_queries<'m>(mut self, inherited_queries: bool) -> PhysicalDeviceFeaturesBuilder {
14732        self.raw.inheritedQueries = inherited_queries as u32;
14733        self
14734    }
14735
14736    pub fn get_robust_buffer_access<'a>(&'a self) -> bool {
14737        self.raw.robustBufferAccess != 0
14738    }
14739
14740    pub fn get_full_draw_index_uint_32<'a>(&'a self) -> bool {
14741        self.raw.fullDrawIndexUint32 != 0
14742    }
14743
14744    pub fn get_image_cube_array<'a>(&'a self) -> bool {
14745        self.raw.imageCubeArray != 0
14746    }
14747
14748    pub fn get_independent_blend<'a>(&'a self) -> bool {
14749        self.raw.independentBlend != 0
14750    }
14751
14752    pub fn get_geometry_shader<'a>(&'a self) -> bool {
14753        self.raw.geometryShader != 0
14754    }
14755
14756    pub fn get_tessellation_shader<'a>(&'a self) -> bool {
14757        self.raw.tessellationShader != 0
14758    }
14759
14760    pub fn get_sample_rate_shading<'a>(&'a self) -> bool {
14761        self.raw.sampleRateShading != 0
14762    }
14763
14764    pub fn get_dual_src_blend<'a>(&'a self) -> bool {
14765        self.raw.dualSrcBlend != 0
14766    }
14767
14768    pub fn get_logic_op<'a>(&'a self) -> bool {
14769        self.raw.logicOp != 0
14770    }
14771
14772    pub fn get_multi_draw_indirect<'a>(&'a self) -> bool {
14773        self.raw.multiDrawIndirect != 0
14774    }
14775
14776    pub fn get_draw_indirect_first_instance<'a>(&'a self) -> bool {
14777        self.raw.drawIndirectFirstInstance != 0
14778    }
14779
14780    pub fn get_depth_clamp<'a>(&'a self) -> bool {
14781        self.raw.depthClamp != 0
14782    }
14783
14784    pub fn get_depth_bias_clamp<'a>(&'a self) -> bool {
14785        self.raw.depthBiasClamp != 0
14786    }
14787
14788    pub fn get_fill_mode_non_solid<'a>(&'a self) -> bool {
14789        self.raw.fillModeNonSolid != 0
14790    }
14791
14792    pub fn get_depth_bounds<'a>(&'a self) -> bool {
14793        self.raw.depthBounds != 0
14794    }
14795
14796    pub fn get_wide_lines<'a>(&'a self) -> bool {
14797        self.raw.wideLines != 0
14798    }
14799
14800    pub fn get_large_points<'a>(&'a self) -> bool {
14801        self.raw.largePoints != 0
14802    }
14803
14804    pub fn get_alpha_to_one<'a>(&'a self) -> bool {
14805        self.raw.alphaToOne != 0
14806    }
14807
14808    pub fn get_multi_viewport<'a>(&'a self) -> bool {
14809        self.raw.multiViewport != 0
14810    }
14811
14812    pub fn get_sampler_anisotropy<'a>(&'a self) -> bool {
14813        self.raw.samplerAnisotropy != 0
14814    }
14815
14816    pub fn get_texture_compression_etc2<'a>(&'a self) -> bool {
14817        self.raw.textureCompressionETC2 != 0
14818    }
14819
14820    pub fn get_texture_compression_astcldr<'a>(&'a self) -> bool {
14821        self.raw.textureCompressionASTC_LDR != 0
14822    }
14823
14824    pub fn get_texture_compression_bc<'a>(&'a self) -> bool {
14825        self.raw.textureCompressionBC != 0
14826    }
14827
14828    pub fn get_occlusion_query_precise<'a>(&'a self) -> bool {
14829        self.raw.occlusionQueryPrecise != 0
14830    }
14831
14832    pub fn get_pipeline_statistics_query<'a>(&'a self) -> bool {
14833        self.raw.pipelineStatisticsQuery != 0
14834    }
14835
14836    pub fn get_vertex_pipeline_stores_and_atomics<'a>(&'a self) -> bool {
14837        self.raw.vertexPipelineStoresAndAtomics != 0
14838    }
14839
14840    pub fn get_fragment_stores_and_atomics<'a>(&'a self) -> bool {
14841        self.raw.fragmentStoresAndAtomics != 0
14842    }
14843
14844    pub fn get_shader_tessellation_and_geometry_point_size<'a>(&'a self) -> bool {
14845        self.raw.shaderTessellationAndGeometryPointSize != 0
14846    }
14847
14848    pub fn get_shader_image_gather_extended<'a>(&'a self) -> bool {
14849        self.raw.shaderImageGatherExtended != 0
14850    }
14851
14852    pub fn get_shader_storage_image_extended_formats<'a>(&'a self) -> bool {
14853        self.raw.shaderStorageImageExtendedFormats != 0
14854    }
14855
14856    pub fn get_shader_storage_image_multisample<'a>(&'a self) -> bool {
14857        self.raw.shaderStorageImageMultisample != 0
14858    }
14859
14860    pub fn get_shader_storage_image_read_without_format<'a>(&'a self) -> bool {
14861        self.raw.shaderStorageImageReadWithoutFormat != 0
14862    }
14863
14864    pub fn get_shader_storage_image_write_without_format<'a>(&'a self) -> bool {
14865        self.raw.shaderStorageImageWriteWithoutFormat != 0
14866    }
14867
14868    pub fn get_shader_uniform_buffer_array_dynamic_indexing<'a>(&'a self) -> bool {
14869        self.raw.shaderUniformBufferArrayDynamicIndexing != 0
14870    }
14871
14872    pub fn get_shader_sampled_image_array_dynamic_indexing<'a>(&'a self) -> bool {
14873        self.raw.shaderSampledImageArrayDynamicIndexing != 0
14874    }
14875
14876    pub fn get_shader_storage_buffer_array_dynamic_indexing<'a>(&'a self) -> bool {
14877        self.raw.shaderStorageBufferArrayDynamicIndexing != 0
14878    }
14879
14880    pub fn get_shader_storage_image_array_dynamic_indexing<'a>(&'a self) -> bool {
14881        self.raw.shaderStorageImageArrayDynamicIndexing != 0
14882    }
14883
14884    pub fn get_shader_clip_distance<'a>(&'a self) -> bool {
14885        self.raw.shaderClipDistance != 0
14886    }
14887
14888    pub fn get_shader_cull_distance<'a>(&'a self) -> bool {
14889        self.raw.shaderCullDistance != 0
14890    }
14891
14892    pub fn get_shader_float_64<'a>(&'a self) -> bool {
14893        self.raw.shaderFloat64 != 0
14894    }
14895
14896    pub fn get_shader_int_64<'a>(&'a self) -> bool {
14897        self.raw.shaderInt64 != 0
14898    }
14899
14900    pub fn get_shader_int_16<'a>(&'a self) -> bool {
14901        self.raw.shaderInt16 != 0
14902    }
14903
14904    pub fn get_shader_resource_residency<'a>(&'a self) -> bool {
14905        self.raw.shaderResourceResidency != 0
14906    }
14907
14908    pub fn get_shader_resource_min_lod<'a>(&'a self) -> bool {
14909        self.raw.shaderResourceMinLod != 0
14910    }
14911
14912    pub fn get_sparse_binding<'a>(&'a self) -> bool {
14913        self.raw.sparseBinding != 0
14914    }
14915
14916    pub fn get_sparse_residency_buffer<'a>(&'a self) -> bool {
14917        self.raw.sparseResidencyBuffer != 0
14918    }
14919
14920    pub fn get_sparse_residency_image_2d<'a>(&'a self) -> bool {
14921        self.raw.sparseResidencyImage2D != 0
14922    }
14923
14924    pub fn get_sparse_residency_image_3d<'a>(&'a self) -> bool {
14925        self.raw.sparseResidencyImage3D != 0
14926    }
14927
14928    pub fn get_sparse_residency_2samples<'a>(&'a self) -> bool {
14929        self.raw.sparseResidency2Samples != 0
14930    }
14931
14932    pub fn get_sparse_residency_4samples<'a>(&'a self) -> bool {
14933        self.raw.sparseResidency4Samples != 0
14934    }
14935
14936    pub fn get_sparse_residency_8samples<'a>(&'a self) -> bool {
14937        self.raw.sparseResidency8Samples != 0
14938    }
14939
14940    pub fn get_sparse_residency_16_samples<'a>(&'a self) -> bool {
14941        self.raw.sparseResidency16Samples != 0
14942    }
14943
14944    pub fn get_sparse_residency_aliased<'a>(&'a self) -> bool {
14945        self.raw.sparseResidencyAliased != 0
14946    }
14947
14948    pub fn get_variable_multisample_rate<'a>(&'a self) -> bool {
14949        self.raw.variableMultisampleRate != 0
14950    }
14951
14952    pub fn get_inherited_queries<'a>(&'a self) -> bool {
14953        self.raw.inheritedQueries != 0
14954    }
14955
14956    pub fn build(self) -> PhysicalDeviceFeatures {
14957        PhysicalDeviceFeatures {
14958            raw: self.raw,
14959        }
14960    }
14961}
14962
14963
14964/// A `VkPhysicalDeviceSparseProperties`.
14965///
14966/// 
14967#[derive(Debug, Clone, Default)]
14968#[repr(C)]
14969pub struct PhysicalDeviceSparseProperties {
14970    raw: vks::VkPhysicalDeviceSparseProperties,
14971}
14972
14973impl PhysicalDeviceSparseProperties {
14974    pub fn builder() -> PhysicalDeviceSparsePropertiesBuilder {
14975        PhysicalDeviceSparsePropertiesBuilder::new()
14976    }
14977
14978    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceSparseProperties) -> PhysicalDeviceSparseProperties {
14979        PhysicalDeviceSparseProperties { raw, }
14980    }
14981
14982    pub fn residency_standard_2d_block_shape<'a>(&'a self) -> bool {
14983        self.raw.residencyStandard2DBlockShape != 0
14984    }
14985
14986    pub fn residency_standard_2d_multisample_block_shape<'a>(&'a self) -> bool {
14987        self.raw.residencyStandard2DMultisampleBlockShape != 0
14988    }
14989
14990    pub fn residency_standard_3d_block_shape<'a>(&'a self) -> bool {
14991        self.raw.residencyStandard3DBlockShape != 0
14992    }
14993
14994    pub fn residency_aligned_mip_size<'a>(&'a self) -> bool {
14995        self.raw.residencyAlignedMipSize != 0
14996    }
14997
14998    pub fn residency_non_resident_strict<'a>(&'a self) -> bool {
14999        self.raw.residencyNonResidentStrict != 0
15000    }
15001
15002    pub fn set_residency_standard_2d_block_shape<'m>(&mut self, residency_standard_2d_block_shape: bool) {
15003        self.raw.residencyStandard2DBlockShape = residency_standard_2d_block_shape as u32;
15004    }
15005
15006    pub fn set_residency_standard_2d_multisample_block_shape<'m>(&mut self, residency_standard_2d_multisample_block_shape: bool) {
15007        self.raw.residencyStandard2DMultisampleBlockShape = residency_standard_2d_multisample_block_shape as u32;
15008    }
15009
15010    pub fn set_residency_standard_3d_block_shape<'m>(&mut self, residency_standard_3d_block_shape: bool) {
15011        self.raw.residencyStandard3DBlockShape = residency_standard_3d_block_shape as u32;
15012    }
15013
15014    pub fn set_residency_aligned_mip_size<'m>(&mut self, residency_aligned_mip_size: bool) {
15015        self.raw.residencyAlignedMipSize = residency_aligned_mip_size as u32;
15016    }
15017
15018    pub fn set_residency_non_resident_strict<'m>(&mut self, residency_non_resident_strict: bool) {
15019        self.raw.residencyNonResidentStrict = residency_non_resident_strict as u32;
15020    }
15021
15022    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceSparseProperties {
15023        &self.raw
15024    }
15025}
15026
15027impl From<PhysicalDeviceSparseProperties> for vks::VkPhysicalDeviceSparseProperties {
15028    fn from(f: PhysicalDeviceSparseProperties) -> vks::VkPhysicalDeviceSparseProperties {
15029        f.raw
15030    }
15031}
15032
15033
15034/// A builder for `VkPhysicalDeviceSparseProperties`.
15035///
15036/// 
15037#[derive(Debug, Clone, Default)]
15038pub struct PhysicalDeviceSparsePropertiesBuilder {
15039    raw: vks::VkPhysicalDeviceSparseProperties,
15040}
15041
15042impl PhysicalDeviceSparsePropertiesBuilder {
15043    pub fn new() -> PhysicalDeviceSparsePropertiesBuilder {
15044        PhysicalDeviceSparsePropertiesBuilder {
15045            raw: vks::VkPhysicalDeviceSparseProperties::default(),
15046        }
15047    }
15048
15049    pub fn residency_standard_2d_block_shape<'m>(mut self, residency_standard_2d_block_shape: bool) -> PhysicalDeviceSparsePropertiesBuilder {
15050        self.raw.residencyStandard2DBlockShape = residency_standard_2d_block_shape as u32;
15051        self
15052    }
15053
15054    pub fn residency_standard_2d_multisample_block_shape<'m>(mut self, residency_standard_2d_multisample_block_shape: bool) -> PhysicalDeviceSparsePropertiesBuilder {
15055        self.raw.residencyStandard2DMultisampleBlockShape = residency_standard_2d_multisample_block_shape as u32;
15056        self
15057    }
15058
15059    pub fn residency_standard_3d_block_shape<'m>(mut self, residency_standard_3d_block_shape: bool) -> PhysicalDeviceSparsePropertiesBuilder {
15060        self.raw.residencyStandard3DBlockShape = residency_standard_3d_block_shape as u32;
15061        self
15062    }
15063
15064    pub fn residency_aligned_mip_size<'m>(mut self, residency_aligned_mip_size: bool) -> PhysicalDeviceSparsePropertiesBuilder {
15065        self.raw.residencyAlignedMipSize = residency_aligned_mip_size as u32;
15066        self
15067    }
15068
15069    pub fn residency_non_resident_strict<'m>(mut self, residency_non_resident_strict: bool) -> PhysicalDeviceSparsePropertiesBuilder {
15070        self.raw.residencyNonResidentStrict = residency_non_resident_strict as u32;
15071        self
15072    }
15073
15074    pub fn get_residency_standard_2d_block_shape<'a>(&'a self) -> bool {
15075        self.raw.residencyStandard2DBlockShape != 0
15076    }
15077
15078    pub fn get_residency_standard_2d_multisample_block_shape<'a>(&'a self) -> bool {
15079        self.raw.residencyStandard2DMultisampleBlockShape != 0
15080    }
15081
15082    pub fn get_residency_standard_3d_block_shape<'a>(&'a self) -> bool {
15083        self.raw.residencyStandard3DBlockShape != 0
15084    }
15085
15086    pub fn get_residency_aligned_mip_size<'a>(&'a self) -> bool {
15087        self.raw.residencyAlignedMipSize != 0
15088    }
15089
15090    pub fn get_residency_non_resident_strict<'a>(&'a self) -> bool {
15091        self.raw.residencyNonResidentStrict != 0
15092    }
15093
15094    pub fn build(self) -> PhysicalDeviceSparseProperties {
15095        PhysicalDeviceSparseProperties {
15096            raw: self.raw,
15097        }
15098    }
15099}
15100
15101
15102/// A `VkPhysicalDeviceLimits`.
15103///
15104/// compute stage limits
15105#[derive(Debug, Clone, Default)]
15106#[repr(C)]
15107pub struct PhysicalDeviceLimits {
15108    raw: vks::VkPhysicalDeviceLimits,
15109}
15110
15111impl PhysicalDeviceLimits {
15112    pub fn builder() -> PhysicalDeviceLimitsBuilder {
15113        PhysicalDeviceLimitsBuilder::new()
15114    }
15115
15116    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceLimits) -> PhysicalDeviceLimits {
15117        PhysicalDeviceLimits { raw, }
15118    }
15119
15120    pub fn max_image_dimension_1d<'a>(&'a self) -> u32 {
15121        self.raw.maxImageDimension1D.into()
15122    }
15123
15124    pub fn max_image_dimension_2d<'a>(&'a self) -> u32 {
15125        self.raw.maxImageDimension2D.into()
15126    }
15127
15128    pub fn max_image_dimension_3d<'a>(&'a self) -> u32 {
15129        self.raw.maxImageDimension3D.into()
15130    }
15131
15132    pub fn max_image_dimension_cube<'a>(&'a self) -> u32 {
15133        self.raw.maxImageDimensionCube.into()
15134    }
15135
15136    pub fn max_image_array_layers<'a>(&'a self) -> u32 {
15137        self.raw.maxImageArrayLayers.into()
15138    }
15139
15140    pub fn max_texel_buffer_elements<'a>(&'a self) -> u32 {
15141        self.raw.maxTexelBufferElements.into()
15142    }
15143
15144    pub fn max_uniform_buffer_range<'a>(&'a self) -> u32 {
15145        self.raw.maxUniformBufferRange.into()
15146    }
15147
15148    pub fn max_storage_buffer_range<'a>(&'a self) -> u32 {
15149        self.raw.maxStorageBufferRange.into()
15150    }
15151
15152    pub fn max_push_constants_size<'a>(&'a self) -> u32 {
15153        self.raw.maxPushConstantsSize.into()
15154    }
15155
15156    pub fn max_memory_allocation_count<'a>(&'a self) -> u32 {
15157        self.raw.maxMemoryAllocationCount.into()
15158    }
15159
15160    pub fn max_sampler_allocation_count<'a>(&'a self) -> u32 {
15161        self.raw.maxSamplerAllocationCount.into()
15162    }
15163
15164    pub fn buffer_image_granularity<'a>(&'a self) -> u64 {
15165        self.raw.bufferImageGranularity.into()
15166    }
15167
15168    pub fn sparse_address_space_size<'a>(&'a self) -> u64 {
15169        self.raw.sparseAddressSpaceSize.into()
15170    }
15171
15172    pub fn max_bound_descriptor_sets<'a>(&'a self) -> u32 {
15173        self.raw.maxBoundDescriptorSets.into()
15174    }
15175
15176    pub fn max_per_stage_descriptor_samplers<'a>(&'a self) -> u32 {
15177        self.raw.maxPerStageDescriptorSamplers.into()
15178    }
15179
15180    pub fn max_per_stage_descriptor_uniform_buffers<'a>(&'a self) -> u32 {
15181        self.raw.maxPerStageDescriptorUniformBuffers.into()
15182    }
15183
15184    pub fn max_per_stage_descriptor_storage_buffers<'a>(&'a self) -> u32 {
15185        self.raw.maxPerStageDescriptorStorageBuffers.into()
15186    }
15187
15188    pub fn max_per_stage_descriptor_sampled_images<'a>(&'a self) -> u32 {
15189        self.raw.maxPerStageDescriptorSampledImages.into()
15190    }
15191
15192    pub fn max_per_stage_descriptor_storage_images<'a>(&'a self) -> u32 {
15193        self.raw.maxPerStageDescriptorStorageImages.into()
15194    }
15195
15196    pub fn max_per_stage_descriptor_input_attachments<'a>(&'a self) -> u32 {
15197        self.raw.maxPerStageDescriptorInputAttachments.into()
15198    }
15199
15200    pub fn max_per_stage_resources<'a>(&'a self) -> u32 {
15201        self.raw.maxPerStageResources.into()
15202    }
15203
15204    pub fn max_descriptor_set_samplers<'a>(&'a self) -> u32 {
15205        self.raw.maxDescriptorSetSamplers.into()
15206    }
15207
15208    pub fn max_descriptor_set_uniform_buffers<'a>(&'a self) -> u32 {
15209        self.raw.maxDescriptorSetUniformBuffers.into()
15210    }
15211
15212    pub fn max_descriptor_set_uniform_buffers_dynamic<'a>(&'a self) -> u32 {
15213        self.raw.maxDescriptorSetUniformBuffersDynamic.into()
15214    }
15215
15216    pub fn max_descriptor_set_storage_buffers<'a>(&'a self) -> u32 {
15217        self.raw.maxDescriptorSetStorageBuffers.into()
15218    }
15219
15220    pub fn max_descriptor_set_storage_buffers_dynamic<'a>(&'a self) -> u32 {
15221        self.raw.maxDescriptorSetStorageBuffersDynamic.into()
15222    }
15223
15224    pub fn max_descriptor_set_sampled_images<'a>(&'a self) -> u32 {
15225        self.raw.maxDescriptorSetSampledImages.into()
15226    }
15227
15228    pub fn max_descriptor_set_storage_images<'a>(&'a self) -> u32 {
15229        self.raw.maxDescriptorSetStorageImages.into()
15230    }
15231
15232    pub fn max_descriptor_set_input_attachments<'a>(&'a self) -> u32 {
15233        self.raw.maxDescriptorSetInputAttachments.into()
15234    }
15235
15236    pub fn max_vertex_input_attributes<'a>(&'a self) -> u32 {
15237        self.raw.maxVertexInputAttributes.into()
15238    }
15239
15240    pub fn max_vertex_input_bindings<'a>(&'a self) -> u32 {
15241        self.raw.maxVertexInputBindings.into()
15242    }
15243
15244    pub fn max_vertex_input_attribute_offset<'a>(&'a self) -> u32 {
15245        self.raw.maxVertexInputAttributeOffset.into()
15246    }
15247
15248    pub fn max_vertex_input_binding_stride<'a>(&'a self) -> u32 {
15249        self.raw.maxVertexInputBindingStride.into()
15250    }
15251
15252    pub fn max_vertex_output_components<'a>(&'a self) -> u32 {
15253        self.raw.maxVertexOutputComponents.into()
15254    }
15255
15256    pub fn max_tessellation_generation_level<'a>(&'a self) -> u32 {
15257        self.raw.maxTessellationGenerationLevel.into()
15258    }
15259
15260    pub fn max_tessellation_patch_size<'a>(&'a self) -> u32 {
15261        self.raw.maxTessellationPatchSize.into()
15262    }
15263
15264    pub fn max_tessellation_control_per_vertex_input_components<'a>(&'a self) -> u32 {
15265        self.raw.maxTessellationControlPerVertexInputComponents.into()
15266    }
15267
15268    pub fn max_tessellation_control_per_vertex_output_components<'a>(&'a self) -> u32 {
15269        self.raw.maxTessellationControlPerVertexOutputComponents.into()
15270    }
15271
15272    pub fn max_tessellation_control_per_patch_output_components<'a>(&'a self) -> u32 {
15273        self.raw.maxTessellationControlPerPatchOutputComponents.into()
15274    }
15275
15276    pub fn max_tessellation_control_total_output_components<'a>(&'a self) -> u32 {
15277        self.raw.maxTessellationControlTotalOutputComponents.into()
15278    }
15279
15280    pub fn max_tessellation_evaluation_input_components<'a>(&'a self) -> u32 {
15281        self.raw.maxTessellationEvaluationInputComponents.into()
15282    }
15283
15284    pub fn max_tessellation_evaluation_output_components<'a>(&'a self) -> u32 {
15285        self.raw.maxTessellationEvaluationOutputComponents.into()
15286    }
15287
15288    pub fn max_geometry_shader_invocations<'a>(&'a self) -> u32 {
15289        self.raw.maxGeometryShaderInvocations.into()
15290    }
15291
15292    pub fn max_geometry_input_components<'a>(&'a self) -> u32 {
15293        self.raw.maxGeometryInputComponents.into()
15294    }
15295
15296    pub fn max_geometry_output_components<'a>(&'a self) -> u32 {
15297        self.raw.maxGeometryOutputComponents.into()
15298    }
15299
15300    pub fn max_geometry_output_vertices<'a>(&'a self) -> u32 {
15301        self.raw.maxGeometryOutputVertices.into()
15302    }
15303
15304    pub fn max_geometry_total_output_components<'a>(&'a self) -> u32 {
15305        self.raw.maxGeometryTotalOutputComponents.into()
15306    }
15307
15308    pub fn max_fragment_input_components<'a>(&'a self) -> u32 {
15309        self.raw.maxFragmentInputComponents.into()
15310    }
15311
15312    pub fn max_fragment_output_attachments<'a>(&'a self) -> u32 {
15313        self.raw.maxFragmentOutputAttachments.into()
15314    }
15315
15316    pub fn max_fragment_dual_src_attachments<'a>(&'a self) -> u32 {
15317        self.raw.maxFragmentDualSrcAttachments.into()
15318    }
15319
15320    pub fn max_fragment_combined_output_resources<'a>(&'a self) -> u32 {
15321        self.raw.maxFragmentCombinedOutputResources.into()
15322    }
15323
15324    pub fn max_compute_shared_memory_size<'a>(&'a self) -> u32 {
15325        self.raw.maxComputeSharedMemorySize.into()
15326    }
15327
15328    pub fn max_compute_work_group_count<'a>(&'a self) -> &[u32] {
15329        unsafe { slice::from_raw_parts(&self.raw.maxComputeWorkGroupCount as *const _, 3 as usize) }
15330    }
15331
15332    pub fn max_compute_work_group_invocations<'a>(&'a self) -> u32 {
15333        self.raw.maxComputeWorkGroupInvocations.into()
15334    }
15335
15336    pub fn max_compute_work_group_size<'a>(&'a self) -> &[u32] {
15337        unsafe { slice::from_raw_parts(&self.raw.maxComputeWorkGroupSize as *const _, 3 as usize) }
15338    }
15339
15340    pub fn sub_pixel_precision_bits<'a>(&'a self) -> u32 {
15341        self.raw.subPixelPrecisionBits.into()
15342    }
15343
15344    pub fn sub_texel_precision_bits<'a>(&'a self) -> u32 {
15345        self.raw.subTexelPrecisionBits.into()
15346    }
15347
15348    pub fn mipmap_precision_bits<'a>(&'a self) -> u32 {
15349        self.raw.mipmapPrecisionBits.into()
15350    }
15351
15352    pub fn max_draw_indexed_index_value<'a>(&'a self) -> u32 {
15353        self.raw.maxDrawIndexedIndexValue.into()
15354    }
15355
15356    pub fn max_draw_indirect_count<'a>(&'a self) -> u32 {
15357        self.raw.maxDrawIndirectCount.into()
15358    }
15359
15360    pub fn max_sampler_lod_bias<'a>(&'a self) -> f32 {
15361        self.raw.maxSamplerLodBias.into()
15362    }
15363
15364    pub fn max_sampler_anisotropy<'a>(&'a self) -> f32 {
15365        self.raw.maxSamplerAnisotropy.into()
15366    }
15367
15368    pub fn max_viewports<'a>(&'a self) -> u32 {
15369        self.raw.maxViewports.into()
15370    }
15371
15372    pub fn max_viewport_dimensions<'a>(&'a self) -> &[u32] {
15373        unsafe { slice::from_raw_parts(&self.raw.maxViewportDimensions as *const _, 2 as usize) }
15374    }
15375
15376    pub fn viewport_bounds_range<'a>(&'a self) -> &[f32] {
15377        unsafe { slice::from_raw_parts(&self.raw.viewportBoundsRange as *const _, 2 as usize) }
15378    }
15379
15380    pub fn viewport_sub_pixel_bits<'a>(&'a self) -> u32 {
15381        self.raw.viewportSubPixelBits.into()
15382    }
15383
15384    pub fn min_memory_map_alignment<'a>(&'a self) -> usize {
15385        self.raw.minMemoryMapAlignment.into()
15386    }
15387
15388    pub fn min_texel_buffer_offset_alignment<'a>(&'a self) -> u64 {
15389        self.raw.minTexelBufferOffsetAlignment.into()
15390    }
15391
15392    pub fn min_uniform_buffer_offset_alignment<'a>(&'a self) -> u64 {
15393        self.raw.minUniformBufferOffsetAlignment.into()
15394    }
15395
15396    pub fn min_storage_buffer_offset_alignment<'a>(&'a self) -> u64 {
15397        self.raw.minStorageBufferOffsetAlignment.into()
15398    }
15399
15400    pub fn min_texel_offset<'a>(&'a self) -> i32 {
15401        self.raw.minTexelOffset.into()
15402    }
15403
15404    pub fn max_texel_offset<'a>(&'a self) -> u32 {
15405        self.raw.maxTexelOffset.into()
15406    }
15407
15408    pub fn min_texel_gather_offset<'a>(&'a self) -> i32 {
15409        self.raw.minTexelGatherOffset.into()
15410    }
15411
15412    pub fn max_texel_gather_offset<'a>(&'a self) -> u32 {
15413        self.raw.maxTexelGatherOffset.into()
15414    }
15415
15416    pub fn min_interpolation_offset<'a>(&'a self) -> f32 {
15417        self.raw.minInterpolationOffset.into()
15418    }
15419
15420    pub fn max_interpolation_offset<'a>(&'a self) -> f32 {
15421        self.raw.maxInterpolationOffset.into()
15422    }
15423
15424    pub fn sub_pixel_interpolation_offset_bits<'a>(&'a self) -> u32 {
15425        self.raw.subPixelInterpolationOffsetBits.into()
15426    }
15427
15428    pub fn max_framebuffer_width<'a>(&'a self) -> u32 {
15429        self.raw.maxFramebufferWidth.into()
15430    }
15431
15432    pub fn max_framebuffer_height<'a>(&'a self) -> u32 {
15433        self.raw.maxFramebufferHeight.into()
15434    }
15435
15436    pub fn max_framebuffer_layers<'a>(&'a self) -> u32 {
15437        self.raw.maxFramebufferLayers.into()
15438    }
15439
15440    pub fn framebuffer_color_sample_counts<'a>(&'a self) -> SampleCountFlags {
15441        SampleCountFlags::from_bits(self.raw.framebufferColorSampleCounts)
15442            .expect("PhysicalDeviceLimits::framebuffer_color_sample_counts: error converting flags")
15443    }
15444
15445    pub fn framebuffer_depth_sample_counts<'a>(&'a self) -> SampleCountFlags {
15446        SampleCountFlags::from_bits(self.raw.framebufferDepthSampleCounts)
15447            .expect("PhysicalDeviceLimits::framebuffer_depth_sample_counts: error converting flags")
15448    }
15449
15450    pub fn framebuffer_stencil_sample_counts<'a>(&'a self) -> SampleCountFlags {
15451        SampleCountFlags::from_bits(self.raw.framebufferStencilSampleCounts)
15452            .expect("PhysicalDeviceLimits::framebuffer_stencil_sample_counts: error converting flags")
15453    }
15454
15455    pub fn framebuffer_no_attachments_sample_counts<'a>(&'a self) -> SampleCountFlags {
15456        SampleCountFlags::from_bits(self.raw.framebufferNoAttachmentsSampleCounts)
15457            .expect("PhysicalDeviceLimits::framebuffer_no_attachments_sample_counts: error converting flags")
15458    }
15459
15460    pub fn max_color_attachments<'a>(&'a self) -> u32 {
15461        self.raw.maxColorAttachments.into()
15462    }
15463
15464    pub fn sampled_image_color_sample_counts<'a>(&'a self) -> SampleCountFlags {
15465        SampleCountFlags::from_bits(self.raw.sampledImageColorSampleCounts)
15466            .expect("PhysicalDeviceLimits::sampled_image_color_sample_counts: error converting flags")
15467    }
15468
15469    pub fn sampled_image_integer_sample_counts<'a>(&'a self) -> SampleCountFlags {
15470        SampleCountFlags::from_bits(self.raw.sampledImageIntegerSampleCounts)
15471            .expect("PhysicalDeviceLimits::sampled_image_integer_sample_counts: error converting flags")
15472    }
15473
15474    pub fn sampled_image_depth_sample_counts<'a>(&'a self) -> SampleCountFlags {
15475        SampleCountFlags::from_bits(self.raw.sampledImageDepthSampleCounts)
15476            .expect("PhysicalDeviceLimits::sampled_image_depth_sample_counts: error converting flags")
15477    }
15478
15479    pub fn sampled_image_stencil_sample_counts<'a>(&'a self) -> SampleCountFlags {
15480        SampleCountFlags::from_bits(self.raw.sampledImageStencilSampleCounts)
15481            .expect("PhysicalDeviceLimits::sampled_image_stencil_sample_counts: error converting flags")
15482    }
15483
15484    pub fn storage_image_sample_counts<'a>(&'a self) -> SampleCountFlags {
15485        SampleCountFlags::from_bits(self.raw.storageImageSampleCounts)
15486            .expect("PhysicalDeviceLimits::storage_image_sample_counts: error converting flags")
15487    }
15488
15489    pub fn max_sample_mask_words<'a>(&'a self) -> u32 {
15490        self.raw.maxSampleMaskWords.into()
15491    }
15492
15493    pub fn timestamp_compute_and_graphics<'a>(&'a self) -> bool {
15494        self.raw.timestampComputeAndGraphics != 0
15495    }
15496
15497    pub fn timestamp_period<'a>(&'a self) -> f32 {
15498        self.raw.timestampPeriod.into()
15499    }
15500
15501    pub fn max_clip_distances<'a>(&'a self) -> u32 {
15502        self.raw.maxClipDistances.into()
15503    }
15504
15505    pub fn max_cull_distances<'a>(&'a self) -> u32 {
15506        self.raw.maxCullDistances.into()
15507    }
15508
15509    pub fn max_combined_clip_and_cull_distances<'a>(&'a self) -> u32 {
15510        self.raw.maxCombinedClipAndCullDistances.into()
15511    }
15512
15513    pub fn discrete_queue_priorities<'a>(&'a self) -> u32 {
15514        self.raw.discreteQueuePriorities.into()
15515    }
15516
15517    pub fn point_size_range<'a>(&'a self) -> &[f32] {
15518        unsafe { slice::from_raw_parts(&self.raw.pointSizeRange as *const _, 2 as usize) }
15519    }
15520
15521    pub fn line_width_range<'a>(&'a self) -> &[f32] {
15522        unsafe { slice::from_raw_parts(&self.raw.lineWidthRange as *const _, 2 as usize) }
15523    }
15524
15525    pub fn point_size_granularity<'a>(&'a self) -> f32 {
15526        self.raw.pointSizeGranularity.into()
15527    }
15528
15529    pub fn line_width_granularity<'a>(&'a self) -> f32 {
15530        self.raw.lineWidthGranularity.into()
15531    }
15532
15533    pub fn strict_lines<'a>(&'a self) -> bool {
15534        self.raw.strictLines != 0
15535    }
15536
15537    pub fn standard_sample_locations<'a>(&'a self) -> bool {
15538        self.raw.standardSampleLocations != 0
15539    }
15540
15541    pub fn optimal_buffer_copy_offset_alignment<'a>(&'a self) -> u64 {
15542        self.raw.optimalBufferCopyOffsetAlignment.into()
15543    }
15544
15545    pub fn optimal_buffer_copy_row_pitch_alignment<'a>(&'a self) -> u64 {
15546        self.raw.optimalBufferCopyRowPitchAlignment.into()
15547    }
15548
15549    pub fn non_coherent_atom_size<'a>(&'a self) -> u64 {
15550        self.raw.nonCoherentAtomSize.into()
15551    }
15552
15553    pub fn set_max_image_dimension_1d<'m>(&mut self, max_image_dimension_1d: u32) {
15554        self.raw.maxImageDimension1D = max_image_dimension_1d.into();
15555    }
15556
15557    pub fn set_max_image_dimension_2d<'m>(&mut self, max_image_dimension_2d: u32) {
15558        self.raw.maxImageDimension2D = max_image_dimension_2d.into();
15559    }
15560
15561    pub fn set_max_image_dimension_3d<'m>(&mut self, max_image_dimension_3d: u32) {
15562        self.raw.maxImageDimension3D = max_image_dimension_3d.into();
15563    }
15564
15565    pub fn set_max_image_dimension_cube<'m>(&mut self, max_image_dimension_cube: u32) {
15566        self.raw.maxImageDimensionCube = max_image_dimension_cube.into();
15567    }
15568
15569    pub fn set_max_image_array_layers<'m>(&mut self, max_image_array_layers: u32) {
15570        self.raw.maxImageArrayLayers = max_image_array_layers.into();
15571    }
15572
15573    pub fn set_max_texel_buffer_elements<'m>(&mut self, max_texel_buffer_elements: u32) {
15574        self.raw.maxTexelBufferElements = max_texel_buffer_elements.into();
15575    }
15576
15577    pub fn set_max_uniform_buffer_range<'m>(&mut self, max_uniform_buffer_range: u32) {
15578        self.raw.maxUniformBufferRange = max_uniform_buffer_range.into();
15579    }
15580
15581    pub fn set_max_storage_buffer_range<'m>(&mut self, max_storage_buffer_range: u32) {
15582        self.raw.maxStorageBufferRange = max_storage_buffer_range.into();
15583    }
15584
15585    pub fn set_max_push_constants_size<'m>(&mut self, max_push_constants_size: u32) {
15586        self.raw.maxPushConstantsSize = max_push_constants_size.into();
15587    }
15588
15589    pub fn set_max_memory_allocation_count<'m>(&mut self, max_memory_allocation_count: u32) {
15590        self.raw.maxMemoryAllocationCount = max_memory_allocation_count.into();
15591    }
15592
15593    pub fn set_max_sampler_allocation_count<'m>(&mut self, max_sampler_allocation_count: u32) {
15594        self.raw.maxSamplerAllocationCount = max_sampler_allocation_count.into();
15595    }
15596
15597    pub fn set_buffer_image_granularity<'m>(&mut self, buffer_image_granularity: u64) {
15598        self.raw.bufferImageGranularity = buffer_image_granularity.into();
15599    }
15600
15601    pub fn set_sparse_address_space_size<'m>(&mut self, sparse_address_space_size: u64) {
15602        self.raw.sparseAddressSpaceSize = sparse_address_space_size.into();
15603    }
15604
15605    pub fn set_max_bound_descriptor_sets<'m>(&mut self, max_bound_descriptor_sets: u32) {
15606        self.raw.maxBoundDescriptorSets = max_bound_descriptor_sets.into();
15607    }
15608
15609    pub fn set_max_per_stage_descriptor_samplers<'m>(&mut self, max_per_stage_descriptor_samplers: u32) {
15610        self.raw.maxPerStageDescriptorSamplers = max_per_stage_descriptor_samplers.into();
15611    }
15612
15613    pub fn set_max_per_stage_descriptor_uniform_buffers<'m>(&mut self, max_per_stage_descriptor_uniform_buffers: u32) {
15614        self.raw.maxPerStageDescriptorUniformBuffers = max_per_stage_descriptor_uniform_buffers.into();
15615    }
15616
15617    pub fn set_max_per_stage_descriptor_storage_buffers<'m>(&mut self, max_per_stage_descriptor_storage_buffers: u32) {
15618        self.raw.maxPerStageDescriptorStorageBuffers = max_per_stage_descriptor_storage_buffers.into();
15619    }
15620
15621    pub fn set_max_per_stage_descriptor_sampled_images<'m>(&mut self, max_per_stage_descriptor_sampled_images: u32) {
15622        self.raw.maxPerStageDescriptorSampledImages = max_per_stage_descriptor_sampled_images.into();
15623    }
15624
15625    pub fn set_max_per_stage_descriptor_storage_images<'m>(&mut self, max_per_stage_descriptor_storage_images: u32) {
15626        self.raw.maxPerStageDescriptorStorageImages = max_per_stage_descriptor_storage_images.into();
15627    }
15628
15629    pub fn set_max_per_stage_descriptor_input_attachments<'m>(&mut self, max_per_stage_descriptor_input_attachments: u32) {
15630        self.raw.maxPerStageDescriptorInputAttachments = max_per_stage_descriptor_input_attachments.into();
15631    }
15632
15633    pub fn set_max_per_stage_resources<'m>(&mut self, max_per_stage_resources: u32) {
15634        self.raw.maxPerStageResources = max_per_stage_resources.into();
15635    }
15636
15637    pub fn set_max_descriptor_set_samplers<'m>(&mut self, max_descriptor_set_samplers: u32) {
15638        self.raw.maxDescriptorSetSamplers = max_descriptor_set_samplers.into();
15639    }
15640
15641    pub fn set_max_descriptor_set_uniform_buffers<'m>(&mut self, max_descriptor_set_uniform_buffers: u32) {
15642        self.raw.maxDescriptorSetUniformBuffers = max_descriptor_set_uniform_buffers.into();
15643    }
15644
15645    pub fn set_max_descriptor_set_uniform_buffers_dynamic<'m>(&mut self, max_descriptor_set_uniform_buffers_dynamic: u32) {
15646        self.raw.maxDescriptorSetUniformBuffersDynamic = max_descriptor_set_uniform_buffers_dynamic.into();
15647    }
15648
15649    pub fn set_max_descriptor_set_storage_buffers<'m>(&mut self, max_descriptor_set_storage_buffers: u32) {
15650        self.raw.maxDescriptorSetStorageBuffers = max_descriptor_set_storage_buffers.into();
15651    }
15652
15653    pub fn set_max_descriptor_set_storage_buffers_dynamic<'m>(&mut self, max_descriptor_set_storage_buffers_dynamic: u32) {
15654        self.raw.maxDescriptorSetStorageBuffersDynamic = max_descriptor_set_storage_buffers_dynamic.into();
15655    }
15656
15657    pub fn set_max_descriptor_set_sampled_images<'m>(&mut self, max_descriptor_set_sampled_images: u32) {
15658        self.raw.maxDescriptorSetSampledImages = max_descriptor_set_sampled_images.into();
15659    }
15660
15661    pub fn set_max_descriptor_set_storage_images<'m>(&mut self, max_descriptor_set_storage_images: u32) {
15662        self.raw.maxDescriptorSetStorageImages = max_descriptor_set_storage_images.into();
15663    }
15664
15665    pub fn set_max_descriptor_set_input_attachments<'m>(&mut self, max_descriptor_set_input_attachments: u32) {
15666        self.raw.maxDescriptorSetInputAttachments = max_descriptor_set_input_attachments.into();
15667    }
15668
15669    pub fn set_max_vertex_input_attributes<'m>(&mut self, max_vertex_input_attributes: u32) {
15670        self.raw.maxVertexInputAttributes = max_vertex_input_attributes.into();
15671    }
15672
15673    pub fn set_max_vertex_input_bindings<'m>(&mut self, max_vertex_input_bindings: u32) {
15674        self.raw.maxVertexInputBindings = max_vertex_input_bindings.into();
15675    }
15676
15677    pub fn set_max_vertex_input_attribute_offset<'m>(&mut self, max_vertex_input_attribute_offset: u32) {
15678        self.raw.maxVertexInputAttributeOffset = max_vertex_input_attribute_offset.into();
15679    }
15680
15681    pub fn set_max_vertex_input_binding_stride<'m>(&mut self, max_vertex_input_binding_stride: u32) {
15682        self.raw.maxVertexInputBindingStride = max_vertex_input_binding_stride.into();
15683    }
15684
15685    pub fn set_max_vertex_output_components<'m>(&mut self, max_vertex_output_components: u32) {
15686        self.raw.maxVertexOutputComponents = max_vertex_output_components.into();
15687    }
15688
15689    pub fn set_max_tessellation_generation_level<'m>(&mut self, max_tessellation_generation_level: u32) {
15690        self.raw.maxTessellationGenerationLevel = max_tessellation_generation_level.into();
15691    }
15692
15693    pub fn set_max_tessellation_patch_size<'m>(&mut self, max_tessellation_patch_size: u32) {
15694        self.raw.maxTessellationPatchSize = max_tessellation_patch_size.into();
15695    }
15696
15697    pub fn set_max_tessellation_control_per_vertex_input_components<'m>(&mut self, max_tessellation_control_per_vertex_input_components: u32) {
15698        self.raw.maxTessellationControlPerVertexInputComponents = max_tessellation_control_per_vertex_input_components.into();
15699    }
15700
15701    pub fn set_max_tessellation_control_per_vertex_output_components<'m>(&mut self, max_tessellation_control_per_vertex_output_components: u32) {
15702        self.raw.maxTessellationControlPerVertexOutputComponents = max_tessellation_control_per_vertex_output_components.into();
15703    }
15704
15705    pub fn set_max_tessellation_control_per_patch_output_components<'m>(&mut self, max_tessellation_control_per_patch_output_components: u32) {
15706        self.raw.maxTessellationControlPerPatchOutputComponents = max_tessellation_control_per_patch_output_components.into();
15707    }
15708
15709    pub fn set_max_tessellation_control_total_output_components<'m>(&mut self, max_tessellation_control_total_output_components: u32) {
15710        self.raw.maxTessellationControlTotalOutputComponents = max_tessellation_control_total_output_components.into();
15711    }
15712
15713    pub fn set_max_tessellation_evaluation_input_components<'m>(&mut self, max_tessellation_evaluation_input_components: u32) {
15714        self.raw.maxTessellationEvaluationInputComponents = max_tessellation_evaluation_input_components.into();
15715    }
15716
15717    pub fn set_max_tessellation_evaluation_output_components<'m>(&mut self, max_tessellation_evaluation_output_components: u32) {
15718        self.raw.maxTessellationEvaluationOutputComponents = max_tessellation_evaluation_output_components.into();
15719    }
15720
15721    pub fn set_max_geometry_shader_invocations<'m>(&mut self, max_geometry_shader_invocations: u32) {
15722        self.raw.maxGeometryShaderInvocations = max_geometry_shader_invocations.into();
15723    }
15724
15725    pub fn set_max_geometry_input_components<'m>(&mut self, max_geometry_input_components: u32) {
15726        self.raw.maxGeometryInputComponents = max_geometry_input_components.into();
15727    }
15728
15729    pub fn set_max_geometry_output_components<'m>(&mut self, max_geometry_output_components: u32) {
15730        self.raw.maxGeometryOutputComponents = max_geometry_output_components.into();
15731    }
15732
15733    pub fn set_max_geometry_output_vertices<'m>(&mut self, max_geometry_output_vertices: u32) {
15734        self.raw.maxGeometryOutputVertices = max_geometry_output_vertices.into();
15735    }
15736
15737    pub fn set_max_geometry_total_output_components<'m>(&mut self, max_geometry_total_output_components: u32) {
15738        self.raw.maxGeometryTotalOutputComponents = max_geometry_total_output_components.into();
15739    }
15740
15741    pub fn set_max_fragment_input_components<'m>(&mut self, max_fragment_input_components: u32) {
15742        self.raw.maxFragmentInputComponents = max_fragment_input_components.into();
15743    }
15744
15745    pub fn set_max_fragment_output_attachments<'m>(&mut self, max_fragment_output_attachments: u32) {
15746        self.raw.maxFragmentOutputAttachments = max_fragment_output_attachments.into();
15747    }
15748
15749    pub fn set_max_fragment_dual_src_attachments<'m>(&mut self, max_fragment_dual_src_attachments: u32) {
15750        self.raw.maxFragmentDualSrcAttachments = max_fragment_dual_src_attachments.into();
15751    }
15752
15753    pub fn set_max_fragment_combined_output_resources<'m>(&mut self, max_fragment_combined_output_resources: u32) {
15754        self.raw.maxFragmentCombinedOutputResources = max_fragment_combined_output_resources.into();
15755    }
15756
15757    pub fn set_max_compute_shared_memory_size<'m>(&mut self, max_compute_shared_memory_size: u32) {
15758        self.raw.maxComputeSharedMemorySize = max_compute_shared_memory_size.into();
15759    }
15760
15761    pub fn set_max_compute_work_group_count<'m>(&mut self, max_compute_work_group_count: [u32; 3]) {
15762        self.raw.maxComputeWorkGroupCount = max_compute_work_group_count;
15763    }
15764
15765    pub fn set_max_compute_work_group_invocations<'m>(&mut self, max_compute_work_group_invocations: u32) {
15766        self.raw.maxComputeWorkGroupInvocations = max_compute_work_group_invocations.into();
15767    }
15768
15769    pub fn set_max_compute_work_group_size<'m>(&mut self, max_compute_work_group_size: [u32; 3]) {
15770        self.raw.maxComputeWorkGroupSize = max_compute_work_group_size;
15771    }
15772
15773    pub fn set_sub_pixel_precision_bits<'m>(&mut self, sub_pixel_precision_bits: u32) {
15774        self.raw.subPixelPrecisionBits = sub_pixel_precision_bits.into();
15775    }
15776
15777    pub fn set_sub_texel_precision_bits<'m>(&mut self, sub_texel_precision_bits: u32) {
15778        self.raw.subTexelPrecisionBits = sub_texel_precision_bits.into();
15779    }
15780
15781    pub fn set_mipmap_precision_bits<'m>(&mut self, mipmap_precision_bits: u32) {
15782        self.raw.mipmapPrecisionBits = mipmap_precision_bits.into();
15783    }
15784
15785    pub fn set_max_draw_indexed_index_value<'m>(&mut self, max_draw_indexed_index_value: u32) {
15786        self.raw.maxDrawIndexedIndexValue = max_draw_indexed_index_value.into();
15787    }
15788
15789    pub fn set_max_draw_indirect_count<'m>(&mut self, max_draw_indirect_count: u32) {
15790        self.raw.maxDrawIndirectCount = max_draw_indirect_count.into();
15791    }
15792
15793    pub fn set_max_sampler_lod_bias<'m>(&mut self, max_sampler_lod_bias: f32) {
15794        self.raw.maxSamplerLodBias = max_sampler_lod_bias.into();
15795    }
15796
15797    pub fn set_max_sampler_anisotropy<'m>(&mut self, max_sampler_anisotropy: f32) {
15798        self.raw.maxSamplerAnisotropy = max_sampler_anisotropy.into();
15799    }
15800
15801    pub fn set_max_viewports<'m>(&mut self, max_viewports: u32) {
15802        self.raw.maxViewports = max_viewports.into();
15803    }
15804
15805    pub fn set_max_viewport_dimensions<'m>(&mut self, max_viewport_dimensions: [u32; 2]) {
15806        self.raw.maxViewportDimensions = max_viewport_dimensions;
15807    }
15808
15809    pub fn set_viewport_bounds_range<'m>(&mut self, viewport_bounds_range: [f32; 2]) {
15810        self.raw.viewportBoundsRange = viewport_bounds_range;
15811    }
15812
15813    pub fn set_viewport_sub_pixel_bits<'m>(&mut self, viewport_sub_pixel_bits: u32) {
15814        self.raw.viewportSubPixelBits = viewport_sub_pixel_bits.into();
15815    }
15816
15817    pub fn set_min_memory_map_alignment<'m>(&mut self, min_memory_map_alignment: usize) {
15818        self.raw.minMemoryMapAlignment = min_memory_map_alignment.into();
15819    }
15820
15821    pub fn set_min_texel_buffer_offset_alignment<'m>(&mut self, min_texel_buffer_offset_alignment: u64) {
15822        self.raw.minTexelBufferOffsetAlignment = min_texel_buffer_offset_alignment.into();
15823    }
15824
15825    pub fn set_min_uniform_buffer_offset_alignment<'m>(&mut self, min_uniform_buffer_offset_alignment: u64) {
15826        self.raw.minUniformBufferOffsetAlignment = min_uniform_buffer_offset_alignment.into();
15827    }
15828
15829    pub fn set_min_storage_buffer_offset_alignment<'m>(&mut self, min_storage_buffer_offset_alignment: u64) {
15830        self.raw.minStorageBufferOffsetAlignment = min_storage_buffer_offset_alignment.into();
15831    }
15832
15833    pub fn set_min_texel_offset<'m>(&mut self, min_texel_offset: i32) {
15834        self.raw.minTexelOffset = min_texel_offset.into();
15835    }
15836
15837    pub fn set_max_texel_offset<'m>(&mut self, max_texel_offset: u32) {
15838        self.raw.maxTexelOffset = max_texel_offset.into();
15839    }
15840
15841    pub fn set_min_texel_gather_offset<'m>(&mut self, min_texel_gather_offset: i32) {
15842        self.raw.minTexelGatherOffset = min_texel_gather_offset.into();
15843    }
15844
15845    pub fn set_max_texel_gather_offset<'m>(&mut self, max_texel_gather_offset: u32) {
15846        self.raw.maxTexelGatherOffset = max_texel_gather_offset.into();
15847    }
15848
15849    pub fn set_min_interpolation_offset<'m>(&mut self, min_interpolation_offset: f32) {
15850        self.raw.minInterpolationOffset = min_interpolation_offset.into();
15851    }
15852
15853    pub fn set_max_interpolation_offset<'m>(&mut self, max_interpolation_offset: f32) {
15854        self.raw.maxInterpolationOffset = max_interpolation_offset.into();
15855    }
15856
15857    pub fn set_sub_pixel_interpolation_offset_bits<'m>(&mut self, sub_pixel_interpolation_offset_bits: u32) {
15858        self.raw.subPixelInterpolationOffsetBits = sub_pixel_interpolation_offset_bits.into();
15859    }
15860
15861    pub fn set_max_framebuffer_width<'m>(&mut self, max_framebuffer_width: u32) {
15862        self.raw.maxFramebufferWidth = max_framebuffer_width.into();
15863    }
15864
15865    pub fn set_max_framebuffer_height<'m>(&mut self, max_framebuffer_height: u32) {
15866        self.raw.maxFramebufferHeight = max_framebuffer_height.into();
15867    }
15868
15869    pub fn set_max_framebuffer_layers<'m>(&mut self, max_framebuffer_layers: u32) {
15870        self.raw.maxFramebufferLayers = max_framebuffer_layers.into();
15871    }
15872
15873    pub fn set_framebuffer_color_sample_counts<'m>(&mut self, framebuffer_color_sample_counts: SampleCountFlags) {
15874        self.raw.framebufferColorSampleCounts = framebuffer_color_sample_counts.bits();
15875    }
15876
15877    pub fn set_framebuffer_depth_sample_counts<'m>(&mut self, framebuffer_depth_sample_counts: SampleCountFlags) {
15878        self.raw.framebufferDepthSampleCounts = framebuffer_depth_sample_counts.bits();
15879    }
15880
15881    pub fn set_framebuffer_stencil_sample_counts<'m>(&mut self, framebuffer_stencil_sample_counts: SampleCountFlags) {
15882        self.raw.framebufferStencilSampleCounts = framebuffer_stencil_sample_counts.bits();
15883    }
15884
15885    pub fn set_framebuffer_no_attachments_sample_counts<'m>(&mut self, framebuffer_no_attachments_sample_counts: SampleCountFlags) {
15886        self.raw.framebufferNoAttachmentsSampleCounts = framebuffer_no_attachments_sample_counts.bits();
15887    }
15888
15889    pub fn set_max_color_attachments<'m>(&mut self, max_color_attachments: u32) {
15890        self.raw.maxColorAttachments = max_color_attachments.into();
15891    }
15892
15893    pub fn set_sampled_image_color_sample_counts<'m>(&mut self, sampled_image_color_sample_counts: SampleCountFlags) {
15894        self.raw.sampledImageColorSampleCounts = sampled_image_color_sample_counts.bits();
15895    }
15896
15897    pub fn set_sampled_image_integer_sample_counts<'m>(&mut self, sampled_image_integer_sample_counts: SampleCountFlags) {
15898        self.raw.sampledImageIntegerSampleCounts = sampled_image_integer_sample_counts.bits();
15899    }
15900
15901    pub fn set_sampled_image_depth_sample_counts<'m>(&mut self, sampled_image_depth_sample_counts: SampleCountFlags) {
15902        self.raw.sampledImageDepthSampleCounts = sampled_image_depth_sample_counts.bits();
15903    }
15904
15905    pub fn set_sampled_image_stencil_sample_counts<'m>(&mut self, sampled_image_stencil_sample_counts: SampleCountFlags) {
15906        self.raw.sampledImageStencilSampleCounts = sampled_image_stencil_sample_counts.bits();
15907    }
15908
15909    pub fn set_storage_image_sample_counts<'m>(&mut self, storage_image_sample_counts: SampleCountFlags) {
15910        self.raw.storageImageSampleCounts = storage_image_sample_counts.bits();
15911    }
15912
15913    pub fn set_max_sample_mask_words<'m>(&mut self, max_sample_mask_words: u32) {
15914        self.raw.maxSampleMaskWords = max_sample_mask_words.into();
15915    }
15916
15917    pub fn set_timestamp_compute_and_graphics<'m>(&mut self, timestamp_compute_and_graphics: bool) {
15918        self.raw.timestampComputeAndGraphics = timestamp_compute_and_graphics as u32;
15919    }
15920
15921    pub fn set_timestamp_period<'m>(&mut self, timestamp_period: f32) {
15922        self.raw.timestampPeriod = timestamp_period.into();
15923    }
15924
15925    pub fn set_max_clip_distances<'m>(&mut self, max_clip_distances: u32) {
15926        self.raw.maxClipDistances = max_clip_distances.into();
15927    }
15928
15929    pub fn set_max_cull_distances<'m>(&mut self, max_cull_distances: u32) {
15930        self.raw.maxCullDistances = max_cull_distances.into();
15931    }
15932
15933    pub fn set_max_combined_clip_and_cull_distances<'m>(&mut self, max_combined_clip_and_cull_distances: u32) {
15934        self.raw.maxCombinedClipAndCullDistances = max_combined_clip_and_cull_distances.into();
15935    }
15936
15937    pub fn set_discrete_queue_priorities<'m>(&mut self, discrete_queue_priorities: u32) {
15938        self.raw.discreteQueuePriorities = discrete_queue_priorities.into();
15939    }
15940
15941    pub fn set_point_size_range<'m>(&mut self, point_size_range: [f32; 2]) {
15942        self.raw.pointSizeRange = point_size_range;
15943    }
15944
15945    pub fn set_line_width_range<'m>(&mut self, line_width_range: [f32; 2]) {
15946        self.raw.lineWidthRange = line_width_range;
15947    }
15948
15949    pub fn set_point_size_granularity<'m>(&mut self, point_size_granularity: f32) {
15950        self.raw.pointSizeGranularity = point_size_granularity.into();
15951    }
15952
15953    pub fn set_line_width_granularity<'m>(&mut self, line_width_granularity: f32) {
15954        self.raw.lineWidthGranularity = line_width_granularity.into();
15955    }
15956
15957    pub fn set_strict_lines<'m>(&mut self, strict_lines: bool) {
15958        self.raw.strictLines = strict_lines as u32;
15959    }
15960
15961    pub fn set_standard_sample_locations<'m>(&mut self, standard_sample_locations: bool) {
15962        self.raw.standardSampleLocations = standard_sample_locations as u32;
15963    }
15964
15965    pub fn set_optimal_buffer_copy_offset_alignment<'m>(&mut self, optimal_buffer_copy_offset_alignment: u64) {
15966        self.raw.optimalBufferCopyOffsetAlignment = optimal_buffer_copy_offset_alignment.into();
15967    }
15968
15969    pub fn set_optimal_buffer_copy_row_pitch_alignment<'m>(&mut self, optimal_buffer_copy_row_pitch_alignment: u64) {
15970        self.raw.optimalBufferCopyRowPitchAlignment = optimal_buffer_copy_row_pitch_alignment.into();
15971    }
15972
15973    pub fn set_non_coherent_atom_size<'m>(&mut self, non_coherent_atom_size: u64) {
15974        self.raw.nonCoherentAtomSize = non_coherent_atom_size.into();
15975    }
15976
15977    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceLimits {
15978        &self.raw
15979    }
15980}
15981
15982impl From<PhysicalDeviceLimits> for vks::VkPhysicalDeviceLimits {
15983    fn from(f: PhysicalDeviceLimits) -> vks::VkPhysicalDeviceLimits {
15984        f.raw
15985    }
15986}
15987
15988
15989/// A builder for `VkPhysicalDeviceLimits`.
15990///
15991/// compute stage limits
15992#[derive(Debug, Clone, Default)]
15993pub struct PhysicalDeviceLimitsBuilder {
15994    raw: vks::VkPhysicalDeviceLimits,
15995}
15996
15997impl PhysicalDeviceLimitsBuilder {
15998    pub fn new() -> PhysicalDeviceLimitsBuilder {
15999        PhysicalDeviceLimitsBuilder {
16000            raw: vks::VkPhysicalDeviceLimits::default(),
16001        }
16002    }
16003
16004    pub fn max_image_dimension_1d<'m>(mut self, max_image_dimension_1d: u32) -> PhysicalDeviceLimitsBuilder {
16005        self.raw.maxImageDimension1D = max_image_dimension_1d.into();
16006        self
16007    }
16008
16009    pub fn max_image_dimension_2d<'m>(mut self, max_image_dimension_2d: u32) -> PhysicalDeviceLimitsBuilder {
16010        self.raw.maxImageDimension2D = max_image_dimension_2d.into();
16011        self
16012    }
16013
16014    pub fn max_image_dimension_3d<'m>(mut self, max_image_dimension_3d: u32) -> PhysicalDeviceLimitsBuilder {
16015        self.raw.maxImageDimension3D = max_image_dimension_3d.into();
16016        self
16017    }
16018
16019    pub fn max_image_dimension_cube<'m>(mut self, max_image_dimension_cube: u32) -> PhysicalDeviceLimitsBuilder {
16020        self.raw.maxImageDimensionCube = max_image_dimension_cube.into();
16021        self
16022    }
16023
16024    pub fn max_image_array_layers<'m>(mut self, max_image_array_layers: u32) -> PhysicalDeviceLimitsBuilder {
16025        self.raw.maxImageArrayLayers = max_image_array_layers.into();
16026        self
16027    }
16028
16029    pub fn max_texel_buffer_elements<'m>(mut self, max_texel_buffer_elements: u32) -> PhysicalDeviceLimitsBuilder {
16030        self.raw.maxTexelBufferElements = max_texel_buffer_elements.into();
16031        self
16032    }
16033
16034    pub fn max_uniform_buffer_range<'m>(mut self, max_uniform_buffer_range: u32) -> PhysicalDeviceLimitsBuilder {
16035        self.raw.maxUniformBufferRange = max_uniform_buffer_range.into();
16036        self
16037    }
16038
16039    pub fn max_storage_buffer_range<'m>(mut self, max_storage_buffer_range: u32) -> PhysicalDeviceLimitsBuilder {
16040        self.raw.maxStorageBufferRange = max_storage_buffer_range.into();
16041        self
16042    }
16043
16044    pub fn max_push_constants_size<'m>(mut self, max_push_constants_size: u32) -> PhysicalDeviceLimitsBuilder {
16045        self.raw.maxPushConstantsSize = max_push_constants_size.into();
16046        self
16047    }
16048
16049    pub fn max_memory_allocation_count<'m>(mut self, max_memory_allocation_count: u32) -> PhysicalDeviceLimitsBuilder {
16050        self.raw.maxMemoryAllocationCount = max_memory_allocation_count.into();
16051        self
16052    }
16053
16054    pub fn max_sampler_allocation_count<'m>(mut self, max_sampler_allocation_count: u32) -> PhysicalDeviceLimitsBuilder {
16055        self.raw.maxSamplerAllocationCount = max_sampler_allocation_count.into();
16056        self
16057    }
16058
16059    pub fn buffer_image_granularity<'m>(mut self, buffer_image_granularity: u64) -> PhysicalDeviceLimitsBuilder {
16060        self.raw.bufferImageGranularity = buffer_image_granularity.into();
16061        self
16062    }
16063
16064    pub fn sparse_address_space_size<'m>(mut self, sparse_address_space_size: u64) -> PhysicalDeviceLimitsBuilder {
16065        self.raw.sparseAddressSpaceSize = sparse_address_space_size.into();
16066        self
16067    }
16068
16069    pub fn max_bound_descriptor_sets<'m>(mut self, max_bound_descriptor_sets: u32) -> PhysicalDeviceLimitsBuilder {
16070        self.raw.maxBoundDescriptorSets = max_bound_descriptor_sets.into();
16071        self
16072    }
16073
16074    pub fn max_per_stage_descriptor_samplers<'m>(mut self, max_per_stage_descriptor_samplers: u32) -> PhysicalDeviceLimitsBuilder {
16075        self.raw.maxPerStageDescriptorSamplers = max_per_stage_descriptor_samplers.into();
16076        self
16077    }
16078
16079    pub fn max_per_stage_descriptor_uniform_buffers<'m>(mut self, max_per_stage_descriptor_uniform_buffers: u32) -> PhysicalDeviceLimitsBuilder {
16080        self.raw.maxPerStageDescriptorUniformBuffers = max_per_stage_descriptor_uniform_buffers.into();
16081        self
16082    }
16083
16084    pub fn max_per_stage_descriptor_storage_buffers<'m>(mut self, max_per_stage_descriptor_storage_buffers: u32) -> PhysicalDeviceLimitsBuilder {
16085        self.raw.maxPerStageDescriptorStorageBuffers = max_per_stage_descriptor_storage_buffers.into();
16086        self
16087    }
16088
16089    pub fn max_per_stage_descriptor_sampled_images<'m>(mut self, max_per_stage_descriptor_sampled_images: u32) -> PhysicalDeviceLimitsBuilder {
16090        self.raw.maxPerStageDescriptorSampledImages = max_per_stage_descriptor_sampled_images.into();
16091        self
16092    }
16093
16094    pub fn max_per_stage_descriptor_storage_images<'m>(mut self, max_per_stage_descriptor_storage_images: u32) -> PhysicalDeviceLimitsBuilder {
16095        self.raw.maxPerStageDescriptorStorageImages = max_per_stage_descriptor_storage_images.into();
16096        self
16097    }
16098
16099    pub fn max_per_stage_descriptor_input_attachments<'m>(mut self, max_per_stage_descriptor_input_attachments: u32) -> PhysicalDeviceLimitsBuilder {
16100        self.raw.maxPerStageDescriptorInputAttachments = max_per_stage_descriptor_input_attachments.into();
16101        self
16102    }
16103
16104    pub fn max_per_stage_resources<'m>(mut self, max_per_stage_resources: u32) -> PhysicalDeviceLimitsBuilder {
16105        self.raw.maxPerStageResources = max_per_stage_resources.into();
16106        self
16107    }
16108
16109    pub fn max_descriptor_set_samplers<'m>(mut self, max_descriptor_set_samplers: u32) -> PhysicalDeviceLimitsBuilder {
16110        self.raw.maxDescriptorSetSamplers = max_descriptor_set_samplers.into();
16111        self
16112    }
16113
16114    pub fn max_descriptor_set_uniform_buffers<'m>(mut self, max_descriptor_set_uniform_buffers: u32) -> PhysicalDeviceLimitsBuilder {
16115        self.raw.maxDescriptorSetUniformBuffers = max_descriptor_set_uniform_buffers.into();
16116        self
16117    }
16118
16119    pub fn max_descriptor_set_uniform_buffers_dynamic<'m>(mut self, max_descriptor_set_uniform_buffers_dynamic: u32) -> PhysicalDeviceLimitsBuilder {
16120        self.raw.maxDescriptorSetUniformBuffersDynamic = max_descriptor_set_uniform_buffers_dynamic.into();
16121        self
16122    }
16123
16124    pub fn max_descriptor_set_storage_buffers<'m>(mut self, max_descriptor_set_storage_buffers: u32) -> PhysicalDeviceLimitsBuilder {
16125        self.raw.maxDescriptorSetStorageBuffers = max_descriptor_set_storage_buffers.into();
16126        self
16127    }
16128
16129    pub fn max_descriptor_set_storage_buffers_dynamic<'m>(mut self, max_descriptor_set_storage_buffers_dynamic: u32) -> PhysicalDeviceLimitsBuilder {
16130        self.raw.maxDescriptorSetStorageBuffersDynamic = max_descriptor_set_storage_buffers_dynamic.into();
16131        self
16132    }
16133
16134    pub fn max_descriptor_set_sampled_images<'m>(mut self, max_descriptor_set_sampled_images: u32) -> PhysicalDeviceLimitsBuilder {
16135        self.raw.maxDescriptorSetSampledImages = max_descriptor_set_sampled_images.into();
16136        self
16137    }
16138
16139    pub fn max_descriptor_set_storage_images<'m>(mut self, max_descriptor_set_storage_images: u32) -> PhysicalDeviceLimitsBuilder {
16140        self.raw.maxDescriptorSetStorageImages = max_descriptor_set_storage_images.into();
16141        self
16142    }
16143
16144    pub fn max_descriptor_set_input_attachments<'m>(mut self, max_descriptor_set_input_attachments: u32) -> PhysicalDeviceLimitsBuilder {
16145        self.raw.maxDescriptorSetInputAttachments = max_descriptor_set_input_attachments.into();
16146        self
16147    }
16148
16149    pub fn max_vertex_input_attributes<'m>(mut self, max_vertex_input_attributes: u32) -> PhysicalDeviceLimitsBuilder {
16150        self.raw.maxVertexInputAttributes = max_vertex_input_attributes.into();
16151        self
16152    }
16153
16154    pub fn max_vertex_input_bindings<'m>(mut self, max_vertex_input_bindings: u32) -> PhysicalDeviceLimitsBuilder {
16155        self.raw.maxVertexInputBindings = max_vertex_input_bindings.into();
16156        self
16157    }
16158
16159    pub fn max_vertex_input_attribute_offset<'m>(mut self, max_vertex_input_attribute_offset: u32) -> PhysicalDeviceLimitsBuilder {
16160        self.raw.maxVertexInputAttributeOffset = max_vertex_input_attribute_offset.into();
16161        self
16162    }
16163
16164    pub fn max_vertex_input_binding_stride<'m>(mut self, max_vertex_input_binding_stride: u32) -> PhysicalDeviceLimitsBuilder {
16165        self.raw.maxVertexInputBindingStride = max_vertex_input_binding_stride.into();
16166        self
16167    }
16168
16169    pub fn max_vertex_output_components<'m>(mut self, max_vertex_output_components: u32) -> PhysicalDeviceLimitsBuilder {
16170        self.raw.maxVertexOutputComponents = max_vertex_output_components.into();
16171        self
16172    }
16173
16174    pub fn max_tessellation_generation_level<'m>(mut self, max_tessellation_generation_level: u32) -> PhysicalDeviceLimitsBuilder {
16175        self.raw.maxTessellationGenerationLevel = max_tessellation_generation_level.into();
16176        self
16177    }
16178
16179    pub fn max_tessellation_patch_size<'m>(mut self, max_tessellation_patch_size: u32) -> PhysicalDeviceLimitsBuilder {
16180        self.raw.maxTessellationPatchSize = max_tessellation_patch_size.into();
16181        self
16182    }
16183
16184    pub fn max_tessellation_control_per_vertex_input_components<'m>(mut self, max_tessellation_control_per_vertex_input_components: u32) -> PhysicalDeviceLimitsBuilder {
16185        self.raw.maxTessellationControlPerVertexInputComponents = max_tessellation_control_per_vertex_input_components.into();
16186        self
16187    }
16188
16189    pub fn max_tessellation_control_per_vertex_output_components<'m>(mut self, max_tessellation_control_per_vertex_output_components: u32) -> PhysicalDeviceLimitsBuilder {
16190        self.raw.maxTessellationControlPerVertexOutputComponents = max_tessellation_control_per_vertex_output_components.into();
16191        self
16192    }
16193
16194    pub fn max_tessellation_control_per_patch_output_components<'m>(mut self, max_tessellation_control_per_patch_output_components: u32) -> PhysicalDeviceLimitsBuilder {
16195        self.raw.maxTessellationControlPerPatchOutputComponents = max_tessellation_control_per_patch_output_components.into();
16196        self
16197    }
16198
16199    pub fn max_tessellation_control_total_output_components<'m>(mut self, max_tessellation_control_total_output_components: u32) -> PhysicalDeviceLimitsBuilder {
16200        self.raw.maxTessellationControlTotalOutputComponents = max_tessellation_control_total_output_components.into();
16201        self
16202    }
16203
16204    pub fn max_tessellation_evaluation_input_components<'m>(mut self, max_tessellation_evaluation_input_components: u32) -> PhysicalDeviceLimitsBuilder {
16205        self.raw.maxTessellationEvaluationInputComponents = max_tessellation_evaluation_input_components.into();
16206        self
16207    }
16208
16209    pub fn max_tessellation_evaluation_output_components<'m>(mut self, max_tessellation_evaluation_output_components: u32) -> PhysicalDeviceLimitsBuilder {
16210        self.raw.maxTessellationEvaluationOutputComponents = max_tessellation_evaluation_output_components.into();
16211        self
16212    }
16213
16214    pub fn max_geometry_shader_invocations<'m>(mut self, max_geometry_shader_invocations: u32) -> PhysicalDeviceLimitsBuilder {
16215        self.raw.maxGeometryShaderInvocations = max_geometry_shader_invocations.into();
16216        self
16217    }
16218
16219    pub fn max_geometry_input_components<'m>(mut self, max_geometry_input_components: u32) -> PhysicalDeviceLimitsBuilder {
16220        self.raw.maxGeometryInputComponents = max_geometry_input_components.into();
16221        self
16222    }
16223
16224    pub fn max_geometry_output_components<'m>(mut self, max_geometry_output_components: u32) -> PhysicalDeviceLimitsBuilder {
16225        self.raw.maxGeometryOutputComponents = max_geometry_output_components.into();
16226        self
16227    }
16228
16229    pub fn max_geometry_output_vertices<'m>(mut self, max_geometry_output_vertices: u32) -> PhysicalDeviceLimitsBuilder {
16230        self.raw.maxGeometryOutputVertices = max_geometry_output_vertices.into();
16231        self
16232    }
16233
16234    pub fn max_geometry_total_output_components<'m>(mut self, max_geometry_total_output_components: u32) -> PhysicalDeviceLimitsBuilder {
16235        self.raw.maxGeometryTotalOutputComponents = max_geometry_total_output_components.into();
16236        self
16237    }
16238
16239    pub fn max_fragment_input_components<'m>(mut self, max_fragment_input_components: u32) -> PhysicalDeviceLimitsBuilder {
16240        self.raw.maxFragmentInputComponents = max_fragment_input_components.into();
16241        self
16242    }
16243
16244    pub fn max_fragment_output_attachments<'m>(mut self, max_fragment_output_attachments: u32) -> PhysicalDeviceLimitsBuilder {
16245        self.raw.maxFragmentOutputAttachments = max_fragment_output_attachments.into();
16246        self
16247    }
16248
16249    pub fn max_fragment_dual_src_attachments<'m>(mut self, max_fragment_dual_src_attachments: u32) -> PhysicalDeviceLimitsBuilder {
16250        self.raw.maxFragmentDualSrcAttachments = max_fragment_dual_src_attachments.into();
16251        self
16252    }
16253
16254    pub fn max_fragment_combined_output_resources<'m>(mut self, max_fragment_combined_output_resources: u32) -> PhysicalDeviceLimitsBuilder {
16255        self.raw.maxFragmentCombinedOutputResources = max_fragment_combined_output_resources.into();
16256        self
16257    }
16258
16259    pub fn max_compute_shared_memory_size<'m>(mut self, max_compute_shared_memory_size: u32) -> PhysicalDeviceLimitsBuilder {
16260        self.raw.maxComputeSharedMemorySize = max_compute_shared_memory_size.into();
16261        self
16262    }
16263
16264    pub fn max_compute_work_group_count<'m>(mut self, max_compute_work_group_count: [u32; 3]) -> PhysicalDeviceLimitsBuilder {
16265        self.raw.maxComputeWorkGroupCount = max_compute_work_group_count;
16266        self
16267    }
16268
16269    pub fn max_compute_work_group_invocations<'m>(mut self, max_compute_work_group_invocations: u32) -> PhysicalDeviceLimitsBuilder {
16270        self.raw.maxComputeWorkGroupInvocations = max_compute_work_group_invocations.into();
16271        self
16272    }
16273
16274    pub fn max_compute_work_group_size<'m>(mut self, max_compute_work_group_size: [u32; 3]) -> PhysicalDeviceLimitsBuilder {
16275        self.raw.maxComputeWorkGroupSize = max_compute_work_group_size;
16276        self
16277    }
16278
16279    pub fn sub_pixel_precision_bits<'m>(mut self, sub_pixel_precision_bits: u32) -> PhysicalDeviceLimitsBuilder {
16280        self.raw.subPixelPrecisionBits = sub_pixel_precision_bits.into();
16281        self
16282    }
16283
16284    pub fn sub_texel_precision_bits<'m>(mut self, sub_texel_precision_bits: u32) -> PhysicalDeviceLimitsBuilder {
16285        self.raw.subTexelPrecisionBits = sub_texel_precision_bits.into();
16286        self
16287    }
16288
16289    pub fn mipmap_precision_bits<'m>(mut self, mipmap_precision_bits: u32) -> PhysicalDeviceLimitsBuilder {
16290        self.raw.mipmapPrecisionBits = mipmap_precision_bits.into();
16291        self
16292    }
16293
16294    pub fn max_draw_indexed_index_value<'m>(mut self, max_draw_indexed_index_value: u32) -> PhysicalDeviceLimitsBuilder {
16295        self.raw.maxDrawIndexedIndexValue = max_draw_indexed_index_value.into();
16296        self
16297    }
16298
16299    pub fn max_draw_indirect_count<'m>(mut self, max_draw_indirect_count: u32) -> PhysicalDeviceLimitsBuilder {
16300        self.raw.maxDrawIndirectCount = max_draw_indirect_count.into();
16301        self
16302    }
16303
16304    pub fn max_sampler_lod_bias<'m>(mut self, max_sampler_lod_bias: f32) -> PhysicalDeviceLimitsBuilder {
16305        self.raw.maxSamplerLodBias = max_sampler_lod_bias.into();
16306        self
16307    }
16308
16309    pub fn max_sampler_anisotropy<'m>(mut self, max_sampler_anisotropy: f32) -> PhysicalDeviceLimitsBuilder {
16310        self.raw.maxSamplerAnisotropy = max_sampler_anisotropy.into();
16311        self
16312    }
16313
16314    pub fn max_viewports<'m>(mut self, max_viewports: u32) -> PhysicalDeviceLimitsBuilder {
16315        self.raw.maxViewports = max_viewports.into();
16316        self
16317    }
16318
16319    pub fn max_viewport_dimensions<'m>(mut self, max_viewport_dimensions: [u32; 2]) -> PhysicalDeviceLimitsBuilder {
16320        self.raw.maxViewportDimensions = max_viewport_dimensions;
16321        self
16322    }
16323
16324    pub fn viewport_bounds_range<'m>(mut self, viewport_bounds_range: [f32; 2]) -> PhysicalDeviceLimitsBuilder {
16325        self.raw.viewportBoundsRange = viewport_bounds_range;
16326        self
16327    }
16328
16329    pub fn viewport_sub_pixel_bits<'m>(mut self, viewport_sub_pixel_bits: u32) -> PhysicalDeviceLimitsBuilder {
16330        self.raw.viewportSubPixelBits = viewport_sub_pixel_bits.into();
16331        self
16332    }
16333
16334    pub fn min_memory_map_alignment<'m>(mut self, min_memory_map_alignment: usize) -> PhysicalDeviceLimitsBuilder {
16335        self.raw.minMemoryMapAlignment = min_memory_map_alignment.into();
16336        self
16337    }
16338
16339    pub fn min_texel_buffer_offset_alignment<'m>(mut self, min_texel_buffer_offset_alignment: u64) -> PhysicalDeviceLimitsBuilder {
16340        self.raw.minTexelBufferOffsetAlignment = min_texel_buffer_offset_alignment.into();
16341        self
16342    }
16343
16344    pub fn min_uniform_buffer_offset_alignment<'m>(mut self, min_uniform_buffer_offset_alignment: u64) -> PhysicalDeviceLimitsBuilder {
16345        self.raw.minUniformBufferOffsetAlignment = min_uniform_buffer_offset_alignment.into();
16346        self
16347    }
16348
16349    pub fn min_storage_buffer_offset_alignment<'m>(mut self, min_storage_buffer_offset_alignment: u64) -> PhysicalDeviceLimitsBuilder {
16350        self.raw.minStorageBufferOffsetAlignment = min_storage_buffer_offset_alignment.into();
16351        self
16352    }
16353
16354    pub fn min_texel_offset<'m>(mut self, min_texel_offset: i32) -> PhysicalDeviceLimitsBuilder {
16355        self.raw.minTexelOffset = min_texel_offset.into();
16356        self
16357    }
16358
16359    pub fn max_texel_offset<'m>(mut self, max_texel_offset: u32) -> PhysicalDeviceLimitsBuilder {
16360        self.raw.maxTexelOffset = max_texel_offset.into();
16361        self
16362    }
16363
16364    pub fn min_texel_gather_offset<'m>(mut self, min_texel_gather_offset: i32) -> PhysicalDeviceLimitsBuilder {
16365        self.raw.minTexelGatherOffset = min_texel_gather_offset.into();
16366        self
16367    }
16368
16369    pub fn max_texel_gather_offset<'m>(mut self, max_texel_gather_offset: u32) -> PhysicalDeviceLimitsBuilder {
16370        self.raw.maxTexelGatherOffset = max_texel_gather_offset.into();
16371        self
16372    }
16373
16374    pub fn min_interpolation_offset<'m>(mut self, min_interpolation_offset: f32) -> PhysicalDeviceLimitsBuilder {
16375        self.raw.minInterpolationOffset = min_interpolation_offset.into();
16376        self
16377    }
16378
16379    pub fn max_interpolation_offset<'m>(mut self, max_interpolation_offset: f32) -> PhysicalDeviceLimitsBuilder {
16380        self.raw.maxInterpolationOffset = max_interpolation_offset.into();
16381        self
16382    }
16383
16384    pub fn sub_pixel_interpolation_offset_bits<'m>(mut self, sub_pixel_interpolation_offset_bits: u32) -> PhysicalDeviceLimitsBuilder {
16385        self.raw.subPixelInterpolationOffsetBits = sub_pixel_interpolation_offset_bits.into();
16386        self
16387    }
16388
16389    pub fn max_framebuffer_width<'m>(mut self, max_framebuffer_width: u32) -> PhysicalDeviceLimitsBuilder {
16390        self.raw.maxFramebufferWidth = max_framebuffer_width.into();
16391        self
16392    }
16393
16394    pub fn max_framebuffer_height<'m>(mut self, max_framebuffer_height: u32) -> PhysicalDeviceLimitsBuilder {
16395        self.raw.maxFramebufferHeight = max_framebuffer_height.into();
16396        self
16397    }
16398
16399    pub fn max_framebuffer_layers<'m>(mut self, max_framebuffer_layers: u32) -> PhysicalDeviceLimitsBuilder {
16400        self.raw.maxFramebufferLayers = max_framebuffer_layers.into();
16401        self
16402    }
16403
16404    pub fn framebuffer_color_sample_counts<'m>(mut self, framebuffer_color_sample_counts: SampleCountFlags) -> PhysicalDeviceLimitsBuilder {
16405        self.raw.framebufferColorSampleCounts = framebuffer_color_sample_counts.bits();
16406        self
16407    }
16408
16409    pub fn framebuffer_depth_sample_counts<'m>(mut self, framebuffer_depth_sample_counts: SampleCountFlags) -> PhysicalDeviceLimitsBuilder {
16410        self.raw.framebufferDepthSampleCounts = framebuffer_depth_sample_counts.bits();
16411        self
16412    }
16413
16414    pub fn framebuffer_stencil_sample_counts<'m>(mut self, framebuffer_stencil_sample_counts: SampleCountFlags) -> PhysicalDeviceLimitsBuilder {
16415        self.raw.framebufferStencilSampleCounts = framebuffer_stencil_sample_counts.bits();
16416        self
16417    }
16418
16419    pub fn framebuffer_no_attachments_sample_counts<'m>(mut self, framebuffer_no_attachments_sample_counts: SampleCountFlags) -> PhysicalDeviceLimitsBuilder {
16420        self.raw.framebufferNoAttachmentsSampleCounts = framebuffer_no_attachments_sample_counts.bits();
16421        self
16422    }
16423
16424    pub fn max_color_attachments<'m>(mut self, max_color_attachments: u32) -> PhysicalDeviceLimitsBuilder {
16425        self.raw.maxColorAttachments = max_color_attachments.into();
16426        self
16427    }
16428
16429    pub fn sampled_image_color_sample_counts<'m>(mut self, sampled_image_color_sample_counts: SampleCountFlags) -> PhysicalDeviceLimitsBuilder {
16430        self.raw.sampledImageColorSampleCounts = sampled_image_color_sample_counts.bits();
16431        self
16432    }
16433
16434    pub fn sampled_image_integer_sample_counts<'m>(mut self, sampled_image_integer_sample_counts: SampleCountFlags) -> PhysicalDeviceLimitsBuilder {
16435        self.raw.sampledImageIntegerSampleCounts = sampled_image_integer_sample_counts.bits();
16436        self
16437    }
16438
16439    pub fn sampled_image_depth_sample_counts<'m>(mut self, sampled_image_depth_sample_counts: SampleCountFlags) -> PhysicalDeviceLimitsBuilder {
16440        self.raw.sampledImageDepthSampleCounts = sampled_image_depth_sample_counts.bits();
16441        self
16442    }
16443
16444    pub fn sampled_image_stencil_sample_counts<'m>(mut self, sampled_image_stencil_sample_counts: SampleCountFlags) -> PhysicalDeviceLimitsBuilder {
16445        self.raw.sampledImageStencilSampleCounts = sampled_image_stencil_sample_counts.bits();
16446        self
16447    }
16448
16449    pub fn storage_image_sample_counts<'m>(mut self, storage_image_sample_counts: SampleCountFlags) -> PhysicalDeviceLimitsBuilder {
16450        self.raw.storageImageSampleCounts = storage_image_sample_counts.bits();
16451        self
16452    }
16453
16454    pub fn max_sample_mask_words<'m>(mut self, max_sample_mask_words: u32) -> PhysicalDeviceLimitsBuilder {
16455        self.raw.maxSampleMaskWords = max_sample_mask_words.into();
16456        self
16457    }
16458
16459    pub fn timestamp_compute_and_graphics<'m>(mut self, timestamp_compute_and_graphics: bool) -> PhysicalDeviceLimitsBuilder {
16460        self.raw.timestampComputeAndGraphics = timestamp_compute_and_graphics as u32;
16461        self
16462    }
16463
16464    pub fn timestamp_period<'m>(mut self, timestamp_period: f32) -> PhysicalDeviceLimitsBuilder {
16465        self.raw.timestampPeriod = timestamp_period.into();
16466        self
16467    }
16468
16469    pub fn max_clip_distances<'m>(mut self, max_clip_distances: u32) -> PhysicalDeviceLimitsBuilder {
16470        self.raw.maxClipDistances = max_clip_distances.into();
16471        self
16472    }
16473
16474    pub fn max_cull_distances<'m>(mut self, max_cull_distances: u32) -> PhysicalDeviceLimitsBuilder {
16475        self.raw.maxCullDistances = max_cull_distances.into();
16476        self
16477    }
16478
16479    pub fn max_combined_clip_and_cull_distances<'m>(mut self, max_combined_clip_and_cull_distances: u32) -> PhysicalDeviceLimitsBuilder {
16480        self.raw.maxCombinedClipAndCullDistances = max_combined_clip_and_cull_distances.into();
16481        self
16482    }
16483
16484    pub fn discrete_queue_priorities<'m>(mut self, discrete_queue_priorities: u32) -> PhysicalDeviceLimitsBuilder {
16485        self.raw.discreteQueuePriorities = discrete_queue_priorities.into();
16486        self
16487    }
16488
16489    pub fn point_size_range<'m>(mut self, point_size_range: [f32; 2]) -> PhysicalDeviceLimitsBuilder {
16490        self.raw.pointSizeRange = point_size_range;
16491        self
16492    }
16493
16494    pub fn line_width_range<'m>(mut self, line_width_range: [f32; 2]) -> PhysicalDeviceLimitsBuilder {
16495        self.raw.lineWidthRange = line_width_range;
16496        self
16497    }
16498
16499    pub fn point_size_granularity<'m>(mut self, point_size_granularity: f32) -> PhysicalDeviceLimitsBuilder {
16500        self.raw.pointSizeGranularity = point_size_granularity.into();
16501        self
16502    }
16503
16504    pub fn line_width_granularity<'m>(mut self, line_width_granularity: f32) -> PhysicalDeviceLimitsBuilder {
16505        self.raw.lineWidthGranularity = line_width_granularity.into();
16506        self
16507    }
16508
16509    pub fn strict_lines<'m>(mut self, strict_lines: bool) -> PhysicalDeviceLimitsBuilder {
16510        self.raw.strictLines = strict_lines as u32;
16511        self
16512    }
16513
16514    pub fn standard_sample_locations<'m>(mut self, standard_sample_locations: bool) -> PhysicalDeviceLimitsBuilder {
16515        self.raw.standardSampleLocations = standard_sample_locations as u32;
16516        self
16517    }
16518
16519    pub fn optimal_buffer_copy_offset_alignment<'m>(mut self, optimal_buffer_copy_offset_alignment: u64) -> PhysicalDeviceLimitsBuilder {
16520        self.raw.optimalBufferCopyOffsetAlignment = optimal_buffer_copy_offset_alignment.into();
16521        self
16522    }
16523
16524    pub fn optimal_buffer_copy_row_pitch_alignment<'m>(mut self, optimal_buffer_copy_row_pitch_alignment: u64) -> PhysicalDeviceLimitsBuilder {
16525        self.raw.optimalBufferCopyRowPitchAlignment = optimal_buffer_copy_row_pitch_alignment.into();
16526        self
16527    }
16528
16529    pub fn non_coherent_atom_size<'m>(mut self, non_coherent_atom_size: u64) -> PhysicalDeviceLimitsBuilder {
16530        self.raw.nonCoherentAtomSize = non_coherent_atom_size.into();
16531        self
16532    }
16533
16534    pub fn get_max_image_dimension_1d<'a>(&'a self) -> u32 {
16535        self.raw.maxImageDimension1D.into()
16536    }
16537
16538    pub fn get_max_image_dimension_2d<'a>(&'a self) -> u32 {
16539        self.raw.maxImageDimension2D.into()
16540    }
16541
16542    pub fn get_max_image_dimension_3d<'a>(&'a self) -> u32 {
16543        self.raw.maxImageDimension3D.into()
16544    }
16545
16546    pub fn get_max_image_dimension_cube<'a>(&'a self) -> u32 {
16547        self.raw.maxImageDimensionCube.into()
16548    }
16549
16550    pub fn get_max_image_array_layers<'a>(&'a self) -> u32 {
16551        self.raw.maxImageArrayLayers.into()
16552    }
16553
16554    pub fn get_max_texel_buffer_elements<'a>(&'a self) -> u32 {
16555        self.raw.maxTexelBufferElements.into()
16556    }
16557
16558    pub fn get_max_uniform_buffer_range<'a>(&'a self) -> u32 {
16559        self.raw.maxUniformBufferRange.into()
16560    }
16561
16562    pub fn get_max_storage_buffer_range<'a>(&'a self) -> u32 {
16563        self.raw.maxStorageBufferRange.into()
16564    }
16565
16566    pub fn get_max_push_constants_size<'a>(&'a self) -> u32 {
16567        self.raw.maxPushConstantsSize.into()
16568    }
16569
16570    pub fn get_max_memory_allocation_count<'a>(&'a self) -> u32 {
16571        self.raw.maxMemoryAllocationCount.into()
16572    }
16573
16574    pub fn get_max_sampler_allocation_count<'a>(&'a self) -> u32 {
16575        self.raw.maxSamplerAllocationCount.into()
16576    }
16577
16578    pub fn get_buffer_image_granularity<'a>(&'a self) -> u64 {
16579        self.raw.bufferImageGranularity.into()
16580    }
16581
16582    pub fn get_sparse_address_space_size<'a>(&'a self) -> u64 {
16583        self.raw.sparseAddressSpaceSize.into()
16584    }
16585
16586    pub fn get_max_bound_descriptor_sets<'a>(&'a self) -> u32 {
16587        self.raw.maxBoundDescriptorSets.into()
16588    }
16589
16590    pub fn get_max_per_stage_descriptor_samplers<'a>(&'a self) -> u32 {
16591        self.raw.maxPerStageDescriptorSamplers.into()
16592    }
16593
16594    pub fn get_max_per_stage_descriptor_uniform_buffers<'a>(&'a self) -> u32 {
16595        self.raw.maxPerStageDescriptorUniformBuffers.into()
16596    }
16597
16598    pub fn get_max_per_stage_descriptor_storage_buffers<'a>(&'a self) -> u32 {
16599        self.raw.maxPerStageDescriptorStorageBuffers.into()
16600    }
16601
16602    pub fn get_max_per_stage_descriptor_sampled_images<'a>(&'a self) -> u32 {
16603        self.raw.maxPerStageDescriptorSampledImages.into()
16604    }
16605
16606    pub fn get_max_per_stage_descriptor_storage_images<'a>(&'a self) -> u32 {
16607        self.raw.maxPerStageDescriptorStorageImages.into()
16608    }
16609
16610    pub fn get_max_per_stage_descriptor_input_attachments<'a>(&'a self) -> u32 {
16611        self.raw.maxPerStageDescriptorInputAttachments.into()
16612    }
16613
16614    pub fn get_max_per_stage_resources<'a>(&'a self) -> u32 {
16615        self.raw.maxPerStageResources.into()
16616    }
16617
16618    pub fn get_max_descriptor_set_samplers<'a>(&'a self) -> u32 {
16619        self.raw.maxDescriptorSetSamplers.into()
16620    }
16621
16622    pub fn get_max_descriptor_set_uniform_buffers<'a>(&'a self) -> u32 {
16623        self.raw.maxDescriptorSetUniformBuffers.into()
16624    }
16625
16626    pub fn get_max_descriptor_set_uniform_buffers_dynamic<'a>(&'a self) -> u32 {
16627        self.raw.maxDescriptorSetUniformBuffersDynamic.into()
16628    }
16629
16630    pub fn get_max_descriptor_set_storage_buffers<'a>(&'a self) -> u32 {
16631        self.raw.maxDescriptorSetStorageBuffers.into()
16632    }
16633
16634    pub fn get_max_descriptor_set_storage_buffers_dynamic<'a>(&'a self) -> u32 {
16635        self.raw.maxDescriptorSetStorageBuffersDynamic.into()
16636    }
16637
16638    pub fn get_max_descriptor_set_sampled_images<'a>(&'a self) -> u32 {
16639        self.raw.maxDescriptorSetSampledImages.into()
16640    }
16641
16642    pub fn get_max_descriptor_set_storage_images<'a>(&'a self) -> u32 {
16643        self.raw.maxDescriptorSetStorageImages.into()
16644    }
16645
16646    pub fn get_max_descriptor_set_input_attachments<'a>(&'a self) -> u32 {
16647        self.raw.maxDescriptorSetInputAttachments.into()
16648    }
16649
16650    pub fn get_max_vertex_input_attributes<'a>(&'a self) -> u32 {
16651        self.raw.maxVertexInputAttributes.into()
16652    }
16653
16654    pub fn get_max_vertex_input_bindings<'a>(&'a self) -> u32 {
16655        self.raw.maxVertexInputBindings.into()
16656    }
16657
16658    pub fn get_max_vertex_input_attribute_offset<'a>(&'a self) -> u32 {
16659        self.raw.maxVertexInputAttributeOffset.into()
16660    }
16661
16662    pub fn get_max_vertex_input_binding_stride<'a>(&'a self) -> u32 {
16663        self.raw.maxVertexInputBindingStride.into()
16664    }
16665
16666    pub fn get_max_vertex_output_components<'a>(&'a self) -> u32 {
16667        self.raw.maxVertexOutputComponents.into()
16668    }
16669
16670    pub fn get_max_tessellation_generation_level<'a>(&'a self) -> u32 {
16671        self.raw.maxTessellationGenerationLevel.into()
16672    }
16673
16674    pub fn get_max_tessellation_patch_size<'a>(&'a self) -> u32 {
16675        self.raw.maxTessellationPatchSize.into()
16676    }
16677
16678    pub fn get_max_tessellation_control_per_vertex_input_components<'a>(&'a self) -> u32 {
16679        self.raw.maxTessellationControlPerVertexInputComponents.into()
16680    }
16681
16682    pub fn get_max_tessellation_control_per_vertex_output_components<'a>(&'a self) -> u32 {
16683        self.raw.maxTessellationControlPerVertexOutputComponents.into()
16684    }
16685
16686    pub fn get_max_tessellation_control_per_patch_output_components<'a>(&'a self) -> u32 {
16687        self.raw.maxTessellationControlPerPatchOutputComponents.into()
16688    }
16689
16690    pub fn get_max_tessellation_control_total_output_components<'a>(&'a self) -> u32 {
16691        self.raw.maxTessellationControlTotalOutputComponents.into()
16692    }
16693
16694    pub fn get_max_tessellation_evaluation_input_components<'a>(&'a self) -> u32 {
16695        self.raw.maxTessellationEvaluationInputComponents.into()
16696    }
16697
16698    pub fn get_max_tessellation_evaluation_output_components<'a>(&'a self) -> u32 {
16699        self.raw.maxTessellationEvaluationOutputComponents.into()
16700    }
16701
16702    pub fn get_max_geometry_shader_invocations<'a>(&'a self) -> u32 {
16703        self.raw.maxGeometryShaderInvocations.into()
16704    }
16705
16706    pub fn get_max_geometry_input_components<'a>(&'a self) -> u32 {
16707        self.raw.maxGeometryInputComponents.into()
16708    }
16709
16710    pub fn get_max_geometry_output_components<'a>(&'a self) -> u32 {
16711        self.raw.maxGeometryOutputComponents.into()
16712    }
16713
16714    pub fn get_max_geometry_output_vertices<'a>(&'a self) -> u32 {
16715        self.raw.maxGeometryOutputVertices.into()
16716    }
16717
16718    pub fn get_max_geometry_total_output_components<'a>(&'a self) -> u32 {
16719        self.raw.maxGeometryTotalOutputComponents.into()
16720    }
16721
16722    pub fn get_max_fragment_input_components<'a>(&'a self) -> u32 {
16723        self.raw.maxFragmentInputComponents.into()
16724    }
16725
16726    pub fn get_max_fragment_output_attachments<'a>(&'a self) -> u32 {
16727        self.raw.maxFragmentOutputAttachments.into()
16728    }
16729
16730    pub fn get_max_fragment_dual_src_attachments<'a>(&'a self) -> u32 {
16731        self.raw.maxFragmentDualSrcAttachments.into()
16732    }
16733
16734    pub fn get_max_fragment_combined_output_resources<'a>(&'a self) -> u32 {
16735        self.raw.maxFragmentCombinedOutputResources.into()
16736    }
16737
16738    pub fn get_max_compute_shared_memory_size<'a>(&'a self) -> u32 {
16739        self.raw.maxComputeSharedMemorySize.into()
16740    }
16741
16742    pub fn get_max_compute_work_group_count<'a>(&'a self) -> &[u32] {
16743        unsafe { slice::from_raw_parts(&self.raw.maxComputeWorkGroupCount as *const _, 3 as usize) }
16744    }
16745
16746    pub fn get_max_compute_work_group_invocations<'a>(&'a self) -> u32 {
16747        self.raw.maxComputeWorkGroupInvocations.into()
16748    }
16749
16750    pub fn get_max_compute_work_group_size<'a>(&'a self) -> &[u32] {
16751        unsafe { slice::from_raw_parts(&self.raw.maxComputeWorkGroupSize as *const _, 3 as usize) }
16752    }
16753
16754    pub fn get_sub_pixel_precision_bits<'a>(&'a self) -> u32 {
16755        self.raw.subPixelPrecisionBits.into()
16756    }
16757
16758    pub fn get_sub_texel_precision_bits<'a>(&'a self) -> u32 {
16759        self.raw.subTexelPrecisionBits.into()
16760    }
16761
16762    pub fn get_mipmap_precision_bits<'a>(&'a self) -> u32 {
16763        self.raw.mipmapPrecisionBits.into()
16764    }
16765
16766    pub fn get_max_draw_indexed_index_value<'a>(&'a self) -> u32 {
16767        self.raw.maxDrawIndexedIndexValue.into()
16768    }
16769
16770    pub fn get_max_draw_indirect_count<'a>(&'a self) -> u32 {
16771        self.raw.maxDrawIndirectCount.into()
16772    }
16773
16774    pub fn get_max_sampler_lod_bias<'a>(&'a self) -> f32 {
16775        self.raw.maxSamplerLodBias.into()
16776    }
16777
16778    pub fn get_max_sampler_anisotropy<'a>(&'a self) -> f32 {
16779        self.raw.maxSamplerAnisotropy.into()
16780    }
16781
16782    pub fn get_max_viewports<'a>(&'a self) -> u32 {
16783        self.raw.maxViewports.into()
16784    }
16785
16786    pub fn get_max_viewport_dimensions<'a>(&'a self) -> &[u32] {
16787        unsafe { slice::from_raw_parts(&self.raw.maxViewportDimensions as *const _, 2 as usize) }
16788    }
16789
16790    pub fn get_viewport_bounds_range<'a>(&'a self) -> &[f32] {
16791        unsafe { slice::from_raw_parts(&self.raw.viewportBoundsRange as *const _, 2 as usize) }
16792    }
16793
16794    pub fn get_viewport_sub_pixel_bits<'a>(&'a self) -> u32 {
16795        self.raw.viewportSubPixelBits.into()
16796    }
16797
16798    pub fn get_min_memory_map_alignment<'a>(&'a self) -> usize {
16799        self.raw.minMemoryMapAlignment.into()
16800    }
16801
16802    pub fn get_min_texel_buffer_offset_alignment<'a>(&'a self) -> u64 {
16803        self.raw.minTexelBufferOffsetAlignment.into()
16804    }
16805
16806    pub fn get_min_uniform_buffer_offset_alignment<'a>(&'a self) -> u64 {
16807        self.raw.minUniformBufferOffsetAlignment.into()
16808    }
16809
16810    pub fn get_min_storage_buffer_offset_alignment<'a>(&'a self) -> u64 {
16811        self.raw.minStorageBufferOffsetAlignment.into()
16812    }
16813
16814    pub fn get_min_texel_offset<'a>(&'a self) -> i32 {
16815        self.raw.minTexelOffset.into()
16816    }
16817
16818    pub fn get_max_texel_offset<'a>(&'a self) -> u32 {
16819        self.raw.maxTexelOffset.into()
16820    }
16821
16822    pub fn get_min_texel_gather_offset<'a>(&'a self) -> i32 {
16823        self.raw.minTexelGatherOffset.into()
16824    }
16825
16826    pub fn get_max_texel_gather_offset<'a>(&'a self) -> u32 {
16827        self.raw.maxTexelGatherOffset.into()
16828    }
16829
16830    pub fn get_min_interpolation_offset<'a>(&'a self) -> f32 {
16831        self.raw.minInterpolationOffset.into()
16832    }
16833
16834    pub fn get_max_interpolation_offset<'a>(&'a self) -> f32 {
16835        self.raw.maxInterpolationOffset.into()
16836    }
16837
16838    pub fn get_sub_pixel_interpolation_offset_bits<'a>(&'a self) -> u32 {
16839        self.raw.subPixelInterpolationOffsetBits.into()
16840    }
16841
16842    pub fn get_max_framebuffer_width<'a>(&'a self) -> u32 {
16843        self.raw.maxFramebufferWidth.into()
16844    }
16845
16846    pub fn get_max_framebuffer_height<'a>(&'a self) -> u32 {
16847        self.raw.maxFramebufferHeight.into()
16848    }
16849
16850    pub fn get_max_framebuffer_layers<'a>(&'a self) -> u32 {
16851        self.raw.maxFramebufferLayers.into()
16852    }
16853
16854    pub fn get_framebuffer_color_sample_counts<'a>(&'a self) -> SampleCountFlags {
16855        SampleCountFlags::from_bits(self.raw.framebufferColorSampleCounts)
16856            .expect("PhysicalDeviceLimits::framebuffer_color_sample_counts: error converting flags")
16857    }
16858
16859    pub fn get_framebuffer_depth_sample_counts<'a>(&'a self) -> SampleCountFlags {
16860        SampleCountFlags::from_bits(self.raw.framebufferDepthSampleCounts)
16861            .expect("PhysicalDeviceLimits::framebuffer_depth_sample_counts: error converting flags")
16862    }
16863
16864    pub fn get_framebuffer_stencil_sample_counts<'a>(&'a self) -> SampleCountFlags {
16865        SampleCountFlags::from_bits(self.raw.framebufferStencilSampleCounts)
16866            .expect("PhysicalDeviceLimits::framebuffer_stencil_sample_counts: error converting flags")
16867    }
16868
16869    pub fn get_framebuffer_no_attachments_sample_counts<'a>(&'a self) -> SampleCountFlags {
16870        SampleCountFlags::from_bits(self.raw.framebufferNoAttachmentsSampleCounts)
16871            .expect("PhysicalDeviceLimits::framebuffer_no_attachments_sample_counts: error converting flags")
16872    }
16873
16874    pub fn get_max_color_attachments<'a>(&'a self) -> u32 {
16875        self.raw.maxColorAttachments.into()
16876    }
16877
16878    pub fn get_sampled_image_color_sample_counts<'a>(&'a self) -> SampleCountFlags {
16879        SampleCountFlags::from_bits(self.raw.sampledImageColorSampleCounts)
16880            .expect("PhysicalDeviceLimits::sampled_image_color_sample_counts: error converting flags")
16881    }
16882
16883    pub fn get_sampled_image_integer_sample_counts<'a>(&'a self) -> SampleCountFlags {
16884        SampleCountFlags::from_bits(self.raw.sampledImageIntegerSampleCounts)
16885            .expect("PhysicalDeviceLimits::sampled_image_integer_sample_counts: error converting flags")
16886    }
16887
16888    pub fn get_sampled_image_depth_sample_counts<'a>(&'a self) -> SampleCountFlags {
16889        SampleCountFlags::from_bits(self.raw.sampledImageDepthSampleCounts)
16890            .expect("PhysicalDeviceLimits::sampled_image_depth_sample_counts: error converting flags")
16891    }
16892
16893    pub fn get_sampled_image_stencil_sample_counts<'a>(&'a self) -> SampleCountFlags {
16894        SampleCountFlags::from_bits(self.raw.sampledImageStencilSampleCounts)
16895            .expect("PhysicalDeviceLimits::sampled_image_stencil_sample_counts: error converting flags")
16896    }
16897
16898    pub fn get_storage_image_sample_counts<'a>(&'a self) -> SampleCountFlags {
16899        SampleCountFlags::from_bits(self.raw.storageImageSampleCounts)
16900            .expect("PhysicalDeviceLimits::storage_image_sample_counts: error converting flags")
16901    }
16902
16903    pub fn get_max_sample_mask_words<'a>(&'a self) -> u32 {
16904        self.raw.maxSampleMaskWords.into()
16905    }
16906
16907    pub fn get_timestamp_compute_and_graphics<'a>(&'a self) -> bool {
16908        self.raw.timestampComputeAndGraphics != 0
16909    }
16910
16911    pub fn get_timestamp_period<'a>(&'a self) -> f32 {
16912        self.raw.timestampPeriod.into()
16913    }
16914
16915    pub fn get_max_clip_distances<'a>(&'a self) -> u32 {
16916        self.raw.maxClipDistances.into()
16917    }
16918
16919    pub fn get_max_cull_distances<'a>(&'a self) -> u32 {
16920        self.raw.maxCullDistances.into()
16921    }
16922
16923    pub fn get_max_combined_clip_and_cull_distances<'a>(&'a self) -> u32 {
16924        self.raw.maxCombinedClipAndCullDistances.into()
16925    }
16926
16927    pub fn get_discrete_queue_priorities<'a>(&'a self) -> u32 {
16928        self.raw.discreteQueuePriorities.into()
16929    }
16930
16931    pub fn get_point_size_range<'a>(&'a self) -> &[f32] {
16932        unsafe { slice::from_raw_parts(&self.raw.pointSizeRange as *const _, 2 as usize) }
16933    }
16934
16935    pub fn get_line_width_range<'a>(&'a self) -> &[f32] {
16936        unsafe { slice::from_raw_parts(&self.raw.lineWidthRange as *const _, 2 as usize) }
16937    }
16938
16939    pub fn get_point_size_granularity<'a>(&'a self) -> f32 {
16940        self.raw.pointSizeGranularity.into()
16941    }
16942
16943    pub fn get_line_width_granularity<'a>(&'a self) -> f32 {
16944        self.raw.lineWidthGranularity.into()
16945    }
16946
16947    pub fn get_strict_lines<'a>(&'a self) -> bool {
16948        self.raw.strictLines != 0
16949    }
16950
16951    pub fn get_standard_sample_locations<'a>(&'a self) -> bool {
16952        self.raw.standardSampleLocations != 0
16953    }
16954
16955    pub fn get_optimal_buffer_copy_offset_alignment<'a>(&'a self) -> u64 {
16956        self.raw.optimalBufferCopyOffsetAlignment.into()
16957    }
16958
16959    pub fn get_optimal_buffer_copy_row_pitch_alignment<'a>(&'a self) -> u64 {
16960        self.raw.optimalBufferCopyRowPitchAlignment.into()
16961    }
16962
16963    pub fn get_non_coherent_atom_size<'a>(&'a self) -> u64 {
16964        self.raw.nonCoherentAtomSize.into()
16965    }
16966
16967    pub fn build(self) -> PhysicalDeviceLimits {
16968        PhysicalDeviceLimits {
16969            raw: self.raw,
16970        }
16971    }
16972}
16973
16974
16975/// A `VkSemaphoreCreateInfo`.
16976///
16977/// 
16978#[derive(Debug, Clone, Default)]
16979#[repr(C)]
16980pub struct SemaphoreCreateInfo<'s> {
16981    raw: vks::VkSemaphoreCreateInfo,
16982    _p: PhantomData<&'s ()>,
16983}
16984
16985impl<'s> SemaphoreCreateInfo<'s> {
16986    pub fn builder<'b>() -> SemaphoreCreateInfoBuilder<'b> {
16987        SemaphoreCreateInfoBuilder::new()
16988    }
16989
16990    pub unsafe fn from_raw(raw: vks::VkSemaphoreCreateInfo) -> SemaphoreCreateInfo<'s> {
16991        SemaphoreCreateInfo { raw, _p: PhantomData }
16992    }
16993
16994    pub fn next<'a>(&'a self) -> *const c_void {
16995        self.raw.pNext
16996    }
16997
16998    pub fn flags<'a>(&'a self) -> SemaphoreCreateFlags {
16999        SemaphoreCreateFlags::from_bits(self.raw.flags)
17000            .expect("SemaphoreCreateInfo::flags: error converting flags")
17001    }
17002
17003    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
17004        self.raw.pNext = next;
17005    }
17006
17007    pub fn set_flags<'m>(&mut self, flags: SemaphoreCreateFlags) {
17008        self.raw.flags = flags.bits();
17009    }
17010
17011    pub fn as_raw(&self) -> &vks::VkSemaphoreCreateInfo {
17012        &self.raw
17013    }
17014}
17015
17016impl<'s> From<SemaphoreCreateInfo<'s>> for vks::VkSemaphoreCreateInfo {
17017    fn from(f: SemaphoreCreateInfo<'s>) -> vks::VkSemaphoreCreateInfo {
17018        f.raw
17019    }
17020}
17021
17022
17023/// A builder for `VkSemaphoreCreateInfo`.
17024///
17025/// 
17026#[derive(Debug, Clone, Default)]
17027pub struct SemaphoreCreateInfoBuilder<'b> {
17028    raw: vks::VkSemaphoreCreateInfo,
17029    _p: PhantomData<&'b ()>, 
17030}
17031
17032impl<'b> SemaphoreCreateInfoBuilder<'b> {
17033    pub fn new() -> SemaphoreCreateInfoBuilder<'b> {
17034        SemaphoreCreateInfoBuilder {
17035            raw: vks::VkSemaphoreCreateInfo::default(),
17036            _p: PhantomData,
17037        }
17038    }
17039
17040    pub unsafe fn next<'m>(mut self, next: *const c_void) -> SemaphoreCreateInfoBuilder<'b> {
17041        self.raw.pNext = next;
17042        self
17043    }
17044
17045    pub fn flags<'m>(mut self, flags: SemaphoreCreateFlags) -> SemaphoreCreateInfoBuilder<'b> {
17046        self.raw.flags = flags.bits();
17047        self
17048    }
17049
17050    pub fn get_next<'a>(&'a self) -> *const c_void {
17051        self.raw.pNext
17052    }
17053
17054    pub fn get_flags<'a>(&'a self) -> SemaphoreCreateFlags {
17055        SemaphoreCreateFlags::from_bits(self.raw.flags)
17056            .expect("SemaphoreCreateInfo::flags: error converting flags")
17057    }
17058
17059    pub fn build(self) -> SemaphoreCreateInfo<'b> {
17060        SemaphoreCreateInfo {
17061            raw: self.raw,
17062            _p: PhantomData,
17063        }
17064    }
17065}
17066
17067
17068/// A `VkQueryPoolCreateInfo`.
17069///
17070/// 
17071#[derive(Debug, Clone, Default)]
17072#[repr(C)]
17073pub struct QueryPoolCreateInfo<'s> {
17074    raw: vks::VkQueryPoolCreateInfo,
17075    _p: PhantomData<&'s ()>,
17076}
17077
17078impl<'s> QueryPoolCreateInfo<'s> {
17079    pub fn builder<'b>() -> QueryPoolCreateInfoBuilder<'b> {
17080        QueryPoolCreateInfoBuilder::new()
17081    }
17082
17083    pub unsafe fn from_raw(raw: vks::VkQueryPoolCreateInfo) -> QueryPoolCreateInfo<'s> {
17084        QueryPoolCreateInfo { raw, _p: PhantomData }
17085    }
17086
17087    pub fn next<'a>(&'a self) -> *const c_void {
17088        self.raw.pNext
17089    }
17090
17091    pub fn flags<'a>(&'a self) -> QueryPoolCreateFlags {
17092        QueryPoolCreateFlags::from_bits(self.raw.flags)
17093            .expect("QueryPoolCreateInfo::flags: error converting flags")
17094    }
17095
17096    pub fn query_type<'a>(&'a self) -> QueryType {
17097        self.raw.queryType.into()
17098    }
17099
17100    pub fn query_count<'a>(&'a self) -> u32 {
17101        self.raw.queryCount.into()
17102    }
17103
17104    pub fn pipeline_statistics<'a>(&'a self) -> QueryPipelineStatisticFlags {
17105        QueryPipelineStatisticFlags::from_bits(self.raw.pipelineStatistics)
17106            .expect("QueryPoolCreateInfo::pipeline_statistics: error converting flags")
17107    }
17108
17109    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
17110        self.raw.pNext = next;
17111    }
17112
17113    pub fn set_flags<'m>(&mut self, flags: QueryPoolCreateFlags) {
17114        self.raw.flags = flags.bits();
17115    }
17116
17117    pub fn set_query_type<'m>(&mut self, query_type: QueryType) {
17118        self.raw.queryType = query_type.into();
17119    }
17120
17121    pub fn set_query_count<'m>(&mut self, query_count: u32) {
17122        self.raw.queryCount = query_count.into();
17123    }
17124
17125    pub fn set_pipeline_statistics<'m>(&mut self, pipeline_statistics: QueryPipelineStatisticFlags) {
17126        self.raw.pipelineStatistics = pipeline_statistics.bits();
17127    }
17128
17129    pub fn as_raw(&self) -> &vks::VkQueryPoolCreateInfo {
17130        &self.raw
17131    }
17132}
17133
17134impl<'s> From<QueryPoolCreateInfo<'s>> for vks::VkQueryPoolCreateInfo {
17135    fn from(f: QueryPoolCreateInfo<'s>) -> vks::VkQueryPoolCreateInfo {
17136        f.raw
17137    }
17138}
17139
17140
17141/// A builder for `VkQueryPoolCreateInfo`.
17142///
17143/// 
17144#[derive(Debug, Clone, Default)]
17145pub struct QueryPoolCreateInfoBuilder<'b> {
17146    raw: vks::VkQueryPoolCreateInfo,
17147    _p: PhantomData<&'b ()>, 
17148}
17149
17150impl<'b> QueryPoolCreateInfoBuilder<'b> {
17151    pub fn new() -> QueryPoolCreateInfoBuilder<'b> {
17152        QueryPoolCreateInfoBuilder {
17153            raw: vks::VkQueryPoolCreateInfo::default(),
17154            _p: PhantomData,
17155        }
17156    }
17157
17158    pub unsafe fn next<'m>(mut self, next: *const c_void) -> QueryPoolCreateInfoBuilder<'b> {
17159        self.raw.pNext = next;
17160        self
17161    }
17162
17163    pub fn flags<'m>(mut self, flags: QueryPoolCreateFlags) -> QueryPoolCreateInfoBuilder<'b> {
17164        self.raw.flags = flags.bits();
17165        self
17166    }
17167
17168    pub fn query_type<'m>(mut self, query_type: QueryType) -> QueryPoolCreateInfoBuilder<'b> {
17169        self.raw.queryType = query_type.into();
17170        self
17171    }
17172
17173    pub fn query_count<'m>(mut self, query_count: u32) -> QueryPoolCreateInfoBuilder<'b> {
17174        self.raw.queryCount = query_count.into();
17175        self
17176    }
17177
17178    pub fn pipeline_statistics<'m>(mut self, pipeline_statistics: QueryPipelineStatisticFlags) -> QueryPoolCreateInfoBuilder<'b> {
17179        self.raw.pipelineStatistics = pipeline_statistics.bits();
17180        self
17181    }
17182
17183    pub fn get_next<'a>(&'a self) -> *const c_void {
17184        self.raw.pNext
17185    }
17186
17187    pub fn get_flags<'a>(&'a self) -> QueryPoolCreateFlags {
17188        QueryPoolCreateFlags::from_bits(self.raw.flags)
17189            .expect("QueryPoolCreateInfo::flags: error converting flags")
17190    }
17191
17192    pub fn get_query_type<'a>(&'a self) -> QueryType {
17193        self.raw.queryType.into()
17194    }
17195
17196    pub fn get_query_count<'a>(&'a self) -> u32 {
17197        self.raw.queryCount.into()
17198    }
17199
17200    pub fn get_pipeline_statistics<'a>(&'a self) -> QueryPipelineStatisticFlags {
17201        QueryPipelineStatisticFlags::from_bits(self.raw.pipelineStatistics)
17202            .expect("QueryPoolCreateInfo::pipeline_statistics: error converting flags")
17203    }
17204
17205    pub fn build(self) -> QueryPoolCreateInfo<'b> {
17206        QueryPoolCreateInfo {
17207            raw: self.raw,
17208            _p: PhantomData,
17209        }
17210    }
17211}
17212
17213
17214/// A `VkFramebufferCreateInfo`.
17215///
17216/// 
17217#[derive(Debug, Clone, Default)]
17218#[repr(C)]
17219pub struct FramebufferCreateInfo<'s> {
17220    raw: vks::VkFramebufferCreateInfo,
17221    _p: PhantomData<&'s ()>,
17222}
17223
17224impl<'s> FramebufferCreateInfo<'s> {
17225    pub fn builder<'b>() -> FramebufferCreateInfoBuilder<'b> {
17226        FramebufferCreateInfoBuilder::new()
17227    }
17228
17229    pub unsafe fn from_raw(raw: vks::VkFramebufferCreateInfo) -> FramebufferCreateInfo<'s> {
17230        FramebufferCreateInfo { raw, _p: PhantomData }
17231    }
17232
17233    pub fn next<'a>(&'a self) -> *const c_void {
17234        self.raw.pNext
17235    }
17236
17237    pub fn flags<'a>(&'a self) -> FramebufferCreateFlags {
17238        FramebufferCreateFlags::from_bits(self.raw.flags)
17239            .expect("FramebufferCreateInfo::flags: error converting flags")
17240    }
17241
17242    pub fn render_pass<'a>(&'a self) -> vks::VkRenderPass {
17243        self.raw.renderPass
17244    }
17245
17246    pub fn attachments<'a>(&'a self) -> &'a [vks::VkImageView] {
17247        unsafe { slice::from_raw_parts(self.raw.pAttachments as *const _, self.raw.attachmentCount as usize) }
17248    }
17249
17250    pub fn width<'a>(&'a self) -> u32 {
17251        self.raw.width.into()
17252    }
17253
17254    pub fn height<'a>(&'a self) -> u32 {
17255        self.raw.height.into()
17256    }
17257
17258    pub fn layers<'a>(&'a self) -> u32 {
17259        self.raw.layers.into()
17260    }
17261
17262    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
17263        self.raw.pNext = next;
17264    }
17265
17266    pub fn set_flags<'m>(&mut self, flags: FramebufferCreateFlags) {
17267        self.raw.flags = flags.bits();
17268    }
17269
17270    pub fn set_render_pass<'m, H>(&mut self, render_pass: H)
17271            where H: Handle<Target=RenderPassHandle> {
17272        self.raw.renderPass = render_pass.handle().0;
17273    }
17274
17275    pub fn set_attachments<'m, 'a>(&mut self, attachments: &'a [ImageViewHandle])
17276            where 'a: 's {
17277        assert!(self.raw.attachmentCount == 0 || self.raw.attachmentCount == attachments.len() as _, 
17278            "count inconsistency found when specifying `FramebufferCreateInfo::attachments`.");
17279        self.raw.attachmentCount = attachments.len() as _;
17280        self.raw.pAttachments = attachments.as_ptr() as *const vks::VkImageView;
17281    }
17282
17283    pub fn set_width<'m>(&mut self, width: u32) {
17284        self.raw.width = width.into();
17285    }
17286
17287    pub fn set_height<'m>(&mut self, height: u32) {
17288        self.raw.height = height.into();
17289    }
17290
17291    pub fn set_layers<'m>(&mut self, layers: u32) {
17292        self.raw.layers = layers.into();
17293    }
17294
17295    pub fn as_raw(&self) -> &vks::VkFramebufferCreateInfo {
17296        &self.raw
17297    }
17298}
17299
17300impl<'s> From<FramebufferCreateInfo<'s>> for vks::VkFramebufferCreateInfo {
17301    fn from(f: FramebufferCreateInfo<'s>) -> vks::VkFramebufferCreateInfo {
17302        f.raw
17303    }
17304}
17305
17306
17307/// A builder for `VkFramebufferCreateInfo`.
17308///
17309/// 
17310#[derive(Debug, Clone, Default)]
17311pub struct FramebufferCreateInfoBuilder<'b> {
17312    raw: vks::VkFramebufferCreateInfo,
17313    _p: PhantomData<&'b ()>, 
17314}
17315
17316impl<'b> FramebufferCreateInfoBuilder<'b> {
17317    pub fn new() -> FramebufferCreateInfoBuilder<'b> {
17318        FramebufferCreateInfoBuilder {
17319            raw: vks::VkFramebufferCreateInfo::default(),
17320            _p: PhantomData,
17321        }
17322    }
17323
17324    pub unsafe fn next<'m>(mut self, next: *const c_void) -> FramebufferCreateInfoBuilder<'b> {
17325        self.raw.pNext = next;
17326        self
17327    }
17328
17329    pub fn flags<'m>(mut self, flags: FramebufferCreateFlags) -> FramebufferCreateInfoBuilder<'b> {
17330        self.raw.flags = flags.bits();
17331        self
17332    }
17333
17334    pub fn render_pass<'m, H>(mut self, render_pass: H) -> FramebufferCreateInfoBuilder<'b>
17335            where H: Handle<Target=RenderPassHandle> {
17336        self.raw.renderPass = render_pass.handle().0;
17337        self
17338    }
17339
17340    pub fn attachments<'m, 'a>(mut self, attachments: &'a [ImageViewHandle]) -> FramebufferCreateInfoBuilder<'b>
17341            where 'a: 'b {
17342        assert!(self.raw.attachmentCount == 0 || self.raw.attachmentCount == attachments.len() as _, 
17343            "count inconsistency found when specifying `FramebufferCreateInfo::attachments`.");
17344        self.raw.attachmentCount = attachments.len() as _;
17345        self.raw.pAttachments = attachments.as_ptr() as *const vks::VkImageView;
17346        self
17347    }
17348
17349    pub fn width<'m>(mut self, width: u32) -> FramebufferCreateInfoBuilder<'b> {
17350        self.raw.width = width.into();
17351        self
17352    }
17353
17354    pub fn height<'m>(mut self, height: u32) -> FramebufferCreateInfoBuilder<'b> {
17355        self.raw.height = height.into();
17356        self
17357    }
17358
17359    pub fn layers<'m>(mut self, layers: u32) -> FramebufferCreateInfoBuilder<'b> {
17360        self.raw.layers = layers.into();
17361        self
17362    }
17363
17364    pub fn get_next<'a>(&'a self) -> *const c_void {
17365        self.raw.pNext
17366    }
17367
17368    pub fn get_flags<'a>(&'a self) -> FramebufferCreateFlags {
17369        FramebufferCreateFlags::from_bits(self.raw.flags)
17370            .expect("FramebufferCreateInfo::flags: error converting flags")
17371    }
17372
17373    pub fn get_render_pass<'a>(&'a self) -> vks::VkRenderPass {
17374        self.raw.renderPass
17375    }
17376
17377    pub fn get_attachments<'a>(&'a self) -> &'a [vks::VkImageView] {
17378        unsafe { slice::from_raw_parts(self.raw.pAttachments as *const _, self.raw.attachmentCount as usize) }
17379    }
17380
17381    pub fn get_width<'a>(&'a self) -> u32 {
17382        self.raw.width.into()
17383    }
17384
17385    pub fn get_height<'a>(&'a self) -> u32 {
17386        self.raw.height.into()
17387    }
17388
17389    pub fn get_layers<'a>(&'a self) -> u32 {
17390        self.raw.layers.into()
17391    }
17392
17393    pub fn build(self) -> FramebufferCreateInfo<'b> {
17394        FramebufferCreateInfo {
17395            raw: self.raw,
17396            _p: PhantomData,
17397        }
17398    }
17399}
17400
17401
17402/// A `VkDrawIndirectCommand`.
17403///
17404/// 
17405#[derive(Debug, Clone, Default)]
17406#[repr(C)]
17407pub struct DrawIndirectCommand {
17408    raw: vks::VkDrawIndirectCommand,
17409}
17410
17411impl DrawIndirectCommand {
17412    pub fn builder() -> DrawIndirectCommandBuilder {
17413        DrawIndirectCommandBuilder::new()
17414    }
17415
17416    pub unsafe fn from_raw(raw: vks::VkDrawIndirectCommand) -> DrawIndirectCommand {
17417        DrawIndirectCommand { raw, }
17418    }
17419
17420    pub fn vertex_count<'a>(&'a self) -> u32 {
17421        self.raw.vertexCount.into()
17422    }
17423
17424    pub fn instance_count<'a>(&'a self) -> u32 {
17425        self.raw.instanceCount.into()
17426    }
17427
17428    pub fn first_vertex<'a>(&'a self) -> u32 {
17429        self.raw.firstVertex.into()
17430    }
17431
17432    pub fn first_instance<'a>(&'a self) -> u32 {
17433        self.raw.firstInstance.into()
17434    }
17435
17436    pub fn set_vertex_count<'m>(&mut self, vertex_count: u32) {
17437        self.raw.vertexCount = vertex_count.into();
17438    }
17439
17440    pub fn set_instance_count<'m>(&mut self, instance_count: u32) {
17441        self.raw.instanceCount = instance_count.into();
17442    }
17443
17444    pub fn set_first_vertex<'m>(&mut self, first_vertex: u32) {
17445        self.raw.firstVertex = first_vertex.into();
17446    }
17447
17448    pub fn set_first_instance<'m>(&mut self, first_instance: u32) {
17449        self.raw.firstInstance = first_instance.into();
17450    }
17451
17452    pub fn as_raw(&self) -> &vks::VkDrawIndirectCommand {
17453        &self.raw
17454    }
17455}
17456
17457impl From<DrawIndirectCommand> for vks::VkDrawIndirectCommand {
17458    fn from(f: DrawIndirectCommand) -> vks::VkDrawIndirectCommand {
17459        f.raw
17460    }
17461}
17462
17463
17464/// A builder for `VkDrawIndirectCommand`.
17465///
17466/// 
17467#[derive(Debug, Clone, Default)]
17468pub struct DrawIndirectCommandBuilder {
17469    raw: vks::VkDrawIndirectCommand,
17470}
17471
17472impl DrawIndirectCommandBuilder {
17473    pub fn new() -> DrawIndirectCommandBuilder {
17474        DrawIndirectCommandBuilder {
17475            raw: vks::VkDrawIndirectCommand::default(),
17476        }
17477    }
17478
17479    pub fn vertex_count<'m>(mut self, vertex_count: u32) -> DrawIndirectCommandBuilder {
17480        self.raw.vertexCount = vertex_count.into();
17481        self
17482    }
17483
17484    pub fn instance_count<'m>(mut self, instance_count: u32) -> DrawIndirectCommandBuilder {
17485        self.raw.instanceCount = instance_count.into();
17486        self
17487    }
17488
17489    pub fn first_vertex<'m>(mut self, first_vertex: u32) -> DrawIndirectCommandBuilder {
17490        self.raw.firstVertex = first_vertex.into();
17491        self
17492    }
17493
17494    pub fn first_instance<'m>(mut self, first_instance: u32) -> DrawIndirectCommandBuilder {
17495        self.raw.firstInstance = first_instance.into();
17496        self
17497    }
17498
17499    pub fn get_vertex_count<'a>(&'a self) -> u32 {
17500        self.raw.vertexCount.into()
17501    }
17502
17503    pub fn get_instance_count<'a>(&'a self) -> u32 {
17504        self.raw.instanceCount.into()
17505    }
17506
17507    pub fn get_first_vertex<'a>(&'a self) -> u32 {
17508        self.raw.firstVertex.into()
17509    }
17510
17511    pub fn get_first_instance<'a>(&'a self) -> u32 {
17512        self.raw.firstInstance.into()
17513    }
17514
17515    pub fn build(self) -> DrawIndirectCommand {
17516        DrawIndirectCommand {
17517            raw: self.raw,
17518        }
17519    }
17520}
17521
17522
17523/// A `VkDrawIndexedIndirectCommand`.
17524///
17525/// 
17526#[derive(Debug, Clone, Default)]
17527#[repr(C)]
17528pub struct DrawIndexedIndirectCommand {
17529    raw: vks::VkDrawIndexedIndirectCommand,
17530}
17531
17532impl DrawIndexedIndirectCommand {
17533    pub fn builder() -> DrawIndexedIndirectCommandBuilder {
17534        DrawIndexedIndirectCommandBuilder::new()
17535    }
17536
17537    pub unsafe fn from_raw(raw: vks::VkDrawIndexedIndirectCommand) -> DrawIndexedIndirectCommand {
17538        DrawIndexedIndirectCommand { raw, }
17539    }
17540
17541    pub fn index_count<'a>(&'a self) -> u32 {
17542        self.raw.indexCount.into()
17543    }
17544
17545    pub fn instance_count<'a>(&'a self) -> u32 {
17546        self.raw.instanceCount.into()
17547    }
17548
17549    pub fn first_index<'a>(&'a self) -> u32 {
17550        self.raw.firstIndex.into()
17551    }
17552
17553    pub fn vertex_offset<'a>(&'a self) -> i32 {
17554        self.raw.vertexOffset.into()
17555    }
17556
17557    pub fn first_instance<'a>(&'a self) -> u32 {
17558        self.raw.firstInstance.into()
17559    }
17560
17561    pub fn set_index_count<'m>(&mut self, index_count: u32) {
17562        self.raw.indexCount = index_count.into();
17563    }
17564
17565    pub fn set_instance_count<'m>(&mut self, instance_count: u32) {
17566        self.raw.instanceCount = instance_count.into();
17567    }
17568
17569    pub fn set_first_index<'m>(&mut self, first_index: u32) {
17570        self.raw.firstIndex = first_index.into();
17571    }
17572
17573    pub fn set_vertex_offset<'m>(&mut self, vertex_offset: i32) {
17574        self.raw.vertexOffset = vertex_offset.into();
17575    }
17576
17577    pub fn set_first_instance<'m>(&mut self, first_instance: u32) {
17578        self.raw.firstInstance = first_instance.into();
17579    }
17580
17581    pub fn as_raw(&self) -> &vks::VkDrawIndexedIndirectCommand {
17582        &self.raw
17583    }
17584}
17585
17586impl From<DrawIndexedIndirectCommand> for vks::VkDrawIndexedIndirectCommand {
17587    fn from(f: DrawIndexedIndirectCommand) -> vks::VkDrawIndexedIndirectCommand {
17588        f.raw
17589    }
17590}
17591
17592
17593/// A builder for `VkDrawIndexedIndirectCommand`.
17594///
17595/// 
17596#[derive(Debug, Clone, Default)]
17597pub struct DrawIndexedIndirectCommandBuilder {
17598    raw: vks::VkDrawIndexedIndirectCommand,
17599}
17600
17601impl DrawIndexedIndirectCommandBuilder {
17602    pub fn new() -> DrawIndexedIndirectCommandBuilder {
17603        DrawIndexedIndirectCommandBuilder {
17604            raw: vks::VkDrawIndexedIndirectCommand::default(),
17605        }
17606    }
17607
17608    pub fn index_count<'m>(mut self, index_count: u32) -> DrawIndexedIndirectCommandBuilder {
17609        self.raw.indexCount = index_count.into();
17610        self
17611    }
17612
17613    pub fn instance_count<'m>(mut self, instance_count: u32) -> DrawIndexedIndirectCommandBuilder {
17614        self.raw.instanceCount = instance_count.into();
17615        self
17616    }
17617
17618    pub fn first_index<'m>(mut self, first_index: u32) -> DrawIndexedIndirectCommandBuilder {
17619        self.raw.firstIndex = first_index.into();
17620        self
17621    }
17622
17623    pub fn vertex_offset<'m>(mut self, vertex_offset: i32) -> DrawIndexedIndirectCommandBuilder {
17624        self.raw.vertexOffset = vertex_offset.into();
17625        self
17626    }
17627
17628    pub fn first_instance<'m>(mut self, first_instance: u32) -> DrawIndexedIndirectCommandBuilder {
17629        self.raw.firstInstance = first_instance.into();
17630        self
17631    }
17632
17633    pub fn get_index_count<'a>(&'a self) -> u32 {
17634        self.raw.indexCount.into()
17635    }
17636
17637    pub fn get_instance_count<'a>(&'a self) -> u32 {
17638        self.raw.instanceCount.into()
17639    }
17640
17641    pub fn get_first_index<'a>(&'a self) -> u32 {
17642        self.raw.firstIndex.into()
17643    }
17644
17645    pub fn get_vertex_offset<'a>(&'a self) -> i32 {
17646        self.raw.vertexOffset.into()
17647    }
17648
17649    pub fn get_first_instance<'a>(&'a self) -> u32 {
17650        self.raw.firstInstance.into()
17651    }
17652
17653    pub fn build(self) -> DrawIndexedIndirectCommand {
17654        DrawIndexedIndirectCommand {
17655            raw: self.raw,
17656        }
17657    }
17658}
17659
17660
17661/// A `VkDispatchIndirectCommand`.
17662///
17663/// 
17664#[derive(Debug, Clone, Default)]
17665#[repr(C)]
17666pub struct DispatchIndirectCommand {
17667    raw: vks::VkDispatchIndirectCommand,
17668}
17669
17670impl DispatchIndirectCommand {
17671    pub fn builder() -> DispatchIndirectCommandBuilder {
17672        DispatchIndirectCommandBuilder::new()
17673    }
17674
17675    pub unsafe fn from_raw(raw: vks::VkDispatchIndirectCommand) -> DispatchIndirectCommand {
17676        DispatchIndirectCommand { raw, }
17677    }
17678
17679    pub fn x<'a>(&'a self) -> u32 {
17680        self.raw.x.into()
17681    }
17682
17683    pub fn y<'a>(&'a self) -> u32 {
17684        self.raw.y.into()
17685    }
17686
17687    pub fn z<'a>(&'a self) -> u32 {
17688        self.raw.z.into()
17689    }
17690
17691    pub fn set_x<'m>(&mut self, x: u32) {
17692        self.raw.x = x.into();
17693    }
17694
17695    pub fn set_y<'m>(&mut self, y: u32) {
17696        self.raw.y = y.into();
17697    }
17698
17699    pub fn set_z<'m>(&mut self, z: u32) {
17700        self.raw.z = z.into();
17701    }
17702
17703    pub fn as_raw(&self) -> &vks::VkDispatchIndirectCommand {
17704        &self.raw
17705    }
17706}
17707
17708impl From<DispatchIndirectCommand> for vks::VkDispatchIndirectCommand {
17709    fn from(f: DispatchIndirectCommand) -> vks::VkDispatchIndirectCommand {
17710        f.raw
17711    }
17712}
17713
17714
17715/// A builder for `VkDispatchIndirectCommand`.
17716///
17717/// 
17718#[derive(Debug, Clone, Default)]
17719pub struct DispatchIndirectCommandBuilder {
17720    raw: vks::VkDispatchIndirectCommand,
17721}
17722
17723impl DispatchIndirectCommandBuilder {
17724    pub fn new() -> DispatchIndirectCommandBuilder {
17725        DispatchIndirectCommandBuilder {
17726            raw: vks::VkDispatchIndirectCommand::default(),
17727        }
17728    }
17729
17730    pub fn x<'m>(mut self, x: u32) -> DispatchIndirectCommandBuilder {
17731        self.raw.x = x.into();
17732        self
17733    }
17734
17735    pub fn y<'m>(mut self, y: u32) -> DispatchIndirectCommandBuilder {
17736        self.raw.y = y.into();
17737        self
17738    }
17739
17740    pub fn z<'m>(mut self, z: u32) -> DispatchIndirectCommandBuilder {
17741        self.raw.z = z.into();
17742        self
17743    }
17744
17745    pub fn get_x<'a>(&'a self) -> u32 {
17746        self.raw.x.into()
17747    }
17748
17749    pub fn get_y<'a>(&'a self) -> u32 {
17750        self.raw.y.into()
17751    }
17752
17753    pub fn get_z<'a>(&'a self) -> u32 {
17754        self.raw.z.into()
17755    }
17756
17757    pub fn build(self) -> DispatchIndirectCommand {
17758        DispatchIndirectCommand {
17759            raw: self.raw,
17760        }
17761    }
17762}
17763
17764
17765/// A `VkSubmitInfo`.
17766///
17767/// 
17768#[derive(Debug, Clone, Default)]
17769#[repr(C)]
17770pub struct SubmitInfo<'s> {
17771    raw: vks::VkSubmitInfo,
17772    _p: PhantomData<&'s ()>,
17773}
17774
17775impl<'s> SubmitInfo<'s> {
17776    pub fn builder<'b>() -> SubmitInfoBuilder<'b> {
17777        SubmitInfoBuilder::new()
17778    }
17779
17780    pub unsafe fn from_raw(raw: vks::VkSubmitInfo) -> SubmitInfo<'s> {
17781        SubmitInfo { raw, _p: PhantomData }
17782    }
17783
17784    pub fn next<'a>(&'a self) -> *const c_void {
17785        self.raw.pNext
17786    }
17787
17788    pub fn wait_semaphores<'a>(&'a self) -> &'a [vks::VkSemaphore] {
17789        unsafe { slice::from_raw_parts(self.raw.pWaitSemaphores as *const _, self.raw.waitSemaphoreCount as usize) }
17790    }
17791
17792    pub fn wait_dst_stage_mask<'a>(&'a self) -> &'a PipelineStageFlags {
17793        unsafe { &*(self.raw.pWaitDstStageMask as *const _) }
17794    }
17795
17796    pub fn command_buffers<'a>(&'a self) -> &'a [vks::VkCommandBuffer] {
17797        unsafe { slice::from_raw_parts(self.raw.pCommandBuffers as *const _, self.raw.commandBufferCount as usize) }
17798    }
17799
17800    pub fn signal_semaphores<'a>(&'a self) -> &'a [vks::VkSemaphore] {
17801        unsafe { slice::from_raw_parts(self.raw.pSignalSemaphores as *const _, self.raw.signalSemaphoreCount as usize) }
17802    }
17803
17804    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
17805        self.raw.pNext = next;
17806    }
17807
17808    pub fn set_wait_semaphores<'m, 'a>(&mut self, wait_semaphores: &'a [SemaphoreHandle])
17809            where 'a: 's {
17810        assert!(self.raw.waitSemaphoreCount == 0 || self.raw.waitSemaphoreCount == wait_semaphores.len() as _, 
17811            "count inconsistency found when specifying `SubmitInfo::wait_semaphores`.");
17812        self.raw.waitSemaphoreCount = wait_semaphores.len() as _;
17813        self.raw.pWaitSemaphores = wait_semaphores.as_ptr() as *const vks::VkSemaphore;
17814    }
17815
17816    pub fn set_wait_dst_stage_mask<'m, 'a>(&mut self, wait_dst_stage_mask: &'a PipelineStageFlags) {
17817        self.raw.pWaitDstStageMask = wait_dst_stage_mask as *const PipelineStageFlags as *const _;
17818    }
17819
17820    pub fn set_command_buffers<'m, 'a>(&mut self, command_buffers: &'a [CommandBufferHandle])
17821            where 'a: 's {
17822        assert!(self.raw.commandBufferCount == 0 || self.raw.commandBufferCount == command_buffers.len() as _, 
17823            "count inconsistency found when specifying `SubmitInfo::command_buffers`.");
17824        self.raw.commandBufferCount = command_buffers.len() as _;
17825        self.raw.pCommandBuffers = command_buffers.as_ptr() as *const vks::VkCommandBuffer;
17826    }
17827
17828    pub fn set_signal_semaphores<'m, 'a>(&mut self, signal_semaphores: &'a [SemaphoreHandle])
17829            where 'a: 's {
17830        assert!(self.raw.signalSemaphoreCount == 0 || self.raw.signalSemaphoreCount == signal_semaphores.len() as _, 
17831            "count inconsistency found when specifying `SubmitInfo::signal_semaphores`.");
17832        self.raw.signalSemaphoreCount = signal_semaphores.len() as _;
17833        self.raw.pSignalSemaphores = signal_semaphores.as_ptr() as *const vks::VkSemaphore;
17834    }
17835
17836    pub fn as_raw(&self) -> &vks::VkSubmitInfo {
17837        &self.raw
17838    }
17839}
17840
17841impl<'s> From<SubmitInfo<'s>> for vks::VkSubmitInfo {
17842    fn from(f: SubmitInfo<'s>) -> vks::VkSubmitInfo {
17843        f.raw
17844    }
17845}
17846
17847
17848/// A builder for `VkSubmitInfo`.
17849///
17850/// 
17851#[derive(Debug, Clone, Default)]
17852pub struct SubmitInfoBuilder<'b> {
17853    raw: vks::VkSubmitInfo,
17854    _p: PhantomData<&'b ()>, 
17855}
17856
17857impl<'b> SubmitInfoBuilder<'b> {
17858    pub fn new() -> SubmitInfoBuilder<'b> {
17859        SubmitInfoBuilder {
17860            raw: vks::VkSubmitInfo::default(),
17861            _p: PhantomData,
17862        }
17863    }
17864
17865    pub unsafe fn next<'m>(mut self, next: *const c_void) -> SubmitInfoBuilder<'b> {
17866        self.raw.pNext = next;
17867        self
17868    }
17869
17870    pub fn wait_semaphores<'m, 'a>(mut self, wait_semaphores: &'a [SemaphoreHandle]) -> SubmitInfoBuilder<'b>
17871            where 'a: 'b {
17872        assert!(self.raw.waitSemaphoreCount == 0 || self.raw.waitSemaphoreCount == wait_semaphores.len() as _, 
17873            "count inconsistency found when specifying `SubmitInfo::wait_semaphores`.");
17874        self.raw.waitSemaphoreCount = wait_semaphores.len() as _;
17875        self.raw.pWaitSemaphores = wait_semaphores.as_ptr() as *const vks::VkSemaphore;
17876        self
17877    }
17878
17879    pub fn wait_dst_stage_mask<'m, 'a>(mut self, wait_dst_stage_mask: &'a PipelineStageFlags) -> SubmitInfoBuilder<'b> {
17880        self.raw.pWaitDstStageMask = wait_dst_stage_mask as *const PipelineStageFlags as *const _;
17881        self
17882    }
17883
17884    pub fn command_buffers<'m, 'a>(mut self, command_buffers: &'a [CommandBufferHandle]) -> SubmitInfoBuilder<'b>
17885            where 'a: 'b {
17886        assert!(self.raw.commandBufferCount == 0 || self.raw.commandBufferCount == command_buffers.len() as _, 
17887            "count inconsistency found when specifying `SubmitInfo::command_buffers`.");
17888        self.raw.commandBufferCount = command_buffers.len() as _;
17889        self.raw.pCommandBuffers = command_buffers.as_ptr() as *const vks::VkCommandBuffer;
17890        self
17891    }
17892
17893    pub fn signal_semaphores<'m, 'a>(mut self, signal_semaphores: &'a [SemaphoreHandle]) -> SubmitInfoBuilder<'b>
17894            where 'a: 'b {
17895        assert!(self.raw.signalSemaphoreCount == 0 || self.raw.signalSemaphoreCount == signal_semaphores.len() as _, 
17896            "count inconsistency found when specifying `SubmitInfo::signal_semaphores`.");
17897        self.raw.signalSemaphoreCount = signal_semaphores.len() as _;
17898        self.raw.pSignalSemaphores = signal_semaphores.as_ptr() as *const vks::VkSemaphore;
17899        self
17900    }
17901
17902    pub fn get_next<'a>(&'a self) -> *const c_void {
17903        self.raw.pNext
17904    }
17905
17906    pub fn get_wait_semaphores<'a>(&'a self) -> &'a [vks::VkSemaphore] {
17907        unsafe { slice::from_raw_parts(self.raw.pWaitSemaphores as *const _, self.raw.waitSemaphoreCount as usize) }
17908    }
17909
17910    pub fn get_wait_dst_stage_mask<'a>(&'a self) -> &'a PipelineStageFlags {
17911        unsafe { &*(self.raw.pWaitDstStageMask as *const _) }
17912    }
17913
17914    pub fn get_command_buffers<'a>(&'a self) -> &'a [vks::VkCommandBuffer] {
17915        unsafe { slice::from_raw_parts(self.raw.pCommandBuffers as *const _, self.raw.commandBufferCount as usize) }
17916    }
17917
17918    pub fn get_signal_semaphores<'a>(&'a self) -> &'a [vks::VkSemaphore] {
17919        unsafe { slice::from_raw_parts(self.raw.pSignalSemaphores as *const _, self.raw.signalSemaphoreCount as usize) }
17920    }
17921
17922    pub fn build(self) -> SubmitInfo<'b> {
17923        SubmitInfo {
17924            raw: self.raw,
17925            _p: PhantomData,
17926        }
17927    }
17928}
17929
17930
17931/// A `VkDisplayPropertiesKHR`.
17932///
17933/// 
17934#[derive(Debug, Clone, Default)]
17935#[repr(C)]
17936pub struct DisplayPropertiesKhr<'s> {
17937    raw: vks::VkDisplayPropertiesKHR,
17938    _p: PhantomData<&'s ()>,
17939}
17940
17941impl<'s> DisplayPropertiesKhr<'s> {
17942    pub fn builder<'b>() -> DisplayPropertiesKhrBuilder<'b> {
17943        DisplayPropertiesKhrBuilder::new()
17944    }
17945
17946    pub unsafe fn from_raw(raw: vks::VkDisplayPropertiesKHR) -> DisplayPropertiesKhr<'s> {
17947        DisplayPropertiesKhr { raw, _p: PhantomData }
17948    }
17949
17950    pub fn display<'a>(&'a self) -> vks::VkDisplayKHR {
17951        self.raw.display
17952    }
17953
17954    pub fn display_name<'a>(&'a self) -> &'a CStr {
17955        unsafe { CStr::from_ptr(self.raw.displayName) }
17956    }
17957
17958    pub fn physical_dimensions<'a>(&'a self) -> &'a Extent2d {
17959        unsafe { &*(&self.raw.physicalDimensions as *const vks::VkExtent2D as *const Extent2d) }
17960    }
17961
17962    pub fn physical_dimensions_mut<'a>(&'a mut self) -> &'a mut Extent2d {
17963        unsafe { &mut *(&mut self.raw.physicalDimensions as *mut  vks::VkExtent2D as *mut Extent2d) }
17964    }
17965
17966    pub fn physical_resolution<'a>(&'a self) -> &'a Extent2d {
17967        unsafe { &*(&self.raw.physicalResolution as *const vks::VkExtent2D as *const Extent2d) }
17968    }
17969
17970    pub fn physical_resolution_mut<'a>(&'a mut self) -> &'a mut Extent2d {
17971        unsafe { &mut *(&mut self.raw.physicalResolution as *mut  vks::VkExtent2D as *mut Extent2d) }
17972    }
17973
17974    pub fn supported_transforms<'a>(&'a self) -> SurfaceTransformFlagsKhr {
17975        SurfaceTransformFlagsKhr::from_bits(self.raw.supportedTransforms)
17976            .expect("DisplayPropertiesKhr::supported_transforms: error converting flags")
17977    }
17978
17979    pub fn plane_reorder_possible<'a>(&'a self) -> bool {
17980        self.raw.planeReorderPossible != 0
17981    }
17982
17983    pub fn persistent_content<'a>(&'a self) -> bool {
17984        self.raw.persistentContent != 0
17985    }
17986
17987    pub fn set_display<'m, H>(&mut self, display: H)
17988            where H: Handle<Target=DisplayKhrHandle> {
17989        self.raw.display = display.handle().0;
17990    }
17991
17992    pub fn set_display_name<'m, 'a>(&mut self, display_name: &'a CStr)
17993            where 'a: 's {
17994        self.raw.displayName = display_name.as_ptr();
17995    }
17996
17997    pub fn set_physical_dimensions<'m>(&mut self, physical_dimensions: Extent2d) {
17998        self.raw.physicalDimensions = physical_dimensions.raw;
17999    }
18000
18001    pub fn set_physical_resolution<'m>(&mut self, physical_resolution: Extent2d) {
18002        self.raw.physicalResolution = physical_resolution.raw;
18003    }
18004
18005    pub fn set_supported_transforms<'m>(&mut self, supported_transforms: SurfaceTransformFlagsKhr) {
18006        self.raw.supportedTransforms = supported_transforms.bits();
18007    }
18008
18009    pub fn set_plane_reorder_possible<'m>(&mut self, plane_reorder_possible: bool) {
18010        self.raw.planeReorderPossible = plane_reorder_possible as u32;
18011    }
18012
18013    pub fn set_persistent_content<'m>(&mut self, persistent_content: bool) {
18014        self.raw.persistentContent = persistent_content as u32;
18015    }
18016
18017    pub fn as_raw(&self) -> &vks::VkDisplayPropertiesKHR {
18018        &self.raw
18019    }
18020}
18021
18022impl<'s> From<DisplayPropertiesKhr<'s>> for vks::VkDisplayPropertiesKHR {
18023    fn from(f: DisplayPropertiesKhr<'s>) -> vks::VkDisplayPropertiesKHR {
18024        f.raw
18025    }
18026}
18027
18028
18029/// A builder for `VkDisplayPropertiesKHR`.
18030///
18031/// 
18032#[derive(Debug, Clone, Default)]
18033pub struct DisplayPropertiesKhrBuilder<'b> {
18034    raw: vks::VkDisplayPropertiesKHR,
18035    _p: PhantomData<&'b ()>, 
18036}
18037
18038impl<'b> DisplayPropertiesKhrBuilder<'b> {
18039    pub fn new() -> DisplayPropertiesKhrBuilder<'b> {
18040        DisplayPropertiesKhrBuilder {
18041            raw: vks::VkDisplayPropertiesKHR::default(),
18042            _p: PhantomData,
18043        }
18044    }
18045
18046    pub fn display<'m, H>(mut self, display: H) -> DisplayPropertiesKhrBuilder<'b>
18047            where H: Handle<Target=DisplayKhrHandle> {
18048        self.raw.display = display.handle().0;
18049        self
18050    }
18051
18052    pub fn display_name<'m, 'a>(mut self, display_name: &'a CStr) -> DisplayPropertiesKhrBuilder<'b>
18053            where 'a: 'b {
18054        self.raw.displayName = display_name.as_ptr();
18055        self
18056    }
18057
18058    pub fn physical_dimensions<'m>(mut self, physical_dimensions: Extent2d) -> DisplayPropertiesKhrBuilder<'b> {
18059        self.raw.physicalDimensions = physical_dimensions.raw;
18060        self
18061    }
18062
18063    pub fn physical_resolution<'m>(mut self, physical_resolution: Extent2d) -> DisplayPropertiesKhrBuilder<'b> {
18064        self.raw.physicalResolution = physical_resolution.raw;
18065        self
18066    }
18067
18068    pub fn supported_transforms<'m>(mut self, supported_transforms: SurfaceTransformFlagsKhr) -> DisplayPropertiesKhrBuilder<'b> {
18069        self.raw.supportedTransforms = supported_transforms.bits();
18070        self
18071    }
18072
18073    pub fn plane_reorder_possible<'m>(mut self, plane_reorder_possible: bool) -> DisplayPropertiesKhrBuilder<'b> {
18074        self.raw.planeReorderPossible = plane_reorder_possible as u32;
18075        self
18076    }
18077
18078    pub fn persistent_content<'m>(mut self, persistent_content: bool) -> DisplayPropertiesKhrBuilder<'b> {
18079        self.raw.persistentContent = persistent_content as u32;
18080        self
18081    }
18082
18083    pub fn get_display<'a>(&'a self) -> vks::VkDisplayKHR {
18084        self.raw.display
18085    }
18086
18087    pub fn get_display_name<'a>(&'a self) -> &'a CStr {
18088        unsafe { CStr::from_ptr(self.raw.displayName) }
18089    }
18090
18091    pub fn get_physical_dimensions<'a>(&'a self) -> &'a Extent2d {
18092        unsafe { &*(&self.raw.physicalDimensions as *const vks::VkExtent2D as *const Extent2d) }
18093    }
18094
18095    pub fn get_physical_dimensions_mut<'a>(&'a mut self) -> &'a mut Extent2d {
18096        unsafe { &mut *(&mut self.raw.physicalDimensions as *mut  vks::VkExtent2D as *mut Extent2d) }
18097    }
18098
18099    pub fn get_physical_resolution<'a>(&'a self) -> &'a Extent2d {
18100        unsafe { &*(&self.raw.physicalResolution as *const vks::VkExtent2D as *const Extent2d) }
18101    }
18102
18103    pub fn get_physical_resolution_mut<'a>(&'a mut self) -> &'a mut Extent2d {
18104        unsafe { &mut *(&mut self.raw.physicalResolution as *mut  vks::VkExtent2D as *mut Extent2d) }
18105    }
18106
18107    pub fn get_supported_transforms<'a>(&'a self) -> SurfaceTransformFlagsKhr {
18108        SurfaceTransformFlagsKhr::from_bits(self.raw.supportedTransforms)
18109            .expect("DisplayPropertiesKhr::supported_transforms: error converting flags")
18110    }
18111
18112    pub fn get_plane_reorder_possible<'a>(&'a self) -> bool {
18113        self.raw.planeReorderPossible != 0
18114    }
18115
18116    pub fn get_persistent_content<'a>(&'a self) -> bool {
18117        self.raw.persistentContent != 0
18118    }
18119
18120    pub fn build(self) -> DisplayPropertiesKhr<'b> {
18121        DisplayPropertiesKhr {
18122            raw: self.raw,
18123            _p: PhantomData,
18124        }
18125    }
18126}
18127
18128
18129/// A `VkDisplayPlanePropertiesKHR`.
18130///
18131/// 
18132#[derive(Debug, Clone, Default)]
18133#[repr(C)]
18134pub struct DisplayPlanePropertiesKhr {
18135    raw: vks::VkDisplayPlanePropertiesKHR,
18136}
18137
18138impl DisplayPlanePropertiesKhr {
18139    pub fn builder() -> DisplayPlanePropertiesKhrBuilder {
18140        DisplayPlanePropertiesKhrBuilder::new()
18141    }
18142
18143    pub unsafe fn from_raw(raw: vks::VkDisplayPlanePropertiesKHR) -> DisplayPlanePropertiesKhr {
18144        DisplayPlanePropertiesKhr { raw, }
18145    }
18146
18147    pub fn current_display<'a>(&'a self) -> vks::VkDisplayKHR {
18148        self.raw.currentDisplay
18149    }
18150
18151    pub fn current_stack_index<'a>(&'a self) -> u32 {
18152        self.raw.currentStackIndex.into()
18153    }
18154
18155    pub fn set_current_display<'m, H>(&mut self, current_display: H)
18156            where H: Handle<Target=DisplayKhrHandle> {
18157        self.raw.currentDisplay = current_display.handle().0;
18158    }
18159
18160    pub fn set_current_stack_index<'m>(&mut self, current_stack_index: u32) {
18161        self.raw.currentStackIndex = current_stack_index.into();
18162    }
18163
18164    pub fn as_raw(&self) -> &vks::VkDisplayPlanePropertiesKHR {
18165        &self.raw
18166    }
18167}
18168
18169impl From<DisplayPlanePropertiesKhr> for vks::VkDisplayPlanePropertiesKHR {
18170    fn from(f: DisplayPlanePropertiesKhr) -> vks::VkDisplayPlanePropertiesKHR {
18171        f.raw
18172    }
18173}
18174
18175
18176/// A builder for `VkDisplayPlanePropertiesKHR`.
18177///
18178/// 
18179#[derive(Debug, Clone, Default)]
18180pub struct DisplayPlanePropertiesKhrBuilder {
18181    raw: vks::VkDisplayPlanePropertiesKHR,
18182}
18183
18184impl DisplayPlanePropertiesKhrBuilder {
18185    pub fn new() -> DisplayPlanePropertiesKhrBuilder {
18186        DisplayPlanePropertiesKhrBuilder {
18187            raw: vks::VkDisplayPlanePropertiesKHR::default(),
18188        }
18189    }
18190
18191    pub fn current_display<'m, H>(mut self, current_display: H) -> DisplayPlanePropertiesKhrBuilder
18192            where H: Handle<Target=DisplayKhrHandle> {
18193        self.raw.currentDisplay = current_display.handle().0;
18194        self
18195    }
18196
18197    pub fn current_stack_index<'m>(mut self, current_stack_index: u32) -> DisplayPlanePropertiesKhrBuilder {
18198        self.raw.currentStackIndex = current_stack_index.into();
18199        self
18200    }
18201
18202    pub fn get_current_display<'a>(&'a self) -> vks::VkDisplayKHR {
18203        self.raw.currentDisplay
18204    }
18205
18206    pub fn get_current_stack_index<'a>(&'a self) -> u32 {
18207        self.raw.currentStackIndex.into()
18208    }
18209
18210    pub fn build(self) -> DisplayPlanePropertiesKhr {
18211        DisplayPlanePropertiesKhr {
18212            raw: self.raw,
18213        }
18214    }
18215}
18216
18217
18218/// A `VkDisplayModeParametersKHR`.
18219///
18220/// 
18221#[derive(Debug, Clone, Default)]
18222#[repr(C)]
18223pub struct DisplayModeParametersKhr {
18224    raw: vks::VkDisplayModeParametersKHR,
18225}
18226
18227impl DisplayModeParametersKhr {
18228    pub fn builder() -> DisplayModeParametersKhrBuilder {
18229        DisplayModeParametersKhrBuilder::new()
18230    }
18231
18232    pub unsafe fn from_raw(raw: vks::VkDisplayModeParametersKHR) -> DisplayModeParametersKhr {
18233        DisplayModeParametersKhr { raw, }
18234    }
18235
18236    pub fn visible_region<'a>(&'a self) -> &'a Extent2d {
18237        unsafe { &*(&self.raw.visibleRegion as *const vks::VkExtent2D as *const Extent2d) }
18238    }
18239
18240    pub fn visible_region_mut<'a>(&'a mut self) -> &'a mut Extent2d {
18241        unsafe { &mut *(&mut self.raw.visibleRegion as *mut  vks::VkExtent2D as *mut Extent2d) }
18242    }
18243
18244    pub fn refresh_rate<'a>(&'a self) -> u32 {
18245        self.raw.refreshRate.into()
18246    }
18247
18248    pub fn set_visible_region<'m>(&mut self, visible_region: Extent2d) {
18249        self.raw.visibleRegion = visible_region.raw;
18250    }
18251
18252    pub fn set_refresh_rate<'m>(&mut self, refresh_rate: u32) {
18253        self.raw.refreshRate = refresh_rate.into();
18254    }
18255
18256    pub fn as_raw(&self) -> &vks::VkDisplayModeParametersKHR {
18257        &self.raw
18258    }
18259}
18260
18261impl From<DisplayModeParametersKhr> for vks::VkDisplayModeParametersKHR {
18262    fn from(f: DisplayModeParametersKhr) -> vks::VkDisplayModeParametersKHR {
18263        f.raw
18264    }
18265}
18266
18267
18268/// A builder for `VkDisplayModeParametersKHR`.
18269///
18270/// 
18271#[derive(Debug, Clone, Default)]
18272pub struct DisplayModeParametersKhrBuilder {
18273    raw: vks::VkDisplayModeParametersKHR,
18274}
18275
18276impl DisplayModeParametersKhrBuilder {
18277    pub fn new() -> DisplayModeParametersKhrBuilder {
18278        DisplayModeParametersKhrBuilder {
18279            raw: vks::VkDisplayModeParametersKHR::default(),
18280        }
18281    }
18282
18283    pub fn visible_region<'m>(mut self, visible_region: Extent2d) -> DisplayModeParametersKhrBuilder {
18284        self.raw.visibleRegion = visible_region.raw;
18285        self
18286    }
18287
18288    pub fn refresh_rate<'m>(mut self, refresh_rate: u32) -> DisplayModeParametersKhrBuilder {
18289        self.raw.refreshRate = refresh_rate.into();
18290        self
18291    }
18292
18293    pub fn get_visible_region<'a>(&'a self) -> &'a Extent2d {
18294        unsafe { &*(&self.raw.visibleRegion as *const vks::VkExtent2D as *const Extent2d) }
18295    }
18296
18297    pub fn get_visible_region_mut<'a>(&'a mut self) -> &'a mut Extent2d {
18298        unsafe { &mut *(&mut self.raw.visibleRegion as *mut  vks::VkExtent2D as *mut Extent2d) }
18299    }
18300
18301    pub fn get_refresh_rate<'a>(&'a self) -> u32 {
18302        self.raw.refreshRate.into()
18303    }
18304
18305    pub fn build(self) -> DisplayModeParametersKhr {
18306        DisplayModeParametersKhr {
18307            raw: self.raw,
18308        }
18309    }
18310}
18311
18312
18313/// A `VkDisplayModePropertiesKHR`.
18314///
18315/// 
18316#[derive(Debug, Clone, Default)]
18317#[repr(C)]
18318pub struct DisplayModePropertiesKhr {
18319    raw: vks::VkDisplayModePropertiesKHR,
18320}
18321
18322impl DisplayModePropertiesKhr {
18323    pub fn builder() -> DisplayModePropertiesKhrBuilder {
18324        DisplayModePropertiesKhrBuilder::new()
18325    }
18326
18327    pub unsafe fn from_raw(raw: vks::VkDisplayModePropertiesKHR) -> DisplayModePropertiesKhr {
18328        DisplayModePropertiesKhr { raw, }
18329    }
18330
18331    pub fn display_mode<'a>(&'a self) -> vks::VkDisplayModeKHR {
18332        self.raw.displayMode
18333    }
18334
18335    pub fn parameters<'a>(&'a self) -> &'a DisplayModeParametersKhr {
18336        unsafe { &*(&self.raw.parameters as *const vks::VkDisplayModeParametersKHR as *const DisplayModeParametersKhr) }
18337    }
18338
18339    pub fn parameters_mut<'a>(&'a mut self) -> &'a mut DisplayModeParametersKhr {
18340        unsafe { &mut *(&mut self.raw.parameters as *mut  vks::VkDisplayModeParametersKHR as *mut DisplayModeParametersKhr) }
18341    }
18342
18343    pub fn set_display_mode<'m, H>(&mut self, display_mode: H)
18344            where H: Handle<Target=DisplayModeKhrHandle> {
18345        self.raw.displayMode = display_mode.handle().0;
18346    }
18347
18348    pub fn set_parameters<'m>(&mut self, parameters: DisplayModeParametersKhr) {
18349        self.raw.parameters = parameters.raw;
18350    }
18351
18352    pub fn as_raw(&self) -> &vks::VkDisplayModePropertiesKHR {
18353        &self.raw
18354    }
18355}
18356
18357impl From<DisplayModePropertiesKhr> for vks::VkDisplayModePropertiesKHR {
18358    fn from(f: DisplayModePropertiesKhr) -> vks::VkDisplayModePropertiesKHR {
18359        f.raw
18360    }
18361}
18362
18363
18364/// A builder for `VkDisplayModePropertiesKHR`.
18365///
18366/// 
18367#[derive(Debug, Clone, Default)]
18368pub struct DisplayModePropertiesKhrBuilder {
18369    raw: vks::VkDisplayModePropertiesKHR,
18370}
18371
18372impl DisplayModePropertiesKhrBuilder {
18373    pub fn new() -> DisplayModePropertiesKhrBuilder {
18374        DisplayModePropertiesKhrBuilder {
18375            raw: vks::VkDisplayModePropertiesKHR::default(),
18376        }
18377    }
18378
18379    pub fn display_mode<'m, H>(mut self, display_mode: H) -> DisplayModePropertiesKhrBuilder
18380            where H: Handle<Target=DisplayModeKhrHandle> {
18381        self.raw.displayMode = display_mode.handle().0;
18382        self
18383    }
18384
18385    pub fn parameters<'m>(mut self, parameters: DisplayModeParametersKhr) -> DisplayModePropertiesKhrBuilder {
18386        self.raw.parameters = parameters.raw;
18387        self
18388    }
18389
18390    pub fn get_display_mode<'a>(&'a self) -> vks::VkDisplayModeKHR {
18391        self.raw.displayMode
18392    }
18393
18394    pub fn get_parameters<'a>(&'a self) -> &'a DisplayModeParametersKhr {
18395        unsafe { &*(&self.raw.parameters as *const vks::VkDisplayModeParametersKHR as *const DisplayModeParametersKhr) }
18396    }
18397
18398    pub fn get_parameters_mut<'a>(&'a mut self) -> &'a mut DisplayModeParametersKhr {
18399        unsafe { &mut *(&mut self.raw.parameters as *mut  vks::VkDisplayModeParametersKHR as *mut DisplayModeParametersKhr) }
18400    }
18401
18402    pub fn build(self) -> DisplayModePropertiesKhr {
18403        DisplayModePropertiesKhr {
18404            raw: self.raw,
18405        }
18406    }
18407}
18408
18409
18410/// A `VkDisplayModeCreateInfoKHR`.
18411///
18412/// 
18413#[derive(Debug, Clone, Default)]
18414#[repr(C)]
18415pub struct DisplayModeCreateInfoKhr<'s> {
18416    raw: vks::VkDisplayModeCreateInfoKHR,
18417    _p: PhantomData<&'s ()>,
18418}
18419
18420impl<'s> DisplayModeCreateInfoKhr<'s> {
18421    pub fn builder<'b>() -> DisplayModeCreateInfoKhrBuilder<'b> {
18422        DisplayModeCreateInfoKhrBuilder::new()
18423    }
18424
18425    pub unsafe fn from_raw(raw: vks::VkDisplayModeCreateInfoKHR) -> DisplayModeCreateInfoKhr<'s> {
18426        DisplayModeCreateInfoKhr { raw, _p: PhantomData }
18427    }
18428
18429    pub fn next<'a>(&'a self) -> *const c_void {
18430        self.raw.pNext
18431    }
18432
18433    pub fn flags<'a>(&'a self) -> DisplayModeCreateFlagsKhr {
18434        DisplayModeCreateFlagsKhr::from_bits(self.raw.flags)
18435            .expect("DisplayModeCreateInfoKhr::flags: error converting flags")
18436    }
18437
18438    pub fn parameters<'a>(&'a self) -> &'a DisplayModeParametersKhr {
18439        unsafe { &*(&self.raw.parameters as *const vks::VkDisplayModeParametersKHR as *const DisplayModeParametersKhr) }
18440    }
18441
18442    pub fn parameters_mut<'a>(&'a mut self) -> &'a mut DisplayModeParametersKhr {
18443        unsafe { &mut *(&mut self.raw.parameters as *mut  vks::VkDisplayModeParametersKHR as *mut DisplayModeParametersKhr) }
18444    }
18445
18446    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
18447        self.raw.pNext = next;
18448    }
18449
18450    pub fn set_flags<'m>(&mut self, flags: DisplayModeCreateFlagsKhr) {
18451        self.raw.flags = flags.bits();
18452    }
18453
18454    pub fn set_parameters<'m>(&mut self, parameters: DisplayModeParametersKhr) {
18455        self.raw.parameters = parameters.raw;
18456    }
18457
18458    pub fn as_raw(&self) -> &vks::VkDisplayModeCreateInfoKHR {
18459        &self.raw
18460    }
18461}
18462
18463impl<'s> From<DisplayModeCreateInfoKhr<'s>> for vks::VkDisplayModeCreateInfoKHR {
18464    fn from(f: DisplayModeCreateInfoKhr<'s>) -> vks::VkDisplayModeCreateInfoKHR {
18465        f.raw
18466    }
18467}
18468
18469
18470/// A builder for `VkDisplayModeCreateInfoKHR`.
18471///
18472/// 
18473#[derive(Debug, Clone, Default)]
18474pub struct DisplayModeCreateInfoKhrBuilder<'b> {
18475    raw: vks::VkDisplayModeCreateInfoKHR,
18476    _p: PhantomData<&'b ()>, 
18477}
18478
18479impl<'b> DisplayModeCreateInfoKhrBuilder<'b> {
18480    pub fn new() -> DisplayModeCreateInfoKhrBuilder<'b> {
18481        DisplayModeCreateInfoKhrBuilder {
18482            raw: vks::VkDisplayModeCreateInfoKHR::default(),
18483            _p: PhantomData,
18484        }
18485    }
18486
18487    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DisplayModeCreateInfoKhrBuilder<'b> {
18488        self.raw.pNext = next;
18489        self
18490    }
18491
18492    pub fn flags<'m>(mut self, flags: DisplayModeCreateFlagsKhr) -> DisplayModeCreateInfoKhrBuilder<'b> {
18493        self.raw.flags = flags.bits();
18494        self
18495    }
18496
18497    pub fn parameters<'m>(mut self, parameters: DisplayModeParametersKhr) -> DisplayModeCreateInfoKhrBuilder<'b> {
18498        self.raw.parameters = parameters.raw;
18499        self
18500    }
18501
18502    pub fn get_next<'a>(&'a self) -> *const c_void {
18503        self.raw.pNext
18504    }
18505
18506    pub fn get_flags<'a>(&'a self) -> DisplayModeCreateFlagsKhr {
18507        DisplayModeCreateFlagsKhr::from_bits(self.raw.flags)
18508            .expect("DisplayModeCreateInfoKhr::flags: error converting flags")
18509    }
18510
18511    pub fn get_parameters<'a>(&'a self) -> &'a DisplayModeParametersKhr {
18512        unsafe { &*(&self.raw.parameters as *const vks::VkDisplayModeParametersKHR as *const DisplayModeParametersKhr) }
18513    }
18514
18515    pub fn get_parameters_mut<'a>(&'a mut self) -> &'a mut DisplayModeParametersKhr {
18516        unsafe { &mut *(&mut self.raw.parameters as *mut  vks::VkDisplayModeParametersKHR as *mut DisplayModeParametersKhr) }
18517    }
18518
18519    pub fn build(self) -> DisplayModeCreateInfoKhr<'b> {
18520        DisplayModeCreateInfoKhr {
18521            raw: self.raw,
18522            _p: PhantomData,
18523        }
18524    }
18525}
18526
18527
18528/// A `VkDisplayPlaneCapabilitiesKHR`.
18529///
18530/// 
18531#[derive(Debug, Clone, Default)]
18532#[repr(C)]
18533pub struct DisplayPlaneCapabilitiesKhr {
18534    raw: vks::VkDisplayPlaneCapabilitiesKHR,
18535}
18536
18537impl DisplayPlaneCapabilitiesKhr {
18538    pub fn builder() -> DisplayPlaneCapabilitiesKhrBuilder {
18539        DisplayPlaneCapabilitiesKhrBuilder::new()
18540    }
18541
18542    pub unsafe fn from_raw(raw: vks::VkDisplayPlaneCapabilitiesKHR) -> DisplayPlaneCapabilitiesKhr {
18543        DisplayPlaneCapabilitiesKhr { raw, }
18544    }
18545
18546    pub fn supported_alpha<'a>(&'a self) -> DisplayPlaneAlphaFlagsKhr {
18547        DisplayPlaneAlphaFlagsKhr::from_bits(self.raw.supportedAlpha)
18548            .expect("DisplayPlaneCapabilitiesKhr::supported_alpha: error converting flags")
18549    }
18550
18551    pub fn min_src_position<'a>(&'a self) -> &'a Offset2d {
18552        unsafe { &*(&self.raw.minSrcPosition as *const vks::VkOffset2D as *const Offset2d) }
18553    }
18554
18555    pub fn min_src_position_mut<'a>(&'a mut self) -> &'a mut Offset2d {
18556        unsafe { &mut *(&mut self.raw.minSrcPosition as *mut  vks::VkOffset2D as *mut Offset2d) }
18557    }
18558
18559    pub fn max_src_position<'a>(&'a self) -> &'a Offset2d {
18560        unsafe { &*(&self.raw.maxSrcPosition as *const vks::VkOffset2D as *const Offset2d) }
18561    }
18562
18563    pub fn max_src_position_mut<'a>(&'a mut self) -> &'a mut Offset2d {
18564        unsafe { &mut *(&mut self.raw.maxSrcPosition as *mut  vks::VkOffset2D as *mut Offset2d) }
18565    }
18566
18567    pub fn min_src_extent<'a>(&'a self) -> &'a Extent2d {
18568        unsafe { &*(&self.raw.minSrcExtent as *const vks::VkExtent2D as *const Extent2d) }
18569    }
18570
18571    pub fn min_src_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
18572        unsafe { &mut *(&mut self.raw.minSrcExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
18573    }
18574
18575    pub fn max_src_extent<'a>(&'a self) -> &'a Extent2d {
18576        unsafe { &*(&self.raw.maxSrcExtent as *const vks::VkExtent2D as *const Extent2d) }
18577    }
18578
18579    pub fn max_src_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
18580        unsafe { &mut *(&mut self.raw.maxSrcExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
18581    }
18582
18583    pub fn min_dst_position<'a>(&'a self) -> &'a Offset2d {
18584        unsafe { &*(&self.raw.minDstPosition as *const vks::VkOffset2D as *const Offset2d) }
18585    }
18586
18587    pub fn min_dst_position_mut<'a>(&'a mut self) -> &'a mut Offset2d {
18588        unsafe { &mut *(&mut self.raw.minDstPosition as *mut  vks::VkOffset2D as *mut Offset2d) }
18589    }
18590
18591    pub fn max_dst_position<'a>(&'a self) -> &'a Offset2d {
18592        unsafe { &*(&self.raw.maxDstPosition as *const vks::VkOffset2D as *const Offset2d) }
18593    }
18594
18595    pub fn max_dst_position_mut<'a>(&'a mut self) -> &'a mut Offset2d {
18596        unsafe { &mut *(&mut self.raw.maxDstPosition as *mut  vks::VkOffset2D as *mut Offset2d) }
18597    }
18598
18599    pub fn min_dst_extent<'a>(&'a self) -> &'a Extent2d {
18600        unsafe { &*(&self.raw.minDstExtent as *const vks::VkExtent2D as *const Extent2d) }
18601    }
18602
18603    pub fn min_dst_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
18604        unsafe { &mut *(&mut self.raw.minDstExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
18605    }
18606
18607    pub fn max_dst_extent<'a>(&'a self) -> &'a Extent2d {
18608        unsafe { &*(&self.raw.maxDstExtent as *const vks::VkExtent2D as *const Extent2d) }
18609    }
18610
18611    pub fn max_dst_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
18612        unsafe { &mut *(&mut self.raw.maxDstExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
18613    }
18614
18615    pub fn set_supported_alpha<'m>(&mut self, supported_alpha: DisplayPlaneAlphaFlagsKhr) {
18616        self.raw.supportedAlpha = supported_alpha.bits();
18617    }
18618
18619    pub fn set_min_src_position<'m>(&mut self, min_src_position: Offset2d) {
18620        self.raw.minSrcPosition = min_src_position.raw;
18621    }
18622
18623    pub fn set_max_src_position<'m>(&mut self, max_src_position: Offset2d) {
18624        self.raw.maxSrcPosition = max_src_position.raw;
18625    }
18626
18627    pub fn set_min_src_extent<'m>(&mut self, min_src_extent: Extent2d) {
18628        self.raw.minSrcExtent = min_src_extent.raw;
18629    }
18630
18631    pub fn set_max_src_extent<'m>(&mut self, max_src_extent: Extent2d) {
18632        self.raw.maxSrcExtent = max_src_extent.raw;
18633    }
18634
18635    pub fn set_min_dst_position<'m>(&mut self, min_dst_position: Offset2d) {
18636        self.raw.minDstPosition = min_dst_position.raw;
18637    }
18638
18639    pub fn set_max_dst_position<'m>(&mut self, max_dst_position: Offset2d) {
18640        self.raw.maxDstPosition = max_dst_position.raw;
18641    }
18642
18643    pub fn set_min_dst_extent<'m>(&mut self, min_dst_extent: Extent2d) {
18644        self.raw.minDstExtent = min_dst_extent.raw;
18645    }
18646
18647    pub fn set_max_dst_extent<'m>(&mut self, max_dst_extent: Extent2d) {
18648        self.raw.maxDstExtent = max_dst_extent.raw;
18649    }
18650
18651    pub fn as_raw(&self) -> &vks::VkDisplayPlaneCapabilitiesKHR {
18652        &self.raw
18653    }
18654}
18655
18656impl From<DisplayPlaneCapabilitiesKhr> for vks::VkDisplayPlaneCapabilitiesKHR {
18657    fn from(f: DisplayPlaneCapabilitiesKhr) -> vks::VkDisplayPlaneCapabilitiesKHR {
18658        f.raw
18659    }
18660}
18661
18662
18663/// A builder for `VkDisplayPlaneCapabilitiesKHR`.
18664///
18665/// 
18666#[derive(Debug, Clone, Default)]
18667pub struct DisplayPlaneCapabilitiesKhrBuilder {
18668    raw: vks::VkDisplayPlaneCapabilitiesKHR,
18669}
18670
18671impl DisplayPlaneCapabilitiesKhrBuilder {
18672    pub fn new() -> DisplayPlaneCapabilitiesKhrBuilder {
18673        DisplayPlaneCapabilitiesKhrBuilder {
18674            raw: vks::VkDisplayPlaneCapabilitiesKHR::default(),
18675        }
18676    }
18677
18678    pub fn supported_alpha<'m>(mut self, supported_alpha: DisplayPlaneAlphaFlagsKhr) -> DisplayPlaneCapabilitiesKhrBuilder {
18679        self.raw.supportedAlpha = supported_alpha.bits();
18680        self
18681    }
18682
18683    pub fn min_src_position<'m>(mut self, min_src_position: Offset2d) -> DisplayPlaneCapabilitiesKhrBuilder {
18684        self.raw.minSrcPosition = min_src_position.raw;
18685        self
18686    }
18687
18688    pub fn max_src_position<'m>(mut self, max_src_position: Offset2d) -> DisplayPlaneCapabilitiesKhrBuilder {
18689        self.raw.maxSrcPosition = max_src_position.raw;
18690        self
18691    }
18692
18693    pub fn min_src_extent<'m>(mut self, min_src_extent: Extent2d) -> DisplayPlaneCapabilitiesKhrBuilder {
18694        self.raw.minSrcExtent = min_src_extent.raw;
18695        self
18696    }
18697
18698    pub fn max_src_extent<'m>(mut self, max_src_extent: Extent2d) -> DisplayPlaneCapabilitiesKhrBuilder {
18699        self.raw.maxSrcExtent = max_src_extent.raw;
18700        self
18701    }
18702
18703    pub fn min_dst_position<'m>(mut self, min_dst_position: Offset2d) -> DisplayPlaneCapabilitiesKhrBuilder {
18704        self.raw.minDstPosition = min_dst_position.raw;
18705        self
18706    }
18707
18708    pub fn max_dst_position<'m>(mut self, max_dst_position: Offset2d) -> DisplayPlaneCapabilitiesKhrBuilder {
18709        self.raw.maxDstPosition = max_dst_position.raw;
18710        self
18711    }
18712
18713    pub fn min_dst_extent<'m>(mut self, min_dst_extent: Extent2d) -> DisplayPlaneCapabilitiesKhrBuilder {
18714        self.raw.minDstExtent = min_dst_extent.raw;
18715        self
18716    }
18717
18718    pub fn max_dst_extent<'m>(mut self, max_dst_extent: Extent2d) -> DisplayPlaneCapabilitiesKhrBuilder {
18719        self.raw.maxDstExtent = max_dst_extent.raw;
18720        self
18721    }
18722
18723    pub fn get_supported_alpha<'a>(&'a self) -> DisplayPlaneAlphaFlagsKhr {
18724        DisplayPlaneAlphaFlagsKhr::from_bits(self.raw.supportedAlpha)
18725            .expect("DisplayPlaneCapabilitiesKhr::supported_alpha: error converting flags")
18726    }
18727
18728    pub fn get_min_src_position<'a>(&'a self) -> &'a Offset2d {
18729        unsafe { &*(&self.raw.minSrcPosition as *const vks::VkOffset2D as *const Offset2d) }
18730    }
18731
18732    pub fn get_min_src_position_mut<'a>(&'a mut self) -> &'a mut Offset2d {
18733        unsafe { &mut *(&mut self.raw.minSrcPosition as *mut  vks::VkOffset2D as *mut Offset2d) }
18734    }
18735
18736    pub fn get_max_src_position<'a>(&'a self) -> &'a Offset2d {
18737        unsafe { &*(&self.raw.maxSrcPosition as *const vks::VkOffset2D as *const Offset2d) }
18738    }
18739
18740    pub fn get_max_src_position_mut<'a>(&'a mut self) -> &'a mut Offset2d {
18741        unsafe { &mut *(&mut self.raw.maxSrcPosition as *mut  vks::VkOffset2D as *mut Offset2d) }
18742    }
18743
18744    pub fn get_min_src_extent<'a>(&'a self) -> &'a Extent2d {
18745        unsafe { &*(&self.raw.minSrcExtent as *const vks::VkExtent2D as *const Extent2d) }
18746    }
18747
18748    pub fn get_min_src_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
18749        unsafe { &mut *(&mut self.raw.minSrcExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
18750    }
18751
18752    pub fn get_max_src_extent<'a>(&'a self) -> &'a Extent2d {
18753        unsafe { &*(&self.raw.maxSrcExtent as *const vks::VkExtent2D as *const Extent2d) }
18754    }
18755
18756    pub fn get_max_src_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
18757        unsafe { &mut *(&mut self.raw.maxSrcExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
18758    }
18759
18760    pub fn get_min_dst_position<'a>(&'a self) -> &'a Offset2d {
18761        unsafe { &*(&self.raw.minDstPosition as *const vks::VkOffset2D as *const Offset2d) }
18762    }
18763
18764    pub fn get_min_dst_position_mut<'a>(&'a mut self) -> &'a mut Offset2d {
18765        unsafe { &mut *(&mut self.raw.minDstPosition as *mut  vks::VkOffset2D as *mut Offset2d) }
18766    }
18767
18768    pub fn get_max_dst_position<'a>(&'a self) -> &'a Offset2d {
18769        unsafe { &*(&self.raw.maxDstPosition as *const vks::VkOffset2D as *const Offset2d) }
18770    }
18771
18772    pub fn get_max_dst_position_mut<'a>(&'a mut self) -> &'a mut Offset2d {
18773        unsafe { &mut *(&mut self.raw.maxDstPosition as *mut  vks::VkOffset2D as *mut Offset2d) }
18774    }
18775
18776    pub fn get_min_dst_extent<'a>(&'a self) -> &'a Extent2d {
18777        unsafe { &*(&self.raw.minDstExtent as *const vks::VkExtent2D as *const Extent2d) }
18778    }
18779
18780    pub fn get_min_dst_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
18781        unsafe { &mut *(&mut self.raw.minDstExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
18782    }
18783
18784    pub fn get_max_dst_extent<'a>(&'a self) -> &'a Extent2d {
18785        unsafe { &*(&self.raw.maxDstExtent as *const vks::VkExtent2D as *const Extent2d) }
18786    }
18787
18788    pub fn get_max_dst_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
18789        unsafe { &mut *(&mut self.raw.maxDstExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
18790    }
18791
18792    pub fn build(self) -> DisplayPlaneCapabilitiesKhr {
18793        DisplayPlaneCapabilitiesKhr {
18794            raw: self.raw,
18795        }
18796    }
18797}
18798
18799
18800/// A `VkDisplaySurfaceCreateInfoKHR`.
18801///
18802/// 
18803#[derive(Debug, Clone, Default)]
18804#[repr(C)]
18805pub struct DisplaySurfaceCreateInfoKhr<'s> {
18806    raw: vks::VkDisplaySurfaceCreateInfoKHR,
18807    _p: PhantomData<&'s ()>,
18808}
18809
18810impl<'s> DisplaySurfaceCreateInfoKhr<'s> {
18811    pub fn builder<'b>() -> DisplaySurfaceCreateInfoKhrBuilder<'b> {
18812        DisplaySurfaceCreateInfoKhrBuilder::new()
18813    }
18814
18815    pub unsafe fn from_raw(raw: vks::VkDisplaySurfaceCreateInfoKHR) -> DisplaySurfaceCreateInfoKhr<'s> {
18816        DisplaySurfaceCreateInfoKhr { raw, _p: PhantomData }
18817    }
18818
18819    pub fn next<'a>(&'a self) -> *const c_void {
18820        self.raw.pNext
18821    }
18822
18823    pub fn flags<'a>(&'a self) -> DisplaySurfaceCreateFlagsKhr {
18824        DisplaySurfaceCreateFlagsKhr::from_bits(self.raw.flags)
18825            .expect("DisplaySurfaceCreateInfoKhr::flags: error converting flags")
18826    }
18827
18828    pub fn display_mode<'a>(&'a self) -> vks::VkDisplayModeKHR {
18829        self.raw.displayMode
18830    }
18831
18832    pub fn plane_index<'a>(&'a self) -> u32 {
18833        self.raw.planeIndex.into()
18834    }
18835
18836    pub fn plane_stack_index<'a>(&'a self) -> u32 {
18837        self.raw.planeStackIndex.into()
18838    }
18839
18840    pub fn transform<'a>(&'a self) -> SurfaceTransformFlagsKhr {
18841        SurfaceTransformFlagsKhr::from_bits(self.raw.transform)
18842            .expect("DisplaySurfaceCreateInfoKhr::transform: error converting flags")
18843    }
18844
18845    pub fn global_alpha<'a>(&'a self) -> f32 {
18846        self.raw.globalAlpha.into()
18847    }
18848
18849    pub fn alpha_mode<'a>(&'a self) -> DisplayPlaneAlphaFlagsKhr {
18850        DisplayPlaneAlphaFlagsKhr::from_bits(self.raw.alphaMode)
18851            .expect("DisplaySurfaceCreateInfoKhr::alpha_mode: error converting flags")
18852    }
18853
18854    pub fn image_extent<'a>(&'a self) -> &'a Extent2d {
18855        unsafe { &*(&self.raw.imageExtent as *const vks::VkExtent2D as *const Extent2d) }
18856    }
18857
18858    pub fn image_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
18859        unsafe { &mut *(&mut self.raw.imageExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
18860    }
18861
18862    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
18863        self.raw.pNext = next;
18864    }
18865
18866    pub fn set_flags<'m>(&mut self, flags: DisplaySurfaceCreateFlagsKhr) {
18867        self.raw.flags = flags.bits();
18868    }
18869
18870    pub fn set_display_mode<'m, H>(&mut self, display_mode: H)
18871            where H: Handle<Target=DisplayModeKhrHandle> {
18872        self.raw.displayMode = display_mode.handle().0;
18873    }
18874
18875    pub fn set_plane_index<'m>(&mut self, plane_index: u32) {
18876        self.raw.planeIndex = plane_index.into();
18877    }
18878
18879    pub fn set_plane_stack_index<'m>(&mut self, plane_stack_index: u32) {
18880        self.raw.planeStackIndex = plane_stack_index.into();
18881    }
18882
18883    pub fn set_transform<'m>(&mut self, transform: SurfaceTransformFlagsKhr) {
18884        self.raw.transform = transform.bits();
18885    }
18886
18887    pub fn set_global_alpha<'m>(&mut self, global_alpha: f32) {
18888        self.raw.globalAlpha = global_alpha.into();
18889    }
18890
18891    pub fn set_alpha_mode<'m>(&mut self, alpha_mode: DisplayPlaneAlphaFlagsKhr) {
18892        self.raw.alphaMode = alpha_mode.bits();
18893    }
18894
18895    pub fn set_image_extent<'m>(&mut self, image_extent: Extent2d) {
18896        self.raw.imageExtent = image_extent.raw;
18897    }
18898
18899    pub fn as_raw(&self) -> &vks::VkDisplaySurfaceCreateInfoKHR {
18900        &self.raw
18901    }
18902}
18903
18904impl<'s> From<DisplaySurfaceCreateInfoKhr<'s>> for vks::VkDisplaySurfaceCreateInfoKHR {
18905    fn from(f: DisplaySurfaceCreateInfoKhr<'s>) -> vks::VkDisplaySurfaceCreateInfoKHR {
18906        f.raw
18907    }
18908}
18909
18910
18911/// A builder for `VkDisplaySurfaceCreateInfoKHR`.
18912///
18913/// 
18914#[derive(Debug, Clone, Default)]
18915pub struct DisplaySurfaceCreateInfoKhrBuilder<'b> {
18916    raw: vks::VkDisplaySurfaceCreateInfoKHR,
18917    _p: PhantomData<&'b ()>, 
18918}
18919
18920impl<'b> DisplaySurfaceCreateInfoKhrBuilder<'b> {
18921    pub fn new() -> DisplaySurfaceCreateInfoKhrBuilder<'b> {
18922        DisplaySurfaceCreateInfoKhrBuilder {
18923            raw: vks::VkDisplaySurfaceCreateInfoKHR::default(),
18924            _p: PhantomData,
18925        }
18926    }
18927
18928    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DisplaySurfaceCreateInfoKhrBuilder<'b> {
18929        self.raw.pNext = next;
18930        self
18931    }
18932
18933    pub fn flags<'m>(mut self, flags: DisplaySurfaceCreateFlagsKhr) -> DisplaySurfaceCreateInfoKhrBuilder<'b> {
18934        self.raw.flags = flags.bits();
18935        self
18936    }
18937
18938    pub fn display_mode<'m, H>(mut self, display_mode: H) -> DisplaySurfaceCreateInfoKhrBuilder<'b>
18939            where H: Handle<Target=DisplayModeKhrHandle> {
18940        self.raw.displayMode = display_mode.handle().0;
18941        self
18942    }
18943
18944    pub fn plane_index<'m>(mut self, plane_index: u32) -> DisplaySurfaceCreateInfoKhrBuilder<'b> {
18945        self.raw.planeIndex = plane_index.into();
18946        self
18947    }
18948
18949    pub fn plane_stack_index<'m>(mut self, plane_stack_index: u32) -> DisplaySurfaceCreateInfoKhrBuilder<'b> {
18950        self.raw.planeStackIndex = plane_stack_index.into();
18951        self
18952    }
18953
18954    pub fn transform<'m>(mut self, transform: SurfaceTransformFlagsKhr) -> DisplaySurfaceCreateInfoKhrBuilder<'b> {
18955        self.raw.transform = transform.bits();
18956        self
18957    }
18958
18959    pub fn global_alpha<'m>(mut self, global_alpha: f32) -> DisplaySurfaceCreateInfoKhrBuilder<'b> {
18960        self.raw.globalAlpha = global_alpha.into();
18961        self
18962    }
18963
18964    pub fn alpha_mode<'m>(mut self, alpha_mode: DisplayPlaneAlphaFlagsKhr) -> DisplaySurfaceCreateInfoKhrBuilder<'b> {
18965        self.raw.alphaMode = alpha_mode.bits();
18966        self
18967    }
18968
18969    pub fn image_extent<'m>(mut self, image_extent: Extent2d) -> DisplaySurfaceCreateInfoKhrBuilder<'b> {
18970        self.raw.imageExtent = image_extent.raw;
18971        self
18972    }
18973
18974    pub fn get_next<'a>(&'a self) -> *const c_void {
18975        self.raw.pNext
18976    }
18977
18978    pub fn get_flags<'a>(&'a self) -> DisplaySurfaceCreateFlagsKhr {
18979        DisplaySurfaceCreateFlagsKhr::from_bits(self.raw.flags)
18980            .expect("DisplaySurfaceCreateInfoKhr::flags: error converting flags")
18981    }
18982
18983    pub fn get_display_mode<'a>(&'a self) -> vks::VkDisplayModeKHR {
18984        self.raw.displayMode
18985    }
18986
18987    pub fn get_plane_index<'a>(&'a self) -> u32 {
18988        self.raw.planeIndex.into()
18989    }
18990
18991    pub fn get_plane_stack_index<'a>(&'a self) -> u32 {
18992        self.raw.planeStackIndex.into()
18993    }
18994
18995    pub fn get_transform<'a>(&'a self) -> SurfaceTransformFlagsKhr {
18996        SurfaceTransformFlagsKhr::from_bits(self.raw.transform)
18997            .expect("DisplaySurfaceCreateInfoKhr::transform: error converting flags")
18998    }
18999
19000    pub fn get_global_alpha<'a>(&'a self) -> f32 {
19001        self.raw.globalAlpha.into()
19002    }
19003
19004    pub fn get_alpha_mode<'a>(&'a self) -> DisplayPlaneAlphaFlagsKhr {
19005        DisplayPlaneAlphaFlagsKhr::from_bits(self.raw.alphaMode)
19006            .expect("DisplaySurfaceCreateInfoKhr::alpha_mode: error converting flags")
19007    }
19008
19009    pub fn get_image_extent<'a>(&'a self) -> &'a Extent2d {
19010        unsafe { &*(&self.raw.imageExtent as *const vks::VkExtent2D as *const Extent2d) }
19011    }
19012
19013    pub fn get_image_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
19014        unsafe { &mut *(&mut self.raw.imageExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
19015    }
19016
19017    pub fn build(self) -> DisplaySurfaceCreateInfoKhr<'b> {
19018        DisplaySurfaceCreateInfoKhr {
19019            raw: self.raw,
19020            _p: PhantomData,
19021        }
19022    }
19023}
19024
19025
19026/// A `VkDisplayPresentInfoKHR`.
19027///
19028/// 
19029#[derive(Debug, Clone, Default)]
19030#[repr(C)]
19031pub struct DisplayPresentInfoKhr<'s> {
19032    raw: vks::VkDisplayPresentInfoKHR,
19033    _p: PhantomData<&'s ()>,
19034}
19035
19036impl<'s> DisplayPresentInfoKhr<'s> {
19037    pub fn builder<'b>() -> DisplayPresentInfoKhrBuilder<'b> {
19038        DisplayPresentInfoKhrBuilder::new()
19039    }
19040
19041    pub unsafe fn from_raw(raw: vks::VkDisplayPresentInfoKHR) -> DisplayPresentInfoKhr<'s> {
19042        DisplayPresentInfoKhr { raw, _p: PhantomData }
19043    }
19044
19045    pub fn next<'a>(&'a self) -> *const c_void {
19046        self.raw.pNext
19047    }
19048
19049    pub fn src_rect<'a>(&'a self) -> &'a Rect2d {
19050        unsafe { &*(&self.raw.srcRect as *const vks::VkRect2D as *const Rect2d) }
19051    }
19052
19053    pub fn src_rect_mut<'a>(&'a mut self) -> &'a mut Rect2d {
19054        unsafe { &mut *(&mut self.raw.srcRect as *mut  vks::VkRect2D as *mut Rect2d) }
19055    }
19056
19057    pub fn dst_rect<'a>(&'a self) -> &'a Rect2d {
19058        unsafe { &*(&self.raw.dstRect as *const vks::VkRect2D as *const Rect2d) }
19059    }
19060
19061    pub fn dst_rect_mut<'a>(&'a mut self) -> &'a mut Rect2d {
19062        unsafe { &mut *(&mut self.raw.dstRect as *mut  vks::VkRect2D as *mut Rect2d) }
19063    }
19064
19065    pub fn persistent<'a>(&'a self) -> bool {
19066        self.raw.persistent != 0
19067    }
19068
19069    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
19070        self.raw.pNext = next;
19071    }
19072
19073    pub fn set_src_rect<'m>(&mut self, src_rect: Rect2d) {
19074        self.raw.srcRect = src_rect.raw;
19075    }
19076
19077    pub fn set_dst_rect<'m>(&mut self, dst_rect: Rect2d) {
19078        self.raw.dstRect = dst_rect.raw;
19079    }
19080
19081    pub fn set_persistent<'m>(&mut self, persistent: bool) {
19082        self.raw.persistent = persistent as u32;
19083    }
19084
19085    pub fn as_raw(&self) -> &vks::VkDisplayPresentInfoKHR {
19086        &self.raw
19087    }
19088}
19089
19090impl<'s> From<DisplayPresentInfoKhr<'s>> for vks::VkDisplayPresentInfoKHR {
19091    fn from(f: DisplayPresentInfoKhr<'s>) -> vks::VkDisplayPresentInfoKHR {
19092        f.raw
19093    }
19094}
19095
19096
19097/// A builder for `VkDisplayPresentInfoKHR`.
19098///
19099/// 
19100#[derive(Debug, Clone, Default)]
19101pub struct DisplayPresentInfoKhrBuilder<'b> {
19102    raw: vks::VkDisplayPresentInfoKHR,
19103    _p: PhantomData<&'b ()>, 
19104}
19105
19106impl<'b> DisplayPresentInfoKhrBuilder<'b> {
19107    pub fn new() -> DisplayPresentInfoKhrBuilder<'b> {
19108        DisplayPresentInfoKhrBuilder {
19109            raw: vks::VkDisplayPresentInfoKHR::default(),
19110            _p: PhantomData,
19111        }
19112    }
19113
19114    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DisplayPresentInfoKhrBuilder<'b> {
19115        self.raw.pNext = next;
19116        self
19117    }
19118
19119    pub fn src_rect<'m>(mut self, src_rect: Rect2d) -> DisplayPresentInfoKhrBuilder<'b> {
19120        self.raw.srcRect = src_rect.raw;
19121        self
19122    }
19123
19124    pub fn dst_rect<'m>(mut self, dst_rect: Rect2d) -> DisplayPresentInfoKhrBuilder<'b> {
19125        self.raw.dstRect = dst_rect.raw;
19126        self
19127    }
19128
19129    pub fn persistent<'m>(mut self, persistent: bool) -> DisplayPresentInfoKhrBuilder<'b> {
19130        self.raw.persistent = persistent as u32;
19131        self
19132    }
19133
19134    pub fn get_next<'a>(&'a self) -> *const c_void {
19135        self.raw.pNext
19136    }
19137
19138    pub fn get_src_rect<'a>(&'a self) -> &'a Rect2d {
19139        unsafe { &*(&self.raw.srcRect as *const vks::VkRect2D as *const Rect2d) }
19140    }
19141
19142    pub fn get_src_rect_mut<'a>(&'a mut self) -> &'a mut Rect2d {
19143        unsafe { &mut *(&mut self.raw.srcRect as *mut  vks::VkRect2D as *mut Rect2d) }
19144    }
19145
19146    pub fn get_dst_rect<'a>(&'a self) -> &'a Rect2d {
19147        unsafe { &*(&self.raw.dstRect as *const vks::VkRect2D as *const Rect2d) }
19148    }
19149
19150    pub fn get_dst_rect_mut<'a>(&'a mut self) -> &'a mut Rect2d {
19151        unsafe { &mut *(&mut self.raw.dstRect as *mut  vks::VkRect2D as *mut Rect2d) }
19152    }
19153
19154    pub fn get_persistent<'a>(&'a self) -> bool {
19155        self.raw.persistent != 0
19156    }
19157
19158    pub fn build(self) -> DisplayPresentInfoKhr<'b> {
19159        DisplayPresentInfoKhr {
19160            raw: self.raw,
19161            _p: PhantomData,
19162        }
19163    }
19164}
19165
19166
19167/// A `VkSurfaceCapabilitiesKHR`.
19168///
19169/// 
19170#[derive(Debug, Clone, Default)]
19171#[repr(C)]
19172pub struct SurfaceCapabilitiesKhr {
19173    raw: vks::VkSurfaceCapabilitiesKHR,
19174}
19175
19176impl SurfaceCapabilitiesKhr {
19177    pub fn builder() -> SurfaceCapabilitiesKhrBuilder {
19178        SurfaceCapabilitiesKhrBuilder::new()
19179    }
19180
19181    pub unsafe fn from_raw(raw: vks::VkSurfaceCapabilitiesKHR) -> SurfaceCapabilitiesKhr {
19182        SurfaceCapabilitiesKhr { raw, }
19183    }
19184
19185    pub fn min_image_count<'a>(&'a self) -> u32 {
19186        self.raw.minImageCount.into()
19187    }
19188
19189    pub fn max_image_count<'a>(&'a self) -> u32 {
19190        self.raw.maxImageCount.into()
19191    }
19192
19193    pub fn current_extent<'a>(&'a self) -> &'a Extent2d {
19194        unsafe { &*(&self.raw.currentExtent as *const vks::VkExtent2D as *const Extent2d) }
19195    }
19196
19197    pub fn current_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
19198        unsafe { &mut *(&mut self.raw.currentExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
19199    }
19200
19201    pub fn min_image_extent<'a>(&'a self) -> &'a Extent2d {
19202        unsafe { &*(&self.raw.minImageExtent as *const vks::VkExtent2D as *const Extent2d) }
19203    }
19204
19205    pub fn min_image_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
19206        unsafe { &mut *(&mut self.raw.minImageExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
19207    }
19208
19209    pub fn max_image_extent<'a>(&'a self) -> &'a Extent2d {
19210        unsafe { &*(&self.raw.maxImageExtent as *const vks::VkExtent2D as *const Extent2d) }
19211    }
19212
19213    pub fn max_image_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
19214        unsafe { &mut *(&mut self.raw.maxImageExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
19215    }
19216
19217    pub fn max_image_array_layers<'a>(&'a self) -> u32 {
19218        self.raw.maxImageArrayLayers.into()
19219    }
19220
19221    pub fn supported_transforms<'a>(&'a self) -> SurfaceTransformFlagsKhr {
19222        SurfaceTransformFlagsKhr::from_bits(self.raw.supportedTransforms)
19223            .expect("SurfaceCapabilitiesKhr::supported_transforms: error converting flags")
19224    }
19225
19226    pub fn current_transform<'a>(&'a self) -> SurfaceTransformFlagsKhr {
19227        SurfaceTransformFlagsKhr::from_bits(self.raw.currentTransform)
19228            .expect("SurfaceCapabilitiesKhr::current_transform: error converting flags")
19229    }
19230
19231    pub fn supported_composite_alpha<'a>(&'a self) -> CompositeAlphaFlagsKhr {
19232        CompositeAlphaFlagsKhr::from_bits(self.raw.supportedCompositeAlpha)
19233            .expect("SurfaceCapabilitiesKhr::supported_composite_alpha: error converting flags")
19234    }
19235
19236    pub fn supported_usage_flags<'a>(&'a self) -> ImageUsageFlags {
19237        ImageUsageFlags::from_bits(self.raw.supportedUsageFlags)
19238            .expect("SurfaceCapabilitiesKhr::supported_usage_flags: error converting flags")
19239    }
19240
19241    pub fn set_min_image_count<'m>(&mut self, min_image_count: u32) {
19242        self.raw.minImageCount = min_image_count.into();
19243    }
19244
19245    pub fn set_max_image_count<'m>(&mut self, max_image_count: u32) {
19246        self.raw.maxImageCount = max_image_count.into();
19247    }
19248
19249    pub fn set_current_extent<'m>(&mut self, current_extent: Extent2d) {
19250        self.raw.currentExtent = current_extent.raw;
19251    }
19252
19253    pub fn set_min_image_extent<'m>(&mut self, min_image_extent: Extent2d) {
19254        self.raw.minImageExtent = min_image_extent.raw;
19255    }
19256
19257    pub fn set_max_image_extent<'m>(&mut self, max_image_extent: Extent2d) {
19258        self.raw.maxImageExtent = max_image_extent.raw;
19259    }
19260
19261    pub fn set_max_image_array_layers<'m>(&mut self, max_image_array_layers: u32) {
19262        self.raw.maxImageArrayLayers = max_image_array_layers.into();
19263    }
19264
19265    pub fn set_supported_transforms<'m>(&mut self, supported_transforms: SurfaceTransformFlagsKhr) {
19266        self.raw.supportedTransforms = supported_transforms.bits();
19267    }
19268
19269    pub fn set_current_transform<'m>(&mut self, current_transform: SurfaceTransformFlagsKhr) {
19270        self.raw.currentTransform = current_transform.bits();
19271    }
19272
19273    pub fn set_supported_composite_alpha<'m>(&mut self, supported_composite_alpha: CompositeAlphaFlagsKhr) {
19274        self.raw.supportedCompositeAlpha = supported_composite_alpha.bits();
19275    }
19276
19277    pub fn set_supported_usage_flags<'m>(&mut self, supported_usage_flags: ImageUsageFlags) {
19278        self.raw.supportedUsageFlags = supported_usage_flags.bits();
19279    }
19280
19281    pub fn as_raw(&self) -> &vks::VkSurfaceCapabilitiesKHR {
19282        &self.raw
19283    }
19284}
19285
19286impl From<SurfaceCapabilitiesKhr> for vks::VkSurfaceCapabilitiesKHR {
19287    fn from(f: SurfaceCapabilitiesKhr) -> vks::VkSurfaceCapabilitiesKHR {
19288        f.raw
19289    }
19290}
19291
19292
19293/// A builder for `VkSurfaceCapabilitiesKHR`.
19294///
19295/// 
19296#[derive(Debug, Clone, Default)]
19297pub struct SurfaceCapabilitiesKhrBuilder {
19298    raw: vks::VkSurfaceCapabilitiesKHR,
19299}
19300
19301impl SurfaceCapabilitiesKhrBuilder {
19302    pub fn new() -> SurfaceCapabilitiesKhrBuilder {
19303        SurfaceCapabilitiesKhrBuilder {
19304            raw: vks::VkSurfaceCapabilitiesKHR::default(),
19305        }
19306    }
19307
19308    pub fn min_image_count<'m>(mut self, min_image_count: u32) -> SurfaceCapabilitiesKhrBuilder {
19309        self.raw.minImageCount = min_image_count.into();
19310        self
19311    }
19312
19313    pub fn max_image_count<'m>(mut self, max_image_count: u32) -> SurfaceCapabilitiesKhrBuilder {
19314        self.raw.maxImageCount = max_image_count.into();
19315        self
19316    }
19317
19318    pub fn current_extent<'m>(mut self, current_extent: Extent2d) -> SurfaceCapabilitiesKhrBuilder {
19319        self.raw.currentExtent = current_extent.raw;
19320        self
19321    }
19322
19323    pub fn min_image_extent<'m>(mut self, min_image_extent: Extent2d) -> SurfaceCapabilitiesKhrBuilder {
19324        self.raw.minImageExtent = min_image_extent.raw;
19325        self
19326    }
19327
19328    pub fn max_image_extent<'m>(mut self, max_image_extent: Extent2d) -> SurfaceCapabilitiesKhrBuilder {
19329        self.raw.maxImageExtent = max_image_extent.raw;
19330        self
19331    }
19332
19333    pub fn max_image_array_layers<'m>(mut self, max_image_array_layers: u32) -> SurfaceCapabilitiesKhrBuilder {
19334        self.raw.maxImageArrayLayers = max_image_array_layers.into();
19335        self
19336    }
19337
19338    pub fn supported_transforms<'m>(mut self, supported_transforms: SurfaceTransformFlagsKhr) -> SurfaceCapabilitiesKhrBuilder {
19339        self.raw.supportedTransforms = supported_transforms.bits();
19340        self
19341    }
19342
19343    pub fn current_transform<'m>(mut self, current_transform: SurfaceTransformFlagsKhr) -> SurfaceCapabilitiesKhrBuilder {
19344        self.raw.currentTransform = current_transform.bits();
19345        self
19346    }
19347
19348    pub fn supported_composite_alpha<'m>(mut self, supported_composite_alpha: CompositeAlphaFlagsKhr) -> SurfaceCapabilitiesKhrBuilder {
19349        self.raw.supportedCompositeAlpha = supported_composite_alpha.bits();
19350        self
19351    }
19352
19353    pub fn supported_usage_flags<'m>(mut self, supported_usage_flags: ImageUsageFlags) -> SurfaceCapabilitiesKhrBuilder {
19354        self.raw.supportedUsageFlags = supported_usage_flags.bits();
19355        self
19356    }
19357
19358    pub fn get_min_image_count<'a>(&'a self) -> u32 {
19359        self.raw.minImageCount.into()
19360    }
19361
19362    pub fn get_max_image_count<'a>(&'a self) -> u32 {
19363        self.raw.maxImageCount.into()
19364    }
19365
19366    pub fn get_current_extent<'a>(&'a self) -> &'a Extent2d {
19367        unsafe { &*(&self.raw.currentExtent as *const vks::VkExtent2D as *const Extent2d) }
19368    }
19369
19370    pub fn get_current_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
19371        unsafe { &mut *(&mut self.raw.currentExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
19372    }
19373
19374    pub fn get_min_image_extent<'a>(&'a self) -> &'a Extent2d {
19375        unsafe { &*(&self.raw.minImageExtent as *const vks::VkExtent2D as *const Extent2d) }
19376    }
19377
19378    pub fn get_min_image_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
19379        unsafe { &mut *(&mut self.raw.minImageExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
19380    }
19381
19382    pub fn get_max_image_extent<'a>(&'a self) -> &'a Extent2d {
19383        unsafe { &*(&self.raw.maxImageExtent as *const vks::VkExtent2D as *const Extent2d) }
19384    }
19385
19386    pub fn get_max_image_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
19387        unsafe { &mut *(&mut self.raw.maxImageExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
19388    }
19389
19390    pub fn get_max_image_array_layers<'a>(&'a self) -> u32 {
19391        self.raw.maxImageArrayLayers.into()
19392    }
19393
19394    pub fn get_supported_transforms<'a>(&'a self) -> SurfaceTransformFlagsKhr {
19395        SurfaceTransformFlagsKhr::from_bits(self.raw.supportedTransforms)
19396            .expect("SurfaceCapabilitiesKhr::supported_transforms: error converting flags")
19397    }
19398
19399    pub fn get_current_transform<'a>(&'a self) -> SurfaceTransformFlagsKhr {
19400        SurfaceTransformFlagsKhr::from_bits(self.raw.currentTransform)
19401            .expect("SurfaceCapabilitiesKhr::current_transform: error converting flags")
19402    }
19403
19404    pub fn get_supported_composite_alpha<'a>(&'a self) -> CompositeAlphaFlagsKhr {
19405        CompositeAlphaFlagsKhr::from_bits(self.raw.supportedCompositeAlpha)
19406            .expect("SurfaceCapabilitiesKhr::supported_composite_alpha: error converting flags")
19407    }
19408
19409    pub fn get_supported_usage_flags<'a>(&'a self) -> ImageUsageFlags {
19410        ImageUsageFlags::from_bits(self.raw.supportedUsageFlags)
19411            .expect("SurfaceCapabilitiesKhr::supported_usage_flags: error converting flags")
19412    }
19413
19414    pub fn build(self) -> SurfaceCapabilitiesKhr {
19415        SurfaceCapabilitiesKhr {
19416            raw: self.raw,
19417        }
19418    }
19419}
19420
19421
19422/// A `VkAndroidSurfaceCreateInfoKHR`.
19423///
19424/// 
19425#[derive(Debug, Clone, Default)]
19426#[repr(C)]
19427pub struct AndroidSurfaceCreateInfoKhr<'s> {
19428    raw: vks::VkAndroidSurfaceCreateInfoKHR,
19429    _p: PhantomData<&'s ()>,
19430}
19431
19432impl<'s> AndroidSurfaceCreateInfoKhr<'s> {
19433    pub fn builder<'b>() -> AndroidSurfaceCreateInfoKhrBuilder<'b> {
19434        AndroidSurfaceCreateInfoKhrBuilder::new()
19435    }
19436
19437    pub unsafe fn from_raw(raw: vks::VkAndroidSurfaceCreateInfoKHR) -> AndroidSurfaceCreateInfoKhr<'s> {
19438        AndroidSurfaceCreateInfoKhr { raw, _p: PhantomData }
19439    }
19440
19441    pub fn next<'a>(&'a self) -> *const c_void {
19442        self.raw.pNext
19443    }
19444
19445    pub fn flags<'a>(&'a self) -> AndroidSurfaceCreateFlagsKhr {
19446        AndroidSurfaceCreateFlagsKhr::from_bits(self.raw.flags)
19447            .expect("AndroidSurfaceCreateInfoKhr::flags: error converting flags")
19448    }
19449
19450    pub fn window<'a>(&'a self) -> *mut ANativeWindow {
19451        self.raw.window
19452    }
19453
19454    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
19455        self.raw.pNext = next;
19456    }
19457
19458    pub fn set_flags<'m>(&mut self, flags: AndroidSurfaceCreateFlagsKhr) {
19459        self.raw.flags = flags.bits();
19460    }
19461
19462    pub unsafe fn set_window<'m>(&mut self, window: *mut ANativeWindow) {
19463        self.raw.window = window;
19464    }
19465
19466    pub fn as_raw(&self) -> &vks::VkAndroidSurfaceCreateInfoKHR {
19467        &self.raw
19468    }
19469}
19470
19471impl<'s> From<AndroidSurfaceCreateInfoKhr<'s>> for vks::VkAndroidSurfaceCreateInfoKHR {
19472    fn from(f: AndroidSurfaceCreateInfoKhr<'s>) -> vks::VkAndroidSurfaceCreateInfoKHR {
19473        f.raw
19474    }
19475}
19476
19477
19478/// A builder for `VkAndroidSurfaceCreateInfoKHR`.
19479///
19480/// 
19481#[derive(Debug, Clone, Default)]
19482pub struct AndroidSurfaceCreateInfoKhrBuilder<'b> {
19483    raw: vks::VkAndroidSurfaceCreateInfoKHR,
19484    _p: PhantomData<&'b ()>, 
19485}
19486
19487impl<'b> AndroidSurfaceCreateInfoKhrBuilder<'b> {
19488    pub fn new() -> AndroidSurfaceCreateInfoKhrBuilder<'b> {
19489        AndroidSurfaceCreateInfoKhrBuilder {
19490            raw: vks::VkAndroidSurfaceCreateInfoKHR::default(),
19491            _p: PhantomData,
19492        }
19493    }
19494
19495    pub unsafe fn next<'m>(mut self, next: *const c_void) -> AndroidSurfaceCreateInfoKhrBuilder<'b> {
19496        self.raw.pNext = next;
19497        self
19498    }
19499
19500    pub fn flags<'m>(mut self, flags: AndroidSurfaceCreateFlagsKhr) -> AndroidSurfaceCreateInfoKhrBuilder<'b> {
19501        self.raw.flags = flags.bits();
19502        self
19503    }
19504
19505    pub unsafe fn window<'m>(mut self, window: *mut ANativeWindow) -> AndroidSurfaceCreateInfoKhrBuilder<'b> {
19506        self.raw.window = window;
19507        self
19508    }
19509
19510    pub fn get_next<'a>(&'a self) -> *const c_void {
19511        self.raw.pNext
19512    }
19513
19514    pub fn get_flags<'a>(&'a self) -> AndroidSurfaceCreateFlagsKhr {
19515        AndroidSurfaceCreateFlagsKhr::from_bits(self.raw.flags)
19516            .expect("AndroidSurfaceCreateInfoKhr::flags: error converting flags")
19517    }
19518
19519    pub fn get_window<'a>(&'a self) -> *mut ANativeWindow {
19520        self.raw.window
19521    }
19522
19523    pub fn build(self) -> AndroidSurfaceCreateInfoKhr<'b> {
19524        AndroidSurfaceCreateInfoKhr {
19525            raw: self.raw,
19526            _p: PhantomData,
19527        }
19528    }
19529}
19530
19531
19532/// A `VkMirSurfaceCreateInfoKHR`.
19533///
19534/// 
19535#[derive(Debug, Clone, Default)]
19536#[repr(C)]
19537pub struct MirSurfaceCreateInfoKhr<'s> {
19538    raw: vks::VkMirSurfaceCreateInfoKHR,
19539    _p: PhantomData<&'s ()>,
19540}
19541
19542impl<'s> MirSurfaceCreateInfoKhr<'s> {
19543    pub fn builder<'b>() -> MirSurfaceCreateInfoKhrBuilder<'b> {
19544        MirSurfaceCreateInfoKhrBuilder::new()
19545    }
19546
19547    pub unsafe fn from_raw(raw: vks::VkMirSurfaceCreateInfoKHR) -> MirSurfaceCreateInfoKhr<'s> {
19548        MirSurfaceCreateInfoKhr { raw, _p: PhantomData }
19549    }
19550
19551    pub fn next<'a>(&'a self) -> *const c_void {
19552        self.raw.pNext
19553    }
19554
19555    pub fn flags<'a>(&'a self) -> MirSurfaceCreateFlagsKhr {
19556        MirSurfaceCreateFlagsKhr::from_bits(self.raw.flags)
19557            .expect("MirSurfaceCreateInfoKhr::flags: error converting flags")
19558    }
19559
19560    pub fn connection<'a>(&'a self) -> *mut MirConnection {
19561        self.raw.connection
19562    }
19563
19564    pub fn mir_surface<'a>(&'a self) -> *mut MirSurface {
19565        self.raw.mirSurface
19566    }
19567
19568    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
19569        self.raw.pNext = next;
19570    }
19571
19572    pub fn set_flags<'m>(&mut self, flags: MirSurfaceCreateFlagsKhr) {
19573        self.raw.flags = flags.bits();
19574    }
19575
19576    pub unsafe fn set_connection<'m>(&mut self, connection: *mut MirConnection) {
19577        self.raw.connection = connection;
19578    }
19579
19580    pub unsafe fn set_mir_surface<'m>(&mut self, mir_surface: *mut MirSurface) {
19581        self.raw.mirSurface = mir_surface;
19582    }
19583
19584    pub fn as_raw(&self) -> &vks::VkMirSurfaceCreateInfoKHR {
19585        &self.raw
19586    }
19587}
19588
19589impl<'s> From<MirSurfaceCreateInfoKhr<'s>> for vks::VkMirSurfaceCreateInfoKHR {
19590    fn from(f: MirSurfaceCreateInfoKhr<'s>) -> vks::VkMirSurfaceCreateInfoKHR {
19591        f.raw
19592    }
19593}
19594
19595
19596/// A builder for `VkMirSurfaceCreateInfoKHR`.
19597///
19598/// 
19599#[derive(Debug, Clone, Default)]
19600pub struct MirSurfaceCreateInfoKhrBuilder<'b> {
19601    raw: vks::VkMirSurfaceCreateInfoKHR,
19602    _p: PhantomData<&'b ()>, 
19603}
19604
19605impl<'b> MirSurfaceCreateInfoKhrBuilder<'b> {
19606    pub fn new() -> MirSurfaceCreateInfoKhrBuilder<'b> {
19607        MirSurfaceCreateInfoKhrBuilder {
19608            raw: vks::VkMirSurfaceCreateInfoKHR::default(),
19609            _p: PhantomData,
19610        }
19611    }
19612
19613    pub unsafe fn next<'m>(mut self, next: *const c_void) -> MirSurfaceCreateInfoKhrBuilder<'b> {
19614        self.raw.pNext = next;
19615        self
19616    }
19617
19618    pub fn flags<'m>(mut self, flags: MirSurfaceCreateFlagsKhr) -> MirSurfaceCreateInfoKhrBuilder<'b> {
19619        self.raw.flags = flags.bits();
19620        self
19621    }
19622
19623    pub unsafe fn connection<'m>(mut self, connection: *mut MirConnection) -> MirSurfaceCreateInfoKhrBuilder<'b> {
19624        self.raw.connection = connection;
19625        self
19626    }
19627
19628    pub unsafe fn mir_surface<'m>(mut self, mir_surface: *mut MirSurface) -> MirSurfaceCreateInfoKhrBuilder<'b> {
19629        self.raw.mirSurface = mir_surface;
19630        self
19631    }
19632
19633    pub fn get_next<'a>(&'a self) -> *const c_void {
19634        self.raw.pNext
19635    }
19636
19637    pub fn get_flags<'a>(&'a self) -> MirSurfaceCreateFlagsKhr {
19638        MirSurfaceCreateFlagsKhr::from_bits(self.raw.flags)
19639            .expect("MirSurfaceCreateInfoKhr::flags: error converting flags")
19640    }
19641
19642    pub fn get_connection<'a>(&'a self) -> *mut MirConnection {
19643        self.raw.connection
19644    }
19645
19646    pub fn get_mir_surface<'a>(&'a self) -> *mut MirSurface {
19647        self.raw.mirSurface
19648    }
19649
19650    pub fn build(self) -> MirSurfaceCreateInfoKhr<'b> {
19651        MirSurfaceCreateInfoKhr {
19652            raw: self.raw,
19653            _p: PhantomData,
19654        }
19655    }
19656}
19657
19658
19659/// A `VkViSurfaceCreateInfoNN`.
19660///
19661/// 
19662#[derive(Debug, Clone, Default)]
19663#[repr(C)]
19664pub struct ViSurfaceCreateInfoNn<'s> {
19665    raw: vks::VkViSurfaceCreateInfoNN,
19666    _p: PhantomData<&'s ()>,
19667}
19668
19669impl<'s> ViSurfaceCreateInfoNn<'s> {
19670    pub fn builder<'b>() -> ViSurfaceCreateInfoNnBuilder<'b> {
19671        ViSurfaceCreateInfoNnBuilder::new()
19672    }
19673
19674    pub unsafe fn from_raw(raw: vks::VkViSurfaceCreateInfoNN) -> ViSurfaceCreateInfoNn<'s> {
19675        ViSurfaceCreateInfoNn { raw, _p: PhantomData }
19676    }
19677
19678    pub fn next<'a>(&'a self) -> *const c_void {
19679        self.raw.pNext
19680    }
19681
19682    pub fn flags<'a>(&'a self) -> ViSurfaceCreateFlagsNn {
19683        ViSurfaceCreateFlagsNn::from_bits(self.raw.flags)
19684            .expect("ViSurfaceCreateInfoNn::flags: error converting flags")
19685    }
19686
19687    pub fn window<'a>(&'a self) -> *mut c_void {
19688        self.raw.window
19689    }
19690
19691    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
19692        self.raw.pNext = next;
19693    }
19694
19695    pub fn set_flags<'m>(&mut self, flags: ViSurfaceCreateFlagsNn) {
19696        self.raw.flags = flags.bits();
19697    }
19698
19699    pub unsafe fn set_window<'m>(&mut self, window: *mut c_void) {
19700        self.raw.window = window;
19701    }
19702
19703    pub fn as_raw(&self) -> &vks::VkViSurfaceCreateInfoNN {
19704        &self.raw
19705    }
19706}
19707
19708impl<'s> From<ViSurfaceCreateInfoNn<'s>> for vks::VkViSurfaceCreateInfoNN {
19709    fn from(f: ViSurfaceCreateInfoNn<'s>) -> vks::VkViSurfaceCreateInfoNN {
19710        f.raw
19711    }
19712}
19713
19714
19715/// A builder for `VkViSurfaceCreateInfoNN`.
19716///
19717/// 
19718#[derive(Debug, Clone, Default)]
19719pub struct ViSurfaceCreateInfoNnBuilder<'b> {
19720    raw: vks::VkViSurfaceCreateInfoNN,
19721    _p: PhantomData<&'b ()>, 
19722}
19723
19724impl<'b> ViSurfaceCreateInfoNnBuilder<'b> {
19725    pub fn new() -> ViSurfaceCreateInfoNnBuilder<'b> {
19726        ViSurfaceCreateInfoNnBuilder {
19727            raw: vks::VkViSurfaceCreateInfoNN::default(),
19728            _p: PhantomData,
19729        }
19730    }
19731
19732    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ViSurfaceCreateInfoNnBuilder<'b> {
19733        self.raw.pNext = next;
19734        self
19735    }
19736
19737    pub fn flags<'m>(mut self, flags: ViSurfaceCreateFlagsNn) -> ViSurfaceCreateInfoNnBuilder<'b> {
19738        self.raw.flags = flags.bits();
19739        self
19740    }
19741
19742    pub unsafe fn window<'m>(mut self, window: *mut c_void) -> ViSurfaceCreateInfoNnBuilder<'b> {
19743        self.raw.window = window;
19744        self
19745    }
19746
19747    pub fn get_next<'a>(&'a self) -> *const c_void {
19748        self.raw.pNext
19749    }
19750
19751    pub fn get_flags<'a>(&'a self) -> ViSurfaceCreateFlagsNn {
19752        ViSurfaceCreateFlagsNn::from_bits(self.raw.flags)
19753            .expect("ViSurfaceCreateInfoNn::flags: error converting flags")
19754    }
19755
19756    pub fn get_window<'a>(&'a self) -> *mut c_void {
19757        self.raw.window
19758    }
19759
19760    pub fn build(self) -> ViSurfaceCreateInfoNn<'b> {
19761        ViSurfaceCreateInfoNn {
19762            raw: self.raw,
19763            _p: PhantomData,
19764        }
19765    }
19766}
19767
19768
19769/// A `VkWaylandSurfaceCreateInfoKHR`.
19770///
19771/// 
19772#[derive(Debug, Clone, Default)]
19773#[repr(C)]
19774pub struct WaylandSurfaceCreateInfoKhr<'s> {
19775    raw: vks::VkWaylandSurfaceCreateInfoKHR,
19776    _p: PhantomData<&'s ()>,
19777}
19778
19779impl<'s> WaylandSurfaceCreateInfoKhr<'s> {
19780    pub fn builder<'b>() -> WaylandSurfaceCreateInfoKhrBuilder<'b> {
19781        WaylandSurfaceCreateInfoKhrBuilder::new()
19782    }
19783
19784    pub unsafe fn from_raw(raw: vks::VkWaylandSurfaceCreateInfoKHR) -> WaylandSurfaceCreateInfoKhr<'s> {
19785        WaylandSurfaceCreateInfoKhr { raw, _p: PhantomData }
19786    }
19787
19788    pub fn next<'a>(&'a self) -> *const c_void {
19789        self.raw.pNext
19790    }
19791
19792    pub fn flags<'a>(&'a self) -> WaylandSurfaceCreateFlagsKhr {
19793        WaylandSurfaceCreateFlagsKhr::from_bits(self.raw.flags)
19794            .expect("WaylandSurfaceCreateInfoKhr::flags: error converting flags")
19795    }
19796
19797    pub fn display<'a>(&'a self) -> *mut wl_display {
19798        self.raw.display
19799    }
19800
19801    pub fn surface<'a>(&'a self) -> *mut wl_surface {
19802        self.raw.surface
19803    }
19804
19805    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
19806        self.raw.pNext = next;
19807    }
19808
19809    pub fn set_flags<'m>(&mut self, flags: WaylandSurfaceCreateFlagsKhr) {
19810        self.raw.flags = flags.bits();
19811    }
19812
19813    pub unsafe fn set_display<'m>(&mut self, display: *mut wl_display) {
19814        self.raw.display = display;
19815    }
19816
19817    pub unsafe fn set_surface<'m>(&mut self, surface: *mut wl_surface) {
19818        self.raw.surface = surface;
19819    }
19820
19821    pub fn as_raw(&self) -> &vks::VkWaylandSurfaceCreateInfoKHR {
19822        &self.raw
19823    }
19824}
19825
19826impl<'s> From<WaylandSurfaceCreateInfoKhr<'s>> for vks::VkWaylandSurfaceCreateInfoKHR {
19827    fn from(f: WaylandSurfaceCreateInfoKhr<'s>) -> vks::VkWaylandSurfaceCreateInfoKHR {
19828        f.raw
19829    }
19830}
19831
19832
19833/// A builder for `VkWaylandSurfaceCreateInfoKHR`.
19834///
19835/// 
19836#[derive(Debug, Clone, Default)]
19837pub struct WaylandSurfaceCreateInfoKhrBuilder<'b> {
19838    raw: vks::VkWaylandSurfaceCreateInfoKHR,
19839    _p: PhantomData<&'b ()>, 
19840}
19841
19842impl<'b> WaylandSurfaceCreateInfoKhrBuilder<'b> {
19843    pub fn new() -> WaylandSurfaceCreateInfoKhrBuilder<'b> {
19844        WaylandSurfaceCreateInfoKhrBuilder {
19845            raw: vks::VkWaylandSurfaceCreateInfoKHR::default(),
19846            _p: PhantomData,
19847        }
19848    }
19849
19850    pub unsafe fn next<'m>(mut self, next: *const c_void) -> WaylandSurfaceCreateInfoKhrBuilder<'b> {
19851        self.raw.pNext = next;
19852        self
19853    }
19854
19855    pub fn flags<'m>(mut self, flags: WaylandSurfaceCreateFlagsKhr) -> WaylandSurfaceCreateInfoKhrBuilder<'b> {
19856        self.raw.flags = flags.bits();
19857        self
19858    }
19859
19860    pub unsafe fn display<'m>(mut self, display: *mut wl_display) -> WaylandSurfaceCreateInfoKhrBuilder<'b> {
19861        self.raw.display = display;
19862        self
19863    }
19864
19865    pub unsafe fn surface<'m>(mut self, surface: *mut wl_surface) -> WaylandSurfaceCreateInfoKhrBuilder<'b> {
19866        self.raw.surface = surface;
19867        self
19868    }
19869
19870    pub fn get_next<'a>(&'a self) -> *const c_void {
19871        self.raw.pNext
19872    }
19873
19874    pub fn get_flags<'a>(&'a self) -> WaylandSurfaceCreateFlagsKhr {
19875        WaylandSurfaceCreateFlagsKhr::from_bits(self.raw.flags)
19876            .expect("WaylandSurfaceCreateInfoKhr::flags: error converting flags")
19877    }
19878
19879    pub fn get_display<'a>(&'a self) -> *mut wl_display {
19880        self.raw.display
19881    }
19882
19883    pub fn get_surface<'a>(&'a self) -> *mut wl_surface {
19884        self.raw.surface
19885    }
19886
19887    pub fn build(self) -> WaylandSurfaceCreateInfoKhr<'b> {
19888        WaylandSurfaceCreateInfoKhr {
19889            raw: self.raw,
19890            _p: PhantomData,
19891        }
19892    }
19893}
19894
19895
19896/// A `VkWin32SurfaceCreateInfoKHR`.
19897///
19898/// 
19899#[derive(Debug, Clone, Default)]
19900#[repr(C)]
19901pub struct Win32SurfaceCreateInfoKhr<'s> {
19902    raw: vks::VkWin32SurfaceCreateInfoKHR,
19903    _p: PhantomData<&'s ()>,
19904}
19905
19906impl<'s> Win32SurfaceCreateInfoKhr<'s> {
19907    pub fn builder<'b>() -> Win32SurfaceCreateInfoKhrBuilder<'b> {
19908        Win32SurfaceCreateInfoKhrBuilder::new()
19909    }
19910
19911    pub unsafe fn from_raw(raw: vks::VkWin32SurfaceCreateInfoKHR) -> Win32SurfaceCreateInfoKhr<'s> {
19912        Win32SurfaceCreateInfoKhr { raw, _p: PhantomData }
19913    }
19914
19915    pub fn next<'a>(&'a self) -> *const c_void {
19916        self.raw.pNext
19917    }
19918
19919    pub fn flags<'a>(&'a self) -> Win32SurfaceCreateFlagsKhr {
19920        Win32SurfaceCreateFlagsKhr::from_bits(self.raw.flags)
19921            .expect("Win32SurfaceCreateInfoKhr::flags: error converting flags")
19922    }
19923
19924    pub fn hinstance<'a>(&'a self) -> HINSTANCE {
19925        self.raw.hinstance.into()
19926    }
19927
19928    pub fn hwnd<'a>(&'a self) -> HWND {
19929        self.raw.hwnd.into()
19930    }
19931
19932    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
19933        self.raw.pNext = next;
19934    }
19935
19936    pub fn set_flags<'m>(&mut self, flags: Win32SurfaceCreateFlagsKhr) {
19937        self.raw.flags = flags.bits();
19938    }
19939
19940    pub fn set_hinstance<'m>(&mut self, hinstance: HINSTANCE) {
19941        self.raw.hinstance = hinstance.into();
19942    }
19943
19944    pub fn set_hwnd<'m>(&mut self, hwnd: HWND) {
19945        self.raw.hwnd = hwnd.into();
19946    }
19947
19948    pub fn as_raw(&self) -> &vks::VkWin32SurfaceCreateInfoKHR {
19949        &self.raw
19950    }
19951}
19952
19953impl<'s> From<Win32SurfaceCreateInfoKhr<'s>> for vks::VkWin32SurfaceCreateInfoKHR {
19954    fn from(f: Win32SurfaceCreateInfoKhr<'s>) -> vks::VkWin32SurfaceCreateInfoKHR {
19955        f.raw
19956    }
19957}
19958
19959
19960/// A builder for `VkWin32SurfaceCreateInfoKHR`.
19961///
19962/// 
19963#[derive(Debug, Clone, Default)]
19964pub struct Win32SurfaceCreateInfoKhrBuilder<'b> {
19965    raw: vks::VkWin32SurfaceCreateInfoKHR,
19966    _p: PhantomData<&'b ()>, 
19967}
19968
19969impl<'b> Win32SurfaceCreateInfoKhrBuilder<'b> {
19970    pub fn new() -> Win32SurfaceCreateInfoKhrBuilder<'b> {
19971        Win32SurfaceCreateInfoKhrBuilder {
19972            raw: vks::VkWin32SurfaceCreateInfoKHR::default(),
19973            _p: PhantomData,
19974        }
19975    }
19976
19977    pub unsafe fn next<'m>(mut self, next: *const c_void) -> Win32SurfaceCreateInfoKhrBuilder<'b> {
19978        self.raw.pNext = next;
19979        self
19980    }
19981
19982    pub fn flags<'m>(mut self, flags: Win32SurfaceCreateFlagsKhr) -> Win32SurfaceCreateInfoKhrBuilder<'b> {
19983        self.raw.flags = flags.bits();
19984        self
19985    }
19986
19987    pub fn hinstance<'m>(mut self, hinstance: HINSTANCE) -> Win32SurfaceCreateInfoKhrBuilder<'b> {
19988        self.raw.hinstance = hinstance.into();
19989        self
19990    }
19991
19992    pub fn hwnd<'m>(mut self, hwnd: HWND) -> Win32SurfaceCreateInfoKhrBuilder<'b> {
19993        self.raw.hwnd = hwnd.into();
19994        self
19995    }
19996
19997    pub fn get_next<'a>(&'a self) -> *const c_void {
19998        self.raw.pNext
19999    }
20000
20001    pub fn get_flags<'a>(&'a self) -> Win32SurfaceCreateFlagsKhr {
20002        Win32SurfaceCreateFlagsKhr::from_bits(self.raw.flags)
20003            .expect("Win32SurfaceCreateInfoKhr::flags: error converting flags")
20004    }
20005
20006    pub fn get_hinstance<'a>(&'a self) -> HINSTANCE {
20007        self.raw.hinstance.into()
20008    }
20009
20010    pub fn get_hwnd<'a>(&'a self) -> HWND {
20011        self.raw.hwnd.into()
20012    }
20013
20014    pub fn build(self) -> Win32SurfaceCreateInfoKhr<'b> {
20015        Win32SurfaceCreateInfoKhr {
20016            raw: self.raw,
20017            _p: PhantomData,
20018        }
20019    }
20020}
20021
20022
20023/// A `VkXlibSurfaceCreateInfoKHR`.
20024///
20025/// 
20026#[derive(Debug, Clone, Default)]
20027#[repr(C)]
20028pub struct XlibSurfaceCreateInfoKhr<'s> {
20029    raw: vks::VkXlibSurfaceCreateInfoKHR,
20030    _p: PhantomData<&'s ()>,
20031}
20032
20033impl<'s> XlibSurfaceCreateInfoKhr<'s> {
20034    pub fn builder<'b>() -> XlibSurfaceCreateInfoKhrBuilder<'b> {
20035        XlibSurfaceCreateInfoKhrBuilder::new()
20036    }
20037
20038    pub unsafe fn from_raw(raw: vks::VkXlibSurfaceCreateInfoKHR) -> XlibSurfaceCreateInfoKhr<'s> {
20039        XlibSurfaceCreateInfoKhr { raw, _p: PhantomData }
20040    }
20041
20042    pub fn next<'a>(&'a self) -> *const c_void {
20043        self.raw.pNext
20044    }
20045
20046    pub fn flags<'a>(&'a self) -> XlibSurfaceCreateFlagsKhr {
20047        XlibSurfaceCreateFlagsKhr::from_bits(self.raw.flags)
20048            .expect("XlibSurfaceCreateInfoKhr::flags: error converting flags")
20049    }
20050
20051    pub fn dpy<'a>(&'a self) -> *mut Display {
20052        self.raw.dpy
20053    }
20054
20055    pub fn window<'a>(&'a self) -> Window {
20056        self.raw.window.into()
20057    }
20058
20059    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
20060        self.raw.pNext = next;
20061    }
20062
20063    pub fn set_flags<'m>(&mut self, flags: XlibSurfaceCreateFlagsKhr) {
20064        self.raw.flags = flags.bits();
20065    }
20066
20067    pub unsafe fn set_dpy<'m>(&mut self, dpy: *mut Display) {
20068        self.raw.dpy = dpy;
20069    }
20070
20071    pub unsafe fn set_window<'m>(&mut self, window: Window) {
20072        self.raw.window = window.into();
20073    }
20074
20075    pub fn as_raw(&self) -> &vks::VkXlibSurfaceCreateInfoKHR {
20076        &self.raw
20077    }
20078}
20079
20080impl<'s> From<XlibSurfaceCreateInfoKhr<'s>> for vks::VkXlibSurfaceCreateInfoKHR {
20081    fn from(f: XlibSurfaceCreateInfoKhr<'s>) -> vks::VkXlibSurfaceCreateInfoKHR {
20082        f.raw
20083    }
20084}
20085
20086
20087/// A builder for `VkXlibSurfaceCreateInfoKHR`.
20088///
20089/// 
20090#[derive(Debug, Clone, Default)]
20091pub struct XlibSurfaceCreateInfoKhrBuilder<'b> {
20092    raw: vks::VkXlibSurfaceCreateInfoKHR,
20093    _p: PhantomData<&'b ()>, 
20094}
20095
20096impl<'b> XlibSurfaceCreateInfoKhrBuilder<'b> {
20097    pub fn new() -> XlibSurfaceCreateInfoKhrBuilder<'b> {
20098        XlibSurfaceCreateInfoKhrBuilder {
20099            raw: vks::VkXlibSurfaceCreateInfoKHR::default(),
20100            _p: PhantomData,
20101        }
20102    }
20103
20104    pub unsafe fn next<'m>(mut self, next: *const c_void) -> XlibSurfaceCreateInfoKhrBuilder<'b> {
20105        self.raw.pNext = next;
20106        self
20107    }
20108
20109    pub fn flags<'m>(mut self, flags: XlibSurfaceCreateFlagsKhr) -> XlibSurfaceCreateInfoKhrBuilder<'b> {
20110        self.raw.flags = flags.bits();
20111        self
20112    }
20113
20114    pub unsafe fn dpy<'m>(mut self, dpy: *mut Display) -> XlibSurfaceCreateInfoKhrBuilder<'b> {
20115        self.raw.dpy = dpy;
20116        self
20117    }
20118
20119    pub unsafe fn window<'m>(mut self, window: Window) -> XlibSurfaceCreateInfoKhrBuilder<'b> {
20120        self.raw.window = window.into();
20121        self
20122    }
20123
20124    pub fn get_next<'a>(&'a self) -> *const c_void {
20125        self.raw.pNext
20126    }
20127
20128    pub fn get_flags<'a>(&'a self) -> XlibSurfaceCreateFlagsKhr {
20129        XlibSurfaceCreateFlagsKhr::from_bits(self.raw.flags)
20130            .expect("XlibSurfaceCreateInfoKhr::flags: error converting flags")
20131    }
20132
20133    pub fn get_dpy<'a>(&'a self) -> *mut Display {
20134        self.raw.dpy
20135    }
20136
20137    pub fn get_window<'a>(&'a self) -> Window {
20138        self.raw.window.into()
20139    }
20140
20141    pub fn build(self) -> XlibSurfaceCreateInfoKhr<'b> {
20142        XlibSurfaceCreateInfoKhr {
20143            raw: self.raw,
20144            _p: PhantomData,
20145        }
20146    }
20147}
20148
20149
20150/// A `VkXcbSurfaceCreateInfoKHR`.
20151///
20152/// 
20153#[derive(Debug, Clone, Default)]
20154#[repr(C)]
20155pub struct XcbSurfaceCreateInfoKhr<'s> {
20156    raw: vks::VkXcbSurfaceCreateInfoKHR,
20157    _p: PhantomData<&'s ()>,
20158}
20159
20160impl<'s> XcbSurfaceCreateInfoKhr<'s> {
20161    pub fn builder<'b>() -> XcbSurfaceCreateInfoKhrBuilder<'b> {
20162        XcbSurfaceCreateInfoKhrBuilder::new()
20163    }
20164
20165    pub unsafe fn from_raw(raw: vks::VkXcbSurfaceCreateInfoKHR) -> XcbSurfaceCreateInfoKhr<'s> {
20166        XcbSurfaceCreateInfoKhr { raw, _p: PhantomData }
20167    }
20168
20169    pub fn next<'a>(&'a self) -> *const c_void {
20170        self.raw.pNext
20171    }
20172
20173    pub fn flags<'a>(&'a self) -> XcbSurfaceCreateFlagsKhr {
20174        XcbSurfaceCreateFlagsKhr::from_bits(self.raw.flags)
20175            .expect("XcbSurfaceCreateInfoKhr::flags: error converting flags")
20176    }
20177
20178    pub fn connection<'a>(&'a self) -> *mut xcb_connection_t {
20179        self.raw.connection
20180    }
20181
20182    pub fn window<'a>(&'a self) -> xcb_window_t {
20183        self.raw.window.into()
20184    }
20185
20186    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
20187        self.raw.pNext = next;
20188    }
20189
20190    pub fn set_flags<'m>(&mut self, flags: XcbSurfaceCreateFlagsKhr) {
20191        self.raw.flags = flags.bits();
20192    }
20193
20194    pub unsafe fn set_connection<'m>(&mut self, connection: *mut xcb_connection_t) {
20195        self.raw.connection = connection;
20196    }
20197
20198    pub unsafe fn set_window<'m>(&mut self, window: xcb_window_t) {
20199        self.raw.window = window.into();
20200    }
20201
20202    pub fn as_raw(&self) -> &vks::VkXcbSurfaceCreateInfoKHR {
20203        &self.raw
20204    }
20205}
20206
20207impl<'s> From<XcbSurfaceCreateInfoKhr<'s>> for vks::VkXcbSurfaceCreateInfoKHR {
20208    fn from(f: XcbSurfaceCreateInfoKhr<'s>) -> vks::VkXcbSurfaceCreateInfoKHR {
20209        f.raw
20210    }
20211}
20212
20213
20214/// A builder for `VkXcbSurfaceCreateInfoKHR`.
20215///
20216/// 
20217#[derive(Debug, Clone, Default)]
20218pub struct XcbSurfaceCreateInfoKhrBuilder<'b> {
20219    raw: vks::VkXcbSurfaceCreateInfoKHR,
20220    _p: PhantomData<&'b ()>, 
20221}
20222
20223impl<'b> XcbSurfaceCreateInfoKhrBuilder<'b> {
20224    pub fn new() -> XcbSurfaceCreateInfoKhrBuilder<'b> {
20225        XcbSurfaceCreateInfoKhrBuilder {
20226            raw: vks::VkXcbSurfaceCreateInfoKHR::default(),
20227            _p: PhantomData,
20228        }
20229    }
20230
20231    pub unsafe fn next<'m>(mut self, next: *const c_void) -> XcbSurfaceCreateInfoKhrBuilder<'b> {
20232        self.raw.pNext = next;
20233        self
20234    }
20235
20236    pub fn flags<'m>(mut self, flags: XcbSurfaceCreateFlagsKhr) -> XcbSurfaceCreateInfoKhrBuilder<'b> {
20237        self.raw.flags = flags.bits();
20238        self
20239    }
20240
20241    pub unsafe fn connection<'m>(mut self, connection: *mut xcb_connection_t) -> XcbSurfaceCreateInfoKhrBuilder<'b> {
20242        self.raw.connection = connection;
20243        self
20244    }
20245
20246    pub unsafe fn window<'m>(mut self, window: xcb_window_t) -> XcbSurfaceCreateInfoKhrBuilder<'b> {
20247        self.raw.window = window.into();
20248        self
20249    }
20250
20251    pub fn get_next<'a>(&'a self) -> *const c_void {
20252        self.raw.pNext
20253    }
20254
20255    pub fn get_flags<'a>(&'a self) -> XcbSurfaceCreateFlagsKhr {
20256        XcbSurfaceCreateFlagsKhr::from_bits(self.raw.flags)
20257            .expect("XcbSurfaceCreateInfoKhr::flags: error converting flags")
20258    }
20259
20260    pub fn get_connection<'a>(&'a self) -> *mut xcb_connection_t {
20261        self.raw.connection
20262    }
20263
20264    pub fn get_window<'a>(&'a self) -> xcb_window_t {
20265        self.raw.window.into()
20266    }
20267
20268    pub fn build(self) -> XcbSurfaceCreateInfoKhr<'b> {
20269        XcbSurfaceCreateInfoKhr {
20270            raw: self.raw,
20271            _p: PhantomData,
20272        }
20273    }
20274}
20275
20276
20277/// A `VkSurfaceFormatKHR`.
20278///
20279/// 
20280#[derive(Debug, Clone, Default)]
20281#[repr(C)]
20282pub struct SurfaceFormatKhr {
20283    raw: vks::VkSurfaceFormatKHR,
20284}
20285
20286impl SurfaceFormatKhr {
20287    pub fn builder() -> SurfaceFormatKhrBuilder {
20288        SurfaceFormatKhrBuilder::new()
20289    }
20290
20291    pub unsafe fn from_raw(raw: vks::VkSurfaceFormatKHR) -> SurfaceFormatKhr {
20292        SurfaceFormatKhr { raw, }
20293    }
20294
20295    pub fn format<'a>(&'a self) -> Format {
20296        self.raw.format.into()
20297    }
20298
20299    pub fn color_space<'a>(&'a self) -> ColorSpaceKhr {
20300        self.raw.colorSpace.into()
20301    }
20302
20303    pub fn set_format<'m>(&mut self, format: Format) {
20304        self.raw.format = format.into();
20305    }
20306
20307    pub fn set_color_space<'m>(&mut self, color_space: ColorSpaceKhr) {
20308        self.raw.colorSpace = color_space.into();
20309    }
20310
20311    pub fn as_raw(&self) -> &vks::VkSurfaceFormatKHR {
20312        &self.raw
20313    }
20314}
20315
20316impl From<SurfaceFormatKhr> for vks::VkSurfaceFormatKHR {
20317    fn from(f: SurfaceFormatKhr) -> vks::VkSurfaceFormatKHR {
20318        f.raw
20319    }
20320}
20321
20322
20323/// A builder for `VkSurfaceFormatKHR`.
20324///
20325/// 
20326#[derive(Debug, Clone, Default)]
20327pub struct SurfaceFormatKhrBuilder {
20328    raw: vks::VkSurfaceFormatKHR,
20329}
20330
20331impl SurfaceFormatKhrBuilder {
20332    pub fn new() -> SurfaceFormatKhrBuilder {
20333        SurfaceFormatKhrBuilder {
20334            raw: vks::VkSurfaceFormatKHR::default(),
20335        }
20336    }
20337
20338    pub fn format<'m>(mut self, format: Format) -> SurfaceFormatKhrBuilder {
20339        self.raw.format = format.into();
20340        self
20341    }
20342
20343    pub fn color_space<'m>(mut self, color_space: ColorSpaceKhr) -> SurfaceFormatKhrBuilder {
20344        self.raw.colorSpace = color_space.into();
20345        self
20346    }
20347
20348    pub fn get_format<'a>(&'a self) -> Format {
20349        self.raw.format.into()
20350    }
20351
20352    pub fn get_color_space<'a>(&'a self) -> ColorSpaceKhr {
20353        self.raw.colorSpace.into()
20354    }
20355
20356    pub fn build(self) -> SurfaceFormatKhr {
20357        SurfaceFormatKhr {
20358            raw: self.raw,
20359        }
20360    }
20361}
20362
20363
20364/// A `VkSwapchainCreateInfoKHR`.
20365///
20366/// 
20367#[derive(Debug, Clone, Default)]
20368#[repr(C)]
20369pub struct SwapchainCreateInfoKhr<'s> {
20370    raw: vks::VkSwapchainCreateInfoKHR,
20371    _p: PhantomData<&'s ()>,
20372}
20373
20374impl<'s> SwapchainCreateInfoKhr<'s> {
20375    pub fn builder<'b>() -> SwapchainCreateInfoKhrBuilder<'b> {
20376        SwapchainCreateInfoKhrBuilder::new()
20377    }
20378
20379    pub unsafe fn from_raw(raw: vks::VkSwapchainCreateInfoKHR) -> SwapchainCreateInfoKhr<'s> {
20380        SwapchainCreateInfoKhr { raw, _p: PhantomData }
20381    }
20382
20383    pub fn next<'a>(&'a self) -> *const c_void {
20384        self.raw.pNext
20385    }
20386
20387    pub fn flags<'a>(&'a self) -> SwapchainCreateFlagsKhr {
20388        SwapchainCreateFlagsKhr::from_bits(self.raw.flags)
20389            .expect("SwapchainCreateInfoKhr::flags: error converting flags")
20390    }
20391
20392    pub fn surface<'a>(&'a self) -> vks::VkSurfaceKHR {
20393        self.raw.surface
20394    }
20395
20396    pub fn min_image_count<'a>(&'a self) -> u32 {
20397        self.raw.minImageCount.into()
20398    }
20399
20400    pub fn image_format<'a>(&'a self) -> Format {
20401        self.raw.imageFormat.into()
20402    }
20403
20404    pub fn image_color_space<'a>(&'a self) -> ColorSpaceKhr {
20405        self.raw.imageColorSpace.into()
20406    }
20407
20408    pub fn image_extent<'a>(&'a self) -> &'a Extent2d {
20409        unsafe { &*(&self.raw.imageExtent as *const vks::VkExtent2D as *const Extent2d) }
20410    }
20411
20412    pub fn image_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
20413        unsafe { &mut *(&mut self.raw.imageExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
20414    }
20415
20416    pub fn image_array_layers<'a>(&'a self) -> u32 {
20417        self.raw.imageArrayLayers.into()
20418    }
20419
20420    pub fn image_usage<'a>(&'a self) -> ImageUsageFlags {
20421        ImageUsageFlags::from_bits(self.raw.imageUsage)
20422            .expect("SwapchainCreateInfoKhr::image_usage: error converting flags")
20423    }
20424
20425    pub fn image_sharing_mode<'a>(&'a self) -> SharingMode {
20426        self.raw.imageSharingMode.into()
20427    }
20428
20429    pub fn queue_family_indices<'a>(&'a self) -> &'a [u32] {
20430        unsafe { slice::from_raw_parts(self.raw.pQueueFamilyIndices as *const _, self.raw.queueFamilyIndexCount as usize) }
20431    }
20432
20433    pub fn pre_transform<'a>(&'a self) -> SurfaceTransformFlagsKhr {
20434        SurfaceTransformFlagsKhr::from_bits(self.raw.preTransform)
20435            .expect("SwapchainCreateInfoKhr::pre_transform: error converting flags")
20436    }
20437
20438    pub fn composite_alpha<'a>(&'a self) -> CompositeAlphaFlagsKhr {
20439        CompositeAlphaFlagsKhr::from_bits(self.raw.compositeAlpha)
20440            .expect("SwapchainCreateInfoKhr::composite_alpha: error converting flags")
20441    }
20442
20443    pub fn present_mode<'a>(&'a self) -> PresentModeKhr {
20444        self.raw.presentMode.into()
20445    }
20446
20447    pub fn clipped<'a>(&'a self) -> bool {
20448        self.raw.clipped != 0
20449    }
20450
20451    pub fn old_swapchain<'a>(&'a self) -> vks::VkSwapchainKHR {
20452        self.raw.oldSwapchain
20453    }
20454
20455    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
20456        self.raw.pNext = next;
20457    }
20458
20459    pub fn set_flags<'m>(&mut self, flags: SwapchainCreateFlagsKhr) {
20460        self.raw.flags = flags.bits();
20461    }
20462
20463    pub fn set_surface<'m, H>(&mut self, surface: H)
20464            where H: Handle<Target=SurfaceKhrHandle> {
20465        self.raw.surface = surface.handle().0;
20466    }
20467
20468    pub fn set_min_image_count<'m>(&mut self, min_image_count: u32) {
20469        self.raw.minImageCount = min_image_count.into();
20470    }
20471
20472    pub fn set_image_format<'m>(&mut self, image_format: Format) {
20473        self.raw.imageFormat = image_format.into();
20474    }
20475
20476    pub fn set_image_color_space<'m>(&mut self, image_color_space: ColorSpaceKhr) {
20477        self.raw.imageColorSpace = image_color_space.into();
20478    }
20479
20480    pub fn set_image_extent<'m>(&mut self, image_extent: Extent2d) {
20481        self.raw.imageExtent = image_extent.raw;
20482    }
20483
20484    pub fn set_image_array_layers<'m>(&mut self, image_array_layers: u32) {
20485        self.raw.imageArrayLayers = image_array_layers.into();
20486    }
20487
20488    pub fn set_image_usage<'m>(&mut self, image_usage: ImageUsageFlags) {
20489        self.raw.imageUsage = image_usage.bits();
20490    }
20491
20492    pub fn set_image_sharing_mode<'m>(&mut self, image_sharing_mode: SharingMode) {
20493        self.raw.imageSharingMode = image_sharing_mode.into();
20494    }
20495
20496    pub fn set_queue_family_indices<'m, 'a>(&mut self, queue_family_indices: &'a [u32])
20497            where 'a: 's {
20498        assert!(self.raw.queueFamilyIndexCount == 0 || self.raw.queueFamilyIndexCount == queue_family_indices.len() as _, 
20499            "count inconsistency found when specifying `SwapchainCreateInfoKhr::queue_family_indices`.");
20500        self.raw.queueFamilyIndexCount = queue_family_indices.len() as _;
20501        self.raw.pQueueFamilyIndices = queue_family_indices.as_ptr() as *const u32 as *const _;
20502    }
20503
20504    pub fn set_pre_transform<'m>(&mut self, pre_transform: SurfaceTransformFlagsKhr) {
20505        self.raw.preTransform = pre_transform.bits();
20506    }
20507
20508    pub fn set_composite_alpha<'m>(&mut self, composite_alpha: CompositeAlphaFlagsKhr) {
20509        self.raw.compositeAlpha = composite_alpha.bits();
20510    }
20511
20512    pub fn set_present_mode<'m>(&mut self, present_mode: PresentModeKhr) {
20513        self.raw.presentMode = present_mode.into();
20514    }
20515
20516    pub fn set_clipped<'m>(&mut self, clipped: bool) {
20517        self.raw.clipped = clipped as u32;
20518    }
20519
20520    pub fn set_old_swapchain<'m, H>(&mut self, old_swapchain: H)
20521            where H: Handle<Target=SwapchainKhrHandle> {
20522        self.raw.oldSwapchain = old_swapchain.handle().0;
20523    }
20524
20525    pub fn as_raw(&self) -> &vks::VkSwapchainCreateInfoKHR {
20526        &self.raw
20527    }
20528}
20529
20530impl<'s> From<SwapchainCreateInfoKhr<'s>> for vks::VkSwapchainCreateInfoKHR {
20531    fn from(f: SwapchainCreateInfoKhr<'s>) -> vks::VkSwapchainCreateInfoKHR {
20532        f.raw
20533    }
20534}
20535
20536
20537/// A builder for `VkSwapchainCreateInfoKHR`.
20538///
20539/// 
20540#[derive(Debug, Clone, Default)]
20541pub struct SwapchainCreateInfoKhrBuilder<'b> {
20542    raw: vks::VkSwapchainCreateInfoKHR,
20543    _p: PhantomData<&'b ()>, 
20544}
20545
20546impl<'b> SwapchainCreateInfoKhrBuilder<'b> {
20547    pub fn new() -> SwapchainCreateInfoKhrBuilder<'b> {
20548        SwapchainCreateInfoKhrBuilder {
20549            raw: vks::VkSwapchainCreateInfoKHR::default(),
20550            _p: PhantomData,
20551        }
20552    }
20553
20554    pub unsafe fn next<'m>(mut self, next: *const c_void) -> SwapchainCreateInfoKhrBuilder<'b> {
20555        self.raw.pNext = next;
20556        self
20557    }
20558
20559    pub fn flags<'m>(mut self, flags: SwapchainCreateFlagsKhr) -> SwapchainCreateInfoKhrBuilder<'b> {
20560        self.raw.flags = flags.bits();
20561        self
20562    }
20563
20564    pub fn surface<'m, H>(mut self, surface: H) -> SwapchainCreateInfoKhrBuilder<'b>
20565            where H: Handle<Target=SurfaceKhrHandle> {
20566        self.raw.surface = surface.handle().0;
20567        self
20568    }
20569
20570    pub fn min_image_count<'m>(mut self, min_image_count: u32) -> SwapchainCreateInfoKhrBuilder<'b> {
20571        self.raw.minImageCount = min_image_count.into();
20572        self
20573    }
20574
20575    pub fn image_format<'m>(mut self, image_format: Format) -> SwapchainCreateInfoKhrBuilder<'b> {
20576        self.raw.imageFormat = image_format.into();
20577        self
20578    }
20579
20580    pub fn image_color_space<'m>(mut self, image_color_space: ColorSpaceKhr) -> SwapchainCreateInfoKhrBuilder<'b> {
20581        self.raw.imageColorSpace = image_color_space.into();
20582        self
20583    }
20584
20585    pub fn image_extent<'m>(mut self, image_extent: Extent2d) -> SwapchainCreateInfoKhrBuilder<'b> {
20586        self.raw.imageExtent = image_extent.raw;
20587        self
20588    }
20589
20590    pub fn image_array_layers<'m>(mut self, image_array_layers: u32) -> SwapchainCreateInfoKhrBuilder<'b> {
20591        self.raw.imageArrayLayers = image_array_layers.into();
20592        self
20593    }
20594
20595    pub fn image_usage<'m>(mut self, image_usage: ImageUsageFlags) -> SwapchainCreateInfoKhrBuilder<'b> {
20596        self.raw.imageUsage = image_usage.bits();
20597        self
20598    }
20599
20600    pub fn image_sharing_mode<'m>(mut self, image_sharing_mode: SharingMode) -> SwapchainCreateInfoKhrBuilder<'b> {
20601        self.raw.imageSharingMode = image_sharing_mode.into();
20602        self
20603    }
20604
20605    pub fn queue_family_indices<'m, 'a>(mut self, queue_family_indices: &'a [u32]) -> SwapchainCreateInfoKhrBuilder<'b>
20606            where 'a: 'b {
20607        assert!(self.raw.queueFamilyIndexCount == 0 || self.raw.queueFamilyIndexCount == queue_family_indices.len() as _, 
20608            "count inconsistency found when specifying `SwapchainCreateInfoKhr::queue_family_indices`.");
20609        self.raw.queueFamilyIndexCount = queue_family_indices.len() as _;
20610        self.raw.pQueueFamilyIndices = queue_family_indices.as_ptr() as *const u32 as *const _;
20611        self
20612    }
20613
20614    pub fn pre_transform<'m>(mut self, pre_transform: SurfaceTransformFlagsKhr) -> SwapchainCreateInfoKhrBuilder<'b> {
20615        self.raw.preTransform = pre_transform.bits();
20616        self
20617    }
20618
20619    pub fn composite_alpha<'m>(mut self, composite_alpha: CompositeAlphaFlagsKhr) -> SwapchainCreateInfoKhrBuilder<'b> {
20620        self.raw.compositeAlpha = composite_alpha.bits();
20621        self
20622    }
20623
20624    pub fn present_mode<'m>(mut self, present_mode: PresentModeKhr) -> SwapchainCreateInfoKhrBuilder<'b> {
20625        self.raw.presentMode = present_mode.into();
20626        self
20627    }
20628
20629    pub fn clipped<'m>(mut self, clipped: bool) -> SwapchainCreateInfoKhrBuilder<'b> {
20630        self.raw.clipped = clipped as u32;
20631        self
20632    }
20633
20634    pub fn old_swapchain<'m, H>(mut self, old_swapchain: H) -> SwapchainCreateInfoKhrBuilder<'b>
20635            where H: Handle<Target=SwapchainKhrHandle> {
20636        self.raw.oldSwapchain = old_swapchain.handle().0;
20637        self
20638    }
20639
20640    pub fn get_next<'a>(&'a self) -> *const c_void {
20641        self.raw.pNext
20642    }
20643
20644    pub fn get_flags<'a>(&'a self) -> SwapchainCreateFlagsKhr {
20645        SwapchainCreateFlagsKhr::from_bits(self.raw.flags)
20646            .expect("SwapchainCreateInfoKhr::flags: error converting flags")
20647    }
20648
20649    pub fn get_surface<'a>(&'a self) -> vks::VkSurfaceKHR {
20650        self.raw.surface
20651    }
20652
20653    pub fn get_min_image_count<'a>(&'a self) -> u32 {
20654        self.raw.minImageCount.into()
20655    }
20656
20657    pub fn get_image_format<'a>(&'a self) -> Format {
20658        self.raw.imageFormat.into()
20659    }
20660
20661    pub fn get_image_color_space<'a>(&'a self) -> ColorSpaceKhr {
20662        self.raw.imageColorSpace.into()
20663    }
20664
20665    pub fn get_image_extent<'a>(&'a self) -> &'a Extent2d {
20666        unsafe { &*(&self.raw.imageExtent as *const vks::VkExtent2D as *const Extent2d) }
20667    }
20668
20669    pub fn get_image_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
20670        unsafe { &mut *(&mut self.raw.imageExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
20671    }
20672
20673    pub fn get_image_array_layers<'a>(&'a self) -> u32 {
20674        self.raw.imageArrayLayers.into()
20675    }
20676
20677    pub fn get_image_usage<'a>(&'a self) -> ImageUsageFlags {
20678        ImageUsageFlags::from_bits(self.raw.imageUsage)
20679            .expect("SwapchainCreateInfoKhr::image_usage: error converting flags")
20680    }
20681
20682    pub fn get_image_sharing_mode<'a>(&'a self) -> SharingMode {
20683        self.raw.imageSharingMode.into()
20684    }
20685
20686    pub fn get_queue_family_indices<'a>(&'a self) -> &'a [u32] {
20687        unsafe { slice::from_raw_parts(self.raw.pQueueFamilyIndices as *const _, self.raw.queueFamilyIndexCount as usize) }
20688    }
20689
20690    pub fn get_pre_transform<'a>(&'a self) -> SurfaceTransformFlagsKhr {
20691        SurfaceTransformFlagsKhr::from_bits(self.raw.preTransform)
20692            .expect("SwapchainCreateInfoKhr::pre_transform: error converting flags")
20693    }
20694
20695    pub fn get_composite_alpha<'a>(&'a self) -> CompositeAlphaFlagsKhr {
20696        CompositeAlphaFlagsKhr::from_bits(self.raw.compositeAlpha)
20697            .expect("SwapchainCreateInfoKhr::composite_alpha: error converting flags")
20698    }
20699
20700    pub fn get_present_mode<'a>(&'a self) -> PresentModeKhr {
20701        self.raw.presentMode.into()
20702    }
20703
20704    pub fn get_clipped<'a>(&'a self) -> bool {
20705        self.raw.clipped != 0
20706    }
20707
20708    pub fn get_old_swapchain<'a>(&'a self) -> vks::VkSwapchainKHR {
20709        self.raw.oldSwapchain
20710    }
20711
20712    pub fn build(self) -> SwapchainCreateInfoKhr<'b> {
20713        SwapchainCreateInfoKhr {
20714            raw: self.raw,
20715            _p: PhantomData,
20716        }
20717    }
20718}
20719
20720
20721/// A `VkPresentInfoKHR`.
20722///
20723/// 
20724#[derive(Debug, Clone, Default)]
20725#[repr(C)]
20726pub struct PresentInfoKhr<'s> {
20727    raw: vks::VkPresentInfoKHR,
20728    _p: PhantomData<&'s ()>,
20729}
20730
20731impl<'s> PresentInfoKhr<'s> {
20732    pub fn builder<'b>() -> PresentInfoKhrBuilder<'b> {
20733        PresentInfoKhrBuilder::new()
20734    }
20735
20736    pub unsafe fn from_raw(raw: vks::VkPresentInfoKHR) -> PresentInfoKhr<'s> {
20737        PresentInfoKhr { raw, _p: PhantomData }
20738    }
20739
20740    pub fn next<'a>(&'a self) -> *const c_void {
20741        self.raw.pNext
20742    }
20743
20744    pub fn wait_semaphores<'a>(&'a self) -> &'a [vks::VkSemaphore] {
20745        unsafe { slice::from_raw_parts(self.raw.pWaitSemaphores as *const _, self.raw.waitSemaphoreCount as usize) }
20746    }
20747
20748    pub fn swapchains<'a>(&'a self) -> &'a [vks::VkSwapchainKHR] {
20749        unsafe { slice::from_raw_parts(self.raw.pSwapchains as *const _, self.raw.swapchainCount as usize) }
20750    }
20751
20752    pub fn image_indices<'a>(&'a self) -> &'a [u32] {
20753        unsafe { slice::from_raw_parts(self.raw.pImageIndices as *const _, self.raw.swapchainCount as usize) }
20754    }
20755
20756    pub fn results<'a>(&'a self) -> &'a [CallResult] {
20757        unsafe { slice::from_raw_parts(self.raw.pResults as *const _, self.raw.swapchainCount as usize) }
20758    }
20759
20760    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
20761        self.raw.pNext = next;
20762    }
20763
20764    pub fn set_wait_semaphores<'m, 'a>(&mut self, wait_semaphores: &'a [SemaphoreHandle])
20765            where 'a: 's {
20766        assert!(self.raw.waitSemaphoreCount == 0 || self.raw.waitSemaphoreCount == wait_semaphores.len() as _, 
20767            "count inconsistency found when specifying `PresentInfoKhr::wait_semaphores`.");
20768        self.raw.waitSemaphoreCount = wait_semaphores.len() as _;
20769        self.raw.pWaitSemaphores = wait_semaphores.as_ptr() as *const vks::VkSemaphore;
20770    }
20771
20772    pub fn set_swapchains<'m, 'a>(&mut self, swapchains: &'a [SwapchainKhrHandle])
20773            where 'a: 's {
20774        assert!(self.raw.swapchainCount == 0 || self.raw.swapchainCount == swapchains.len() as _, 
20775            "count inconsistency found when specifying `PresentInfoKhr::swapchains`.");
20776        self.raw.swapchainCount = swapchains.len() as _;
20777        self.raw.pSwapchains = swapchains.as_ptr() as *const vks::VkSwapchainKHR;
20778    }
20779
20780    pub fn set_image_indices<'m, 'a>(&mut self, image_indices: &'a [u32])
20781            where 'a: 's {
20782        assert!(self.raw.swapchainCount == 0 || self.raw.swapchainCount == image_indices.len() as _, 
20783            "count inconsistency found when specifying `PresentInfoKhr::image_indices`.");
20784        self.raw.swapchainCount = image_indices.len() as _;
20785        self.raw.pImageIndices = image_indices.as_ptr() as *const u32 as *const _;
20786    }
20787
20788    pub fn set_results<'m, 'a>(&mut self, results: &'a mut [CallResult])
20789            where 'a: 's {
20790        assert!(self.raw.swapchainCount == 0 || self.raw.swapchainCount == results.len() as _, 
20791            "count inconsistency found when specifying `PresentInfoKhr::results`.");
20792        self.raw.swapchainCount = results.len() as _;
20793        self.raw.pResults = results.as_mut_ptr() as *mut CallResult as *mut _;
20794    }
20795
20796    pub fn as_raw(&self) -> &vks::VkPresentInfoKHR {
20797        &self.raw
20798    }
20799}
20800
20801impl<'s> From<PresentInfoKhr<'s>> for vks::VkPresentInfoKHR {
20802    fn from(f: PresentInfoKhr<'s>) -> vks::VkPresentInfoKHR {
20803        f.raw
20804    }
20805}
20806
20807
20808/// A builder for `VkPresentInfoKHR`.
20809///
20810/// 
20811#[derive(Debug, Clone, Default)]
20812pub struct PresentInfoKhrBuilder<'b> {
20813    raw: vks::VkPresentInfoKHR,
20814    _p: PhantomData<&'b ()>, 
20815}
20816
20817impl<'b> PresentInfoKhrBuilder<'b> {
20818    pub fn new() -> PresentInfoKhrBuilder<'b> {
20819        PresentInfoKhrBuilder {
20820            raw: vks::VkPresentInfoKHR::default(),
20821            _p: PhantomData,
20822        }
20823    }
20824
20825    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PresentInfoKhrBuilder<'b> {
20826        self.raw.pNext = next;
20827        self
20828    }
20829
20830    pub fn wait_semaphores<'m, 'a>(mut self, wait_semaphores: &'a [SemaphoreHandle]) -> PresentInfoKhrBuilder<'b>
20831            where 'a: 'b {
20832        assert!(self.raw.waitSemaphoreCount == 0 || self.raw.waitSemaphoreCount == wait_semaphores.len() as _, 
20833            "count inconsistency found when specifying `PresentInfoKhr::wait_semaphores`.");
20834        self.raw.waitSemaphoreCount = wait_semaphores.len() as _;
20835        self.raw.pWaitSemaphores = wait_semaphores.as_ptr() as *const vks::VkSemaphore;
20836        self
20837    }
20838
20839    pub fn swapchains<'m, 'a>(mut self, swapchains: &'a [SwapchainKhrHandle]) -> PresentInfoKhrBuilder<'b>
20840            where 'a: 'b {
20841        assert!(self.raw.swapchainCount == 0 || self.raw.swapchainCount == swapchains.len() as _, 
20842            "count inconsistency found when specifying `PresentInfoKhr::swapchains`.");
20843        self.raw.swapchainCount = swapchains.len() as _;
20844        self.raw.pSwapchains = swapchains.as_ptr() as *const vks::VkSwapchainKHR;
20845        self
20846    }
20847
20848    pub fn image_indices<'m, 'a>(mut self, image_indices: &'a [u32]) -> PresentInfoKhrBuilder<'b>
20849            where 'a: 'b {
20850        assert!(self.raw.swapchainCount == 0 || self.raw.swapchainCount == image_indices.len() as _, 
20851            "count inconsistency found when specifying `PresentInfoKhr::image_indices`.");
20852        self.raw.swapchainCount = image_indices.len() as _;
20853        self.raw.pImageIndices = image_indices.as_ptr() as *const u32 as *const _;
20854        self
20855    }
20856
20857    pub fn results<'m, 'a>(mut self, results: &'a mut [CallResult]) -> PresentInfoKhrBuilder<'b>
20858            where 'a: 'b {
20859        assert!(self.raw.swapchainCount == 0 || self.raw.swapchainCount == results.len() as _, 
20860            "count inconsistency found when specifying `PresentInfoKhr::results`.");
20861        self.raw.swapchainCount = results.len() as _;
20862        self.raw.pResults = results.as_mut_ptr() as *mut CallResult as *mut _;
20863        self
20864    }
20865
20866    pub fn get_next<'a>(&'a self) -> *const c_void {
20867        self.raw.pNext
20868    }
20869
20870    pub fn get_wait_semaphores<'a>(&'a self) -> &'a [vks::VkSemaphore] {
20871        unsafe { slice::from_raw_parts(self.raw.pWaitSemaphores as *const _, self.raw.waitSemaphoreCount as usize) }
20872    }
20873
20874    pub fn get_swapchains<'a>(&'a self) -> &'a [vks::VkSwapchainKHR] {
20875        unsafe { slice::from_raw_parts(self.raw.pSwapchains as *const _, self.raw.swapchainCount as usize) }
20876    }
20877
20878    pub fn get_image_indices<'a>(&'a self) -> &'a [u32] {
20879        unsafe { slice::from_raw_parts(self.raw.pImageIndices as *const _, self.raw.swapchainCount as usize) }
20880    }
20881
20882    pub fn get_results<'a>(&'a self) -> &'a [CallResult] {
20883        unsafe { slice::from_raw_parts(self.raw.pResults as *const _, self.raw.swapchainCount as usize) }
20884    }
20885
20886    pub fn build(self) -> PresentInfoKhr<'b> {
20887        PresentInfoKhr {
20888            raw: self.raw,
20889            _p: PhantomData,
20890        }
20891    }
20892}
20893
20894
20895/// A `VkDebugReportCallbackCreateInfoEXT`.
20896///
20897/// 
20898#[derive(Debug, Clone, Default)]
20899#[repr(C)]
20900pub struct DebugReportCallbackCreateInfoExt<'s> {
20901    raw: vks::VkDebugReportCallbackCreateInfoEXT,
20902    _p: PhantomData<&'s ()>,
20903}
20904
20905impl<'s> DebugReportCallbackCreateInfoExt<'s> {
20906    pub fn builder<'b>() -> DebugReportCallbackCreateInfoExtBuilder<'b> {
20907        DebugReportCallbackCreateInfoExtBuilder::new()
20908    }
20909
20910    pub unsafe fn from_raw(raw: vks::VkDebugReportCallbackCreateInfoEXT) -> DebugReportCallbackCreateInfoExt<'s> {
20911        DebugReportCallbackCreateInfoExt { raw, _p: PhantomData }
20912    }
20913
20914    pub fn next<'a>(&'a self) -> *const c_void {
20915        self.raw.pNext
20916    }
20917
20918    pub fn flags<'a>(&'a self) -> DebugReportFlagsExt {
20919        DebugReportFlagsExt::from_bits(self.raw.flags)
20920            .expect("DebugReportCallbackCreateInfoExt::flags: error converting flags")
20921    }
20922
20923    pub fn pfn_callback<'a>(&'a self) -> PFN_vkDebugReportCallbackEXT {
20924        self.raw.pfnCallback.into()
20925    }
20926
20927    pub fn user_data<'a>(&'a self) -> *mut c_void {
20928        self.raw.pUserData
20929    }
20930
20931    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
20932        self.raw.pNext = next;
20933    }
20934
20935    pub fn set_flags<'m>(&mut self, flags: DebugReportFlagsExt) {
20936        self.raw.flags = flags.bits();
20937    }
20938
20939    pub unsafe fn set_pfn_callback<'m>(&mut self, pfn_callback: PFN_vkDebugReportCallbackEXT) {
20940        self.raw.pfnCallback = pfn_callback.into();
20941    }
20942
20943    pub unsafe fn set_user_data<'m>(&mut self, user_data: *mut c_void) {
20944        self.raw.pUserData = user_data;
20945    }
20946
20947    pub fn as_raw(&self) -> &vks::VkDebugReportCallbackCreateInfoEXT {
20948        &self.raw
20949    }
20950}
20951
20952impl<'s> From<DebugReportCallbackCreateInfoExt<'s>> for vks::VkDebugReportCallbackCreateInfoEXT {
20953    fn from(f: DebugReportCallbackCreateInfoExt<'s>) -> vks::VkDebugReportCallbackCreateInfoEXT {
20954        f.raw
20955    }
20956}
20957
20958
20959/// A builder for `VkDebugReportCallbackCreateInfoEXT`.
20960///
20961/// 
20962#[derive(Debug, Clone, Default)]
20963pub struct DebugReportCallbackCreateInfoExtBuilder<'b> {
20964    raw: vks::VkDebugReportCallbackCreateInfoEXT,
20965    _p: PhantomData<&'b ()>, 
20966}
20967
20968impl<'b> DebugReportCallbackCreateInfoExtBuilder<'b> {
20969    pub fn new() -> DebugReportCallbackCreateInfoExtBuilder<'b> {
20970        DebugReportCallbackCreateInfoExtBuilder {
20971            raw: vks::VkDebugReportCallbackCreateInfoEXT::default(),
20972            _p: PhantomData,
20973        }
20974    }
20975
20976    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DebugReportCallbackCreateInfoExtBuilder<'b> {
20977        self.raw.pNext = next;
20978        self
20979    }
20980
20981    pub fn flags<'m>(mut self, flags: DebugReportFlagsExt) -> DebugReportCallbackCreateInfoExtBuilder<'b> {
20982        self.raw.flags = flags.bits();
20983        self
20984    }
20985
20986    pub unsafe fn pfn_callback<'m>(mut self, pfn_callback: PFN_vkDebugReportCallbackEXT) -> DebugReportCallbackCreateInfoExtBuilder<'b> {
20987        self.raw.pfnCallback = pfn_callback.into();
20988        self
20989    }
20990
20991    pub unsafe fn user_data<'m>(mut self, user_data: *mut c_void) -> DebugReportCallbackCreateInfoExtBuilder<'b> {
20992        self.raw.pUserData = user_data;
20993        self
20994    }
20995
20996    pub fn get_next<'a>(&'a self) -> *const c_void {
20997        self.raw.pNext
20998    }
20999
21000    pub fn get_flags<'a>(&'a self) -> DebugReportFlagsExt {
21001        DebugReportFlagsExt::from_bits(self.raw.flags)
21002            .expect("DebugReportCallbackCreateInfoExt::flags: error converting flags")
21003    }
21004
21005    pub fn get_pfn_callback<'a>(&'a self) -> PFN_vkDebugReportCallbackEXT {
21006        self.raw.pfnCallback.into()
21007    }
21008
21009    pub fn get_user_data<'a>(&'a self) -> *mut c_void {
21010        self.raw.pUserData
21011    }
21012
21013    pub fn build(self) -> DebugReportCallbackCreateInfoExt<'b> {
21014        DebugReportCallbackCreateInfoExt {
21015            raw: self.raw,
21016            _p: PhantomData,
21017        }
21018    }
21019}
21020
21021
21022/// A `VkValidationFlagsEXT`.
21023///
21024/// 
21025#[derive(Debug, Clone, Default)]
21026#[repr(C)]
21027pub struct ValidationFlagsExt<'s> {
21028    raw: vks::VkValidationFlagsEXT,
21029    _p: PhantomData<&'s ()>,
21030}
21031
21032impl<'s> ValidationFlagsExt<'s> {
21033    pub fn builder<'b>() -> ValidationFlagsExtBuilder<'b> {
21034        ValidationFlagsExtBuilder::new()
21035    }
21036
21037    pub unsafe fn from_raw(raw: vks::VkValidationFlagsEXT) -> ValidationFlagsExt<'s> {
21038        ValidationFlagsExt { raw, _p: PhantomData }
21039    }
21040
21041    pub fn next<'a>(&'a self) -> *const c_void {
21042        self.raw.pNext
21043    }
21044
21045    pub fn disabled_validation_checks<'a>(&'a self) -> &'a [ValidationCheckExt] {
21046        unsafe { slice::from_raw_parts(self.raw.pDisabledValidationChecks as *const _, self.raw.disabledValidationCheckCount as usize) }
21047    }
21048
21049    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
21050        self.raw.pNext = next;
21051    }
21052
21053    pub fn set_disabled_validation_checks<'m, 'a>(&mut self, disabled_validation_checks: &'a mut [ValidationCheckExt])
21054            where 'a: 's {
21055        assert!(self.raw.disabledValidationCheckCount == 0 || self.raw.disabledValidationCheckCount == disabled_validation_checks.len() as _, 
21056            "count inconsistency found when specifying `ValidationFlagsExt::disabled_validation_checks`.");
21057        self.raw.disabledValidationCheckCount = disabled_validation_checks.len() as _;
21058        self.raw.pDisabledValidationChecks = disabled_validation_checks.as_mut_ptr() as *mut ValidationCheckExt as *mut _;
21059    }
21060
21061    pub fn as_raw(&self) -> &vks::VkValidationFlagsEXT {
21062        &self.raw
21063    }
21064}
21065
21066impl<'s> From<ValidationFlagsExt<'s>> for vks::VkValidationFlagsEXT {
21067    fn from(f: ValidationFlagsExt<'s>) -> vks::VkValidationFlagsEXT {
21068        f.raw
21069    }
21070}
21071
21072
21073/// A builder for `VkValidationFlagsEXT`.
21074///
21075/// 
21076#[derive(Debug, Clone, Default)]
21077pub struct ValidationFlagsExtBuilder<'b> {
21078    raw: vks::VkValidationFlagsEXT,
21079    _p: PhantomData<&'b ()>, 
21080}
21081
21082impl<'b> ValidationFlagsExtBuilder<'b> {
21083    pub fn new() -> ValidationFlagsExtBuilder<'b> {
21084        ValidationFlagsExtBuilder {
21085            raw: vks::VkValidationFlagsEXT::default(),
21086            _p: PhantomData,
21087        }
21088    }
21089
21090    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ValidationFlagsExtBuilder<'b> {
21091        self.raw.pNext = next;
21092        self
21093    }
21094
21095    pub fn disabled_validation_checks<'m, 'a>(mut self, disabled_validation_checks: &'a mut [ValidationCheckExt]) -> ValidationFlagsExtBuilder<'b>
21096            where 'a: 'b {
21097        assert!(self.raw.disabledValidationCheckCount == 0 || self.raw.disabledValidationCheckCount == disabled_validation_checks.len() as _, 
21098            "count inconsistency found when specifying `ValidationFlagsExt::disabled_validation_checks`.");
21099        self.raw.disabledValidationCheckCount = disabled_validation_checks.len() as _;
21100        self.raw.pDisabledValidationChecks = disabled_validation_checks.as_mut_ptr() as *mut ValidationCheckExt as *mut _;
21101        self
21102    }
21103
21104    pub fn get_next<'a>(&'a self) -> *const c_void {
21105        self.raw.pNext
21106    }
21107
21108    pub fn get_disabled_validation_checks<'a>(&'a self) -> &'a [ValidationCheckExt] {
21109        unsafe { slice::from_raw_parts(self.raw.pDisabledValidationChecks as *const _, self.raw.disabledValidationCheckCount as usize) }
21110    }
21111
21112    pub fn build(self) -> ValidationFlagsExt<'b> {
21113        ValidationFlagsExt {
21114            raw: self.raw,
21115            _p: PhantomData,
21116        }
21117    }
21118}
21119
21120
21121/// A `VkPipelineRasterizationStateRasterizationOrderAMD`.
21122///
21123/// 
21124#[derive(Debug, Clone, Default)]
21125#[repr(C)]
21126pub struct PipelineRasterizationStateRasterizationOrderAmd<'s> {
21127    raw: vks::VkPipelineRasterizationStateRasterizationOrderAMD,
21128    _p: PhantomData<&'s ()>,
21129}
21130
21131impl<'s> PipelineRasterizationStateRasterizationOrderAmd<'s> {
21132    pub fn builder<'b>() -> PipelineRasterizationStateRasterizationOrderAmdBuilder<'b> {
21133        PipelineRasterizationStateRasterizationOrderAmdBuilder::new()
21134    }
21135
21136    pub unsafe fn from_raw(raw: vks::VkPipelineRasterizationStateRasterizationOrderAMD) -> PipelineRasterizationStateRasterizationOrderAmd<'s> {
21137        PipelineRasterizationStateRasterizationOrderAmd { raw, _p: PhantomData }
21138    }
21139
21140    pub fn next<'a>(&'a self) -> *const c_void {
21141        self.raw.pNext
21142    }
21143
21144    pub fn rasterization_order<'a>(&'a self) -> RasterizationOrderAmd {
21145        self.raw.rasterizationOrder.into()
21146    }
21147
21148    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
21149        self.raw.pNext = next;
21150    }
21151
21152    pub fn set_rasterization_order<'m>(&mut self, rasterization_order: RasterizationOrderAmd) {
21153        self.raw.rasterizationOrder = rasterization_order.into();
21154    }
21155
21156    pub fn as_raw(&self) -> &vks::VkPipelineRasterizationStateRasterizationOrderAMD {
21157        &self.raw
21158    }
21159}
21160
21161impl<'s> From<PipelineRasterizationStateRasterizationOrderAmd<'s>> for vks::VkPipelineRasterizationStateRasterizationOrderAMD {
21162    fn from(f: PipelineRasterizationStateRasterizationOrderAmd<'s>) -> vks::VkPipelineRasterizationStateRasterizationOrderAMD {
21163        f.raw
21164    }
21165}
21166
21167
21168/// A builder for `VkPipelineRasterizationStateRasterizationOrderAMD`.
21169///
21170/// 
21171#[derive(Debug, Clone, Default)]
21172pub struct PipelineRasterizationStateRasterizationOrderAmdBuilder<'b> {
21173    raw: vks::VkPipelineRasterizationStateRasterizationOrderAMD,
21174    _p: PhantomData<&'b ()>, 
21175}
21176
21177impl<'b> PipelineRasterizationStateRasterizationOrderAmdBuilder<'b> {
21178    pub fn new() -> PipelineRasterizationStateRasterizationOrderAmdBuilder<'b> {
21179        PipelineRasterizationStateRasterizationOrderAmdBuilder {
21180            raw: vks::VkPipelineRasterizationStateRasterizationOrderAMD::default(),
21181            _p: PhantomData,
21182        }
21183    }
21184
21185    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PipelineRasterizationStateRasterizationOrderAmdBuilder<'b> {
21186        self.raw.pNext = next;
21187        self
21188    }
21189
21190    pub fn rasterization_order<'m>(mut self, rasterization_order: RasterizationOrderAmd) -> PipelineRasterizationStateRasterizationOrderAmdBuilder<'b> {
21191        self.raw.rasterizationOrder = rasterization_order.into();
21192        self
21193    }
21194
21195    pub fn get_next<'a>(&'a self) -> *const c_void {
21196        self.raw.pNext
21197    }
21198
21199    pub fn get_rasterization_order<'a>(&'a self) -> RasterizationOrderAmd {
21200        self.raw.rasterizationOrder.into()
21201    }
21202
21203    pub fn build(self) -> PipelineRasterizationStateRasterizationOrderAmd<'b> {
21204        PipelineRasterizationStateRasterizationOrderAmd {
21205            raw: self.raw,
21206            _p: PhantomData,
21207        }
21208    }
21209}
21210
21211
21212/// A `VkDebugMarkerObjectNameInfoEXT`.
21213///
21214/// 
21215#[derive(Debug, Clone, Default)]
21216#[repr(C)]
21217pub struct DebugMarkerObjectNameInfoExt<'s> {
21218    raw: vks::VkDebugMarkerObjectNameInfoEXT,
21219    _p: PhantomData<&'s ()>,
21220}
21221
21222impl<'s> DebugMarkerObjectNameInfoExt<'s> {
21223    pub fn builder<'b>() -> DebugMarkerObjectNameInfoExtBuilder<'b> {
21224        DebugMarkerObjectNameInfoExtBuilder::new()
21225    }
21226
21227    pub unsafe fn from_raw(raw: vks::VkDebugMarkerObjectNameInfoEXT) -> DebugMarkerObjectNameInfoExt<'s> {
21228        DebugMarkerObjectNameInfoExt { raw, _p: PhantomData }
21229    }
21230
21231    pub fn next<'a>(&'a self) -> *const c_void {
21232        self.raw.pNext
21233    }
21234
21235    pub fn object_type<'a>(&'a self) -> DebugReportObjectTypeExt {
21236        self.raw.objectType.into()
21237    }
21238
21239    pub fn object<'a>(&'a self) -> u64 {
21240        self.raw.object.into()
21241    }
21242
21243    pub fn object_name<'a>(&'a self) -> &'a CStr {
21244        unsafe { CStr::from_ptr(self.raw.pObjectName) }
21245    }
21246
21247    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
21248        self.raw.pNext = next;
21249    }
21250
21251    pub fn set_object_type<'m>(&mut self, object_type: DebugReportObjectTypeExt) {
21252        self.raw.objectType = object_type.into();
21253    }
21254
21255    pub fn set_object<'m>(&mut self, object: u64) {
21256        self.raw.object = object.into();
21257    }
21258
21259    pub fn set_object_name<'m, 'a>(&mut self, object_name: &'a CStr)
21260            where 'a: 's {
21261        self.raw.pObjectName = object_name.as_ptr();
21262    }
21263
21264    pub fn as_raw(&self) -> &vks::VkDebugMarkerObjectNameInfoEXT {
21265        &self.raw
21266    }
21267}
21268
21269impl<'s> From<DebugMarkerObjectNameInfoExt<'s>> for vks::VkDebugMarkerObjectNameInfoEXT {
21270    fn from(f: DebugMarkerObjectNameInfoExt<'s>) -> vks::VkDebugMarkerObjectNameInfoEXT {
21271        f.raw
21272    }
21273}
21274
21275
21276/// A builder for `VkDebugMarkerObjectNameInfoEXT`.
21277///
21278/// 
21279#[derive(Debug, Clone, Default)]
21280pub struct DebugMarkerObjectNameInfoExtBuilder<'b> {
21281    raw: vks::VkDebugMarkerObjectNameInfoEXT,
21282    _p: PhantomData<&'b ()>, 
21283}
21284
21285impl<'b> DebugMarkerObjectNameInfoExtBuilder<'b> {
21286    pub fn new() -> DebugMarkerObjectNameInfoExtBuilder<'b> {
21287        DebugMarkerObjectNameInfoExtBuilder {
21288            raw: vks::VkDebugMarkerObjectNameInfoEXT::default(),
21289            _p: PhantomData,
21290        }
21291    }
21292
21293    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DebugMarkerObjectNameInfoExtBuilder<'b> {
21294        self.raw.pNext = next;
21295        self
21296    }
21297
21298    pub fn object_type<'m>(mut self, object_type: DebugReportObjectTypeExt) -> DebugMarkerObjectNameInfoExtBuilder<'b> {
21299        self.raw.objectType = object_type.into();
21300        self
21301    }
21302
21303    pub fn object<'m>(mut self, object: u64) -> DebugMarkerObjectNameInfoExtBuilder<'b> {
21304        self.raw.object = object.into();
21305        self
21306    }
21307
21308    pub fn object_name<'m, 'a>(mut self, object_name: &'a CStr) -> DebugMarkerObjectNameInfoExtBuilder<'b>
21309            where 'a: 'b {
21310        self.raw.pObjectName = object_name.as_ptr();
21311        self
21312    }
21313
21314    pub fn get_next<'a>(&'a self) -> *const c_void {
21315        self.raw.pNext
21316    }
21317
21318    pub fn get_object_type<'a>(&'a self) -> DebugReportObjectTypeExt {
21319        self.raw.objectType.into()
21320    }
21321
21322    pub fn get_object<'a>(&'a self) -> u64 {
21323        self.raw.object.into()
21324    }
21325
21326    pub fn get_object_name<'a>(&'a self) -> &'a CStr {
21327        unsafe { CStr::from_ptr(self.raw.pObjectName) }
21328    }
21329
21330    pub fn build(self) -> DebugMarkerObjectNameInfoExt<'b> {
21331        DebugMarkerObjectNameInfoExt {
21332            raw: self.raw,
21333            _p: PhantomData,
21334        }
21335    }
21336}
21337
21338
21339/// A `VkDebugMarkerObjectTagInfoEXT`.
21340///
21341/// 
21342#[derive(Debug, Clone, Default)]
21343#[repr(C)]
21344pub struct DebugMarkerObjectTagInfoExt<'s> {
21345    raw: vks::VkDebugMarkerObjectTagInfoEXT,
21346    _p: PhantomData<&'s ()>,
21347}
21348
21349impl<'s> DebugMarkerObjectTagInfoExt<'s> {
21350    pub fn builder<'b>() -> DebugMarkerObjectTagInfoExtBuilder<'b> {
21351        DebugMarkerObjectTagInfoExtBuilder::new()
21352    }
21353
21354    pub unsafe fn from_raw(raw: vks::VkDebugMarkerObjectTagInfoEXT) -> DebugMarkerObjectTagInfoExt<'s> {
21355        DebugMarkerObjectTagInfoExt { raw, _p: PhantomData }
21356    }
21357
21358    pub fn next<'a>(&'a self) -> *const c_void {
21359        self.raw.pNext
21360    }
21361
21362    pub fn object_type<'a>(&'a self) -> DebugReportObjectTypeExt {
21363        self.raw.objectType.into()
21364    }
21365
21366    pub fn object<'a>(&'a self) -> u64 {
21367        self.raw.object.into()
21368    }
21369
21370    pub fn tag_name<'a>(&'a self) -> u64 {
21371        self.raw.tagName.into()
21372    }
21373
21374    pub fn tag_size<'a>(&'a self) -> usize {
21375        self.raw.tagSize.into()
21376    }
21377
21378    pub fn tag<'a>(&'a self) -> *const c_void {
21379        self.raw.pTag
21380    }
21381
21382    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
21383        self.raw.pNext = next;
21384    }
21385
21386    pub fn set_object_type<'m>(&mut self, object_type: DebugReportObjectTypeExt) {
21387        self.raw.objectType = object_type.into();
21388    }
21389
21390    pub fn set_object<'m>(&mut self, object: u64) {
21391        self.raw.object = object.into();
21392    }
21393
21394    pub fn set_tag_name<'m>(&mut self, tag_name: u64) {
21395        self.raw.tagName = tag_name.into();
21396    }
21397
21398    pub fn set_tag_size<'m>(&mut self, tag_size: usize) {
21399        self.raw.tagSize = tag_size.into();
21400    }
21401
21402    pub unsafe fn set_tag<'m>(&mut self, tag: *const c_void) {
21403        self.raw.pTag = tag;
21404    }
21405
21406    pub fn as_raw(&self) -> &vks::VkDebugMarkerObjectTagInfoEXT {
21407        &self.raw
21408    }
21409}
21410
21411impl<'s> From<DebugMarkerObjectTagInfoExt<'s>> for vks::VkDebugMarkerObjectTagInfoEXT {
21412    fn from(f: DebugMarkerObjectTagInfoExt<'s>) -> vks::VkDebugMarkerObjectTagInfoEXT {
21413        f.raw
21414    }
21415}
21416
21417
21418/// A builder for `VkDebugMarkerObjectTagInfoEXT`.
21419///
21420/// 
21421#[derive(Debug, Clone, Default)]
21422pub struct DebugMarkerObjectTagInfoExtBuilder<'b> {
21423    raw: vks::VkDebugMarkerObjectTagInfoEXT,
21424    _p: PhantomData<&'b ()>, 
21425}
21426
21427impl<'b> DebugMarkerObjectTagInfoExtBuilder<'b> {
21428    pub fn new() -> DebugMarkerObjectTagInfoExtBuilder<'b> {
21429        DebugMarkerObjectTagInfoExtBuilder {
21430            raw: vks::VkDebugMarkerObjectTagInfoEXT::default(),
21431            _p: PhantomData,
21432        }
21433    }
21434
21435    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DebugMarkerObjectTagInfoExtBuilder<'b> {
21436        self.raw.pNext = next;
21437        self
21438    }
21439
21440    pub fn object_type<'m>(mut self, object_type: DebugReportObjectTypeExt) -> DebugMarkerObjectTagInfoExtBuilder<'b> {
21441        self.raw.objectType = object_type.into();
21442        self
21443    }
21444
21445    pub fn object<'m>(mut self, object: u64) -> DebugMarkerObjectTagInfoExtBuilder<'b> {
21446        self.raw.object = object.into();
21447        self
21448    }
21449
21450    pub fn tag_name<'m>(mut self, tag_name: u64) -> DebugMarkerObjectTagInfoExtBuilder<'b> {
21451        self.raw.tagName = tag_name.into();
21452        self
21453    }
21454
21455    pub fn tag_size<'m>(mut self, tag_size: usize) -> DebugMarkerObjectTagInfoExtBuilder<'b> {
21456        self.raw.tagSize = tag_size.into();
21457        self
21458    }
21459
21460    pub unsafe fn tag<'m>(mut self, tag: *const c_void) -> DebugMarkerObjectTagInfoExtBuilder<'b> {
21461        self.raw.pTag = tag;
21462        self
21463    }
21464
21465    pub fn get_next<'a>(&'a self) -> *const c_void {
21466        self.raw.pNext
21467    }
21468
21469    pub fn get_object_type<'a>(&'a self) -> DebugReportObjectTypeExt {
21470        self.raw.objectType.into()
21471    }
21472
21473    pub fn get_object<'a>(&'a self) -> u64 {
21474        self.raw.object.into()
21475    }
21476
21477    pub fn get_tag_name<'a>(&'a self) -> u64 {
21478        self.raw.tagName.into()
21479    }
21480
21481    pub fn get_tag_size<'a>(&'a self) -> usize {
21482        self.raw.tagSize.into()
21483    }
21484
21485    pub fn get_tag<'a>(&'a self) -> *const c_void {
21486        self.raw.pTag
21487    }
21488
21489    pub fn build(self) -> DebugMarkerObjectTagInfoExt<'b> {
21490        DebugMarkerObjectTagInfoExt {
21491            raw: self.raw,
21492            _p: PhantomData,
21493        }
21494    }
21495}
21496
21497
21498/// A `VkDebugMarkerMarkerInfoEXT`.
21499///
21500/// 
21501#[derive(Debug, Clone, Default)]
21502#[repr(C)]
21503pub struct DebugMarkerMarkerInfoExt<'s> {
21504    raw: vks::VkDebugMarkerMarkerInfoEXT,
21505    _p: PhantomData<&'s ()>,
21506}
21507
21508impl<'s> DebugMarkerMarkerInfoExt<'s> {
21509    pub fn builder<'b>() -> DebugMarkerMarkerInfoExtBuilder<'b> {
21510        DebugMarkerMarkerInfoExtBuilder::new()
21511    }
21512
21513    pub unsafe fn from_raw(raw: vks::VkDebugMarkerMarkerInfoEXT) -> DebugMarkerMarkerInfoExt<'s> {
21514        DebugMarkerMarkerInfoExt { raw, _p: PhantomData }
21515    }
21516
21517    pub fn next<'a>(&'a self) -> *const c_void {
21518        self.raw.pNext
21519    }
21520
21521    pub fn marker_name<'a>(&'a self) -> &'a CStr {
21522        unsafe { CStr::from_ptr(self.raw.pMarkerName) }
21523    }
21524
21525    pub fn color<'a>(&'a self) -> &[f32] {
21526        unsafe { slice::from_raw_parts(&self.raw.color as *const _, 4 as usize) }
21527    }
21528
21529    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
21530        self.raw.pNext = next;
21531    }
21532
21533    pub fn set_marker_name<'m, 'a>(&mut self, marker_name: &'a CStr)
21534            where 'a: 's {
21535        self.raw.pMarkerName = marker_name.as_ptr();
21536    }
21537
21538    pub fn set_color<'m>(&mut self, color: [f32; 4]) {
21539        self.raw.color = color;
21540    }
21541
21542    pub fn as_raw(&self) -> &vks::VkDebugMarkerMarkerInfoEXT {
21543        &self.raw
21544    }
21545}
21546
21547impl<'s> From<DebugMarkerMarkerInfoExt<'s>> for vks::VkDebugMarkerMarkerInfoEXT {
21548    fn from(f: DebugMarkerMarkerInfoExt<'s>) -> vks::VkDebugMarkerMarkerInfoEXT {
21549        f.raw
21550    }
21551}
21552
21553
21554/// A builder for `VkDebugMarkerMarkerInfoEXT`.
21555///
21556/// 
21557#[derive(Debug, Clone, Default)]
21558pub struct DebugMarkerMarkerInfoExtBuilder<'b> {
21559    raw: vks::VkDebugMarkerMarkerInfoEXT,
21560    _p: PhantomData<&'b ()>, 
21561}
21562
21563impl<'b> DebugMarkerMarkerInfoExtBuilder<'b> {
21564    pub fn new() -> DebugMarkerMarkerInfoExtBuilder<'b> {
21565        DebugMarkerMarkerInfoExtBuilder {
21566            raw: vks::VkDebugMarkerMarkerInfoEXT::default(),
21567            _p: PhantomData,
21568        }
21569    }
21570
21571    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DebugMarkerMarkerInfoExtBuilder<'b> {
21572        self.raw.pNext = next;
21573        self
21574    }
21575
21576    pub fn marker_name<'m, 'a>(mut self, marker_name: &'a CStr) -> DebugMarkerMarkerInfoExtBuilder<'b>
21577            where 'a: 'b {
21578        self.raw.pMarkerName = marker_name.as_ptr();
21579        self
21580    }
21581
21582    pub fn color<'m>(mut self, color: [f32; 4]) -> DebugMarkerMarkerInfoExtBuilder<'b> {
21583        self.raw.color = color;
21584        self
21585    }
21586
21587    pub fn get_next<'a>(&'a self) -> *const c_void {
21588        self.raw.pNext
21589    }
21590
21591    pub fn get_marker_name<'a>(&'a self) -> &'a CStr {
21592        unsafe { CStr::from_ptr(self.raw.pMarkerName) }
21593    }
21594
21595    pub fn get_color<'a>(&'a self) -> &[f32] {
21596        unsafe { slice::from_raw_parts(&self.raw.color as *const _, 4 as usize) }
21597    }
21598
21599    pub fn build(self) -> DebugMarkerMarkerInfoExt<'b> {
21600        DebugMarkerMarkerInfoExt {
21601            raw: self.raw,
21602            _p: PhantomData,
21603        }
21604    }
21605}
21606
21607
21608/// A `VkDedicatedAllocationImageCreateInfoNV`.
21609///
21610/// 
21611#[derive(Debug, Clone, Default)]
21612#[repr(C)]
21613pub struct DedicatedAllocationImageCreateInfoNv<'s> {
21614    raw: vks::VkDedicatedAllocationImageCreateInfoNV,
21615    _p: PhantomData<&'s ()>,
21616}
21617
21618impl<'s> DedicatedAllocationImageCreateInfoNv<'s> {
21619    pub fn builder<'b>() -> DedicatedAllocationImageCreateInfoNvBuilder<'b> {
21620        DedicatedAllocationImageCreateInfoNvBuilder::new()
21621    }
21622
21623    pub unsafe fn from_raw(raw: vks::VkDedicatedAllocationImageCreateInfoNV) -> DedicatedAllocationImageCreateInfoNv<'s> {
21624        DedicatedAllocationImageCreateInfoNv { raw, _p: PhantomData }
21625    }
21626
21627    pub fn next<'a>(&'a self) -> *const c_void {
21628        self.raw.pNext
21629    }
21630
21631    pub fn dedicated_allocation<'a>(&'a self) -> bool {
21632        self.raw.dedicatedAllocation != 0
21633    }
21634
21635    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
21636        self.raw.pNext = next;
21637    }
21638
21639    pub fn set_dedicated_allocation<'m>(&mut self, dedicated_allocation: bool) {
21640        self.raw.dedicatedAllocation = dedicated_allocation as u32;
21641    }
21642
21643    pub fn as_raw(&self) -> &vks::VkDedicatedAllocationImageCreateInfoNV {
21644        &self.raw
21645    }
21646}
21647
21648impl<'s> From<DedicatedAllocationImageCreateInfoNv<'s>> for vks::VkDedicatedAllocationImageCreateInfoNV {
21649    fn from(f: DedicatedAllocationImageCreateInfoNv<'s>) -> vks::VkDedicatedAllocationImageCreateInfoNV {
21650        f.raw
21651    }
21652}
21653
21654
21655/// A builder for `VkDedicatedAllocationImageCreateInfoNV`.
21656///
21657/// 
21658#[derive(Debug, Clone, Default)]
21659pub struct DedicatedAllocationImageCreateInfoNvBuilder<'b> {
21660    raw: vks::VkDedicatedAllocationImageCreateInfoNV,
21661    _p: PhantomData<&'b ()>, 
21662}
21663
21664impl<'b> DedicatedAllocationImageCreateInfoNvBuilder<'b> {
21665    pub fn new() -> DedicatedAllocationImageCreateInfoNvBuilder<'b> {
21666        DedicatedAllocationImageCreateInfoNvBuilder {
21667            raw: vks::VkDedicatedAllocationImageCreateInfoNV::default(),
21668            _p: PhantomData,
21669        }
21670    }
21671
21672    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DedicatedAllocationImageCreateInfoNvBuilder<'b> {
21673        self.raw.pNext = next;
21674        self
21675    }
21676
21677    pub fn dedicated_allocation<'m>(mut self, dedicated_allocation: bool) -> DedicatedAllocationImageCreateInfoNvBuilder<'b> {
21678        self.raw.dedicatedAllocation = dedicated_allocation as u32;
21679        self
21680    }
21681
21682    pub fn get_next<'a>(&'a self) -> *const c_void {
21683        self.raw.pNext
21684    }
21685
21686    pub fn get_dedicated_allocation<'a>(&'a self) -> bool {
21687        self.raw.dedicatedAllocation != 0
21688    }
21689
21690    pub fn build(self) -> DedicatedAllocationImageCreateInfoNv<'b> {
21691        DedicatedAllocationImageCreateInfoNv {
21692            raw: self.raw,
21693            _p: PhantomData,
21694        }
21695    }
21696}
21697
21698
21699/// A `VkDedicatedAllocationBufferCreateInfoNV`.
21700///
21701/// 
21702#[derive(Debug, Clone, Default)]
21703#[repr(C)]
21704pub struct DedicatedAllocationBufferCreateInfoNv<'s> {
21705    raw: vks::VkDedicatedAllocationBufferCreateInfoNV,
21706    _p: PhantomData<&'s ()>,
21707}
21708
21709impl<'s> DedicatedAllocationBufferCreateInfoNv<'s> {
21710    pub fn builder<'b>() -> DedicatedAllocationBufferCreateInfoNvBuilder<'b> {
21711        DedicatedAllocationBufferCreateInfoNvBuilder::new()
21712    }
21713
21714    pub unsafe fn from_raw(raw: vks::VkDedicatedAllocationBufferCreateInfoNV) -> DedicatedAllocationBufferCreateInfoNv<'s> {
21715        DedicatedAllocationBufferCreateInfoNv { raw, _p: PhantomData }
21716    }
21717
21718    pub fn next<'a>(&'a self) -> *const c_void {
21719        self.raw.pNext
21720    }
21721
21722    pub fn dedicated_allocation<'a>(&'a self) -> bool {
21723        self.raw.dedicatedAllocation != 0
21724    }
21725
21726    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
21727        self.raw.pNext = next;
21728    }
21729
21730    pub fn set_dedicated_allocation<'m>(&mut self, dedicated_allocation: bool) {
21731        self.raw.dedicatedAllocation = dedicated_allocation as u32;
21732    }
21733
21734    pub fn as_raw(&self) -> &vks::VkDedicatedAllocationBufferCreateInfoNV {
21735        &self.raw
21736    }
21737}
21738
21739impl<'s> From<DedicatedAllocationBufferCreateInfoNv<'s>> for vks::VkDedicatedAllocationBufferCreateInfoNV {
21740    fn from(f: DedicatedAllocationBufferCreateInfoNv<'s>) -> vks::VkDedicatedAllocationBufferCreateInfoNV {
21741        f.raw
21742    }
21743}
21744
21745
21746/// A builder for `VkDedicatedAllocationBufferCreateInfoNV`.
21747///
21748/// 
21749#[derive(Debug, Clone, Default)]
21750pub struct DedicatedAllocationBufferCreateInfoNvBuilder<'b> {
21751    raw: vks::VkDedicatedAllocationBufferCreateInfoNV,
21752    _p: PhantomData<&'b ()>, 
21753}
21754
21755impl<'b> DedicatedAllocationBufferCreateInfoNvBuilder<'b> {
21756    pub fn new() -> DedicatedAllocationBufferCreateInfoNvBuilder<'b> {
21757        DedicatedAllocationBufferCreateInfoNvBuilder {
21758            raw: vks::VkDedicatedAllocationBufferCreateInfoNV::default(),
21759            _p: PhantomData,
21760        }
21761    }
21762
21763    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DedicatedAllocationBufferCreateInfoNvBuilder<'b> {
21764        self.raw.pNext = next;
21765        self
21766    }
21767
21768    pub fn dedicated_allocation<'m>(mut self, dedicated_allocation: bool) -> DedicatedAllocationBufferCreateInfoNvBuilder<'b> {
21769        self.raw.dedicatedAllocation = dedicated_allocation as u32;
21770        self
21771    }
21772
21773    pub fn get_next<'a>(&'a self) -> *const c_void {
21774        self.raw.pNext
21775    }
21776
21777    pub fn get_dedicated_allocation<'a>(&'a self) -> bool {
21778        self.raw.dedicatedAllocation != 0
21779    }
21780
21781    pub fn build(self) -> DedicatedAllocationBufferCreateInfoNv<'b> {
21782        DedicatedAllocationBufferCreateInfoNv {
21783            raw: self.raw,
21784            _p: PhantomData,
21785        }
21786    }
21787}
21788
21789
21790/// A `VkDedicatedAllocationMemoryAllocateInfoNV`.
21791///
21792/// 
21793#[derive(Debug, Clone, Default)]
21794#[repr(C)]
21795pub struct DedicatedAllocationMemoryAllocateInfoNv<'s> {
21796    raw: vks::VkDedicatedAllocationMemoryAllocateInfoNV,
21797    _p: PhantomData<&'s ()>,
21798}
21799
21800impl<'s> DedicatedAllocationMemoryAllocateInfoNv<'s> {
21801    pub fn builder<'b>() -> DedicatedAllocationMemoryAllocateInfoNvBuilder<'b> {
21802        DedicatedAllocationMemoryAllocateInfoNvBuilder::new()
21803    }
21804
21805    pub unsafe fn from_raw(raw: vks::VkDedicatedAllocationMemoryAllocateInfoNV) -> DedicatedAllocationMemoryAllocateInfoNv<'s> {
21806        DedicatedAllocationMemoryAllocateInfoNv { raw, _p: PhantomData }
21807    }
21808
21809    pub fn next<'a>(&'a self) -> *const c_void {
21810        self.raw.pNext
21811    }
21812
21813    pub fn image<'a>(&'a self) -> vks::VkImage {
21814        self.raw.image
21815    }
21816
21817    pub fn buffer<'a>(&'a self) -> vks::VkBuffer {
21818        self.raw.buffer
21819    }
21820
21821    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
21822        self.raw.pNext = next;
21823    }
21824
21825    pub fn set_image<'m, H>(&mut self, image: H)
21826            where H: Handle<Target=ImageHandle> {
21827        self.raw.image = image.handle().0;
21828    }
21829
21830    pub fn set_buffer<'m, H>(&mut self, buffer: H)
21831            where H: Handle<Target=BufferHandle> {
21832        self.raw.buffer = buffer.handle().0;
21833    }
21834
21835    pub fn as_raw(&self) -> &vks::VkDedicatedAllocationMemoryAllocateInfoNV {
21836        &self.raw
21837    }
21838}
21839
21840impl<'s> From<DedicatedAllocationMemoryAllocateInfoNv<'s>> for vks::VkDedicatedAllocationMemoryAllocateInfoNV {
21841    fn from(f: DedicatedAllocationMemoryAllocateInfoNv<'s>) -> vks::VkDedicatedAllocationMemoryAllocateInfoNV {
21842        f.raw
21843    }
21844}
21845
21846
21847/// A builder for `VkDedicatedAllocationMemoryAllocateInfoNV`.
21848///
21849/// 
21850#[derive(Debug, Clone, Default)]
21851pub struct DedicatedAllocationMemoryAllocateInfoNvBuilder<'b> {
21852    raw: vks::VkDedicatedAllocationMemoryAllocateInfoNV,
21853    _p: PhantomData<&'b ()>, 
21854}
21855
21856impl<'b> DedicatedAllocationMemoryAllocateInfoNvBuilder<'b> {
21857    pub fn new() -> DedicatedAllocationMemoryAllocateInfoNvBuilder<'b> {
21858        DedicatedAllocationMemoryAllocateInfoNvBuilder {
21859            raw: vks::VkDedicatedAllocationMemoryAllocateInfoNV::default(),
21860            _p: PhantomData,
21861        }
21862    }
21863
21864    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DedicatedAllocationMemoryAllocateInfoNvBuilder<'b> {
21865        self.raw.pNext = next;
21866        self
21867    }
21868
21869    pub fn image<'m, H>(mut self, image: H) -> DedicatedAllocationMemoryAllocateInfoNvBuilder<'b>
21870            where H: Handle<Target=ImageHandle> {
21871        self.raw.image = image.handle().0;
21872        self
21873    }
21874
21875    pub fn buffer<'m, H>(mut self, buffer: H) -> DedicatedAllocationMemoryAllocateInfoNvBuilder<'b>
21876            where H: Handle<Target=BufferHandle> {
21877        self.raw.buffer = buffer.handle().0;
21878        self
21879    }
21880
21881    pub fn get_next<'a>(&'a self) -> *const c_void {
21882        self.raw.pNext
21883    }
21884
21885    pub fn get_image<'a>(&'a self) -> vks::VkImage {
21886        self.raw.image
21887    }
21888
21889    pub fn get_buffer<'a>(&'a self) -> vks::VkBuffer {
21890        self.raw.buffer
21891    }
21892
21893    pub fn build(self) -> DedicatedAllocationMemoryAllocateInfoNv<'b> {
21894        DedicatedAllocationMemoryAllocateInfoNv {
21895            raw: self.raw,
21896            _p: PhantomData,
21897        }
21898    }
21899}
21900
21901
21902/// A `VkExternalImageFormatPropertiesNV`.
21903///
21904/// 
21905#[derive(Debug, Clone, Default)]
21906#[repr(C)]
21907pub struct ExternalImageFormatPropertiesNv {
21908    raw: vks::VkExternalImageFormatPropertiesNV,
21909}
21910
21911impl ExternalImageFormatPropertiesNv {
21912    pub fn builder() -> ExternalImageFormatPropertiesNvBuilder {
21913        ExternalImageFormatPropertiesNvBuilder::new()
21914    }
21915
21916    pub unsafe fn from_raw(raw: vks::VkExternalImageFormatPropertiesNV) -> ExternalImageFormatPropertiesNv {
21917        ExternalImageFormatPropertiesNv { raw, }
21918    }
21919
21920    pub fn image_format_properties<'a>(&'a self) -> &'a ImageFormatProperties {
21921        unsafe { &*(&self.raw.imageFormatProperties as *const vks::VkImageFormatProperties as *const ImageFormatProperties) }
21922    }
21923
21924    pub fn image_format_properties_mut<'a>(&'a mut self) -> &'a mut ImageFormatProperties {
21925        unsafe { &mut *(&mut self.raw.imageFormatProperties as *mut  vks::VkImageFormatProperties as *mut ImageFormatProperties) }
21926    }
21927
21928    pub fn external_memory_features<'a>(&'a self) -> ExternalMemoryFeatureFlagsNv {
21929        ExternalMemoryFeatureFlagsNv::from_bits(self.raw.externalMemoryFeatures)
21930            .expect("ExternalImageFormatPropertiesNv::external_memory_features: error converting flags")
21931    }
21932
21933    pub fn export_from_imported_handle_types<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsNv {
21934        ExternalMemoryHandleTypeFlagsNv::from_bits(self.raw.exportFromImportedHandleTypes)
21935            .expect("ExternalImageFormatPropertiesNv::export_from_imported_handle_types: error converting flags")
21936    }
21937
21938    pub fn compatible_handle_types<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsNv {
21939        ExternalMemoryHandleTypeFlagsNv::from_bits(self.raw.compatibleHandleTypes)
21940            .expect("ExternalImageFormatPropertiesNv::compatible_handle_types: error converting flags")
21941    }
21942
21943    pub fn set_image_format_properties<'m>(&mut self, image_format_properties: ImageFormatProperties) {
21944        self.raw.imageFormatProperties = image_format_properties.raw;
21945    }
21946
21947    pub fn set_external_memory_features<'m>(&mut self, external_memory_features: ExternalMemoryFeatureFlagsNv) {
21948        self.raw.externalMemoryFeatures = external_memory_features.bits();
21949    }
21950
21951    pub fn set_export_from_imported_handle_types<'m>(&mut self, export_from_imported_handle_types: ExternalMemoryHandleTypeFlagsNv) {
21952        self.raw.exportFromImportedHandleTypes = export_from_imported_handle_types.bits();
21953    }
21954
21955    pub fn set_compatible_handle_types<'m>(&mut self, compatible_handle_types: ExternalMemoryHandleTypeFlagsNv) {
21956        self.raw.compatibleHandleTypes = compatible_handle_types.bits();
21957    }
21958
21959    pub fn as_raw(&self) -> &vks::VkExternalImageFormatPropertiesNV {
21960        &self.raw
21961    }
21962}
21963
21964impl From<ExternalImageFormatPropertiesNv> for vks::VkExternalImageFormatPropertiesNV {
21965    fn from(f: ExternalImageFormatPropertiesNv) -> vks::VkExternalImageFormatPropertiesNV {
21966        f.raw
21967    }
21968}
21969
21970
21971/// A builder for `VkExternalImageFormatPropertiesNV`.
21972///
21973/// 
21974#[derive(Debug, Clone, Default)]
21975pub struct ExternalImageFormatPropertiesNvBuilder {
21976    raw: vks::VkExternalImageFormatPropertiesNV,
21977}
21978
21979impl ExternalImageFormatPropertiesNvBuilder {
21980    pub fn new() -> ExternalImageFormatPropertiesNvBuilder {
21981        ExternalImageFormatPropertiesNvBuilder {
21982            raw: vks::VkExternalImageFormatPropertiesNV::default(),
21983        }
21984    }
21985
21986    pub fn image_format_properties<'m>(mut self, image_format_properties: ImageFormatProperties) -> ExternalImageFormatPropertiesNvBuilder {
21987        self.raw.imageFormatProperties = image_format_properties.raw;
21988        self
21989    }
21990
21991    pub fn external_memory_features<'m>(mut self, external_memory_features: ExternalMemoryFeatureFlagsNv) -> ExternalImageFormatPropertiesNvBuilder {
21992        self.raw.externalMemoryFeatures = external_memory_features.bits();
21993        self
21994    }
21995
21996    pub fn export_from_imported_handle_types<'m>(mut self, export_from_imported_handle_types: ExternalMemoryHandleTypeFlagsNv) -> ExternalImageFormatPropertiesNvBuilder {
21997        self.raw.exportFromImportedHandleTypes = export_from_imported_handle_types.bits();
21998        self
21999    }
22000
22001    pub fn compatible_handle_types<'m>(mut self, compatible_handle_types: ExternalMemoryHandleTypeFlagsNv) -> ExternalImageFormatPropertiesNvBuilder {
22002        self.raw.compatibleHandleTypes = compatible_handle_types.bits();
22003        self
22004    }
22005
22006    pub fn get_image_format_properties<'a>(&'a self) -> &'a ImageFormatProperties {
22007        unsafe { &*(&self.raw.imageFormatProperties as *const vks::VkImageFormatProperties as *const ImageFormatProperties) }
22008    }
22009
22010    pub fn get_image_format_properties_mut<'a>(&'a mut self) -> &'a mut ImageFormatProperties {
22011        unsafe { &mut *(&mut self.raw.imageFormatProperties as *mut  vks::VkImageFormatProperties as *mut ImageFormatProperties) }
22012    }
22013
22014    pub fn get_external_memory_features<'a>(&'a self) -> ExternalMemoryFeatureFlagsNv {
22015        ExternalMemoryFeatureFlagsNv::from_bits(self.raw.externalMemoryFeatures)
22016            .expect("ExternalImageFormatPropertiesNv::external_memory_features: error converting flags")
22017    }
22018
22019    pub fn get_export_from_imported_handle_types<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsNv {
22020        ExternalMemoryHandleTypeFlagsNv::from_bits(self.raw.exportFromImportedHandleTypes)
22021            .expect("ExternalImageFormatPropertiesNv::export_from_imported_handle_types: error converting flags")
22022    }
22023
22024    pub fn get_compatible_handle_types<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsNv {
22025        ExternalMemoryHandleTypeFlagsNv::from_bits(self.raw.compatibleHandleTypes)
22026            .expect("ExternalImageFormatPropertiesNv::compatible_handle_types: error converting flags")
22027    }
22028
22029    pub fn build(self) -> ExternalImageFormatPropertiesNv {
22030        ExternalImageFormatPropertiesNv {
22031            raw: self.raw,
22032        }
22033    }
22034}
22035
22036
22037/// A `VkExternalMemoryImageCreateInfoNV`.
22038///
22039/// 
22040#[derive(Debug, Clone, Default)]
22041#[repr(C)]
22042pub struct ExternalMemoryImageCreateInfoNv<'s> {
22043    raw: vks::VkExternalMemoryImageCreateInfoNV,
22044    _p: PhantomData<&'s ()>,
22045}
22046
22047impl<'s> ExternalMemoryImageCreateInfoNv<'s> {
22048    pub fn builder<'b>() -> ExternalMemoryImageCreateInfoNvBuilder<'b> {
22049        ExternalMemoryImageCreateInfoNvBuilder::new()
22050    }
22051
22052    pub unsafe fn from_raw(raw: vks::VkExternalMemoryImageCreateInfoNV) -> ExternalMemoryImageCreateInfoNv<'s> {
22053        ExternalMemoryImageCreateInfoNv { raw, _p: PhantomData }
22054    }
22055
22056    pub fn next<'a>(&'a self) -> *const c_void {
22057        self.raw.pNext
22058    }
22059
22060    pub fn handle_types<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsNv {
22061        ExternalMemoryHandleTypeFlagsNv::from_bits(self.raw.handleTypes)
22062            .expect("ExternalMemoryImageCreateInfoNv::handle_types: error converting flags")
22063    }
22064
22065    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
22066        self.raw.pNext = next;
22067    }
22068
22069    pub fn set_handle_types<'m>(&mut self, handle_types: ExternalMemoryHandleTypeFlagsNv) {
22070        self.raw.handleTypes = handle_types.bits();
22071    }
22072
22073    pub fn as_raw(&self) -> &vks::VkExternalMemoryImageCreateInfoNV {
22074        &self.raw
22075    }
22076}
22077
22078impl<'s> From<ExternalMemoryImageCreateInfoNv<'s>> for vks::VkExternalMemoryImageCreateInfoNV {
22079    fn from(f: ExternalMemoryImageCreateInfoNv<'s>) -> vks::VkExternalMemoryImageCreateInfoNV {
22080        f.raw
22081    }
22082}
22083
22084
22085/// A builder for `VkExternalMemoryImageCreateInfoNV`.
22086///
22087/// 
22088#[derive(Debug, Clone, Default)]
22089pub struct ExternalMemoryImageCreateInfoNvBuilder<'b> {
22090    raw: vks::VkExternalMemoryImageCreateInfoNV,
22091    _p: PhantomData<&'b ()>, 
22092}
22093
22094impl<'b> ExternalMemoryImageCreateInfoNvBuilder<'b> {
22095    pub fn new() -> ExternalMemoryImageCreateInfoNvBuilder<'b> {
22096        ExternalMemoryImageCreateInfoNvBuilder {
22097            raw: vks::VkExternalMemoryImageCreateInfoNV::default(),
22098            _p: PhantomData,
22099        }
22100    }
22101
22102    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ExternalMemoryImageCreateInfoNvBuilder<'b> {
22103        self.raw.pNext = next;
22104        self
22105    }
22106
22107    pub fn handle_types<'m>(mut self, handle_types: ExternalMemoryHandleTypeFlagsNv) -> ExternalMemoryImageCreateInfoNvBuilder<'b> {
22108        self.raw.handleTypes = handle_types.bits();
22109        self
22110    }
22111
22112    pub fn get_next<'a>(&'a self) -> *const c_void {
22113        self.raw.pNext
22114    }
22115
22116    pub fn get_handle_types<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsNv {
22117        ExternalMemoryHandleTypeFlagsNv::from_bits(self.raw.handleTypes)
22118            .expect("ExternalMemoryImageCreateInfoNv::handle_types: error converting flags")
22119    }
22120
22121    pub fn build(self) -> ExternalMemoryImageCreateInfoNv<'b> {
22122        ExternalMemoryImageCreateInfoNv {
22123            raw: self.raw,
22124            _p: PhantomData,
22125        }
22126    }
22127}
22128
22129
22130/// A `VkExportMemoryAllocateInfoNV`.
22131///
22132/// 
22133#[derive(Debug, Clone, Default)]
22134#[repr(C)]
22135pub struct ExportMemoryAllocateInfoNv<'s> {
22136    raw: vks::VkExportMemoryAllocateInfoNV,
22137    _p: PhantomData<&'s ()>,
22138}
22139
22140impl<'s> ExportMemoryAllocateInfoNv<'s> {
22141    pub fn builder<'b>() -> ExportMemoryAllocateInfoNvBuilder<'b> {
22142        ExportMemoryAllocateInfoNvBuilder::new()
22143    }
22144
22145    pub unsafe fn from_raw(raw: vks::VkExportMemoryAllocateInfoNV) -> ExportMemoryAllocateInfoNv<'s> {
22146        ExportMemoryAllocateInfoNv { raw, _p: PhantomData }
22147    }
22148
22149    pub fn next<'a>(&'a self) -> *const c_void {
22150        self.raw.pNext
22151    }
22152
22153    pub fn handle_types<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsNv {
22154        ExternalMemoryHandleTypeFlagsNv::from_bits(self.raw.handleTypes)
22155            .expect("ExportMemoryAllocateInfoNv::handle_types: error converting flags")
22156    }
22157
22158    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
22159        self.raw.pNext = next;
22160    }
22161
22162    pub fn set_handle_types<'m>(&mut self, handle_types: ExternalMemoryHandleTypeFlagsNv) {
22163        self.raw.handleTypes = handle_types.bits();
22164    }
22165
22166    pub fn as_raw(&self) -> &vks::VkExportMemoryAllocateInfoNV {
22167        &self.raw
22168    }
22169}
22170
22171impl<'s> From<ExportMemoryAllocateInfoNv<'s>> for vks::VkExportMemoryAllocateInfoNV {
22172    fn from(f: ExportMemoryAllocateInfoNv<'s>) -> vks::VkExportMemoryAllocateInfoNV {
22173        f.raw
22174    }
22175}
22176
22177
22178/// A builder for `VkExportMemoryAllocateInfoNV`.
22179///
22180/// 
22181#[derive(Debug, Clone, Default)]
22182pub struct ExportMemoryAllocateInfoNvBuilder<'b> {
22183    raw: vks::VkExportMemoryAllocateInfoNV,
22184    _p: PhantomData<&'b ()>, 
22185}
22186
22187impl<'b> ExportMemoryAllocateInfoNvBuilder<'b> {
22188    pub fn new() -> ExportMemoryAllocateInfoNvBuilder<'b> {
22189        ExportMemoryAllocateInfoNvBuilder {
22190            raw: vks::VkExportMemoryAllocateInfoNV::default(),
22191            _p: PhantomData,
22192        }
22193    }
22194
22195    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ExportMemoryAllocateInfoNvBuilder<'b> {
22196        self.raw.pNext = next;
22197        self
22198    }
22199
22200    pub fn handle_types<'m>(mut self, handle_types: ExternalMemoryHandleTypeFlagsNv) -> ExportMemoryAllocateInfoNvBuilder<'b> {
22201        self.raw.handleTypes = handle_types.bits();
22202        self
22203    }
22204
22205    pub fn get_next<'a>(&'a self) -> *const c_void {
22206        self.raw.pNext
22207    }
22208
22209    pub fn get_handle_types<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsNv {
22210        ExternalMemoryHandleTypeFlagsNv::from_bits(self.raw.handleTypes)
22211            .expect("ExportMemoryAllocateInfoNv::handle_types: error converting flags")
22212    }
22213
22214    pub fn build(self) -> ExportMemoryAllocateInfoNv<'b> {
22215        ExportMemoryAllocateInfoNv {
22216            raw: self.raw,
22217            _p: PhantomData,
22218        }
22219    }
22220}
22221
22222
22223/// A `VkImportMemoryWin32HandleInfoNV`.
22224///
22225/// 
22226#[derive(Debug, Clone, Default)]
22227#[repr(C)]
22228pub struct ImportMemoryWin32HandleInfoNv<'s> {
22229    raw: vks::VkImportMemoryWin32HandleInfoNV,
22230    _p: PhantomData<&'s ()>,
22231}
22232
22233impl<'s> ImportMemoryWin32HandleInfoNv<'s> {
22234    pub fn builder<'b>() -> ImportMemoryWin32HandleInfoNvBuilder<'b> {
22235        ImportMemoryWin32HandleInfoNvBuilder::new()
22236    }
22237
22238    pub unsafe fn from_raw(raw: vks::VkImportMemoryWin32HandleInfoNV) -> ImportMemoryWin32HandleInfoNv<'s> {
22239        ImportMemoryWin32HandleInfoNv { raw, _p: PhantomData }
22240    }
22241
22242    pub fn next<'a>(&'a self) -> *const c_void {
22243        self.raw.pNext
22244    }
22245
22246    pub fn handle_type<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsNv {
22247        ExternalMemoryHandleTypeFlagsNv::from_bits(self.raw.handleType)
22248            .expect("ImportMemoryWin32HandleInfoNv::handle_type: error converting flags")
22249    }
22250
22251    pub fn handle<'a>(&'a self) -> HANDLE {
22252        self.raw.handle.into()
22253    }
22254
22255    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
22256        self.raw.pNext = next;
22257    }
22258
22259    pub fn set_handle_type<'m>(&mut self, handle_type: ExternalMemoryHandleTypeFlagsNv) {
22260        self.raw.handleType = handle_type.bits();
22261    }
22262
22263    pub fn set_handle<'m>(&mut self, handle: HANDLE) {
22264        self.raw.handle = handle.into();
22265    }
22266
22267    pub fn as_raw(&self) -> &vks::VkImportMemoryWin32HandleInfoNV {
22268        &self.raw
22269    }
22270}
22271
22272impl<'s> From<ImportMemoryWin32HandleInfoNv<'s>> for vks::VkImportMemoryWin32HandleInfoNV {
22273    fn from(f: ImportMemoryWin32HandleInfoNv<'s>) -> vks::VkImportMemoryWin32HandleInfoNV {
22274        f.raw
22275    }
22276}
22277
22278
22279/// A builder for `VkImportMemoryWin32HandleInfoNV`.
22280///
22281/// 
22282#[derive(Debug, Clone, Default)]
22283pub struct ImportMemoryWin32HandleInfoNvBuilder<'b> {
22284    raw: vks::VkImportMemoryWin32HandleInfoNV,
22285    _p: PhantomData<&'b ()>, 
22286}
22287
22288impl<'b> ImportMemoryWin32HandleInfoNvBuilder<'b> {
22289    pub fn new() -> ImportMemoryWin32HandleInfoNvBuilder<'b> {
22290        ImportMemoryWin32HandleInfoNvBuilder {
22291            raw: vks::VkImportMemoryWin32HandleInfoNV::default(),
22292            _p: PhantomData,
22293        }
22294    }
22295
22296    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ImportMemoryWin32HandleInfoNvBuilder<'b> {
22297        self.raw.pNext = next;
22298        self
22299    }
22300
22301    pub fn handle_type<'m>(mut self, handle_type: ExternalMemoryHandleTypeFlagsNv) -> ImportMemoryWin32HandleInfoNvBuilder<'b> {
22302        self.raw.handleType = handle_type.bits();
22303        self
22304    }
22305
22306    pub fn handle<'m>(mut self, handle: HANDLE) -> ImportMemoryWin32HandleInfoNvBuilder<'b> {
22307        self.raw.handle = handle.into();
22308        self
22309    }
22310
22311    pub fn get_next<'a>(&'a self) -> *const c_void {
22312        self.raw.pNext
22313    }
22314
22315    pub fn get_handle_type<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsNv {
22316        ExternalMemoryHandleTypeFlagsNv::from_bits(self.raw.handleType)
22317            .expect("ImportMemoryWin32HandleInfoNv::handle_type: error converting flags")
22318    }
22319
22320    pub fn get_handle<'a>(&'a self) -> HANDLE {
22321        self.raw.handle.into()
22322    }
22323
22324    pub fn build(self) -> ImportMemoryWin32HandleInfoNv<'b> {
22325        ImportMemoryWin32HandleInfoNv {
22326            raw: self.raw,
22327            _p: PhantomData,
22328        }
22329    }
22330}
22331
22332
22333/// A `VkExportMemoryWin32HandleInfoNV`.
22334///
22335/// 
22336#[derive(Debug, Clone, Default)]
22337#[repr(C)]
22338pub struct ExportMemoryWin32HandleInfoNv<'s> {
22339    raw: vks::VkExportMemoryWin32HandleInfoNV,
22340    _p: PhantomData<&'s ()>,
22341}
22342
22343impl<'s> ExportMemoryWin32HandleInfoNv<'s> {
22344    pub fn builder<'b>() -> ExportMemoryWin32HandleInfoNvBuilder<'b> {
22345        ExportMemoryWin32HandleInfoNvBuilder::new()
22346    }
22347
22348    pub unsafe fn from_raw(raw: vks::VkExportMemoryWin32HandleInfoNV) -> ExportMemoryWin32HandleInfoNv<'s> {
22349        ExportMemoryWin32HandleInfoNv { raw, _p: PhantomData }
22350    }
22351
22352    pub fn next<'a>(&'a self) -> *const c_void {
22353        self.raw.pNext
22354    }
22355
22356    pub fn attributes<'a>(&'a self) -> &'a SECURITY_ATTRIBUTES {
22357        unsafe { &*(self.raw.pAttributes as *const _) }
22358    }
22359
22360    pub fn dw_access<'a>(&'a self) -> DWORD {
22361        self.raw.dwAccess.into()
22362    }
22363
22364    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
22365        self.raw.pNext = next;
22366    }
22367
22368    pub fn set_attributes<'m, 'a>(&mut self, attributes: &'a SECURITY_ATTRIBUTES) {
22369        self.raw.pAttributes = attributes;
22370    }
22371
22372    pub fn set_dw_access<'m>(&mut self, dw_access: DWORD) {
22373        self.raw.dwAccess = dw_access.into();
22374    }
22375
22376    pub fn as_raw(&self) -> &vks::VkExportMemoryWin32HandleInfoNV {
22377        &self.raw
22378    }
22379}
22380
22381impl<'s> From<ExportMemoryWin32HandleInfoNv<'s>> for vks::VkExportMemoryWin32HandleInfoNV {
22382    fn from(f: ExportMemoryWin32HandleInfoNv<'s>) -> vks::VkExportMemoryWin32HandleInfoNV {
22383        f.raw
22384    }
22385}
22386
22387
22388/// A builder for `VkExportMemoryWin32HandleInfoNV`.
22389///
22390/// 
22391#[derive(Debug, Clone, Default)]
22392pub struct ExportMemoryWin32HandleInfoNvBuilder<'b> {
22393    raw: vks::VkExportMemoryWin32HandleInfoNV,
22394    _p: PhantomData<&'b ()>, 
22395}
22396
22397impl<'b> ExportMemoryWin32HandleInfoNvBuilder<'b> {
22398    pub fn new() -> ExportMemoryWin32HandleInfoNvBuilder<'b> {
22399        ExportMemoryWin32HandleInfoNvBuilder {
22400            raw: vks::VkExportMemoryWin32HandleInfoNV::default(),
22401            _p: PhantomData,
22402        }
22403    }
22404
22405    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ExportMemoryWin32HandleInfoNvBuilder<'b> {
22406        self.raw.pNext = next;
22407        self
22408    }
22409
22410    pub fn attributes<'m, 'a>(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> ExportMemoryWin32HandleInfoNvBuilder<'b> {
22411        self.raw.pAttributes = attributes;
22412        self
22413    }
22414
22415    pub fn dw_access<'m>(mut self, dw_access: DWORD) -> ExportMemoryWin32HandleInfoNvBuilder<'b> {
22416        self.raw.dwAccess = dw_access.into();
22417        self
22418    }
22419
22420    pub fn get_next<'a>(&'a self) -> *const c_void {
22421        self.raw.pNext
22422    }
22423
22424    pub fn get_attributes<'a>(&'a self) -> &'a SECURITY_ATTRIBUTES {
22425        unsafe { &*(self.raw.pAttributes as *const _) }
22426    }
22427
22428    pub fn get_dw_access<'a>(&'a self) -> DWORD {
22429        self.raw.dwAccess.into()
22430    }
22431
22432    pub fn build(self) -> ExportMemoryWin32HandleInfoNv<'b> {
22433        ExportMemoryWin32HandleInfoNv {
22434            raw: self.raw,
22435            _p: PhantomData,
22436        }
22437    }
22438}
22439
22440
22441/// A `VkWin32KeyedMutexAcquireReleaseInfoNV`.
22442///
22443/// 
22444#[derive(Debug, Clone, Default)]
22445#[repr(C)]
22446pub struct Win32KeyedMutexAcquireReleaseInfoNv<'s> {
22447    raw: vks::VkWin32KeyedMutexAcquireReleaseInfoNV,
22448    _p: PhantomData<&'s ()>,
22449}
22450
22451impl<'s> Win32KeyedMutexAcquireReleaseInfoNv<'s> {
22452    pub fn builder<'b>() -> Win32KeyedMutexAcquireReleaseInfoNvBuilder<'b> {
22453        Win32KeyedMutexAcquireReleaseInfoNvBuilder::new()
22454    }
22455
22456    pub unsafe fn from_raw(raw: vks::VkWin32KeyedMutexAcquireReleaseInfoNV) -> Win32KeyedMutexAcquireReleaseInfoNv<'s> {
22457        Win32KeyedMutexAcquireReleaseInfoNv { raw, _p: PhantomData }
22458    }
22459
22460    pub fn next<'a>(&'a self) -> *const c_void {
22461        self.raw.pNext
22462    }
22463
22464    pub fn acquire_syncs<'a>(&'a self) -> &'a [vks::VkDeviceMemory] {
22465        unsafe { slice::from_raw_parts(self.raw.pAcquireSyncs as *const _, self.raw.acquireCount as usize) }
22466    }
22467
22468    pub fn acquire_keys<'a>(&'a self) -> &'a [u64] {
22469        unsafe { slice::from_raw_parts(self.raw.pAcquireKeys as *const _, self.raw.acquireCount as usize) }
22470    }
22471
22472    pub fn acquire_timeout_milliseconds<'a>(&'a self) -> &'a [u32] {
22473        unsafe { slice::from_raw_parts(self.raw.pAcquireTimeoutMilliseconds as *const _, self.raw.acquireCount as usize) }
22474    }
22475
22476    pub fn release_syncs<'a>(&'a self) -> &'a [vks::VkDeviceMemory] {
22477        unsafe { slice::from_raw_parts(self.raw.pReleaseSyncs as *const _, self.raw.releaseCount as usize) }
22478    }
22479
22480    pub fn release_keys<'a>(&'a self) -> &'a [u64] {
22481        unsafe { slice::from_raw_parts(self.raw.pReleaseKeys as *const _, self.raw.releaseCount as usize) }
22482    }
22483
22484    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
22485        self.raw.pNext = next;
22486    }
22487
22488    pub fn set_acquire_syncs<'m, 'a>(&mut self, acquire_syncs: &'a [DeviceMemoryHandle])
22489            where 'a: 's {
22490        assert!(self.raw.acquireCount == 0 || self.raw.acquireCount == acquire_syncs.len() as _, 
22491            "count inconsistency found when specifying `Win32KeyedMutexAcquireReleaseInfoNv::acquire_syncs`.");
22492        self.raw.acquireCount = acquire_syncs.len() as _;
22493        self.raw.pAcquireSyncs = acquire_syncs.as_ptr() as *const vks::VkDeviceMemory;
22494    }
22495
22496    pub fn set_acquire_keys<'m, 'a>(&mut self, acquire_keys: &'a [u64])
22497            where 'a: 's {
22498        assert!(self.raw.acquireCount == 0 || self.raw.acquireCount == acquire_keys.len() as _, 
22499            "count inconsistency found when specifying `Win32KeyedMutexAcquireReleaseInfoNv::acquire_keys`.");
22500        self.raw.acquireCount = acquire_keys.len() as _;
22501        self.raw.pAcquireKeys = acquire_keys.as_ptr() as *const u64 as *const _;
22502    }
22503
22504    pub fn set_acquire_timeout_milliseconds<'m, 'a>(&mut self, acquire_timeout_milliseconds: &'a [u32])
22505            where 'a: 's {
22506        assert!(self.raw.acquireCount == 0 || self.raw.acquireCount == acquire_timeout_milliseconds.len() as _, 
22507            "count inconsistency found when specifying `Win32KeyedMutexAcquireReleaseInfoNv::acquire_timeout_milliseconds`.");
22508        self.raw.acquireCount = acquire_timeout_milliseconds.len() as _;
22509        self.raw.pAcquireTimeoutMilliseconds = acquire_timeout_milliseconds.as_ptr() as *const u32 as *const _;
22510    }
22511
22512    pub fn set_release_syncs<'m, 'a>(&mut self, release_syncs: &'a [DeviceMemoryHandle])
22513            where 'a: 's {
22514        assert!(self.raw.releaseCount == 0 || self.raw.releaseCount == release_syncs.len() as _, 
22515            "count inconsistency found when specifying `Win32KeyedMutexAcquireReleaseInfoNv::release_syncs`.");
22516        self.raw.releaseCount = release_syncs.len() as _;
22517        self.raw.pReleaseSyncs = release_syncs.as_ptr() as *const vks::VkDeviceMemory;
22518    }
22519
22520    pub fn set_release_keys<'m, 'a>(&mut self, release_keys: &'a [u64])
22521            where 'a: 's {
22522        assert!(self.raw.releaseCount == 0 || self.raw.releaseCount == release_keys.len() as _, 
22523            "count inconsistency found when specifying `Win32KeyedMutexAcquireReleaseInfoNv::release_keys`.");
22524        self.raw.releaseCount = release_keys.len() as _;
22525        self.raw.pReleaseKeys = release_keys.as_ptr() as *const u64 as *const _;
22526    }
22527
22528    pub fn as_raw(&self) -> &vks::VkWin32KeyedMutexAcquireReleaseInfoNV {
22529        &self.raw
22530    }
22531}
22532
22533impl<'s> From<Win32KeyedMutexAcquireReleaseInfoNv<'s>> for vks::VkWin32KeyedMutexAcquireReleaseInfoNV {
22534    fn from(f: Win32KeyedMutexAcquireReleaseInfoNv<'s>) -> vks::VkWin32KeyedMutexAcquireReleaseInfoNV {
22535        f.raw
22536    }
22537}
22538
22539
22540/// A builder for `VkWin32KeyedMutexAcquireReleaseInfoNV`.
22541///
22542/// 
22543#[derive(Debug, Clone, Default)]
22544pub struct Win32KeyedMutexAcquireReleaseInfoNvBuilder<'b> {
22545    raw: vks::VkWin32KeyedMutexAcquireReleaseInfoNV,
22546    _p: PhantomData<&'b ()>, 
22547}
22548
22549impl<'b> Win32KeyedMutexAcquireReleaseInfoNvBuilder<'b> {
22550    pub fn new() -> Win32KeyedMutexAcquireReleaseInfoNvBuilder<'b> {
22551        Win32KeyedMutexAcquireReleaseInfoNvBuilder {
22552            raw: vks::VkWin32KeyedMutexAcquireReleaseInfoNV::default(),
22553            _p: PhantomData,
22554        }
22555    }
22556
22557    pub unsafe fn next<'m>(mut self, next: *const c_void) -> Win32KeyedMutexAcquireReleaseInfoNvBuilder<'b> {
22558        self.raw.pNext = next;
22559        self
22560    }
22561
22562    pub fn acquire_syncs<'m, 'a>(mut self, acquire_syncs: &'a [DeviceMemoryHandle]) -> Win32KeyedMutexAcquireReleaseInfoNvBuilder<'b>
22563            where 'a: 'b {
22564        assert!(self.raw.acquireCount == 0 || self.raw.acquireCount == acquire_syncs.len() as _, 
22565            "count inconsistency found when specifying `Win32KeyedMutexAcquireReleaseInfoNv::acquire_syncs`.");
22566        self.raw.acquireCount = acquire_syncs.len() as _;
22567        self.raw.pAcquireSyncs = acquire_syncs.as_ptr() as *const vks::VkDeviceMemory;
22568        self
22569    }
22570
22571    pub fn acquire_keys<'m, 'a>(mut self, acquire_keys: &'a [u64]) -> Win32KeyedMutexAcquireReleaseInfoNvBuilder<'b>
22572            where 'a: 'b {
22573        assert!(self.raw.acquireCount == 0 || self.raw.acquireCount == acquire_keys.len() as _, 
22574            "count inconsistency found when specifying `Win32KeyedMutexAcquireReleaseInfoNv::acquire_keys`.");
22575        self.raw.acquireCount = acquire_keys.len() as _;
22576        self.raw.pAcquireKeys = acquire_keys.as_ptr() as *const u64 as *const _;
22577        self
22578    }
22579
22580    pub fn acquire_timeout_milliseconds<'m, 'a>(mut self, acquire_timeout_milliseconds: &'a [u32]) -> Win32KeyedMutexAcquireReleaseInfoNvBuilder<'b>
22581            where 'a: 'b {
22582        assert!(self.raw.acquireCount == 0 || self.raw.acquireCount == acquire_timeout_milliseconds.len() as _, 
22583            "count inconsistency found when specifying `Win32KeyedMutexAcquireReleaseInfoNv::acquire_timeout_milliseconds`.");
22584        self.raw.acquireCount = acquire_timeout_milliseconds.len() as _;
22585        self.raw.pAcquireTimeoutMilliseconds = acquire_timeout_milliseconds.as_ptr() as *const u32 as *const _;
22586        self
22587    }
22588
22589    pub fn release_syncs<'m, 'a>(mut self, release_syncs: &'a [DeviceMemoryHandle]) -> Win32KeyedMutexAcquireReleaseInfoNvBuilder<'b>
22590            where 'a: 'b {
22591        assert!(self.raw.releaseCount == 0 || self.raw.releaseCount == release_syncs.len() as _, 
22592            "count inconsistency found when specifying `Win32KeyedMutexAcquireReleaseInfoNv::release_syncs`.");
22593        self.raw.releaseCount = release_syncs.len() as _;
22594        self.raw.pReleaseSyncs = release_syncs.as_ptr() as *const vks::VkDeviceMemory;
22595        self
22596    }
22597
22598    pub fn release_keys<'m, 'a>(mut self, release_keys: &'a [u64]) -> Win32KeyedMutexAcquireReleaseInfoNvBuilder<'b>
22599            where 'a: 'b {
22600        assert!(self.raw.releaseCount == 0 || self.raw.releaseCount == release_keys.len() as _, 
22601            "count inconsistency found when specifying `Win32KeyedMutexAcquireReleaseInfoNv::release_keys`.");
22602        self.raw.releaseCount = release_keys.len() as _;
22603        self.raw.pReleaseKeys = release_keys.as_ptr() as *const u64 as *const _;
22604        self
22605    }
22606
22607    pub fn get_next<'a>(&'a self) -> *const c_void {
22608        self.raw.pNext
22609    }
22610
22611    pub fn get_acquire_syncs<'a>(&'a self) -> &'a [vks::VkDeviceMemory] {
22612        unsafe { slice::from_raw_parts(self.raw.pAcquireSyncs as *const _, self.raw.acquireCount as usize) }
22613    }
22614
22615    pub fn get_acquire_keys<'a>(&'a self) -> &'a [u64] {
22616        unsafe { slice::from_raw_parts(self.raw.pAcquireKeys as *const _, self.raw.acquireCount as usize) }
22617    }
22618
22619    pub fn get_acquire_timeout_milliseconds<'a>(&'a self) -> &'a [u32] {
22620        unsafe { slice::from_raw_parts(self.raw.pAcquireTimeoutMilliseconds as *const _, self.raw.acquireCount as usize) }
22621    }
22622
22623    pub fn get_release_syncs<'a>(&'a self) -> &'a [vks::VkDeviceMemory] {
22624        unsafe { slice::from_raw_parts(self.raw.pReleaseSyncs as *const _, self.raw.releaseCount as usize) }
22625    }
22626
22627    pub fn get_release_keys<'a>(&'a self) -> &'a [u64] {
22628        unsafe { slice::from_raw_parts(self.raw.pReleaseKeys as *const _, self.raw.releaseCount as usize) }
22629    }
22630
22631    pub fn build(self) -> Win32KeyedMutexAcquireReleaseInfoNv<'b> {
22632        Win32KeyedMutexAcquireReleaseInfoNv {
22633            raw: self.raw,
22634            _p: PhantomData,
22635        }
22636    }
22637}
22638
22639
22640/// A `VkDeviceGeneratedCommandsFeaturesNVX`.
22641///
22642/// 
22643#[cfg(feature = "experimental")]
22644#[derive(Debug, Clone, Default)]
22645#[repr(C)]
22646pub struct DeviceGeneratedCommandsFeaturesNvx<'s> {
22647    raw: vks::VkDeviceGeneratedCommandsFeaturesNVX,
22648    _p: PhantomData<&'s ()>,
22649}
22650
22651#[cfg(feature = "experimental")]
22652impl<'s> DeviceGeneratedCommandsFeaturesNvx<'s> {
22653    pub fn builder<'b>() -> DeviceGeneratedCommandsFeaturesNvxBuilder<'b> {
22654        DeviceGeneratedCommandsFeaturesNvxBuilder::new()
22655    }
22656
22657    pub unsafe fn from_raw(raw: vks::VkDeviceGeneratedCommandsFeaturesNVX) -> DeviceGeneratedCommandsFeaturesNvx<'s> {
22658        DeviceGeneratedCommandsFeaturesNvx { raw, _p: PhantomData }
22659    }
22660
22661    pub fn next<'a>(&'a self) -> *const c_void {
22662        self.raw.pNext
22663    }
22664
22665    pub fn compute_binding_point_support<'a>(&'a self) -> bool {
22666        self.raw.computeBindingPointSupport != 0
22667    }
22668
22669    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
22670        self.raw.pNext = next;
22671    }
22672
22673    pub fn set_compute_binding_point_support<'m>(&mut self, compute_binding_point_support: bool) {
22674        self.raw.computeBindingPointSupport = compute_binding_point_support as u32;
22675    }
22676
22677    pub fn as_raw(&self) -> &vks::VkDeviceGeneratedCommandsFeaturesNVX {
22678        &self.raw
22679    }
22680}
22681
22682#[cfg(feature = "experimental")]
22683impl<'s> From<DeviceGeneratedCommandsFeaturesNvx<'s>> for vks::VkDeviceGeneratedCommandsFeaturesNVX {
22684    fn from(f: DeviceGeneratedCommandsFeaturesNvx<'s>) -> vks::VkDeviceGeneratedCommandsFeaturesNVX {
22685        f.raw
22686    }
22687}
22688
22689
22690/// A builder for `VkDeviceGeneratedCommandsFeaturesNVX`.
22691///
22692/// 
22693#[cfg(feature = "experimental")]
22694#[derive(Debug, Clone, Default)]
22695pub struct DeviceGeneratedCommandsFeaturesNvxBuilder<'b> {
22696    raw: vks::VkDeviceGeneratedCommandsFeaturesNVX,
22697    _p: PhantomData<&'b ()>, 
22698}
22699
22700#[cfg(feature = "experimental")]
22701impl<'b> DeviceGeneratedCommandsFeaturesNvxBuilder<'b> {
22702    pub fn new() -> DeviceGeneratedCommandsFeaturesNvxBuilder<'b> {
22703        DeviceGeneratedCommandsFeaturesNvxBuilder {
22704            raw: vks::VkDeviceGeneratedCommandsFeaturesNVX::default(),
22705            _p: PhantomData,
22706        }
22707    }
22708
22709    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DeviceGeneratedCommandsFeaturesNvxBuilder<'b> {
22710        self.raw.pNext = next;
22711        self
22712    }
22713
22714    pub fn compute_binding_point_support<'m>(mut self, compute_binding_point_support: bool) -> DeviceGeneratedCommandsFeaturesNvxBuilder<'b> {
22715        self.raw.computeBindingPointSupport = compute_binding_point_support as u32;
22716        self
22717    }
22718
22719    pub fn get_next<'a>(&'a self) -> *const c_void {
22720        self.raw.pNext
22721    }
22722
22723    pub fn get_compute_binding_point_support<'a>(&'a self) -> bool {
22724        self.raw.computeBindingPointSupport != 0
22725    }
22726
22727    pub fn build(self) -> DeviceGeneratedCommandsFeaturesNvx<'b> {
22728        DeviceGeneratedCommandsFeaturesNvx {
22729            raw: self.raw,
22730            _p: PhantomData,
22731        }
22732    }
22733}
22734
22735
22736/// A `VkDeviceGeneratedCommandsLimitsNVX`.
22737///
22738/// 
22739#[cfg(feature = "experimental")]
22740#[derive(Debug, Clone, Default)]
22741#[repr(C)]
22742pub struct DeviceGeneratedCommandsLimitsNvx<'s> {
22743    raw: vks::VkDeviceGeneratedCommandsLimitsNVX,
22744    _p: PhantomData<&'s ()>,
22745}
22746
22747#[cfg(feature = "experimental")]
22748impl<'s> DeviceGeneratedCommandsLimitsNvx<'s> {
22749    pub fn builder<'b>() -> DeviceGeneratedCommandsLimitsNvxBuilder<'b> {
22750        DeviceGeneratedCommandsLimitsNvxBuilder::new()
22751    }
22752
22753    pub unsafe fn from_raw(raw: vks::VkDeviceGeneratedCommandsLimitsNVX) -> DeviceGeneratedCommandsLimitsNvx<'s> {
22754        DeviceGeneratedCommandsLimitsNvx { raw, _p: PhantomData }
22755    }
22756
22757    pub fn next<'a>(&'a self) -> *const c_void {
22758        self.raw.pNext
22759    }
22760
22761    pub fn max_indirect_commands_layout_token_count<'a>(&'a self) -> u32 {
22762        self.raw.maxIndirectCommandsLayoutTokenCount.into()
22763    }
22764
22765    pub fn max_object_entry_counts<'a>(&'a self) -> u32 {
22766        self.raw.maxObjectEntryCounts.into()
22767    }
22768
22769    pub fn min_sequence_count_buffer_offset_alignment<'a>(&'a self) -> u32 {
22770        self.raw.minSequenceCountBufferOffsetAlignment.into()
22771    }
22772
22773    pub fn min_sequence_index_buffer_offset_alignment<'a>(&'a self) -> u32 {
22774        self.raw.minSequenceIndexBufferOffsetAlignment.into()
22775    }
22776
22777    pub fn min_commands_token_buffer_offset_alignment<'a>(&'a self) -> u32 {
22778        self.raw.minCommandsTokenBufferOffsetAlignment.into()
22779    }
22780
22781    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
22782        self.raw.pNext = next;
22783    }
22784
22785    pub fn set_max_indirect_commands_layout_token_count<'m>(&mut self, max_indirect_commands_layout_token_count: u32) {
22786        self.raw.maxIndirectCommandsLayoutTokenCount = max_indirect_commands_layout_token_count.into();
22787    }
22788
22789    pub fn set_max_object_entry_counts<'m>(&mut self, max_object_entry_counts: u32) {
22790        self.raw.maxObjectEntryCounts = max_object_entry_counts.into();
22791    }
22792
22793    pub fn set_min_sequence_count_buffer_offset_alignment<'m>(&mut self, min_sequence_count_buffer_offset_alignment: u32) {
22794        self.raw.minSequenceCountBufferOffsetAlignment = min_sequence_count_buffer_offset_alignment.into();
22795    }
22796
22797    pub fn set_min_sequence_index_buffer_offset_alignment<'m>(&mut self, min_sequence_index_buffer_offset_alignment: u32) {
22798        self.raw.minSequenceIndexBufferOffsetAlignment = min_sequence_index_buffer_offset_alignment.into();
22799    }
22800
22801    pub fn set_min_commands_token_buffer_offset_alignment<'m>(&mut self, min_commands_token_buffer_offset_alignment: u32) {
22802        self.raw.minCommandsTokenBufferOffsetAlignment = min_commands_token_buffer_offset_alignment.into();
22803    }
22804
22805    pub fn as_raw(&self) -> &vks::VkDeviceGeneratedCommandsLimitsNVX {
22806        &self.raw
22807    }
22808}
22809
22810#[cfg(feature = "experimental")]
22811impl<'s> From<DeviceGeneratedCommandsLimitsNvx<'s>> for vks::VkDeviceGeneratedCommandsLimitsNVX {
22812    fn from(f: DeviceGeneratedCommandsLimitsNvx<'s>) -> vks::VkDeviceGeneratedCommandsLimitsNVX {
22813        f.raw
22814    }
22815}
22816
22817
22818/// A builder for `VkDeviceGeneratedCommandsLimitsNVX`.
22819///
22820/// 
22821#[cfg(feature = "experimental")]
22822#[derive(Debug, Clone, Default)]
22823pub struct DeviceGeneratedCommandsLimitsNvxBuilder<'b> {
22824    raw: vks::VkDeviceGeneratedCommandsLimitsNVX,
22825    _p: PhantomData<&'b ()>, 
22826}
22827
22828#[cfg(feature = "experimental")]
22829impl<'b> DeviceGeneratedCommandsLimitsNvxBuilder<'b> {
22830    pub fn new() -> DeviceGeneratedCommandsLimitsNvxBuilder<'b> {
22831        DeviceGeneratedCommandsLimitsNvxBuilder {
22832            raw: vks::VkDeviceGeneratedCommandsLimitsNVX::default(),
22833            _p: PhantomData,
22834        }
22835    }
22836
22837    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DeviceGeneratedCommandsLimitsNvxBuilder<'b> {
22838        self.raw.pNext = next;
22839        self
22840    }
22841
22842    pub fn max_indirect_commands_layout_token_count<'m>(mut self, max_indirect_commands_layout_token_count: u32) -> DeviceGeneratedCommandsLimitsNvxBuilder<'b> {
22843        self.raw.maxIndirectCommandsLayoutTokenCount = max_indirect_commands_layout_token_count.into();
22844        self
22845    }
22846
22847    pub fn max_object_entry_counts<'m>(mut self, max_object_entry_counts: u32) -> DeviceGeneratedCommandsLimitsNvxBuilder<'b> {
22848        self.raw.maxObjectEntryCounts = max_object_entry_counts.into();
22849        self
22850    }
22851
22852    pub fn min_sequence_count_buffer_offset_alignment<'m>(mut self, min_sequence_count_buffer_offset_alignment: u32) -> DeviceGeneratedCommandsLimitsNvxBuilder<'b> {
22853        self.raw.minSequenceCountBufferOffsetAlignment = min_sequence_count_buffer_offset_alignment.into();
22854        self
22855    }
22856
22857    pub fn min_sequence_index_buffer_offset_alignment<'m>(mut self, min_sequence_index_buffer_offset_alignment: u32) -> DeviceGeneratedCommandsLimitsNvxBuilder<'b> {
22858        self.raw.minSequenceIndexBufferOffsetAlignment = min_sequence_index_buffer_offset_alignment.into();
22859        self
22860    }
22861
22862    pub fn min_commands_token_buffer_offset_alignment<'m>(mut self, min_commands_token_buffer_offset_alignment: u32) -> DeviceGeneratedCommandsLimitsNvxBuilder<'b> {
22863        self.raw.minCommandsTokenBufferOffsetAlignment = min_commands_token_buffer_offset_alignment.into();
22864        self
22865    }
22866
22867    pub fn get_next<'a>(&'a self) -> *const c_void {
22868        self.raw.pNext
22869    }
22870
22871    pub fn get_max_indirect_commands_layout_token_count<'a>(&'a self) -> u32 {
22872        self.raw.maxIndirectCommandsLayoutTokenCount.into()
22873    }
22874
22875    pub fn get_max_object_entry_counts<'a>(&'a self) -> u32 {
22876        self.raw.maxObjectEntryCounts.into()
22877    }
22878
22879    pub fn get_min_sequence_count_buffer_offset_alignment<'a>(&'a self) -> u32 {
22880        self.raw.minSequenceCountBufferOffsetAlignment.into()
22881    }
22882
22883    pub fn get_min_sequence_index_buffer_offset_alignment<'a>(&'a self) -> u32 {
22884        self.raw.minSequenceIndexBufferOffsetAlignment.into()
22885    }
22886
22887    pub fn get_min_commands_token_buffer_offset_alignment<'a>(&'a self) -> u32 {
22888        self.raw.minCommandsTokenBufferOffsetAlignment.into()
22889    }
22890
22891    pub fn build(self) -> DeviceGeneratedCommandsLimitsNvx<'b> {
22892        DeviceGeneratedCommandsLimitsNvx {
22893            raw: self.raw,
22894            _p: PhantomData,
22895        }
22896    }
22897}
22898
22899
22900/// A `VkCmdReserveSpaceForCommandsInfoNVX`.
22901///
22902/// 
22903#[cfg(feature = "experimental")]
22904#[derive(Debug, Clone, Default)]
22905#[repr(C)]
22906pub struct CmdReserveSpaceForCommandsInfoNvx<'s> {
22907    raw: vks::VkCmdReserveSpaceForCommandsInfoNVX,
22908    _p: PhantomData<&'s ()>,
22909}
22910
22911#[cfg(feature = "experimental")]
22912impl<'s> CmdReserveSpaceForCommandsInfoNvx<'s> {
22913    pub fn builder<'b>() -> CmdReserveSpaceForCommandsInfoNvxBuilder<'b> {
22914        CmdReserveSpaceForCommandsInfoNvxBuilder::new()
22915    }
22916
22917    pub unsafe fn from_raw(raw: vks::VkCmdReserveSpaceForCommandsInfoNVX) -> CmdReserveSpaceForCommandsInfoNvx<'s> {
22918        CmdReserveSpaceForCommandsInfoNvx { raw, _p: PhantomData }
22919    }
22920
22921    pub fn next<'a>(&'a self) -> *const c_void {
22922        self.raw.pNext
22923    }
22924
22925    pub fn object_table<'a>(&'a self) -> vks::VkObjectTableNVX {
22926        self.raw.objectTable
22927    }
22928
22929    pub fn indirect_commands_layout<'a>(&'a self) -> vks::VkIndirectCommandsLayoutNVX {
22930        self.raw.indirectCommandsLayout
22931    }
22932
22933    pub fn max_sequences_count<'a>(&'a self) -> u32 {
22934        self.raw.maxSequencesCount.into()
22935    }
22936
22937    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
22938        self.raw.pNext = next;
22939    }
22940
22941    pub fn set_object_table<'m, H>(&mut self, object_table: H)
22942            where H: Handle<Target=ObjectTableNvxHandle> {
22943        self.raw.objectTable = object_table.handle().0;
22944    }
22945
22946    pub fn set_indirect_commands_layout<'m, H>(&mut self, indirect_commands_layout: H)
22947            where H: Handle<Target=IndirectCommandsLayoutNvxHandle> {
22948        self.raw.indirectCommandsLayout = indirect_commands_layout.handle().0;
22949    }
22950
22951    pub fn set_max_sequences_count<'m>(&mut self, max_sequences_count: u32) {
22952        self.raw.maxSequencesCount = max_sequences_count.into();
22953    }
22954
22955    pub fn as_raw(&self) -> &vks::VkCmdReserveSpaceForCommandsInfoNVX {
22956        &self.raw
22957    }
22958}
22959
22960#[cfg(feature = "experimental")]
22961impl<'s> From<CmdReserveSpaceForCommandsInfoNvx<'s>> for vks::VkCmdReserveSpaceForCommandsInfoNVX {
22962    fn from(f: CmdReserveSpaceForCommandsInfoNvx<'s>) -> vks::VkCmdReserveSpaceForCommandsInfoNVX {
22963        f.raw
22964    }
22965}
22966
22967
22968/// A builder for `VkCmdReserveSpaceForCommandsInfoNVX`.
22969///
22970/// 
22971#[cfg(feature = "experimental")]
22972#[derive(Debug, Clone, Default)]
22973pub struct CmdReserveSpaceForCommandsInfoNvxBuilder<'b> {
22974    raw: vks::VkCmdReserveSpaceForCommandsInfoNVX,
22975    _p: PhantomData<&'b ()>, 
22976}
22977
22978#[cfg(feature = "experimental")]
22979impl<'b> CmdReserveSpaceForCommandsInfoNvxBuilder<'b> {
22980    pub fn new() -> CmdReserveSpaceForCommandsInfoNvxBuilder<'b> {
22981        CmdReserveSpaceForCommandsInfoNvxBuilder {
22982            raw: vks::VkCmdReserveSpaceForCommandsInfoNVX::default(),
22983            _p: PhantomData,
22984        }
22985    }
22986
22987    pub unsafe fn next<'m>(mut self, next: *const c_void) -> CmdReserveSpaceForCommandsInfoNvxBuilder<'b> {
22988        self.raw.pNext = next;
22989        self
22990    }
22991
22992    pub fn object_table<'m, H>(mut self, object_table: H) -> CmdReserveSpaceForCommandsInfoNvxBuilder<'b>
22993            where H: Handle<Target=ObjectTableNvxHandle> {
22994        self.raw.objectTable = object_table.handle().0;
22995        self
22996    }
22997
22998    pub fn indirect_commands_layout<'m, H>(mut self, indirect_commands_layout: H) -> CmdReserveSpaceForCommandsInfoNvxBuilder<'b>
22999            where H: Handle<Target=IndirectCommandsLayoutNvxHandle> {
23000        self.raw.indirectCommandsLayout = indirect_commands_layout.handle().0;
23001        self
23002    }
23003
23004    pub fn max_sequences_count<'m>(mut self, max_sequences_count: u32) -> CmdReserveSpaceForCommandsInfoNvxBuilder<'b> {
23005        self.raw.maxSequencesCount = max_sequences_count.into();
23006        self
23007    }
23008
23009    pub fn get_next<'a>(&'a self) -> *const c_void {
23010        self.raw.pNext
23011    }
23012
23013    pub fn get_object_table<'a>(&'a self) -> vks::VkObjectTableNVX {
23014        self.raw.objectTable
23015    }
23016
23017    pub fn get_indirect_commands_layout<'a>(&'a self) -> vks::VkIndirectCommandsLayoutNVX {
23018        self.raw.indirectCommandsLayout
23019    }
23020
23021    pub fn get_max_sequences_count<'a>(&'a self) -> u32 {
23022        self.raw.maxSequencesCount.into()
23023    }
23024
23025    pub fn build(self) -> CmdReserveSpaceForCommandsInfoNvx<'b> {
23026        CmdReserveSpaceForCommandsInfoNvx {
23027            raw: self.raw,
23028            _p: PhantomData,
23029        }
23030    }
23031}
23032
23033
23034/// A `VkObjectTableDescriptorSetEntryNVX`.
23035///
23036/// 
23037#[cfg(feature = "experimental")]
23038#[derive(Debug, Clone, Default)]
23039#[repr(C)]
23040pub struct ObjectTableDescriptorSetEntryNvx {
23041    raw: vks::VkObjectTableDescriptorSetEntryNVX,
23042}
23043
23044#[cfg(feature = "experimental")]
23045impl ObjectTableDescriptorSetEntryNvx {
23046    pub fn builder() -> ObjectTableDescriptorSetEntryNvxBuilder {
23047        ObjectTableDescriptorSetEntryNvxBuilder::new()
23048    }
23049
23050    pub unsafe fn from_raw(raw: vks::VkObjectTableDescriptorSetEntryNVX) -> ObjectTableDescriptorSetEntryNvx {
23051        ObjectTableDescriptorSetEntryNvx { raw, }
23052    }
23053
23054    pub fn type_of<'a>(&'a self) -> ObjectEntryTypeNvx {
23055        self.raw.type_.into()
23056    }
23057
23058    pub fn flags<'a>(&'a self) -> ObjectEntryUsageFlagsNvx {
23059        ObjectEntryUsageFlagsNvx::from_bits(self.raw.flags)
23060            .expect("ObjectTableDescriptorSetEntryNvx::flags: error converting flags")
23061    }
23062
23063    pub fn pipeline_layout<'a>(&'a self) -> vks::VkPipelineLayout {
23064        self.raw.pipelineLayout
23065    }
23066
23067    pub fn descriptor_set<'a>(&'a self) -> vks::VkDescriptorSet {
23068        self.raw.descriptorSet
23069    }
23070
23071    pub fn set_type_of<'m>(&mut self, type_of: ObjectEntryTypeNvx) {
23072        self.raw.type_ = type_of.into();
23073    }
23074
23075    pub fn set_flags<'m>(&mut self, flags: ObjectEntryUsageFlagsNvx) {
23076        self.raw.flags = flags.bits();
23077    }
23078
23079    pub fn set_pipeline_layout<'m, H>(&mut self, pipeline_layout: H)
23080            where H: Handle<Target=PipelineLayoutHandle> {
23081        self.raw.pipelineLayout = pipeline_layout.handle().0;
23082    }
23083
23084    pub fn set_descriptor_set<'m, H>(&mut self, descriptor_set: H)
23085            where H: Handle<Target=DescriptorSetHandle> {
23086        self.raw.descriptorSet = descriptor_set.handle().0;
23087    }
23088
23089    pub fn as_raw(&self) -> &vks::VkObjectTableDescriptorSetEntryNVX {
23090        &self.raw
23091    }
23092}
23093
23094#[cfg(feature = "experimental")]
23095impl From<ObjectTableDescriptorSetEntryNvx> for vks::VkObjectTableDescriptorSetEntryNVX {
23096    fn from(f: ObjectTableDescriptorSetEntryNvx) -> vks::VkObjectTableDescriptorSetEntryNVX {
23097        f.raw
23098    }
23099}
23100
23101
23102/// A builder for `VkObjectTableDescriptorSetEntryNVX`.
23103///
23104/// 
23105#[cfg(feature = "experimental")]
23106#[derive(Debug, Clone, Default)]
23107pub struct ObjectTableDescriptorSetEntryNvxBuilder {
23108    raw: vks::VkObjectTableDescriptorSetEntryNVX,
23109}
23110
23111#[cfg(feature = "experimental")]
23112impl ObjectTableDescriptorSetEntryNvxBuilder {
23113    pub fn new() -> ObjectTableDescriptorSetEntryNvxBuilder {
23114        ObjectTableDescriptorSetEntryNvxBuilder {
23115            raw: vks::VkObjectTableDescriptorSetEntryNVX::default(),
23116        }
23117    }
23118
23119    pub fn type_of<'m>(mut self, type_of: ObjectEntryTypeNvx) -> ObjectTableDescriptorSetEntryNvxBuilder {
23120        self.raw.type_ = type_of.into();
23121        self
23122    }
23123
23124    pub fn flags<'m>(mut self, flags: ObjectEntryUsageFlagsNvx) -> ObjectTableDescriptorSetEntryNvxBuilder {
23125        self.raw.flags = flags.bits();
23126        self
23127    }
23128
23129    pub fn pipeline_layout<'m, H>(mut self, pipeline_layout: H) -> ObjectTableDescriptorSetEntryNvxBuilder
23130            where H: Handle<Target=PipelineLayoutHandle> {
23131        self.raw.pipelineLayout = pipeline_layout.handle().0;
23132        self
23133    }
23134
23135    pub fn descriptor_set<'m, H>(mut self, descriptor_set: H) -> ObjectTableDescriptorSetEntryNvxBuilder
23136            where H: Handle<Target=DescriptorSetHandle> {
23137        self.raw.descriptorSet = descriptor_set.handle().0;
23138        self
23139    }
23140
23141    pub fn get_type_of<'a>(&'a self) -> ObjectEntryTypeNvx {
23142        self.raw.type_.into()
23143    }
23144
23145    pub fn get_flags<'a>(&'a self) -> ObjectEntryUsageFlagsNvx {
23146        ObjectEntryUsageFlagsNvx::from_bits(self.raw.flags)
23147            .expect("ObjectTableDescriptorSetEntryNvx::flags: error converting flags")
23148    }
23149
23150    pub fn get_pipeline_layout<'a>(&'a self) -> vks::VkPipelineLayout {
23151        self.raw.pipelineLayout
23152    }
23153
23154    pub fn get_descriptor_set<'a>(&'a self) -> vks::VkDescriptorSet {
23155        self.raw.descriptorSet
23156    }
23157
23158    pub fn build(self) -> ObjectTableDescriptorSetEntryNvx {
23159        ObjectTableDescriptorSetEntryNvx {
23160            raw: self.raw,
23161        }
23162    }
23163}
23164
23165
23166/// A `VkObjectTableVertexBufferEntryNVX`.
23167///
23168/// 
23169#[cfg(feature = "experimental")]
23170#[derive(Debug, Clone, Default)]
23171#[repr(C)]
23172pub struct ObjectTableVertexBufferEntryNvx {
23173    raw: vks::VkObjectTableVertexBufferEntryNVX,
23174}
23175
23176#[cfg(feature = "experimental")]
23177impl ObjectTableVertexBufferEntryNvx {
23178    pub fn builder() -> ObjectTableVertexBufferEntryNvxBuilder {
23179        ObjectTableVertexBufferEntryNvxBuilder::new()
23180    }
23181
23182    pub unsafe fn from_raw(raw: vks::VkObjectTableVertexBufferEntryNVX) -> ObjectTableVertexBufferEntryNvx {
23183        ObjectTableVertexBufferEntryNvx { raw, }
23184    }
23185
23186    pub fn type_of<'a>(&'a self) -> ObjectEntryTypeNvx {
23187        self.raw.type_.into()
23188    }
23189
23190    pub fn flags<'a>(&'a self) -> ObjectEntryUsageFlagsNvx {
23191        ObjectEntryUsageFlagsNvx::from_bits(self.raw.flags)
23192            .expect("ObjectTableVertexBufferEntryNvx::flags: error converting flags")
23193    }
23194
23195    pub fn buffer<'a>(&'a self) -> vks::VkBuffer {
23196        self.raw.buffer
23197    }
23198
23199    pub fn set_type_of<'m>(&mut self, type_of: ObjectEntryTypeNvx) {
23200        self.raw.type_ = type_of.into();
23201    }
23202
23203    pub fn set_flags<'m>(&mut self, flags: ObjectEntryUsageFlagsNvx) {
23204        self.raw.flags = flags.bits();
23205    }
23206
23207    pub fn set_buffer<'m, H>(&mut self, buffer: H)
23208            where H: Handle<Target=BufferHandle> {
23209        self.raw.buffer = buffer.handle().0;
23210    }
23211
23212    pub fn as_raw(&self) -> &vks::VkObjectTableVertexBufferEntryNVX {
23213        &self.raw
23214    }
23215}
23216
23217#[cfg(feature = "experimental")]
23218impl From<ObjectTableVertexBufferEntryNvx> for vks::VkObjectTableVertexBufferEntryNVX {
23219    fn from(f: ObjectTableVertexBufferEntryNvx) -> vks::VkObjectTableVertexBufferEntryNVX {
23220        f.raw
23221    }
23222}
23223
23224
23225/// A builder for `VkObjectTableVertexBufferEntryNVX`.
23226///
23227/// 
23228#[cfg(feature = "experimental")]
23229#[derive(Debug, Clone, Default)]
23230pub struct ObjectTableVertexBufferEntryNvxBuilder {
23231    raw: vks::VkObjectTableVertexBufferEntryNVX,
23232}
23233
23234#[cfg(feature = "experimental")]
23235impl ObjectTableVertexBufferEntryNvxBuilder {
23236    pub fn new() -> ObjectTableVertexBufferEntryNvxBuilder {
23237        ObjectTableVertexBufferEntryNvxBuilder {
23238            raw: vks::VkObjectTableVertexBufferEntryNVX::default(),
23239        }
23240    }
23241
23242    pub fn type_of<'m>(mut self, type_of: ObjectEntryTypeNvx) -> ObjectTableVertexBufferEntryNvxBuilder {
23243        self.raw.type_ = type_of.into();
23244        self
23245    }
23246
23247    pub fn flags<'m>(mut self, flags: ObjectEntryUsageFlagsNvx) -> ObjectTableVertexBufferEntryNvxBuilder {
23248        self.raw.flags = flags.bits();
23249        self
23250    }
23251
23252    pub fn buffer<'m, H>(mut self, buffer: H) -> ObjectTableVertexBufferEntryNvxBuilder
23253            where H: Handle<Target=BufferHandle> {
23254        self.raw.buffer = buffer.handle().0;
23255        self
23256    }
23257
23258    pub fn get_type_of<'a>(&'a self) -> ObjectEntryTypeNvx {
23259        self.raw.type_.into()
23260    }
23261
23262    pub fn get_flags<'a>(&'a self) -> ObjectEntryUsageFlagsNvx {
23263        ObjectEntryUsageFlagsNvx::from_bits(self.raw.flags)
23264            .expect("ObjectTableVertexBufferEntryNvx::flags: error converting flags")
23265    }
23266
23267    pub fn get_buffer<'a>(&'a self) -> vks::VkBuffer {
23268        self.raw.buffer
23269    }
23270
23271    pub fn build(self) -> ObjectTableVertexBufferEntryNvx {
23272        ObjectTableVertexBufferEntryNvx {
23273            raw: self.raw,
23274        }
23275    }
23276}
23277
23278
23279/// A `VkObjectTableIndexBufferEntryNVX`.
23280///
23281/// 
23282#[cfg(feature = "experimental")]
23283#[derive(Debug, Clone, Default)]
23284#[repr(C)]
23285pub struct ObjectTableIndexBufferEntryNvx {
23286    raw: vks::VkObjectTableIndexBufferEntryNVX,
23287}
23288
23289#[cfg(feature = "experimental")]
23290impl ObjectTableIndexBufferEntryNvx {
23291    pub fn builder() -> ObjectTableIndexBufferEntryNvxBuilder {
23292        ObjectTableIndexBufferEntryNvxBuilder::new()
23293    }
23294
23295    pub unsafe fn from_raw(raw: vks::VkObjectTableIndexBufferEntryNVX) -> ObjectTableIndexBufferEntryNvx {
23296        ObjectTableIndexBufferEntryNvx { raw, }
23297    }
23298
23299    pub fn type_of<'a>(&'a self) -> ObjectEntryTypeNvx {
23300        self.raw.type_.into()
23301    }
23302
23303    pub fn flags<'a>(&'a self) -> ObjectEntryUsageFlagsNvx {
23304        ObjectEntryUsageFlagsNvx::from_bits(self.raw.flags)
23305            .expect("ObjectTableIndexBufferEntryNvx::flags: error converting flags")
23306    }
23307
23308    pub fn buffer<'a>(&'a self) -> vks::VkBuffer {
23309        self.raw.buffer
23310    }
23311
23312    pub fn index_type<'a>(&'a self) -> IndexType {
23313        self.raw.indexType.into()
23314    }
23315
23316    pub fn set_type_of<'m>(&mut self, type_of: ObjectEntryTypeNvx) {
23317        self.raw.type_ = type_of.into();
23318    }
23319
23320    pub fn set_flags<'m>(&mut self, flags: ObjectEntryUsageFlagsNvx) {
23321        self.raw.flags = flags.bits();
23322    }
23323
23324    pub fn set_buffer<'m, H>(&mut self, buffer: H)
23325            where H: Handle<Target=BufferHandle> {
23326        self.raw.buffer = buffer.handle().0;
23327    }
23328
23329    pub fn set_index_type<'m>(&mut self, index_type: IndexType) {
23330        self.raw.indexType = index_type.into();
23331    }
23332
23333    pub fn as_raw(&self) -> &vks::VkObjectTableIndexBufferEntryNVX {
23334        &self.raw
23335    }
23336}
23337
23338#[cfg(feature = "experimental")]
23339impl From<ObjectTableIndexBufferEntryNvx> for vks::VkObjectTableIndexBufferEntryNVX {
23340    fn from(f: ObjectTableIndexBufferEntryNvx) -> vks::VkObjectTableIndexBufferEntryNVX {
23341        f.raw
23342    }
23343}
23344
23345
23346/// A builder for `VkObjectTableIndexBufferEntryNVX`.
23347///
23348/// 
23349#[cfg(feature = "experimental")]
23350#[derive(Debug, Clone, Default)]
23351pub struct ObjectTableIndexBufferEntryNvxBuilder {
23352    raw: vks::VkObjectTableIndexBufferEntryNVX,
23353}
23354
23355#[cfg(feature = "experimental")]
23356impl ObjectTableIndexBufferEntryNvxBuilder {
23357    pub fn new() -> ObjectTableIndexBufferEntryNvxBuilder {
23358        ObjectTableIndexBufferEntryNvxBuilder {
23359            raw: vks::VkObjectTableIndexBufferEntryNVX::default(),
23360        }
23361    }
23362
23363    pub fn type_of<'m>(mut self, type_of: ObjectEntryTypeNvx) -> ObjectTableIndexBufferEntryNvxBuilder {
23364        self.raw.type_ = type_of.into();
23365        self
23366    }
23367
23368    pub fn flags<'m>(mut self, flags: ObjectEntryUsageFlagsNvx) -> ObjectTableIndexBufferEntryNvxBuilder {
23369        self.raw.flags = flags.bits();
23370        self
23371    }
23372
23373    pub fn buffer<'m, H>(mut self, buffer: H) -> ObjectTableIndexBufferEntryNvxBuilder
23374            where H: Handle<Target=BufferHandle> {
23375        self.raw.buffer = buffer.handle().0;
23376        self
23377    }
23378
23379    pub fn index_type<'m>(mut self, index_type: IndexType) -> ObjectTableIndexBufferEntryNvxBuilder {
23380        self.raw.indexType = index_type.into();
23381        self
23382    }
23383
23384    pub fn get_type_of<'a>(&'a self) -> ObjectEntryTypeNvx {
23385        self.raw.type_.into()
23386    }
23387
23388    pub fn get_flags<'a>(&'a self) -> ObjectEntryUsageFlagsNvx {
23389        ObjectEntryUsageFlagsNvx::from_bits(self.raw.flags)
23390            .expect("ObjectTableIndexBufferEntryNvx::flags: error converting flags")
23391    }
23392
23393    pub fn get_buffer<'a>(&'a self) -> vks::VkBuffer {
23394        self.raw.buffer
23395    }
23396
23397    pub fn get_index_type<'a>(&'a self) -> IndexType {
23398        self.raw.indexType.into()
23399    }
23400
23401    pub fn build(self) -> ObjectTableIndexBufferEntryNvx {
23402        ObjectTableIndexBufferEntryNvx {
23403            raw: self.raw,
23404        }
23405    }
23406}
23407
23408
23409/// A `VkObjectTablePushConstantEntryNVX`.
23410///
23411/// 
23412#[cfg(feature = "experimental")]
23413#[derive(Debug, Clone, Default)]
23414#[repr(C)]
23415pub struct ObjectTablePushConstantEntryNvx {
23416    raw: vks::VkObjectTablePushConstantEntryNVX,
23417}
23418
23419#[cfg(feature = "experimental")]
23420impl ObjectTablePushConstantEntryNvx {
23421    pub fn builder() -> ObjectTablePushConstantEntryNvxBuilder {
23422        ObjectTablePushConstantEntryNvxBuilder::new()
23423    }
23424
23425    pub unsafe fn from_raw(raw: vks::VkObjectTablePushConstantEntryNVX) -> ObjectTablePushConstantEntryNvx {
23426        ObjectTablePushConstantEntryNvx { raw, }
23427    }
23428
23429    pub fn type_of<'a>(&'a self) -> ObjectEntryTypeNvx {
23430        self.raw.type_.into()
23431    }
23432
23433    pub fn flags<'a>(&'a self) -> ObjectEntryUsageFlagsNvx {
23434        ObjectEntryUsageFlagsNvx::from_bits(self.raw.flags)
23435            .expect("ObjectTablePushConstantEntryNvx::flags: error converting flags")
23436    }
23437
23438    pub fn pipeline_layout<'a>(&'a self) -> vks::VkPipelineLayout {
23439        self.raw.pipelineLayout
23440    }
23441
23442    pub fn stage_flags<'a>(&'a self) -> ShaderStageFlags {
23443        ShaderStageFlags::from_bits(self.raw.stageFlags)
23444            .expect("ObjectTablePushConstantEntryNvx::stage_flags: error converting flags")
23445    }
23446
23447    pub fn set_type_of<'m>(&mut self, type_of: ObjectEntryTypeNvx) {
23448        self.raw.type_ = type_of.into();
23449    }
23450
23451    pub fn set_flags<'m>(&mut self, flags: ObjectEntryUsageFlagsNvx) {
23452        self.raw.flags = flags.bits();
23453    }
23454
23455    pub fn set_pipeline_layout<'m, H>(&mut self, pipeline_layout: H)
23456            where H: Handle<Target=PipelineLayoutHandle> {
23457        self.raw.pipelineLayout = pipeline_layout.handle().0;
23458    }
23459
23460    pub fn set_stage_flags<'m>(&mut self, stage_flags: ShaderStageFlags) {
23461        self.raw.stageFlags = stage_flags.bits();
23462    }
23463
23464    pub fn as_raw(&self) -> &vks::VkObjectTablePushConstantEntryNVX {
23465        &self.raw
23466    }
23467}
23468
23469#[cfg(feature = "experimental")]
23470impl From<ObjectTablePushConstantEntryNvx> for vks::VkObjectTablePushConstantEntryNVX {
23471    fn from(f: ObjectTablePushConstantEntryNvx) -> vks::VkObjectTablePushConstantEntryNVX {
23472        f.raw
23473    }
23474}
23475
23476
23477/// A builder for `VkObjectTablePushConstantEntryNVX`.
23478///
23479/// 
23480#[cfg(feature = "experimental")]
23481#[derive(Debug, Clone, Default)]
23482pub struct ObjectTablePushConstantEntryNvxBuilder {
23483    raw: vks::VkObjectTablePushConstantEntryNVX,
23484}
23485
23486#[cfg(feature = "experimental")]
23487impl ObjectTablePushConstantEntryNvxBuilder {
23488    pub fn new() -> ObjectTablePushConstantEntryNvxBuilder {
23489        ObjectTablePushConstantEntryNvxBuilder {
23490            raw: vks::VkObjectTablePushConstantEntryNVX::default(),
23491        }
23492    }
23493
23494    pub fn type_of<'m>(mut self, type_of: ObjectEntryTypeNvx) -> ObjectTablePushConstantEntryNvxBuilder {
23495        self.raw.type_ = type_of.into();
23496        self
23497    }
23498
23499    pub fn flags<'m>(mut self, flags: ObjectEntryUsageFlagsNvx) -> ObjectTablePushConstantEntryNvxBuilder {
23500        self.raw.flags = flags.bits();
23501        self
23502    }
23503
23504    pub fn pipeline_layout<'m, H>(mut self, pipeline_layout: H) -> ObjectTablePushConstantEntryNvxBuilder
23505            where H: Handle<Target=PipelineLayoutHandle> {
23506        self.raw.pipelineLayout = pipeline_layout.handle().0;
23507        self
23508    }
23509
23510    pub fn stage_flags<'m>(mut self, stage_flags: ShaderStageFlags) -> ObjectTablePushConstantEntryNvxBuilder {
23511        self.raw.stageFlags = stage_flags.bits();
23512        self
23513    }
23514
23515    pub fn get_type_of<'a>(&'a self) -> ObjectEntryTypeNvx {
23516        self.raw.type_.into()
23517    }
23518
23519    pub fn get_flags<'a>(&'a self) -> ObjectEntryUsageFlagsNvx {
23520        ObjectEntryUsageFlagsNvx::from_bits(self.raw.flags)
23521            .expect("ObjectTablePushConstantEntryNvx::flags: error converting flags")
23522    }
23523
23524    pub fn get_pipeline_layout<'a>(&'a self) -> vks::VkPipelineLayout {
23525        self.raw.pipelineLayout
23526    }
23527
23528    pub fn get_stage_flags<'a>(&'a self) -> ShaderStageFlags {
23529        ShaderStageFlags::from_bits(self.raw.stageFlags)
23530            .expect("ObjectTablePushConstantEntryNvx::stage_flags: error converting flags")
23531    }
23532
23533    pub fn build(self) -> ObjectTablePushConstantEntryNvx {
23534        ObjectTablePushConstantEntryNvx {
23535            raw: self.raw,
23536        }
23537    }
23538}
23539
23540
23541/// A `VkPhysicalDeviceFeatures2KHR`.
23542///
23543/// 
23544#[derive(Debug, Clone, Default)]
23545#[repr(C)]
23546pub struct PhysicalDeviceFeatures2Khr<'s> {
23547    raw: vks::VkPhysicalDeviceFeatures2KHR,
23548    _p: PhantomData<&'s ()>,
23549}
23550
23551impl<'s> PhysicalDeviceFeatures2Khr<'s> {
23552    pub fn builder<'b>() -> PhysicalDeviceFeatures2KhrBuilder<'b> {
23553        PhysicalDeviceFeatures2KhrBuilder::new()
23554    }
23555
23556    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceFeatures2KHR) -> PhysicalDeviceFeatures2Khr<'s> {
23557        PhysicalDeviceFeatures2Khr { raw, _p: PhantomData }
23558    }
23559
23560    pub fn next<'a>(&'a self) -> *mut c_void {
23561        self.raw.pNext
23562    }
23563
23564    pub fn features<'a>(&'a self) -> &'a PhysicalDeviceFeatures {
23565        unsafe { &*(&self.raw.features as *const vks::VkPhysicalDeviceFeatures as *const PhysicalDeviceFeatures) }
23566    }
23567
23568    pub fn features_mut<'a>(&'a mut self) -> &'a mut PhysicalDeviceFeatures {
23569        unsafe { &mut *(&mut self.raw.features as *mut  vks::VkPhysicalDeviceFeatures as *mut PhysicalDeviceFeatures) }
23570    }
23571
23572    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
23573        self.raw.pNext = next;
23574    }
23575
23576    pub fn set_features<'m>(&mut self, features: PhysicalDeviceFeatures) {
23577        self.raw.features = features.raw;
23578    }
23579
23580    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceFeatures2KHR {
23581        &self.raw
23582    }
23583}
23584
23585impl<'s> From<PhysicalDeviceFeatures2Khr<'s>> for vks::VkPhysicalDeviceFeatures2KHR {
23586    fn from(f: PhysicalDeviceFeatures2Khr<'s>) -> vks::VkPhysicalDeviceFeatures2KHR {
23587        f.raw
23588    }
23589}
23590
23591
23592/// A builder for `VkPhysicalDeviceFeatures2KHR`.
23593///
23594/// 
23595#[derive(Debug, Clone, Default)]
23596pub struct PhysicalDeviceFeatures2KhrBuilder<'b> {
23597    raw: vks::VkPhysicalDeviceFeatures2KHR,
23598    _p: PhantomData<&'b ()>, 
23599}
23600
23601impl<'b> PhysicalDeviceFeatures2KhrBuilder<'b> {
23602    pub fn new() -> PhysicalDeviceFeatures2KhrBuilder<'b> {
23603        PhysicalDeviceFeatures2KhrBuilder {
23604            raw: vks::VkPhysicalDeviceFeatures2KHR::default(),
23605            _p: PhantomData,
23606        }
23607    }
23608
23609    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> PhysicalDeviceFeatures2KhrBuilder<'b> {
23610        self.raw.pNext = next;
23611        self
23612    }
23613
23614    pub fn features<'m>(mut self, features: PhysicalDeviceFeatures) -> PhysicalDeviceFeatures2KhrBuilder<'b> {
23615        self.raw.features = features.raw;
23616        self
23617    }
23618
23619    pub fn get_next<'a>(&'a self) -> *mut c_void {
23620        self.raw.pNext
23621    }
23622
23623    pub fn get_features<'a>(&'a self) -> &'a PhysicalDeviceFeatures {
23624        unsafe { &*(&self.raw.features as *const vks::VkPhysicalDeviceFeatures as *const PhysicalDeviceFeatures) }
23625    }
23626
23627    pub fn get_features_mut<'a>(&'a mut self) -> &'a mut PhysicalDeviceFeatures {
23628        unsafe { &mut *(&mut self.raw.features as *mut  vks::VkPhysicalDeviceFeatures as *mut PhysicalDeviceFeatures) }
23629    }
23630
23631    pub fn build(self) -> PhysicalDeviceFeatures2Khr<'b> {
23632        PhysicalDeviceFeatures2Khr {
23633            raw: self.raw,
23634            _p: PhantomData,
23635        }
23636    }
23637}
23638
23639
23640/// A `VkPhysicalDeviceProperties2KHR`.
23641///
23642/// 
23643#[derive(Debug, Clone, Default)]
23644#[repr(C)]
23645pub struct PhysicalDeviceProperties2Khr<'s> {
23646    raw: vks::VkPhysicalDeviceProperties2KHR,
23647    _p: PhantomData<&'s ()>,
23648}
23649
23650impl<'s> PhysicalDeviceProperties2Khr<'s> {
23651    pub fn builder<'b>() -> PhysicalDeviceProperties2KhrBuilder<'b> {
23652        PhysicalDeviceProperties2KhrBuilder::new()
23653    }
23654
23655    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceProperties2KHR) -> PhysicalDeviceProperties2Khr<'s> {
23656        PhysicalDeviceProperties2Khr { raw, _p: PhantomData }
23657    }
23658
23659    pub fn next<'a>(&'a self) -> *mut c_void {
23660        self.raw.pNext
23661    }
23662
23663    pub fn properties<'a>(&'a self) -> &'a PhysicalDeviceProperties {
23664        unsafe { &*(&self.raw.properties as *const vks::VkPhysicalDeviceProperties as *const PhysicalDeviceProperties) }
23665    }
23666
23667    pub fn properties_mut<'a>(&'a mut self) -> &'a mut PhysicalDeviceProperties {
23668        unsafe { &mut *(&mut self.raw.properties as *mut  vks::VkPhysicalDeviceProperties as *mut PhysicalDeviceProperties) }
23669    }
23670
23671    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
23672        self.raw.pNext = next;
23673    }
23674
23675    pub fn set_properties<'m>(&mut self, properties: PhysicalDeviceProperties) {
23676        self.raw.properties = properties.raw;
23677    }
23678
23679    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceProperties2KHR {
23680        &self.raw
23681    }
23682}
23683
23684impl<'s> From<PhysicalDeviceProperties2Khr<'s>> for vks::VkPhysicalDeviceProperties2KHR {
23685    fn from(f: PhysicalDeviceProperties2Khr<'s>) -> vks::VkPhysicalDeviceProperties2KHR {
23686        f.raw
23687    }
23688}
23689
23690
23691/// A builder for `VkPhysicalDeviceProperties2KHR`.
23692///
23693/// 
23694#[derive(Debug, Clone, Default)]
23695pub struct PhysicalDeviceProperties2KhrBuilder<'b> {
23696    raw: vks::VkPhysicalDeviceProperties2KHR,
23697    _p: PhantomData<&'b ()>, 
23698}
23699
23700impl<'b> PhysicalDeviceProperties2KhrBuilder<'b> {
23701    pub fn new() -> PhysicalDeviceProperties2KhrBuilder<'b> {
23702        PhysicalDeviceProperties2KhrBuilder {
23703            raw: vks::VkPhysicalDeviceProperties2KHR::default(),
23704            _p: PhantomData,
23705        }
23706    }
23707
23708    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> PhysicalDeviceProperties2KhrBuilder<'b> {
23709        self.raw.pNext = next;
23710        self
23711    }
23712
23713    pub fn properties<'m>(mut self, properties: PhysicalDeviceProperties) -> PhysicalDeviceProperties2KhrBuilder<'b> {
23714        self.raw.properties = properties.raw;
23715        self
23716    }
23717
23718    pub fn get_next<'a>(&'a self) -> *mut c_void {
23719        self.raw.pNext
23720    }
23721
23722    pub fn get_properties<'a>(&'a self) -> &'a PhysicalDeviceProperties {
23723        unsafe { &*(&self.raw.properties as *const vks::VkPhysicalDeviceProperties as *const PhysicalDeviceProperties) }
23724    }
23725
23726    pub fn get_properties_mut<'a>(&'a mut self) -> &'a mut PhysicalDeviceProperties {
23727        unsafe { &mut *(&mut self.raw.properties as *mut  vks::VkPhysicalDeviceProperties as *mut PhysicalDeviceProperties) }
23728    }
23729
23730    pub fn build(self) -> PhysicalDeviceProperties2Khr<'b> {
23731        PhysicalDeviceProperties2Khr {
23732            raw: self.raw,
23733            _p: PhantomData,
23734        }
23735    }
23736}
23737
23738
23739/// A `VkFormatProperties2KHR`.
23740///
23741/// 
23742#[derive(Debug, Clone, Default)]
23743#[repr(C)]
23744pub struct FormatProperties2Khr<'s> {
23745    raw: vks::VkFormatProperties2KHR,
23746    _p: PhantomData<&'s ()>,
23747}
23748
23749impl<'s> FormatProperties2Khr<'s> {
23750    pub fn builder<'b>() -> FormatProperties2KhrBuilder<'b> {
23751        FormatProperties2KhrBuilder::new()
23752    }
23753
23754    pub unsafe fn from_raw(raw: vks::VkFormatProperties2KHR) -> FormatProperties2Khr<'s> {
23755        FormatProperties2Khr { raw, _p: PhantomData }
23756    }
23757
23758    pub fn next<'a>(&'a self) -> *mut c_void {
23759        self.raw.pNext
23760    }
23761
23762    pub fn format_properties<'a>(&'a self) -> &'a FormatProperties {
23763        unsafe { &*(&self.raw.formatProperties as *const vks::VkFormatProperties as *const FormatProperties) }
23764    }
23765
23766    pub fn format_properties_mut<'a>(&'a mut self) -> &'a mut FormatProperties {
23767        unsafe { &mut *(&mut self.raw.formatProperties as *mut  vks::VkFormatProperties as *mut FormatProperties) }
23768    }
23769
23770    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
23771        self.raw.pNext = next;
23772    }
23773
23774    pub fn set_format_properties<'m>(&mut self, format_properties: FormatProperties) {
23775        self.raw.formatProperties = format_properties.raw;
23776    }
23777
23778    pub fn as_raw(&self) -> &vks::VkFormatProperties2KHR {
23779        &self.raw
23780    }
23781}
23782
23783impl<'s> From<FormatProperties2Khr<'s>> for vks::VkFormatProperties2KHR {
23784    fn from(f: FormatProperties2Khr<'s>) -> vks::VkFormatProperties2KHR {
23785        f.raw
23786    }
23787}
23788
23789
23790/// A builder for `VkFormatProperties2KHR`.
23791///
23792/// 
23793#[derive(Debug, Clone, Default)]
23794pub struct FormatProperties2KhrBuilder<'b> {
23795    raw: vks::VkFormatProperties2KHR,
23796    _p: PhantomData<&'b ()>, 
23797}
23798
23799impl<'b> FormatProperties2KhrBuilder<'b> {
23800    pub fn new() -> FormatProperties2KhrBuilder<'b> {
23801        FormatProperties2KhrBuilder {
23802            raw: vks::VkFormatProperties2KHR::default(),
23803            _p: PhantomData,
23804        }
23805    }
23806
23807    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> FormatProperties2KhrBuilder<'b> {
23808        self.raw.pNext = next;
23809        self
23810    }
23811
23812    pub fn format_properties<'m>(mut self, format_properties: FormatProperties) -> FormatProperties2KhrBuilder<'b> {
23813        self.raw.formatProperties = format_properties.raw;
23814        self
23815    }
23816
23817    pub fn get_next<'a>(&'a self) -> *mut c_void {
23818        self.raw.pNext
23819    }
23820
23821    pub fn get_format_properties<'a>(&'a self) -> &'a FormatProperties {
23822        unsafe { &*(&self.raw.formatProperties as *const vks::VkFormatProperties as *const FormatProperties) }
23823    }
23824
23825    pub fn get_format_properties_mut<'a>(&'a mut self) -> &'a mut FormatProperties {
23826        unsafe { &mut *(&mut self.raw.formatProperties as *mut  vks::VkFormatProperties as *mut FormatProperties) }
23827    }
23828
23829    pub fn build(self) -> FormatProperties2Khr<'b> {
23830        FormatProperties2Khr {
23831            raw: self.raw,
23832            _p: PhantomData,
23833        }
23834    }
23835}
23836
23837
23838/// A `VkImageFormatProperties2KHR`.
23839///
23840/// 
23841#[derive(Debug, Clone, Default)]
23842#[repr(C)]
23843pub struct ImageFormatProperties2Khr<'s> {
23844    raw: vks::VkImageFormatProperties2KHR,
23845    _p: PhantomData<&'s ()>,
23846}
23847
23848impl<'s> ImageFormatProperties2Khr<'s> {
23849    pub fn builder<'b>() -> ImageFormatProperties2KhrBuilder<'b> {
23850        ImageFormatProperties2KhrBuilder::new()
23851    }
23852
23853    pub unsafe fn from_raw(raw: vks::VkImageFormatProperties2KHR) -> ImageFormatProperties2Khr<'s> {
23854        ImageFormatProperties2Khr { raw, _p: PhantomData }
23855    }
23856
23857    pub fn next<'a>(&'a self) -> *mut c_void {
23858        self.raw.pNext
23859    }
23860
23861    pub fn image_format_properties<'a>(&'a self) -> &'a ImageFormatProperties {
23862        unsafe { &*(&self.raw.imageFormatProperties as *const vks::VkImageFormatProperties as *const ImageFormatProperties) }
23863    }
23864
23865    pub fn image_format_properties_mut<'a>(&'a mut self) -> &'a mut ImageFormatProperties {
23866        unsafe { &mut *(&mut self.raw.imageFormatProperties as *mut  vks::VkImageFormatProperties as *mut ImageFormatProperties) }
23867    }
23868
23869    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
23870        self.raw.pNext = next;
23871    }
23872
23873    pub fn set_image_format_properties<'m>(&mut self, image_format_properties: ImageFormatProperties) {
23874        self.raw.imageFormatProperties = image_format_properties.raw;
23875    }
23876
23877    pub fn as_raw(&self) -> &vks::VkImageFormatProperties2KHR {
23878        &self.raw
23879    }
23880}
23881
23882impl<'s> From<ImageFormatProperties2Khr<'s>> for vks::VkImageFormatProperties2KHR {
23883    fn from(f: ImageFormatProperties2Khr<'s>) -> vks::VkImageFormatProperties2KHR {
23884        f.raw
23885    }
23886}
23887
23888
23889/// A builder for `VkImageFormatProperties2KHR`.
23890///
23891/// 
23892#[derive(Debug, Clone, Default)]
23893pub struct ImageFormatProperties2KhrBuilder<'b> {
23894    raw: vks::VkImageFormatProperties2KHR,
23895    _p: PhantomData<&'b ()>, 
23896}
23897
23898impl<'b> ImageFormatProperties2KhrBuilder<'b> {
23899    pub fn new() -> ImageFormatProperties2KhrBuilder<'b> {
23900        ImageFormatProperties2KhrBuilder {
23901            raw: vks::VkImageFormatProperties2KHR::default(),
23902            _p: PhantomData,
23903        }
23904    }
23905
23906    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> ImageFormatProperties2KhrBuilder<'b> {
23907        self.raw.pNext = next;
23908        self
23909    }
23910
23911    pub fn image_format_properties<'m>(mut self, image_format_properties: ImageFormatProperties) -> ImageFormatProperties2KhrBuilder<'b> {
23912        self.raw.imageFormatProperties = image_format_properties.raw;
23913        self
23914    }
23915
23916    pub fn get_next<'a>(&'a self) -> *mut c_void {
23917        self.raw.pNext
23918    }
23919
23920    pub fn get_image_format_properties<'a>(&'a self) -> &'a ImageFormatProperties {
23921        unsafe { &*(&self.raw.imageFormatProperties as *const vks::VkImageFormatProperties as *const ImageFormatProperties) }
23922    }
23923
23924    pub fn get_image_format_properties_mut<'a>(&'a mut self) -> &'a mut ImageFormatProperties {
23925        unsafe { &mut *(&mut self.raw.imageFormatProperties as *mut  vks::VkImageFormatProperties as *mut ImageFormatProperties) }
23926    }
23927
23928    pub fn build(self) -> ImageFormatProperties2Khr<'b> {
23929        ImageFormatProperties2Khr {
23930            raw: self.raw,
23931            _p: PhantomData,
23932        }
23933    }
23934}
23935
23936
23937/// A `VkPhysicalDeviceImageFormatInfo2KHR`.
23938///
23939/// 
23940#[derive(Debug, Clone, Default)]
23941#[repr(C)]
23942pub struct PhysicalDeviceImageFormatInfo2Khr<'s> {
23943    raw: vks::VkPhysicalDeviceImageFormatInfo2KHR,
23944    _p: PhantomData<&'s ()>,
23945}
23946
23947impl<'s> PhysicalDeviceImageFormatInfo2Khr<'s> {
23948    pub fn builder<'b>() -> PhysicalDeviceImageFormatInfo2KhrBuilder<'b> {
23949        PhysicalDeviceImageFormatInfo2KhrBuilder::new()
23950    }
23951
23952    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceImageFormatInfo2KHR) -> PhysicalDeviceImageFormatInfo2Khr<'s> {
23953        PhysicalDeviceImageFormatInfo2Khr { raw, _p: PhantomData }
23954    }
23955
23956    pub fn next<'a>(&'a self) -> *const c_void {
23957        self.raw.pNext
23958    }
23959
23960    pub fn format<'a>(&'a self) -> Format {
23961        self.raw.format.into()
23962    }
23963
23964    pub fn type_of<'a>(&'a self) -> ImageType {
23965        self.raw.type_.into()
23966    }
23967
23968    pub fn tiling<'a>(&'a self) -> ImageTiling {
23969        self.raw.tiling.into()
23970    }
23971
23972    pub fn usage<'a>(&'a self) -> ImageUsageFlags {
23973        ImageUsageFlags::from_bits(self.raw.usage)
23974            .expect("PhysicalDeviceImageFormatInfo2Khr::usage: error converting flags")
23975    }
23976
23977    pub fn flags<'a>(&'a self) -> ImageCreateFlags {
23978        ImageCreateFlags::from_bits(self.raw.flags)
23979            .expect("PhysicalDeviceImageFormatInfo2Khr::flags: error converting flags")
23980    }
23981
23982    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
23983        self.raw.pNext = next;
23984    }
23985
23986    pub fn set_format<'m>(&mut self, format: Format) {
23987        self.raw.format = format.into();
23988    }
23989
23990    pub fn set_type_of<'m>(&mut self, type_of: ImageType) {
23991        self.raw.type_ = type_of.into();
23992    }
23993
23994    pub fn set_tiling<'m>(&mut self, tiling: ImageTiling) {
23995        self.raw.tiling = tiling.into();
23996    }
23997
23998    pub fn set_usage<'m>(&mut self, usage: ImageUsageFlags) {
23999        self.raw.usage = usage.bits();
24000    }
24001
24002    pub fn set_flags<'m>(&mut self, flags: ImageCreateFlags) {
24003        self.raw.flags = flags.bits();
24004    }
24005
24006    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceImageFormatInfo2KHR {
24007        &self.raw
24008    }
24009}
24010
24011impl<'s> From<PhysicalDeviceImageFormatInfo2Khr<'s>> for vks::VkPhysicalDeviceImageFormatInfo2KHR {
24012    fn from(f: PhysicalDeviceImageFormatInfo2Khr<'s>) -> vks::VkPhysicalDeviceImageFormatInfo2KHR {
24013        f.raw
24014    }
24015}
24016
24017
24018/// A builder for `VkPhysicalDeviceImageFormatInfo2KHR`.
24019///
24020/// 
24021#[derive(Debug, Clone, Default)]
24022pub struct PhysicalDeviceImageFormatInfo2KhrBuilder<'b> {
24023    raw: vks::VkPhysicalDeviceImageFormatInfo2KHR,
24024    _p: PhantomData<&'b ()>, 
24025}
24026
24027impl<'b> PhysicalDeviceImageFormatInfo2KhrBuilder<'b> {
24028    pub fn new() -> PhysicalDeviceImageFormatInfo2KhrBuilder<'b> {
24029        PhysicalDeviceImageFormatInfo2KhrBuilder {
24030            raw: vks::VkPhysicalDeviceImageFormatInfo2KHR::default(),
24031            _p: PhantomData,
24032        }
24033    }
24034
24035    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PhysicalDeviceImageFormatInfo2KhrBuilder<'b> {
24036        self.raw.pNext = next;
24037        self
24038    }
24039
24040    pub fn format<'m>(mut self, format: Format) -> PhysicalDeviceImageFormatInfo2KhrBuilder<'b> {
24041        self.raw.format = format.into();
24042        self
24043    }
24044
24045    pub fn type_of<'m>(mut self, type_of: ImageType) -> PhysicalDeviceImageFormatInfo2KhrBuilder<'b> {
24046        self.raw.type_ = type_of.into();
24047        self
24048    }
24049
24050    pub fn tiling<'m>(mut self, tiling: ImageTiling) -> PhysicalDeviceImageFormatInfo2KhrBuilder<'b> {
24051        self.raw.tiling = tiling.into();
24052        self
24053    }
24054
24055    pub fn usage<'m>(mut self, usage: ImageUsageFlags) -> PhysicalDeviceImageFormatInfo2KhrBuilder<'b> {
24056        self.raw.usage = usage.bits();
24057        self
24058    }
24059
24060    pub fn flags<'m>(mut self, flags: ImageCreateFlags) -> PhysicalDeviceImageFormatInfo2KhrBuilder<'b> {
24061        self.raw.flags = flags.bits();
24062        self
24063    }
24064
24065    pub fn get_next<'a>(&'a self) -> *const c_void {
24066        self.raw.pNext
24067    }
24068
24069    pub fn get_format<'a>(&'a self) -> Format {
24070        self.raw.format.into()
24071    }
24072
24073    pub fn get_type_of<'a>(&'a self) -> ImageType {
24074        self.raw.type_.into()
24075    }
24076
24077    pub fn get_tiling<'a>(&'a self) -> ImageTiling {
24078        self.raw.tiling.into()
24079    }
24080
24081    pub fn get_usage<'a>(&'a self) -> ImageUsageFlags {
24082        ImageUsageFlags::from_bits(self.raw.usage)
24083            .expect("PhysicalDeviceImageFormatInfo2Khr::usage: error converting flags")
24084    }
24085
24086    pub fn get_flags<'a>(&'a self) -> ImageCreateFlags {
24087        ImageCreateFlags::from_bits(self.raw.flags)
24088            .expect("PhysicalDeviceImageFormatInfo2Khr::flags: error converting flags")
24089    }
24090
24091    pub fn build(self) -> PhysicalDeviceImageFormatInfo2Khr<'b> {
24092        PhysicalDeviceImageFormatInfo2Khr {
24093            raw: self.raw,
24094            _p: PhantomData,
24095        }
24096    }
24097}
24098
24099
24100/// A `VkQueueFamilyProperties2KHR`.
24101///
24102/// 
24103#[derive(Debug, Clone, Default)]
24104#[repr(C)]
24105pub struct QueueFamilyProperties2Khr<'s> {
24106    raw: vks::VkQueueFamilyProperties2KHR,
24107    _p: PhantomData<&'s ()>,
24108}
24109
24110impl<'s> QueueFamilyProperties2Khr<'s> {
24111    pub fn builder<'b>() -> QueueFamilyProperties2KhrBuilder<'b> {
24112        QueueFamilyProperties2KhrBuilder::new()
24113    }
24114
24115    pub unsafe fn from_raw(raw: vks::VkQueueFamilyProperties2KHR) -> QueueFamilyProperties2Khr<'s> {
24116        QueueFamilyProperties2Khr { raw, _p: PhantomData }
24117    }
24118
24119    pub fn next<'a>(&'a self) -> *mut c_void {
24120        self.raw.pNext
24121    }
24122
24123    pub fn queue_family_properties<'a>(&'a self) -> &'a QueueFamilyProperties {
24124        unsafe { &*(&self.raw.queueFamilyProperties as *const vks::VkQueueFamilyProperties as *const QueueFamilyProperties) }
24125    }
24126
24127    pub fn queue_family_properties_mut<'a>(&'a mut self) -> &'a mut QueueFamilyProperties {
24128        unsafe { &mut *(&mut self.raw.queueFamilyProperties as *mut  vks::VkQueueFamilyProperties as *mut QueueFamilyProperties) }
24129    }
24130
24131    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
24132        self.raw.pNext = next;
24133    }
24134
24135    pub fn set_queue_family_properties<'m>(&mut self, queue_family_properties: QueueFamilyProperties) {
24136        self.raw.queueFamilyProperties = queue_family_properties.raw;
24137    }
24138
24139    pub fn as_raw(&self) -> &vks::VkQueueFamilyProperties2KHR {
24140        &self.raw
24141    }
24142}
24143
24144impl<'s> From<QueueFamilyProperties2Khr<'s>> for vks::VkQueueFamilyProperties2KHR {
24145    fn from(f: QueueFamilyProperties2Khr<'s>) -> vks::VkQueueFamilyProperties2KHR {
24146        f.raw
24147    }
24148}
24149
24150
24151/// A builder for `VkQueueFamilyProperties2KHR`.
24152///
24153/// 
24154#[derive(Debug, Clone, Default)]
24155pub struct QueueFamilyProperties2KhrBuilder<'b> {
24156    raw: vks::VkQueueFamilyProperties2KHR,
24157    _p: PhantomData<&'b ()>, 
24158}
24159
24160impl<'b> QueueFamilyProperties2KhrBuilder<'b> {
24161    pub fn new() -> QueueFamilyProperties2KhrBuilder<'b> {
24162        QueueFamilyProperties2KhrBuilder {
24163            raw: vks::VkQueueFamilyProperties2KHR::default(),
24164            _p: PhantomData,
24165        }
24166    }
24167
24168    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> QueueFamilyProperties2KhrBuilder<'b> {
24169        self.raw.pNext = next;
24170        self
24171    }
24172
24173    pub fn queue_family_properties<'m>(mut self, queue_family_properties: QueueFamilyProperties) -> QueueFamilyProperties2KhrBuilder<'b> {
24174        self.raw.queueFamilyProperties = queue_family_properties.raw;
24175        self
24176    }
24177
24178    pub fn get_next<'a>(&'a self) -> *mut c_void {
24179        self.raw.pNext
24180    }
24181
24182    pub fn get_queue_family_properties<'a>(&'a self) -> &'a QueueFamilyProperties {
24183        unsafe { &*(&self.raw.queueFamilyProperties as *const vks::VkQueueFamilyProperties as *const QueueFamilyProperties) }
24184    }
24185
24186    pub fn get_queue_family_properties_mut<'a>(&'a mut self) -> &'a mut QueueFamilyProperties {
24187        unsafe { &mut *(&mut self.raw.queueFamilyProperties as *mut  vks::VkQueueFamilyProperties as *mut QueueFamilyProperties) }
24188    }
24189
24190    pub fn build(self) -> QueueFamilyProperties2Khr<'b> {
24191        QueueFamilyProperties2Khr {
24192            raw: self.raw,
24193            _p: PhantomData,
24194        }
24195    }
24196}
24197
24198
24199/// A `VkPhysicalDeviceMemoryProperties2KHR`.
24200///
24201/// 
24202#[derive(Debug, Clone, Default)]
24203#[repr(C)]
24204pub struct PhysicalDeviceMemoryProperties2Khr<'s> {
24205    raw: vks::VkPhysicalDeviceMemoryProperties2KHR,
24206    _p: PhantomData<&'s ()>,
24207}
24208
24209impl<'s> PhysicalDeviceMemoryProperties2Khr<'s> {
24210    pub fn builder<'b>() -> PhysicalDeviceMemoryProperties2KhrBuilder<'b> {
24211        PhysicalDeviceMemoryProperties2KhrBuilder::new()
24212    }
24213
24214    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceMemoryProperties2KHR) -> PhysicalDeviceMemoryProperties2Khr<'s> {
24215        PhysicalDeviceMemoryProperties2Khr { raw, _p: PhantomData }
24216    }
24217
24218    pub fn next<'a>(&'a self) -> *mut c_void {
24219        self.raw.pNext
24220    }
24221
24222    pub fn memory_properties<'a>(&'a self) -> &'a PhysicalDeviceMemoryProperties {
24223        unsafe { &*(&self.raw.memoryProperties as *const vks::VkPhysicalDeviceMemoryProperties as *const PhysicalDeviceMemoryProperties) }
24224    }
24225
24226    pub fn memory_properties_mut<'a>(&'a mut self) -> &'a mut PhysicalDeviceMemoryProperties {
24227        unsafe { &mut *(&mut self.raw.memoryProperties as *mut  vks::VkPhysicalDeviceMemoryProperties as *mut PhysicalDeviceMemoryProperties) }
24228    }
24229
24230    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
24231        self.raw.pNext = next;
24232    }
24233
24234    pub fn set_memory_properties<'m>(&mut self, memory_properties: PhysicalDeviceMemoryProperties) {
24235        self.raw.memoryProperties = memory_properties.raw;
24236    }
24237
24238    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceMemoryProperties2KHR {
24239        &self.raw
24240    }
24241}
24242
24243impl<'s> From<PhysicalDeviceMemoryProperties2Khr<'s>> for vks::VkPhysicalDeviceMemoryProperties2KHR {
24244    fn from(f: PhysicalDeviceMemoryProperties2Khr<'s>) -> vks::VkPhysicalDeviceMemoryProperties2KHR {
24245        f.raw
24246    }
24247}
24248
24249
24250/// A builder for `VkPhysicalDeviceMemoryProperties2KHR`.
24251///
24252/// 
24253#[derive(Debug, Clone, Default)]
24254pub struct PhysicalDeviceMemoryProperties2KhrBuilder<'b> {
24255    raw: vks::VkPhysicalDeviceMemoryProperties2KHR,
24256    _p: PhantomData<&'b ()>, 
24257}
24258
24259impl<'b> PhysicalDeviceMemoryProperties2KhrBuilder<'b> {
24260    pub fn new() -> PhysicalDeviceMemoryProperties2KhrBuilder<'b> {
24261        PhysicalDeviceMemoryProperties2KhrBuilder {
24262            raw: vks::VkPhysicalDeviceMemoryProperties2KHR::default(),
24263            _p: PhantomData,
24264        }
24265    }
24266
24267    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> PhysicalDeviceMemoryProperties2KhrBuilder<'b> {
24268        self.raw.pNext = next;
24269        self
24270    }
24271
24272    pub fn memory_properties<'m>(mut self, memory_properties: PhysicalDeviceMemoryProperties) -> PhysicalDeviceMemoryProperties2KhrBuilder<'b> {
24273        self.raw.memoryProperties = memory_properties.raw;
24274        self
24275    }
24276
24277    pub fn get_next<'a>(&'a self) -> *mut c_void {
24278        self.raw.pNext
24279    }
24280
24281    pub fn get_memory_properties<'a>(&'a self) -> &'a PhysicalDeviceMemoryProperties {
24282        unsafe { &*(&self.raw.memoryProperties as *const vks::VkPhysicalDeviceMemoryProperties as *const PhysicalDeviceMemoryProperties) }
24283    }
24284
24285    pub fn get_memory_properties_mut<'a>(&'a mut self) -> &'a mut PhysicalDeviceMemoryProperties {
24286        unsafe { &mut *(&mut self.raw.memoryProperties as *mut  vks::VkPhysicalDeviceMemoryProperties as *mut PhysicalDeviceMemoryProperties) }
24287    }
24288
24289    pub fn build(self) -> PhysicalDeviceMemoryProperties2Khr<'b> {
24290        PhysicalDeviceMemoryProperties2Khr {
24291            raw: self.raw,
24292            _p: PhantomData,
24293        }
24294    }
24295}
24296
24297
24298/// A `VkSparseImageFormatProperties2KHR`.
24299///
24300/// 
24301#[derive(Debug, Clone, Default)]
24302#[repr(C)]
24303pub struct SparseImageFormatProperties2Khr<'s> {
24304    raw: vks::VkSparseImageFormatProperties2KHR,
24305    _p: PhantomData<&'s ()>,
24306}
24307
24308impl<'s> SparseImageFormatProperties2Khr<'s> {
24309    pub fn builder<'b>() -> SparseImageFormatProperties2KhrBuilder<'b> {
24310        SparseImageFormatProperties2KhrBuilder::new()
24311    }
24312
24313    pub unsafe fn from_raw(raw: vks::VkSparseImageFormatProperties2KHR) -> SparseImageFormatProperties2Khr<'s> {
24314        SparseImageFormatProperties2Khr { raw, _p: PhantomData }
24315    }
24316
24317    pub fn next<'a>(&'a self) -> *mut c_void {
24318        self.raw.pNext
24319    }
24320
24321    pub fn properties<'a>(&'a self) -> &'a SparseImageFormatProperties {
24322        unsafe { &*(&self.raw.properties as *const vks::VkSparseImageFormatProperties as *const SparseImageFormatProperties) }
24323    }
24324
24325    pub fn properties_mut<'a>(&'a mut self) -> &'a mut SparseImageFormatProperties {
24326        unsafe { &mut *(&mut self.raw.properties as *mut  vks::VkSparseImageFormatProperties as *mut SparseImageFormatProperties) }
24327    }
24328
24329    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
24330        self.raw.pNext = next;
24331    }
24332
24333    pub fn set_properties<'m>(&mut self, properties: SparseImageFormatProperties) {
24334        self.raw.properties = properties.raw;
24335    }
24336
24337    pub fn as_raw(&self) -> &vks::VkSparseImageFormatProperties2KHR {
24338        &self.raw
24339    }
24340}
24341
24342impl<'s> From<SparseImageFormatProperties2Khr<'s>> for vks::VkSparseImageFormatProperties2KHR {
24343    fn from(f: SparseImageFormatProperties2Khr<'s>) -> vks::VkSparseImageFormatProperties2KHR {
24344        f.raw
24345    }
24346}
24347
24348
24349/// A builder for `VkSparseImageFormatProperties2KHR`.
24350///
24351/// 
24352#[derive(Debug, Clone, Default)]
24353pub struct SparseImageFormatProperties2KhrBuilder<'b> {
24354    raw: vks::VkSparseImageFormatProperties2KHR,
24355    _p: PhantomData<&'b ()>, 
24356}
24357
24358impl<'b> SparseImageFormatProperties2KhrBuilder<'b> {
24359    pub fn new() -> SparseImageFormatProperties2KhrBuilder<'b> {
24360        SparseImageFormatProperties2KhrBuilder {
24361            raw: vks::VkSparseImageFormatProperties2KHR::default(),
24362            _p: PhantomData,
24363        }
24364    }
24365
24366    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> SparseImageFormatProperties2KhrBuilder<'b> {
24367        self.raw.pNext = next;
24368        self
24369    }
24370
24371    pub fn properties<'m>(mut self, properties: SparseImageFormatProperties) -> SparseImageFormatProperties2KhrBuilder<'b> {
24372        self.raw.properties = properties.raw;
24373        self
24374    }
24375
24376    pub fn get_next<'a>(&'a self) -> *mut c_void {
24377        self.raw.pNext
24378    }
24379
24380    pub fn get_properties<'a>(&'a self) -> &'a SparseImageFormatProperties {
24381        unsafe { &*(&self.raw.properties as *const vks::VkSparseImageFormatProperties as *const SparseImageFormatProperties) }
24382    }
24383
24384    pub fn get_properties_mut<'a>(&'a mut self) -> &'a mut SparseImageFormatProperties {
24385        unsafe { &mut *(&mut self.raw.properties as *mut  vks::VkSparseImageFormatProperties as *mut SparseImageFormatProperties) }
24386    }
24387
24388    pub fn build(self) -> SparseImageFormatProperties2Khr<'b> {
24389        SparseImageFormatProperties2Khr {
24390            raw: self.raw,
24391            _p: PhantomData,
24392        }
24393    }
24394}
24395
24396
24397/// A `VkPhysicalDeviceSparseImageFormatInfo2KHR`.
24398///
24399/// 
24400#[derive(Debug, Clone, Default)]
24401#[repr(C)]
24402pub struct PhysicalDeviceSparseImageFormatInfo2Khr<'s> {
24403    raw: vks::VkPhysicalDeviceSparseImageFormatInfo2KHR,
24404    _p: PhantomData<&'s ()>,
24405}
24406
24407impl<'s> PhysicalDeviceSparseImageFormatInfo2Khr<'s> {
24408    pub fn builder<'b>() -> PhysicalDeviceSparseImageFormatInfo2KhrBuilder<'b> {
24409        PhysicalDeviceSparseImageFormatInfo2KhrBuilder::new()
24410    }
24411
24412    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceSparseImageFormatInfo2KHR) -> PhysicalDeviceSparseImageFormatInfo2Khr<'s> {
24413        PhysicalDeviceSparseImageFormatInfo2Khr { raw, _p: PhantomData }
24414    }
24415
24416    pub fn next<'a>(&'a self) -> *const c_void {
24417        self.raw.pNext
24418    }
24419
24420    pub fn format<'a>(&'a self) -> Format {
24421        self.raw.format.into()
24422    }
24423
24424    pub fn type_of<'a>(&'a self) -> ImageType {
24425        self.raw.type_.into()
24426    }
24427
24428    pub fn samples<'a>(&'a self) -> SampleCountFlags {
24429        SampleCountFlags::from_bits(self.raw.samples)
24430            .expect("PhysicalDeviceSparseImageFormatInfo2Khr::samples: error converting flags")
24431    }
24432
24433    pub fn usage<'a>(&'a self) -> ImageUsageFlags {
24434        ImageUsageFlags::from_bits(self.raw.usage)
24435            .expect("PhysicalDeviceSparseImageFormatInfo2Khr::usage: error converting flags")
24436    }
24437
24438    pub fn tiling<'a>(&'a self) -> ImageTiling {
24439        self.raw.tiling.into()
24440    }
24441
24442    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
24443        self.raw.pNext = next;
24444    }
24445
24446    pub fn set_format<'m>(&mut self, format: Format) {
24447        self.raw.format = format.into();
24448    }
24449
24450    pub fn set_type_of<'m>(&mut self, type_of: ImageType) {
24451        self.raw.type_ = type_of.into();
24452    }
24453
24454    pub fn set_samples<'m>(&mut self, samples: SampleCountFlags) {
24455        self.raw.samples = samples.bits();
24456    }
24457
24458    pub fn set_usage<'m>(&mut self, usage: ImageUsageFlags) {
24459        self.raw.usage = usage.bits();
24460    }
24461
24462    pub fn set_tiling<'m>(&mut self, tiling: ImageTiling) {
24463        self.raw.tiling = tiling.into();
24464    }
24465
24466    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceSparseImageFormatInfo2KHR {
24467        &self.raw
24468    }
24469}
24470
24471impl<'s> From<PhysicalDeviceSparseImageFormatInfo2Khr<'s>> for vks::VkPhysicalDeviceSparseImageFormatInfo2KHR {
24472    fn from(f: PhysicalDeviceSparseImageFormatInfo2Khr<'s>) -> vks::VkPhysicalDeviceSparseImageFormatInfo2KHR {
24473        f.raw
24474    }
24475}
24476
24477
24478/// A builder for `VkPhysicalDeviceSparseImageFormatInfo2KHR`.
24479///
24480/// 
24481#[derive(Debug, Clone, Default)]
24482pub struct PhysicalDeviceSparseImageFormatInfo2KhrBuilder<'b> {
24483    raw: vks::VkPhysicalDeviceSparseImageFormatInfo2KHR,
24484    _p: PhantomData<&'b ()>, 
24485}
24486
24487impl<'b> PhysicalDeviceSparseImageFormatInfo2KhrBuilder<'b> {
24488    pub fn new() -> PhysicalDeviceSparseImageFormatInfo2KhrBuilder<'b> {
24489        PhysicalDeviceSparseImageFormatInfo2KhrBuilder {
24490            raw: vks::VkPhysicalDeviceSparseImageFormatInfo2KHR::default(),
24491            _p: PhantomData,
24492        }
24493    }
24494
24495    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PhysicalDeviceSparseImageFormatInfo2KhrBuilder<'b> {
24496        self.raw.pNext = next;
24497        self
24498    }
24499
24500    pub fn format<'m>(mut self, format: Format) -> PhysicalDeviceSparseImageFormatInfo2KhrBuilder<'b> {
24501        self.raw.format = format.into();
24502        self
24503    }
24504
24505    pub fn type_of<'m>(mut self, type_of: ImageType) -> PhysicalDeviceSparseImageFormatInfo2KhrBuilder<'b> {
24506        self.raw.type_ = type_of.into();
24507        self
24508    }
24509
24510    pub fn samples<'m>(mut self, samples: SampleCountFlags) -> PhysicalDeviceSparseImageFormatInfo2KhrBuilder<'b> {
24511        self.raw.samples = samples.bits();
24512        self
24513    }
24514
24515    pub fn usage<'m>(mut self, usage: ImageUsageFlags) -> PhysicalDeviceSparseImageFormatInfo2KhrBuilder<'b> {
24516        self.raw.usage = usage.bits();
24517        self
24518    }
24519
24520    pub fn tiling<'m>(mut self, tiling: ImageTiling) -> PhysicalDeviceSparseImageFormatInfo2KhrBuilder<'b> {
24521        self.raw.tiling = tiling.into();
24522        self
24523    }
24524
24525    pub fn get_next<'a>(&'a self) -> *const c_void {
24526        self.raw.pNext
24527    }
24528
24529    pub fn get_format<'a>(&'a self) -> Format {
24530        self.raw.format.into()
24531    }
24532
24533    pub fn get_type_of<'a>(&'a self) -> ImageType {
24534        self.raw.type_.into()
24535    }
24536
24537    pub fn get_samples<'a>(&'a self) -> SampleCountFlags {
24538        SampleCountFlags::from_bits(self.raw.samples)
24539            .expect("PhysicalDeviceSparseImageFormatInfo2Khr::samples: error converting flags")
24540    }
24541
24542    pub fn get_usage<'a>(&'a self) -> ImageUsageFlags {
24543        ImageUsageFlags::from_bits(self.raw.usage)
24544            .expect("PhysicalDeviceSparseImageFormatInfo2Khr::usage: error converting flags")
24545    }
24546
24547    pub fn get_tiling<'a>(&'a self) -> ImageTiling {
24548        self.raw.tiling.into()
24549    }
24550
24551    pub fn build(self) -> PhysicalDeviceSparseImageFormatInfo2Khr<'b> {
24552        PhysicalDeviceSparseImageFormatInfo2Khr {
24553            raw: self.raw,
24554            _p: PhantomData,
24555        }
24556    }
24557}
24558
24559
24560/// A `VkPhysicalDevicePushDescriptorPropertiesKHR`.
24561///
24562/// 
24563#[derive(Debug, Clone, Default)]
24564#[repr(C)]
24565pub struct PhysicalDevicePushDescriptorPropertiesKhr<'s> {
24566    raw: vks::VkPhysicalDevicePushDescriptorPropertiesKHR,
24567    _p: PhantomData<&'s ()>,
24568}
24569
24570impl<'s> PhysicalDevicePushDescriptorPropertiesKhr<'s> {
24571    pub fn builder<'b>() -> PhysicalDevicePushDescriptorPropertiesKhrBuilder<'b> {
24572        PhysicalDevicePushDescriptorPropertiesKhrBuilder::new()
24573    }
24574
24575    pub unsafe fn from_raw(raw: vks::VkPhysicalDevicePushDescriptorPropertiesKHR) -> PhysicalDevicePushDescriptorPropertiesKhr<'s> {
24576        PhysicalDevicePushDescriptorPropertiesKhr { raw, _p: PhantomData }
24577    }
24578
24579    pub fn next<'a>(&'a self) -> *mut c_void {
24580        self.raw.pNext
24581    }
24582
24583    pub fn max_push_descriptors<'a>(&'a self) -> u32 {
24584        self.raw.maxPushDescriptors.into()
24585    }
24586
24587    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
24588        self.raw.pNext = next;
24589    }
24590
24591    pub fn set_max_push_descriptors<'m>(&mut self, max_push_descriptors: u32) {
24592        self.raw.maxPushDescriptors = max_push_descriptors.into();
24593    }
24594
24595    pub fn as_raw(&self) -> &vks::VkPhysicalDevicePushDescriptorPropertiesKHR {
24596        &self.raw
24597    }
24598}
24599
24600impl<'s> From<PhysicalDevicePushDescriptorPropertiesKhr<'s>> for vks::VkPhysicalDevicePushDescriptorPropertiesKHR {
24601    fn from(f: PhysicalDevicePushDescriptorPropertiesKhr<'s>) -> vks::VkPhysicalDevicePushDescriptorPropertiesKHR {
24602        f.raw
24603    }
24604}
24605
24606
24607/// A builder for `VkPhysicalDevicePushDescriptorPropertiesKHR`.
24608///
24609/// 
24610#[derive(Debug, Clone, Default)]
24611pub struct PhysicalDevicePushDescriptorPropertiesKhrBuilder<'b> {
24612    raw: vks::VkPhysicalDevicePushDescriptorPropertiesKHR,
24613    _p: PhantomData<&'b ()>, 
24614}
24615
24616impl<'b> PhysicalDevicePushDescriptorPropertiesKhrBuilder<'b> {
24617    pub fn new() -> PhysicalDevicePushDescriptorPropertiesKhrBuilder<'b> {
24618        PhysicalDevicePushDescriptorPropertiesKhrBuilder {
24619            raw: vks::VkPhysicalDevicePushDescriptorPropertiesKHR::default(),
24620            _p: PhantomData,
24621        }
24622    }
24623
24624    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> PhysicalDevicePushDescriptorPropertiesKhrBuilder<'b> {
24625        self.raw.pNext = next;
24626        self
24627    }
24628
24629    pub fn max_push_descriptors<'m>(mut self, max_push_descriptors: u32) -> PhysicalDevicePushDescriptorPropertiesKhrBuilder<'b> {
24630        self.raw.maxPushDescriptors = max_push_descriptors.into();
24631        self
24632    }
24633
24634    pub fn get_next<'a>(&'a self) -> *mut c_void {
24635        self.raw.pNext
24636    }
24637
24638    pub fn get_max_push_descriptors<'a>(&'a self) -> u32 {
24639        self.raw.maxPushDescriptors.into()
24640    }
24641
24642    pub fn build(self) -> PhysicalDevicePushDescriptorPropertiesKhr<'b> {
24643        PhysicalDevicePushDescriptorPropertiesKhr {
24644            raw: self.raw,
24645            _p: PhantomData,
24646        }
24647    }
24648}
24649
24650
24651/// A `VkPresentRegionsKHR`.
24652///
24653/// 
24654#[derive(Debug, Clone, Default)]
24655#[repr(C)]
24656pub struct PresentRegionsKhr<'s> {
24657    raw: vks::VkPresentRegionsKHR,
24658    _p: PhantomData<&'s ()>,
24659}
24660
24661impl<'s> PresentRegionsKhr<'s> {
24662    pub fn builder<'b>() -> PresentRegionsKhrBuilder<'b> {
24663        PresentRegionsKhrBuilder::new()
24664    }
24665
24666    pub unsafe fn from_raw(raw: vks::VkPresentRegionsKHR) -> PresentRegionsKhr<'s> {
24667        PresentRegionsKhr { raw, _p: PhantomData }
24668    }
24669
24670    pub fn next<'a>(&'a self) -> *const c_void {
24671        self.raw.pNext
24672    }
24673
24674    pub fn regions<'a>(&'a self) -> &'a [PresentRegionKhr] {
24675        unsafe { slice::from_raw_parts(self.raw.pRegions as *const _, self.raw.swapchainCount as usize) }
24676    }
24677
24678    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
24679        self.raw.pNext = next;
24680    }
24681
24682    pub fn set_regions<'m, 'a>(&mut self, regions: &'a [PresentRegionKhr])
24683            where 'a: 's {
24684        assert!(self.raw.swapchainCount == 0 || self.raw.swapchainCount == regions.len() as _, 
24685            "count inconsistency found when specifying `PresentRegionsKhr::regions`.");
24686        self.raw.swapchainCount = regions.len() as _;
24687        self.raw.pRegions = regions.as_ptr() as *const vks::VkPresentRegionKHR;
24688    }
24689
24690    pub fn as_raw(&self) -> &vks::VkPresentRegionsKHR {
24691        &self.raw
24692    }
24693}
24694
24695impl<'s> From<PresentRegionsKhr<'s>> for vks::VkPresentRegionsKHR {
24696    fn from(f: PresentRegionsKhr<'s>) -> vks::VkPresentRegionsKHR {
24697        f.raw
24698    }
24699}
24700
24701
24702/// A builder for `VkPresentRegionsKHR`.
24703///
24704/// 
24705#[derive(Debug, Clone, Default)]
24706pub struct PresentRegionsKhrBuilder<'b> {
24707    raw: vks::VkPresentRegionsKHR,
24708    _p: PhantomData<&'b ()>, 
24709}
24710
24711impl<'b> PresentRegionsKhrBuilder<'b> {
24712    pub fn new() -> PresentRegionsKhrBuilder<'b> {
24713        PresentRegionsKhrBuilder {
24714            raw: vks::VkPresentRegionsKHR::default(),
24715            _p: PhantomData,
24716        }
24717    }
24718
24719    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PresentRegionsKhrBuilder<'b> {
24720        self.raw.pNext = next;
24721        self
24722    }
24723
24724    pub fn regions<'m, 'a>(mut self, regions: &'a [PresentRegionKhr]) -> PresentRegionsKhrBuilder<'b>
24725            where 'a: 'b {
24726        assert!(self.raw.swapchainCount == 0 || self.raw.swapchainCount == regions.len() as _, 
24727            "count inconsistency found when specifying `PresentRegionsKhr::regions`.");
24728        self.raw.swapchainCount = regions.len() as _;
24729        self.raw.pRegions = regions.as_ptr() as *const vks::VkPresentRegionKHR;
24730        self
24731    }
24732
24733    pub fn get_next<'a>(&'a self) -> *const c_void {
24734        self.raw.pNext
24735    }
24736
24737    pub fn get_regions<'a>(&'a self) -> &'a [PresentRegionKhr] {
24738        unsafe { slice::from_raw_parts(self.raw.pRegions as *const _, self.raw.swapchainCount as usize) }
24739    }
24740
24741    pub fn build(self) -> PresentRegionsKhr<'b> {
24742        PresentRegionsKhr {
24743            raw: self.raw,
24744            _p: PhantomData,
24745        }
24746    }
24747}
24748
24749
24750/// A `VkPresentRegionKHR`.
24751///
24752/// 
24753#[derive(Debug, Clone, Default)]
24754#[repr(C)]
24755pub struct PresentRegionKhr<'s> {
24756    raw: vks::VkPresentRegionKHR,
24757    _p: PhantomData<&'s ()>,
24758}
24759
24760impl<'s> PresentRegionKhr<'s> {
24761    pub fn builder<'b>() -> PresentRegionKhrBuilder<'b> {
24762        PresentRegionKhrBuilder::new()
24763    }
24764
24765    pub unsafe fn from_raw(raw: vks::VkPresentRegionKHR) -> PresentRegionKhr<'s> {
24766        PresentRegionKhr { raw, _p: PhantomData }
24767    }
24768
24769    pub fn rectangles<'a>(&'a self) -> &'a [RectLayerKhr] {
24770        unsafe { slice::from_raw_parts(self.raw.pRectangles as *const _, self.raw.rectangleCount as usize) }
24771    }
24772
24773    pub fn set_rectangles<'m, 'a>(&mut self, rectangles: &'a [RectLayerKhr])
24774            where 'a: 's {
24775        assert!(self.raw.rectangleCount == 0 || self.raw.rectangleCount == rectangles.len() as _, 
24776            "count inconsistency found when specifying `PresentRegionKhr::rectangles`.");
24777        self.raw.rectangleCount = rectangles.len() as _;
24778        self.raw.pRectangles = rectangles.as_ptr() as *const vks::VkRectLayerKHR;
24779    }
24780
24781    pub fn as_raw(&self) -> &vks::VkPresentRegionKHR {
24782        &self.raw
24783    }
24784}
24785
24786impl<'s> From<PresentRegionKhr<'s>> for vks::VkPresentRegionKHR {
24787    fn from(f: PresentRegionKhr<'s>) -> vks::VkPresentRegionKHR {
24788        f.raw
24789    }
24790}
24791
24792
24793/// A builder for `VkPresentRegionKHR`.
24794///
24795/// 
24796#[derive(Debug, Clone, Default)]
24797pub struct PresentRegionKhrBuilder<'b> {
24798    raw: vks::VkPresentRegionKHR,
24799    _p: PhantomData<&'b ()>, 
24800}
24801
24802impl<'b> PresentRegionKhrBuilder<'b> {
24803    pub fn new() -> PresentRegionKhrBuilder<'b> {
24804        PresentRegionKhrBuilder {
24805            raw: vks::VkPresentRegionKHR::default(),
24806            _p: PhantomData,
24807        }
24808    }
24809
24810    pub fn rectangles<'m, 'a>(mut self, rectangles: &'a [RectLayerKhr]) -> PresentRegionKhrBuilder<'b>
24811            where 'a: 'b {
24812        assert!(self.raw.rectangleCount == 0 || self.raw.rectangleCount == rectangles.len() as _, 
24813            "count inconsistency found when specifying `PresentRegionKhr::rectangles`.");
24814        self.raw.rectangleCount = rectangles.len() as _;
24815        self.raw.pRectangles = rectangles.as_ptr() as *const vks::VkRectLayerKHR;
24816        self
24817    }
24818
24819    pub fn get_rectangles<'a>(&'a self) -> &'a [RectLayerKhr] {
24820        unsafe { slice::from_raw_parts(self.raw.pRectangles as *const _, self.raw.rectangleCount as usize) }
24821    }
24822
24823    pub fn build(self) -> PresentRegionKhr<'b> {
24824        PresentRegionKhr {
24825            raw: self.raw,
24826            _p: PhantomData,
24827        }
24828    }
24829}
24830
24831
24832/// A `VkRectLayerKHR`.
24833///
24834/// 
24835#[derive(Debug, Clone, Default)]
24836#[repr(C)]
24837pub struct RectLayerKhr {
24838    raw: vks::VkRectLayerKHR,
24839}
24840
24841impl RectLayerKhr {
24842    pub fn builder() -> RectLayerKhrBuilder {
24843        RectLayerKhrBuilder::new()
24844    }
24845
24846    pub unsafe fn from_raw(raw: vks::VkRectLayerKHR) -> RectLayerKhr {
24847        RectLayerKhr { raw, }
24848    }
24849
24850    pub fn offset<'a>(&'a self) -> &'a Offset2d {
24851        unsafe { &*(&self.raw.offset as *const vks::VkOffset2D as *const Offset2d) }
24852    }
24853
24854    pub fn offset_mut<'a>(&'a mut self) -> &'a mut Offset2d {
24855        unsafe { &mut *(&mut self.raw.offset as *mut  vks::VkOffset2D as *mut Offset2d) }
24856    }
24857
24858    pub fn extent<'a>(&'a self) -> &'a Extent2d {
24859        unsafe { &*(&self.raw.extent as *const vks::VkExtent2D as *const Extent2d) }
24860    }
24861
24862    pub fn extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
24863        unsafe { &mut *(&mut self.raw.extent as *mut  vks::VkExtent2D as *mut Extent2d) }
24864    }
24865
24866    pub fn layer<'a>(&'a self) -> u32 {
24867        self.raw.layer.into()
24868    }
24869
24870    pub fn set_offset<'m>(&mut self, offset: Offset2d) {
24871        self.raw.offset = offset.raw;
24872    }
24873
24874    pub fn set_extent<'m>(&mut self, extent: Extent2d) {
24875        self.raw.extent = extent.raw;
24876    }
24877
24878    pub fn set_layer<'m>(&mut self, layer: u32) {
24879        self.raw.layer = layer.into();
24880    }
24881
24882    pub fn as_raw(&self) -> &vks::VkRectLayerKHR {
24883        &self.raw
24884    }
24885}
24886
24887impl From<RectLayerKhr> for vks::VkRectLayerKHR {
24888    fn from(f: RectLayerKhr) -> vks::VkRectLayerKHR {
24889        f.raw
24890    }
24891}
24892
24893
24894/// A builder for `VkRectLayerKHR`.
24895///
24896/// 
24897#[derive(Debug, Clone, Default)]
24898pub struct RectLayerKhrBuilder {
24899    raw: vks::VkRectLayerKHR,
24900}
24901
24902impl RectLayerKhrBuilder {
24903    pub fn new() -> RectLayerKhrBuilder {
24904        RectLayerKhrBuilder {
24905            raw: vks::VkRectLayerKHR::default(),
24906        }
24907    }
24908
24909    pub fn offset<'m>(mut self, offset: Offset2d) -> RectLayerKhrBuilder {
24910        self.raw.offset = offset.raw;
24911        self
24912    }
24913
24914    pub fn extent<'m>(mut self, extent: Extent2d) -> RectLayerKhrBuilder {
24915        self.raw.extent = extent.raw;
24916        self
24917    }
24918
24919    pub fn layer<'m>(mut self, layer: u32) -> RectLayerKhrBuilder {
24920        self.raw.layer = layer.into();
24921        self
24922    }
24923
24924    pub fn get_offset<'a>(&'a self) -> &'a Offset2d {
24925        unsafe { &*(&self.raw.offset as *const vks::VkOffset2D as *const Offset2d) }
24926    }
24927
24928    pub fn get_offset_mut<'a>(&'a mut self) -> &'a mut Offset2d {
24929        unsafe { &mut *(&mut self.raw.offset as *mut  vks::VkOffset2D as *mut Offset2d) }
24930    }
24931
24932    pub fn get_extent<'a>(&'a self) -> &'a Extent2d {
24933        unsafe { &*(&self.raw.extent as *const vks::VkExtent2D as *const Extent2d) }
24934    }
24935
24936    pub fn get_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
24937        unsafe { &mut *(&mut self.raw.extent as *mut  vks::VkExtent2D as *mut Extent2d) }
24938    }
24939
24940    pub fn get_layer<'a>(&'a self) -> u32 {
24941        self.raw.layer.into()
24942    }
24943
24944    pub fn build(self) -> RectLayerKhr {
24945        RectLayerKhr {
24946            raw: self.raw,
24947        }
24948    }
24949}
24950
24951
24952/// A `VkPhysicalDeviceVariablePointerFeaturesKHR`.
24953///
24954/// 
24955#[derive(Debug, Clone, Default)]
24956#[repr(C)]
24957pub struct PhysicalDeviceVariablePointerFeaturesKhr<'s> {
24958    raw: vks::VkPhysicalDeviceVariablePointerFeaturesKHR,
24959    _p: PhantomData<&'s ()>,
24960}
24961
24962impl<'s> PhysicalDeviceVariablePointerFeaturesKhr<'s> {
24963    pub fn builder<'b>() -> PhysicalDeviceVariablePointerFeaturesKhrBuilder<'b> {
24964        PhysicalDeviceVariablePointerFeaturesKhrBuilder::new()
24965    }
24966
24967    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceVariablePointerFeaturesKHR) -> PhysicalDeviceVariablePointerFeaturesKhr<'s> {
24968        PhysicalDeviceVariablePointerFeaturesKhr { raw, _p: PhantomData }
24969    }
24970
24971    pub fn next<'a>(&'a self) -> *mut c_void {
24972        self.raw.pNext
24973    }
24974
24975    pub fn variable_pointers_storage_buffer<'a>(&'a self) -> bool {
24976        self.raw.variablePointersStorageBuffer != 0
24977    }
24978
24979    pub fn variable_pointers<'a>(&'a self) -> bool {
24980        self.raw.variablePointers != 0
24981    }
24982
24983    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
24984        self.raw.pNext = next;
24985    }
24986
24987    pub fn set_variable_pointers_storage_buffer<'m>(&mut self, variable_pointers_storage_buffer: bool) {
24988        self.raw.variablePointersStorageBuffer = variable_pointers_storage_buffer as u32;
24989    }
24990
24991    pub fn set_variable_pointers<'m>(&mut self, variable_pointers: bool) {
24992        self.raw.variablePointers = variable_pointers as u32;
24993    }
24994
24995    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceVariablePointerFeaturesKHR {
24996        &self.raw
24997    }
24998}
24999
25000impl<'s> From<PhysicalDeviceVariablePointerFeaturesKhr<'s>> for vks::VkPhysicalDeviceVariablePointerFeaturesKHR {
25001    fn from(f: PhysicalDeviceVariablePointerFeaturesKhr<'s>) -> vks::VkPhysicalDeviceVariablePointerFeaturesKHR {
25002        f.raw
25003    }
25004}
25005
25006
25007/// A builder for `VkPhysicalDeviceVariablePointerFeaturesKHR`.
25008///
25009/// 
25010#[derive(Debug, Clone, Default)]
25011pub struct PhysicalDeviceVariablePointerFeaturesKhrBuilder<'b> {
25012    raw: vks::VkPhysicalDeviceVariablePointerFeaturesKHR,
25013    _p: PhantomData<&'b ()>, 
25014}
25015
25016impl<'b> PhysicalDeviceVariablePointerFeaturesKhrBuilder<'b> {
25017    pub fn new() -> PhysicalDeviceVariablePointerFeaturesKhrBuilder<'b> {
25018        PhysicalDeviceVariablePointerFeaturesKhrBuilder {
25019            raw: vks::VkPhysicalDeviceVariablePointerFeaturesKHR::default(),
25020            _p: PhantomData,
25021        }
25022    }
25023
25024    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> PhysicalDeviceVariablePointerFeaturesKhrBuilder<'b> {
25025        self.raw.pNext = next;
25026        self
25027    }
25028
25029    pub fn variable_pointers_storage_buffer<'m>(mut self, variable_pointers_storage_buffer: bool) -> PhysicalDeviceVariablePointerFeaturesKhrBuilder<'b> {
25030        self.raw.variablePointersStorageBuffer = variable_pointers_storage_buffer as u32;
25031        self
25032    }
25033
25034    pub fn variable_pointers<'m>(mut self, variable_pointers: bool) -> PhysicalDeviceVariablePointerFeaturesKhrBuilder<'b> {
25035        self.raw.variablePointers = variable_pointers as u32;
25036        self
25037    }
25038
25039    pub fn get_next<'a>(&'a self) -> *mut c_void {
25040        self.raw.pNext
25041    }
25042
25043    pub fn get_variable_pointers_storage_buffer<'a>(&'a self) -> bool {
25044        self.raw.variablePointersStorageBuffer != 0
25045    }
25046
25047    pub fn get_variable_pointers<'a>(&'a self) -> bool {
25048        self.raw.variablePointers != 0
25049    }
25050
25051    pub fn build(self) -> PhysicalDeviceVariablePointerFeaturesKhr<'b> {
25052        PhysicalDeviceVariablePointerFeaturesKhr {
25053            raw: self.raw,
25054            _p: PhantomData,
25055        }
25056    }
25057}
25058
25059
25060/// A `VkExternalMemoryPropertiesKHR`.
25061///
25062/// 
25063#[derive(Debug, Clone, Default)]
25064#[repr(C)]
25065pub struct ExternalMemoryPropertiesKhr {
25066    raw: vks::VkExternalMemoryPropertiesKHR,
25067}
25068
25069impl ExternalMemoryPropertiesKhr {
25070    pub fn builder() -> ExternalMemoryPropertiesKhrBuilder {
25071        ExternalMemoryPropertiesKhrBuilder::new()
25072    }
25073
25074    pub unsafe fn from_raw(raw: vks::VkExternalMemoryPropertiesKHR) -> ExternalMemoryPropertiesKhr {
25075        ExternalMemoryPropertiesKhr { raw, }
25076    }
25077
25078    pub fn external_memory_features<'a>(&'a self) -> ExternalMemoryFeatureFlagsKhr {
25079        ExternalMemoryFeatureFlagsKhr::from_bits(self.raw.externalMemoryFeatures)
25080            .expect("ExternalMemoryPropertiesKhr::external_memory_features: error converting flags")
25081    }
25082
25083    pub fn export_from_imported_handle_types<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
25084        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.exportFromImportedHandleTypes)
25085            .expect("ExternalMemoryPropertiesKhr::export_from_imported_handle_types: error converting flags")
25086    }
25087
25088    pub fn compatible_handle_types<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
25089        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.compatibleHandleTypes)
25090            .expect("ExternalMemoryPropertiesKhr::compatible_handle_types: error converting flags")
25091    }
25092
25093    pub fn set_external_memory_features<'m>(&mut self, external_memory_features: ExternalMemoryFeatureFlagsKhr) {
25094        self.raw.externalMemoryFeatures = external_memory_features.bits();
25095    }
25096
25097    pub fn set_export_from_imported_handle_types<'m>(&mut self, export_from_imported_handle_types: ExternalMemoryHandleTypeFlagsKhr) {
25098        self.raw.exportFromImportedHandleTypes = export_from_imported_handle_types.bits();
25099    }
25100
25101    pub fn set_compatible_handle_types<'m>(&mut self, compatible_handle_types: ExternalMemoryHandleTypeFlagsKhr) {
25102        self.raw.compatibleHandleTypes = compatible_handle_types.bits();
25103    }
25104
25105    pub fn as_raw(&self) -> &vks::VkExternalMemoryPropertiesKHR {
25106        &self.raw
25107    }
25108}
25109
25110impl From<ExternalMemoryPropertiesKhr> for vks::VkExternalMemoryPropertiesKHR {
25111    fn from(f: ExternalMemoryPropertiesKhr) -> vks::VkExternalMemoryPropertiesKHR {
25112        f.raw
25113    }
25114}
25115
25116
25117/// A builder for `VkExternalMemoryPropertiesKHR`.
25118///
25119/// 
25120#[derive(Debug, Clone, Default)]
25121pub struct ExternalMemoryPropertiesKhrBuilder {
25122    raw: vks::VkExternalMemoryPropertiesKHR,
25123}
25124
25125impl ExternalMemoryPropertiesKhrBuilder {
25126    pub fn new() -> ExternalMemoryPropertiesKhrBuilder {
25127        ExternalMemoryPropertiesKhrBuilder {
25128            raw: vks::VkExternalMemoryPropertiesKHR::default(),
25129        }
25130    }
25131
25132    pub fn external_memory_features<'m>(mut self, external_memory_features: ExternalMemoryFeatureFlagsKhr) -> ExternalMemoryPropertiesKhrBuilder {
25133        self.raw.externalMemoryFeatures = external_memory_features.bits();
25134        self
25135    }
25136
25137    pub fn export_from_imported_handle_types<'m>(mut self, export_from_imported_handle_types: ExternalMemoryHandleTypeFlagsKhr) -> ExternalMemoryPropertiesKhrBuilder {
25138        self.raw.exportFromImportedHandleTypes = export_from_imported_handle_types.bits();
25139        self
25140    }
25141
25142    pub fn compatible_handle_types<'m>(mut self, compatible_handle_types: ExternalMemoryHandleTypeFlagsKhr) -> ExternalMemoryPropertiesKhrBuilder {
25143        self.raw.compatibleHandleTypes = compatible_handle_types.bits();
25144        self
25145    }
25146
25147    pub fn get_external_memory_features<'a>(&'a self) -> ExternalMemoryFeatureFlagsKhr {
25148        ExternalMemoryFeatureFlagsKhr::from_bits(self.raw.externalMemoryFeatures)
25149            .expect("ExternalMemoryPropertiesKhr::external_memory_features: error converting flags")
25150    }
25151
25152    pub fn get_export_from_imported_handle_types<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
25153        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.exportFromImportedHandleTypes)
25154            .expect("ExternalMemoryPropertiesKhr::export_from_imported_handle_types: error converting flags")
25155    }
25156
25157    pub fn get_compatible_handle_types<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
25158        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.compatibleHandleTypes)
25159            .expect("ExternalMemoryPropertiesKhr::compatible_handle_types: error converting flags")
25160    }
25161
25162    pub fn build(self) -> ExternalMemoryPropertiesKhr {
25163        ExternalMemoryPropertiesKhr {
25164            raw: self.raw,
25165        }
25166    }
25167}
25168
25169
25170/// A `VkPhysicalDeviceExternalImageFormatInfoKHR`.
25171///
25172/// 
25173#[derive(Debug, Clone, Default)]
25174#[repr(C)]
25175pub struct PhysicalDeviceExternalImageFormatInfoKhr<'s> {
25176    raw: vks::VkPhysicalDeviceExternalImageFormatInfoKHR,
25177    _p: PhantomData<&'s ()>,
25178}
25179
25180impl<'s> PhysicalDeviceExternalImageFormatInfoKhr<'s> {
25181    pub fn builder<'b>() -> PhysicalDeviceExternalImageFormatInfoKhrBuilder<'b> {
25182        PhysicalDeviceExternalImageFormatInfoKhrBuilder::new()
25183    }
25184
25185    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceExternalImageFormatInfoKHR) -> PhysicalDeviceExternalImageFormatInfoKhr<'s> {
25186        PhysicalDeviceExternalImageFormatInfoKhr { raw, _p: PhantomData }
25187    }
25188
25189    pub fn next<'a>(&'a self) -> *const c_void {
25190        self.raw.pNext
25191    }
25192
25193    pub fn handle_type<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
25194        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.handleType)
25195            .expect("PhysicalDeviceExternalImageFormatInfoKhr::handle_type: error converting flags")
25196    }
25197
25198    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
25199        self.raw.pNext = next;
25200    }
25201
25202    pub fn set_handle_type<'m>(&mut self, handle_type: ExternalMemoryHandleTypeFlagsKhr) {
25203        self.raw.handleType = handle_type.bits();
25204    }
25205
25206    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceExternalImageFormatInfoKHR {
25207        &self.raw
25208    }
25209}
25210
25211impl<'s> From<PhysicalDeviceExternalImageFormatInfoKhr<'s>> for vks::VkPhysicalDeviceExternalImageFormatInfoKHR {
25212    fn from(f: PhysicalDeviceExternalImageFormatInfoKhr<'s>) -> vks::VkPhysicalDeviceExternalImageFormatInfoKHR {
25213        f.raw
25214    }
25215}
25216
25217
25218/// A builder for `VkPhysicalDeviceExternalImageFormatInfoKHR`.
25219///
25220/// 
25221#[derive(Debug, Clone, Default)]
25222pub struct PhysicalDeviceExternalImageFormatInfoKhrBuilder<'b> {
25223    raw: vks::VkPhysicalDeviceExternalImageFormatInfoKHR,
25224    _p: PhantomData<&'b ()>, 
25225}
25226
25227impl<'b> PhysicalDeviceExternalImageFormatInfoKhrBuilder<'b> {
25228    pub fn new() -> PhysicalDeviceExternalImageFormatInfoKhrBuilder<'b> {
25229        PhysicalDeviceExternalImageFormatInfoKhrBuilder {
25230            raw: vks::VkPhysicalDeviceExternalImageFormatInfoKHR::default(),
25231            _p: PhantomData,
25232        }
25233    }
25234
25235    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PhysicalDeviceExternalImageFormatInfoKhrBuilder<'b> {
25236        self.raw.pNext = next;
25237        self
25238    }
25239
25240    pub fn handle_type<'m>(mut self, handle_type: ExternalMemoryHandleTypeFlagsKhr) -> PhysicalDeviceExternalImageFormatInfoKhrBuilder<'b> {
25241        self.raw.handleType = handle_type.bits();
25242        self
25243    }
25244
25245    pub fn get_next<'a>(&'a self) -> *const c_void {
25246        self.raw.pNext
25247    }
25248
25249    pub fn get_handle_type<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
25250        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.handleType)
25251            .expect("PhysicalDeviceExternalImageFormatInfoKhr::handle_type: error converting flags")
25252    }
25253
25254    pub fn build(self) -> PhysicalDeviceExternalImageFormatInfoKhr<'b> {
25255        PhysicalDeviceExternalImageFormatInfoKhr {
25256            raw: self.raw,
25257            _p: PhantomData,
25258        }
25259    }
25260}
25261
25262
25263/// A `VkExternalImageFormatPropertiesKHR`.
25264///
25265/// 
25266#[derive(Debug, Clone, Default)]
25267#[repr(C)]
25268pub struct ExternalImageFormatPropertiesKhr<'s> {
25269    raw: vks::VkExternalImageFormatPropertiesKHR,
25270    _p: PhantomData<&'s ()>,
25271}
25272
25273impl<'s> ExternalImageFormatPropertiesKhr<'s> {
25274    pub fn builder<'b>() -> ExternalImageFormatPropertiesKhrBuilder<'b> {
25275        ExternalImageFormatPropertiesKhrBuilder::new()
25276    }
25277
25278    pub unsafe fn from_raw(raw: vks::VkExternalImageFormatPropertiesKHR) -> ExternalImageFormatPropertiesKhr<'s> {
25279        ExternalImageFormatPropertiesKhr { raw, _p: PhantomData }
25280    }
25281
25282    pub fn next<'a>(&'a self) -> *mut c_void {
25283        self.raw.pNext
25284    }
25285
25286    pub fn external_memory_properties<'a>(&'a self) -> &'a ExternalMemoryPropertiesKhr {
25287        unsafe { &*(&self.raw.externalMemoryProperties as *const vks::VkExternalMemoryPropertiesKHR as *const ExternalMemoryPropertiesKhr) }
25288    }
25289
25290    pub fn external_memory_properties_mut<'a>(&'a mut self) -> &'a mut ExternalMemoryPropertiesKhr {
25291        unsafe { &mut *(&mut self.raw.externalMemoryProperties as *mut  vks::VkExternalMemoryPropertiesKHR as *mut ExternalMemoryPropertiesKhr) }
25292    }
25293
25294    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
25295        self.raw.pNext = next;
25296    }
25297
25298    pub fn set_external_memory_properties<'m>(&mut self, external_memory_properties: ExternalMemoryPropertiesKhr) {
25299        self.raw.externalMemoryProperties = external_memory_properties.raw;
25300    }
25301
25302    pub fn as_raw(&self) -> &vks::VkExternalImageFormatPropertiesKHR {
25303        &self.raw
25304    }
25305}
25306
25307impl<'s> From<ExternalImageFormatPropertiesKhr<'s>> for vks::VkExternalImageFormatPropertiesKHR {
25308    fn from(f: ExternalImageFormatPropertiesKhr<'s>) -> vks::VkExternalImageFormatPropertiesKHR {
25309        f.raw
25310    }
25311}
25312
25313
25314/// A builder for `VkExternalImageFormatPropertiesKHR`.
25315///
25316/// 
25317#[derive(Debug, Clone, Default)]
25318pub struct ExternalImageFormatPropertiesKhrBuilder<'b> {
25319    raw: vks::VkExternalImageFormatPropertiesKHR,
25320    _p: PhantomData<&'b ()>, 
25321}
25322
25323impl<'b> ExternalImageFormatPropertiesKhrBuilder<'b> {
25324    pub fn new() -> ExternalImageFormatPropertiesKhrBuilder<'b> {
25325        ExternalImageFormatPropertiesKhrBuilder {
25326            raw: vks::VkExternalImageFormatPropertiesKHR::default(),
25327            _p: PhantomData,
25328        }
25329    }
25330
25331    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> ExternalImageFormatPropertiesKhrBuilder<'b> {
25332        self.raw.pNext = next;
25333        self
25334    }
25335
25336    pub fn external_memory_properties<'m>(mut self, external_memory_properties: ExternalMemoryPropertiesKhr) -> ExternalImageFormatPropertiesKhrBuilder<'b> {
25337        self.raw.externalMemoryProperties = external_memory_properties.raw;
25338        self
25339    }
25340
25341    pub fn get_next<'a>(&'a self) -> *mut c_void {
25342        self.raw.pNext
25343    }
25344
25345    pub fn get_external_memory_properties<'a>(&'a self) -> &'a ExternalMemoryPropertiesKhr {
25346        unsafe { &*(&self.raw.externalMemoryProperties as *const vks::VkExternalMemoryPropertiesKHR as *const ExternalMemoryPropertiesKhr) }
25347    }
25348
25349    pub fn get_external_memory_properties_mut<'a>(&'a mut self) -> &'a mut ExternalMemoryPropertiesKhr {
25350        unsafe { &mut *(&mut self.raw.externalMemoryProperties as *mut  vks::VkExternalMemoryPropertiesKHR as *mut ExternalMemoryPropertiesKhr) }
25351    }
25352
25353    pub fn build(self) -> ExternalImageFormatPropertiesKhr<'b> {
25354        ExternalImageFormatPropertiesKhr {
25355            raw: self.raw,
25356            _p: PhantomData,
25357        }
25358    }
25359}
25360
25361
25362/// A `VkPhysicalDeviceExternalBufferInfoKHR`.
25363///
25364/// 
25365#[derive(Debug, Clone, Default)]
25366#[repr(C)]
25367pub struct PhysicalDeviceExternalBufferInfoKhr<'s> {
25368    raw: vks::VkPhysicalDeviceExternalBufferInfoKHR,
25369    _p: PhantomData<&'s ()>,
25370}
25371
25372impl<'s> PhysicalDeviceExternalBufferInfoKhr<'s> {
25373    pub fn builder<'b>() -> PhysicalDeviceExternalBufferInfoKhrBuilder<'b> {
25374        PhysicalDeviceExternalBufferInfoKhrBuilder::new()
25375    }
25376
25377    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceExternalBufferInfoKHR) -> PhysicalDeviceExternalBufferInfoKhr<'s> {
25378        PhysicalDeviceExternalBufferInfoKhr { raw, _p: PhantomData }
25379    }
25380
25381    pub fn next<'a>(&'a self) -> *const c_void {
25382        self.raw.pNext
25383    }
25384
25385    pub fn flags<'a>(&'a self) -> BufferCreateFlags {
25386        BufferCreateFlags::from_bits(self.raw.flags)
25387            .expect("PhysicalDeviceExternalBufferInfoKhr::flags: error converting flags")
25388    }
25389
25390    pub fn usage<'a>(&'a self) -> BufferUsageFlags {
25391        BufferUsageFlags::from_bits(self.raw.usage)
25392            .expect("PhysicalDeviceExternalBufferInfoKhr::usage: error converting flags")
25393    }
25394
25395    pub fn handle_type<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
25396        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.handleType)
25397            .expect("PhysicalDeviceExternalBufferInfoKhr::handle_type: error converting flags")
25398    }
25399
25400    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
25401        self.raw.pNext = next;
25402    }
25403
25404    pub fn set_flags<'m>(&mut self, flags: BufferCreateFlags) {
25405        self.raw.flags = flags.bits();
25406    }
25407
25408    pub fn set_usage<'m>(&mut self, usage: BufferUsageFlags) {
25409        self.raw.usage = usage.bits();
25410    }
25411
25412    pub fn set_handle_type<'m>(&mut self, handle_type: ExternalMemoryHandleTypeFlagsKhr) {
25413        self.raw.handleType = handle_type.bits();
25414    }
25415
25416    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceExternalBufferInfoKHR {
25417        &self.raw
25418    }
25419}
25420
25421impl<'s> From<PhysicalDeviceExternalBufferInfoKhr<'s>> for vks::VkPhysicalDeviceExternalBufferInfoKHR {
25422    fn from(f: PhysicalDeviceExternalBufferInfoKhr<'s>) -> vks::VkPhysicalDeviceExternalBufferInfoKHR {
25423        f.raw
25424    }
25425}
25426
25427
25428/// A builder for `VkPhysicalDeviceExternalBufferInfoKHR`.
25429///
25430/// 
25431#[derive(Debug, Clone, Default)]
25432pub struct PhysicalDeviceExternalBufferInfoKhrBuilder<'b> {
25433    raw: vks::VkPhysicalDeviceExternalBufferInfoKHR,
25434    _p: PhantomData<&'b ()>, 
25435}
25436
25437impl<'b> PhysicalDeviceExternalBufferInfoKhrBuilder<'b> {
25438    pub fn new() -> PhysicalDeviceExternalBufferInfoKhrBuilder<'b> {
25439        PhysicalDeviceExternalBufferInfoKhrBuilder {
25440            raw: vks::VkPhysicalDeviceExternalBufferInfoKHR::default(),
25441            _p: PhantomData,
25442        }
25443    }
25444
25445    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PhysicalDeviceExternalBufferInfoKhrBuilder<'b> {
25446        self.raw.pNext = next;
25447        self
25448    }
25449
25450    pub fn flags<'m>(mut self, flags: BufferCreateFlags) -> PhysicalDeviceExternalBufferInfoKhrBuilder<'b> {
25451        self.raw.flags = flags.bits();
25452        self
25453    }
25454
25455    pub fn usage<'m>(mut self, usage: BufferUsageFlags) -> PhysicalDeviceExternalBufferInfoKhrBuilder<'b> {
25456        self.raw.usage = usage.bits();
25457        self
25458    }
25459
25460    pub fn handle_type<'m>(mut self, handle_type: ExternalMemoryHandleTypeFlagsKhr) -> PhysicalDeviceExternalBufferInfoKhrBuilder<'b> {
25461        self.raw.handleType = handle_type.bits();
25462        self
25463    }
25464
25465    pub fn get_next<'a>(&'a self) -> *const c_void {
25466        self.raw.pNext
25467    }
25468
25469    pub fn get_flags<'a>(&'a self) -> BufferCreateFlags {
25470        BufferCreateFlags::from_bits(self.raw.flags)
25471            .expect("PhysicalDeviceExternalBufferInfoKhr::flags: error converting flags")
25472    }
25473
25474    pub fn get_usage<'a>(&'a self) -> BufferUsageFlags {
25475        BufferUsageFlags::from_bits(self.raw.usage)
25476            .expect("PhysicalDeviceExternalBufferInfoKhr::usage: error converting flags")
25477    }
25478
25479    pub fn get_handle_type<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
25480        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.handleType)
25481            .expect("PhysicalDeviceExternalBufferInfoKhr::handle_type: error converting flags")
25482    }
25483
25484    pub fn build(self) -> PhysicalDeviceExternalBufferInfoKhr<'b> {
25485        PhysicalDeviceExternalBufferInfoKhr {
25486            raw: self.raw,
25487            _p: PhantomData,
25488        }
25489    }
25490}
25491
25492
25493/// A `VkExternalBufferPropertiesKHR`.
25494///
25495/// 
25496#[derive(Debug, Clone, Default)]
25497#[repr(C)]
25498pub struct ExternalBufferPropertiesKhr<'s> {
25499    raw: vks::VkExternalBufferPropertiesKHR,
25500    _p: PhantomData<&'s ()>,
25501}
25502
25503impl<'s> ExternalBufferPropertiesKhr<'s> {
25504    pub fn builder<'b>() -> ExternalBufferPropertiesKhrBuilder<'b> {
25505        ExternalBufferPropertiesKhrBuilder::new()
25506    }
25507
25508    pub unsafe fn from_raw(raw: vks::VkExternalBufferPropertiesKHR) -> ExternalBufferPropertiesKhr<'s> {
25509        ExternalBufferPropertiesKhr { raw, _p: PhantomData }
25510    }
25511
25512    pub fn next<'a>(&'a self) -> *mut c_void {
25513        self.raw.pNext
25514    }
25515
25516    pub fn external_memory_properties<'a>(&'a self) -> &'a ExternalMemoryPropertiesKhr {
25517        unsafe { &*(&self.raw.externalMemoryProperties as *const vks::VkExternalMemoryPropertiesKHR as *const ExternalMemoryPropertiesKhr) }
25518    }
25519
25520    pub fn external_memory_properties_mut<'a>(&'a mut self) -> &'a mut ExternalMemoryPropertiesKhr {
25521        unsafe { &mut *(&mut self.raw.externalMemoryProperties as *mut  vks::VkExternalMemoryPropertiesKHR as *mut ExternalMemoryPropertiesKhr) }
25522    }
25523
25524    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
25525        self.raw.pNext = next;
25526    }
25527
25528    pub fn set_external_memory_properties<'m>(&mut self, external_memory_properties: ExternalMemoryPropertiesKhr) {
25529        self.raw.externalMemoryProperties = external_memory_properties.raw;
25530    }
25531
25532    pub fn as_raw(&self) -> &vks::VkExternalBufferPropertiesKHR {
25533        &self.raw
25534    }
25535}
25536
25537impl<'s> From<ExternalBufferPropertiesKhr<'s>> for vks::VkExternalBufferPropertiesKHR {
25538    fn from(f: ExternalBufferPropertiesKhr<'s>) -> vks::VkExternalBufferPropertiesKHR {
25539        f.raw
25540    }
25541}
25542
25543
25544/// A builder for `VkExternalBufferPropertiesKHR`.
25545///
25546/// 
25547#[derive(Debug, Clone, Default)]
25548pub struct ExternalBufferPropertiesKhrBuilder<'b> {
25549    raw: vks::VkExternalBufferPropertiesKHR,
25550    _p: PhantomData<&'b ()>, 
25551}
25552
25553impl<'b> ExternalBufferPropertiesKhrBuilder<'b> {
25554    pub fn new() -> ExternalBufferPropertiesKhrBuilder<'b> {
25555        ExternalBufferPropertiesKhrBuilder {
25556            raw: vks::VkExternalBufferPropertiesKHR::default(),
25557            _p: PhantomData,
25558        }
25559    }
25560
25561    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> ExternalBufferPropertiesKhrBuilder<'b> {
25562        self.raw.pNext = next;
25563        self
25564    }
25565
25566    pub fn external_memory_properties<'m>(mut self, external_memory_properties: ExternalMemoryPropertiesKhr) -> ExternalBufferPropertiesKhrBuilder<'b> {
25567        self.raw.externalMemoryProperties = external_memory_properties.raw;
25568        self
25569    }
25570
25571    pub fn get_next<'a>(&'a self) -> *mut c_void {
25572        self.raw.pNext
25573    }
25574
25575    pub fn get_external_memory_properties<'a>(&'a self) -> &'a ExternalMemoryPropertiesKhr {
25576        unsafe { &*(&self.raw.externalMemoryProperties as *const vks::VkExternalMemoryPropertiesKHR as *const ExternalMemoryPropertiesKhr) }
25577    }
25578
25579    pub fn get_external_memory_properties_mut<'a>(&'a mut self) -> &'a mut ExternalMemoryPropertiesKhr {
25580        unsafe { &mut *(&mut self.raw.externalMemoryProperties as *mut  vks::VkExternalMemoryPropertiesKHR as *mut ExternalMemoryPropertiesKhr) }
25581    }
25582
25583    pub fn build(self) -> ExternalBufferPropertiesKhr<'b> {
25584        ExternalBufferPropertiesKhr {
25585            raw: self.raw,
25586            _p: PhantomData,
25587        }
25588    }
25589}
25590
25591
25592/// A `VkPhysicalDeviceIDPropertiesKHR`.
25593///
25594/// 
25595#[derive(Debug, Clone, Default)]
25596#[repr(C)]
25597pub struct PhysicalDeviceIDPropertiesKhr<'s> {
25598    raw: vks::VkPhysicalDeviceIDPropertiesKHR,
25599    _p: PhantomData<&'s ()>,
25600}
25601
25602impl<'s> PhysicalDeviceIDPropertiesKhr<'s> {
25603    pub fn builder<'b>() -> PhysicalDeviceIDPropertiesKhrBuilder<'b> {
25604        PhysicalDeviceIDPropertiesKhrBuilder::new()
25605    }
25606
25607    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceIDPropertiesKHR) -> PhysicalDeviceIDPropertiesKhr<'s> {
25608        PhysicalDeviceIDPropertiesKhr { raw, _p: PhantomData }
25609    }
25610
25611    pub fn next<'a>(&'a self) -> *mut c_void {
25612        self.raw.pNext
25613    }
25614
25615    pub fn device_uuid<'a>(&'a self) -> &[u8] {
25616        unsafe { slice::from_raw_parts(&self.raw.deviceUUID as *const _, vks::VK_UUID_SIZE as usize) }
25617    }
25618
25619    pub fn driver_uuid<'a>(&'a self) -> &[u8] {
25620        unsafe { slice::from_raw_parts(&self.raw.driverUUID as *const _, vks::VK_UUID_SIZE as usize) }
25621    }
25622
25623    pub fn device_luid<'a>(&'a self) -> &[u8] {
25624        unsafe { slice::from_raw_parts(&self.raw.deviceLUID as *const _, vks::VK_LUID_SIZE_KHR as usize) }
25625    }
25626
25627    pub fn device_node_mask<'a>(&'a self) -> u32 {
25628        self.raw.deviceNodeMask.into()
25629    }
25630
25631    pub fn device_luid_valid<'a>(&'a self) -> bool {
25632        self.raw.deviceLUIDValid != 0
25633    }
25634
25635    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
25636        self.raw.pNext = next;
25637    }
25638
25639    pub fn set_device_uuid<'m>(&mut self, device_uuid: [u8; vks::VK_UUID_SIZE]) {
25640        self.raw.deviceUUID = device_uuid;
25641    }
25642
25643    pub fn set_driver_uuid<'m>(&mut self, driver_uuid: [u8; vks::VK_UUID_SIZE]) {
25644        self.raw.driverUUID = driver_uuid;
25645    }
25646
25647    pub fn set_device_luid<'m>(&mut self, device_luid: [u8; vks::VK_LUID_SIZE_KHR]) {
25648        self.raw.deviceLUID = device_luid;
25649    }
25650
25651    pub fn set_device_node_mask<'m>(&mut self, device_node_mask: u32) {
25652        self.raw.deviceNodeMask = device_node_mask.into();
25653    }
25654
25655    pub fn set_device_luid_valid<'m>(&mut self, device_luid_valid: bool) {
25656        self.raw.deviceLUIDValid = device_luid_valid as u32;
25657    }
25658
25659    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceIDPropertiesKHR {
25660        &self.raw
25661    }
25662}
25663
25664impl<'s> From<PhysicalDeviceIDPropertiesKhr<'s>> for vks::VkPhysicalDeviceIDPropertiesKHR {
25665    fn from(f: PhysicalDeviceIDPropertiesKhr<'s>) -> vks::VkPhysicalDeviceIDPropertiesKHR {
25666        f.raw
25667    }
25668}
25669
25670
25671/// A builder for `VkPhysicalDeviceIDPropertiesKHR`.
25672///
25673/// 
25674#[derive(Debug, Clone, Default)]
25675pub struct PhysicalDeviceIDPropertiesKhrBuilder<'b> {
25676    raw: vks::VkPhysicalDeviceIDPropertiesKHR,
25677    _p: PhantomData<&'b ()>, 
25678}
25679
25680impl<'b> PhysicalDeviceIDPropertiesKhrBuilder<'b> {
25681    pub fn new() -> PhysicalDeviceIDPropertiesKhrBuilder<'b> {
25682        PhysicalDeviceIDPropertiesKhrBuilder {
25683            raw: vks::VkPhysicalDeviceIDPropertiesKHR::default(),
25684            _p: PhantomData,
25685        }
25686    }
25687
25688    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> PhysicalDeviceIDPropertiesKhrBuilder<'b> {
25689        self.raw.pNext = next;
25690        self
25691    }
25692
25693    pub fn device_uuid<'m>(mut self, device_uuid: [u8; vks::VK_UUID_SIZE]) -> PhysicalDeviceIDPropertiesKhrBuilder<'b> {
25694        self.raw.deviceUUID = device_uuid;
25695        self
25696    }
25697
25698    pub fn driver_uuid<'m>(mut self, driver_uuid: [u8; vks::VK_UUID_SIZE]) -> PhysicalDeviceIDPropertiesKhrBuilder<'b> {
25699        self.raw.driverUUID = driver_uuid;
25700        self
25701    }
25702
25703    pub fn device_luid<'m>(mut self, device_luid: [u8; vks::VK_LUID_SIZE_KHR]) -> PhysicalDeviceIDPropertiesKhrBuilder<'b> {
25704        self.raw.deviceLUID = device_luid;
25705        self
25706    }
25707
25708    pub fn device_node_mask<'m>(mut self, device_node_mask: u32) -> PhysicalDeviceIDPropertiesKhrBuilder<'b> {
25709        self.raw.deviceNodeMask = device_node_mask.into();
25710        self
25711    }
25712
25713    pub fn device_luid_valid<'m>(mut self, device_luid_valid: bool) -> PhysicalDeviceIDPropertiesKhrBuilder<'b> {
25714        self.raw.deviceLUIDValid = device_luid_valid as u32;
25715        self
25716    }
25717
25718    pub fn get_next<'a>(&'a self) -> *mut c_void {
25719        self.raw.pNext
25720    }
25721
25722    pub fn get_device_uuid<'a>(&'a self) -> &[u8] {
25723        unsafe { slice::from_raw_parts(&self.raw.deviceUUID as *const _, vks::VK_UUID_SIZE as usize) }
25724    }
25725
25726    pub fn get_driver_uuid<'a>(&'a self) -> &[u8] {
25727        unsafe { slice::from_raw_parts(&self.raw.driverUUID as *const _, vks::VK_UUID_SIZE as usize) }
25728    }
25729
25730    pub fn get_device_luid<'a>(&'a self) -> &[u8] {
25731        unsafe { slice::from_raw_parts(&self.raw.deviceLUID as *const _, vks::VK_LUID_SIZE_KHR as usize) }
25732    }
25733
25734    pub fn get_device_node_mask<'a>(&'a self) -> u32 {
25735        self.raw.deviceNodeMask.into()
25736    }
25737
25738    pub fn get_device_luid_valid<'a>(&'a self) -> bool {
25739        self.raw.deviceLUIDValid != 0
25740    }
25741
25742    pub fn build(self) -> PhysicalDeviceIDPropertiesKhr<'b> {
25743        PhysicalDeviceIDPropertiesKhr {
25744            raw: self.raw,
25745            _p: PhantomData,
25746        }
25747    }
25748}
25749
25750
25751/// A `VkExternalMemoryImageCreateInfoKHR`.
25752///
25753/// 
25754#[derive(Debug, Clone, Default)]
25755#[repr(C)]
25756pub struct ExternalMemoryImageCreateInfoKhr<'s> {
25757    raw: vks::VkExternalMemoryImageCreateInfoKHR,
25758    _p: PhantomData<&'s ()>,
25759}
25760
25761impl<'s> ExternalMemoryImageCreateInfoKhr<'s> {
25762    pub fn builder<'b>() -> ExternalMemoryImageCreateInfoKhrBuilder<'b> {
25763        ExternalMemoryImageCreateInfoKhrBuilder::new()
25764    }
25765
25766    pub unsafe fn from_raw(raw: vks::VkExternalMemoryImageCreateInfoKHR) -> ExternalMemoryImageCreateInfoKhr<'s> {
25767        ExternalMemoryImageCreateInfoKhr { raw, _p: PhantomData }
25768    }
25769
25770    pub fn next<'a>(&'a self) -> *const c_void {
25771        self.raw.pNext
25772    }
25773
25774    pub fn handle_types<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
25775        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.handleTypes)
25776            .expect("ExternalMemoryImageCreateInfoKhr::handle_types: error converting flags")
25777    }
25778
25779    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
25780        self.raw.pNext = next;
25781    }
25782
25783    pub fn set_handle_types<'m>(&mut self, handle_types: ExternalMemoryHandleTypeFlagsKhr) {
25784        self.raw.handleTypes = handle_types.bits();
25785    }
25786
25787    pub fn as_raw(&self) -> &vks::VkExternalMemoryImageCreateInfoKHR {
25788        &self.raw
25789    }
25790}
25791
25792impl<'s> From<ExternalMemoryImageCreateInfoKhr<'s>> for vks::VkExternalMemoryImageCreateInfoKHR {
25793    fn from(f: ExternalMemoryImageCreateInfoKhr<'s>) -> vks::VkExternalMemoryImageCreateInfoKHR {
25794        f.raw
25795    }
25796}
25797
25798
25799/// A builder for `VkExternalMemoryImageCreateInfoKHR`.
25800///
25801/// 
25802#[derive(Debug, Clone, Default)]
25803pub struct ExternalMemoryImageCreateInfoKhrBuilder<'b> {
25804    raw: vks::VkExternalMemoryImageCreateInfoKHR,
25805    _p: PhantomData<&'b ()>, 
25806}
25807
25808impl<'b> ExternalMemoryImageCreateInfoKhrBuilder<'b> {
25809    pub fn new() -> ExternalMemoryImageCreateInfoKhrBuilder<'b> {
25810        ExternalMemoryImageCreateInfoKhrBuilder {
25811            raw: vks::VkExternalMemoryImageCreateInfoKHR::default(),
25812            _p: PhantomData,
25813        }
25814    }
25815
25816    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ExternalMemoryImageCreateInfoKhrBuilder<'b> {
25817        self.raw.pNext = next;
25818        self
25819    }
25820
25821    pub fn handle_types<'m>(mut self, handle_types: ExternalMemoryHandleTypeFlagsKhr) -> ExternalMemoryImageCreateInfoKhrBuilder<'b> {
25822        self.raw.handleTypes = handle_types.bits();
25823        self
25824    }
25825
25826    pub fn get_next<'a>(&'a self) -> *const c_void {
25827        self.raw.pNext
25828    }
25829
25830    pub fn get_handle_types<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
25831        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.handleTypes)
25832            .expect("ExternalMemoryImageCreateInfoKhr::handle_types: error converting flags")
25833    }
25834
25835    pub fn build(self) -> ExternalMemoryImageCreateInfoKhr<'b> {
25836        ExternalMemoryImageCreateInfoKhr {
25837            raw: self.raw,
25838            _p: PhantomData,
25839        }
25840    }
25841}
25842
25843
25844/// A `VkExternalMemoryBufferCreateInfoKHR`.
25845///
25846/// 
25847#[derive(Debug, Clone, Default)]
25848#[repr(C)]
25849pub struct ExternalMemoryBufferCreateInfoKhr<'s> {
25850    raw: vks::VkExternalMemoryBufferCreateInfoKHR,
25851    _p: PhantomData<&'s ()>,
25852}
25853
25854impl<'s> ExternalMemoryBufferCreateInfoKhr<'s> {
25855    pub fn builder<'b>() -> ExternalMemoryBufferCreateInfoKhrBuilder<'b> {
25856        ExternalMemoryBufferCreateInfoKhrBuilder::new()
25857    }
25858
25859    pub unsafe fn from_raw(raw: vks::VkExternalMemoryBufferCreateInfoKHR) -> ExternalMemoryBufferCreateInfoKhr<'s> {
25860        ExternalMemoryBufferCreateInfoKhr { raw, _p: PhantomData }
25861    }
25862
25863    pub fn next<'a>(&'a self) -> *const c_void {
25864        self.raw.pNext
25865    }
25866
25867    pub fn handle_types<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
25868        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.handleTypes)
25869            .expect("ExternalMemoryBufferCreateInfoKhr::handle_types: error converting flags")
25870    }
25871
25872    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
25873        self.raw.pNext = next;
25874    }
25875
25876    pub fn set_handle_types<'m>(&mut self, handle_types: ExternalMemoryHandleTypeFlagsKhr) {
25877        self.raw.handleTypes = handle_types.bits();
25878    }
25879
25880    pub fn as_raw(&self) -> &vks::VkExternalMemoryBufferCreateInfoKHR {
25881        &self.raw
25882    }
25883}
25884
25885impl<'s> From<ExternalMemoryBufferCreateInfoKhr<'s>> for vks::VkExternalMemoryBufferCreateInfoKHR {
25886    fn from(f: ExternalMemoryBufferCreateInfoKhr<'s>) -> vks::VkExternalMemoryBufferCreateInfoKHR {
25887        f.raw
25888    }
25889}
25890
25891
25892/// A builder for `VkExternalMemoryBufferCreateInfoKHR`.
25893///
25894/// 
25895#[derive(Debug, Clone, Default)]
25896pub struct ExternalMemoryBufferCreateInfoKhrBuilder<'b> {
25897    raw: vks::VkExternalMemoryBufferCreateInfoKHR,
25898    _p: PhantomData<&'b ()>, 
25899}
25900
25901impl<'b> ExternalMemoryBufferCreateInfoKhrBuilder<'b> {
25902    pub fn new() -> ExternalMemoryBufferCreateInfoKhrBuilder<'b> {
25903        ExternalMemoryBufferCreateInfoKhrBuilder {
25904            raw: vks::VkExternalMemoryBufferCreateInfoKHR::default(),
25905            _p: PhantomData,
25906        }
25907    }
25908
25909    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ExternalMemoryBufferCreateInfoKhrBuilder<'b> {
25910        self.raw.pNext = next;
25911        self
25912    }
25913
25914    pub fn handle_types<'m>(mut self, handle_types: ExternalMemoryHandleTypeFlagsKhr) -> ExternalMemoryBufferCreateInfoKhrBuilder<'b> {
25915        self.raw.handleTypes = handle_types.bits();
25916        self
25917    }
25918
25919    pub fn get_next<'a>(&'a self) -> *const c_void {
25920        self.raw.pNext
25921    }
25922
25923    pub fn get_handle_types<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
25924        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.handleTypes)
25925            .expect("ExternalMemoryBufferCreateInfoKhr::handle_types: error converting flags")
25926    }
25927
25928    pub fn build(self) -> ExternalMemoryBufferCreateInfoKhr<'b> {
25929        ExternalMemoryBufferCreateInfoKhr {
25930            raw: self.raw,
25931            _p: PhantomData,
25932        }
25933    }
25934}
25935
25936
25937/// A `VkExportMemoryAllocateInfoKHR`.
25938///
25939/// 
25940#[derive(Debug, Clone, Default)]
25941#[repr(C)]
25942pub struct ExportMemoryAllocateInfoKhr<'s> {
25943    raw: vks::VkExportMemoryAllocateInfoKHR,
25944    _p: PhantomData<&'s ()>,
25945}
25946
25947impl<'s> ExportMemoryAllocateInfoKhr<'s> {
25948    pub fn builder<'b>() -> ExportMemoryAllocateInfoKhrBuilder<'b> {
25949        ExportMemoryAllocateInfoKhrBuilder::new()
25950    }
25951
25952    pub unsafe fn from_raw(raw: vks::VkExportMemoryAllocateInfoKHR) -> ExportMemoryAllocateInfoKhr<'s> {
25953        ExportMemoryAllocateInfoKhr { raw, _p: PhantomData }
25954    }
25955
25956    pub fn next<'a>(&'a self) -> *const c_void {
25957        self.raw.pNext
25958    }
25959
25960    pub fn handle_types<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
25961        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.handleTypes)
25962            .expect("ExportMemoryAllocateInfoKhr::handle_types: error converting flags")
25963    }
25964
25965    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
25966        self.raw.pNext = next;
25967    }
25968
25969    pub fn set_handle_types<'m>(&mut self, handle_types: ExternalMemoryHandleTypeFlagsKhr) {
25970        self.raw.handleTypes = handle_types.bits();
25971    }
25972
25973    pub fn as_raw(&self) -> &vks::VkExportMemoryAllocateInfoKHR {
25974        &self.raw
25975    }
25976}
25977
25978impl<'s> From<ExportMemoryAllocateInfoKhr<'s>> for vks::VkExportMemoryAllocateInfoKHR {
25979    fn from(f: ExportMemoryAllocateInfoKhr<'s>) -> vks::VkExportMemoryAllocateInfoKHR {
25980        f.raw
25981    }
25982}
25983
25984
25985/// A builder for `VkExportMemoryAllocateInfoKHR`.
25986///
25987/// 
25988#[derive(Debug, Clone, Default)]
25989pub struct ExportMemoryAllocateInfoKhrBuilder<'b> {
25990    raw: vks::VkExportMemoryAllocateInfoKHR,
25991    _p: PhantomData<&'b ()>, 
25992}
25993
25994impl<'b> ExportMemoryAllocateInfoKhrBuilder<'b> {
25995    pub fn new() -> ExportMemoryAllocateInfoKhrBuilder<'b> {
25996        ExportMemoryAllocateInfoKhrBuilder {
25997            raw: vks::VkExportMemoryAllocateInfoKHR::default(),
25998            _p: PhantomData,
25999        }
26000    }
26001
26002    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ExportMemoryAllocateInfoKhrBuilder<'b> {
26003        self.raw.pNext = next;
26004        self
26005    }
26006
26007    pub fn handle_types<'m>(mut self, handle_types: ExternalMemoryHandleTypeFlagsKhr) -> ExportMemoryAllocateInfoKhrBuilder<'b> {
26008        self.raw.handleTypes = handle_types.bits();
26009        self
26010    }
26011
26012    pub fn get_next<'a>(&'a self) -> *const c_void {
26013        self.raw.pNext
26014    }
26015
26016    pub fn get_handle_types<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
26017        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.handleTypes)
26018            .expect("ExportMemoryAllocateInfoKhr::handle_types: error converting flags")
26019    }
26020
26021    pub fn build(self) -> ExportMemoryAllocateInfoKhr<'b> {
26022        ExportMemoryAllocateInfoKhr {
26023            raw: self.raw,
26024            _p: PhantomData,
26025        }
26026    }
26027}
26028
26029
26030/// A `VkImportMemoryWin32HandleInfoKHR`.
26031///
26032/// 
26033#[derive(Debug, Clone, Default)]
26034#[repr(C)]
26035pub struct ImportMemoryWin32HandleInfoKhr<'s> {
26036    raw: vks::VkImportMemoryWin32HandleInfoKHR,
26037    _p: PhantomData<&'s ()>,
26038}
26039
26040impl<'s> ImportMemoryWin32HandleInfoKhr<'s> {
26041    pub fn builder<'b>() -> ImportMemoryWin32HandleInfoKhrBuilder<'b> {
26042        ImportMemoryWin32HandleInfoKhrBuilder::new()
26043    }
26044
26045    pub unsafe fn from_raw(raw: vks::VkImportMemoryWin32HandleInfoKHR) -> ImportMemoryWin32HandleInfoKhr<'s> {
26046        ImportMemoryWin32HandleInfoKhr { raw, _p: PhantomData }
26047    }
26048
26049    pub fn next<'a>(&'a self) -> *const c_void {
26050        self.raw.pNext
26051    }
26052
26053    pub fn handle_type<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
26054        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.handleType)
26055            .expect("ImportMemoryWin32HandleInfoKhr::handle_type: error converting flags")
26056    }
26057
26058    pub fn handle<'a>(&'a self) -> HANDLE {
26059        self.raw.handle.into()
26060    }
26061
26062    pub fn name<'a>(&'a self) -> LPCWSTR {
26063        self.raw.name.into()
26064    }
26065
26066    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
26067        self.raw.pNext = next;
26068    }
26069
26070    pub fn set_handle_type<'m>(&mut self, handle_type: ExternalMemoryHandleTypeFlagsKhr) {
26071        self.raw.handleType = handle_type.bits();
26072    }
26073
26074    pub fn set_handle<'m>(&mut self, handle: HANDLE) {
26075        self.raw.handle = handle.into();
26076    }
26077
26078    pub fn set_name<'m>(&mut self, name: LPCWSTR) {
26079        self.raw.name = name.into();
26080    }
26081
26082    pub fn as_raw(&self) -> &vks::VkImportMemoryWin32HandleInfoKHR {
26083        &self.raw
26084    }
26085}
26086
26087impl<'s> From<ImportMemoryWin32HandleInfoKhr<'s>> for vks::VkImportMemoryWin32HandleInfoKHR {
26088    fn from(f: ImportMemoryWin32HandleInfoKhr<'s>) -> vks::VkImportMemoryWin32HandleInfoKHR {
26089        f.raw
26090    }
26091}
26092
26093
26094/// A builder for `VkImportMemoryWin32HandleInfoKHR`.
26095///
26096/// 
26097#[derive(Debug, Clone, Default)]
26098pub struct ImportMemoryWin32HandleInfoKhrBuilder<'b> {
26099    raw: vks::VkImportMemoryWin32HandleInfoKHR,
26100    _p: PhantomData<&'b ()>, 
26101}
26102
26103impl<'b> ImportMemoryWin32HandleInfoKhrBuilder<'b> {
26104    pub fn new() -> ImportMemoryWin32HandleInfoKhrBuilder<'b> {
26105        ImportMemoryWin32HandleInfoKhrBuilder {
26106            raw: vks::VkImportMemoryWin32HandleInfoKHR::default(),
26107            _p: PhantomData,
26108        }
26109    }
26110
26111    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ImportMemoryWin32HandleInfoKhrBuilder<'b> {
26112        self.raw.pNext = next;
26113        self
26114    }
26115
26116    pub fn handle_type<'m>(mut self, handle_type: ExternalMemoryHandleTypeFlagsKhr) -> ImportMemoryWin32HandleInfoKhrBuilder<'b> {
26117        self.raw.handleType = handle_type.bits();
26118        self
26119    }
26120
26121    pub fn handle<'m>(mut self, handle: HANDLE) -> ImportMemoryWin32HandleInfoKhrBuilder<'b> {
26122        self.raw.handle = handle.into();
26123        self
26124    }
26125
26126    pub fn name<'m>(mut self, name: LPCWSTR) -> ImportMemoryWin32HandleInfoKhrBuilder<'b> {
26127        self.raw.name = name.into();
26128        self
26129    }
26130
26131    pub fn get_next<'a>(&'a self) -> *const c_void {
26132        self.raw.pNext
26133    }
26134
26135    pub fn get_handle_type<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
26136        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.handleType)
26137            .expect("ImportMemoryWin32HandleInfoKhr::handle_type: error converting flags")
26138    }
26139
26140    pub fn get_handle<'a>(&'a self) -> HANDLE {
26141        self.raw.handle.into()
26142    }
26143
26144    pub fn get_name<'a>(&'a self) -> LPCWSTR {
26145        self.raw.name.into()
26146    }
26147
26148    pub fn build(self) -> ImportMemoryWin32HandleInfoKhr<'b> {
26149        ImportMemoryWin32HandleInfoKhr {
26150            raw: self.raw,
26151            _p: PhantomData,
26152        }
26153    }
26154}
26155
26156
26157/// A `VkExportMemoryWin32HandleInfoKHR`.
26158///
26159/// 
26160#[derive(Debug, Clone, Default)]
26161#[repr(C)]
26162pub struct ExportMemoryWin32HandleInfoKhr<'s> {
26163    raw: vks::VkExportMemoryWin32HandleInfoKHR,
26164    _p: PhantomData<&'s ()>,
26165}
26166
26167impl<'s> ExportMemoryWin32HandleInfoKhr<'s> {
26168    pub fn builder<'b>() -> ExportMemoryWin32HandleInfoKhrBuilder<'b> {
26169        ExportMemoryWin32HandleInfoKhrBuilder::new()
26170    }
26171
26172    pub unsafe fn from_raw(raw: vks::VkExportMemoryWin32HandleInfoKHR) -> ExportMemoryWin32HandleInfoKhr<'s> {
26173        ExportMemoryWin32HandleInfoKhr { raw, _p: PhantomData }
26174    }
26175
26176    pub fn next<'a>(&'a self) -> *const c_void {
26177        self.raw.pNext
26178    }
26179
26180    pub fn attributes<'a>(&'a self) -> &'a SECURITY_ATTRIBUTES {
26181        unsafe { &*(self.raw.pAttributes as *const _) }
26182    }
26183
26184    pub fn dw_access<'a>(&'a self) -> DWORD {
26185        self.raw.dwAccess.into()
26186    }
26187
26188    pub fn name<'a>(&'a self) -> LPCWSTR {
26189        self.raw.name.into()
26190    }
26191
26192    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
26193        self.raw.pNext = next;
26194    }
26195
26196    pub fn set_attributes<'m, 'a>(&mut self, attributes: &'a SECURITY_ATTRIBUTES) {
26197        self.raw.pAttributes = attributes;
26198    }
26199
26200    pub fn set_dw_access<'m>(&mut self, dw_access: DWORD) {
26201        self.raw.dwAccess = dw_access.into();
26202    }
26203
26204    pub fn set_name<'m>(&mut self, name: LPCWSTR) {
26205        self.raw.name = name.into();
26206    }
26207
26208    pub fn as_raw(&self) -> &vks::VkExportMemoryWin32HandleInfoKHR {
26209        &self.raw
26210    }
26211}
26212
26213impl<'s> From<ExportMemoryWin32HandleInfoKhr<'s>> for vks::VkExportMemoryWin32HandleInfoKHR {
26214    fn from(f: ExportMemoryWin32HandleInfoKhr<'s>) -> vks::VkExportMemoryWin32HandleInfoKHR {
26215        f.raw
26216    }
26217}
26218
26219
26220/// A builder for `VkExportMemoryWin32HandleInfoKHR`.
26221///
26222/// 
26223#[derive(Debug, Clone, Default)]
26224pub struct ExportMemoryWin32HandleInfoKhrBuilder<'b> {
26225    raw: vks::VkExportMemoryWin32HandleInfoKHR,
26226    _p: PhantomData<&'b ()>, 
26227}
26228
26229impl<'b> ExportMemoryWin32HandleInfoKhrBuilder<'b> {
26230    pub fn new() -> ExportMemoryWin32HandleInfoKhrBuilder<'b> {
26231        ExportMemoryWin32HandleInfoKhrBuilder {
26232            raw: vks::VkExportMemoryWin32HandleInfoKHR::default(),
26233            _p: PhantomData,
26234        }
26235    }
26236
26237    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ExportMemoryWin32HandleInfoKhrBuilder<'b> {
26238        self.raw.pNext = next;
26239        self
26240    }
26241
26242    pub fn attributes<'m, 'a>(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> ExportMemoryWin32HandleInfoKhrBuilder<'b> {
26243        self.raw.pAttributes = attributes;
26244        self
26245    }
26246
26247    pub fn dw_access<'m>(mut self, dw_access: DWORD) -> ExportMemoryWin32HandleInfoKhrBuilder<'b> {
26248        self.raw.dwAccess = dw_access.into();
26249        self
26250    }
26251
26252    pub fn name<'m>(mut self, name: LPCWSTR) -> ExportMemoryWin32HandleInfoKhrBuilder<'b> {
26253        self.raw.name = name.into();
26254        self
26255    }
26256
26257    pub fn get_next<'a>(&'a self) -> *const c_void {
26258        self.raw.pNext
26259    }
26260
26261    pub fn get_attributes<'a>(&'a self) -> &'a SECURITY_ATTRIBUTES {
26262        unsafe { &*(self.raw.pAttributes as *const _) }
26263    }
26264
26265    pub fn get_dw_access<'a>(&'a self) -> DWORD {
26266        self.raw.dwAccess.into()
26267    }
26268
26269    pub fn get_name<'a>(&'a self) -> LPCWSTR {
26270        self.raw.name.into()
26271    }
26272
26273    pub fn build(self) -> ExportMemoryWin32HandleInfoKhr<'b> {
26274        ExportMemoryWin32HandleInfoKhr {
26275            raw: self.raw,
26276            _p: PhantomData,
26277        }
26278    }
26279}
26280
26281
26282/// A `VkMemoryWin32HandlePropertiesKHR`.
26283///
26284/// 
26285#[derive(Debug, Clone, Default)]
26286#[repr(C)]
26287pub struct MemoryWin32HandlePropertiesKhr<'s> {
26288    raw: vks::VkMemoryWin32HandlePropertiesKHR,
26289    _p: PhantomData<&'s ()>,
26290}
26291
26292impl<'s> MemoryWin32HandlePropertiesKhr<'s> {
26293    pub fn builder<'b>() -> MemoryWin32HandlePropertiesKhrBuilder<'b> {
26294        MemoryWin32HandlePropertiesKhrBuilder::new()
26295    }
26296
26297    pub unsafe fn from_raw(raw: vks::VkMemoryWin32HandlePropertiesKHR) -> MemoryWin32HandlePropertiesKhr<'s> {
26298        MemoryWin32HandlePropertiesKhr { raw, _p: PhantomData }
26299    }
26300
26301    pub fn next<'a>(&'a self) -> *mut c_void {
26302        self.raw.pNext
26303    }
26304
26305    pub fn memory_type_bits<'a>(&'a self) -> u32 {
26306        self.raw.memoryTypeBits.into()
26307    }
26308
26309    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
26310        self.raw.pNext = next;
26311    }
26312
26313    pub fn set_memory_type_bits<'m>(&mut self, memory_type_bits: u32) {
26314        self.raw.memoryTypeBits = memory_type_bits.into();
26315    }
26316
26317    pub fn as_raw(&self) -> &vks::VkMemoryWin32HandlePropertiesKHR {
26318        &self.raw
26319    }
26320}
26321
26322impl<'s> From<MemoryWin32HandlePropertiesKhr<'s>> for vks::VkMemoryWin32HandlePropertiesKHR {
26323    fn from(f: MemoryWin32HandlePropertiesKhr<'s>) -> vks::VkMemoryWin32HandlePropertiesKHR {
26324        f.raw
26325    }
26326}
26327
26328
26329/// A builder for `VkMemoryWin32HandlePropertiesKHR`.
26330///
26331/// 
26332#[derive(Debug, Clone, Default)]
26333pub struct MemoryWin32HandlePropertiesKhrBuilder<'b> {
26334    raw: vks::VkMemoryWin32HandlePropertiesKHR,
26335    _p: PhantomData<&'b ()>, 
26336}
26337
26338impl<'b> MemoryWin32HandlePropertiesKhrBuilder<'b> {
26339    pub fn new() -> MemoryWin32HandlePropertiesKhrBuilder<'b> {
26340        MemoryWin32HandlePropertiesKhrBuilder {
26341            raw: vks::VkMemoryWin32HandlePropertiesKHR::default(),
26342            _p: PhantomData,
26343        }
26344    }
26345
26346    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> MemoryWin32HandlePropertiesKhrBuilder<'b> {
26347        self.raw.pNext = next;
26348        self
26349    }
26350
26351    pub fn memory_type_bits<'m>(mut self, memory_type_bits: u32) -> MemoryWin32HandlePropertiesKhrBuilder<'b> {
26352        self.raw.memoryTypeBits = memory_type_bits.into();
26353        self
26354    }
26355
26356    pub fn get_next<'a>(&'a self) -> *mut c_void {
26357        self.raw.pNext
26358    }
26359
26360    pub fn get_memory_type_bits<'a>(&'a self) -> u32 {
26361        self.raw.memoryTypeBits.into()
26362    }
26363
26364    pub fn build(self) -> MemoryWin32HandlePropertiesKhr<'b> {
26365        MemoryWin32HandlePropertiesKhr {
26366            raw: self.raw,
26367            _p: PhantomData,
26368        }
26369    }
26370}
26371
26372
26373/// A `VkMemoryGetWin32HandleInfoKHR`.
26374///
26375/// 
26376#[derive(Debug, Clone, Default)]
26377#[repr(C)]
26378pub struct MemoryGetWin32HandleInfoKhr<'s> {
26379    raw: vks::VkMemoryGetWin32HandleInfoKHR,
26380    _p: PhantomData<&'s ()>,
26381}
26382
26383impl<'s> MemoryGetWin32HandleInfoKhr<'s> {
26384    pub fn builder<'b>() -> MemoryGetWin32HandleInfoKhrBuilder<'b> {
26385        MemoryGetWin32HandleInfoKhrBuilder::new()
26386    }
26387
26388    pub unsafe fn from_raw(raw: vks::VkMemoryGetWin32HandleInfoKHR) -> MemoryGetWin32HandleInfoKhr<'s> {
26389        MemoryGetWin32HandleInfoKhr { raw, _p: PhantomData }
26390    }
26391
26392    pub fn next<'a>(&'a self) -> *const c_void {
26393        self.raw.pNext
26394    }
26395
26396    pub fn memory<'a>(&'a self) -> vks::VkDeviceMemory {
26397        self.raw.memory
26398    }
26399
26400    pub fn handle_type<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
26401        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.handleType)
26402            .expect("MemoryGetWin32HandleInfoKhr::handle_type: error converting flags")
26403    }
26404
26405    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
26406        self.raw.pNext = next;
26407    }
26408
26409    pub fn set_memory<'m, H>(&mut self, memory: H)
26410            where H: Handle<Target=DeviceMemoryHandle> {
26411        self.raw.memory = memory.handle().0;
26412    }
26413
26414    pub fn set_handle_type<'m>(&mut self, handle_type: ExternalMemoryHandleTypeFlagsKhr) {
26415        self.raw.handleType = handle_type.bits();
26416    }
26417
26418    pub fn as_raw(&self) -> &vks::VkMemoryGetWin32HandleInfoKHR {
26419        &self.raw
26420    }
26421}
26422
26423impl<'s> From<MemoryGetWin32HandleInfoKhr<'s>> for vks::VkMemoryGetWin32HandleInfoKHR {
26424    fn from(f: MemoryGetWin32HandleInfoKhr<'s>) -> vks::VkMemoryGetWin32HandleInfoKHR {
26425        f.raw
26426    }
26427}
26428
26429
26430/// A builder for `VkMemoryGetWin32HandleInfoKHR`.
26431///
26432/// 
26433#[derive(Debug, Clone, Default)]
26434pub struct MemoryGetWin32HandleInfoKhrBuilder<'b> {
26435    raw: vks::VkMemoryGetWin32HandleInfoKHR,
26436    _p: PhantomData<&'b ()>, 
26437}
26438
26439impl<'b> MemoryGetWin32HandleInfoKhrBuilder<'b> {
26440    pub fn new() -> MemoryGetWin32HandleInfoKhrBuilder<'b> {
26441        MemoryGetWin32HandleInfoKhrBuilder {
26442            raw: vks::VkMemoryGetWin32HandleInfoKHR::default(),
26443            _p: PhantomData,
26444        }
26445    }
26446
26447    pub unsafe fn next<'m>(mut self, next: *const c_void) -> MemoryGetWin32HandleInfoKhrBuilder<'b> {
26448        self.raw.pNext = next;
26449        self
26450    }
26451
26452    pub fn memory<'m, H>(mut self, memory: H) -> MemoryGetWin32HandleInfoKhrBuilder<'b>
26453            where H: Handle<Target=DeviceMemoryHandle> {
26454        self.raw.memory = memory.handle().0;
26455        self
26456    }
26457
26458    pub fn handle_type<'m>(mut self, handle_type: ExternalMemoryHandleTypeFlagsKhr) -> MemoryGetWin32HandleInfoKhrBuilder<'b> {
26459        self.raw.handleType = handle_type.bits();
26460        self
26461    }
26462
26463    pub fn get_next<'a>(&'a self) -> *const c_void {
26464        self.raw.pNext
26465    }
26466
26467    pub fn get_memory<'a>(&'a self) -> vks::VkDeviceMemory {
26468        self.raw.memory
26469    }
26470
26471    pub fn get_handle_type<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
26472        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.handleType)
26473            .expect("MemoryGetWin32HandleInfoKhr::handle_type: error converting flags")
26474    }
26475
26476    pub fn build(self) -> MemoryGetWin32HandleInfoKhr<'b> {
26477        MemoryGetWin32HandleInfoKhr {
26478            raw: self.raw,
26479            _p: PhantomData,
26480        }
26481    }
26482}
26483
26484
26485/// A `VkImportMemoryFdInfoKHR`.
26486///
26487/// 
26488#[derive(Debug, Clone, Default)]
26489#[repr(C)]
26490pub struct ImportMemoryFdInfoKhr<'s> {
26491    raw: vks::VkImportMemoryFdInfoKHR,
26492    _p: PhantomData<&'s ()>,
26493}
26494
26495impl<'s> ImportMemoryFdInfoKhr<'s> {
26496    pub fn builder<'b>() -> ImportMemoryFdInfoKhrBuilder<'b> {
26497        ImportMemoryFdInfoKhrBuilder::new()
26498    }
26499
26500    pub unsafe fn from_raw(raw: vks::VkImportMemoryFdInfoKHR) -> ImportMemoryFdInfoKhr<'s> {
26501        ImportMemoryFdInfoKhr { raw, _p: PhantomData }
26502    }
26503
26504    pub fn next<'a>(&'a self) -> *const c_void {
26505        self.raw.pNext
26506    }
26507
26508    pub fn handle_type<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
26509        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.handleType)
26510            .expect("ImportMemoryFdInfoKhr::handle_type: error converting flags")
26511    }
26512
26513    pub fn fd<'a>(&'a self) -> i32 {
26514        self.raw.fd.into()
26515    }
26516
26517    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
26518        self.raw.pNext = next;
26519    }
26520
26521    pub fn set_handle_type<'m>(&mut self, handle_type: ExternalMemoryHandleTypeFlagsKhr) {
26522        self.raw.handleType = handle_type.bits();
26523    }
26524
26525    pub fn set_fd<'m>(&mut self, fd: i32) {
26526        self.raw.fd = fd.into();
26527    }
26528
26529    pub fn as_raw(&self) -> &vks::VkImportMemoryFdInfoKHR {
26530        &self.raw
26531    }
26532}
26533
26534impl<'s> From<ImportMemoryFdInfoKhr<'s>> for vks::VkImportMemoryFdInfoKHR {
26535    fn from(f: ImportMemoryFdInfoKhr<'s>) -> vks::VkImportMemoryFdInfoKHR {
26536        f.raw
26537    }
26538}
26539
26540
26541/// A builder for `VkImportMemoryFdInfoKHR`.
26542///
26543/// 
26544#[derive(Debug, Clone, Default)]
26545pub struct ImportMemoryFdInfoKhrBuilder<'b> {
26546    raw: vks::VkImportMemoryFdInfoKHR,
26547    _p: PhantomData<&'b ()>, 
26548}
26549
26550impl<'b> ImportMemoryFdInfoKhrBuilder<'b> {
26551    pub fn new() -> ImportMemoryFdInfoKhrBuilder<'b> {
26552        ImportMemoryFdInfoKhrBuilder {
26553            raw: vks::VkImportMemoryFdInfoKHR::default(),
26554            _p: PhantomData,
26555        }
26556    }
26557
26558    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ImportMemoryFdInfoKhrBuilder<'b> {
26559        self.raw.pNext = next;
26560        self
26561    }
26562
26563    pub fn handle_type<'m>(mut self, handle_type: ExternalMemoryHandleTypeFlagsKhr) -> ImportMemoryFdInfoKhrBuilder<'b> {
26564        self.raw.handleType = handle_type.bits();
26565        self
26566    }
26567
26568    pub fn fd<'m>(mut self, fd: i32) -> ImportMemoryFdInfoKhrBuilder<'b> {
26569        self.raw.fd = fd.into();
26570        self
26571    }
26572
26573    pub fn get_next<'a>(&'a self) -> *const c_void {
26574        self.raw.pNext
26575    }
26576
26577    pub fn get_handle_type<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
26578        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.handleType)
26579            .expect("ImportMemoryFdInfoKhr::handle_type: error converting flags")
26580    }
26581
26582    pub fn get_fd<'a>(&'a self) -> i32 {
26583        self.raw.fd.into()
26584    }
26585
26586    pub fn build(self) -> ImportMemoryFdInfoKhr<'b> {
26587        ImportMemoryFdInfoKhr {
26588            raw: self.raw,
26589            _p: PhantomData,
26590        }
26591    }
26592}
26593
26594
26595/// A `VkMemoryFdPropertiesKHR`.
26596///
26597/// 
26598#[derive(Debug, Clone, Default)]
26599#[repr(C)]
26600pub struct MemoryFdPropertiesKhr<'s> {
26601    raw: vks::VkMemoryFdPropertiesKHR,
26602    _p: PhantomData<&'s ()>,
26603}
26604
26605impl<'s> MemoryFdPropertiesKhr<'s> {
26606    pub fn builder<'b>() -> MemoryFdPropertiesKhrBuilder<'b> {
26607        MemoryFdPropertiesKhrBuilder::new()
26608    }
26609
26610    pub unsafe fn from_raw(raw: vks::VkMemoryFdPropertiesKHR) -> MemoryFdPropertiesKhr<'s> {
26611        MemoryFdPropertiesKhr { raw, _p: PhantomData }
26612    }
26613
26614    pub fn next<'a>(&'a self) -> *mut c_void {
26615        self.raw.pNext
26616    }
26617
26618    pub fn memory_type_bits<'a>(&'a self) -> u32 {
26619        self.raw.memoryTypeBits.into()
26620    }
26621
26622    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
26623        self.raw.pNext = next;
26624    }
26625
26626    pub fn set_memory_type_bits<'m>(&mut self, memory_type_bits: u32) {
26627        self.raw.memoryTypeBits = memory_type_bits.into();
26628    }
26629
26630    pub fn as_raw(&self) -> &vks::VkMemoryFdPropertiesKHR {
26631        &self.raw
26632    }
26633}
26634
26635impl<'s> From<MemoryFdPropertiesKhr<'s>> for vks::VkMemoryFdPropertiesKHR {
26636    fn from(f: MemoryFdPropertiesKhr<'s>) -> vks::VkMemoryFdPropertiesKHR {
26637        f.raw
26638    }
26639}
26640
26641
26642/// A builder for `VkMemoryFdPropertiesKHR`.
26643///
26644/// 
26645#[derive(Debug, Clone, Default)]
26646pub struct MemoryFdPropertiesKhrBuilder<'b> {
26647    raw: vks::VkMemoryFdPropertiesKHR,
26648    _p: PhantomData<&'b ()>, 
26649}
26650
26651impl<'b> MemoryFdPropertiesKhrBuilder<'b> {
26652    pub fn new() -> MemoryFdPropertiesKhrBuilder<'b> {
26653        MemoryFdPropertiesKhrBuilder {
26654            raw: vks::VkMemoryFdPropertiesKHR::default(),
26655            _p: PhantomData,
26656        }
26657    }
26658
26659    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> MemoryFdPropertiesKhrBuilder<'b> {
26660        self.raw.pNext = next;
26661        self
26662    }
26663
26664    pub fn memory_type_bits<'m>(mut self, memory_type_bits: u32) -> MemoryFdPropertiesKhrBuilder<'b> {
26665        self.raw.memoryTypeBits = memory_type_bits.into();
26666        self
26667    }
26668
26669    pub fn get_next<'a>(&'a self) -> *mut c_void {
26670        self.raw.pNext
26671    }
26672
26673    pub fn get_memory_type_bits<'a>(&'a self) -> u32 {
26674        self.raw.memoryTypeBits.into()
26675    }
26676
26677    pub fn build(self) -> MemoryFdPropertiesKhr<'b> {
26678        MemoryFdPropertiesKhr {
26679            raw: self.raw,
26680            _p: PhantomData,
26681        }
26682    }
26683}
26684
26685
26686/// A `VkMemoryGetFdInfoKHR`.
26687///
26688/// 
26689#[derive(Debug, Clone, Default)]
26690#[repr(C)]
26691pub struct MemoryGetFdInfoKhr<'s> {
26692    raw: vks::VkMemoryGetFdInfoKHR,
26693    _p: PhantomData<&'s ()>,
26694}
26695
26696impl<'s> MemoryGetFdInfoKhr<'s> {
26697    pub fn builder<'b>() -> MemoryGetFdInfoKhrBuilder<'b> {
26698        MemoryGetFdInfoKhrBuilder::new()
26699    }
26700
26701    pub unsafe fn from_raw(raw: vks::VkMemoryGetFdInfoKHR) -> MemoryGetFdInfoKhr<'s> {
26702        MemoryGetFdInfoKhr { raw, _p: PhantomData }
26703    }
26704
26705    pub fn next<'a>(&'a self) -> *const c_void {
26706        self.raw.pNext
26707    }
26708
26709    pub fn memory<'a>(&'a self) -> vks::VkDeviceMemory {
26710        self.raw.memory
26711    }
26712
26713    pub fn handle_type<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
26714        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.handleType)
26715            .expect("MemoryGetFdInfoKhr::handle_type: error converting flags")
26716    }
26717
26718    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
26719        self.raw.pNext = next;
26720    }
26721
26722    pub fn set_memory<'m, H>(&mut self, memory: H)
26723            where H: Handle<Target=DeviceMemoryHandle> {
26724        self.raw.memory = memory.handle().0;
26725    }
26726
26727    pub fn set_handle_type<'m>(&mut self, handle_type: ExternalMemoryHandleTypeFlagsKhr) {
26728        self.raw.handleType = handle_type.bits();
26729    }
26730
26731    pub fn as_raw(&self) -> &vks::VkMemoryGetFdInfoKHR {
26732        &self.raw
26733    }
26734}
26735
26736impl<'s> From<MemoryGetFdInfoKhr<'s>> for vks::VkMemoryGetFdInfoKHR {
26737    fn from(f: MemoryGetFdInfoKhr<'s>) -> vks::VkMemoryGetFdInfoKHR {
26738        f.raw
26739    }
26740}
26741
26742
26743/// A builder for `VkMemoryGetFdInfoKHR`.
26744///
26745/// 
26746#[derive(Debug, Clone, Default)]
26747pub struct MemoryGetFdInfoKhrBuilder<'b> {
26748    raw: vks::VkMemoryGetFdInfoKHR,
26749    _p: PhantomData<&'b ()>, 
26750}
26751
26752impl<'b> MemoryGetFdInfoKhrBuilder<'b> {
26753    pub fn new() -> MemoryGetFdInfoKhrBuilder<'b> {
26754        MemoryGetFdInfoKhrBuilder {
26755            raw: vks::VkMemoryGetFdInfoKHR::default(),
26756            _p: PhantomData,
26757        }
26758    }
26759
26760    pub unsafe fn next<'m>(mut self, next: *const c_void) -> MemoryGetFdInfoKhrBuilder<'b> {
26761        self.raw.pNext = next;
26762        self
26763    }
26764
26765    pub fn memory<'m, H>(mut self, memory: H) -> MemoryGetFdInfoKhrBuilder<'b>
26766            where H: Handle<Target=DeviceMemoryHandle> {
26767        self.raw.memory = memory.handle().0;
26768        self
26769    }
26770
26771    pub fn handle_type<'m>(mut self, handle_type: ExternalMemoryHandleTypeFlagsKhr) -> MemoryGetFdInfoKhrBuilder<'b> {
26772        self.raw.handleType = handle_type.bits();
26773        self
26774    }
26775
26776    pub fn get_next<'a>(&'a self) -> *const c_void {
26777        self.raw.pNext
26778    }
26779
26780    pub fn get_memory<'a>(&'a self) -> vks::VkDeviceMemory {
26781        self.raw.memory
26782    }
26783
26784    pub fn get_handle_type<'a>(&'a self) -> ExternalMemoryHandleTypeFlagsKhr {
26785        ExternalMemoryHandleTypeFlagsKhr::from_bits(self.raw.handleType)
26786            .expect("MemoryGetFdInfoKhr::handle_type: error converting flags")
26787    }
26788
26789    pub fn build(self) -> MemoryGetFdInfoKhr<'b> {
26790        MemoryGetFdInfoKhr {
26791            raw: self.raw,
26792            _p: PhantomData,
26793        }
26794    }
26795}
26796
26797
26798/// A `VkWin32KeyedMutexAcquireReleaseInfoKHR`.
26799///
26800/// 
26801#[derive(Debug, Clone, Default)]
26802#[repr(C)]
26803pub struct Win32KeyedMutexAcquireReleaseInfoKhr<'s> {
26804    raw: vks::VkWin32KeyedMutexAcquireReleaseInfoKHR,
26805    _p: PhantomData<&'s ()>,
26806}
26807
26808impl<'s> Win32KeyedMutexAcquireReleaseInfoKhr<'s> {
26809    pub fn builder<'b>() -> Win32KeyedMutexAcquireReleaseInfoKhrBuilder<'b> {
26810        Win32KeyedMutexAcquireReleaseInfoKhrBuilder::new()
26811    }
26812
26813    pub unsafe fn from_raw(raw: vks::VkWin32KeyedMutexAcquireReleaseInfoKHR) -> Win32KeyedMutexAcquireReleaseInfoKhr<'s> {
26814        Win32KeyedMutexAcquireReleaseInfoKhr { raw, _p: PhantomData }
26815    }
26816
26817    pub fn next<'a>(&'a self) -> *const c_void {
26818        self.raw.pNext
26819    }
26820
26821    pub fn acquire_syncs<'a>(&'a self) -> &'a [vks::VkDeviceMemory] {
26822        unsafe { slice::from_raw_parts(self.raw.pAcquireSyncs as *const _, self.raw.acquireCount as usize) }
26823    }
26824
26825    pub fn acquire_keys<'a>(&'a self) -> &'a [u64] {
26826        unsafe { slice::from_raw_parts(self.raw.pAcquireKeys as *const _, self.raw.acquireCount as usize) }
26827    }
26828
26829    pub fn acquire_timeouts<'a>(&'a self) -> &'a [u32] {
26830        unsafe { slice::from_raw_parts(self.raw.pAcquireTimeouts as *const _, self.raw.acquireCount as usize) }
26831    }
26832
26833    pub fn release_syncs<'a>(&'a self) -> &'a [vks::VkDeviceMemory] {
26834        unsafe { slice::from_raw_parts(self.raw.pReleaseSyncs as *const _, self.raw.releaseCount as usize) }
26835    }
26836
26837    pub fn release_keys<'a>(&'a self) -> &'a [u64] {
26838        unsafe { slice::from_raw_parts(self.raw.pReleaseKeys as *const _, self.raw.releaseCount as usize) }
26839    }
26840
26841    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
26842        self.raw.pNext = next;
26843    }
26844
26845    pub fn set_acquire_syncs<'m, 'a>(&mut self, acquire_syncs: &'a [DeviceMemoryHandle])
26846            where 'a: 's {
26847        assert!(self.raw.acquireCount == 0 || self.raw.acquireCount == acquire_syncs.len() as _, 
26848            "count inconsistency found when specifying `Win32KeyedMutexAcquireReleaseInfoKhr::acquire_syncs`.");
26849        self.raw.acquireCount = acquire_syncs.len() as _;
26850        self.raw.pAcquireSyncs = acquire_syncs.as_ptr() as *const vks::VkDeviceMemory;
26851    }
26852
26853    pub fn set_acquire_keys<'m, 'a>(&mut self, acquire_keys: &'a [u64])
26854            where 'a: 's {
26855        assert!(self.raw.acquireCount == 0 || self.raw.acquireCount == acquire_keys.len() as _, 
26856            "count inconsistency found when specifying `Win32KeyedMutexAcquireReleaseInfoKhr::acquire_keys`.");
26857        self.raw.acquireCount = acquire_keys.len() as _;
26858        self.raw.pAcquireKeys = acquire_keys.as_ptr() as *const u64 as *const _;
26859    }
26860
26861    pub fn set_acquire_timeouts<'m, 'a>(&mut self, acquire_timeouts: &'a [u32])
26862            where 'a: 's {
26863        assert!(self.raw.acquireCount == 0 || self.raw.acquireCount == acquire_timeouts.len() as _, 
26864            "count inconsistency found when specifying `Win32KeyedMutexAcquireReleaseInfoKhr::acquire_timeouts`.");
26865        self.raw.acquireCount = acquire_timeouts.len() as _;
26866        self.raw.pAcquireTimeouts = acquire_timeouts.as_ptr() as *const u32 as *const _;
26867    }
26868
26869    pub fn set_release_syncs<'m, 'a>(&mut self, release_syncs: &'a [DeviceMemoryHandle])
26870            where 'a: 's {
26871        assert!(self.raw.releaseCount == 0 || self.raw.releaseCount == release_syncs.len() as _, 
26872            "count inconsistency found when specifying `Win32KeyedMutexAcquireReleaseInfoKhr::release_syncs`.");
26873        self.raw.releaseCount = release_syncs.len() as _;
26874        self.raw.pReleaseSyncs = release_syncs.as_ptr() as *const vks::VkDeviceMemory;
26875    }
26876
26877    pub fn set_release_keys<'m, 'a>(&mut self, release_keys: &'a [u64])
26878            where 'a: 's {
26879        assert!(self.raw.releaseCount == 0 || self.raw.releaseCount == release_keys.len() as _, 
26880            "count inconsistency found when specifying `Win32KeyedMutexAcquireReleaseInfoKhr::release_keys`.");
26881        self.raw.releaseCount = release_keys.len() as _;
26882        self.raw.pReleaseKeys = release_keys.as_ptr() as *const u64 as *const _;
26883    }
26884
26885    pub fn as_raw(&self) -> &vks::VkWin32KeyedMutexAcquireReleaseInfoKHR {
26886        &self.raw
26887    }
26888}
26889
26890impl<'s> From<Win32KeyedMutexAcquireReleaseInfoKhr<'s>> for vks::VkWin32KeyedMutexAcquireReleaseInfoKHR {
26891    fn from(f: Win32KeyedMutexAcquireReleaseInfoKhr<'s>) -> vks::VkWin32KeyedMutexAcquireReleaseInfoKHR {
26892        f.raw
26893    }
26894}
26895
26896
26897/// A builder for `VkWin32KeyedMutexAcquireReleaseInfoKHR`.
26898///
26899/// 
26900#[derive(Debug, Clone, Default)]
26901pub struct Win32KeyedMutexAcquireReleaseInfoKhrBuilder<'b> {
26902    raw: vks::VkWin32KeyedMutexAcquireReleaseInfoKHR,
26903    _p: PhantomData<&'b ()>, 
26904}
26905
26906impl<'b> Win32KeyedMutexAcquireReleaseInfoKhrBuilder<'b> {
26907    pub fn new() -> Win32KeyedMutexAcquireReleaseInfoKhrBuilder<'b> {
26908        Win32KeyedMutexAcquireReleaseInfoKhrBuilder {
26909            raw: vks::VkWin32KeyedMutexAcquireReleaseInfoKHR::default(),
26910            _p: PhantomData,
26911        }
26912    }
26913
26914    pub unsafe fn next<'m>(mut self, next: *const c_void) -> Win32KeyedMutexAcquireReleaseInfoKhrBuilder<'b> {
26915        self.raw.pNext = next;
26916        self
26917    }
26918
26919    pub fn acquire_syncs<'m, 'a>(mut self, acquire_syncs: &'a [DeviceMemoryHandle]) -> Win32KeyedMutexAcquireReleaseInfoKhrBuilder<'b>
26920            where 'a: 'b {
26921        assert!(self.raw.acquireCount == 0 || self.raw.acquireCount == acquire_syncs.len() as _, 
26922            "count inconsistency found when specifying `Win32KeyedMutexAcquireReleaseInfoKhr::acquire_syncs`.");
26923        self.raw.acquireCount = acquire_syncs.len() as _;
26924        self.raw.pAcquireSyncs = acquire_syncs.as_ptr() as *const vks::VkDeviceMemory;
26925        self
26926    }
26927
26928    pub fn acquire_keys<'m, 'a>(mut self, acquire_keys: &'a [u64]) -> Win32KeyedMutexAcquireReleaseInfoKhrBuilder<'b>
26929            where 'a: 'b {
26930        assert!(self.raw.acquireCount == 0 || self.raw.acquireCount == acquire_keys.len() as _, 
26931            "count inconsistency found when specifying `Win32KeyedMutexAcquireReleaseInfoKhr::acquire_keys`.");
26932        self.raw.acquireCount = acquire_keys.len() as _;
26933        self.raw.pAcquireKeys = acquire_keys.as_ptr() as *const u64 as *const _;
26934        self
26935    }
26936
26937    pub fn acquire_timeouts<'m, 'a>(mut self, acquire_timeouts: &'a [u32]) -> Win32KeyedMutexAcquireReleaseInfoKhrBuilder<'b>
26938            where 'a: 'b {
26939        assert!(self.raw.acquireCount == 0 || self.raw.acquireCount == acquire_timeouts.len() as _, 
26940            "count inconsistency found when specifying `Win32KeyedMutexAcquireReleaseInfoKhr::acquire_timeouts`.");
26941        self.raw.acquireCount = acquire_timeouts.len() as _;
26942        self.raw.pAcquireTimeouts = acquire_timeouts.as_ptr() as *const u32 as *const _;
26943        self
26944    }
26945
26946    pub fn release_syncs<'m, 'a>(mut self, release_syncs: &'a [DeviceMemoryHandle]) -> Win32KeyedMutexAcquireReleaseInfoKhrBuilder<'b>
26947            where 'a: 'b {
26948        assert!(self.raw.releaseCount == 0 || self.raw.releaseCount == release_syncs.len() as _, 
26949            "count inconsistency found when specifying `Win32KeyedMutexAcquireReleaseInfoKhr::release_syncs`.");
26950        self.raw.releaseCount = release_syncs.len() as _;
26951        self.raw.pReleaseSyncs = release_syncs.as_ptr() as *const vks::VkDeviceMemory;
26952        self
26953    }
26954
26955    pub fn release_keys<'m, 'a>(mut self, release_keys: &'a [u64]) -> Win32KeyedMutexAcquireReleaseInfoKhrBuilder<'b>
26956            where 'a: 'b {
26957        assert!(self.raw.releaseCount == 0 || self.raw.releaseCount == release_keys.len() as _, 
26958            "count inconsistency found when specifying `Win32KeyedMutexAcquireReleaseInfoKhr::release_keys`.");
26959        self.raw.releaseCount = release_keys.len() as _;
26960        self.raw.pReleaseKeys = release_keys.as_ptr() as *const u64 as *const _;
26961        self
26962    }
26963
26964    pub fn get_next<'a>(&'a self) -> *const c_void {
26965        self.raw.pNext
26966    }
26967
26968    pub fn get_acquire_syncs<'a>(&'a self) -> &'a [vks::VkDeviceMemory] {
26969        unsafe { slice::from_raw_parts(self.raw.pAcquireSyncs as *const _, self.raw.acquireCount as usize) }
26970    }
26971
26972    pub fn get_acquire_keys<'a>(&'a self) -> &'a [u64] {
26973        unsafe { slice::from_raw_parts(self.raw.pAcquireKeys as *const _, self.raw.acquireCount as usize) }
26974    }
26975
26976    pub fn get_acquire_timeouts<'a>(&'a self) -> &'a [u32] {
26977        unsafe { slice::from_raw_parts(self.raw.pAcquireTimeouts as *const _, self.raw.acquireCount as usize) }
26978    }
26979
26980    pub fn get_release_syncs<'a>(&'a self) -> &'a [vks::VkDeviceMemory] {
26981        unsafe { slice::from_raw_parts(self.raw.pReleaseSyncs as *const _, self.raw.releaseCount as usize) }
26982    }
26983
26984    pub fn get_release_keys<'a>(&'a self) -> &'a [u64] {
26985        unsafe { slice::from_raw_parts(self.raw.pReleaseKeys as *const _, self.raw.releaseCount as usize) }
26986    }
26987
26988    pub fn build(self) -> Win32KeyedMutexAcquireReleaseInfoKhr<'b> {
26989        Win32KeyedMutexAcquireReleaseInfoKhr {
26990            raw: self.raw,
26991            _p: PhantomData,
26992        }
26993    }
26994}
26995
26996
26997/// A `VkPhysicalDeviceExternalSemaphoreInfoKHR`.
26998///
26999/// 
27000#[derive(Debug, Clone, Default)]
27001#[repr(C)]
27002pub struct PhysicalDeviceExternalSemaphoreInfoKhr<'s> {
27003    raw: vks::VkPhysicalDeviceExternalSemaphoreInfoKHR,
27004    _p: PhantomData<&'s ()>,
27005}
27006
27007impl<'s> PhysicalDeviceExternalSemaphoreInfoKhr<'s> {
27008    pub fn builder<'b>() -> PhysicalDeviceExternalSemaphoreInfoKhrBuilder<'b> {
27009        PhysicalDeviceExternalSemaphoreInfoKhrBuilder::new()
27010    }
27011
27012    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceExternalSemaphoreInfoKHR) -> PhysicalDeviceExternalSemaphoreInfoKhr<'s> {
27013        PhysicalDeviceExternalSemaphoreInfoKhr { raw, _p: PhantomData }
27014    }
27015
27016    pub fn next<'a>(&'a self) -> *const c_void {
27017        self.raw.pNext
27018    }
27019
27020    pub fn handle_type<'a>(&'a self) -> ExternalSemaphoreHandleTypeFlagsKhr {
27021        ExternalSemaphoreHandleTypeFlagsKhr::from_bits(self.raw.handleType)
27022            .expect("PhysicalDeviceExternalSemaphoreInfoKhr::handle_type: error converting flags")
27023    }
27024
27025    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
27026        self.raw.pNext = next;
27027    }
27028
27029    pub fn set_handle_type<'m>(&mut self, handle_type: ExternalSemaphoreHandleTypeFlagsKhr) {
27030        self.raw.handleType = handle_type.bits();
27031    }
27032
27033    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceExternalSemaphoreInfoKHR {
27034        &self.raw
27035    }
27036}
27037
27038impl<'s> From<PhysicalDeviceExternalSemaphoreInfoKhr<'s>> for vks::VkPhysicalDeviceExternalSemaphoreInfoKHR {
27039    fn from(f: PhysicalDeviceExternalSemaphoreInfoKhr<'s>) -> vks::VkPhysicalDeviceExternalSemaphoreInfoKHR {
27040        f.raw
27041    }
27042}
27043
27044
27045/// A builder for `VkPhysicalDeviceExternalSemaphoreInfoKHR`.
27046///
27047/// 
27048#[derive(Debug, Clone, Default)]
27049pub struct PhysicalDeviceExternalSemaphoreInfoKhrBuilder<'b> {
27050    raw: vks::VkPhysicalDeviceExternalSemaphoreInfoKHR,
27051    _p: PhantomData<&'b ()>, 
27052}
27053
27054impl<'b> PhysicalDeviceExternalSemaphoreInfoKhrBuilder<'b> {
27055    pub fn new() -> PhysicalDeviceExternalSemaphoreInfoKhrBuilder<'b> {
27056        PhysicalDeviceExternalSemaphoreInfoKhrBuilder {
27057            raw: vks::VkPhysicalDeviceExternalSemaphoreInfoKHR::default(),
27058            _p: PhantomData,
27059        }
27060    }
27061
27062    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PhysicalDeviceExternalSemaphoreInfoKhrBuilder<'b> {
27063        self.raw.pNext = next;
27064        self
27065    }
27066
27067    pub fn handle_type<'m>(mut self, handle_type: ExternalSemaphoreHandleTypeFlagsKhr) -> PhysicalDeviceExternalSemaphoreInfoKhrBuilder<'b> {
27068        self.raw.handleType = handle_type.bits();
27069        self
27070    }
27071
27072    pub fn get_next<'a>(&'a self) -> *const c_void {
27073        self.raw.pNext
27074    }
27075
27076    pub fn get_handle_type<'a>(&'a self) -> ExternalSemaphoreHandleTypeFlagsKhr {
27077        ExternalSemaphoreHandleTypeFlagsKhr::from_bits(self.raw.handleType)
27078            .expect("PhysicalDeviceExternalSemaphoreInfoKhr::handle_type: error converting flags")
27079    }
27080
27081    pub fn build(self) -> PhysicalDeviceExternalSemaphoreInfoKhr<'b> {
27082        PhysicalDeviceExternalSemaphoreInfoKhr {
27083            raw: self.raw,
27084            _p: PhantomData,
27085        }
27086    }
27087}
27088
27089
27090/// A `VkExternalSemaphorePropertiesKHR`.
27091///
27092/// 
27093#[derive(Debug, Clone, Default)]
27094#[repr(C)]
27095pub struct ExternalSemaphorePropertiesKhr<'s> {
27096    raw: vks::VkExternalSemaphorePropertiesKHR,
27097    _p: PhantomData<&'s ()>,
27098}
27099
27100impl<'s> ExternalSemaphorePropertiesKhr<'s> {
27101    pub fn builder<'b>() -> ExternalSemaphorePropertiesKhrBuilder<'b> {
27102        ExternalSemaphorePropertiesKhrBuilder::new()
27103    }
27104
27105    pub unsafe fn from_raw(raw: vks::VkExternalSemaphorePropertiesKHR) -> ExternalSemaphorePropertiesKhr<'s> {
27106        ExternalSemaphorePropertiesKhr { raw, _p: PhantomData }
27107    }
27108
27109    pub fn next<'a>(&'a self) -> *mut c_void {
27110        self.raw.pNext
27111    }
27112
27113    pub fn export_from_imported_handle_types<'a>(&'a self) -> ExternalSemaphoreHandleTypeFlagsKhr {
27114        ExternalSemaphoreHandleTypeFlagsKhr::from_bits(self.raw.exportFromImportedHandleTypes)
27115            .expect("ExternalSemaphorePropertiesKhr::export_from_imported_handle_types: error converting flags")
27116    }
27117
27118    pub fn compatible_handle_types<'a>(&'a self) -> ExternalSemaphoreHandleTypeFlagsKhr {
27119        ExternalSemaphoreHandleTypeFlagsKhr::from_bits(self.raw.compatibleHandleTypes)
27120            .expect("ExternalSemaphorePropertiesKhr::compatible_handle_types: error converting flags")
27121    }
27122
27123    pub fn external_semaphore_features<'a>(&'a self) -> ExternalSemaphoreFeatureFlagsKhr {
27124        ExternalSemaphoreFeatureFlagsKhr::from_bits(self.raw.externalSemaphoreFeatures)
27125            .expect("ExternalSemaphorePropertiesKhr::external_semaphore_features: error converting flags")
27126    }
27127
27128    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
27129        self.raw.pNext = next;
27130    }
27131
27132    pub fn set_export_from_imported_handle_types<'m>(&mut self, export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlagsKhr) {
27133        self.raw.exportFromImportedHandleTypes = export_from_imported_handle_types.bits();
27134    }
27135
27136    pub fn set_compatible_handle_types<'m>(&mut self, compatible_handle_types: ExternalSemaphoreHandleTypeFlagsKhr) {
27137        self.raw.compatibleHandleTypes = compatible_handle_types.bits();
27138    }
27139
27140    pub fn set_external_semaphore_features<'m>(&mut self, external_semaphore_features: ExternalSemaphoreFeatureFlagsKhr) {
27141        self.raw.externalSemaphoreFeatures = external_semaphore_features.bits();
27142    }
27143
27144    pub fn as_raw(&self) -> &vks::VkExternalSemaphorePropertiesKHR {
27145        &self.raw
27146    }
27147}
27148
27149impl<'s> From<ExternalSemaphorePropertiesKhr<'s>> for vks::VkExternalSemaphorePropertiesKHR {
27150    fn from(f: ExternalSemaphorePropertiesKhr<'s>) -> vks::VkExternalSemaphorePropertiesKHR {
27151        f.raw
27152    }
27153}
27154
27155
27156/// A builder for `VkExternalSemaphorePropertiesKHR`.
27157///
27158/// 
27159#[derive(Debug, Clone, Default)]
27160pub struct ExternalSemaphorePropertiesKhrBuilder<'b> {
27161    raw: vks::VkExternalSemaphorePropertiesKHR,
27162    _p: PhantomData<&'b ()>, 
27163}
27164
27165impl<'b> ExternalSemaphorePropertiesKhrBuilder<'b> {
27166    pub fn new() -> ExternalSemaphorePropertiesKhrBuilder<'b> {
27167        ExternalSemaphorePropertiesKhrBuilder {
27168            raw: vks::VkExternalSemaphorePropertiesKHR::default(),
27169            _p: PhantomData,
27170        }
27171    }
27172
27173    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> ExternalSemaphorePropertiesKhrBuilder<'b> {
27174        self.raw.pNext = next;
27175        self
27176    }
27177
27178    pub fn export_from_imported_handle_types<'m>(mut self, export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlagsKhr) -> ExternalSemaphorePropertiesKhrBuilder<'b> {
27179        self.raw.exportFromImportedHandleTypes = export_from_imported_handle_types.bits();
27180        self
27181    }
27182
27183    pub fn compatible_handle_types<'m>(mut self, compatible_handle_types: ExternalSemaphoreHandleTypeFlagsKhr) -> ExternalSemaphorePropertiesKhrBuilder<'b> {
27184        self.raw.compatibleHandleTypes = compatible_handle_types.bits();
27185        self
27186    }
27187
27188    pub fn external_semaphore_features<'m>(mut self, external_semaphore_features: ExternalSemaphoreFeatureFlagsKhr) -> ExternalSemaphorePropertiesKhrBuilder<'b> {
27189        self.raw.externalSemaphoreFeatures = external_semaphore_features.bits();
27190        self
27191    }
27192
27193    pub fn get_next<'a>(&'a self) -> *mut c_void {
27194        self.raw.pNext
27195    }
27196
27197    pub fn get_export_from_imported_handle_types<'a>(&'a self) -> ExternalSemaphoreHandleTypeFlagsKhr {
27198        ExternalSemaphoreHandleTypeFlagsKhr::from_bits(self.raw.exportFromImportedHandleTypes)
27199            .expect("ExternalSemaphorePropertiesKhr::export_from_imported_handle_types: error converting flags")
27200    }
27201
27202    pub fn get_compatible_handle_types<'a>(&'a self) -> ExternalSemaphoreHandleTypeFlagsKhr {
27203        ExternalSemaphoreHandleTypeFlagsKhr::from_bits(self.raw.compatibleHandleTypes)
27204            .expect("ExternalSemaphorePropertiesKhr::compatible_handle_types: error converting flags")
27205    }
27206
27207    pub fn get_external_semaphore_features<'a>(&'a self) -> ExternalSemaphoreFeatureFlagsKhr {
27208        ExternalSemaphoreFeatureFlagsKhr::from_bits(self.raw.externalSemaphoreFeatures)
27209            .expect("ExternalSemaphorePropertiesKhr::external_semaphore_features: error converting flags")
27210    }
27211
27212    pub fn build(self) -> ExternalSemaphorePropertiesKhr<'b> {
27213        ExternalSemaphorePropertiesKhr {
27214            raw: self.raw,
27215            _p: PhantomData,
27216        }
27217    }
27218}
27219
27220
27221/// A `VkExportSemaphoreCreateInfoKHR`.
27222///
27223/// 
27224#[derive(Debug, Clone, Default)]
27225#[repr(C)]
27226pub struct ExportSemaphoreCreateInfoKhr<'s> {
27227    raw: vks::VkExportSemaphoreCreateInfoKHR,
27228    _p: PhantomData<&'s ()>,
27229}
27230
27231impl<'s> ExportSemaphoreCreateInfoKhr<'s> {
27232    pub fn builder<'b>() -> ExportSemaphoreCreateInfoKhrBuilder<'b> {
27233        ExportSemaphoreCreateInfoKhrBuilder::new()
27234    }
27235
27236    pub unsafe fn from_raw(raw: vks::VkExportSemaphoreCreateInfoKHR) -> ExportSemaphoreCreateInfoKhr<'s> {
27237        ExportSemaphoreCreateInfoKhr { raw, _p: PhantomData }
27238    }
27239
27240    pub fn next<'a>(&'a self) -> *const c_void {
27241        self.raw.pNext
27242    }
27243
27244    pub fn handle_types<'a>(&'a self) -> ExternalSemaphoreHandleTypeFlagsKhr {
27245        ExternalSemaphoreHandleTypeFlagsKhr::from_bits(self.raw.handleTypes)
27246            .expect("ExportSemaphoreCreateInfoKhr::handle_types: error converting flags")
27247    }
27248
27249    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
27250        self.raw.pNext = next;
27251    }
27252
27253    pub fn set_handle_types<'m>(&mut self, handle_types: ExternalSemaphoreHandleTypeFlagsKhr) {
27254        self.raw.handleTypes = handle_types.bits();
27255    }
27256
27257    pub fn as_raw(&self) -> &vks::VkExportSemaphoreCreateInfoKHR {
27258        &self.raw
27259    }
27260}
27261
27262impl<'s> From<ExportSemaphoreCreateInfoKhr<'s>> for vks::VkExportSemaphoreCreateInfoKHR {
27263    fn from(f: ExportSemaphoreCreateInfoKhr<'s>) -> vks::VkExportSemaphoreCreateInfoKHR {
27264        f.raw
27265    }
27266}
27267
27268
27269/// A builder for `VkExportSemaphoreCreateInfoKHR`.
27270///
27271/// 
27272#[derive(Debug, Clone, Default)]
27273pub struct ExportSemaphoreCreateInfoKhrBuilder<'b> {
27274    raw: vks::VkExportSemaphoreCreateInfoKHR,
27275    _p: PhantomData<&'b ()>, 
27276}
27277
27278impl<'b> ExportSemaphoreCreateInfoKhrBuilder<'b> {
27279    pub fn new() -> ExportSemaphoreCreateInfoKhrBuilder<'b> {
27280        ExportSemaphoreCreateInfoKhrBuilder {
27281            raw: vks::VkExportSemaphoreCreateInfoKHR::default(),
27282            _p: PhantomData,
27283        }
27284    }
27285
27286    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ExportSemaphoreCreateInfoKhrBuilder<'b> {
27287        self.raw.pNext = next;
27288        self
27289    }
27290
27291    pub fn handle_types<'m>(mut self, handle_types: ExternalSemaphoreHandleTypeFlagsKhr) -> ExportSemaphoreCreateInfoKhrBuilder<'b> {
27292        self.raw.handleTypes = handle_types.bits();
27293        self
27294    }
27295
27296    pub fn get_next<'a>(&'a self) -> *const c_void {
27297        self.raw.pNext
27298    }
27299
27300    pub fn get_handle_types<'a>(&'a self) -> ExternalSemaphoreHandleTypeFlagsKhr {
27301        ExternalSemaphoreHandleTypeFlagsKhr::from_bits(self.raw.handleTypes)
27302            .expect("ExportSemaphoreCreateInfoKhr::handle_types: error converting flags")
27303    }
27304
27305    pub fn build(self) -> ExportSemaphoreCreateInfoKhr<'b> {
27306        ExportSemaphoreCreateInfoKhr {
27307            raw: self.raw,
27308            _p: PhantomData,
27309        }
27310    }
27311}
27312
27313
27314/// A `VkImportSemaphoreWin32HandleInfoKHR`.
27315///
27316/// 
27317#[derive(Debug, Clone, Default)]
27318#[repr(C)]
27319pub struct ImportSemaphoreWin32HandleInfoKhr<'s> {
27320    raw: vks::VkImportSemaphoreWin32HandleInfoKHR,
27321    _p: PhantomData<&'s ()>,
27322}
27323
27324impl<'s> ImportSemaphoreWin32HandleInfoKhr<'s> {
27325    pub fn builder<'b>() -> ImportSemaphoreWin32HandleInfoKhrBuilder<'b> {
27326        ImportSemaphoreWin32HandleInfoKhrBuilder::new()
27327    }
27328
27329    pub unsafe fn from_raw(raw: vks::VkImportSemaphoreWin32HandleInfoKHR) -> ImportSemaphoreWin32HandleInfoKhr<'s> {
27330        ImportSemaphoreWin32HandleInfoKhr { raw, _p: PhantomData }
27331    }
27332
27333    pub fn next<'a>(&'a self) -> *const c_void {
27334        self.raw.pNext
27335    }
27336
27337    pub fn semaphore<'a>(&'a self) -> vks::VkSemaphore {
27338        self.raw.semaphore
27339    }
27340
27341    pub fn flags<'a>(&'a self) -> SemaphoreImportFlagsKhr {
27342        SemaphoreImportFlagsKhr::from_bits(self.raw.flags)
27343            .expect("ImportSemaphoreWin32HandleInfoKhr::flags: error converting flags")
27344    }
27345
27346    pub fn handle_type<'a>(&'a self) -> ExternalSemaphoreHandleTypeFlagsKhr {
27347        ExternalSemaphoreHandleTypeFlagsKhr::from_bits(self.raw.handleType)
27348            .expect("ImportSemaphoreWin32HandleInfoKhr::handle_type: error converting flags")
27349    }
27350
27351    pub fn handle<'a>(&'a self) -> HANDLE {
27352        self.raw.handle.into()
27353    }
27354
27355    pub fn name<'a>(&'a self) -> LPCWSTR {
27356        self.raw.name.into()
27357    }
27358
27359    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
27360        self.raw.pNext = next;
27361    }
27362
27363    pub fn set_semaphore<'m, H>(&mut self, semaphore: H)
27364            where H: Handle<Target=SemaphoreHandle> {
27365        self.raw.semaphore = semaphore.handle().0;
27366    }
27367
27368    pub fn set_flags<'m>(&mut self, flags: SemaphoreImportFlagsKhr) {
27369        self.raw.flags = flags.bits();
27370    }
27371
27372    pub fn set_handle_type<'m>(&mut self, handle_type: ExternalSemaphoreHandleTypeFlagsKhr) {
27373        self.raw.handleType = handle_type.bits();
27374    }
27375
27376    pub fn set_handle<'m>(&mut self, handle: HANDLE) {
27377        self.raw.handle = handle.into();
27378    }
27379
27380    pub fn set_name<'m>(&mut self, name: LPCWSTR) {
27381        self.raw.name = name.into();
27382    }
27383
27384    pub fn as_raw(&self) -> &vks::VkImportSemaphoreWin32HandleInfoKHR {
27385        &self.raw
27386    }
27387}
27388
27389impl<'s> From<ImportSemaphoreWin32HandleInfoKhr<'s>> for vks::VkImportSemaphoreWin32HandleInfoKHR {
27390    fn from(f: ImportSemaphoreWin32HandleInfoKhr<'s>) -> vks::VkImportSemaphoreWin32HandleInfoKHR {
27391        f.raw
27392    }
27393}
27394
27395
27396/// A builder for `VkImportSemaphoreWin32HandleInfoKHR`.
27397///
27398/// 
27399#[derive(Debug, Clone, Default)]
27400pub struct ImportSemaphoreWin32HandleInfoKhrBuilder<'b> {
27401    raw: vks::VkImportSemaphoreWin32HandleInfoKHR,
27402    _p: PhantomData<&'b ()>, 
27403}
27404
27405impl<'b> ImportSemaphoreWin32HandleInfoKhrBuilder<'b> {
27406    pub fn new() -> ImportSemaphoreWin32HandleInfoKhrBuilder<'b> {
27407        ImportSemaphoreWin32HandleInfoKhrBuilder {
27408            raw: vks::VkImportSemaphoreWin32HandleInfoKHR::default(),
27409            _p: PhantomData,
27410        }
27411    }
27412
27413    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ImportSemaphoreWin32HandleInfoKhrBuilder<'b> {
27414        self.raw.pNext = next;
27415        self
27416    }
27417
27418    pub fn semaphore<'m, H>(mut self, semaphore: H) -> ImportSemaphoreWin32HandleInfoKhrBuilder<'b>
27419            where H: Handle<Target=SemaphoreHandle> {
27420        self.raw.semaphore = semaphore.handle().0;
27421        self
27422    }
27423
27424    pub fn flags<'m>(mut self, flags: SemaphoreImportFlagsKhr) -> ImportSemaphoreWin32HandleInfoKhrBuilder<'b> {
27425        self.raw.flags = flags.bits();
27426        self
27427    }
27428
27429    pub fn handle_type<'m>(mut self, handle_type: ExternalSemaphoreHandleTypeFlagsKhr) -> ImportSemaphoreWin32HandleInfoKhrBuilder<'b> {
27430        self.raw.handleType = handle_type.bits();
27431        self
27432    }
27433
27434    pub fn handle<'m>(mut self, handle: HANDLE) -> ImportSemaphoreWin32HandleInfoKhrBuilder<'b> {
27435        self.raw.handle = handle.into();
27436        self
27437    }
27438
27439    pub fn name<'m>(mut self, name: LPCWSTR) -> ImportSemaphoreWin32HandleInfoKhrBuilder<'b> {
27440        self.raw.name = name.into();
27441        self
27442    }
27443
27444    pub fn get_next<'a>(&'a self) -> *const c_void {
27445        self.raw.pNext
27446    }
27447
27448    pub fn get_semaphore<'a>(&'a self) -> vks::VkSemaphore {
27449        self.raw.semaphore
27450    }
27451
27452    pub fn get_flags<'a>(&'a self) -> SemaphoreImportFlagsKhr {
27453        SemaphoreImportFlagsKhr::from_bits(self.raw.flags)
27454            .expect("ImportSemaphoreWin32HandleInfoKhr::flags: error converting flags")
27455    }
27456
27457    pub fn get_handle_type<'a>(&'a self) -> ExternalSemaphoreHandleTypeFlagsKhr {
27458        ExternalSemaphoreHandleTypeFlagsKhr::from_bits(self.raw.handleType)
27459            .expect("ImportSemaphoreWin32HandleInfoKhr::handle_type: error converting flags")
27460    }
27461
27462    pub fn get_handle<'a>(&'a self) -> HANDLE {
27463        self.raw.handle.into()
27464    }
27465
27466    pub fn get_name<'a>(&'a self) -> LPCWSTR {
27467        self.raw.name.into()
27468    }
27469
27470    pub fn build(self) -> ImportSemaphoreWin32HandleInfoKhr<'b> {
27471        ImportSemaphoreWin32HandleInfoKhr {
27472            raw: self.raw,
27473            _p: PhantomData,
27474        }
27475    }
27476}
27477
27478
27479/// A `VkExportSemaphoreWin32HandleInfoKHR`.
27480///
27481/// 
27482#[derive(Debug, Clone, Default)]
27483#[repr(C)]
27484pub struct ExportSemaphoreWin32HandleInfoKhr<'s> {
27485    raw: vks::VkExportSemaphoreWin32HandleInfoKHR,
27486    _p: PhantomData<&'s ()>,
27487}
27488
27489impl<'s> ExportSemaphoreWin32HandleInfoKhr<'s> {
27490    pub fn builder<'b>() -> ExportSemaphoreWin32HandleInfoKhrBuilder<'b> {
27491        ExportSemaphoreWin32HandleInfoKhrBuilder::new()
27492    }
27493
27494    pub unsafe fn from_raw(raw: vks::VkExportSemaphoreWin32HandleInfoKHR) -> ExportSemaphoreWin32HandleInfoKhr<'s> {
27495        ExportSemaphoreWin32HandleInfoKhr { raw, _p: PhantomData }
27496    }
27497
27498    pub fn next<'a>(&'a self) -> *const c_void {
27499        self.raw.pNext
27500    }
27501
27502    pub fn attributes<'a>(&'a self) -> &'a SECURITY_ATTRIBUTES {
27503        unsafe { &*(self.raw.pAttributes as *const _) }
27504    }
27505
27506    pub fn dw_access<'a>(&'a self) -> DWORD {
27507        self.raw.dwAccess.into()
27508    }
27509
27510    pub fn name<'a>(&'a self) -> LPCWSTR {
27511        self.raw.name.into()
27512    }
27513
27514    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
27515        self.raw.pNext = next;
27516    }
27517
27518    pub fn set_attributes<'m, 'a>(&mut self, attributes: &'a SECURITY_ATTRIBUTES) {
27519        self.raw.pAttributes = attributes;
27520    }
27521
27522    pub fn set_dw_access<'m>(&mut self, dw_access: DWORD) {
27523        self.raw.dwAccess = dw_access.into();
27524    }
27525
27526    pub fn set_name<'m>(&mut self, name: LPCWSTR) {
27527        self.raw.name = name.into();
27528    }
27529
27530    pub fn as_raw(&self) -> &vks::VkExportSemaphoreWin32HandleInfoKHR {
27531        &self.raw
27532    }
27533}
27534
27535impl<'s> From<ExportSemaphoreWin32HandleInfoKhr<'s>> for vks::VkExportSemaphoreWin32HandleInfoKHR {
27536    fn from(f: ExportSemaphoreWin32HandleInfoKhr<'s>) -> vks::VkExportSemaphoreWin32HandleInfoKHR {
27537        f.raw
27538    }
27539}
27540
27541
27542/// A builder for `VkExportSemaphoreWin32HandleInfoKHR`.
27543///
27544/// 
27545#[derive(Debug, Clone, Default)]
27546pub struct ExportSemaphoreWin32HandleInfoKhrBuilder<'b> {
27547    raw: vks::VkExportSemaphoreWin32HandleInfoKHR,
27548    _p: PhantomData<&'b ()>, 
27549}
27550
27551impl<'b> ExportSemaphoreWin32HandleInfoKhrBuilder<'b> {
27552    pub fn new() -> ExportSemaphoreWin32HandleInfoKhrBuilder<'b> {
27553        ExportSemaphoreWin32HandleInfoKhrBuilder {
27554            raw: vks::VkExportSemaphoreWin32HandleInfoKHR::default(),
27555            _p: PhantomData,
27556        }
27557    }
27558
27559    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ExportSemaphoreWin32HandleInfoKhrBuilder<'b> {
27560        self.raw.pNext = next;
27561        self
27562    }
27563
27564    pub fn attributes<'m, 'a>(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> ExportSemaphoreWin32HandleInfoKhrBuilder<'b> {
27565        self.raw.pAttributes = attributes;
27566        self
27567    }
27568
27569    pub fn dw_access<'m>(mut self, dw_access: DWORD) -> ExportSemaphoreWin32HandleInfoKhrBuilder<'b> {
27570        self.raw.dwAccess = dw_access.into();
27571        self
27572    }
27573
27574    pub fn name<'m>(mut self, name: LPCWSTR) -> ExportSemaphoreWin32HandleInfoKhrBuilder<'b> {
27575        self.raw.name = name.into();
27576        self
27577    }
27578
27579    pub fn get_next<'a>(&'a self) -> *const c_void {
27580        self.raw.pNext
27581    }
27582
27583    pub fn get_attributes<'a>(&'a self) -> &'a SECURITY_ATTRIBUTES {
27584        unsafe { &*(self.raw.pAttributes as *const _) }
27585    }
27586
27587    pub fn get_dw_access<'a>(&'a self) -> DWORD {
27588        self.raw.dwAccess.into()
27589    }
27590
27591    pub fn get_name<'a>(&'a self) -> LPCWSTR {
27592        self.raw.name.into()
27593    }
27594
27595    pub fn build(self) -> ExportSemaphoreWin32HandleInfoKhr<'b> {
27596        ExportSemaphoreWin32HandleInfoKhr {
27597            raw: self.raw,
27598            _p: PhantomData,
27599        }
27600    }
27601}
27602
27603
27604/// A `VkD3D12FenceSubmitInfoKHR`.
27605///
27606/// 
27607#[derive(Debug, Clone, Default)]
27608#[repr(C)]
27609pub struct D3d12FenceSubmitInfoKHR<'s> {
27610    raw: vks::VkD3D12FenceSubmitInfoKHR,
27611    _p: PhantomData<&'s ()>,
27612}
27613
27614impl<'s> D3d12FenceSubmitInfoKHR<'s> {
27615    pub fn builder<'b>() -> D3d12FenceSubmitInfoKHRBuilder<'b> {
27616        D3d12FenceSubmitInfoKHRBuilder::new()
27617    }
27618
27619    pub unsafe fn from_raw(raw: vks::VkD3D12FenceSubmitInfoKHR) -> D3d12FenceSubmitInfoKHR<'s> {
27620        D3d12FenceSubmitInfoKHR { raw, _p: PhantomData }
27621    }
27622
27623    pub fn next<'a>(&'a self) -> *const c_void {
27624        self.raw.pNext
27625    }
27626
27627    pub fn wait_semaphore_values<'a>(&'a self) -> &'a [u64] {
27628        unsafe { slice::from_raw_parts(self.raw.pWaitSemaphoreValues as *const _, self.raw.waitSemaphoreValuesCount as usize) }
27629    }
27630
27631    pub fn signal_semaphore_values<'a>(&'a self) -> &'a [u64] {
27632        unsafe { slice::from_raw_parts(self.raw.pSignalSemaphoreValues as *const _, self.raw.signalSemaphoreValuesCount as usize) }
27633    }
27634
27635    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
27636        self.raw.pNext = next;
27637    }
27638
27639    pub fn set_wait_semaphore_values<'m, 'a>(&mut self, wait_semaphore_values: &'a [u64])
27640            where 'a: 's {
27641        assert!(self.raw.waitSemaphoreValuesCount == 0 || self.raw.waitSemaphoreValuesCount == wait_semaphore_values.len() as _, 
27642            "count inconsistency found when specifying `D3d12FenceSubmitInfoKHR::wait_semaphore_values`.");
27643        self.raw.waitSemaphoreValuesCount = wait_semaphore_values.len() as _;
27644        self.raw.pWaitSemaphoreValues = wait_semaphore_values.as_ptr() as *const u64 as *const _;
27645    }
27646
27647    pub fn set_signal_semaphore_values<'m, 'a>(&mut self, signal_semaphore_values: &'a [u64])
27648            where 'a: 's {
27649        assert!(self.raw.signalSemaphoreValuesCount == 0 || self.raw.signalSemaphoreValuesCount == signal_semaphore_values.len() as _, 
27650            "count inconsistency found when specifying `D3d12FenceSubmitInfoKHR::signal_semaphore_values`.");
27651        self.raw.signalSemaphoreValuesCount = signal_semaphore_values.len() as _;
27652        self.raw.pSignalSemaphoreValues = signal_semaphore_values.as_ptr() as *const u64 as *const _;
27653    }
27654
27655    pub fn as_raw(&self) -> &vks::VkD3D12FenceSubmitInfoKHR {
27656        &self.raw
27657    }
27658}
27659
27660impl<'s> From<D3d12FenceSubmitInfoKHR<'s>> for vks::VkD3D12FenceSubmitInfoKHR {
27661    fn from(f: D3d12FenceSubmitInfoKHR<'s>) -> vks::VkD3D12FenceSubmitInfoKHR {
27662        f.raw
27663    }
27664}
27665
27666
27667/// A builder for `VkD3D12FenceSubmitInfoKHR`.
27668///
27669/// 
27670#[derive(Debug, Clone, Default)]
27671pub struct D3d12FenceSubmitInfoKHRBuilder<'b> {
27672    raw: vks::VkD3D12FenceSubmitInfoKHR,
27673    _p: PhantomData<&'b ()>, 
27674}
27675
27676impl<'b> D3d12FenceSubmitInfoKHRBuilder<'b> {
27677    pub fn new() -> D3d12FenceSubmitInfoKHRBuilder<'b> {
27678        D3d12FenceSubmitInfoKHRBuilder {
27679            raw: vks::VkD3D12FenceSubmitInfoKHR::default(),
27680            _p: PhantomData,
27681        }
27682    }
27683
27684    pub unsafe fn next<'m>(mut self, next: *const c_void) -> D3d12FenceSubmitInfoKHRBuilder<'b> {
27685        self.raw.pNext = next;
27686        self
27687    }
27688
27689    pub fn wait_semaphore_values<'m, 'a>(mut self, wait_semaphore_values: &'a [u64]) -> D3d12FenceSubmitInfoKHRBuilder<'b>
27690            where 'a: 'b {
27691        assert!(self.raw.waitSemaphoreValuesCount == 0 || self.raw.waitSemaphoreValuesCount == wait_semaphore_values.len() as _, 
27692            "count inconsistency found when specifying `D3d12FenceSubmitInfoKHR::wait_semaphore_values`.");
27693        self.raw.waitSemaphoreValuesCount = wait_semaphore_values.len() as _;
27694        self.raw.pWaitSemaphoreValues = wait_semaphore_values.as_ptr() as *const u64 as *const _;
27695        self
27696    }
27697
27698    pub fn signal_semaphore_values<'m, 'a>(mut self, signal_semaphore_values: &'a [u64]) -> D3d12FenceSubmitInfoKHRBuilder<'b>
27699            where 'a: 'b {
27700        assert!(self.raw.signalSemaphoreValuesCount == 0 || self.raw.signalSemaphoreValuesCount == signal_semaphore_values.len() as _, 
27701            "count inconsistency found when specifying `D3d12FenceSubmitInfoKHR::signal_semaphore_values`.");
27702        self.raw.signalSemaphoreValuesCount = signal_semaphore_values.len() as _;
27703        self.raw.pSignalSemaphoreValues = signal_semaphore_values.as_ptr() as *const u64 as *const _;
27704        self
27705    }
27706
27707    pub fn get_next<'a>(&'a self) -> *const c_void {
27708        self.raw.pNext
27709    }
27710
27711    pub fn get_wait_semaphore_values<'a>(&'a self) -> &'a [u64] {
27712        unsafe { slice::from_raw_parts(self.raw.pWaitSemaphoreValues as *const _, self.raw.waitSemaphoreValuesCount as usize) }
27713    }
27714
27715    pub fn get_signal_semaphore_values<'a>(&'a self) -> &'a [u64] {
27716        unsafe { slice::from_raw_parts(self.raw.pSignalSemaphoreValues as *const _, self.raw.signalSemaphoreValuesCount as usize) }
27717    }
27718
27719    pub fn build(self) -> D3d12FenceSubmitInfoKHR<'b> {
27720        D3d12FenceSubmitInfoKHR {
27721            raw: self.raw,
27722            _p: PhantomData,
27723        }
27724    }
27725}
27726
27727
27728/// A `VkSemaphoreGetWin32HandleInfoKHR`.
27729///
27730/// 
27731#[derive(Debug, Clone, Default)]
27732#[repr(C)]
27733pub struct SemaphoreGetWin32HandleInfoKhr<'s> {
27734    raw: vks::VkSemaphoreGetWin32HandleInfoKHR,
27735    _p: PhantomData<&'s ()>,
27736}
27737
27738impl<'s> SemaphoreGetWin32HandleInfoKhr<'s> {
27739    pub fn builder<'b>() -> SemaphoreGetWin32HandleInfoKhrBuilder<'b> {
27740        SemaphoreGetWin32HandleInfoKhrBuilder::new()
27741    }
27742
27743    pub unsafe fn from_raw(raw: vks::VkSemaphoreGetWin32HandleInfoKHR) -> SemaphoreGetWin32HandleInfoKhr<'s> {
27744        SemaphoreGetWin32HandleInfoKhr { raw, _p: PhantomData }
27745    }
27746
27747    pub fn next<'a>(&'a self) -> *const c_void {
27748        self.raw.pNext
27749    }
27750
27751    pub fn semaphore<'a>(&'a self) -> vks::VkSemaphore {
27752        self.raw.semaphore
27753    }
27754
27755    pub fn handle_type<'a>(&'a self) -> ExternalSemaphoreHandleTypeFlagsKhr {
27756        ExternalSemaphoreHandleTypeFlagsKhr::from_bits(self.raw.handleType)
27757            .expect("SemaphoreGetWin32HandleInfoKhr::handle_type: error converting flags")
27758    }
27759
27760    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
27761        self.raw.pNext = next;
27762    }
27763
27764    pub fn set_semaphore<'m, H>(&mut self, semaphore: H)
27765            where H: Handle<Target=SemaphoreHandle> {
27766        self.raw.semaphore = semaphore.handle().0;
27767    }
27768
27769    pub fn set_handle_type<'m>(&mut self, handle_type: ExternalSemaphoreHandleTypeFlagsKhr) {
27770        self.raw.handleType = handle_type.bits();
27771    }
27772
27773    pub fn as_raw(&self) -> &vks::VkSemaphoreGetWin32HandleInfoKHR {
27774        &self.raw
27775    }
27776}
27777
27778impl<'s> From<SemaphoreGetWin32HandleInfoKhr<'s>> for vks::VkSemaphoreGetWin32HandleInfoKHR {
27779    fn from(f: SemaphoreGetWin32HandleInfoKhr<'s>) -> vks::VkSemaphoreGetWin32HandleInfoKHR {
27780        f.raw
27781    }
27782}
27783
27784
27785/// A builder for `VkSemaphoreGetWin32HandleInfoKHR`.
27786///
27787/// 
27788#[derive(Debug, Clone, Default)]
27789pub struct SemaphoreGetWin32HandleInfoKhrBuilder<'b> {
27790    raw: vks::VkSemaphoreGetWin32HandleInfoKHR,
27791    _p: PhantomData<&'b ()>, 
27792}
27793
27794impl<'b> SemaphoreGetWin32HandleInfoKhrBuilder<'b> {
27795    pub fn new() -> SemaphoreGetWin32HandleInfoKhrBuilder<'b> {
27796        SemaphoreGetWin32HandleInfoKhrBuilder {
27797            raw: vks::VkSemaphoreGetWin32HandleInfoKHR::default(),
27798            _p: PhantomData,
27799        }
27800    }
27801
27802    pub unsafe fn next<'m>(mut self, next: *const c_void) -> SemaphoreGetWin32HandleInfoKhrBuilder<'b> {
27803        self.raw.pNext = next;
27804        self
27805    }
27806
27807    pub fn semaphore<'m, H>(mut self, semaphore: H) -> SemaphoreGetWin32HandleInfoKhrBuilder<'b>
27808            where H: Handle<Target=SemaphoreHandle> {
27809        self.raw.semaphore = semaphore.handle().0;
27810        self
27811    }
27812
27813    pub fn handle_type<'m>(mut self, handle_type: ExternalSemaphoreHandleTypeFlagsKhr) -> SemaphoreGetWin32HandleInfoKhrBuilder<'b> {
27814        self.raw.handleType = handle_type.bits();
27815        self
27816    }
27817
27818    pub fn get_next<'a>(&'a self) -> *const c_void {
27819        self.raw.pNext
27820    }
27821
27822    pub fn get_semaphore<'a>(&'a self) -> vks::VkSemaphore {
27823        self.raw.semaphore
27824    }
27825
27826    pub fn get_handle_type<'a>(&'a self) -> ExternalSemaphoreHandleTypeFlagsKhr {
27827        ExternalSemaphoreHandleTypeFlagsKhr::from_bits(self.raw.handleType)
27828            .expect("SemaphoreGetWin32HandleInfoKhr::handle_type: error converting flags")
27829    }
27830
27831    pub fn build(self) -> SemaphoreGetWin32HandleInfoKhr<'b> {
27832        SemaphoreGetWin32HandleInfoKhr {
27833            raw: self.raw,
27834            _p: PhantomData,
27835        }
27836    }
27837}
27838
27839
27840/// A `VkImportSemaphoreFdInfoKHR`.
27841///
27842/// 
27843#[derive(Debug, Clone, Default)]
27844#[repr(C)]
27845pub struct ImportSemaphoreFdInfoKhr<'s> {
27846    raw: vks::VkImportSemaphoreFdInfoKHR,
27847    _p: PhantomData<&'s ()>,
27848}
27849
27850impl<'s> ImportSemaphoreFdInfoKhr<'s> {
27851    pub fn builder<'b>() -> ImportSemaphoreFdInfoKhrBuilder<'b> {
27852        ImportSemaphoreFdInfoKhrBuilder::new()
27853    }
27854
27855    pub unsafe fn from_raw(raw: vks::VkImportSemaphoreFdInfoKHR) -> ImportSemaphoreFdInfoKhr<'s> {
27856        ImportSemaphoreFdInfoKhr { raw, _p: PhantomData }
27857    }
27858
27859    pub fn next<'a>(&'a self) -> *const c_void {
27860        self.raw.pNext
27861    }
27862
27863    pub fn semaphore<'a>(&'a self) -> vks::VkSemaphore {
27864        self.raw.semaphore
27865    }
27866
27867    pub fn flags<'a>(&'a self) -> SemaphoreImportFlagsKhr {
27868        SemaphoreImportFlagsKhr::from_bits(self.raw.flags)
27869            .expect("ImportSemaphoreFdInfoKhr::flags: error converting flags")
27870    }
27871
27872    pub fn handle_type<'a>(&'a self) -> ExternalSemaphoreHandleTypeFlagsKhr {
27873        ExternalSemaphoreHandleTypeFlagsKhr::from_bits(self.raw.handleType)
27874            .expect("ImportSemaphoreFdInfoKhr::handle_type: error converting flags")
27875    }
27876
27877    pub fn fd<'a>(&'a self) -> i32 {
27878        self.raw.fd.into()
27879    }
27880
27881    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
27882        self.raw.pNext = next;
27883    }
27884
27885    pub fn set_semaphore<'m, H>(&mut self, semaphore: H)
27886            where H: Handle<Target=SemaphoreHandle> {
27887        self.raw.semaphore = semaphore.handle().0;
27888    }
27889
27890    pub fn set_flags<'m>(&mut self, flags: SemaphoreImportFlagsKhr) {
27891        self.raw.flags = flags.bits();
27892    }
27893
27894    pub fn set_handle_type<'m>(&mut self, handle_type: ExternalSemaphoreHandleTypeFlagsKhr) {
27895        self.raw.handleType = handle_type.bits();
27896    }
27897
27898    pub fn set_fd<'m>(&mut self, fd: i32) {
27899        self.raw.fd = fd.into();
27900    }
27901
27902    pub fn as_raw(&self) -> &vks::VkImportSemaphoreFdInfoKHR {
27903        &self.raw
27904    }
27905}
27906
27907impl<'s> From<ImportSemaphoreFdInfoKhr<'s>> for vks::VkImportSemaphoreFdInfoKHR {
27908    fn from(f: ImportSemaphoreFdInfoKhr<'s>) -> vks::VkImportSemaphoreFdInfoKHR {
27909        f.raw
27910    }
27911}
27912
27913
27914/// A builder for `VkImportSemaphoreFdInfoKHR`.
27915///
27916/// 
27917#[derive(Debug, Clone, Default)]
27918pub struct ImportSemaphoreFdInfoKhrBuilder<'b> {
27919    raw: vks::VkImportSemaphoreFdInfoKHR,
27920    _p: PhantomData<&'b ()>, 
27921}
27922
27923impl<'b> ImportSemaphoreFdInfoKhrBuilder<'b> {
27924    pub fn new() -> ImportSemaphoreFdInfoKhrBuilder<'b> {
27925        ImportSemaphoreFdInfoKhrBuilder {
27926            raw: vks::VkImportSemaphoreFdInfoKHR::default(),
27927            _p: PhantomData,
27928        }
27929    }
27930
27931    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ImportSemaphoreFdInfoKhrBuilder<'b> {
27932        self.raw.pNext = next;
27933        self
27934    }
27935
27936    pub fn semaphore<'m, H>(mut self, semaphore: H) -> ImportSemaphoreFdInfoKhrBuilder<'b>
27937            where H: Handle<Target=SemaphoreHandle> {
27938        self.raw.semaphore = semaphore.handle().0;
27939        self
27940    }
27941
27942    pub fn flags<'m>(mut self, flags: SemaphoreImportFlagsKhr) -> ImportSemaphoreFdInfoKhrBuilder<'b> {
27943        self.raw.flags = flags.bits();
27944        self
27945    }
27946
27947    pub fn handle_type<'m>(mut self, handle_type: ExternalSemaphoreHandleTypeFlagsKhr) -> ImportSemaphoreFdInfoKhrBuilder<'b> {
27948        self.raw.handleType = handle_type.bits();
27949        self
27950    }
27951
27952    pub fn fd<'m>(mut self, fd: i32) -> ImportSemaphoreFdInfoKhrBuilder<'b> {
27953        self.raw.fd = fd.into();
27954        self
27955    }
27956
27957    pub fn get_next<'a>(&'a self) -> *const c_void {
27958        self.raw.pNext
27959    }
27960
27961    pub fn get_semaphore<'a>(&'a self) -> vks::VkSemaphore {
27962        self.raw.semaphore
27963    }
27964
27965    pub fn get_flags<'a>(&'a self) -> SemaphoreImportFlagsKhr {
27966        SemaphoreImportFlagsKhr::from_bits(self.raw.flags)
27967            .expect("ImportSemaphoreFdInfoKhr::flags: error converting flags")
27968    }
27969
27970    pub fn get_handle_type<'a>(&'a self) -> ExternalSemaphoreHandleTypeFlagsKhr {
27971        ExternalSemaphoreHandleTypeFlagsKhr::from_bits(self.raw.handleType)
27972            .expect("ImportSemaphoreFdInfoKhr::handle_type: error converting flags")
27973    }
27974
27975    pub fn get_fd<'a>(&'a self) -> i32 {
27976        self.raw.fd.into()
27977    }
27978
27979    pub fn build(self) -> ImportSemaphoreFdInfoKhr<'b> {
27980        ImportSemaphoreFdInfoKhr {
27981            raw: self.raw,
27982            _p: PhantomData,
27983        }
27984    }
27985}
27986
27987
27988/// A `VkSemaphoreGetFdInfoKHR`.
27989///
27990/// 
27991#[derive(Debug, Clone, Default)]
27992#[repr(C)]
27993pub struct SemaphoreGetFdInfoKhr<'s> {
27994    raw: vks::VkSemaphoreGetFdInfoKHR,
27995    _p: PhantomData<&'s ()>,
27996}
27997
27998impl<'s> SemaphoreGetFdInfoKhr<'s> {
27999    pub fn builder<'b>() -> SemaphoreGetFdInfoKhrBuilder<'b> {
28000        SemaphoreGetFdInfoKhrBuilder::new()
28001    }
28002
28003    pub unsafe fn from_raw(raw: vks::VkSemaphoreGetFdInfoKHR) -> SemaphoreGetFdInfoKhr<'s> {
28004        SemaphoreGetFdInfoKhr { raw, _p: PhantomData }
28005    }
28006
28007    pub fn next<'a>(&'a self) -> *const c_void {
28008        self.raw.pNext
28009    }
28010
28011    pub fn semaphore<'a>(&'a self) -> vks::VkSemaphore {
28012        self.raw.semaphore
28013    }
28014
28015    pub fn handle_type<'a>(&'a self) -> ExternalSemaphoreHandleTypeFlagsKhr {
28016        ExternalSemaphoreHandleTypeFlagsKhr::from_bits(self.raw.handleType)
28017            .expect("SemaphoreGetFdInfoKhr::handle_type: error converting flags")
28018    }
28019
28020    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
28021        self.raw.pNext = next;
28022    }
28023
28024    pub fn set_semaphore<'m, H>(&mut self, semaphore: H)
28025            where H: Handle<Target=SemaphoreHandle> {
28026        self.raw.semaphore = semaphore.handle().0;
28027    }
28028
28029    pub fn set_handle_type<'m>(&mut self, handle_type: ExternalSemaphoreHandleTypeFlagsKhr) {
28030        self.raw.handleType = handle_type.bits();
28031    }
28032
28033    pub fn as_raw(&self) -> &vks::VkSemaphoreGetFdInfoKHR {
28034        &self.raw
28035    }
28036}
28037
28038impl<'s> From<SemaphoreGetFdInfoKhr<'s>> for vks::VkSemaphoreGetFdInfoKHR {
28039    fn from(f: SemaphoreGetFdInfoKhr<'s>) -> vks::VkSemaphoreGetFdInfoKHR {
28040        f.raw
28041    }
28042}
28043
28044
28045/// A builder for `VkSemaphoreGetFdInfoKHR`.
28046///
28047/// 
28048#[derive(Debug, Clone, Default)]
28049pub struct SemaphoreGetFdInfoKhrBuilder<'b> {
28050    raw: vks::VkSemaphoreGetFdInfoKHR,
28051    _p: PhantomData<&'b ()>, 
28052}
28053
28054impl<'b> SemaphoreGetFdInfoKhrBuilder<'b> {
28055    pub fn new() -> SemaphoreGetFdInfoKhrBuilder<'b> {
28056        SemaphoreGetFdInfoKhrBuilder {
28057            raw: vks::VkSemaphoreGetFdInfoKHR::default(),
28058            _p: PhantomData,
28059        }
28060    }
28061
28062    pub unsafe fn next<'m>(mut self, next: *const c_void) -> SemaphoreGetFdInfoKhrBuilder<'b> {
28063        self.raw.pNext = next;
28064        self
28065    }
28066
28067    pub fn semaphore<'m, H>(mut self, semaphore: H) -> SemaphoreGetFdInfoKhrBuilder<'b>
28068            where H: Handle<Target=SemaphoreHandle> {
28069        self.raw.semaphore = semaphore.handle().0;
28070        self
28071    }
28072
28073    pub fn handle_type<'m>(mut self, handle_type: ExternalSemaphoreHandleTypeFlagsKhr) -> SemaphoreGetFdInfoKhrBuilder<'b> {
28074        self.raw.handleType = handle_type.bits();
28075        self
28076    }
28077
28078    pub fn get_next<'a>(&'a self) -> *const c_void {
28079        self.raw.pNext
28080    }
28081
28082    pub fn get_semaphore<'a>(&'a self) -> vks::VkSemaphore {
28083        self.raw.semaphore
28084    }
28085
28086    pub fn get_handle_type<'a>(&'a self) -> ExternalSemaphoreHandleTypeFlagsKhr {
28087        ExternalSemaphoreHandleTypeFlagsKhr::from_bits(self.raw.handleType)
28088            .expect("SemaphoreGetFdInfoKhr::handle_type: error converting flags")
28089    }
28090
28091    pub fn build(self) -> SemaphoreGetFdInfoKhr<'b> {
28092        SemaphoreGetFdInfoKhr {
28093            raw: self.raw,
28094            _p: PhantomData,
28095        }
28096    }
28097}
28098
28099
28100/// A `VkPhysicalDeviceExternalFenceInfoKHR`.
28101///
28102/// 
28103#[derive(Debug, Clone, Default)]
28104#[repr(C)]
28105pub struct PhysicalDeviceExternalFenceInfoKhr<'s> {
28106    raw: vks::VkPhysicalDeviceExternalFenceInfoKHR,
28107    _p: PhantomData<&'s ()>,
28108}
28109
28110impl<'s> PhysicalDeviceExternalFenceInfoKhr<'s> {
28111    pub fn builder<'b>() -> PhysicalDeviceExternalFenceInfoKhrBuilder<'b> {
28112        PhysicalDeviceExternalFenceInfoKhrBuilder::new()
28113    }
28114
28115    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceExternalFenceInfoKHR) -> PhysicalDeviceExternalFenceInfoKhr<'s> {
28116        PhysicalDeviceExternalFenceInfoKhr { raw, _p: PhantomData }
28117    }
28118
28119    pub fn next<'a>(&'a self) -> *const c_void {
28120        self.raw.pNext
28121    }
28122
28123    pub fn handle_type<'a>(&'a self) -> ExternalFenceHandleTypeFlagsKhr {
28124        ExternalFenceHandleTypeFlagsKhr::from_bits(self.raw.handleType)
28125            .expect("PhysicalDeviceExternalFenceInfoKhr::handle_type: error converting flags")
28126    }
28127
28128    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
28129        self.raw.pNext = next;
28130    }
28131
28132    pub fn set_handle_type<'m>(&mut self, handle_type: ExternalFenceHandleTypeFlagsKhr) {
28133        self.raw.handleType = handle_type.bits();
28134    }
28135
28136    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceExternalFenceInfoKHR {
28137        &self.raw
28138    }
28139}
28140
28141impl<'s> From<PhysicalDeviceExternalFenceInfoKhr<'s>> for vks::VkPhysicalDeviceExternalFenceInfoKHR {
28142    fn from(f: PhysicalDeviceExternalFenceInfoKhr<'s>) -> vks::VkPhysicalDeviceExternalFenceInfoKHR {
28143        f.raw
28144    }
28145}
28146
28147
28148/// A builder for `VkPhysicalDeviceExternalFenceInfoKHR`.
28149///
28150/// 
28151#[derive(Debug, Clone, Default)]
28152pub struct PhysicalDeviceExternalFenceInfoKhrBuilder<'b> {
28153    raw: vks::VkPhysicalDeviceExternalFenceInfoKHR,
28154    _p: PhantomData<&'b ()>, 
28155}
28156
28157impl<'b> PhysicalDeviceExternalFenceInfoKhrBuilder<'b> {
28158    pub fn new() -> PhysicalDeviceExternalFenceInfoKhrBuilder<'b> {
28159        PhysicalDeviceExternalFenceInfoKhrBuilder {
28160            raw: vks::VkPhysicalDeviceExternalFenceInfoKHR::default(),
28161            _p: PhantomData,
28162        }
28163    }
28164
28165    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PhysicalDeviceExternalFenceInfoKhrBuilder<'b> {
28166        self.raw.pNext = next;
28167        self
28168    }
28169
28170    pub fn handle_type<'m>(mut self, handle_type: ExternalFenceHandleTypeFlagsKhr) -> PhysicalDeviceExternalFenceInfoKhrBuilder<'b> {
28171        self.raw.handleType = handle_type.bits();
28172        self
28173    }
28174
28175    pub fn get_next<'a>(&'a self) -> *const c_void {
28176        self.raw.pNext
28177    }
28178
28179    pub fn get_handle_type<'a>(&'a self) -> ExternalFenceHandleTypeFlagsKhr {
28180        ExternalFenceHandleTypeFlagsKhr::from_bits(self.raw.handleType)
28181            .expect("PhysicalDeviceExternalFenceInfoKhr::handle_type: error converting flags")
28182    }
28183
28184    pub fn build(self) -> PhysicalDeviceExternalFenceInfoKhr<'b> {
28185        PhysicalDeviceExternalFenceInfoKhr {
28186            raw: self.raw,
28187            _p: PhantomData,
28188        }
28189    }
28190}
28191
28192
28193/// A `VkExternalFencePropertiesKHR`.
28194///
28195/// 
28196#[derive(Debug, Clone, Default)]
28197#[repr(C)]
28198pub struct ExternalFencePropertiesKhr<'s> {
28199    raw: vks::VkExternalFencePropertiesKHR,
28200    _p: PhantomData<&'s ()>,
28201}
28202
28203impl<'s> ExternalFencePropertiesKhr<'s> {
28204    pub fn builder<'b>() -> ExternalFencePropertiesKhrBuilder<'b> {
28205        ExternalFencePropertiesKhrBuilder::new()
28206    }
28207
28208    pub unsafe fn from_raw(raw: vks::VkExternalFencePropertiesKHR) -> ExternalFencePropertiesKhr<'s> {
28209        ExternalFencePropertiesKhr { raw, _p: PhantomData }
28210    }
28211
28212    pub fn next<'a>(&'a self) -> *mut c_void {
28213        self.raw.pNext
28214    }
28215
28216    pub fn export_from_imported_handle_types<'a>(&'a self) -> ExternalFenceHandleTypeFlagsKhr {
28217        ExternalFenceHandleTypeFlagsKhr::from_bits(self.raw.exportFromImportedHandleTypes)
28218            .expect("ExternalFencePropertiesKhr::export_from_imported_handle_types: error converting flags")
28219    }
28220
28221    pub fn compatible_handle_types<'a>(&'a self) -> ExternalFenceHandleTypeFlagsKhr {
28222        ExternalFenceHandleTypeFlagsKhr::from_bits(self.raw.compatibleHandleTypes)
28223            .expect("ExternalFencePropertiesKhr::compatible_handle_types: error converting flags")
28224    }
28225
28226    pub fn external_fence_features<'a>(&'a self) -> ExternalFenceFeatureFlagsKhr {
28227        ExternalFenceFeatureFlagsKhr::from_bits(self.raw.externalFenceFeatures)
28228            .expect("ExternalFencePropertiesKhr::external_fence_features: error converting flags")
28229    }
28230
28231    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
28232        self.raw.pNext = next;
28233    }
28234
28235    pub fn set_export_from_imported_handle_types<'m>(&mut self, export_from_imported_handle_types: ExternalFenceHandleTypeFlagsKhr) {
28236        self.raw.exportFromImportedHandleTypes = export_from_imported_handle_types.bits();
28237    }
28238
28239    pub fn set_compatible_handle_types<'m>(&mut self, compatible_handle_types: ExternalFenceHandleTypeFlagsKhr) {
28240        self.raw.compatibleHandleTypes = compatible_handle_types.bits();
28241    }
28242
28243    pub fn set_external_fence_features<'m>(&mut self, external_fence_features: ExternalFenceFeatureFlagsKhr) {
28244        self.raw.externalFenceFeatures = external_fence_features.bits();
28245    }
28246
28247    pub fn as_raw(&self) -> &vks::VkExternalFencePropertiesKHR {
28248        &self.raw
28249    }
28250}
28251
28252impl<'s> From<ExternalFencePropertiesKhr<'s>> for vks::VkExternalFencePropertiesKHR {
28253    fn from(f: ExternalFencePropertiesKhr<'s>) -> vks::VkExternalFencePropertiesKHR {
28254        f.raw
28255    }
28256}
28257
28258
28259/// A builder for `VkExternalFencePropertiesKHR`.
28260///
28261/// 
28262#[derive(Debug, Clone, Default)]
28263pub struct ExternalFencePropertiesKhrBuilder<'b> {
28264    raw: vks::VkExternalFencePropertiesKHR,
28265    _p: PhantomData<&'b ()>, 
28266}
28267
28268impl<'b> ExternalFencePropertiesKhrBuilder<'b> {
28269    pub fn new() -> ExternalFencePropertiesKhrBuilder<'b> {
28270        ExternalFencePropertiesKhrBuilder {
28271            raw: vks::VkExternalFencePropertiesKHR::default(),
28272            _p: PhantomData,
28273        }
28274    }
28275
28276    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> ExternalFencePropertiesKhrBuilder<'b> {
28277        self.raw.pNext = next;
28278        self
28279    }
28280
28281    pub fn export_from_imported_handle_types<'m>(mut self, export_from_imported_handle_types: ExternalFenceHandleTypeFlagsKhr) -> ExternalFencePropertiesKhrBuilder<'b> {
28282        self.raw.exportFromImportedHandleTypes = export_from_imported_handle_types.bits();
28283        self
28284    }
28285
28286    pub fn compatible_handle_types<'m>(mut self, compatible_handle_types: ExternalFenceHandleTypeFlagsKhr) -> ExternalFencePropertiesKhrBuilder<'b> {
28287        self.raw.compatibleHandleTypes = compatible_handle_types.bits();
28288        self
28289    }
28290
28291    pub fn external_fence_features<'m>(mut self, external_fence_features: ExternalFenceFeatureFlagsKhr) -> ExternalFencePropertiesKhrBuilder<'b> {
28292        self.raw.externalFenceFeatures = external_fence_features.bits();
28293        self
28294    }
28295
28296    pub fn get_next<'a>(&'a self) -> *mut c_void {
28297        self.raw.pNext
28298    }
28299
28300    pub fn get_export_from_imported_handle_types<'a>(&'a self) -> ExternalFenceHandleTypeFlagsKhr {
28301        ExternalFenceHandleTypeFlagsKhr::from_bits(self.raw.exportFromImportedHandleTypes)
28302            .expect("ExternalFencePropertiesKhr::export_from_imported_handle_types: error converting flags")
28303    }
28304
28305    pub fn get_compatible_handle_types<'a>(&'a self) -> ExternalFenceHandleTypeFlagsKhr {
28306        ExternalFenceHandleTypeFlagsKhr::from_bits(self.raw.compatibleHandleTypes)
28307            .expect("ExternalFencePropertiesKhr::compatible_handle_types: error converting flags")
28308    }
28309
28310    pub fn get_external_fence_features<'a>(&'a self) -> ExternalFenceFeatureFlagsKhr {
28311        ExternalFenceFeatureFlagsKhr::from_bits(self.raw.externalFenceFeatures)
28312            .expect("ExternalFencePropertiesKhr::external_fence_features: error converting flags")
28313    }
28314
28315    pub fn build(self) -> ExternalFencePropertiesKhr<'b> {
28316        ExternalFencePropertiesKhr {
28317            raw: self.raw,
28318            _p: PhantomData,
28319        }
28320    }
28321}
28322
28323
28324/// A `VkExportFenceCreateInfoKHR`.
28325///
28326/// 
28327#[derive(Debug, Clone, Default)]
28328#[repr(C)]
28329pub struct ExportFenceCreateInfoKhr<'s> {
28330    raw: vks::VkExportFenceCreateInfoKHR,
28331    _p: PhantomData<&'s ()>,
28332}
28333
28334impl<'s> ExportFenceCreateInfoKhr<'s> {
28335    pub fn builder<'b>() -> ExportFenceCreateInfoKhrBuilder<'b> {
28336        ExportFenceCreateInfoKhrBuilder::new()
28337    }
28338
28339    pub unsafe fn from_raw(raw: vks::VkExportFenceCreateInfoKHR) -> ExportFenceCreateInfoKhr<'s> {
28340        ExportFenceCreateInfoKhr { raw, _p: PhantomData }
28341    }
28342
28343    pub fn next<'a>(&'a self) -> *const c_void {
28344        self.raw.pNext
28345    }
28346
28347    pub fn handle_types<'a>(&'a self) -> ExternalFenceHandleTypeFlagsKhr {
28348        ExternalFenceHandleTypeFlagsKhr::from_bits(self.raw.handleTypes)
28349            .expect("ExportFenceCreateInfoKhr::handle_types: error converting flags")
28350    }
28351
28352    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
28353        self.raw.pNext = next;
28354    }
28355
28356    pub fn set_handle_types<'m>(&mut self, handle_types: ExternalFenceHandleTypeFlagsKhr) {
28357        self.raw.handleTypes = handle_types.bits();
28358    }
28359
28360    pub fn as_raw(&self) -> &vks::VkExportFenceCreateInfoKHR {
28361        &self.raw
28362    }
28363}
28364
28365impl<'s> From<ExportFenceCreateInfoKhr<'s>> for vks::VkExportFenceCreateInfoKHR {
28366    fn from(f: ExportFenceCreateInfoKhr<'s>) -> vks::VkExportFenceCreateInfoKHR {
28367        f.raw
28368    }
28369}
28370
28371
28372/// A builder for `VkExportFenceCreateInfoKHR`.
28373///
28374/// 
28375#[derive(Debug, Clone, Default)]
28376pub struct ExportFenceCreateInfoKhrBuilder<'b> {
28377    raw: vks::VkExportFenceCreateInfoKHR,
28378    _p: PhantomData<&'b ()>, 
28379}
28380
28381impl<'b> ExportFenceCreateInfoKhrBuilder<'b> {
28382    pub fn new() -> ExportFenceCreateInfoKhrBuilder<'b> {
28383        ExportFenceCreateInfoKhrBuilder {
28384            raw: vks::VkExportFenceCreateInfoKHR::default(),
28385            _p: PhantomData,
28386        }
28387    }
28388
28389    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ExportFenceCreateInfoKhrBuilder<'b> {
28390        self.raw.pNext = next;
28391        self
28392    }
28393
28394    pub fn handle_types<'m>(mut self, handle_types: ExternalFenceHandleTypeFlagsKhr) -> ExportFenceCreateInfoKhrBuilder<'b> {
28395        self.raw.handleTypes = handle_types.bits();
28396        self
28397    }
28398
28399    pub fn get_next<'a>(&'a self) -> *const c_void {
28400        self.raw.pNext
28401    }
28402
28403    pub fn get_handle_types<'a>(&'a self) -> ExternalFenceHandleTypeFlagsKhr {
28404        ExternalFenceHandleTypeFlagsKhr::from_bits(self.raw.handleTypes)
28405            .expect("ExportFenceCreateInfoKhr::handle_types: error converting flags")
28406    }
28407
28408    pub fn build(self) -> ExportFenceCreateInfoKhr<'b> {
28409        ExportFenceCreateInfoKhr {
28410            raw: self.raw,
28411            _p: PhantomData,
28412        }
28413    }
28414}
28415
28416
28417/// A `VkImportFenceWin32HandleInfoKHR`.
28418///
28419/// 
28420#[derive(Debug, Clone, Default)]
28421#[repr(C)]
28422pub struct ImportFenceWin32HandleInfoKhr<'s> {
28423    raw: vks::VkImportFenceWin32HandleInfoKHR,
28424    _p: PhantomData<&'s ()>,
28425}
28426
28427impl<'s> ImportFenceWin32HandleInfoKhr<'s> {
28428    pub fn builder<'b>() -> ImportFenceWin32HandleInfoKhrBuilder<'b> {
28429        ImportFenceWin32HandleInfoKhrBuilder::new()
28430    }
28431
28432    pub unsafe fn from_raw(raw: vks::VkImportFenceWin32HandleInfoKHR) -> ImportFenceWin32HandleInfoKhr<'s> {
28433        ImportFenceWin32HandleInfoKhr { raw, _p: PhantomData }
28434    }
28435
28436    pub fn next<'a>(&'a self) -> *const c_void {
28437        self.raw.pNext
28438    }
28439
28440    pub fn fence<'a>(&'a self) -> vks::VkFence {
28441        self.raw.fence
28442    }
28443
28444    pub fn flags<'a>(&'a self) -> FenceImportFlagsKhr {
28445        FenceImportFlagsKhr::from_bits(self.raw.flags)
28446            .expect("ImportFenceWin32HandleInfoKhr::flags: error converting flags")
28447    }
28448
28449    pub fn handle_type<'a>(&'a self) -> ExternalFenceHandleTypeFlagsKhr {
28450        ExternalFenceHandleTypeFlagsKhr::from_bits(self.raw.handleType)
28451            .expect("ImportFenceWin32HandleInfoKhr::handle_type: error converting flags")
28452    }
28453
28454    pub fn handle<'a>(&'a self) -> HANDLE {
28455        self.raw.handle.into()
28456    }
28457
28458    pub fn name<'a>(&'a self) -> LPCWSTR {
28459        self.raw.name.into()
28460    }
28461
28462    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
28463        self.raw.pNext = next;
28464    }
28465
28466    pub fn set_fence<'m, H>(&mut self, fence: H)
28467            where H: Handle<Target=FenceHandle> {
28468        self.raw.fence = fence.handle().0;
28469    }
28470
28471    pub fn set_flags<'m>(&mut self, flags: FenceImportFlagsKhr) {
28472        self.raw.flags = flags.bits();
28473    }
28474
28475    pub fn set_handle_type<'m>(&mut self, handle_type: ExternalFenceHandleTypeFlagsKhr) {
28476        self.raw.handleType = handle_type.bits();
28477    }
28478
28479    pub fn set_handle<'m>(&mut self, handle: HANDLE) {
28480        self.raw.handle = handle.into();
28481    }
28482
28483    pub fn set_name<'m>(&mut self, name: LPCWSTR) {
28484        self.raw.name = name.into();
28485    }
28486
28487    pub fn as_raw(&self) -> &vks::VkImportFenceWin32HandleInfoKHR {
28488        &self.raw
28489    }
28490}
28491
28492impl<'s> From<ImportFenceWin32HandleInfoKhr<'s>> for vks::VkImportFenceWin32HandleInfoKHR {
28493    fn from(f: ImportFenceWin32HandleInfoKhr<'s>) -> vks::VkImportFenceWin32HandleInfoKHR {
28494        f.raw
28495    }
28496}
28497
28498
28499/// A builder for `VkImportFenceWin32HandleInfoKHR`.
28500///
28501/// 
28502#[derive(Debug, Clone, Default)]
28503pub struct ImportFenceWin32HandleInfoKhrBuilder<'b> {
28504    raw: vks::VkImportFenceWin32HandleInfoKHR,
28505    _p: PhantomData<&'b ()>, 
28506}
28507
28508impl<'b> ImportFenceWin32HandleInfoKhrBuilder<'b> {
28509    pub fn new() -> ImportFenceWin32HandleInfoKhrBuilder<'b> {
28510        ImportFenceWin32HandleInfoKhrBuilder {
28511            raw: vks::VkImportFenceWin32HandleInfoKHR::default(),
28512            _p: PhantomData,
28513        }
28514    }
28515
28516    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ImportFenceWin32HandleInfoKhrBuilder<'b> {
28517        self.raw.pNext = next;
28518        self
28519    }
28520
28521    pub fn fence<'m, H>(mut self, fence: H) -> ImportFenceWin32HandleInfoKhrBuilder<'b>
28522            where H: Handle<Target=FenceHandle> {
28523        self.raw.fence = fence.handle().0;
28524        self
28525    }
28526
28527    pub fn flags<'m>(mut self, flags: FenceImportFlagsKhr) -> ImportFenceWin32HandleInfoKhrBuilder<'b> {
28528        self.raw.flags = flags.bits();
28529        self
28530    }
28531
28532    pub fn handle_type<'m>(mut self, handle_type: ExternalFenceHandleTypeFlagsKhr) -> ImportFenceWin32HandleInfoKhrBuilder<'b> {
28533        self.raw.handleType = handle_type.bits();
28534        self
28535    }
28536
28537    pub fn handle<'m>(mut self, handle: HANDLE) -> ImportFenceWin32HandleInfoKhrBuilder<'b> {
28538        self.raw.handle = handle.into();
28539        self
28540    }
28541
28542    pub fn name<'m>(mut self, name: LPCWSTR) -> ImportFenceWin32HandleInfoKhrBuilder<'b> {
28543        self.raw.name = name.into();
28544        self
28545    }
28546
28547    pub fn get_next<'a>(&'a self) -> *const c_void {
28548        self.raw.pNext
28549    }
28550
28551    pub fn get_fence<'a>(&'a self) -> vks::VkFence {
28552        self.raw.fence
28553    }
28554
28555    pub fn get_flags<'a>(&'a self) -> FenceImportFlagsKhr {
28556        FenceImportFlagsKhr::from_bits(self.raw.flags)
28557            .expect("ImportFenceWin32HandleInfoKhr::flags: error converting flags")
28558    }
28559
28560    pub fn get_handle_type<'a>(&'a self) -> ExternalFenceHandleTypeFlagsKhr {
28561        ExternalFenceHandleTypeFlagsKhr::from_bits(self.raw.handleType)
28562            .expect("ImportFenceWin32HandleInfoKhr::handle_type: error converting flags")
28563    }
28564
28565    pub fn get_handle<'a>(&'a self) -> HANDLE {
28566        self.raw.handle.into()
28567    }
28568
28569    pub fn get_name<'a>(&'a self) -> LPCWSTR {
28570        self.raw.name.into()
28571    }
28572
28573    pub fn build(self) -> ImportFenceWin32HandleInfoKhr<'b> {
28574        ImportFenceWin32HandleInfoKhr {
28575            raw: self.raw,
28576            _p: PhantomData,
28577        }
28578    }
28579}
28580
28581
28582/// A `VkExportFenceWin32HandleInfoKHR`.
28583///
28584/// 
28585#[derive(Debug, Clone, Default)]
28586#[repr(C)]
28587pub struct ExportFenceWin32HandleInfoKhr<'s> {
28588    raw: vks::VkExportFenceWin32HandleInfoKHR,
28589    _p: PhantomData<&'s ()>,
28590}
28591
28592impl<'s> ExportFenceWin32HandleInfoKhr<'s> {
28593    pub fn builder<'b>() -> ExportFenceWin32HandleInfoKhrBuilder<'b> {
28594        ExportFenceWin32HandleInfoKhrBuilder::new()
28595    }
28596
28597    pub unsafe fn from_raw(raw: vks::VkExportFenceWin32HandleInfoKHR) -> ExportFenceWin32HandleInfoKhr<'s> {
28598        ExportFenceWin32HandleInfoKhr { raw, _p: PhantomData }
28599    }
28600
28601    pub fn next<'a>(&'a self) -> *const c_void {
28602        self.raw.pNext
28603    }
28604
28605    pub fn attributes<'a>(&'a self) -> &'a SECURITY_ATTRIBUTES {
28606        unsafe { &*(self.raw.pAttributes as *const _) }
28607    }
28608
28609    pub fn dw_access<'a>(&'a self) -> DWORD {
28610        self.raw.dwAccess.into()
28611    }
28612
28613    pub fn name<'a>(&'a self) -> LPCWSTR {
28614        self.raw.name.into()
28615    }
28616
28617    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
28618        self.raw.pNext = next;
28619    }
28620
28621    pub fn set_attributes<'m, 'a>(&mut self, attributes: &'a SECURITY_ATTRIBUTES) {
28622        self.raw.pAttributes = attributes;
28623    }
28624
28625    pub fn set_dw_access<'m>(&mut self, dw_access: DWORD) {
28626        self.raw.dwAccess = dw_access.into();
28627    }
28628
28629    pub fn set_name<'m>(&mut self, name: LPCWSTR) {
28630        self.raw.name = name.into();
28631    }
28632
28633    pub fn as_raw(&self) -> &vks::VkExportFenceWin32HandleInfoKHR {
28634        &self.raw
28635    }
28636}
28637
28638impl<'s> From<ExportFenceWin32HandleInfoKhr<'s>> for vks::VkExportFenceWin32HandleInfoKHR {
28639    fn from(f: ExportFenceWin32HandleInfoKhr<'s>) -> vks::VkExportFenceWin32HandleInfoKHR {
28640        f.raw
28641    }
28642}
28643
28644
28645/// A builder for `VkExportFenceWin32HandleInfoKHR`.
28646///
28647/// 
28648#[derive(Debug, Clone, Default)]
28649pub struct ExportFenceWin32HandleInfoKhrBuilder<'b> {
28650    raw: vks::VkExportFenceWin32HandleInfoKHR,
28651    _p: PhantomData<&'b ()>, 
28652}
28653
28654impl<'b> ExportFenceWin32HandleInfoKhrBuilder<'b> {
28655    pub fn new() -> ExportFenceWin32HandleInfoKhrBuilder<'b> {
28656        ExportFenceWin32HandleInfoKhrBuilder {
28657            raw: vks::VkExportFenceWin32HandleInfoKHR::default(),
28658            _p: PhantomData,
28659        }
28660    }
28661
28662    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ExportFenceWin32HandleInfoKhrBuilder<'b> {
28663        self.raw.pNext = next;
28664        self
28665    }
28666
28667    pub fn attributes<'m, 'a>(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> ExportFenceWin32HandleInfoKhrBuilder<'b> {
28668        self.raw.pAttributes = attributes;
28669        self
28670    }
28671
28672    pub fn dw_access<'m>(mut self, dw_access: DWORD) -> ExportFenceWin32HandleInfoKhrBuilder<'b> {
28673        self.raw.dwAccess = dw_access.into();
28674        self
28675    }
28676
28677    pub fn name<'m>(mut self, name: LPCWSTR) -> ExportFenceWin32HandleInfoKhrBuilder<'b> {
28678        self.raw.name = name.into();
28679        self
28680    }
28681
28682    pub fn get_next<'a>(&'a self) -> *const c_void {
28683        self.raw.pNext
28684    }
28685
28686    pub fn get_attributes<'a>(&'a self) -> &'a SECURITY_ATTRIBUTES {
28687        unsafe { &*(self.raw.pAttributes as *const _) }
28688    }
28689
28690    pub fn get_dw_access<'a>(&'a self) -> DWORD {
28691        self.raw.dwAccess.into()
28692    }
28693
28694    pub fn get_name<'a>(&'a self) -> LPCWSTR {
28695        self.raw.name.into()
28696    }
28697
28698    pub fn build(self) -> ExportFenceWin32HandleInfoKhr<'b> {
28699        ExportFenceWin32HandleInfoKhr {
28700            raw: self.raw,
28701            _p: PhantomData,
28702        }
28703    }
28704}
28705
28706
28707/// A `VkFenceGetWin32HandleInfoKHR`.
28708///
28709/// 
28710#[derive(Debug, Clone, Default)]
28711#[repr(C)]
28712pub struct FenceGetWin32HandleInfoKhr<'s> {
28713    raw: vks::VkFenceGetWin32HandleInfoKHR,
28714    _p: PhantomData<&'s ()>,
28715}
28716
28717impl<'s> FenceGetWin32HandleInfoKhr<'s> {
28718    pub fn builder<'b>() -> FenceGetWin32HandleInfoKhrBuilder<'b> {
28719        FenceGetWin32HandleInfoKhrBuilder::new()
28720    }
28721
28722    pub unsafe fn from_raw(raw: vks::VkFenceGetWin32HandleInfoKHR) -> FenceGetWin32HandleInfoKhr<'s> {
28723        FenceGetWin32HandleInfoKhr { raw, _p: PhantomData }
28724    }
28725
28726    pub fn next<'a>(&'a self) -> *const c_void {
28727        self.raw.pNext
28728    }
28729
28730    pub fn fence<'a>(&'a self) -> vks::VkFence {
28731        self.raw.fence
28732    }
28733
28734    pub fn handle_type<'a>(&'a self) -> ExternalFenceHandleTypeFlagsKhr {
28735        ExternalFenceHandleTypeFlagsKhr::from_bits(self.raw.handleType)
28736            .expect("FenceGetWin32HandleInfoKhr::handle_type: error converting flags")
28737    }
28738
28739    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
28740        self.raw.pNext = next;
28741    }
28742
28743    pub fn set_fence<'m, H>(&mut self, fence: H)
28744            where H: Handle<Target=FenceHandle> {
28745        self.raw.fence = fence.handle().0;
28746    }
28747
28748    pub fn set_handle_type<'m>(&mut self, handle_type: ExternalFenceHandleTypeFlagsKhr) {
28749        self.raw.handleType = handle_type.bits();
28750    }
28751
28752    pub fn as_raw(&self) -> &vks::VkFenceGetWin32HandleInfoKHR {
28753        &self.raw
28754    }
28755}
28756
28757impl<'s> From<FenceGetWin32HandleInfoKhr<'s>> for vks::VkFenceGetWin32HandleInfoKHR {
28758    fn from(f: FenceGetWin32HandleInfoKhr<'s>) -> vks::VkFenceGetWin32HandleInfoKHR {
28759        f.raw
28760    }
28761}
28762
28763
28764/// A builder for `VkFenceGetWin32HandleInfoKHR`.
28765///
28766/// 
28767#[derive(Debug, Clone, Default)]
28768pub struct FenceGetWin32HandleInfoKhrBuilder<'b> {
28769    raw: vks::VkFenceGetWin32HandleInfoKHR,
28770    _p: PhantomData<&'b ()>, 
28771}
28772
28773impl<'b> FenceGetWin32HandleInfoKhrBuilder<'b> {
28774    pub fn new() -> FenceGetWin32HandleInfoKhrBuilder<'b> {
28775        FenceGetWin32HandleInfoKhrBuilder {
28776            raw: vks::VkFenceGetWin32HandleInfoKHR::default(),
28777            _p: PhantomData,
28778        }
28779    }
28780
28781    pub unsafe fn next<'m>(mut self, next: *const c_void) -> FenceGetWin32HandleInfoKhrBuilder<'b> {
28782        self.raw.pNext = next;
28783        self
28784    }
28785
28786    pub fn fence<'m, H>(mut self, fence: H) -> FenceGetWin32HandleInfoKhrBuilder<'b>
28787            where H: Handle<Target=FenceHandle> {
28788        self.raw.fence = fence.handle().0;
28789        self
28790    }
28791
28792    pub fn handle_type<'m>(mut self, handle_type: ExternalFenceHandleTypeFlagsKhr) -> FenceGetWin32HandleInfoKhrBuilder<'b> {
28793        self.raw.handleType = handle_type.bits();
28794        self
28795    }
28796
28797    pub fn get_next<'a>(&'a self) -> *const c_void {
28798        self.raw.pNext
28799    }
28800
28801    pub fn get_fence<'a>(&'a self) -> vks::VkFence {
28802        self.raw.fence
28803    }
28804
28805    pub fn get_handle_type<'a>(&'a self) -> ExternalFenceHandleTypeFlagsKhr {
28806        ExternalFenceHandleTypeFlagsKhr::from_bits(self.raw.handleType)
28807            .expect("FenceGetWin32HandleInfoKhr::handle_type: error converting flags")
28808    }
28809
28810    pub fn build(self) -> FenceGetWin32HandleInfoKhr<'b> {
28811        FenceGetWin32HandleInfoKhr {
28812            raw: self.raw,
28813            _p: PhantomData,
28814        }
28815    }
28816}
28817
28818
28819/// A `VkImportFenceFdInfoKHR`.
28820///
28821/// 
28822#[derive(Debug, Clone, Default)]
28823#[repr(C)]
28824pub struct ImportFenceFdInfoKhr<'s> {
28825    raw: vks::VkImportFenceFdInfoKHR,
28826    _p: PhantomData<&'s ()>,
28827}
28828
28829impl<'s> ImportFenceFdInfoKhr<'s> {
28830    pub fn builder<'b>() -> ImportFenceFdInfoKhrBuilder<'b> {
28831        ImportFenceFdInfoKhrBuilder::new()
28832    }
28833
28834    pub unsafe fn from_raw(raw: vks::VkImportFenceFdInfoKHR) -> ImportFenceFdInfoKhr<'s> {
28835        ImportFenceFdInfoKhr { raw, _p: PhantomData }
28836    }
28837
28838    pub fn next<'a>(&'a self) -> *const c_void {
28839        self.raw.pNext
28840    }
28841
28842    pub fn fence<'a>(&'a self) -> vks::VkFence {
28843        self.raw.fence
28844    }
28845
28846    pub fn flags<'a>(&'a self) -> FenceImportFlagsKhr {
28847        FenceImportFlagsKhr::from_bits(self.raw.flags)
28848            .expect("ImportFenceFdInfoKhr::flags: error converting flags")
28849    }
28850
28851    pub fn handle_type<'a>(&'a self) -> ExternalFenceHandleTypeFlagsKhr {
28852        ExternalFenceHandleTypeFlagsKhr::from_bits(self.raw.handleType)
28853            .expect("ImportFenceFdInfoKhr::handle_type: error converting flags")
28854    }
28855
28856    pub fn fd<'a>(&'a self) -> i32 {
28857        self.raw.fd.into()
28858    }
28859
28860    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
28861        self.raw.pNext = next;
28862    }
28863
28864    pub fn set_fence<'m, H>(&mut self, fence: H)
28865            where H: Handle<Target=FenceHandle> {
28866        self.raw.fence = fence.handle().0;
28867    }
28868
28869    pub fn set_flags<'m>(&mut self, flags: FenceImportFlagsKhr) {
28870        self.raw.flags = flags.bits();
28871    }
28872
28873    pub fn set_handle_type<'m>(&mut self, handle_type: ExternalFenceHandleTypeFlagsKhr) {
28874        self.raw.handleType = handle_type.bits();
28875    }
28876
28877    pub fn set_fd<'m>(&mut self, fd: i32) {
28878        self.raw.fd = fd.into();
28879    }
28880
28881    pub fn as_raw(&self) -> &vks::VkImportFenceFdInfoKHR {
28882        &self.raw
28883    }
28884}
28885
28886impl<'s> From<ImportFenceFdInfoKhr<'s>> for vks::VkImportFenceFdInfoKHR {
28887    fn from(f: ImportFenceFdInfoKhr<'s>) -> vks::VkImportFenceFdInfoKHR {
28888        f.raw
28889    }
28890}
28891
28892
28893/// A builder for `VkImportFenceFdInfoKHR`.
28894///
28895/// 
28896#[derive(Debug, Clone, Default)]
28897pub struct ImportFenceFdInfoKhrBuilder<'b> {
28898    raw: vks::VkImportFenceFdInfoKHR,
28899    _p: PhantomData<&'b ()>, 
28900}
28901
28902impl<'b> ImportFenceFdInfoKhrBuilder<'b> {
28903    pub fn new() -> ImportFenceFdInfoKhrBuilder<'b> {
28904        ImportFenceFdInfoKhrBuilder {
28905            raw: vks::VkImportFenceFdInfoKHR::default(),
28906            _p: PhantomData,
28907        }
28908    }
28909
28910    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ImportFenceFdInfoKhrBuilder<'b> {
28911        self.raw.pNext = next;
28912        self
28913    }
28914
28915    pub fn fence<'m, H>(mut self, fence: H) -> ImportFenceFdInfoKhrBuilder<'b>
28916            where H: Handle<Target=FenceHandle> {
28917        self.raw.fence = fence.handle().0;
28918        self
28919    }
28920
28921    pub fn flags<'m>(mut self, flags: FenceImportFlagsKhr) -> ImportFenceFdInfoKhrBuilder<'b> {
28922        self.raw.flags = flags.bits();
28923        self
28924    }
28925
28926    pub fn handle_type<'m>(mut self, handle_type: ExternalFenceHandleTypeFlagsKhr) -> ImportFenceFdInfoKhrBuilder<'b> {
28927        self.raw.handleType = handle_type.bits();
28928        self
28929    }
28930
28931    pub fn fd<'m>(mut self, fd: i32) -> ImportFenceFdInfoKhrBuilder<'b> {
28932        self.raw.fd = fd.into();
28933        self
28934    }
28935
28936    pub fn get_next<'a>(&'a self) -> *const c_void {
28937        self.raw.pNext
28938    }
28939
28940    pub fn get_fence<'a>(&'a self) -> vks::VkFence {
28941        self.raw.fence
28942    }
28943
28944    pub fn get_flags<'a>(&'a self) -> FenceImportFlagsKhr {
28945        FenceImportFlagsKhr::from_bits(self.raw.flags)
28946            .expect("ImportFenceFdInfoKhr::flags: error converting flags")
28947    }
28948
28949    pub fn get_handle_type<'a>(&'a self) -> ExternalFenceHandleTypeFlagsKhr {
28950        ExternalFenceHandleTypeFlagsKhr::from_bits(self.raw.handleType)
28951            .expect("ImportFenceFdInfoKhr::handle_type: error converting flags")
28952    }
28953
28954    pub fn get_fd<'a>(&'a self) -> i32 {
28955        self.raw.fd.into()
28956    }
28957
28958    pub fn build(self) -> ImportFenceFdInfoKhr<'b> {
28959        ImportFenceFdInfoKhr {
28960            raw: self.raw,
28961            _p: PhantomData,
28962        }
28963    }
28964}
28965
28966
28967/// A `VkFenceGetFdInfoKHR`.
28968///
28969/// 
28970#[derive(Debug, Clone, Default)]
28971#[repr(C)]
28972pub struct FenceGetFdInfoKhr<'s> {
28973    raw: vks::VkFenceGetFdInfoKHR,
28974    _p: PhantomData<&'s ()>,
28975}
28976
28977impl<'s> FenceGetFdInfoKhr<'s> {
28978    pub fn builder<'b>() -> FenceGetFdInfoKhrBuilder<'b> {
28979        FenceGetFdInfoKhrBuilder::new()
28980    }
28981
28982    pub unsafe fn from_raw(raw: vks::VkFenceGetFdInfoKHR) -> FenceGetFdInfoKhr<'s> {
28983        FenceGetFdInfoKhr { raw, _p: PhantomData }
28984    }
28985
28986    pub fn next<'a>(&'a self) -> *const c_void {
28987        self.raw.pNext
28988    }
28989
28990    pub fn fence<'a>(&'a self) -> vks::VkFence {
28991        self.raw.fence
28992    }
28993
28994    pub fn handle_type<'a>(&'a self) -> ExternalFenceHandleTypeFlagsKhr {
28995        ExternalFenceHandleTypeFlagsKhr::from_bits(self.raw.handleType)
28996            .expect("FenceGetFdInfoKhr::handle_type: error converting flags")
28997    }
28998
28999    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
29000        self.raw.pNext = next;
29001    }
29002
29003    pub fn set_fence<'m, H>(&mut self, fence: H)
29004            where H: Handle<Target=FenceHandle> {
29005        self.raw.fence = fence.handle().0;
29006    }
29007
29008    pub fn set_handle_type<'m>(&mut self, handle_type: ExternalFenceHandleTypeFlagsKhr) {
29009        self.raw.handleType = handle_type.bits();
29010    }
29011
29012    pub fn as_raw(&self) -> &vks::VkFenceGetFdInfoKHR {
29013        &self.raw
29014    }
29015}
29016
29017impl<'s> From<FenceGetFdInfoKhr<'s>> for vks::VkFenceGetFdInfoKHR {
29018    fn from(f: FenceGetFdInfoKhr<'s>) -> vks::VkFenceGetFdInfoKHR {
29019        f.raw
29020    }
29021}
29022
29023
29024/// A builder for `VkFenceGetFdInfoKHR`.
29025///
29026/// 
29027#[derive(Debug, Clone, Default)]
29028pub struct FenceGetFdInfoKhrBuilder<'b> {
29029    raw: vks::VkFenceGetFdInfoKHR,
29030    _p: PhantomData<&'b ()>, 
29031}
29032
29033impl<'b> FenceGetFdInfoKhrBuilder<'b> {
29034    pub fn new() -> FenceGetFdInfoKhrBuilder<'b> {
29035        FenceGetFdInfoKhrBuilder {
29036            raw: vks::VkFenceGetFdInfoKHR::default(),
29037            _p: PhantomData,
29038        }
29039    }
29040
29041    pub unsafe fn next<'m>(mut self, next: *const c_void) -> FenceGetFdInfoKhrBuilder<'b> {
29042        self.raw.pNext = next;
29043        self
29044    }
29045
29046    pub fn fence<'m, H>(mut self, fence: H) -> FenceGetFdInfoKhrBuilder<'b>
29047            where H: Handle<Target=FenceHandle> {
29048        self.raw.fence = fence.handle().0;
29049        self
29050    }
29051
29052    pub fn handle_type<'m>(mut self, handle_type: ExternalFenceHandleTypeFlagsKhr) -> FenceGetFdInfoKhrBuilder<'b> {
29053        self.raw.handleType = handle_type.bits();
29054        self
29055    }
29056
29057    pub fn get_next<'a>(&'a self) -> *const c_void {
29058        self.raw.pNext
29059    }
29060
29061    pub fn get_fence<'a>(&'a self) -> vks::VkFence {
29062        self.raw.fence
29063    }
29064
29065    pub fn get_handle_type<'a>(&'a self) -> ExternalFenceHandleTypeFlagsKhr {
29066        ExternalFenceHandleTypeFlagsKhr::from_bits(self.raw.handleType)
29067            .expect("FenceGetFdInfoKhr::handle_type: error converting flags")
29068    }
29069
29070    pub fn build(self) -> FenceGetFdInfoKhr<'b> {
29071        FenceGetFdInfoKhr {
29072            raw: self.raw,
29073            _p: PhantomData,
29074        }
29075    }
29076}
29077
29078
29079/// A `VkPhysicalDeviceMultiviewFeaturesKHX`.
29080///
29081/// 
29082#[cfg(feature = "experimental")]
29083#[derive(Debug, Clone, Default)]
29084#[repr(C)]
29085pub struct PhysicalDeviceMultiviewFeaturesKhx<'s> {
29086    raw: vks::VkPhysicalDeviceMultiviewFeaturesKHX,
29087    _p: PhantomData<&'s ()>,
29088}
29089
29090#[cfg(feature = "experimental")]
29091impl<'s> PhysicalDeviceMultiviewFeaturesKhx<'s> {
29092    pub fn builder<'b>() -> PhysicalDeviceMultiviewFeaturesKhxBuilder<'b> {
29093        PhysicalDeviceMultiviewFeaturesKhxBuilder::new()
29094    }
29095
29096    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceMultiviewFeaturesKHX) -> PhysicalDeviceMultiviewFeaturesKhx<'s> {
29097        PhysicalDeviceMultiviewFeaturesKhx { raw, _p: PhantomData }
29098    }
29099
29100    pub fn next<'a>(&'a self) -> *mut c_void {
29101        self.raw.pNext
29102    }
29103
29104    pub fn multiview<'a>(&'a self) -> bool {
29105        self.raw.multiview != 0
29106    }
29107
29108    pub fn multiview_geometry_shader<'a>(&'a self) -> bool {
29109        self.raw.multiviewGeometryShader != 0
29110    }
29111
29112    pub fn multiview_tessellation_shader<'a>(&'a self) -> bool {
29113        self.raw.multiviewTessellationShader != 0
29114    }
29115
29116    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
29117        self.raw.pNext = next;
29118    }
29119
29120    pub fn set_multiview<'m>(&mut self, multiview: bool) {
29121        self.raw.multiview = multiview as u32;
29122    }
29123
29124    pub fn set_multiview_geometry_shader<'m>(&mut self, multiview_geometry_shader: bool) {
29125        self.raw.multiviewGeometryShader = multiview_geometry_shader as u32;
29126    }
29127
29128    pub fn set_multiview_tessellation_shader<'m>(&mut self, multiview_tessellation_shader: bool) {
29129        self.raw.multiviewTessellationShader = multiview_tessellation_shader as u32;
29130    }
29131
29132    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceMultiviewFeaturesKHX {
29133        &self.raw
29134    }
29135}
29136
29137#[cfg(feature = "experimental")]
29138impl<'s> From<PhysicalDeviceMultiviewFeaturesKhx<'s>> for vks::VkPhysicalDeviceMultiviewFeaturesKHX {
29139    fn from(f: PhysicalDeviceMultiviewFeaturesKhx<'s>) -> vks::VkPhysicalDeviceMultiviewFeaturesKHX {
29140        f.raw
29141    }
29142}
29143
29144
29145/// A builder for `VkPhysicalDeviceMultiviewFeaturesKHX`.
29146///
29147/// 
29148#[cfg(feature = "experimental")]
29149#[derive(Debug, Clone, Default)]
29150pub struct PhysicalDeviceMultiviewFeaturesKhxBuilder<'b> {
29151    raw: vks::VkPhysicalDeviceMultiviewFeaturesKHX,
29152    _p: PhantomData<&'b ()>, 
29153}
29154
29155#[cfg(feature = "experimental")]
29156impl<'b> PhysicalDeviceMultiviewFeaturesKhxBuilder<'b> {
29157    pub fn new() -> PhysicalDeviceMultiviewFeaturesKhxBuilder<'b> {
29158        PhysicalDeviceMultiviewFeaturesKhxBuilder {
29159            raw: vks::VkPhysicalDeviceMultiviewFeaturesKHX::default(),
29160            _p: PhantomData,
29161        }
29162    }
29163
29164    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> PhysicalDeviceMultiviewFeaturesKhxBuilder<'b> {
29165        self.raw.pNext = next;
29166        self
29167    }
29168
29169    pub fn multiview<'m>(mut self, multiview: bool) -> PhysicalDeviceMultiviewFeaturesKhxBuilder<'b> {
29170        self.raw.multiview = multiview as u32;
29171        self
29172    }
29173
29174    pub fn multiview_geometry_shader<'m>(mut self, multiview_geometry_shader: bool) -> PhysicalDeviceMultiviewFeaturesKhxBuilder<'b> {
29175        self.raw.multiviewGeometryShader = multiview_geometry_shader as u32;
29176        self
29177    }
29178
29179    pub fn multiview_tessellation_shader<'m>(mut self, multiview_tessellation_shader: bool) -> PhysicalDeviceMultiviewFeaturesKhxBuilder<'b> {
29180        self.raw.multiviewTessellationShader = multiview_tessellation_shader as u32;
29181        self
29182    }
29183
29184    pub fn get_next<'a>(&'a self) -> *mut c_void {
29185        self.raw.pNext
29186    }
29187
29188    pub fn get_multiview<'a>(&'a self) -> bool {
29189        self.raw.multiview != 0
29190    }
29191
29192    pub fn get_multiview_geometry_shader<'a>(&'a self) -> bool {
29193        self.raw.multiviewGeometryShader != 0
29194    }
29195
29196    pub fn get_multiview_tessellation_shader<'a>(&'a self) -> bool {
29197        self.raw.multiviewTessellationShader != 0
29198    }
29199
29200    pub fn build(self) -> PhysicalDeviceMultiviewFeaturesKhx<'b> {
29201        PhysicalDeviceMultiviewFeaturesKhx {
29202            raw: self.raw,
29203            _p: PhantomData,
29204        }
29205    }
29206}
29207
29208
29209/// A `VkPhysicalDeviceMultiviewPropertiesKHX`.
29210///
29211/// 
29212#[cfg(feature = "experimental")]
29213#[derive(Debug, Clone, Default)]
29214#[repr(C)]
29215pub struct PhysicalDeviceMultiviewPropertiesKhx<'s> {
29216    raw: vks::VkPhysicalDeviceMultiviewPropertiesKHX,
29217    _p: PhantomData<&'s ()>,
29218}
29219
29220#[cfg(feature = "experimental")]
29221impl<'s> PhysicalDeviceMultiviewPropertiesKhx<'s> {
29222    pub fn builder<'b>() -> PhysicalDeviceMultiviewPropertiesKhxBuilder<'b> {
29223        PhysicalDeviceMultiviewPropertiesKhxBuilder::new()
29224    }
29225
29226    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceMultiviewPropertiesKHX) -> PhysicalDeviceMultiviewPropertiesKhx<'s> {
29227        PhysicalDeviceMultiviewPropertiesKhx { raw, _p: PhantomData }
29228    }
29229
29230    pub fn next<'a>(&'a self) -> *mut c_void {
29231        self.raw.pNext
29232    }
29233
29234    pub fn max_multiview_view_count<'a>(&'a self) -> u32 {
29235        self.raw.maxMultiviewViewCount.into()
29236    }
29237
29238    pub fn max_multiview_instance_index<'a>(&'a self) -> u32 {
29239        self.raw.maxMultiviewInstanceIndex.into()
29240    }
29241
29242    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
29243        self.raw.pNext = next;
29244    }
29245
29246    pub fn set_max_multiview_view_count<'m>(&mut self, max_multiview_view_count: u32) {
29247        self.raw.maxMultiviewViewCount = max_multiview_view_count.into();
29248    }
29249
29250    pub fn set_max_multiview_instance_index<'m>(&mut self, max_multiview_instance_index: u32) {
29251        self.raw.maxMultiviewInstanceIndex = max_multiview_instance_index.into();
29252    }
29253
29254    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceMultiviewPropertiesKHX {
29255        &self.raw
29256    }
29257}
29258
29259#[cfg(feature = "experimental")]
29260impl<'s> From<PhysicalDeviceMultiviewPropertiesKhx<'s>> for vks::VkPhysicalDeviceMultiviewPropertiesKHX {
29261    fn from(f: PhysicalDeviceMultiviewPropertiesKhx<'s>) -> vks::VkPhysicalDeviceMultiviewPropertiesKHX {
29262        f.raw
29263    }
29264}
29265
29266
29267/// A builder for `VkPhysicalDeviceMultiviewPropertiesKHX`.
29268///
29269/// 
29270#[cfg(feature = "experimental")]
29271#[derive(Debug, Clone, Default)]
29272pub struct PhysicalDeviceMultiviewPropertiesKhxBuilder<'b> {
29273    raw: vks::VkPhysicalDeviceMultiviewPropertiesKHX,
29274    _p: PhantomData<&'b ()>, 
29275}
29276
29277#[cfg(feature = "experimental")]
29278impl<'b> PhysicalDeviceMultiviewPropertiesKhxBuilder<'b> {
29279    pub fn new() -> PhysicalDeviceMultiviewPropertiesKhxBuilder<'b> {
29280        PhysicalDeviceMultiviewPropertiesKhxBuilder {
29281            raw: vks::VkPhysicalDeviceMultiviewPropertiesKHX::default(),
29282            _p: PhantomData,
29283        }
29284    }
29285
29286    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> PhysicalDeviceMultiviewPropertiesKhxBuilder<'b> {
29287        self.raw.pNext = next;
29288        self
29289    }
29290
29291    pub fn max_multiview_view_count<'m>(mut self, max_multiview_view_count: u32) -> PhysicalDeviceMultiviewPropertiesKhxBuilder<'b> {
29292        self.raw.maxMultiviewViewCount = max_multiview_view_count.into();
29293        self
29294    }
29295
29296    pub fn max_multiview_instance_index<'m>(mut self, max_multiview_instance_index: u32) -> PhysicalDeviceMultiviewPropertiesKhxBuilder<'b> {
29297        self.raw.maxMultiviewInstanceIndex = max_multiview_instance_index.into();
29298        self
29299    }
29300
29301    pub fn get_next<'a>(&'a self) -> *mut c_void {
29302        self.raw.pNext
29303    }
29304
29305    pub fn get_max_multiview_view_count<'a>(&'a self) -> u32 {
29306        self.raw.maxMultiviewViewCount.into()
29307    }
29308
29309    pub fn get_max_multiview_instance_index<'a>(&'a self) -> u32 {
29310        self.raw.maxMultiviewInstanceIndex.into()
29311    }
29312
29313    pub fn build(self) -> PhysicalDeviceMultiviewPropertiesKhx<'b> {
29314        PhysicalDeviceMultiviewPropertiesKhx {
29315            raw: self.raw,
29316            _p: PhantomData,
29317        }
29318    }
29319}
29320
29321
29322/// A `VkSurfaceCapabilities2EXT`.
29323///
29324/// 
29325#[derive(Debug, Clone, Default)]
29326#[repr(C)]
29327pub struct SurfaceCapabilities2Ext<'s> {
29328    raw: vks::VkSurfaceCapabilities2EXT,
29329    _p: PhantomData<&'s ()>,
29330}
29331
29332impl<'s> SurfaceCapabilities2Ext<'s> {
29333    pub fn builder<'b>() -> SurfaceCapabilities2ExtBuilder<'b> {
29334        SurfaceCapabilities2ExtBuilder::new()
29335    }
29336
29337    pub unsafe fn from_raw(raw: vks::VkSurfaceCapabilities2EXT) -> SurfaceCapabilities2Ext<'s> {
29338        SurfaceCapabilities2Ext { raw, _p: PhantomData }
29339    }
29340
29341    pub fn next<'a>(&'a self) -> *mut c_void {
29342        self.raw.pNext
29343    }
29344
29345    pub fn min_image_count<'a>(&'a self) -> u32 {
29346        self.raw.minImageCount.into()
29347    }
29348
29349    pub fn max_image_count<'a>(&'a self) -> u32 {
29350        self.raw.maxImageCount.into()
29351    }
29352
29353    pub fn current_extent<'a>(&'a self) -> &'a Extent2d {
29354        unsafe { &*(&self.raw.currentExtent as *const vks::VkExtent2D as *const Extent2d) }
29355    }
29356
29357    pub fn current_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
29358        unsafe { &mut *(&mut self.raw.currentExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
29359    }
29360
29361    pub fn min_image_extent<'a>(&'a self) -> &'a Extent2d {
29362        unsafe { &*(&self.raw.minImageExtent as *const vks::VkExtent2D as *const Extent2d) }
29363    }
29364
29365    pub fn min_image_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
29366        unsafe { &mut *(&mut self.raw.minImageExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
29367    }
29368
29369    pub fn max_image_extent<'a>(&'a self) -> &'a Extent2d {
29370        unsafe { &*(&self.raw.maxImageExtent as *const vks::VkExtent2D as *const Extent2d) }
29371    }
29372
29373    pub fn max_image_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
29374        unsafe { &mut *(&mut self.raw.maxImageExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
29375    }
29376
29377    pub fn max_image_array_layers<'a>(&'a self) -> u32 {
29378        self.raw.maxImageArrayLayers.into()
29379    }
29380
29381    pub fn supported_transforms<'a>(&'a self) -> SurfaceTransformFlagsKhr {
29382        SurfaceTransformFlagsKhr::from_bits(self.raw.supportedTransforms)
29383            .expect("SurfaceCapabilities2Ext::supported_transforms: error converting flags")
29384    }
29385
29386    pub fn current_transform<'a>(&'a self) -> SurfaceTransformFlagsKhr {
29387        SurfaceTransformFlagsKhr::from_bits(self.raw.currentTransform)
29388            .expect("SurfaceCapabilities2Ext::current_transform: error converting flags")
29389    }
29390
29391    pub fn supported_composite_alpha<'a>(&'a self) -> CompositeAlphaFlagsKhr {
29392        CompositeAlphaFlagsKhr::from_bits(self.raw.supportedCompositeAlpha)
29393            .expect("SurfaceCapabilities2Ext::supported_composite_alpha: error converting flags")
29394    }
29395
29396    pub fn supported_usage_flags<'a>(&'a self) -> ImageUsageFlags {
29397        ImageUsageFlags::from_bits(self.raw.supportedUsageFlags)
29398            .expect("SurfaceCapabilities2Ext::supported_usage_flags: error converting flags")
29399    }
29400
29401    pub fn supported_surface_counters<'a>(&'a self) -> SurfaceCounterFlagsExt {
29402        SurfaceCounterFlagsExt::from_bits(self.raw.supportedSurfaceCounters)
29403            .expect("SurfaceCapabilities2Ext::supported_surface_counters: error converting flags")
29404    }
29405
29406    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
29407        self.raw.pNext = next;
29408    }
29409
29410    pub fn set_min_image_count<'m>(&mut self, min_image_count: u32) {
29411        self.raw.minImageCount = min_image_count.into();
29412    }
29413
29414    pub fn set_max_image_count<'m>(&mut self, max_image_count: u32) {
29415        self.raw.maxImageCount = max_image_count.into();
29416    }
29417
29418    pub fn set_current_extent<'m>(&mut self, current_extent: Extent2d) {
29419        self.raw.currentExtent = current_extent.raw;
29420    }
29421
29422    pub fn set_min_image_extent<'m>(&mut self, min_image_extent: Extent2d) {
29423        self.raw.minImageExtent = min_image_extent.raw;
29424    }
29425
29426    pub fn set_max_image_extent<'m>(&mut self, max_image_extent: Extent2d) {
29427        self.raw.maxImageExtent = max_image_extent.raw;
29428    }
29429
29430    pub fn set_max_image_array_layers<'m>(&mut self, max_image_array_layers: u32) {
29431        self.raw.maxImageArrayLayers = max_image_array_layers.into();
29432    }
29433
29434    pub fn set_supported_transforms<'m>(&mut self, supported_transforms: SurfaceTransformFlagsKhr) {
29435        self.raw.supportedTransforms = supported_transforms.bits();
29436    }
29437
29438    pub fn set_current_transform<'m>(&mut self, current_transform: SurfaceTransformFlagsKhr) {
29439        self.raw.currentTransform = current_transform.bits();
29440    }
29441
29442    pub fn set_supported_composite_alpha<'m>(&mut self, supported_composite_alpha: CompositeAlphaFlagsKhr) {
29443        self.raw.supportedCompositeAlpha = supported_composite_alpha.bits();
29444    }
29445
29446    pub fn set_supported_usage_flags<'m>(&mut self, supported_usage_flags: ImageUsageFlags) {
29447        self.raw.supportedUsageFlags = supported_usage_flags.bits();
29448    }
29449
29450    pub fn set_supported_surface_counters<'m>(&mut self, supported_surface_counters: SurfaceCounterFlagsExt) {
29451        self.raw.supportedSurfaceCounters = supported_surface_counters.bits();
29452    }
29453
29454    pub fn as_raw(&self) -> &vks::VkSurfaceCapabilities2EXT {
29455        &self.raw
29456    }
29457}
29458
29459impl<'s> From<SurfaceCapabilities2Ext<'s>> for vks::VkSurfaceCapabilities2EXT {
29460    fn from(f: SurfaceCapabilities2Ext<'s>) -> vks::VkSurfaceCapabilities2EXT {
29461        f.raw
29462    }
29463}
29464
29465
29466/// A builder for `VkSurfaceCapabilities2EXT`.
29467///
29468/// 
29469#[derive(Debug, Clone, Default)]
29470pub struct SurfaceCapabilities2ExtBuilder<'b> {
29471    raw: vks::VkSurfaceCapabilities2EXT,
29472    _p: PhantomData<&'b ()>, 
29473}
29474
29475impl<'b> SurfaceCapabilities2ExtBuilder<'b> {
29476    pub fn new() -> SurfaceCapabilities2ExtBuilder<'b> {
29477        SurfaceCapabilities2ExtBuilder {
29478            raw: vks::VkSurfaceCapabilities2EXT::default(),
29479            _p: PhantomData,
29480        }
29481    }
29482
29483    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> SurfaceCapabilities2ExtBuilder<'b> {
29484        self.raw.pNext = next;
29485        self
29486    }
29487
29488    pub fn min_image_count<'m>(mut self, min_image_count: u32) -> SurfaceCapabilities2ExtBuilder<'b> {
29489        self.raw.minImageCount = min_image_count.into();
29490        self
29491    }
29492
29493    pub fn max_image_count<'m>(mut self, max_image_count: u32) -> SurfaceCapabilities2ExtBuilder<'b> {
29494        self.raw.maxImageCount = max_image_count.into();
29495        self
29496    }
29497
29498    pub fn current_extent<'m>(mut self, current_extent: Extent2d) -> SurfaceCapabilities2ExtBuilder<'b> {
29499        self.raw.currentExtent = current_extent.raw;
29500        self
29501    }
29502
29503    pub fn min_image_extent<'m>(mut self, min_image_extent: Extent2d) -> SurfaceCapabilities2ExtBuilder<'b> {
29504        self.raw.minImageExtent = min_image_extent.raw;
29505        self
29506    }
29507
29508    pub fn max_image_extent<'m>(mut self, max_image_extent: Extent2d) -> SurfaceCapabilities2ExtBuilder<'b> {
29509        self.raw.maxImageExtent = max_image_extent.raw;
29510        self
29511    }
29512
29513    pub fn max_image_array_layers<'m>(mut self, max_image_array_layers: u32) -> SurfaceCapabilities2ExtBuilder<'b> {
29514        self.raw.maxImageArrayLayers = max_image_array_layers.into();
29515        self
29516    }
29517
29518    pub fn supported_transforms<'m>(mut self, supported_transforms: SurfaceTransformFlagsKhr) -> SurfaceCapabilities2ExtBuilder<'b> {
29519        self.raw.supportedTransforms = supported_transforms.bits();
29520        self
29521    }
29522
29523    pub fn current_transform<'m>(mut self, current_transform: SurfaceTransformFlagsKhr) -> SurfaceCapabilities2ExtBuilder<'b> {
29524        self.raw.currentTransform = current_transform.bits();
29525        self
29526    }
29527
29528    pub fn supported_composite_alpha<'m>(mut self, supported_composite_alpha: CompositeAlphaFlagsKhr) -> SurfaceCapabilities2ExtBuilder<'b> {
29529        self.raw.supportedCompositeAlpha = supported_composite_alpha.bits();
29530        self
29531    }
29532
29533    pub fn supported_usage_flags<'m>(mut self, supported_usage_flags: ImageUsageFlags) -> SurfaceCapabilities2ExtBuilder<'b> {
29534        self.raw.supportedUsageFlags = supported_usage_flags.bits();
29535        self
29536    }
29537
29538    pub fn supported_surface_counters<'m>(mut self, supported_surface_counters: SurfaceCounterFlagsExt) -> SurfaceCapabilities2ExtBuilder<'b> {
29539        self.raw.supportedSurfaceCounters = supported_surface_counters.bits();
29540        self
29541    }
29542
29543    pub fn get_next<'a>(&'a self) -> *mut c_void {
29544        self.raw.pNext
29545    }
29546
29547    pub fn get_min_image_count<'a>(&'a self) -> u32 {
29548        self.raw.minImageCount.into()
29549    }
29550
29551    pub fn get_max_image_count<'a>(&'a self) -> u32 {
29552        self.raw.maxImageCount.into()
29553    }
29554
29555    pub fn get_current_extent<'a>(&'a self) -> &'a Extent2d {
29556        unsafe { &*(&self.raw.currentExtent as *const vks::VkExtent2D as *const Extent2d) }
29557    }
29558
29559    pub fn get_current_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
29560        unsafe { &mut *(&mut self.raw.currentExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
29561    }
29562
29563    pub fn get_min_image_extent<'a>(&'a self) -> &'a Extent2d {
29564        unsafe { &*(&self.raw.minImageExtent as *const vks::VkExtent2D as *const Extent2d) }
29565    }
29566
29567    pub fn get_min_image_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
29568        unsafe { &mut *(&mut self.raw.minImageExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
29569    }
29570
29571    pub fn get_max_image_extent<'a>(&'a self) -> &'a Extent2d {
29572        unsafe { &*(&self.raw.maxImageExtent as *const vks::VkExtent2D as *const Extent2d) }
29573    }
29574
29575    pub fn get_max_image_extent_mut<'a>(&'a mut self) -> &'a mut Extent2d {
29576        unsafe { &mut *(&mut self.raw.maxImageExtent as *mut  vks::VkExtent2D as *mut Extent2d) }
29577    }
29578
29579    pub fn get_max_image_array_layers<'a>(&'a self) -> u32 {
29580        self.raw.maxImageArrayLayers.into()
29581    }
29582
29583    pub fn get_supported_transforms<'a>(&'a self) -> SurfaceTransformFlagsKhr {
29584        SurfaceTransformFlagsKhr::from_bits(self.raw.supportedTransforms)
29585            .expect("SurfaceCapabilities2Ext::supported_transforms: error converting flags")
29586    }
29587
29588    pub fn get_current_transform<'a>(&'a self) -> SurfaceTransformFlagsKhr {
29589        SurfaceTransformFlagsKhr::from_bits(self.raw.currentTransform)
29590            .expect("SurfaceCapabilities2Ext::current_transform: error converting flags")
29591    }
29592
29593    pub fn get_supported_composite_alpha<'a>(&'a self) -> CompositeAlphaFlagsKhr {
29594        CompositeAlphaFlagsKhr::from_bits(self.raw.supportedCompositeAlpha)
29595            .expect("SurfaceCapabilities2Ext::supported_composite_alpha: error converting flags")
29596    }
29597
29598    pub fn get_supported_usage_flags<'a>(&'a self) -> ImageUsageFlags {
29599        ImageUsageFlags::from_bits(self.raw.supportedUsageFlags)
29600            .expect("SurfaceCapabilities2Ext::supported_usage_flags: error converting flags")
29601    }
29602
29603    pub fn get_supported_surface_counters<'a>(&'a self) -> SurfaceCounterFlagsExt {
29604        SurfaceCounterFlagsExt::from_bits(self.raw.supportedSurfaceCounters)
29605            .expect("SurfaceCapabilities2Ext::supported_surface_counters: error converting flags")
29606    }
29607
29608    pub fn build(self) -> SurfaceCapabilities2Ext<'b> {
29609        SurfaceCapabilities2Ext {
29610            raw: self.raw,
29611            _p: PhantomData,
29612        }
29613    }
29614}
29615
29616
29617/// A `VkDisplayPowerInfoEXT`.
29618///
29619/// 
29620#[derive(Debug, Clone, Default)]
29621#[repr(C)]
29622pub struct DisplayPowerInfoExt<'s> {
29623    raw: vks::VkDisplayPowerInfoEXT,
29624    _p: PhantomData<&'s ()>,
29625}
29626
29627impl<'s> DisplayPowerInfoExt<'s> {
29628    pub fn builder<'b>() -> DisplayPowerInfoExtBuilder<'b> {
29629        DisplayPowerInfoExtBuilder::new()
29630    }
29631
29632    pub unsafe fn from_raw(raw: vks::VkDisplayPowerInfoEXT) -> DisplayPowerInfoExt<'s> {
29633        DisplayPowerInfoExt { raw, _p: PhantomData }
29634    }
29635
29636    pub fn next<'a>(&'a self) -> *const c_void {
29637        self.raw.pNext
29638    }
29639
29640    pub fn power_state<'a>(&'a self) -> DisplayPowerStateExt {
29641        self.raw.powerState.into()
29642    }
29643
29644    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
29645        self.raw.pNext = next;
29646    }
29647
29648    pub fn set_power_state<'m>(&mut self, power_state: DisplayPowerStateExt) {
29649        self.raw.powerState = power_state.into();
29650    }
29651
29652    pub fn as_raw(&self) -> &vks::VkDisplayPowerInfoEXT {
29653        &self.raw
29654    }
29655}
29656
29657impl<'s> From<DisplayPowerInfoExt<'s>> for vks::VkDisplayPowerInfoEXT {
29658    fn from(f: DisplayPowerInfoExt<'s>) -> vks::VkDisplayPowerInfoEXT {
29659        f.raw
29660    }
29661}
29662
29663
29664/// A builder for `VkDisplayPowerInfoEXT`.
29665///
29666/// 
29667#[derive(Debug, Clone, Default)]
29668pub struct DisplayPowerInfoExtBuilder<'b> {
29669    raw: vks::VkDisplayPowerInfoEXT,
29670    _p: PhantomData<&'b ()>, 
29671}
29672
29673impl<'b> DisplayPowerInfoExtBuilder<'b> {
29674    pub fn new() -> DisplayPowerInfoExtBuilder<'b> {
29675        DisplayPowerInfoExtBuilder {
29676            raw: vks::VkDisplayPowerInfoEXT::default(),
29677            _p: PhantomData,
29678        }
29679    }
29680
29681    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DisplayPowerInfoExtBuilder<'b> {
29682        self.raw.pNext = next;
29683        self
29684    }
29685
29686    pub fn power_state<'m>(mut self, power_state: DisplayPowerStateExt) -> DisplayPowerInfoExtBuilder<'b> {
29687        self.raw.powerState = power_state.into();
29688        self
29689    }
29690
29691    pub fn get_next<'a>(&'a self) -> *const c_void {
29692        self.raw.pNext
29693    }
29694
29695    pub fn get_power_state<'a>(&'a self) -> DisplayPowerStateExt {
29696        self.raw.powerState.into()
29697    }
29698
29699    pub fn build(self) -> DisplayPowerInfoExt<'b> {
29700        DisplayPowerInfoExt {
29701            raw: self.raw,
29702            _p: PhantomData,
29703        }
29704    }
29705}
29706
29707
29708/// A `VkDeviceEventInfoEXT`.
29709///
29710/// 
29711#[derive(Debug, Clone, Default)]
29712#[repr(C)]
29713pub struct DeviceEventInfoExt<'s> {
29714    raw: vks::VkDeviceEventInfoEXT,
29715    _p: PhantomData<&'s ()>,
29716}
29717
29718impl<'s> DeviceEventInfoExt<'s> {
29719    pub fn builder<'b>() -> DeviceEventInfoExtBuilder<'b> {
29720        DeviceEventInfoExtBuilder::new()
29721    }
29722
29723    pub unsafe fn from_raw(raw: vks::VkDeviceEventInfoEXT) -> DeviceEventInfoExt<'s> {
29724        DeviceEventInfoExt { raw, _p: PhantomData }
29725    }
29726
29727    pub fn next<'a>(&'a self) -> *const c_void {
29728        self.raw.pNext
29729    }
29730
29731    pub fn device_event<'a>(&'a self) -> DeviceEventTypeExt {
29732        self.raw.deviceEvent.into()
29733    }
29734
29735    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
29736        self.raw.pNext = next;
29737    }
29738
29739    pub fn set_device_event<'m>(&mut self, device_event: DeviceEventTypeExt) {
29740        self.raw.deviceEvent = device_event.into();
29741    }
29742
29743    pub fn as_raw(&self) -> &vks::VkDeviceEventInfoEXT {
29744        &self.raw
29745    }
29746}
29747
29748impl<'s> From<DeviceEventInfoExt<'s>> for vks::VkDeviceEventInfoEXT {
29749    fn from(f: DeviceEventInfoExt<'s>) -> vks::VkDeviceEventInfoEXT {
29750        f.raw
29751    }
29752}
29753
29754
29755/// A builder for `VkDeviceEventInfoEXT`.
29756///
29757/// 
29758#[derive(Debug, Clone, Default)]
29759pub struct DeviceEventInfoExtBuilder<'b> {
29760    raw: vks::VkDeviceEventInfoEXT,
29761    _p: PhantomData<&'b ()>, 
29762}
29763
29764impl<'b> DeviceEventInfoExtBuilder<'b> {
29765    pub fn new() -> DeviceEventInfoExtBuilder<'b> {
29766        DeviceEventInfoExtBuilder {
29767            raw: vks::VkDeviceEventInfoEXT::default(),
29768            _p: PhantomData,
29769        }
29770    }
29771
29772    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DeviceEventInfoExtBuilder<'b> {
29773        self.raw.pNext = next;
29774        self
29775    }
29776
29777    pub fn device_event<'m>(mut self, device_event: DeviceEventTypeExt) -> DeviceEventInfoExtBuilder<'b> {
29778        self.raw.deviceEvent = device_event.into();
29779        self
29780    }
29781
29782    pub fn get_next<'a>(&'a self) -> *const c_void {
29783        self.raw.pNext
29784    }
29785
29786    pub fn get_device_event<'a>(&'a self) -> DeviceEventTypeExt {
29787        self.raw.deviceEvent.into()
29788    }
29789
29790    pub fn build(self) -> DeviceEventInfoExt<'b> {
29791        DeviceEventInfoExt {
29792            raw: self.raw,
29793            _p: PhantomData,
29794        }
29795    }
29796}
29797
29798
29799/// A `VkDisplayEventInfoEXT`.
29800///
29801/// 
29802#[derive(Debug, Clone, Default)]
29803#[repr(C)]
29804pub struct DisplayEventInfoExt<'s> {
29805    raw: vks::VkDisplayEventInfoEXT,
29806    _p: PhantomData<&'s ()>,
29807}
29808
29809impl<'s> DisplayEventInfoExt<'s> {
29810    pub fn builder<'b>() -> DisplayEventInfoExtBuilder<'b> {
29811        DisplayEventInfoExtBuilder::new()
29812    }
29813
29814    pub unsafe fn from_raw(raw: vks::VkDisplayEventInfoEXT) -> DisplayEventInfoExt<'s> {
29815        DisplayEventInfoExt { raw, _p: PhantomData }
29816    }
29817
29818    pub fn next<'a>(&'a self) -> *const c_void {
29819        self.raw.pNext
29820    }
29821
29822    pub fn display_event<'a>(&'a self) -> DisplayEventTypeExt {
29823        self.raw.displayEvent.into()
29824    }
29825
29826    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
29827        self.raw.pNext = next;
29828    }
29829
29830    pub fn set_display_event<'m>(&mut self, display_event: DisplayEventTypeExt) {
29831        self.raw.displayEvent = display_event.into();
29832    }
29833
29834    pub fn as_raw(&self) -> &vks::VkDisplayEventInfoEXT {
29835        &self.raw
29836    }
29837}
29838
29839impl<'s> From<DisplayEventInfoExt<'s>> for vks::VkDisplayEventInfoEXT {
29840    fn from(f: DisplayEventInfoExt<'s>) -> vks::VkDisplayEventInfoEXT {
29841        f.raw
29842    }
29843}
29844
29845
29846/// A builder for `VkDisplayEventInfoEXT`.
29847///
29848/// 
29849#[derive(Debug, Clone, Default)]
29850pub struct DisplayEventInfoExtBuilder<'b> {
29851    raw: vks::VkDisplayEventInfoEXT,
29852    _p: PhantomData<&'b ()>, 
29853}
29854
29855impl<'b> DisplayEventInfoExtBuilder<'b> {
29856    pub fn new() -> DisplayEventInfoExtBuilder<'b> {
29857        DisplayEventInfoExtBuilder {
29858            raw: vks::VkDisplayEventInfoEXT::default(),
29859            _p: PhantomData,
29860        }
29861    }
29862
29863    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DisplayEventInfoExtBuilder<'b> {
29864        self.raw.pNext = next;
29865        self
29866    }
29867
29868    pub fn display_event<'m>(mut self, display_event: DisplayEventTypeExt) -> DisplayEventInfoExtBuilder<'b> {
29869        self.raw.displayEvent = display_event.into();
29870        self
29871    }
29872
29873    pub fn get_next<'a>(&'a self) -> *const c_void {
29874        self.raw.pNext
29875    }
29876
29877    pub fn get_display_event<'a>(&'a self) -> DisplayEventTypeExt {
29878        self.raw.displayEvent.into()
29879    }
29880
29881    pub fn build(self) -> DisplayEventInfoExt<'b> {
29882        DisplayEventInfoExt {
29883            raw: self.raw,
29884            _p: PhantomData,
29885        }
29886    }
29887}
29888
29889
29890/// A `VkSwapchainCounterCreateInfoEXT`.
29891///
29892/// 
29893#[derive(Debug, Clone, Default)]
29894#[repr(C)]
29895pub struct SwapchainCounterCreateInfoExt<'s> {
29896    raw: vks::VkSwapchainCounterCreateInfoEXT,
29897    _p: PhantomData<&'s ()>,
29898}
29899
29900impl<'s> SwapchainCounterCreateInfoExt<'s> {
29901    pub fn builder<'b>() -> SwapchainCounterCreateInfoExtBuilder<'b> {
29902        SwapchainCounterCreateInfoExtBuilder::new()
29903    }
29904
29905    pub unsafe fn from_raw(raw: vks::VkSwapchainCounterCreateInfoEXT) -> SwapchainCounterCreateInfoExt<'s> {
29906        SwapchainCounterCreateInfoExt { raw, _p: PhantomData }
29907    }
29908
29909    pub fn next<'a>(&'a self) -> *const c_void {
29910        self.raw.pNext
29911    }
29912
29913    pub fn surface_counters<'a>(&'a self) -> SurfaceCounterFlagsExt {
29914        SurfaceCounterFlagsExt::from_bits(self.raw.surfaceCounters)
29915            .expect("SwapchainCounterCreateInfoExt::surface_counters: error converting flags")
29916    }
29917
29918    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
29919        self.raw.pNext = next;
29920    }
29921
29922    pub fn set_surface_counters<'m>(&mut self, surface_counters: SurfaceCounterFlagsExt) {
29923        self.raw.surfaceCounters = surface_counters.bits();
29924    }
29925
29926    pub fn as_raw(&self) -> &vks::VkSwapchainCounterCreateInfoEXT {
29927        &self.raw
29928    }
29929}
29930
29931impl<'s> From<SwapchainCounterCreateInfoExt<'s>> for vks::VkSwapchainCounterCreateInfoEXT {
29932    fn from(f: SwapchainCounterCreateInfoExt<'s>) -> vks::VkSwapchainCounterCreateInfoEXT {
29933        f.raw
29934    }
29935}
29936
29937
29938/// A builder for `VkSwapchainCounterCreateInfoEXT`.
29939///
29940/// 
29941#[derive(Debug, Clone, Default)]
29942pub struct SwapchainCounterCreateInfoExtBuilder<'b> {
29943    raw: vks::VkSwapchainCounterCreateInfoEXT,
29944    _p: PhantomData<&'b ()>, 
29945}
29946
29947impl<'b> SwapchainCounterCreateInfoExtBuilder<'b> {
29948    pub fn new() -> SwapchainCounterCreateInfoExtBuilder<'b> {
29949        SwapchainCounterCreateInfoExtBuilder {
29950            raw: vks::VkSwapchainCounterCreateInfoEXT::default(),
29951            _p: PhantomData,
29952        }
29953    }
29954
29955    pub unsafe fn next<'m>(mut self, next: *const c_void) -> SwapchainCounterCreateInfoExtBuilder<'b> {
29956        self.raw.pNext = next;
29957        self
29958    }
29959
29960    pub fn surface_counters<'m>(mut self, surface_counters: SurfaceCounterFlagsExt) -> SwapchainCounterCreateInfoExtBuilder<'b> {
29961        self.raw.surfaceCounters = surface_counters.bits();
29962        self
29963    }
29964
29965    pub fn get_next<'a>(&'a self) -> *const c_void {
29966        self.raw.pNext
29967    }
29968
29969    pub fn get_surface_counters<'a>(&'a self) -> SurfaceCounterFlagsExt {
29970        SurfaceCounterFlagsExt::from_bits(self.raw.surfaceCounters)
29971            .expect("SwapchainCounterCreateInfoExt::surface_counters: error converting flags")
29972    }
29973
29974    pub fn build(self) -> SwapchainCounterCreateInfoExt<'b> {
29975        SwapchainCounterCreateInfoExt {
29976            raw: self.raw,
29977            _p: PhantomData,
29978        }
29979    }
29980}
29981
29982
29983/// A `VkMemoryAllocateFlagsInfoKHX`.
29984///
29985/// 
29986#[cfg(feature = "experimental")]
29987#[derive(Debug, Clone, Default)]
29988#[repr(C)]
29989pub struct MemoryAllocateFlagsInfoKhx<'s> {
29990    raw: vks::VkMemoryAllocateFlagsInfoKHX,
29991    _p: PhantomData<&'s ()>,
29992}
29993
29994#[cfg(feature = "experimental")]
29995impl<'s> MemoryAllocateFlagsInfoKhx<'s> {
29996    pub fn builder<'b>() -> MemoryAllocateFlagsInfoKhxBuilder<'b> {
29997        MemoryAllocateFlagsInfoKhxBuilder::new()
29998    }
29999
30000    pub unsafe fn from_raw(raw: vks::VkMemoryAllocateFlagsInfoKHX) -> MemoryAllocateFlagsInfoKhx<'s> {
30001        MemoryAllocateFlagsInfoKhx { raw, _p: PhantomData }
30002    }
30003
30004    pub fn next<'a>(&'a self) -> *const c_void {
30005        self.raw.pNext
30006    }
30007
30008    pub fn flags<'a>(&'a self) -> MemoryAllocateFlagsKhx {
30009        MemoryAllocateFlagsKhx::from_bits(self.raw.flags)
30010            .expect("MemoryAllocateFlagsInfoKhx::flags: error converting flags")
30011    }
30012
30013    pub fn device_mask<'a>(&'a self) -> u32 {
30014        self.raw.deviceMask.into()
30015    }
30016
30017    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
30018        self.raw.pNext = next;
30019    }
30020
30021    pub fn set_flags<'m>(&mut self, flags: MemoryAllocateFlagsKhx) {
30022        self.raw.flags = flags.bits();
30023    }
30024
30025    pub fn set_device_mask<'m>(&mut self, device_mask: u32) {
30026        self.raw.deviceMask = device_mask.into();
30027    }
30028
30029    pub fn as_raw(&self) -> &vks::VkMemoryAllocateFlagsInfoKHX {
30030        &self.raw
30031    }
30032}
30033
30034#[cfg(feature = "experimental")]
30035impl<'s> From<MemoryAllocateFlagsInfoKhx<'s>> for vks::VkMemoryAllocateFlagsInfoKHX {
30036    fn from(f: MemoryAllocateFlagsInfoKhx<'s>) -> vks::VkMemoryAllocateFlagsInfoKHX {
30037        f.raw
30038    }
30039}
30040
30041
30042/// A builder for `VkMemoryAllocateFlagsInfoKHX`.
30043///
30044/// 
30045#[cfg(feature = "experimental")]
30046#[derive(Debug, Clone, Default)]
30047pub struct MemoryAllocateFlagsInfoKhxBuilder<'b> {
30048    raw: vks::VkMemoryAllocateFlagsInfoKHX,
30049    _p: PhantomData<&'b ()>, 
30050}
30051
30052#[cfg(feature = "experimental")]
30053impl<'b> MemoryAllocateFlagsInfoKhxBuilder<'b> {
30054    pub fn new() -> MemoryAllocateFlagsInfoKhxBuilder<'b> {
30055        MemoryAllocateFlagsInfoKhxBuilder {
30056            raw: vks::VkMemoryAllocateFlagsInfoKHX::default(),
30057            _p: PhantomData,
30058        }
30059    }
30060
30061    pub unsafe fn next<'m>(mut self, next: *const c_void) -> MemoryAllocateFlagsInfoKhxBuilder<'b> {
30062        self.raw.pNext = next;
30063        self
30064    }
30065
30066    pub fn flags<'m>(mut self, flags: MemoryAllocateFlagsKhx) -> MemoryAllocateFlagsInfoKhxBuilder<'b> {
30067        self.raw.flags = flags.bits();
30068        self
30069    }
30070
30071    pub fn device_mask<'m>(mut self, device_mask: u32) -> MemoryAllocateFlagsInfoKhxBuilder<'b> {
30072        self.raw.deviceMask = device_mask.into();
30073        self
30074    }
30075
30076    pub fn get_next<'a>(&'a self) -> *const c_void {
30077        self.raw.pNext
30078    }
30079
30080    pub fn get_flags<'a>(&'a self) -> MemoryAllocateFlagsKhx {
30081        MemoryAllocateFlagsKhx::from_bits(self.raw.flags)
30082            .expect("MemoryAllocateFlagsInfoKhx::flags: error converting flags")
30083    }
30084
30085    pub fn get_device_mask<'a>(&'a self) -> u32 {
30086        self.raw.deviceMask.into()
30087    }
30088
30089    pub fn build(self) -> MemoryAllocateFlagsInfoKhx<'b> {
30090        MemoryAllocateFlagsInfoKhx {
30091            raw: self.raw,
30092            _p: PhantomData,
30093        }
30094    }
30095}
30096
30097
30098/// A `VkDeviceGroupSubmitInfoKHX`.
30099///
30100/// 
30101#[cfg(feature = "experimental")]
30102#[derive(Debug, Clone, Default)]
30103#[repr(C)]
30104pub struct DeviceGroupSubmitInfoKhx<'s> {
30105    raw: vks::VkDeviceGroupSubmitInfoKHX,
30106    _p: PhantomData<&'s ()>,
30107}
30108
30109#[cfg(feature = "experimental")]
30110impl<'s> DeviceGroupSubmitInfoKhx<'s> {
30111    pub fn builder<'b>() -> DeviceGroupSubmitInfoKhxBuilder<'b> {
30112        DeviceGroupSubmitInfoKhxBuilder::new()
30113    }
30114
30115    pub unsafe fn from_raw(raw: vks::VkDeviceGroupSubmitInfoKHX) -> DeviceGroupSubmitInfoKhx<'s> {
30116        DeviceGroupSubmitInfoKhx { raw, _p: PhantomData }
30117    }
30118
30119    pub fn next<'a>(&'a self) -> *const c_void {
30120        self.raw.pNext
30121    }
30122
30123    pub fn wait_semaphore_device_indices<'a>(&'a self) -> &'a [u32] {
30124        unsafe { slice::from_raw_parts(self.raw.pWaitSemaphoreDeviceIndices as *const _, self.raw.waitSemaphoreCount as usize) }
30125    }
30126
30127    pub fn command_buffer_device_masks<'a>(&'a self) -> &'a [u32] {
30128        unsafe { slice::from_raw_parts(self.raw.pCommandBufferDeviceMasks as *const _, self.raw.commandBufferCount as usize) }
30129    }
30130
30131    pub fn signal_semaphore_device_indices<'a>(&'a self) -> &'a [u32] {
30132        unsafe { slice::from_raw_parts(self.raw.pSignalSemaphoreDeviceIndices as *const _, self.raw.signalSemaphoreCount as usize) }
30133    }
30134
30135    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
30136        self.raw.pNext = next;
30137    }
30138
30139    pub fn set_wait_semaphore_device_indices<'m, 'a>(&mut self, wait_semaphore_device_indices: &'a [u32])
30140            where 'a: 's {
30141        assert!(self.raw.waitSemaphoreCount == 0 || self.raw.waitSemaphoreCount == wait_semaphore_device_indices.len() as _, 
30142            "count inconsistency found when specifying `DeviceGroupSubmitInfoKhx::wait_semaphore_device_indices`.");
30143        self.raw.waitSemaphoreCount = wait_semaphore_device_indices.len() as _;
30144        self.raw.pWaitSemaphoreDeviceIndices = wait_semaphore_device_indices.as_ptr() as *const u32 as *const _;
30145    }
30146
30147    pub fn set_command_buffer_device_masks<'m, 'a>(&mut self, command_buffer_device_masks: &'a [u32])
30148            where 'a: 's {
30149        assert!(self.raw.commandBufferCount == 0 || self.raw.commandBufferCount == command_buffer_device_masks.len() as _, 
30150            "count inconsistency found when specifying `DeviceGroupSubmitInfoKhx::command_buffer_device_masks`.");
30151        self.raw.commandBufferCount = command_buffer_device_masks.len() as _;
30152        self.raw.pCommandBufferDeviceMasks = command_buffer_device_masks.as_ptr() as *const u32 as *const _;
30153    }
30154
30155    pub fn set_signal_semaphore_device_indices<'m, 'a>(&mut self, signal_semaphore_device_indices: &'a [u32])
30156            where 'a: 's {
30157        assert!(self.raw.signalSemaphoreCount == 0 || self.raw.signalSemaphoreCount == signal_semaphore_device_indices.len() as _, 
30158            "count inconsistency found when specifying `DeviceGroupSubmitInfoKhx::signal_semaphore_device_indices`.");
30159        self.raw.signalSemaphoreCount = signal_semaphore_device_indices.len() as _;
30160        self.raw.pSignalSemaphoreDeviceIndices = signal_semaphore_device_indices.as_ptr() as *const u32 as *const _;
30161    }
30162
30163    pub fn as_raw(&self) -> &vks::VkDeviceGroupSubmitInfoKHX {
30164        &self.raw
30165    }
30166}
30167
30168#[cfg(feature = "experimental")]
30169impl<'s> From<DeviceGroupSubmitInfoKhx<'s>> for vks::VkDeviceGroupSubmitInfoKHX {
30170    fn from(f: DeviceGroupSubmitInfoKhx<'s>) -> vks::VkDeviceGroupSubmitInfoKHX {
30171        f.raw
30172    }
30173}
30174
30175
30176/// A builder for `VkDeviceGroupSubmitInfoKHX`.
30177///
30178/// 
30179#[cfg(feature = "experimental")]
30180#[derive(Debug, Clone, Default)]
30181pub struct DeviceGroupSubmitInfoKhxBuilder<'b> {
30182    raw: vks::VkDeviceGroupSubmitInfoKHX,
30183    _p: PhantomData<&'b ()>, 
30184}
30185
30186#[cfg(feature = "experimental")]
30187impl<'b> DeviceGroupSubmitInfoKhxBuilder<'b> {
30188    pub fn new() -> DeviceGroupSubmitInfoKhxBuilder<'b> {
30189        DeviceGroupSubmitInfoKhxBuilder {
30190            raw: vks::VkDeviceGroupSubmitInfoKHX::default(),
30191            _p: PhantomData,
30192        }
30193    }
30194
30195    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DeviceGroupSubmitInfoKhxBuilder<'b> {
30196        self.raw.pNext = next;
30197        self
30198    }
30199
30200    pub fn wait_semaphore_device_indices<'m, 'a>(mut self, wait_semaphore_device_indices: &'a [u32]) -> DeviceGroupSubmitInfoKhxBuilder<'b>
30201            where 'a: 'b {
30202        assert!(self.raw.waitSemaphoreCount == 0 || self.raw.waitSemaphoreCount == wait_semaphore_device_indices.len() as _, 
30203            "count inconsistency found when specifying `DeviceGroupSubmitInfoKhx::wait_semaphore_device_indices`.");
30204        self.raw.waitSemaphoreCount = wait_semaphore_device_indices.len() as _;
30205        self.raw.pWaitSemaphoreDeviceIndices = wait_semaphore_device_indices.as_ptr() as *const u32 as *const _;
30206        self
30207    }
30208
30209    pub fn command_buffer_device_masks<'m, 'a>(mut self, command_buffer_device_masks: &'a [u32]) -> DeviceGroupSubmitInfoKhxBuilder<'b>
30210            where 'a: 'b {
30211        assert!(self.raw.commandBufferCount == 0 || self.raw.commandBufferCount == command_buffer_device_masks.len() as _, 
30212            "count inconsistency found when specifying `DeviceGroupSubmitInfoKhx::command_buffer_device_masks`.");
30213        self.raw.commandBufferCount = command_buffer_device_masks.len() as _;
30214        self.raw.pCommandBufferDeviceMasks = command_buffer_device_masks.as_ptr() as *const u32 as *const _;
30215        self
30216    }
30217
30218    pub fn signal_semaphore_device_indices<'m, 'a>(mut self, signal_semaphore_device_indices: &'a [u32]) -> DeviceGroupSubmitInfoKhxBuilder<'b>
30219            where 'a: 'b {
30220        assert!(self.raw.signalSemaphoreCount == 0 || self.raw.signalSemaphoreCount == signal_semaphore_device_indices.len() as _, 
30221            "count inconsistency found when specifying `DeviceGroupSubmitInfoKhx::signal_semaphore_device_indices`.");
30222        self.raw.signalSemaphoreCount = signal_semaphore_device_indices.len() as _;
30223        self.raw.pSignalSemaphoreDeviceIndices = signal_semaphore_device_indices.as_ptr() as *const u32 as *const _;
30224        self
30225    }
30226
30227    pub fn get_next<'a>(&'a self) -> *const c_void {
30228        self.raw.pNext
30229    }
30230
30231    pub fn get_wait_semaphore_device_indices<'a>(&'a self) -> &'a [u32] {
30232        unsafe { slice::from_raw_parts(self.raw.pWaitSemaphoreDeviceIndices as *const _, self.raw.waitSemaphoreCount as usize) }
30233    }
30234
30235    pub fn get_command_buffer_device_masks<'a>(&'a self) -> &'a [u32] {
30236        unsafe { slice::from_raw_parts(self.raw.pCommandBufferDeviceMasks as *const _, self.raw.commandBufferCount as usize) }
30237    }
30238
30239    pub fn get_signal_semaphore_device_indices<'a>(&'a self) -> &'a [u32] {
30240        unsafe { slice::from_raw_parts(self.raw.pSignalSemaphoreDeviceIndices as *const _, self.raw.signalSemaphoreCount as usize) }
30241    }
30242
30243    pub fn build(self) -> DeviceGroupSubmitInfoKhx<'b> {
30244        DeviceGroupSubmitInfoKhx {
30245            raw: self.raw,
30246            _p: PhantomData,
30247        }
30248    }
30249}
30250
30251
30252/// A `VkDeviceGroupBindSparseInfoKHX`.
30253///
30254/// 
30255#[cfg(feature = "experimental")]
30256#[derive(Debug, Clone, Default)]
30257#[repr(C)]
30258pub struct DeviceGroupBindSparseInfoKhx<'s> {
30259    raw: vks::VkDeviceGroupBindSparseInfoKHX,
30260    _p: PhantomData<&'s ()>,
30261}
30262
30263#[cfg(feature = "experimental")]
30264impl<'s> DeviceGroupBindSparseInfoKhx<'s> {
30265    pub fn builder<'b>() -> DeviceGroupBindSparseInfoKhxBuilder<'b> {
30266        DeviceGroupBindSparseInfoKhxBuilder::new()
30267    }
30268
30269    pub unsafe fn from_raw(raw: vks::VkDeviceGroupBindSparseInfoKHX) -> DeviceGroupBindSparseInfoKhx<'s> {
30270        DeviceGroupBindSparseInfoKhx { raw, _p: PhantomData }
30271    }
30272
30273    pub fn next<'a>(&'a self) -> *const c_void {
30274        self.raw.pNext
30275    }
30276
30277    pub fn resource_device_index<'a>(&'a self) -> u32 {
30278        self.raw.resourceDeviceIndex.into()
30279    }
30280
30281    pub fn memory_device_index<'a>(&'a self) -> u32 {
30282        self.raw.memoryDeviceIndex.into()
30283    }
30284
30285    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
30286        self.raw.pNext = next;
30287    }
30288
30289    pub fn set_resource_device_index<'m>(&mut self, resource_device_index: u32) {
30290        self.raw.resourceDeviceIndex = resource_device_index.into();
30291    }
30292
30293    pub fn set_memory_device_index<'m>(&mut self, memory_device_index: u32) {
30294        self.raw.memoryDeviceIndex = memory_device_index.into();
30295    }
30296
30297    pub fn as_raw(&self) -> &vks::VkDeviceGroupBindSparseInfoKHX {
30298        &self.raw
30299    }
30300}
30301
30302#[cfg(feature = "experimental")]
30303impl<'s> From<DeviceGroupBindSparseInfoKhx<'s>> for vks::VkDeviceGroupBindSparseInfoKHX {
30304    fn from(f: DeviceGroupBindSparseInfoKhx<'s>) -> vks::VkDeviceGroupBindSparseInfoKHX {
30305        f.raw
30306    }
30307}
30308
30309
30310/// A builder for `VkDeviceGroupBindSparseInfoKHX`.
30311///
30312/// 
30313#[cfg(feature = "experimental")]
30314#[derive(Debug, Clone, Default)]
30315pub struct DeviceGroupBindSparseInfoKhxBuilder<'b> {
30316    raw: vks::VkDeviceGroupBindSparseInfoKHX,
30317    _p: PhantomData<&'b ()>, 
30318}
30319
30320#[cfg(feature = "experimental")]
30321impl<'b> DeviceGroupBindSparseInfoKhxBuilder<'b> {
30322    pub fn new() -> DeviceGroupBindSparseInfoKhxBuilder<'b> {
30323        DeviceGroupBindSparseInfoKhxBuilder {
30324            raw: vks::VkDeviceGroupBindSparseInfoKHX::default(),
30325            _p: PhantomData,
30326        }
30327    }
30328
30329    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DeviceGroupBindSparseInfoKhxBuilder<'b> {
30330        self.raw.pNext = next;
30331        self
30332    }
30333
30334    pub fn resource_device_index<'m>(mut self, resource_device_index: u32) -> DeviceGroupBindSparseInfoKhxBuilder<'b> {
30335        self.raw.resourceDeviceIndex = resource_device_index.into();
30336        self
30337    }
30338
30339    pub fn memory_device_index<'m>(mut self, memory_device_index: u32) -> DeviceGroupBindSparseInfoKhxBuilder<'b> {
30340        self.raw.memoryDeviceIndex = memory_device_index.into();
30341        self
30342    }
30343
30344    pub fn get_next<'a>(&'a self) -> *const c_void {
30345        self.raw.pNext
30346    }
30347
30348    pub fn get_resource_device_index<'a>(&'a self) -> u32 {
30349        self.raw.resourceDeviceIndex.into()
30350    }
30351
30352    pub fn get_memory_device_index<'a>(&'a self) -> u32 {
30353        self.raw.memoryDeviceIndex.into()
30354    }
30355
30356    pub fn build(self) -> DeviceGroupBindSparseInfoKhx<'b> {
30357        DeviceGroupBindSparseInfoKhx {
30358            raw: self.raw,
30359            _p: PhantomData,
30360        }
30361    }
30362}
30363
30364
30365/// A `VkDeviceGroupPresentCapabilitiesKHX`.
30366///
30367/// 
30368#[cfg(feature = "experimental")]
30369#[derive(Debug, Clone, Default)]
30370#[repr(C)]
30371pub struct DeviceGroupPresentCapabilitiesKhx<'s> {
30372    raw: vks::VkDeviceGroupPresentCapabilitiesKHX,
30373    _p: PhantomData<&'s ()>,
30374}
30375
30376#[cfg(feature = "experimental")]
30377impl<'s> DeviceGroupPresentCapabilitiesKhx<'s> {
30378    pub fn builder<'b>() -> DeviceGroupPresentCapabilitiesKhxBuilder<'b> {
30379        DeviceGroupPresentCapabilitiesKhxBuilder::new()
30380    }
30381
30382    pub unsafe fn from_raw(raw: vks::VkDeviceGroupPresentCapabilitiesKHX) -> DeviceGroupPresentCapabilitiesKhx<'s> {
30383        DeviceGroupPresentCapabilitiesKhx { raw, _p: PhantomData }
30384    }
30385
30386    pub fn next<'a>(&'a self) -> *const c_void {
30387        self.raw.pNext
30388    }
30389
30390    pub fn present_mask<'a>(&'a self) -> &[u32] {
30391        unsafe { slice::from_raw_parts(&self.raw.presentMask as *const _, vks::VK_MAX_DEVICE_GROUP_SIZE_KHX as usize) }
30392    }
30393
30394    pub fn modes<'a>(&'a self) -> DeviceGroupPresentModeFlagsKhx {
30395        DeviceGroupPresentModeFlagsKhx::from_bits(self.raw.modes)
30396            .expect("DeviceGroupPresentCapabilitiesKhx::modes: error converting flags")
30397    }
30398
30399    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
30400        self.raw.pNext = next;
30401    }
30402
30403    pub fn set_present_mask<'m>(&mut self, present_mask: [u32; vks::VK_MAX_DEVICE_GROUP_SIZE_KHX]) {
30404        self.raw.presentMask = present_mask;
30405    }
30406
30407    pub fn set_modes<'m>(&mut self, modes: DeviceGroupPresentModeFlagsKhx) {
30408        self.raw.modes = modes.bits();
30409    }
30410
30411    pub fn as_raw(&self) -> &vks::VkDeviceGroupPresentCapabilitiesKHX {
30412        &self.raw
30413    }
30414}
30415
30416#[cfg(feature = "experimental")]
30417impl<'s> From<DeviceGroupPresentCapabilitiesKhx<'s>> for vks::VkDeviceGroupPresentCapabilitiesKHX {
30418    fn from(f: DeviceGroupPresentCapabilitiesKhx<'s>) -> vks::VkDeviceGroupPresentCapabilitiesKHX {
30419        f.raw
30420    }
30421}
30422
30423
30424/// A builder for `VkDeviceGroupPresentCapabilitiesKHX`.
30425///
30426/// 
30427#[cfg(feature = "experimental")]
30428#[derive(Debug, Clone, Default)]
30429pub struct DeviceGroupPresentCapabilitiesKhxBuilder<'b> {
30430    raw: vks::VkDeviceGroupPresentCapabilitiesKHX,
30431    _p: PhantomData<&'b ()>, 
30432}
30433
30434#[cfg(feature = "experimental")]
30435impl<'b> DeviceGroupPresentCapabilitiesKhxBuilder<'b> {
30436    pub fn new() -> DeviceGroupPresentCapabilitiesKhxBuilder<'b> {
30437        DeviceGroupPresentCapabilitiesKhxBuilder {
30438            raw: vks::VkDeviceGroupPresentCapabilitiesKHX::default(),
30439            _p: PhantomData,
30440        }
30441    }
30442
30443    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DeviceGroupPresentCapabilitiesKhxBuilder<'b> {
30444        self.raw.pNext = next;
30445        self
30446    }
30447
30448    pub fn present_mask<'m>(mut self, present_mask: [u32; vks::VK_MAX_DEVICE_GROUP_SIZE_KHX]) -> DeviceGroupPresentCapabilitiesKhxBuilder<'b> {
30449        self.raw.presentMask = present_mask;
30450        self
30451    }
30452
30453    pub fn modes<'m>(mut self, modes: DeviceGroupPresentModeFlagsKhx) -> DeviceGroupPresentCapabilitiesKhxBuilder<'b> {
30454        self.raw.modes = modes.bits();
30455        self
30456    }
30457
30458    pub fn get_next<'a>(&'a self) -> *const c_void {
30459        self.raw.pNext
30460    }
30461
30462    pub fn get_present_mask<'a>(&'a self) -> &[u32] {
30463        unsafe { slice::from_raw_parts(&self.raw.presentMask as *const _, vks::VK_MAX_DEVICE_GROUP_SIZE_KHX as usize) }
30464    }
30465
30466    pub fn get_modes<'a>(&'a self) -> DeviceGroupPresentModeFlagsKhx {
30467        DeviceGroupPresentModeFlagsKhx::from_bits(self.raw.modes)
30468            .expect("DeviceGroupPresentCapabilitiesKhx::modes: error converting flags")
30469    }
30470
30471    pub fn build(self) -> DeviceGroupPresentCapabilitiesKhx<'b> {
30472        DeviceGroupPresentCapabilitiesKhx {
30473            raw: self.raw,
30474            _p: PhantomData,
30475        }
30476    }
30477}
30478
30479
30480/// A `VkImageSwapchainCreateInfoKHX`.
30481///
30482/// 
30483#[cfg(feature = "experimental")]
30484#[derive(Debug, Clone, Default)]
30485#[repr(C)]
30486pub struct ImageSwapchainCreateInfoKhx<'s> {
30487    raw: vks::VkImageSwapchainCreateInfoKHX,
30488    _p: PhantomData<&'s ()>,
30489}
30490
30491#[cfg(feature = "experimental")]
30492impl<'s> ImageSwapchainCreateInfoKhx<'s> {
30493    pub fn builder<'b>() -> ImageSwapchainCreateInfoKhxBuilder<'b> {
30494        ImageSwapchainCreateInfoKhxBuilder::new()
30495    }
30496
30497    pub unsafe fn from_raw(raw: vks::VkImageSwapchainCreateInfoKHX) -> ImageSwapchainCreateInfoKhx<'s> {
30498        ImageSwapchainCreateInfoKhx { raw, _p: PhantomData }
30499    }
30500
30501    pub fn next<'a>(&'a self) -> *const c_void {
30502        self.raw.pNext
30503    }
30504
30505    pub fn swapchain<'a>(&'a self) -> vks::VkSwapchainKHR {
30506        self.raw.swapchain
30507    }
30508
30509    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
30510        self.raw.pNext = next;
30511    }
30512
30513    pub fn set_swapchain<'m, H>(&mut self, swapchain: H)
30514            where H: Handle<Target=SwapchainKhrHandle> {
30515        self.raw.swapchain = swapchain.handle().0;
30516    }
30517
30518    pub fn as_raw(&self) -> &vks::VkImageSwapchainCreateInfoKHX {
30519        &self.raw
30520    }
30521}
30522
30523#[cfg(feature = "experimental")]
30524impl<'s> From<ImageSwapchainCreateInfoKhx<'s>> for vks::VkImageSwapchainCreateInfoKHX {
30525    fn from(f: ImageSwapchainCreateInfoKhx<'s>) -> vks::VkImageSwapchainCreateInfoKHX {
30526        f.raw
30527    }
30528}
30529
30530
30531/// A builder for `VkImageSwapchainCreateInfoKHX`.
30532///
30533/// 
30534#[cfg(feature = "experimental")]
30535#[derive(Debug, Clone, Default)]
30536pub struct ImageSwapchainCreateInfoKhxBuilder<'b> {
30537    raw: vks::VkImageSwapchainCreateInfoKHX,
30538    _p: PhantomData<&'b ()>, 
30539}
30540
30541#[cfg(feature = "experimental")]
30542impl<'b> ImageSwapchainCreateInfoKhxBuilder<'b> {
30543    pub fn new() -> ImageSwapchainCreateInfoKhxBuilder<'b> {
30544        ImageSwapchainCreateInfoKhxBuilder {
30545            raw: vks::VkImageSwapchainCreateInfoKHX::default(),
30546            _p: PhantomData,
30547        }
30548    }
30549
30550    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ImageSwapchainCreateInfoKhxBuilder<'b> {
30551        self.raw.pNext = next;
30552        self
30553    }
30554
30555    pub fn swapchain<'m, H>(mut self, swapchain: H) -> ImageSwapchainCreateInfoKhxBuilder<'b>
30556            where H: Handle<Target=SwapchainKhrHandle> {
30557        self.raw.swapchain = swapchain.handle().0;
30558        self
30559    }
30560
30561    pub fn get_next<'a>(&'a self) -> *const c_void {
30562        self.raw.pNext
30563    }
30564
30565    pub fn get_swapchain<'a>(&'a self) -> vks::VkSwapchainKHR {
30566        self.raw.swapchain
30567    }
30568
30569    pub fn build(self) -> ImageSwapchainCreateInfoKhx<'b> {
30570        ImageSwapchainCreateInfoKhx {
30571            raw: self.raw,
30572            _p: PhantomData,
30573        }
30574    }
30575}
30576
30577
30578/// A `VkBindImageMemorySwapchainInfoKHX`.
30579///
30580/// 
30581#[cfg(feature = "experimental")]
30582#[derive(Debug, Clone, Default)]
30583#[repr(C)]
30584pub struct BindImageMemorySwapchainInfoKhx<'s> {
30585    raw: vks::VkBindImageMemorySwapchainInfoKHX,
30586    _p: PhantomData<&'s ()>,
30587}
30588
30589#[cfg(feature = "experimental")]
30590impl<'s> BindImageMemorySwapchainInfoKhx<'s> {
30591    pub fn builder<'b>() -> BindImageMemorySwapchainInfoKhxBuilder<'b> {
30592        BindImageMemorySwapchainInfoKhxBuilder::new()
30593    }
30594
30595    pub unsafe fn from_raw(raw: vks::VkBindImageMemorySwapchainInfoKHX) -> BindImageMemorySwapchainInfoKhx<'s> {
30596        BindImageMemorySwapchainInfoKhx { raw, _p: PhantomData }
30597    }
30598
30599    pub fn next<'a>(&'a self) -> *const c_void {
30600        self.raw.pNext
30601    }
30602
30603    pub fn swapchain<'a>(&'a self) -> vks::VkSwapchainKHR {
30604        self.raw.swapchain
30605    }
30606
30607    pub fn image_index<'a>(&'a self) -> u32 {
30608        self.raw.imageIndex.into()
30609    }
30610
30611    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
30612        self.raw.pNext = next;
30613    }
30614
30615    pub fn set_swapchain<'m, H>(&mut self, swapchain: H)
30616            where H: Handle<Target=SwapchainKhrHandle> {
30617        self.raw.swapchain = swapchain.handle().0;
30618    }
30619
30620    pub fn set_image_index<'m>(&mut self, image_index: u32) {
30621        self.raw.imageIndex = image_index.into();
30622    }
30623
30624    pub fn as_raw(&self) -> &vks::VkBindImageMemorySwapchainInfoKHX {
30625        &self.raw
30626    }
30627}
30628
30629#[cfg(feature = "experimental")]
30630impl<'s> From<BindImageMemorySwapchainInfoKhx<'s>> for vks::VkBindImageMemorySwapchainInfoKHX {
30631    fn from(f: BindImageMemorySwapchainInfoKhx<'s>) -> vks::VkBindImageMemorySwapchainInfoKHX {
30632        f.raw
30633    }
30634}
30635
30636
30637/// A builder for `VkBindImageMemorySwapchainInfoKHX`.
30638///
30639/// 
30640#[cfg(feature = "experimental")]
30641#[derive(Debug, Clone, Default)]
30642pub struct BindImageMemorySwapchainInfoKhxBuilder<'b> {
30643    raw: vks::VkBindImageMemorySwapchainInfoKHX,
30644    _p: PhantomData<&'b ()>, 
30645}
30646
30647#[cfg(feature = "experimental")]
30648impl<'b> BindImageMemorySwapchainInfoKhxBuilder<'b> {
30649    pub fn new() -> BindImageMemorySwapchainInfoKhxBuilder<'b> {
30650        BindImageMemorySwapchainInfoKhxBuilder {
30651            raw: vks::VkBindImageMemorySwapchainInfoKHX::default(),
30652            _p: PhantomData,
30653        }
30654    }
30655
30656    pub unsafe fn next<'m>(mut self, next: *const c_void) -> BindImageMemorySwapchainInfoKhxBuilder<'b> {
30657        self.raw.pNext = next;
30658        self
30659    }
30660
30661    pub fn swapchain<'m, H>(mut self, swapchain: H) -> BindImageMemorySwapchainInfoKhxBuilder<'b>
30662            where H: Handle<Target=SwapchainKhrHandle> {
30663        self.raw.swapchain = swapchain.handle().0;
30664        self
30665    }
30666
30667    pub fn image_index<'m>(mut self, image_index: u32) -> BindImageMemorySwapchainInfoKhxBuilder<'b> {
30668        self.raw.imageIndex = image_index.into();
30669        self
30670    }
30671
30672    pub fn get_next<'a>(&'a self) -> *const c_void {
30673        self.raw.pNext
30674    }
30675
30676    pub fn get_swapchain<'a>(&'a self) -> vks::VkSwapchainKHR {
30677        self.raw.swapchain
30678    }
30679
30680    pub fn get_image_index<'a>(&'a self) -> u32 {
30681        self.raw.imageIndex.into()
30682    }
30683
30684    pub fn build(self) -> BindImageMemorySwapchainInfoKhx<'b> {
30685        BindImageMemorySwapchainInfoKhx {
30686            raw: self.raw,
30687            _p: PhantomData,
30688        }
30689    }
30690}
30691
30692
30693/// A `VkAcquireNextImageInfoKHX`.
30694///
30695/// 
30696#[cfg(feature = "experimental")]
30697#[derive(Debug, Clone, Default)]
30698#[repr(C)]
30699pub struct AcquireNextImageInfoKhx<'s> {
30700    raw: vks::VkAcquireNextImageInfoKHX,
30701    _p: PhantomData<&'s ()>,
30702}
30703
30704#[cfg(feature = "experimental")]
30705impl<'s> AcquireNextImageInfoKhx<'s> {
30706    pub fn builder<'b>() -> AcquireNextImageInfoKhxBuilder<'b> {
30707        AcquireNextImageInfoKhxBuilder::new()
30708    }
30709
30710    pub unsafe fn from_raw(raw: vks::VkAcquireNextImageInfoKHX) -> AcquireNextImageInfoKhx<'s> {
30711        AcquireNextImageInfoKhx { raw, _p: PhantomData }
30712    }
30713
30714    pub fn next<'a>(&'a self) -> *const c_void {
30715        self.raw.pNext
30716    }
30717
30718    pub fn swapchain<'a>(&'a self) -> vks::VkSwapchainKHR {
30719        self.raw.swapchain
30720    }
30721
30722    pub fn timeout<'a>(&'a self) -> u64 {
30723        self.raw.timeout.into()
30724    }
30725
30726    pub fn semaphore<'a>(&'a self) -> vks::VkSemaphore {
30727        self.raw.semaphore
30728    }
30729
30730    pub fn fence<'a>(&'a self) -> vks::VkFence {
30731        self.raw.fence
30732    }
30733
30734    pub fn device_mask<'a>(&'a self) -> u32 {
30735        self.raw.deviceMask.into()
30736    }
30737
30738    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
30739        self.raw.pNext = next;
30740    }
30741
30742    pub fn set_swapchain<'m, H>(&mut self, swapchain: H)
30743            where H: Handle<Target=SwapchainKhrHandle> {
30744        self.raw.swapchain = swapchain.handle().0;
30745    }
30746
30747    pub fn set_timeout<'m>(&mut self, timeout: u64) {
30748        self.raw.timeout = timeout.into();
30749    }
30750
30751    pub fn set_semaphore<'m, H>(&mut self, semaphore: H)
30752            where H: Handle<Target=SemaphoreHandle> {
30753        self.raw.semaphore = semaphore.handle().0;
30754    }
30755
30756    pub fn set_fence<'m, H>(&mut self, fence: H)
30757            where H: Handle<Target=FenceHandle> {
30758        self.raw.fence = fence.handle().0;
30759    }
30760
30761    pub fn set_device_mask<'m>(&mut self, device_mask: u32) {
30762        self.raw.deviceMask = device_mask.into();
30763    }
30764
30765    pub fn as_raw(&self) -> &vks::VkAcquireNextImageInfoKHX {
30766        &self.raw
30767    }
30768}
30769
30770#[cfg(feature = "experimental")]
30771impl<'s> From<AcquireNextImageInfoKhx<'s>> for vks::VkAcquireNextImageInfoKHX {
30772    fn from(f: AcquireNextImageInfoKhx<'s>) -> vks::VkAcquireNextImageInfoKHX {
30773        f.raw
30774    }
30775}
30776
30777
30778/// A builder for `VkAcquireNextImageInfoKHX`.
30779///
30780/// 
30781#[cfg(feature = "experimental")]
30782#[derive(Debug, Clone, Default)]
30783pub struct AcquireNextImageInfoKhxBuilder<'b> {
30784    raw: vks::VkAcquireNextImageInfoKHX,
30785    _p: PhantomData<&'b ()>, 
30786}
30787
30788#[cfg(feature = "experimental")]
30789impl<'b> AcquireNextImageInfoKhxBuilder<'b> {
30790    pub fn new() -> AcquireNextImageInfoKhxBuilder<'b> {
30791        AcquireNextImageInfoKhxBuilder {
30792            raw: vks::VkAcquireNextImageInfoKHX::default(),
30793            _p: PhantomData,
30794        }
30795    }
30796
30797    pub unsafe fn next<'m>(mut self, next: *const c_void) -> AcquireNextImageInfoKhxBuilder<'b> {
30798        self.raw.pNext = next;
30799        self
30800    }
30801
30802    pub fn swapchain<'m, H>(mut self, swapchain: H) -> AcquireNextImageInfoKhxBuilder<'b>
30803            where H: Handle<Target=SwapchainKhrHandle> {
30804        self.raw.swapchain = swapchain.handle().0;
30805        self
30806    }
30807
30808    pub fn timeout<'m>(mut self, timeout: u64) -> AcquireNextImageInfoKhxBuilder<'b> {
30809        self.raw.timeout = timeout.into();
30810        self
30811    }
30812
30813    pub fn semaphore<'m, H>(mut self, semaphore: H) -> AcquireNextImageInfoKhxBuilder<'b>
30814            where H: Handle<Target=SemaphoreHandle> {
30815        self.raw.semaphore = semaphore.handle().0;
30816        self
30817    }
30818
30819    pub fn fence<'m, H>(mut self, fence: H) -> AcquireNextImageInfoKhxBuilder<'b>
30820            where H: Handle<Target=FenceHandle> {
30821        self.raw.fence = fence.handle().0;
30822        self
30823    }
30824
30825    pub fn device_mask<'m>(mut self, device_mask: u32) -> AcquireNextImageInfoKhxBuilder<'b> {
30826        self.raw.deviceMask = device_mask.into();
30827        self
30828    }
30829
30830    pub fn get_next<'a>(&'a self) -> *const c_void {
30831        self.raw.pNext
30832    }
30833
30834    pub fn get_swapchain<'a>(&'a self) -> vks::VkSwapchainKHR {
30835        self.raw.swapchain
30836    }
30837
30838    pub fn get_timeout<'a>(&'a self) -> u64 {
30839        self.raw.timeout.into()
30840    }
30841
30842    pub fn get_semaphore<'a>(&'a self) -> vks::VkSemaphore {
30843        self.raw.semaphore
30844    }
30845
30846    pub fn get_fence<'a>(&'a self) -> vks::VkFence {
30847        self.raw.fence
30848    }
30849
30850    pub fn get_device_mask<'a>(&'a self) -> u32 {
30851        self.raw.deviceMask.into()
30852    }
30853
30854    pub fn build(self) -> AcquireNextImageInfoKhx<'b> {
30855        AcquireNextImageInfoKhx {
30856            raw: self.raw,
30857            _p: PhantomData,
30858        }
30859    }
30860}
30861
30862
30863/// A `VkDeviceGroupDeviceCreateInfoKHX`.
30864///
30865/// 
30866#[cfg(feature = "experimental")]
30867#[derive(Debug, Clone, Default)]
30868#[repr(C)]
30869pub struct DeviceGroupDeviceCreateInfoKhx<'s> {
30870    raw: vks::VkDeviceGroupDeviceCreateInfoKHX,
30871    _p: PhantomData<&'s ()>,
30872}
30873
30874#[cfg(feature = "experimental")]
30875impl<'s> DeviceGroupDeviceCreateInfoKhx<'s> {
30876    pub fn builder<'b>() -> DeviceGroupDeviceCreateInfoKhxBuilder<'b> {
30877        DeviceGroupDeviceCreateInfoKhxBuilder::new()
30878    }
30879
30880    pub unsafe fn from_raw(raw: vks::VkDeviceGroupDeviceCreateInfoKHX) -> DeviceGroupDeviceCreateInfoKhx<'s> {
30881        DeviceGroupDeviceCreateInfoKhx { raw, _p: PhantomData }
30882    }
30883
30884    pub fn next<'a>(&'a self) -> *const c_void {
30885        self.raw.pNext
30886    }
30887
30888    pub fn physical_devices<'a>(&'a self) -> &'a [vks::VkPhysicalDevice] {
30889        unsafe { slice::from_raw_parts(self.raw.pPhysicalDevices as *const _, self.raw.physicalDeviceCount as usize) }
30890    }
30891
30892    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
30893        self.raw.pNext = next;
30894    }
30895
30896    pub fn set_physical_devices<'m, 'a>(&mut self, physical_devices: &'a [PhysicalDeviceHandle])
30897            where 'a: 's {
30898        assert!(self.raw.physicalDeviceCount == 0 || self.raw.physicalDeviceCount == physical_devices.len() as _, 
30899            "count inconsistency found when specifying `DeviceGroupDeviceCreateInfoKhx::physical_devices`.");
30900        self.raw.physicalDeviceCount = physical_devices.len() as _;
30901        self.raw.pPhysicalDevices = physical_devices.as_ptr() as *const vks::VkPhysicalDevice;
30902    }
30903
30904    pub fn as_raw(&self) -> &vks::VkDeviceGroupDeviceCreateInfoKHX {
30905        &self.raw
30906    }
30907}
30908
30909#[cfg(feature = "experimental")]
30910impl<'s> From<DeviceGroupDeviceCreateInfoKhx<'s>> for vks::VkDeviceGroupDeviceCreateInfoKHX {
30911    fn from(f: DeviceGroupDeviceCreateInfoKhx<'s>) -> vks::VkDeviceGroupDeviceCreateInfoKHX {
30912        f.raw
30913    }
30914}
30915
30916
30917/// A builder for `VkDeviceGroupDeviceCreateInfoKHX`.
30918///
30919/// 
30920#[cfg(feature = "experimental")]
30921#[derive(Debug, Clone, Default)]
30922pub struct DeviceGroupDeviceCreateInfoKhxBuilder<'b> {
30923    raw: vks::VkDeviceGroupDeviceCreateInfoKHX,
30924    _p: PhantomData<&'b ()>, 
30925}
30926
30927#[cfg(feature = "experimental")]
30928impl<'b> DeviceGroupDeviceCreateInfoKhxBuilder<'b> {
30929    pub fn new() -> DeviceGroupDeviceCreateInfoKhxBuilder<'b> {
30930        DeviceGroupDeviceCreateInfoKhxBuilder {
30931            raw: vks::VkDeviceGroupDeviceCreateInfoKHX::default(),
30932            _p: PhantomData,
30933        }
30934    }
30935
30936    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DeviceGroupDeviceCreateInfoKhxBuilder<'b> {
30937        self.raw.pNext = next;
30938        self
30939    }
30940
30941    pub fn physical_devices<'m, 'a>(mut self, physical_devices: &'a [PhysicalDeviceHandle]) -> DeviceGroupDeviceCreateInfoKhxBuilder<'b>
30942            where 'a: 'b {
30943        assert!(self.raw.physicalDeviceCount == 0 || self.raw.physicalDeviceCount == physical_devices.len() as _, 
30944            "count inconsistency found when specifying `DeviceGroupDeviceCreateInfoKhx::physical_devices`.");
30945        self.raw.physicalDeviceCount = physical_devices.len() as _;
30946        self.raw.pPhysicalDevices = physical_devices.as_ptr() as *const vks::VkPhysicalDevice;
30947        self
30948    }
30949
30950    pub fn get_next<'a>(&'a self) -> *const c_void {
30951        self.raw.pNext
30952    }
30953
30954    pub fn get_physical_devices<'a>(&'a self) -> &'a [vks::VkPhysicalDevice] {
30955        unsafe { slice::from_raw_parts(self.raw.pPhysicalDevices as *const _, self.raw.physicalDeviceCount as usize) }
30956    }
30957
30958    pub fn build(self) -> DeviceGroupDeviceCreateInfoKhx<'b> {
30959        DeviceGroupDeviceCreateInfoKhx {
30960            raw: self.raw,
30961            _p: PhantomData,
30962        }
30963    }
30964}
30965
30966
30967/// A `VkDeviceGroupSwapchainCreateInfoKHX`.
30968///
30969/// 
30970#[cfg(feature = "experimental")]
30971#[derive(Debug, Clone, Default)]
30972#[repr(C)]
30973pub struct DeviceGroupSwapchainCreateInfoKhx<'s> {
30974    raw: vks::VkDeviceGroupSwapchainCreateInfoKHX,
30975    _p: PhantomData<&'s ()>,
30976}
30977
30978#[cfg(feature = "experimental")]
30979impl<'s> DeviceGroupSwapchainCreateInfoKhx<'s> {
30980    pub fn builder<'b>() -> DeviceGroupSwapchainCreateInfoKhxBuilder<'b> {
30981        DeviceGroupSwapchainCreateInfoKhxBuilder::new()
30982    }
30983
30984    pub unsafe fn from_raw(raw: vks::VkDeviceGroupSwapchainCreateInfoKHX) -> DeviceGroupSwapchainCreateInfoKhx<'s> {
30985        DeviceGroupSwapchainCreateInfoKhx { raw, _p: PhantomData }
30986    }
30987
30988    pub fn next<'a>(&'a self) -> *const c_void {
30989        self.raw.pNext
30990    }
30991
30992    pub fn modes<'a>(&'a self) -> DeviceGroupPresentModeFlagsKhx {
30993        DeviceGroupPresentModeFlagsKhx::from_bits(self.raw.modes)
30994            .expect("DeviceGroupSwapchainCreateInfoKhx::modes: error converting flags")
30995    }
30996
30997    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
30998        self.raw.pNext = next;
30999    }
31000
31001    pub fn set_modes<'m>(&mut self, modes: DeviceGroupPresentModeFlagsKhx) {
31002        self.raw.modes = modes.bits();
31003    }
31004
31005    pub fn as_raw(&self) -> &vks::VkDeviceGroupSwapchainCreateInfoKHX {
31006        &self.raw
31007    }
31008}
31009
31010#[cfg(feature = "experimental")]
31011impl<'s> From<DeviceGroupSwapchainCreateInfoKhx<'s>> for vks::VkDeviceGroupSwapchainCreateInfoKHX {
31012    fn from(f: DeviceGroupSwapchainCreateInfoKhx<'s>) -> vks::VkDeviceGroupSwapchainCreateInfoKHX {
31013        f.raw
31014    }
31015}
31016
31017
31018/// A builder for `VkDeviceGroupSwapchainCreateInfoKHX`.
31019///
31020/// 
31021#[cfg(feature = "experimental")]
31022#[derive(Debug, Clone, Default)]
31023pub struct DeviceGroupSwapchainCreateInfoKhxBuilder<'b> {
31024    raw: vks::VkDeviceGroupSwapchainCreateInfoKHX,
31025    _p: PhantomData<&'b ()>, 
31026}
31027
31028#[cfg(feature = "experimental")]
31029impl<'b> DeviceGroupSwapchainCreateInfoKhxBuilder<'b> {
31030    pub fn new() -> DeviceGroupSwapchainCreateInfoKhxBuilder<'b> {
31031        DeviceGroupSwapchainCreateInfoKhxBuilder {
31032            raw: vks::VkDeviceGroupSwapchainCreateInfoKHX::default(),
31033            _p: PhantomData,
31034        }
31035    }
31036
31037    pub unsafe fn next<'m>(mut self, next: *const c_void) -> DeviceGroupSwapchainCreateInfoKhxBuilder<'b> {
31038        self.raw.pNext = next;
31039        self
31040    }
31041
31042    pub fn modes<'m>(mut self, modes: DeviceGroupPresentModeFlagsKhx) -> DeviceGroupSwapchainCreateInfoKhxBuilder<'b> {
31043        self.raw.modes = modes.bits();
31044        self
31045    }
31046
31047    pub fn get_next<'a>(&'a self) -> *const c_void {
31048        self.raw.pNext
31049    }
31050
31051    pub fn get_modes<'a>(&'a self) -> DeviceGroupPresentModeFlagsKhx {
31052        DeviceGroupPresentModeFlagsKhx::from_bits(self.raw.modes)
31053            .expect("DeviceGroupSwapchainCreateInfoKhx::modes: error converting flags")
31054    }
31055
31056    pub fn build(self) -> DeviceGroupSwapchainCreateInfoKhx<'b> {
31057        DeviceGroupSwapchainCreateInfoKhx {
31058            raw: self.raw,
31059            _p: PhantomData,
31060        }
31061    }
31062}
31063
31064
31065/// A `VkDescriptorUpdateTemplateEntryKHR`.
31066///
31067/// 
31068#[derive(Debug, Clone, Default)]
31069#[repr(C)]
31070pub struct DescriptorUpdateTemplateEntryKhr {
31071    raw: vks::VkDescriptorUpdateTemplateEntryKHR,
31072}
31073
31074impl DescriptorUpdateTemplateEntryKhr {
31075    pub fn builder() -> DescriptorUpdateTemplateEntryKhrBuilder {
31076        DescriptorUpdateTemplateEntryKhrBuilder::new()
31077    }
31078
31079    pub unsafe fn from_raw(raw: vks::VkDescriptorUpdateTemplateEntryKHR) -> DescriptorUpdateTemplateEntryKhr {
31080        DescriptorUpdateTemplateEntryKhr { raw, }
31081    }
31082
31083    pub fn dst_binding<'a>(&'a self) -> u32 {
31084        self.raw.dstBinding.into()
31085    }
31086
31087    pub fn dst_array_element<'a>(&'a self) -> u32 {
31088        self.raw.dstArrayElement.into()
31089    }
31090
31091    pub fn descriptor_count<'a>(&'a self) -> u32 {
31092        self.raw.descriptorCount.into()
31093    }
31094
31095    pub fn descriptor_type<'a>(&'a self) -> DescriptorType {
31096        self.raw.descriptorType.into()
31097    }
31098
31099    pub fn offset<'a>(&'a self) -> usize {
31100        self.raw.offset.into()
31101    }
31102
31103    pub fn stride<'a>(&'a self) -> usize {
31104        self.raw.stride.into()
31105    }
31106
31107    pub fn set_dst_binding<'m>(&mut self, dst_binding: u32) {
31108        self.raw.dstBinding = dst_binding.into();
31109    }
31110
31111    pub fn set_dst_array_element<'m>(&mut self, dst_array_element: u32) {
31112        self.raw.dstArrayElement = dst_array_element.into();
31113    }
31114
31115    pub fn set_descriptor_count<'m>(&mut self, descriptor_count: u32) {
31116        self.raw.descriptorCount = descriptor_count.into();
31117    }
31118
31119    pub fn set_descriptor_type<'m>(&mut self, descriptor_type: DescriptorType) {
31120        self.raw.descriptorType = descriptor_type.into();
31121    }
31122
31123    pub fn set_offset<'m>(&mut self, offset: usize) {
31124        self.raw.offset = offset.into();
31125    }
31126
31127    pub fn set_stride<'m>(&mut self, stride: usize) {
31128        self.raw.stride = stride.into();
31129    }
31130
31131    pub fn as_raw(&self) -> &vks::VkDescriptorUpdateTemplateEntryKHR {
31132        &self.raw
31133    }
31134}
31135
31136impl From<DescriptorUpdateTemplateEntryKhr> for vks::VkDescriptorUpdateTemplateEntryKHR {
31137    fn from(f: DescriptorUpdateTemplateEntryKhr) -> vks::VkDescriptorUpdateTemplateEntryKHR {
31138        f.raw
31139    }
31140}
31141
31142
31143/// A builder for `VkDescriptorUpdateTemplateEntryKHR`.
31144///
31145/// 
31146#[derive(Debug, Clone, Default)]
31147pub struct DescriptorUpdateTemplateEntryKhrBuilder {
31148    raw: vks::VkDescriptorUpdateTemplateEntryKHR,
31149}
31150
31151impl DescriptorUpdateTemplateEntryKhrBuilder {
31152    pub fn new() -> DescriptorUpdateTemplateEntryKhrBuilder {
31153        DescriptorUpdateTemplateEntryKhrBuilder {
31154            raw: vks::VkDescriptorUpdateTemplateEntryKHR::default(),
31155        }
31156    }
31157
31158    pub fn dst_binding<'m>(mut self, dst_binding: u32) -> DescriptorUpdateTemplateEntryKhrBuilder {
31159        self.raw.dstBinding = dst_binding.into();
31160        self
31161    }
31162
31163    pub fn dst_array_element<'m>(mut self, dst_array_element: u32) -> DescriptorUpdateTemplateEntryKhrBuilder {
31164        self.raw.dstArrayElement = dst_array_element.into();
31165        self
31166    }
31167
31168    pub fn descriptor_count<'m>(mut self, descriptor_count: u32) -> DescriptorUpdateTemplateEntryKhrBuilder {
31169        self.raw.descriptorCount = descriptor_count.into();
31170        self
31171    }
31172
31173    pub fn descriptor_type<'m>(mut self, descriptor_type: DescriptorType) -> DescriptorUpdateTemplateEntryKhrBuilder {
31174        self.raw.descriptorType = descriptor_type.into();
31175        self
31176    }
31177
31178    pub fn offset<'m>(mut self, offset: usize) -> DescriptorUpdateTemplateEntryKhrBuilder {
31179        self.raw.offset = offset.into();
31180        self
31181    }
31182
31183    pub fn stride<'m>(mut self, stride: usize) -> DescriptorUpdateTemplateEntryKhrBuilder {
31184        self.raw.stride = stride.into();
31185        self
31186    }
31187
31188    pub fn get_dst_binding<'a>(&'a self) -> u32 {
31189        self.raw.dstBinding.into()
31190    }
31191
31192    pub fn get_dst_array_element<'a>(&'a self) -> u32 {
31193        self.raw.dstArrayElement.into()
31194    }
31195
31196    pub fn get_descriptor_count<'a>(&'a self) -> u32 {
31197        self.raw.descriptorCount.into()
31198    }
31199
31200    pub fn get_descriptor_type<'a>(&'a self) -> DescriptorType {
31201        self.raw.descriptorType.into()
31202    }
31203
31204    pub fn get_offset<'a>(&'a self) -> usize {
31205        self.raw.offset.into()
31206    }
31207
31208    pub fn get_stride<'a>(&'a self) -> usize {
31209        self.raw.stride.into()
31210    }
31211
31212    pub fn build(self) -> DescriptorUpdateTemplateEntryKhr {
31213        DescriptorUpdateTemplateEntryKhr {
31214            raw: self.raw,
31215        }
31216    }
31217}
31218
31219
31220/// A `VkDescriptorUpdateTemplateCreateInfoKHR`.
31221///
31222/// 
31223#[derive(Debug, Clone, Default)]
31224#[repr(C)]
31225pub struct DescriptorUpdateTemplateCreateInfoKhr<'s> {
31226    raw: vks::VkDescriptorUpdateTemplateCreateInfoKHR,
31227    _p: PhantomData<&'s ()>,
31228}
31229
31230impl<'s> DescriptorUpdateTemplateCreateInfoKhr<'s> {
31231    pub fn builder<'b>() -> DescriptorUpdateTemplateCreateInfoKhrBuilder<'b> {
31232        DescriptorUpdateTemplateCreateInfoKhrBuilder::new()
31233    }
31234
31235    pub unsafe fn from_raw(raw: vks::VkDescriptorUpdateTemplateCreateInfoKHR) -> DescriptorUpdateTemplateCreateInfoKhr<'s> {
31236        DescriptorUpdateTemplateCreateInfoKhr { raw, _p: PhantomData }
31237    }
31238
31239    pub fn next<'a>(&'a self) -> *mut c_void {
31240        self.raw.pNext
31241    }
31242
31243    pub fn flags<'a>(&'a self) -> DescriptorUpdateTemplateCreateFlagsKhr {
31244        DescriptorUpdateTemplateCreateFlagsKhr::from_bits(self.raw.flags)
31245            .expect("DescriptorUpdateTemplateCreateInfoKhr::flags: error converting flags")
31246    }
31247
31248    pub fn descriptor_update_entries<'a>(&'a self) -> &'a [DescriptorUpdateTemplateEntryKhr] {
31249        unsafe { slice::from_raw_parts(self.raw.pDescriptorUpdateEntries as *const _, self.raw.descriptorUpdateEntryCount as usize) }
31250    }
31251
31252    pub fn template_type<'a>(&'a self) -> DescriptorUpdateTemplateTypeKhr {
31253        self.raw.templateType.into()
31254    }
31255
31256    pub fn descriptor_set_layout<'a>(&'a self) -> vks::VkDescriptorSetLayout {
31257        self.raw.descriptorSetLayout
31258    }
31259
31260    pub fn pipeline_bind_point<'a>(&'a self) -> PipelineBindPoint {
31261        self.raw.pipelineBindPoint.into()
31262    }
31263
31264    pub fn pipeline_layout<'a>(&'a self) -> vks::VkPipelineLayout {
31265        self.raw.pipelineLayout
31266    }
31267
31268    pub fn set<'a>(&'a self) -> u32 {
31269        self.raw.set.into()
31270    }
31271
31272    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
31273        self.raw.pNext = next;
31274    }
31275
31276    pub fn set_flags<'m>(&mut self, flags: DescriptorUpdateTemplateCreateFlagsKhr) {
31277        self.raw.flags = flags.bits();
31278    }
31279
31280    pub fn set_descriptor_update_entries<'m, 'a>(&mut self, descriptor_update_entries: &'a [DescriptorUpdateTemplateEntryKhr])
31281            where 'a: 's {
31282        assert!(self.raw.descriptorUpdateEntryCount == 0 || self.raw.descriptorUpdateEntryCount == descriptor_update_entries.len() as _, 
31283            "count inconsistency found when specifying `DescriptorUpdateTemplateCreateInfoKhr::descriptor_update_entries`.");
31284        self.raw.descriptorUpdateEntryCount = descriptor_update_entries.len() as _;
31285        self.raw.pDescriptorUpdateEntries = descriptor_update_entries.as_ptr() as *const vks::VkDescriptorUpdateTemplateEntryKHR;
31286    }
31287
31288    pub fn set_template_type<'m>(&mut self, template_type: DescriptorUpdateTemplateTypeKhr) {
31289        self.raw.templateType = template_type.into();
31290    }
31291
31292    pub fn set_descriptor_set_layout<'m, H>(&mut self, descriptor_set_layout: H)
31293            where H: Handle<Target=DescriptorSetLayoutHandle> {
31294        self.raw.descriptorSetLayout = descriptor_set_layout.handle().0;
31295    }
31296
31297    pub fn set_pipeline_bind_point<'m>(&mut self, pipeline_bind_point: PipelineBindPoint) {
31298        self.raw.pipelineBindPoint = pipeline_bind_point.into();
31299    }
31300
31301    pub fn set_pipeline_layout<'m, H>(&mut self, pipeline_layout: H)
31302            where H: Handle<Target=PipelineLayoutHandle> {
31303        self.raw.pipelineLayout = pipeline_layout.handle().0;
31304    }
31305
31306    pub fn set_set<'m>(&mut self, set: u32) {
31307        self.raw.set = set.into();
31308    }
31309
31310    pub fn as_raw(&self) -> &vks::VkDescriptorUpdateTemplateCreateInfoKHR {
31311        &self.raw
31312    }
31313}
31314
31315impl<'s> From<DescriptorUpdateTemplateCreateInfoKhr<'s>> for vks::VkDescriptorUpdateTemplateCreateInfoKHR {
31316    fn from(f: DescriptorUpdateTemplateCreateInfoKhr<'s>) -> vks::VkDescriptorUpdateTemplateCreateInfoKHR {
31317        f.raw
31318    }
31319}
31320
31321
31322/// A builder for `VkDescriptorUpdateTemplateCreateInfoKHR`.
31323///
31324/// 
31325#[derive(Debug, Clone, Default)]
31326pub struct DescriptorUpdateTemplateCreateInfoKhrBuilder<'b> {
31327    raw: vks::VkDescriptorUpdateTemplateCreateInfoKHR,
31328    _p: PhantomData<&'b ()>, 
31329}
31330
31331impl<'b> DescriptorUpdateTemplateCreateInfoKhrBuilder<'b> {
31332    pub fn new() -> DescriptorUpdateTemplateCreateInfoKhrBuilder<'b> {
31333        DescriptorUpdateTemplateCreateInfoKhrBuilder {
31334            raw: vks::VkDescriptorUpdateTemplateCreateInfoKHR::default(),
31335            _p: PhantomData,
31336        }
31337    }
31338
31339    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> DescriptorUpdateTemplateCreateInfoKhrBuilder<'b> {
31340        self.raw.pNext = next;
31341        self
31342    }
31343
31344    pub fn flags<'m>(mut self, flags: DescriptorUpdateTemplateCreateFlagsKhr) -> DescriptorUpdateTemplateCreateInfoKhrBuilder<'b> {
31345        self.raw.flags = flags.bits();
31346        self
31347    }
31348
31349    pub fn descriptor_update_entries<'m, 'a>(mut self, descriptor_update_entries: &'a [DescriptorUpdateTemplateEntryKhr]) -> DescriptorUpdateTemplateCreateInfoKhrBuilder<'b>
31350            where 'a: 'b {
31351        assert!(self.raw.descriptorUpdateEntryCount == 0 || self.raw.descriptorUpdateEntryCount == descriptor_update_entries.len() as _, 
31352            "count inconsistency found when specifying `DescriptorUpdateTemplateCreateInfoKhr::descriptor_update_entries`.");
31353        self.raw.descriptorUpdateEntryCount = descriptor_update_entries.len() as _;
31354        self.raw.pDescriptorUpdateEntries = descriptor_update_entries.as_ptr() as *const vks::VkDescriptorUpdateTemplateEntryKHR;
31355        self
31356    }
31357
31358    pub fn template_type<'m>(mut self, template_type: DescriptorUpdateTemplateTypeKhr) -> DescriptorUpdateTemplateCreateInfoKhrBuilder<'b> {
31359        self.raw.templateType = template_type.into();
31360        self
31361    }
31362
31363    pub fn descriptor_set_layout<'m, H>(mut self, descriptor_set_layout: H) -> DescriptorUpdateTemplateCreateInfoKhrBuilder<'b>
31364            where H: Handle<Target=DescriptorSetLayoutHandle> {
31365        self.raw.descriptorSetLayout = descriptor_set_layout.handle().0;
31366        self
31367    }
31368
31369    pub fn pipeline_bind_point<'m>(mut self, pipeline_bind_point: PipelineBindPoint) -> DescriptorUpdateTemplateCreateInfoKhrBuilder<'b> {
31370        self.raw.pipelineBindPoint = pipeline_bind_point.into();
31371        self
31372    }
31373
31374    pub fn pipeline_layout<'m, H>(mut self, pipeline_layout: H) -> DescriptorUpdateTemplateCreateInfoKhrBuilder<'b>
31375            where H: Handle<Target=PipelineLayoutHandle> {
31376        self.raw.pipelineLayout = pipeline_layout.handle().0;
31377        self
31378    }
31379
31380    pub fn set<'m>(mut self, set: u32) -> DescriptorUpdateTemplateCreateInfoKhrBuilder<'b> {
31381        self.raw.set = set.into();
31382        self
31383    }
31384
31385    pub fn get_next<'a>(&'a self) -> *mut c_void {
31386        self.raw.pNext
31387    }
31388
31389    pub fn get_flags<'a>(&'a self) -> DescriptorUpdateTemplateCreateFlagsKhr {
31390        DescriptorUpdateTemplateCreateFlagsKhr::from_bits(self.raw.flags)
31391            .expect("DescriptorUpdateTemplateCreateInfoKhr::flags: error converting flags")
31392    }
31393
31394    pub fn get_descriptor_update_entries<'a>(&'a self) -> &'a [DescriptorUpdateTemplateEntryKhr] {
31395        unsafe { slice::from_raw_parts(self.raw.pDescriptorUpdateEntries as *const _, self.raw.descriptorUpdateEntryCount as usize) }
31396    }
31397
31398    pub fn get_template_type<'a>(&'a self) -> DescriptorUpdateTemplateTypeKhr {
31399        self.raw.templateType.into()
31400    }
31401
31402    pub fn get_descriptor_set_layout<'a>(&'a self) -> vks::VkDescriptorSetLayout {
31403        self.raw.descriptorSetLayout
31404    }
31405
31406    pub fn get_pipeline_bind_point<'a>(&'a self) -> PipelineBindPoint {
31407        self.raw.pipelineBindPoint.into()
31408    }
31409
31410    pub fn get_pipeline_layout<'a>(&'a self) -> vks::VkPipelineLayout {
31411        self.raw.pipelineLayout
31412    }
31413
31414    pub fn get_set<'a>(&'a self) -> u32 {
31415        self.raw.set.into()
31416    }
31417
31418    pub fn build(self) -> DescriptorUpdateTemplateCreateInfoKhr<'b> {
31419        DescriptorUpdateTemplateCreateInfoKhr {
31420            raw: self.raw,
31421            _p: PhantomData,
31422        }
31423    }
31424}
31425
31426
31427/// A `VkXYColorEXT`.
31428///
31429/// Chromaticity coordinate
31430#[derive(Debug, Clone, Default)]
31431#[repr(C)]
31432pub struct XYColorExt {
31433    raw: vks::VkXYColorEXT,
31434}
31435
31436impl XYColorExt {
31437    pub fn builder() -> XYColorExtBuilder {
31438        XYColorExtBuilder::new()
31439    }
31440
31441    pub unsafe fn from_raw(raw: vks::VkXYColorEXT) -> XYColorExt {
31442        XYColorExt { raw, }
31443    }
31444
31445    pub fn x<'a>(&'a self) -> f32 {
31446        self.raw.x.into()
31447    }
31448
31449    pub fn y<'a>(&'a self) -> f32 {
31450        self.raw.y.into()
31451    }
31452
31453    pub fn set_x<'m>(&mut self, x: f32) {
31454        self.raw.x = x.into();
31455    }
31456
31457    pub fn set_y<'m>(&mut self, y: f32) {
31458        self.raw.y = y.into();
31459    }
31460
31461    pub fn as_raw(&self) -> &vks::VkXYColorEXT {
31462        &self.raw
31463    }
31464}
31465
31466impl From<XYColorExt> for vks::VkXYColorEXT {
31467    fn from(f: XYColorExt) -> vks::VkXYColorEXT {
31468        f.raw
31469    }
31470}
31471
31472
31473/// A builder for `VkXYColorEXT`.
31474///
31475/// Chromaticity coordinate
31476#[derive(Debug, Clone, Default)]
31477pub struct XYColorExtBuilder {
31478    raw: vks::VkXYColorEXT,
31479}
31480
31481impl XYColorExtBuilder {
31482    pub fn new() -> XYColorExtBuilder {
31483        XYColorExtBuilder {
31484            raw: vks::VkXYColorEXT::default(),
31485        }
31486    }
31487
31488    pub fn x<'m>(mut self, x: f32) -> XYColorExtBuilder {
31489        self.raw.x = x.into();
31490        self
31491    }
31492
31493    pub fn y<'m>(mut self, y: f32) -> XYColorExtBuilder {
31494        self.raw.y = y.into();
31495        self
31496    }
31497
31498    pub fn get_x<'a>(&'a self) -> f32 {
31499        self.raw.x.into()
31500    }
31501
31502    pub fn get_y<'a>(&'a self) -> f32 {
31503        self.raw.y.into()
31504    }
31505
31506    pub fn build(self) -> XYColorExt {
31507        XYColorExt {
31508            raw: self.raw,
31509        }
31510    }
31511}
31512
31513
31514/// A `VkHdrMetadataEXT`.
31515///
31516///  From CTA 861.3
31517#[derive(Debug, Clone, Default)]
31518#[repr(C)]
31519pub struct HdrMetadataExt<'s> {
31520    raw: vks::VkHdrMetadataEXT,
31521    _p: PhantomData<&'s ()>,
31522}
31523
31524impl<'s> HdrMetadataExt<'s> {
31525    pub fn builder<'b>() -> HdrMetadataExtBuilder<'b> {
31526        HdrMetadataExtBuilder::new()
31527    }
31528
31529    pub unsafe fn from_raw(raw: vks::VkHdrMetadataEXT) -> HdrMetadataExt<'s> {
31530        HdrMetadataExt { raw, _p: PhantomData }
31531    }
31532
31533    pub fn next<'a>(&'a self) -> *const c_void {
31534        self.raw.pNext
31535    }
31536
31537    pub fn display_primary_red<'a>(&'a self) -> &'a XYColorExt {
31538        unsafe { &*(&self.raw.displayPrimaryRed as *const vks::VkXYColorEXT as *const XYColorExt) }
31539    }
31540
31541    pub fn display_primary_red_mut<'a>(&'a mut self) -> &'a mut XYColorExt {
31542        unsafe { &mut *(&mut self.raw.displayPrimaryRed as *mut  vks::VkXYColorEXT as *mut XYColorExt) }
31543    }
31544
31545    pub fn display_primary_green<'a>(&'a self) -> &'a XYColorExt {
31546        unsafe { &*(&self.raw.displayPrimaryGreen as *const vks::VkXYColorEXT as *const XYColorExt) }
31547    }
31548
31549    pub fn display_primary_green_mut<'a>(&'a mut self) -> &'a mut XYColorExt {
31550        unsafe { &mut *(&mut self.raw.displayPrimaryGreen as *mut  vks::VkXYColorEXT as *mut XYColorExt) }
31551    }
31552
31553    pub fn display_primary_blue<'a>(&'a self) -> &'a XYColorExt {
31554        unsafe { &*(&self.raw.displayPrimaryBlue as *const vks::VkXYColorEXT as *const XYColorExt) }
31555    }
31556
31557    pub fn display_primary_blue_mut<'a>(&'a mut self) -> &'a mut XYColorExt {
31558        unsafe { &mut *(&mut self.raw.displayPrimaryBlue as *mut  vks::VkXYColorEXT as *mut XYColorExt) }
31559    }
31560
31561    pub fn white_point<'a>(&'a self) -> &'a XYColorExt {
31562        unsafe { &*(&self.raw.whitePoint as *const vks::VkXYColorEXT as *const XYColorExt) }
31563    }
31564
31565    pub fn white_point_mut<'a>(&'a mut self) -> &'a mut XYColorExt {
31566        unsafe { &mut *(&mut self.raw.whitePoint as *mut  vks::VkXYColorEXT as *mut XYColorExt) }
31567    }
31568
31569    pub fn max_luminance<'a>(&'a self) -> f32 {
31570        self.raw.maxLuminance.into()
31571    }
31572
31573    pub fn min_luminance<'a>(&'a self) -> f32 {
31574        self.raw.minLuminance.into()
31575    }
31576
31577    pub fn max_content_light_level<'a>(&'a self) -> f32 {
31578        self.raw.maxContentLightLevel.into()
31579    }
31580
31581    pub fn max_frame_average_light_level<'a>(&'a self) -> f32 {
31582        self.raw.maxFrameAverageLightLevel.into()
31583    }
31584
31585    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
31586        self.raw.pNext = next;
31587    }
31588
31589    pub fn set_display_primary_red<'m>(&mut self, display_primary_red: XYColorExt) {
31590        self.raw.displayPrimaryRed = display_primary_red.raw;
31591    }
31592
31593    pub fn set_display_primary_green<'m>(&mut self, display_primary_green: XYColorExt) {
31594        self.raw.displayPrimaryGreen = display_primary_green.raw;
31595    }
31596
31597    pub fn set_display_primary_blue<'m>(&mut self, display_primary_blue: XYColorExt) {
31598        self.raw.displayPrimaryBlue = display_primary_blue.raw;
31599    }
31600
31601    pub fn set_white_point<'m>(&mut self, white_point: XYColorExt) {
31602        self.raw.whitePoint = white_point.raw;
31603    }
31604
31605    pub fn set_max_luminance<'m>(&mut self, max_luminance: f32) {
31606        self.raw.maxLuminance = max_luminance.into();
31607    }
31608
31609    pub fn set_min_luminance<'m>(&mut self, min_luminance: f32) {
31610        self.raw.minLuminance = min_luminance.into();
31611    }
31612
31613    pub fn set_max_content_light_level<'m>(&mut self, max_content_light_level: f32) {
31614        self.raw.maxContentLightLevel = max_content_light_level.into();
31615    }
31616
31617    pub fn set_max_frame_average_light_level<'m>(&mut self, max_frame_average_light_level: f32) {
31618        self.raw.maxFrameAverageLightLevel = max_frame_average_light_level.into();
31619    }
31620
31621    pub fn as_raw(&self) -> &vks::VkHdrMetadataEXT {
31622        &self.raw
31623    }
31624}
31625
31626impl<'s> From<HdrMetadataExt<'s>> for vks::VkHdrMetadataEXT {
31627    fn from(f: HdrMetadataExt<'s>) -> vks::VkHdrMetadataEXT {
31628        f.raw
31629    }
31630}
31631
31632
31633/// A builder for `VkHdrMetadataEXT`.
31634///
31635///  From CTA 861.3
31636#[derive(Debug, Clone, Default)]
31637pub struct HdrMetadataExtBuilder<'b> {
31638    raw: vks::VkHdrMetadataEXT,
31639    _p: PhantomData<&'b ()>, 
31640}
31641
31642impl<'b> HdrMetadataExtBuilder<'b> {
31643    pub fn new() -> HdrMetadataExtBuilder<'b> {
31644        HdrMetadataExtBuilder {
31645            raw: vks::VkHdrMetadataEXT::default(),
31646            _p: PhantomData,
31647        }
31648    }
31649
31650    pub unsafe fn next<'m>(mut self, next: *const c_void) -> HdrMetadataExtBuilder<'b> {
31651        self.raw.pNext = next;
31652        self
31653    }
31654
31655    pub fn display_primary_red<'m>(mut self, display_primary_red: XYColorExt) -> HdrMetadataExtBuilder<'b> {
31656        self.raw.displayPrimaryRed = display_primary_red.raw;
31657        self
31658    }
31659
31660    pub fn display_primary_green<'m>(mut self, display_primary_green: XYColorExt) -> HdrMetadataExtBuilder<'b> {
31661        self.raw.displayPrimaryGreen = display_primary_green.raw;
31662        self
31663    }
31664
31665    pub fn display_primary_blue<'m>(mut self, display_primary_blue: XYColorExt) -> HdrMetadataExtBuilder<'b> {
31666        self.raw.displayPrimaryBlue = display_primary_blue.raw;
31667        self
31668    }
31669
31670    pub fn white_point<'m>(mut self, white_point: XYColorExt) -> HdrMetadataExtBuilder<'b> {
31671        self.raw.whitePoint = white_point.raw;
31672        self
31673    }
31674
31675    pub fn max_luminance<'m>(mut self, max_luminance: f32) -> HdrMetadataExtBuilder<'b> {
31676        self.raw.maxLuminance = max_luminance.into();
31677        self
31678    }
31679
31680    pub fn min_luminance<'m>(mut self, min_luminance: f32) -> HdrMetadataExtBuilder<'b> {
31681        self.raw.minLuminance = min_luminance.into();
31682        self
31683    }
31684
31685    pub fn max_content_light_level<'m>(mut self, max_content_light_level: f32) -> HdrMetadataExtBuilder<'b> {
31686        self.raw.maxContentLightLevel = max_content_light_level.into();
31687        self
31688    }
31689
31690    pub fn max_frame_average_light_level<'m>(mut self, max_frame_average_light_level: f32) -> HdrMetadataExtBuilder<'b> {
31691        self.raw.maxFrameAverageLightLevel = max_frame_average_light_level.into();
31692        self
31693    }
31694
31695    pub fn get_next<'a>(&'a self) -> *const c_void {
31696        self.raw.pNext
31697    }
31698
31699    pub fn get_display_primary_red<'a>(&'a self) -> &'a XYColorExt {
31700        unsafe { &*(&self.raw.displayPrimaryRed as *const vks::VkXYColorEXT as *const XYColorExt) }
31701    }
31702
31703    pub fn get_display_primary_red_mut<'a>(&'a mut self) -> &'a mut XYColorExt {
31704        unsafe { &mut *(&mut self.raw.displayPrimaryRed as *mut  vks::VkXYColorEXT as *mut XYColorExt) }
31705    }
31706
31707    pub fn get_display_primary_green<'a>(&'a self) -> &'a XYColorExt {
31708        unsafe { &*(&self.raw.displayPrimaryGreen as *const vks::VkXYColorEXT as *const XYColorExt) }
31709    }
31710
31711    pub fn get_display_primary_green_mut<'a>(&'a mut self) -> &'a mut XYColorExt {
31712        unsafe { &mut *(&mut self.raw.displayPrimaryGreen as *mut  vks::VkXYColorEXT as *mut XYColorExt) }
31713    }
31714
31715    pub fn get_display_primary_blue<'a>(&'a self) -> &'a XYColorExt {
31716        unsafe { &*(&self.raw.displayPrimaryBlue as *const vks::VkXYColorEXT as *const XYColorExt) }
31717    }
31718
31719    pub fn get_display_primary_blue_mut<'a>(&'a mut self) -> &'a mut XYColorExt {
31720        unsafe { &mut *(&mut self.raw.displayPrimaryBlue as *mut  vks::VkXYColorEXT as *mut XYColorExt) }
31721    }
31722
31723    pub fn get_white_point<'a>(&'a self) -> &'a XYColorExt {
31724        unsafe { &*(&self.raw.whitePoint as *const vks::VkXYColorEXT as *const XYColorExt) }
31725    }
31726
31727    pub fn get_white_point_mut<'a>(&'a mut self) -> &'a mut XYColorExt {
31728        unsafe { &mut *(&mut self.raw.whitePoint as *mut  vks::VkXYColorEXT as *mut XYColorExt) }
31729    }
31730
31731    pub fn get_max_luminance<'a>(&'a self) -> f32 {
31732        self.raw.maxLuminance.into()
31733    }
31734
31735    pub fn get_min_luminance<'a>(&'a self) -> f32 {
31736        self.raw.minLuminance.into()
31737    }
31738
31739    pub fn get_max_content_light_level<'a>(&'a self) -> f32 {
31740        self.raw.maxContentLightLevel.into()
31741    }
31742
31743    pub fn get_max_frame_average_light_level<'a>(&'a self) -> f32 {
31744        self.raw.maxFrameAverageLightLevel.into()
31745    }
31746
31747    pub fn build(self) -> HdrMetadataExt<'b> {
31748        HdrMetadataExt {
31749            raw: self.raw,
31750            _p: PhantomData,
31751        }
31752    }
31753}
31754
31755
31756/// A `VkRefreshCycleDurationGOOGLE`.
31757///
31758/// 
31759#[derive(Debug, Clone, Default)]
31760#[repr(C)]
31761pub struct RefreshCycleDurationGoogle {
31762    raw: vks::VkRefreshCycleDurationGOOGLE,
31763}
31764
31765impl RefreshCycleDurationGoogle {
31766    pub fn builder() -> RefreshCycleDurationGoogleBuilder {
31767        RefreshCycleDurationGoogleBuilder::new()
31768    }
31769
31770    pub unsafe fn from_raw(raw: vks::VkRefreshCycleDurationGOOGLE) -> RefreshCycleDurationGoogle {
31771        RefreshCycleDurationGoogle { raw, }
31772    }
31773
31774    pub fn refresh_duration<'a>(&'a self) -> u64 {
31775        self.raw.refreshDuration.into()
31776    }
31777
31778    pub fn set_refresh_duration<'m>(&mut self, refresh_duration: u64) {
31779        self.raw.refreshDuration = refresh_duration.into();
31780    }
31781
31782    pub fn as_raw(&self) -> &vks::VkRefreshCycleDurationGOOGLE {
31783        &self.raw
31784    }
31785}
31786
31787impl From<RefreshCycleDurationGoogle> for vks::VkRefreshCycleDurationGOOGLE {
31788    fn from(f: RefreshCycleDurationGoogle) -> vks::VkRefreshCycleDurationGOOGLE {
31789        f.raw
31790    }
31791}
31792
31793
31794/// A builder for `VkRefreshCycleDurationGOOGLE`.
31795///
31796/// 
31797#[derive(Debug, Clone, Default)]
31798pub struct RefreshCycleDurationGoogleBuilder {
31799    raw: vks::VkRefreshCycleDurationGOOGLE,
31800}
31801
31802impl RefreshCycleDurationGoogleBuilder {
31803    pub fn new() -> RefreshCycleDurationGoogleBuilder {
31804        RefreshCycleDurationGoogleBuilder {
31805            raw: vks::VkRefreshCycleDurationGOOGLE::default(),
31806        }
31807    }
31808
31809    pub fn refresh_duration<'m>(mut self, refresh_duration: u64) -> RefreshCycleDurationGoogleBuilder {
31810        self.raw.refreshDuration = refresh_duration.into();
31811        self
31812    }
31813
31814    pub fn get_refresh_duration<'a>(&'a self) -> u64 {
31815        self.raw.refreshDuration.into()
31816    }
31817
31818    pub fn build(self) -> RefreshCycleDurationGoogle {
31819        RefreshCycleDurationGoogle {
31820            raw: self.raw,
31821        }
31822    }
31823}
31824
31825
31826/// A `VkPastPresentationTimingGOOGLE`.
31827///
31828/// 
31829#[derive(Debug, Clone, Default)]
31830#[repr(C)]
31831pub struct PastPresentationTimingGoogle {
31832    raw: vks::VkPastPresentationTimingGOOGLE,
31833}
31834
31835impl PastPresentationTimingGoogle {
31836    pub fn builder() -> PastPresentationTimingGoogleBuilder {
31837        PastPresentationTimingGoogleBuilder::new()
31838    }
31839
31840    pub unsafe fn from_raw(raw: vks::VkPastPresentationTimingGOOGLE) -> PastPresentationTimingGoogle {
31841        PastPresentationTimingGoogle { raw, }
31842    }
31843
31844    pub fn present_id<'a>(&'a self) -> u32 {
31845        self.raw.presentID.into()
31846    }
31847
31848    pub fn desired_present_time<'a>(&'a self) -> u64 {
31849        self.raw.desiredPresentTime.into()
31850    }
31851
31852    pub fn actual_present_time<'a>(&'a self) -> u64 {
31853        self.raw.actualPresentTime.into()
31854    }
31855
31856    pub fn earliest_present_time<'a>(&'a self) -> u64 {
31857        self.raw.earliestPresentTime.into()
31858    }
31859
31860    pub fn present_margin<'a>(&'a self) -> u64 {
31861        self.raw.presentMargin.into()
31862    }
31863
31864    pub fn set_present_id<'m>(&mut self, present_id: u32) {
31865        self.raw.presentID = present_id.into();
31866    }
31867
31868    pub fn set_desired_present_time<'m>(&mut self, desired_present_time: u64) {
31869        self.raw.desiredPresentTime = desired_present_time.into();
31870    }
31871
31872    pub fn set_actual_present_time<'m>(&mut self, actual_present_time: u64) {
31873        self.raw.actualPresentTime = actual_present_time.into();
31874    }
31875
31876    pub fn set_earliest_present_time<'m>(&mut self, earliest_present_time: u64) {
31877        self.raw.earliestPresentTime = earliest_present_time.into();
31878    }
31879
31880    pub fn set_present_margin<'m>(&mut self, present_margin: u64) {
31881        self.raw.presentMargin = present_margin.into();
31882    }
31883
31884    pub fn as_raw(&self) -> &vks::VkPastPresentationTimingGOOGLE {
31885        &self.raw
31886    }
31887}
31888
31889impl From<PastPresentationTimingGoogle> for vks::VkPastPresentationTimingGOOGLE {
31890    fn from(f: PastPresentationTimingGoogle) -> vks::VkPastPresentationTimingGOOGLE {
31891        f.raw
31892    }
31893}
31894
31895
31896/// A builder for `VkPastPresentationTimingGOOGLE`.
31897///
31898/// 
31899#[derive(Debug, Clone, Default)]
31900pub struct PastPresentationTimingGoogleBuilder {
31901    raw: vks::VkPastPresentationTimingGOOGLE,
31902}
31903
31904impl PastPresentationTimingGoogleBuilder {
31905    pub fn new() -> PastPresentationTimingGoogleBuilder {
31906        PastPresentationTimingGoogleBuilder {
31907            raw: vks::VkPastPresentationTimingGOOGLE::default(),
31908        }
31909    }
31910
31911    pub fn present_id<'m>(mut self, present_id: u32) -> PastPresentationTimingGoogleBuilder {
31912        self.raw.presentID = present_id.into();
31913        self
31914    }
31915
31916    pub fn desired_present_time<'m>(mut self, desired_present_time: u64) -> PastPresentationTimingGoogleBuilder {
31917        self.raw.desiredPresentTime = desired_present_time.into();
31918        self
31919    }
31920
31921    pub fn actual_present_time<'m>(mut self, actual_present_time: u64) -> PastPresentationTimingGoogleBuilder {
31922        self.raw.actualPresentTime = actual_present_time.into();
31923        self
31924    }
31925
31926    pub fn earliest_present_time<'m>(mut self, earliest_present_time: u64) -> PastPresentationTimingGoogleBuilder {
31927        self.raw.earliestPresentTime = earliest_present_time.into();
31928        self
31929    }
31930
31931    pub fn present_margin<'m>(mut self, present_margin: u64) -> PastPresentationTimingGoogleBuilder {
31932        self.raw.presentMargin = present_margin.into();
31933        self
31934    }
31935
31936    pub fn get_present_id<'a>(&'a self) -> u32 {
31937        self.raw.presentID.into()
31938    }
31939
31940    pub fn get_desired_present_time<'a>(&'a self) -> u64 {
31941        self.raw.desiredPresentTime.into()
31942    }
31943
31944    pub fn get_actual_present_time<'a>(&'a self) -> u64 {
31945        self.raw.actualPresentTime.into()
31946    }
31947
31948    pub fn get_earliest_present_time<'a>(&'a self) -> u64 {
31949        self.raw.earliestPresentTime.into()
31950    }
31951
31952    pub fn get_present_margin<'a>(&'a self) -> u64 {
31953        self.raw.presentMargin.into()
31954    }
31955
31956    pub fn build(self) -> PastPresentationTimingGoogle {
31957        PastPresentationTimingGoogle {
31958            raw: self.raw,
31959        }
31960    }
31961}
31962
31963
31964/// A `VkPresentTimesInfoGOOGLE`.
31965///
31966/// 
31967#[derive(Debug, Clone, Default)]
31968#[repr(C)]
31969pub struct PresentTimesInfoGoogle<'s> {
31970    raw: vks::VkPresentTimesInfoGOOGLE,
31971    _p: PhantomData<&'s ()>,
31972}
31973
31974impl<'s> PresentTimesInfoGoogle<'s> {
31975    pub fn builder<'b>() -> PresentTimesInfoGoogleBuilder<'b> {
31976        PresentTimesInfoGoogleBuilder::new()
31977    }
31978
31979    pub unsafe fn from_raw(raw: vks::VkPresentTimesInfoGOOGLE) -> PresentTimesInfoGoogle<'s> {
31980        PresentTimesInfoGoogle { raw, _p: PhantomData }
31981    }
31982
31983    pub fn next<'a>(&'a self) -> *const c_void {
31984        self.raw.pNext
31985    }
31986
31987    pub fn times<'a>(&'a self) -> &'a [PresentTimeGoogle] {
31988        unsafe { slice::from_raw_parts(self.raw.pTimes as *const _, self.raw.swapchainCount as usize) }
31989    }
31990
31991    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
31992        self.raw.pNext = next;
31993    }
31994
31995    pub fn set_times<'m, 'a>(&mut self, times: &'a [PresentTimeGoogle])
31996            where 'a: 's {
31997        assert!(self.raw.swapchainCount == 0 || self.raw.swapchainCount == times.len() as _, 
31998            "count inconsistency found when specifying `PresentTimesInfoGoogle::times`.");
31999        self.raw.swapchainCount = times.len() as _;
32000        self.raw.pTimes = times.as_ptr() as *const vks::VkPresentTimeGOOGLE;
32001    }
32002
32003    pub fn as_raw(&self) -> &vks::VkPresentTimesInfoGOOGLE {
32004        &self.raw
32005    }
32006}
32007
32008impl<'s> From<PresentTimesInfoGoogle<'s>> for vks::VkPresentTimesInfoGOOGLE {
32009    fn from(f: PresentTimesInfoGoogle<'s>) -> vks::VkPresentTimesInfoGOOGLE {
32010        f.raw
32011    }
32012}
32013
32014
32015/// A builder for `VkPresentTimesInfoGOOGLE`.
32016///
32017/// 
32018#[derive(Debug, Clone, Default)]
32019pub struct PresentTimesInfoGoogleBuilder<'b> {
32020    raw: vks::VkPresentTimesInfoGOOGLE,
32021    _p: PhantomData<&'b ()>, 
32022}
32023
32024impl<'b> PresentTimesInfoGoogleBuilder<'b> {
32025    pub fn new() -> PresentTimesInfoGoogleBuilder<'b> {
32026        PresentTimesInfoGoogleBuilder {
32027            raw: vks::VkPresentTimesInfoGOOGLE::default(),
32028            _p: PhantomData,
32029        }
32030    }
32031
32032    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PresentTimesInfoGoogleBuilder<'b> {
32033        self.raw.pNext = next;
32034        self
32035    }
32036
32037    pub fn times<'m, 'a>(mut self, times: &'a [PresentTimeGoogle]) -> PresentTimesInfoGoogleBuilder<'b>
32038            where 'a: 'b {
32039        assert!(self.raw.swapchainCount == 0 || self.raw.swapchainCount == times.len() as _, 
32040            "count inconsistency found when specifying `PresentTimesInfoGoogle::times`.");
32041        self.raw.swapchainCount = times.len() as _;
32042        self.raw.pTimes = times.as_ptr() as *const vks::VkPresentTimeGOOGLE;
32043        self
32044    }
32045
32046    pub fn get_next<'a>(&'a self) -> *const c_void {
32047        self.raw.pNext
32048    }
32049
32050    pub fn get_times<'a>(&'a self) -> &'a [PresentTimeGoogle] {
32051        unsafe { slice::from_raw_parts(self.raw.pTimes as *const _, self.raw.swapchainCount as usize) }
32052    }
32053
32054    pub fn build(self) -> PresentTimesInfoGoogle<'b> {
32055        PresentTimesInfoGoogle {
32056            raw: self.raw,
32057            _p: PhantomData,
32058        }
32059    }
32060}
32061
32062
32063/// A `VkPresentTimeGOOGLE`.
32064///
32065/// 
32066#[derive(Debug, Clone, Default)]
32067#[repr(C)]
32068pub struct PresentTimeGoogle {
32069    raw: vks::VkPresentTimeGOOGLE,
32070}
32071
32072impl PresentTimeGoogle {
32073    pub fn builder() -> PresentTimeGoogleBuilder {
32074        PresentTimeGoogleBuilder::new()
32075    }
32076
32077    pub unsafe fn from_raw(raw: vks::VkPresentTimeGOOGLE) -> PresentTimeGoogle {
32078        PresentTimeGoogle { raw, }
32079    }
32080
32081    pub fn present_id<'a>(&'a self) -> u32 {
32082        self.raw.presentID.into()
32083    }
32084
32085    pub fn desired_present_time<'a>(&'a self) -> u64 {
32086        self.raw.desiredPresentTime.into()
32087    }
32088
32089    pub fn set_present_id<'m>(&mut self, present_id: u32) {
32090        self.raw.presentID = present_id.into();
32091    }
32092
32093    pub fn set_desired_present_time<'m>(&mut self, desired_present_time: u64) {
32094        self.raw.desiredPresentTime = desired_present_time.into();
32095    }
32096
32097    pub fn as_raw(&self) -> &vks::VkPresentTimeGOOGLE {
32098        &self.raw
32099    }
32100}
32101
32102impl From<PresentTimeGoogle> for vks::VkPresentTimeGOOGLE {
32103    fn from(f: PresentTimeGoogle) -> vks::VkPresentTimeGOOGLE {
32104        f.raw
32105    }
32106}
32107
32108
32109/// A builder for `VkPresentTimeGOOGLE`.
32110///
32111/// 
32112#[derive(Debug, Clone, Default)]
32113pub struct PresentTimeGoogleBuilder {
32114    raw: vks::VkPresentTimeGOOGLE,
32115}
32116
32117impl PresentTimeGoogleBuilder {
32118    pub fn new() -> PresentTimeGoogleBuilder {
32119        PresentTimeGoogleBuilder {
32120            raw: vks::VkPresentTimeGOOGLE::default(),
32121        }
32122    }
32123
32124    pub fn present_id<'m>(mut self, present_id: u32) -> PresentTimeGoogleBuilder {
32125        self.raw.presentID = present_id.into();
32126        self
32127    }
32128
32129    pub fn desired_present_time<'m>(mut self, desired_present_time: u64) -> PresentTimeGoogleBuilder {
32130        self.raw.desiredPresentTime = desired_present_time.into();
32131        self
32132    }
32133
32134    pub fn get_present_id<'a>(&'a self) -> u32 {
32135        self.raw.presentID.into()
32136    }
32137
32138    pub fn get_desired_present_time<'a>(&'a self) -> u64 {
32139        self.raw.desiredPresentTime.into()
32140    }
32141
32142    pub fn build(self) -> PresentTimeGoogle {
32143        PresentTimeGoogle {
32144            raw: self.raw,
32145        }
32146    }
32147}
32148
32149
32150/// A `VkIOSSurfaceCreateInfoMVK`.
32151///
32152/// 
32153#[derive(Debug, Clone, Default)]
32154#[repr(C)]
32155pub struct IosSurfaceCreateInfoMvk<'s> {
32156    raw: vks::VkIOSSurfaceCreateInfoMVK,
32157    _p: PhantomData<&'s ()>,
32158}
32159
32160impl<'s> IosSurfaceCreateInfoMvk<'s> {
32161    pub fn builder<'b>() -> IosSurfaceCreateInfoMvkBuilder<'b> {
32162        IosSurfaceCreateInfoMvkBuilder::new()
32163    }
32164
32165    pub unsafe fn from_raw(raw: vks::VkIOSSurfaceCreateInfoMVK) -> IosSurfaceCreateInfoMvk<'s> {
32166        IosSurfaceCreateInfoMvk { raw, _p: PhantomData }
32167    }
32168
32169    pub fn next<'a>(&'a self) -> *const c_void {
32170        self.raw.pNext
32171    }
32172
32173    pub fn flags<'a>(&'a self) -> IosSurfaceCreateFlagsMvk {
32174        IosSurfaceCreateFlagsMvk::from_bits(self.raw.flags)
32175            .expect("IosSurfaceCreateInfoMvk::flags: error converting flags")
32176    }
32177
32178    pub fn view<'a>(&'a self) -> *const c_void {
32179        self.raw.pView
32180    }
32181
32182    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
32183        self.raw.pNext = next;
32184    }
32185
32186    pub fn set_flags<'m>(&mut self, flags: IosSurfaceCreateFlagsMvk) {
32187        self.raw.flags = flags.bits();
32188    }
32189
32190    pub unsafe fn set_view<'m>(&mut self, view: *const c_void) {
32191        self.raw.pView = view;
32192    }
32193
32194    pub fn as_raw(&self) -> &vks::VkIOSSurfaceCreateInfoMVK {
32195        &self.raw
32196    }
32197}
32198
32199impl<'s> From<IosSurfaceCreateInfoMvk<'s>> for vks::VkIOSSurfaceCreateInfoMVK {
32200    fn from(f: IosSurfaceCreateInfoMvk<'s>) -> vks::VkIOSSurfaceCreateInfoMVK {
32201        f.raw
32202    }
32203}
32204
32205
32206/// A builder for `VkIOSSurfaceCreateInfoMVK`.
32207///
32208/// 
32209#[derive(Debug, Clone, Default)]
32210pub struct IosSurfaceCreateInfoMvkBuilder<'b> {
32211    raw: vks::VkIOSSurfaceCreateInfoMVK,
32212    _p: PhantomData<&'b ()>, 
32213}
32214
32215impl<'b> IosSurfaceCreateInfoMvkBuilder<'b> {
32216    pub fn new() -> IosSurfaceCreateInfoMvkBuilder<'b> {
32217        IosSurfaceCreateInfoMvkBuilder {
32218            raw: vks::VkIOSSurfaceCreateInfoMVK::default(),
32219            _p: PhantomData,
32220        }
32221    }
32222
32223    pub unsafe fn next<'m>(mut self, next: *const c_void) -> IosSurfaceCreateInfoMvkBuilder<'b> {
32224        self.raw.pNext = next;
32225        self
32226    }
32227
32228    pub fn flags<'m>(mut self, flags: IosSurfaceCreateFlagsMvk) -> IosSurfaceCreateInfoMvkBuilder<'b> {
32229        self.raw.flags = flags.bits();
32230        self
32231    }
32232
32233    pub unsafe fn view<'m>(mut self, view: *const c_void) -> IosSurfaceCreateInfoMvkBuilder<'b> {
32234        self.raw.pView = view;
32235        self
32236    }
32237
32238    pub fn get_next<'a>(&'a self) -> *const c_void {
32239        self.raw.pNext
32240    }
32241
32242    pub fn get_flags<'a>(&'a self) -> IosSurfaceCreateFlagsMvk {
32243        IosSurfaceCreateFlagsMvk::from_bits(self.raw.flags)
32244            .expect("IosSurfaceCreateInfoMvk::flags: error converting flags")
32245    }
32246
32247    pub fn get_view<'a>(&'a self) -> *const c_void {
32248        self.raw.pView
32249    }
32250
32251    pub fn build(self) -> IosSurfaceCreateInfoMvk<'b> {
32252        IosSurfaceCreateInfoMvk {
32253            raw: self.raw,
32254            _p: PhantomData,
32255        }
32256    }
32257}
32258
32259
32260/// A `VkMacOSSurfaceCreateInfoMVK`.
32261///
32262/// 
32263#[derive(Debug, Clone, Default)]
32264#[repr(C)]
32265pub struct MacOsSurfaceCreateInfoMvk<'s> {
32266    raw: vks::VkMacOSSurfaceCreateInfoMVK,
32267    _p: PhantomData<&'s ()>,
32268}
32269
32270impl<'s> MacOsSurfaceCreateInfoMvk<'s> {
32271    pub fn builder<'b>() -> MacOsSurfaceCreateInfoMvkBuilder<'b> {
32272        MacOsSurfaceCreateInfoMvkBuilder::new()
32273    }
32274
32275    pub unsafe fn from_raw(raw: vks::VkMacOSSurfaceCreateInfoMVK) -> MacOsSurfaceCreateInfoMvk<'s> {
32276        MacOsSurfaceCreateInfoMvk { raw, _p: PhantomData }
32277    }
32278
32279    pub fn next<'a>(&'a self) -> *const c_void {
32280        self.raw.pNext
32281    }
32282
32283    pub fn flags<'a>(&'a self) -> MacOsSurfaceCreateFlagsMvk {
32284        MacOsSurfaceCreateFlagsMvk::from_bits(self.raw.flags)
32285            .expect("MacOsSurfaceCreateInfoMvk::flags: error converting flags")
32286    }
32287
32288    pub fn view<'a>(&'a self) -> *const c_void {
32289        self.raw.pView
32290    }
32291
32292    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
32293        self.raw.pNext = next;
32294    }
32295
32296    pub fn set_flags<'m>(&mut self, flags: MacOsSurfaceCreateFlagsMvk) {
32297        self.raw.flags = flags.bits();
32298    }
32299
32300    pub unsafe fn set_view<'m>(&mut self, view: *const c_void) {
32301        self.raw.pView = view;
32302    }
32303
32304    pub fn as_raw(&self) -> &vks::VkMacOSSurfaceCreateInfoMVK {
32305        &self.raw
32306    }
32307}
32308
32309impl<'s> From<MacOsSurfaceCreateInfoMvk<'s>> for vks::VkMacOSSurfaceCreateInfoMVK {
32310    fn from(f: MacOsSurfaceCreateInfoMvk<'s>) -> vks::VkMacOSSurfaceCreateInfoMVK {
32311        f.raw
32312    }
32313}
32314
32315
32316/// A builder for `VkMacOSSurfaceCreateInfoMVK`.
32317///
32318/// 
32319#[derive(Debug, Clone, Default)]
32320pub struct MacOsSurfaceCreateInfoMvkBuilder<'b> {
32321    raw: vks::VkMacOSSurfaceCreateInfoMVK,
32322    _p: PhantomData<&'b ()>, 
32323}
32324
32325impl<'b> MacOsSurfaceCreateInfoMvkBuilder<'b> {
32326    pub fn new() -> MacOsSurfaceCreateInfoMvkBuilder<'b> {
32327        MacOsSurfaceCreateInfoMvkBuilder {
32328            raw: vks::VkMacOSSurfaceCreateInfoMVK::default(),
32329            _p: PhantomData,
32330        }
32331    }
32332
32333    pub unsafe fn next<'m>(mut self, next: *const c_void) -> MacOsSurfaceCreateInfoMvkBuilder<'b> {
32334        self.raw.pNext = next;
32335        self
32336    }
32337
32338    pub fn flags<'m>(mut self, flags: MacOsSurfaceCreateFlagsMvk) -> MacOsSurfaceCreateInfoMvkBuilder<'b> {
32339        self.raw.flags = flags.bits();
32340        self
32341    }
32342
32343    pub unsafe fn view<'m>(mut self, view: *const c_void) -> MacOsSurfaceCreateInfoMvkBuilder<'b> {
32344        self.raw.pView = view;
32345        self
32346    }
32347
32348    pub fn get_next<'a>(&'a self) -> *const c_void {
32349        self.raw.pNext
32350    }
32351
32352    pub fn get_flags<'a>(&'a self) -> MacOsSurfaceCreateFlagsMvk {
32353        MacOsSurfaceCreateFlagsMvk::from_bits(self.raw.flags)
32354            .expect("MacOsSurfaceCreateInfoMvk::flags: error converting flags")
32355    }
32356
32357    pub fn get_view<'a>(&'a self) -> *const c_void {
32358        self.raw.pView
32359    }
32360
32361    pub fn build(self) -> MacOsSurfaceCreateInfoMvk<'b> {
32362        MacOsSurfaceCreateInfoMvk {
32363            raw: self.raw,
32364            _p: PhantomData,
32365        }
32366    }
32367}
32368
32369
32370/// A `VkViewportWScalingNV`.
32371///
32372/// 
32373#[derive(Debug, Clone, Default)]
32374#[repr(C)]
32375pub struct ViewportWScalingNv {
32376    raw: vks::VkViewportWScalingNV,
32377}
32378
32379impl ViewportWScalingNv {
32380    pub fn builder() -> ViewportWScalingNvBuilder {
32381        ViewportWScalingNvBuilder::new()
32382    }
32383
32384    pub unsafe fn from_raw(raw: vks::VkViewportWScalingNV) -> ViewportWScalingNv {
32385        ViewportWScalingNv { raw, }
32386    }
32387
32388    pub fn xcoeff<'a>(&'a self) -> f32 {
32389        self.raw.xcoeff.into()
32390    }
32391
32392    pub fn ycoeff<'a>(&'a self) -> f32 {
32393        self.raw.ycoeff.into()
32394    }
32395
32396    pub fn set_xcoeff<'m>(&mut self, xcoeff: f32) {
32397        self.raw.xcoeff = xcoeff.into();
32398    }
32399
32400    pub fn set_ycoeff<'m>(&mut self, ycoeff: f32) {
32401        self.raw.ycoeff = ycoeff.into();
32402    }
32403
32404    pub fn as_raw(&self) -> &vks::VkViewportWScalingNV {
32405        &self.raw
32406    }
32407}
32408
32409impl From<ViewportWScalingNv> for vks::VkViewportWScalingNV {
32410    fn from(f: ViewportWScalingNv) -> vks::VkViewportWScalingNV {
32411        f.raw
32412    }
32413}
32414
32415
32416/// A builder for `VkViewportWScalingNV`.
32417///
32418/// 
32419#[derive(Debug, Clone, Default)]
32420pub struct ViewportWScalingNvBuilder {
32421    raw: vks::VkViewportWScalingNV,
32422}
32423
32424impl ViewportWScalingNvBuilder {
32425    pub fn new() -> ViewportWScalingNvBuilder {
32426        ViewportWScalingNvBuilder {
32427            raw: vks::VkViewportWScalingNV::default(),
32428        }
32429    }
32430
32431    pub fn xcoeff<'m>(mut self, xcoeff: f32) -> ViewportWScalingNvBuilder {
32432        self.raw.xcoeff = xcoeff.into();
32433        self
32434    }
32435
32436    pub fn ycoeff<'m>(mut self, ycoeff: f32) -> ViewportWScalingNvBuilder {
32437        self.raw.ycoeff = ycoeff.into();
32438        self
32439    }
32440
32441    pub fn get_xcoeff<'a>(&'a self) -> f32 {
32442        self.raw.xcoeff.into()
32443    }
32444
32445    pub fn get_ycoeff<'a>(&'a self) -> f32 {
32446        self.raw.ycoeff.into()
32447    }
32448
32449    pub fn build(self) -> ViewportWScalingNv {
32450        ViewportWScalingNv {
32451            raw: self.raw,
32452        }
32453    }
32454}
32455
32456
32457/// A `VkPipelineViewportWScalingStateCreateInfoNV`.
32458///
32459/// 
32460#[derive(Debug, Clone, Default)]
32461#[repr(C)]
32462pub struct PipelineViewportWScalingStateCreateInfoNv<'s> {
32463    raw: vks::VkPipelineViewportWScalingStateCreateInfoNV,
32464    _p: PhantomData<&'s ()>,
32465}
32466
32467impl<'s> PipelineViewportWScalingStateCreateInfoNv<'s> {
32468    pub fn builder<'b>() -> PipelineViewportWScalingStateCreateInfoNvBuilder<'b> {
32469        PipelineViewportWScalingStateCreateInfoNvBuilder::new()
32470    }
32471
32472    pub unsafe fn from_raw(raw: vks::VkPipelineViewportWScalingStateCreateInfoNV) -> PipelineViewportWScalingStateCreateInfoNv<'s> {
32473        PipelineViewportWScalingStateCreateInfoNv { raw, _p: PhantomData }
32474    }
32475
32476    pub fn next<'a>(&'a self) -> *const c_void {
32477        self.raw.pNext
32478    }
32479
32480    pub fn viewport_wscaling_enable<'a>(&'a self) -> bool {
32481        self.raw.viewportWScalingEnable != 0
32482    }
32483
32484    pub fn viewport_wscalings<'a>(&'a self) -> &'a [ViewportWScalingNv] {
32485        unsafe { slice::from_raw_parts(self.raw.pViewportWScalings as *const _, self.raw.viewportCount as usize) }
32486    }
32487
32488    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
32489        self.raw.pNext = next;
32490    }
32491
32492    pub fn set_viewport_wscaling_enable<'m>(&mut self, viewport_wscaling_enable: bool) {
32493        self.raw.viewportWScalingEnable = viewport_wscaling_enable as u32;
32494    }
32495
32496    pub fn set_viewport_wscalings<'m, 'a>(&mut self, viewport_wscalings: &'a [ViewportWScalingNv])
32497            where 'a: 's {
32498        assert!(self.raw.viewportCount == 0 || self.raw.viewportCount == viewport_wscalings.len() as _, 
32499            "count inconsistency found when specifying `PipelineViewportWScalingStateCreateInfoNv::viewport_wscalings`.");
32500        self.raw.viewportCount = viewport_wscalings.len() as _;
32501        self.raw.pViewportWScalings = viewport_wscalings.as_ptr() as *const vks::VkViewportWScalingNV;
32502    }
32503
32504    pub fn as_raw(&self) -> &vks::VkPipelineViewportWScalingStateCreateInfoNV {
32505        &self.raw
32506    }
32507}
32508
32509impl<'s> From<PipelineViewportWScalingStateCreateInfoNv<'s>> for vks::VkPipelineViewportWScalingStateCreateInfoNV {
32510    fn from(f: PipelineViewportWScalingStateCreateInfoNv<'s>) -> vks::VkPipelineViewportWScalingStateCreateInfoNV {
32511        f.raw
32512    }
32513}
32514
32515
32516/// A builder for `VkPipelineViewportWScalingStateCreateInfoNV`.
32517///
32518/// 
32519#[derive(Debug, Clone, Default)]
32520pub struct PipelineViewportWScalingStateCreateInfoNvBuilder<'b> {
32521    raw: vks::VkPipelineViewportWScalingStateCreateInfoNV,
32522    _p: PhantomData<&'b ()>, 
32523}
32524
32525impl<'b> PipelineViewportWScalingStateCreateInfoNvBuilder<'b> {
32526    pub fn new() -> PipelineViewportWScalingStateCreateInfoNvBuilder<'b> {
32527        PipelineViewportWScalingStateCreateInfoNvBuilder {
32528            raw: vks::VkPipelineViewportWScalingStateCreateInfoNV::default(),
32529            _p: PhantomData,
32530        }
32531    }
32532
32533    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PipelineViewportWScalingStateCreateInfoNvBuilder<'b> {
32534        self.raw.pNext = next;
32535        self
32536    }
32537
32538    pub fn viewport_wscaling_enable<'m>(mut self, viewport_wscaling_enable: bool) -> PipelineViewportWScalingStateCreateInfoNvBuilder<'b> {
32539        self.raw.viewportWScalingEnable = viewport_wscaling_enable as u32;
32540        self
32541    }
32542
32543    pub fn viewport_wscalings<'m, 'a>(mut self, viewport_wscalings: &'a [ViewportWScalingNv]) -> PipelineViewportWScalingStateCreateInfoNvBuilder<'b>
32544            where 'a: 'b {
32545        assert!(self.raw.viewportCount == 0 || self.raw.viewportCount == viewport_wscalings.len() as _, 
32546            "count inconsistency found when specifying `PipelineViewportWScalingStateCreateInfoNv::viewport_wscalings`.");
32547        self.raw.viewportCount = viewport_wscalings.len() as _;
32548        self.raw.pViewportWScalings = viewport_wscalings.as_ptr() as *const vks::VkViewportWScalingNV;
32549        self
32550    }
32551
32552    pub fn get_next<'a>(&'a self) -> *const c_void {
32553        self.raw.pNext
32554    }
32555
32556    pub fn get_viewport_wscaling_enable<'a>(&'a self) -> bool {
32557        self.raw.viewportWScalingEnable != 0
32558    }
32559
32560    pub fn get_viewport_wscalings<'a>(&'a self) -> &'a [ViewportWScalingNv] {
32561        unsafe { slice::from_raw_parts(self.raw.pViewportWScalings as *const _, self.raw.viewportCount as usize) }
32562    }
32563
32564    pub fn build(self) -> PipelineViewportWScalingStateCreateInfoNv<'b> {
32565        PipelineViewportWScalingStateCreateInfoNv {
32566            raw: self.raw,
32567            _p: PhantomData,
32568        }
32569    }
32570}
32571
32572
32573/// A `VkViewportSwizzleNV`.
32574///
32575/// 
32576#[derive(Debug, Clone, Default)]
32577#[repr(C)]
32578pub struct ViewportSwizzleNv {
32579    raw: vks::VkViewportSwizzleNV,
32580}
32581
32582impl ViewportSwizzleNv {
32583    pub fn builder() -> ViewportSwizzleNvBuilder {
32584        ViewportSwizzleNvBuilder::new()
32585    }
32586
32587    pub unsafe fn from_raw(raw: vks::VkViewportSwizzleNV) -> ViewportSwizzleNv {
32588        ViewportSwizzleNv { raw, }
32589    }
32590
32591    pub fn x<'a>(&'a self) -> ViewportCoordinateSwizzleNv {
32592        self.raw.x.into()
32593    }
32594
32595    pub fn y<'a>(&'a self) -> ViewportCoordinateSwizzleNv {
32596        self.raw.y.into()
32597    }
32598
32599    pub fn z<'a>(&'a self) -> ViewportCoordinateSwizzleNv {
32600        self.raw.z.into()
32601    }
32602
32603    pub fn w<'a>(&'a self) -> ViewportCoordinateSwizzleNv {
32604        self.raw.w.into()
32605    }
32606
32607    pub fn set_x<'m>(&mut self, x: ViewportCoordinateSwizzleNv) {
32608        self.raw.x = x.into();
32609    }
32610
32611    pub fn set_y<'m>(&mut self, y: ViewportCoordinateSwizzleNv) {
32612        self.raw.y = y.into();
32613    }
32614
32615    pub fn set_z<'m>(&mut self, z: ViewportCoordinateSwizzleNv) {
32616        self.raw.z = z.into();
32617    }
32618
32619    pub fn set_w<'m>(&mut self, w: ViewportCoordinateSwizzleNv) {
32620        self.raw.w = w.into();
32621    }
32622
32623    pub fn as_raw(&self) -> &vks::VkViewportSwizzleNV {
32624        &self.raw
32625    }
32626}
32627
32628impl From<ViewportSwizzleNv> for vks::VkViewportSwizzleNV {
32629    fn from(f: ViewportSwizzleNv) -> vks::VkViewportSwizzleNV {
32630        f.raw
32631    }
32632}
32633
32634
32635/// A builder for `VkViewportSwizzleNV`.
32636///
32637/// 
32638#[derive(Debug, Clone, Default)]
32639pub struct ViewportSwizzleNvBuilder {
32640    raw: vks::VkViewportSwizzleNV,
32641}
32642
32643impl ViewportSwizzleNvBuilder {
32644    pub fn new() -> ViewportSwizzleNvBuilder {
32645        ViewportSwizzleNvBuilder {
32646            raw: vks::VkViewportSwizzleNV::default(),
32647        }
32648    }
32649
32650    pub fn x<'m>(mut self, x: ViewportCoordinateSwizzleNv) -> ViewportSwizzleNvBuilder {
32651        self.raw.x = x.into();
32652        self
32653    }
32654
32655    pub fn y<'m>(mut self, y: ViewportCoordinateSwizzleNv) -> ViewportSwizzleNvBuilder {
32656        self.raw.y = y.into();
32657        self
32658    }
32659
32660    pub fn z<'m>(mut self, z: ViewportCoordinateSwizzleNv) -> ViewportSwizzleNvBuilder {
32661        self.raw.z = z.into();
32662        self
32663    }
32664
32665    pub fn w<'m>(mut self, w: ViewportCoordinateSwizzleNv) -> ViewportSwizzleNvBuilder {
32666        self.raw.w = w.into();
32667        self
32668    }
32669
32670    pub fn get_x<'a>(&'a self) -> ViewportCoordinateSwizzleNv {
32671        self.raw.x.into()
32672    }
32673
32674    pub fn get_y<'a>(&'a self) -> ViewportCoordinateSwizzleNv {
32675        self.raw.y.into()
32676    }
32677
32678    pub fn get_z<'a>(&'a self) -> ViewportCoordinateSwizzleNv {
32679        self.raw.z.into()
32680    }
32681
32682    pub fn get_w<'a>(&'a self) -> ViewportCoordinateSwizzleNv {
32683        self.raw.w.into()
32684    }
32685
32686    pub fn build(self) -> ViewportSwizzleNv {
32687        ViewportSwizzleNv {
32688            raw: self.raw,
32689        }
32690    }
32691}
32692
32693
32694/// A `VkPipelineViewportSwizzleStateCreateInfoNV`.
32695///
32696/// 
32697#[derive(Debug, Clone, Default)]
32698#[repr(C)]
32699pub struct PipelineViewportSwizzleStateCreateInfoNv<'s> {
32700    raw: vks::VkPipelineViewportSwizzleStateCreateInfoNV,
32701    _p: PhantomData<&'s ()>,
32702}
32703
32704impl<'s> PipelineViewportSwizzleStateCreateInfoNv<'s> {
32705    pub fn builder<'b>() -> PipelineViewportSwizzleStateCreateInfoNvBuilder<'b> {
32706        PipelineViewportSwizzleStateCreateInfoNvBuilder::new()
32707    }
32708
32709    pub unsafe fn from_raw(raw: vks::VkPipelineViewportSwizzleStateCreateInfoNV) -> PipelineViewportSwizzleStateCreateInfoNv<'s> {
32710        PipelineViewportSwizzleStateCreateInfoNv { raw, _p: PhantomData }
32711    }
32712
32713    pub fn next<'a>(&'a self) -> *const c_void {
32714        self.raw.pNext
32715    }
32716
32717    pub fn flags<'a>(&'a self) -> PipelineViewportSwizzleStateCreateFlagsNv {
32718        PipelineViewportSwizzleStateCreateFlagsNv::from_bits(self.raw.flags)
32719            .expect("PipelineViewportSwizzleStateCreateInfoNv::flags: error converting flags")
32720    }
32721
32722    pub fn viewport_swizzles<'a>(&'a self) -> &'a [ViewportSwizzleNv] {
32723        unsafe { slice::from_raw_parts(self.raw.pViewportSwizzles as *const _, self.raw.viewportCount as usize) }
32724    }
32725
32726    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
32727        self.raw.pNext = next;
32728    }
32729
32730    pub fn set_flags<'m>(&mut self, flags: PipelineViewportSwizzleStateCreateFlagsNv) {
32731        self.raw.flags = flags.bits();
32732    }
32733
32734    pub fn set_viewport_swizzles<'m, 'a>(&mut self, viewport_swizzles: &'a [ViewportSwizzleNv])
32735            where 'a: 's {
32736        assert!(self.raw.viewportCount == 0 || self.raw.viewportCount == viewport_swizzles.len() as _, 
32737            "count inconsistency found when specifying `PipelineViewportSwizzleStateCreateInfoNv::viewport_swizzles`.");
32738        self.raw.viewportCount = viewport_swizzles.len() as _;
32739        self.raw.pViewportSwizzles = viewport_swizzles.as_ptr() as *const vks::VkViewportSwizzleNV;
32740    }
32741
32742    pub fn as_raw(&self) -> &vks::VkPipelineViewportSwizzleStateCreateInfoNV {
32743        &self.raw
32744    }
32745}
32746
32747impl<'s> From<PipelineViewportSwizzleStateCreateInfoNv<'s>> for vks::VkPipelineViewportSwizzleStateCreateInfoNV {
32748    fn from(f: PipelineViewportSwizzleStateCreateInfoNv<'s>) -> vks::VkPipelineViewportSwizzleStateCreateInfoNV {
32749        f.raw
32750    }
32751}
32752
32753
32754/// A builder for `VkPipelineViewportSwizzleStateCreateInfoNV`.
32755///
32756/// 
32757#[derive(Debug, Clone, Default)]
32758pub struct PipelineViewportSwizzleStateCreateInfoNvBuilder<'b> {
32759    raw: vks::VkPipelineViewportSwizzleStateCreateInfoNV,
32760    _p: PhantomData<&'b ()>, 
32761}
32762
32763impl<'b> PipelineViewportSwizzleStateCreateInfoNvBuilder<'b> {
32764    pub fn new() -> PipelineViewportSwizzleStateCreateInfoNvBuilder<'b> {
32765        PipelineViewportSwizzleStateCreateInfoNvBuilder {
32766            raw: vks::VkPipelineViewportSwizzleStateCreateInfoNV::default(),
32767            _p: PhantomData,
32768        }
32769    }
32770
32771    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PipelineViewportSwizzleStateCreateInfoNvBuilder<'b> {
32772        self.raw.pNext = next;
32773        self
32774    }
32775
32776    pub fn flags<'m>(mut self, flags: PipelineViewportSwizzleStateCreateFlagsNv) -> PipelineViewportSwizzleStateCreateInfoNvBuilder<'b> {
32777        self.raw.flags = flags.bits();
32778        self
32779    }
32780
32781    pub fn viewport_swizzles<'m, 'a>(mut self, viewport_swizzles: &'a [ViewportSwizzleNv]) -> PipelineViewportSwizzleStateCreateInfoNvBuilder<'b>
32782            where 'a: 'b {
32783        assert!(self.raw.viewportCount == 0 || self.raw.viewportCount == viewport_swizzles.len() as _, 
32784            "count inconsistency found when specifying `PipelineViewportSwizzleStateCreateInfoNv::viewport_swizzles`.");
32785        self.raw.viewportCount = viewport_swizzles.len() as _;
32786        self.raw.pViewportSwizzles = viewport_swizzles.as_ptr() as *const vks::VkViewportSwizzleNV;
32787        self
32788    }
32789
32790    pub fn get_next<'a>(&'a self) -> *const c_void {
32791        self.raw.pNext
32792    }
32793
32794    pub fn get_flags<'a>(&'a self) -> PipelineViewportSwizzleStateCreateFlagsNv {
32795        PipelineViewportSwizzleStateCreateFlagsNv::from_bits(self.raw.flags)
32796            .expect("PipelineViewportSwizzleStateCreateInfoNv::flags: error converting flags")
32797    }
32798
32799    pub fn get_viewport_swizzles<'a>(&'a self) -> &'a [ViewportSwizzleNv] {
32800        unsafe { slice::from_raw_parts(self.raw.pViewportSwizzles as *const _, self.raw.viewportCount as usize) }
32801    }
32802
32803    pub fn build(self) -> PipelineViewportSwizzleStateCreateInfoNv<'b> {
32804        PipelineViewportSwizzleStateCreateInfoNv {
32805            raw: self.raw,
32806            _p: PhantomData,
32807        }
32808    }
32809}
32810
32811
32812/// A `VkPhysicalDeviceDiscardRectanglePropertiesEXT`.
32813///
32814/// 
32815#[derive(Debug, Clone, Default)]
32816#[repr(C)]
32817pub struct PhysicalDeviceDiscardRectanglePropertiesExt<'s> {
32818    raw: vks::VkPhysicalDeviceDiscardRectanglePropertiesEXT,
32819    _p: PhantomData<&'s ()>,
32820}
32821
32822impl<'s> PhysicalDeviceDiscardRectanglePropertiesExt<'s> {
32823    pub fn builder<'b>() -> PhysicalDeviceDiscardRectanglePropertiesExtBuilder<'b> {
32824        PhysicalDeviceDiscardRectanglePropertiesExtBuilder::new()
32825    }
32826
32827    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceDiscardRectanglePropertiesEXT) -> PhysicalDeviceDiscardRectanglePropertiesExt<'s> {
32828        PhysicalDeviceDiscardRectanglePropertiesExt { raw, _p: PhantomData }
32829    }
32830
32831    pub fn next<'a>(&'a self) -> *mut c_void {
32832        self.raw.pNext
32833    }
32834
32835    pub fn max_discard_rectangles<'a>(&'a self) -> u32 {
32836        self.raw.maxDiscardRectangles.into()
32837    }
32838
32839    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
32840        self.raw.pNext = next;
32841    }
32842
32843    pub fn set_max_discard_rectangles<'m>(&mut self, max_discard_rectangles: u32) {
32844        self.raw.maxDiscardRectangles = max_discard_rectangles.into();
32845    }
32846
32847    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceDiscardRectanglePropertiesEXT {
32848        &self.raw
32849    }
32850}
32851
32852impl<'s> From<PhysicalDeviceDiscardRectanglePropertiesExt<'s>> for vks::VkPhysicalDeviceDiscardRectanglePropertiesEXT {
32853    fn from(f: PhysicalDeviceDiscardRectanglePropertiesExt<'s>) -> vks::VkPhysicalDeviceDiscardRectanglePropertiesEXT {
32854        f.raw
32855    }
32856}
32857
32858
32859/// A builder for `VkPhysicalDeviceDiscardRectanglePropertiesEXT`.
32860///
32861/// 
32862#[derive(Debug, Clone, Default)]
32863pub struct PhysicalDeviceDiscardRectanglePropertiesExtBuilder<'b> {
32864    raw: vks::VkPhysicalDeviceDiscardRectanglePropertiesEXT,
32865    _p: PhantomData<&'b ()>, 
32866}
32867
32868impl<'b> PhysicalDeviceDiscardRectanglePropertiesExtBuilder<'b> {
32869    pub fn new() -> PhysicalDeviceDiscardRectanglePropertiesExtBuilder<'b> {
32870        PhysicalDeviceDiscardRectanglePropertiesExtBuilder {
32871            raw: vks::VkPhysicalDeviceDiscardRectanglePropertiesEXT::default(),
32872            _p: PhantomData,
32873        }
32874    }
32875
32876    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> PhysicalDeviceDiscardRectanglePropertiesExtBuilder<'b> {
32877        self.raw.pNext = next;
32878        self
32879    }
32880
32881    pub fn max_discard_rectangles<'m>(mut self, max_discard_rectangles: u32) -> PhysicalDeviceDiscardRectanglePropertiesExtBuilder<'b> {
32882        self.raw.maxDiscardRectangles = max_discard_rectangles.into();
32883        self
32884    }
32885
32886    pub fn get_next<'a>(&'a self) -> *mut c_void {
32887        self.raw.pNext
32888    }
32889
32890    pub fn get_max_discard_rectangles<'a>(&'a self) -> u32 {
32891        self.raw.maxDiscardRectangles.into()
32892    }
32893
32894    pub fn build(self) -> PhysicalDeviceDiscardRectanglePropertiesExt<'b> {
32895        PhysicalDeviceDiscardRectanglePropertiesExt {
32896            raw: self.raw,
32897            _p: PhantomData,
32898        }
32899    }
32900}
32901
32902
32903/// A `VkPipelineDiscardRectangleStateCreateInfoEXT`.
32904///
32905/// 
32906#[derive(Debug, Clone, Default)]
32907#[repr(C)]
32908pub struct PipelineDiscardRectangleStateCreateInfoExt<'s> {
32909    raw: vks::VkPipelineDiscardRectangleStateCreateInfoEXT,
32910    _p: PhantomData<&'s ()>,
32911}
32912
32913impl<'s> PipelineDiscardRectangleStateCreateInfoExt<'s> {
32914    pub fn builder<'b>() -> PipelineDiscardRectangleStateCreateInfoExtBuilder<'b> {
32915        PipelineDiscardRectangleStateCreateInfoExtBuilder::new()
32916    }
32917
32918    pub unsafe fn from_raw(raw: vks::VkPipelineDiscardRectangleStateCreateInfoEXT) -> PipelineDiscardRectangleStateCreateInfoExt<'s> {
32919        PipelineDiscardRectangleStateCreateInfoExt { raw, _p: PhantomData }
32920    }
32921
32922    pub fn next<'a>(&'a self) -> *const c_void {
32923        self.raw.pNext
32924    }
32925
32926    pub fn flags<'a>(&'a self) -> PipelineDiscardRectangleStateCreateFlagsExt {
32927        PipelineDiscardRectangleStateCreateFlagsExt::from_bits(self.raw.flags)
32928            .expect("PipelineDiscardRectangleStateCreateInfoExt::flags: error converting flags")
32929    }
32930
32931    pub fn discard_rectangle_mode<'a>(&'a self) -> DiscardRectangleModeExt {
32932        self.raw.discardRectangleMode.into()
32933    }
32934
32935    pub fn discard_rectangles<'a>(&'a self) -> &'a [Rect2d] {
32936        unsafe { slice::from_raw_parts(self.raw.pDiscardRectangles as *const _, self.raw.discardRectangleCount as usize) }
32937    }
32938
32939    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
32940        self.raw.pNext = next;
32941    }
32942
32943    pub fn set_flags<'m>(&mut self, flags: PipelineDiscardRectangleStateCreateFlagsExt) {
32944        self.raw.flags = flags.bits();
32945    }
32946
32947    pub fn set_discard_rectangle_mode<'m>(&mut self, discard_rectangle_mode: DiscardRectangleModeExt) {
32948        self.raw.discardRectangleMode = discard_rectangle_mode.into();
32949    }
32950
32951    pub fn set_discard_rectangles<'m, 'a>(&mut self, discard_rectangles: &'a [Rect2d])
32952            where 'a: 's {
32953        assert!(self.raw.discardRectangleCount == 0 || self.raw.discardRectangleCount == discard_rectangles.len() as _, 
32954            "count inconsistency found when specifying `PipelineDiscardRectangleStateCreateInfoExt::discard_rectangles`.");
32955        self.raw.discardRectangleCount = discard_rectangles.len() as _;
32956        self.raw.pDiscardRectangles = discard_rectangles.as_ptr() as *const vks::VkRect2D;
32957    }
32958
32959    pub fn as_raw(&self) -> &vks::VkPipelineDiscardRectangleStateCreateInfoEXT {
32960        &self.raw
32961    }
32962}
32963
32964impl<'s> From<PipelineDiscardRectangleStateCreateInfoExt<'s>> for vks::VkPipelineDiscardRectangleStateCreateInfoEXT {
32965    fn from(f: PipelineDiscardRectangleStateCreateInfoExt<'s>) -> vks::VkPipelineDiscardRectangleStateCreateInfoEXT {
32966        f.raw
32967    }
32968}
32969
32970
32971/// A builder for `VkPipelineDiscardRectangleStateCreateInfoEXT`.
32972///
32973/// 
32974#[derive(Debug, Clone, Default)]
32975pub struct PipelineDiscardRectangleStateCreateInfoExtBuilder<'b> {
32976    raw: vks::VkPipelineDiscardRectangleStateCreateInfoEXT,
32977    _p: PhantomData<&'b ()>, 
32978}
32979
32980impl<'b> PipelineDiscardRectangleStateCreateInfoExtBuilder<'b> {
32981    pub fn new() -> PipelineDiscardRectangleStateCreateInfoExtBuilder<'b> {
32982        PipelineDiscardRectangleStateCreateInfoExtBuilder {
32983            raw: vks::VkPipelineDiscardRectangleStateCreateInfoEXT::default(),
32984            _p: PhantomData,
32985        }
32986    }
32987
32988    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PipelineDiscardRectangleStateCreateInfoExtBuilder<'b> {
32989        self.raw.pNext = next;
32990        self
32991    }
32992
32993    pub fn flags<'m>(mut self, flags: PipelineDiscardRectangleStateCreateFlagsExt) -> PipelineDiscardRectangleStateCreateInfoExtBuilder<'b> {
32994        self.raw.flags = flags.bits();
32995        self
32996    }
32997
32998    pub fn discard_rectangle_mode<'m>(mut self, discard_rectangle_mode: DiscardRectangleModeExt) -> PipelineDiscardRectangleStateCreateInfoExtBuilder<'b> {
32999        self.raw.discardRectangleMode = discard_rectangle_mode.into();
33000        self
33001    }
33002
33003    pub fn discard_rectangles<'m, 'a>(mut self, discard_rectangles: &'a [Rect2d]) -> PipelineDiscardRectangleStateCreateInfoExtBuilder<'b>
33004            where 'a: 'b {
33005        assert!(self.raw.discardRectangleCount == 0 || self.raw.discardRectangleCount == discard_rectangles.len() as _, 
33006            "count inconsistency found when specifying `PipelineDiscardRectangleStateCreateInfoExt::discard_rectangles`.");
33007        self.raw.discardRectangleCount = discard_rectangles.len() as _;
33008        self.raw.pDiscardRectangles = discard_rectangles.as_ptr() as *const vks::VkRect2D;
33009        self
33010    }
33011
33012    pub fn get_next<'a>(&'a self) -> *const c_void {
33013        self.raw.pNext
33014    }
33015
33016    pub fn get_flags<'a>(&'a self) -> PipelineDiscardRectangleStateCreateFlagsExt {
33017        PipelineDiscardRectangleStateCreateFlagsExt::from_bits(self.raw.flags)
33018            .expect("PipelineDiscardRectangleStateCreateInfoExt::flags: error converting flags")
33019    }
33020
33021    pub fn get_discard_rectangle_mode<'a>(&'a self) -> DiscardRectangleModeExt {
33022        self.raw.discardRectangleMode.into()
33023    }
33024
33025    pub fn get_discard_rectangles<'a>(&'a self) -> &'a [Rect2d] {
33026        unsafe { slice::from_raw_parts(self.raw.pDiscardRectangles as *const _, self.raw.discardRectangleCount as usize) }
33027    }
33028
33029    pub fn build(self) -> PipelineDiscardRectangleStateCreateInfoExt<'b> {
33030        PipelineDiscardRectangleStateCreateInfoExt {
33031            raw: self.raw,
33032            _p: PhantomData,
33033        }
33034    }
33035}
33036
33037
33038/// A `VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX`.
33039///
33040/// 
33041#[cfg(feature = "experimental")]
33042#[derive(Debug, Clone, Default)]
33043#[repr(C)]
33044pub struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNvx<'s> {
33045    raw: vks::VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX,
33046    _p: PhantomData<&'s ()>,
33047}
33048
33049#[cfg(feature = "experimental")]
33050impl<'s> PhysicalDeviceMultiviewPerViewAttributesPropertiesNvx<'s> {
33051    pub fn builder<'b>() -> PhysicalDeviceMultiviewPerViewAttributesPropertiesNvxBuilder<'b> {
33052        PhysicalDeviceMultiviewPerViewAttributesPropertiesNvxBuilder::new()
33053    }
33054
33055    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX) -> PhysicalDeviceMultiviewPerViewAttributesPropertiesNvx<'s> {
33056        PhysicalDeviceMultiviewPerViewAttributesPropertiesNvx { raw, _p: PhantomData }
33057    }
33058
33059    pub fn next<'a>(&'a self) -> *mut c_void {
33060        self.raw.pNext
33061    }
33062
33063    pub fn per_view_position_all_components<'a>(&'a self) -> bool {
33064        self.raw.perViewPositionAllComponents != 0
33065    }
33066
33067    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
33068        self.raw.pNext = next;
33069    }
33070
33071    pub fn set_per_view_position_all_components<'m>(&mut self, per_view_position_all_components: bool) {
33072        self.raw.perViewPositionAllComponents = per_view_position_all_components as u32;
33073    }
33074
33075    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
33076        &self.raw
33077    }
33078}
33079
33080#[cfg(feature = "experimental")]
33081impl<'s> From<PhysicalDeviceMultiviewPerViewAttributesPropertiesNvx<'s>> for vks::VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
33082    fn from(f: PhysicalDeviceMultiviewPerViewAttributesPropertiesNvx<'s>) -> vks::VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
33083        f.raw
33084    }
33085}
33086
33087
33088/// A builder for `VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX`.
33089///
33090/// 
33091#[cfg(feature = "experimental")]
33092#[derive(Debug, Clone, Default)]
33093pub struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNvxBuilder<'b> {
33094    raw: vks::VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX,
33095    _p: PhantomData<&'b ()>, 
33096}
33097
33098#[cfg(feature = "experimental")]
33099impl<'b> PhysicalDeviceMultiviewPerViewAttributesPropertiesNvxBuilder<'b> {
33100    pub fn new() -> PhysicalDeviceMultiviewPerViewAttributesPropertiesNvxBuilder<'b> {
33101        PhysicalDeviceMultiviewPerViewAttributesPropertiesNvxBuilder {
33102            raw: vks::VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX::default(),
33103            _p: PhantomData,
33104        }
33105    }
33106
33107    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> PhysicalDeviceMultiviewPerViewAttributesPropertiesNvxBuilder<'b> {
33108        self.raw.pNext = next;
33109        self
33110    }
33111
33112    pub fn per_view_position_all_components<'m>(mut self, per_view_position_all_components: bool) -> PhysicalDeviceMultiviewPerViewAttributesPropertiesNvxBuilder<'b> {
33113        self.raw.perViewPositionAllComponents = per_view_position_all_components as u32;
33114        self
33115    }
33116
33117    pub fn get_next<'a>(&'a self) -> *mut c_void {
33118        self.raw.pNext
33119    }
33120
33121    pub fn get_per_view_position_all_components<'a>(&'a self) -> bool {
33122        self.raw.perViewPositionAllComponents != 0
33123    }
33124
33125    pub fn build(self) -> PhysicalDeviceMultiviewPerViewAttributesPropertiesNvx<'b> {
33126        PhysicalDeviceMultiviewPerViewAttributesPropertiesNvx {
33127            raw: self.raw,
33128            _p: PhantomData,
33129        }
33130    }
33131}
33132
33133
33134/// A `VkPhysicalDeviceSurfaceInfo2KHR`.
33135///
33136/// 
33137#[derive(Debug, Clone, Default)]
33138#[repr(C)]
33139pub struct PhysicalDeviceSurfaceInfo2Khr<'s> {
33140    raw: vks::VkPhysicalDeviceSurfaceInfo2KHR,
33141    _p: PhantomData<&'s ()>,
33142}
33143
33144impl<'s> PhysicalDeviceSurfaceInfo2Khr<'s> {
33145    pub fn builder<'b>() -> PhysicalDeviceSurfaceInfo2KhrBuilder<'b> {
33146        PhysicalDeviceSurfaceInfo2KhrBuilder::new()
33147    }
33148
33149    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceSurfaceInfo2KHR) -> PhysicalDeviceSurfaceInfo2Khr<'s> {
33150        PhysicalDeviceSurfaceInfo2Khr { raw, _p: PhantomData }
33151    }
33152
33153    pub fn next<'a>(&'a self) -> *const c_void {
33154        self.raw.pNext
33155    }
33156
33157    pub fn surface<'a>(&'a self) -> vks::VkSurfaceKHR {
33158        self.raw.surface
33159    }
33160
33161    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
33162        self.raw.pNext = next;
33163    }
33164
33165    pub fn set_surface<'m, H>(&mut self, surface: H)
33166            where H: Handle<Target=SurfaceKhrHandle> {
33167        self.raw.surface = surface.handle().0;
33168    }
33169
33170    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceSurfaceInfo2KHR {
33171        &self.raw
33172    }
33173}
33174
33175impl<'s> From<PhysicalDeviceSurfaceInfo2Khr<'s>> for vks::VkPhysicalDeviceSurfaceInfo2KHR {
33176    fn from(f: PhysicalDeviceSurfaceInfo2Khr<'s>) -> vks::VkPhysicalDeviceSurfaceInfo2KHR {
33177        f.raw
33178    }
33179}
33180
33181
33182/// A builder for `VkPhysicalDeviceSurfaceInfo2KHR`.
33183///
33184/// 
33185#[derive(Debug, Clone, Default)]
33186pub struct PhysicalDeviceSurfaceInfo2KhrBuilder<'b> {
33187    raw: vks::VkPhysicalDeviceSurfaceInfo2KHR,
33188    _p: PhantomData<&'b ()>, 
33189}
33190
33191impl<'b> PhysicalDeviceSurfaceInfo2KhrBuilder<'b> {
33192    pub fn new() -> PhysicalDeviceSurfaceInfo2KhrBuilder<'b> {
33193        PhysicalDeviceSurfaceInfo2KhrBuilder {
33194            raw: vks::VkPhysicalDeviceSurfaceInfo2KHR::default(),
33195            _p: PhantomData,
33196        }
33197    }
33198
33199    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PhysicalDeviceSurfaceInfo2KhrBuilder<'b> {
33200        self.raw.pNext = next;
33201        self
33202    }
33203
33204    pub fn surface<'m, H>(mut self, surface: H) -> PhysicalDeviceSurfaceInfo2KhrBuilder<'b>
33205            where H: Handle<Target=SurfaceKhrHandle> {
33206        self.raw.surface = surface.handle().0;
33207        self
33208    }
33209
33210    pub fn get_next<'a>(&'a self) -> *const c_void {
33211        self.raw.pNext
33212    }
33213
33214    pub fn get_surface<'a>(&'a self) -> vks::VkSurfaceKHR {
33215        self.raw.surface
33216    }
33217
33218    pub fn build(self) -> PhysicalDeviceSurfaceInfo2Khr<'b> {
33219        PhysicalDeviceSurfaceInfo2Khr {
33220            raw: self.raw,
33221            _p: PhantomData,
33222        }
33223    }
33224}
33225
33226
33227/// A `VkSurfaceCapabilities2KHR`.
33228///
33229/// 
33230#[derive(Debug, Clone, Default)]
33231#[repr(C)]
33232pub struct SurfaceCapabilities2Khr<'s> {
33233    raw: vks::VkSurfaceCapabilities2KHR,
33234    _p: PhantomData<&'s ()>,
33235}
33236
33237impl<'s> SurfaceCapabilities2Khr<'s> {
33238    pub fn builder<'b>() -> SurfaceCapabilities2KhrBuilder<'b> {
33239        SurfaceCapabilities2KhrBuilder::new()
33240    }
33241
33242    pub unsafe fn from_raw(raw: vks::VkSurfaceCapabilities2KHR) -> SurfaceCapabilities2Khr<'s> {
33243        SurfaceCapabilities2Khr { raw, _p: PhantomData }
33244    }
33245
33246    pub fn next<'a>(&'a self) -> *mut c_void {
33247        self.raw.pNext
33248    }
33249
33250    pub fn surface_capabilities<'a>(&'a self) -> &'a SurfaceCapabilitiesKhr {
33251        unsafe { &*(&self.raw.surfaceCapabilities as *const vks::VkSurfaceCapabilitiesKHR as *const SurfaceCapabilitiesKhr) }
33252    }
33253
33254    pub fn surface_capabilities_mut<'a>(&'a mut self) -> &'a mut SurfaceCapabilitiesKhr {
33255        unsafe { &mut *(&mut self.raw.surfaceCapabilities as *mut  vks::VkSurfaceCapabilitiesKHR as *mut SurfaceCapabilitiesKhr) }
33256    }
33257
33258    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
33259        self.raw.pNext = next;
33260    }
33261
33262    pub fn set_surface_capabilities<'m>(&mut self, surface_capabilities: SurfaceCapabilitiesKhr) {
33263        self.raw.surfaceCapabilities = surface_capabilities.raw;
33264    }
33265
33266    pub fn as_raw(&self) -> &vks::VkSurfaceCapabilities2KHR {
33267        &self.raw
33268    }
33269}
33270
33271impl<'s> From<SurfaceCapabilities2Khr<'s>> for vks::VkSurfaceCapabilities2KHR {
33272    fn from(f: SurfaceCapabilities2Khr<'s>) -> vks::VkSurfaceCapabilities2KHR {
33273        f.raw
33274    }
33275}
33276
33277
33278/// A builder for `VkSurfaceCapabilities2KHR`.
33279///
33280/// 
33281#[derive(Debug, Clone, Default)]
33282pub struct SurfaceCapabilities2KhrBuilder<'b> {
33283    raw: vks::VkSurfaceCapabilities2KHR,
33284    _p: PhantomData<&'b ()>, 
33285}
33286
33287impl<'b> SurfaceCapabilities2KhrBuilder<'b> {
33288    pub fn new() -> SurfaceCapabilities2KhrBuilder<'b> {
33289        SurfaceCapabilities2KhrBuilder {
33290            raw: vks::VkSurfaceCapabilities2KHR::default(),
33291            _p: PhantomData,
33292        }
33293    }
33294
33295    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> SurfaceCapabilities2KhrBuilder<'b> {
33296        self.raw.pNext = next;
33297        self
33298    }
33299
33300    pub fn surface_capabilities<'m>(mut self, surface_capabilities: SurfaceCapabilitiesKhr) -> SurfaceCapabilities2KhrBuilder<'b> {
33301        self.raw.surfaceCapabilities = surface_capabilities.raw;
33302        self
33303    }
33304
33305    pub fn get_next<'a>(&'a self) -> *mut c_void {
33306        self.raw.pNext
33307    }
33308
33309    pub fn get_surface_capabilities<'a>(&'a self) -> &'a SurfaceCapabilitiesKhr {
33310        unsafe { &*(&self.raw.surfaceCapabilities as *const vks::VkSurfaceCapabilitiesKHR as *const SurfaceCapabilitiesKhr) }
33311    }
33312
33313    pub fn get_surface_capabilities_mut<'a>(&'a mut self) -> &'a mut SurfaceCapabilitiesKhr {
33314        unsafe { &mut *(&mut self.raw.surfaceCapabilities as *mut  vks::VkSurfaceCapabilitiesKHR as *mut SurfaceCapabilitiesKhr) }
33315    }
33316
33317    pub fn build(self) -> SurfaceCapabilities2Khr<'b> {
33318        SurfaceCapabilities2Khr {
33319            raw: self.raw,
33320            _p: PhantomData,
33321        }
33322    }
33323}
33324
33325
33326/// A `VkSurfaceFormat2KHR`.
33327///
33328/// 
33329#[derive(Debug, Clone, Default)]
33330#[repr(C)]
33331pub struct SurfaceFormat2Khr<'s> {
33332    raw: vks::VkSurfaceFormat2KHR,
33333    _p: PhantomData<&'s ()>,
33334}
33335
33336impl<'s> SurfaceFormat2Khr<'s> {
33337    pub fn builder<'b>() -> SurfaceFormat2KhrBuilder<'b> {
33338        SurfaceFormat2KhrBuilder::new()
33339    }
33340
33341    pub unsafe fn from_raw(raw: vks::VkSurfaceFormat2KHR) -> SurfaceFormat2Khr<'s> {
33342        SurfaceFormat2Khr { raw, _p: PhantomData }
33343    }
33344
33345    pub fn next<'a>(&'a self) -> *mut c_void {
33346        self.raw.pNext
33347    }
33348
33349    pub fn surface_format<'a>(&'a self) -> &'a SurfaceFormatKhr {
33350        unsafe { &*(&self.raw.surfaceFormat as *const vks::VkSurfaceFormatKHR as *const SurfaceFormatKhr) }
33351    }
33352
33353    pub fn surface_format_mut<'a>(&'a mut self) -> &'a mut SurfaceFormatKhr {
33354        unsafe { &mut *(&mut self.raw.surfaceFormat as *mut  vks::VkSurfaceFormatKHR as *mut SurfaceFormatKhr) }
33355    }
33356
33357    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
33358        self.raw.pNext = next;
33359    }
33360
33361    pub fn set_surface_format<'m>(&mut self, surface_format: SurfaceFormatKhr) {
33362        self.raw.surfaceFormat = surface_format.raw;
33363    }
33364
33365    pub fn as_raw(&self) -> &vks::VkSurfaceFormat2KHR {
33366        &self.raw
33367    }
33368}
33369
33370impl<'s> From<SurfaceFormat2Khr<'s>> for vks::VkSurfaceFormat2KHR {
33371    fn from(f: SurfaceFormat2Khr<'s>) -> vks::VkSurfaceFormat2KHR {
33372        f.raw
33373    }
33374}
33375
33376
33377/// A builder for `VkSurfaceFormat2KHR`.
33378///
33379/// 
33380#[derive(Debug, Clone, Default)]
33381pub struct SurfaceFormat2KhrBuilder<'b> {
33382    raw: vks::VkSurfaceFormat2KHR,
33383    _p: PhantomData<&'b ()>, 
33384}
33385
33386impl<'b> SurfaceFormat2KhrBuilder<'b> {
33387    pub fn new() -> SurfaceFormat2KhrBuilder<'b> {
33388        SurfaceFormat2KhrBuilder {
33389            raw: vks::VkSurfaceFormat2KHR::default(),
33390            _p: PhantomData,
33391        }
33392    }
33393
33394    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> SurfaceFormat2KhrBuilder<'b> {
33395        self.raw.pNext = next;
33396        self
33397    }
33398
33399    pub fn surface_format<'m>(mut self, surface_format: SurfaceFormatKhr) -> SurfaceFormat2KhrBuilder<'b> {
33400        self.raw.surfaceFormat = surface_format.raw;
33401        self
33402    }
33403
33404    pub fn get_next<'a>(&'a self) -> *mut c_void {
33405        self.raw.pNext
33406    }
33407
33408    pub fn get_surface_format<'a>(&'a self) -> &'a SurfaceFormatKhr {
33409        unsafe { &*(&self.raw.surfaceFormat as *const vks::VkSurfaceFormatKHR as *const SurfaceFormatKhr) }
33410    }
33411
33412    pub fn get_surface_format_mut<'a>(&'a mut self) -> &'a mut SurfaceFormatKhr {
33413        unsafe { &mut *(&mut self.raw.surfaceFormat as *mut  vks::VkSurfaceFormatKHR as *mut SurfaceFormatKhr) }
33414    }
33415
33416    pub fn build(self) -> SurfaceFormat2Khr<'b> {
33417        SurfaceFormat2Khr {
33418            raw: self.raw,
33419            _p: PhantomData,
33420        }
33421    }
33422}
33423
33424
33425/// A `VkSharedPresentSurfaceCapabilitiesKHR`.
33426///
33427/// 
33428#[derive(Debug, Clone, Default)]
33429#[repr(C)]
33430pub struct SharedPresentSurfaceCapabilitiesKhr<'s> {
33431    raw: vks::VkSharedPresentSurfaceCapabilitiesKHR,
33432    _p: PhantomData<&'s ()>,
33433}
33434
33435impl<'s> SharedPresentSurfaceCapabilitiesKhr<'s> {
33436    pub fn builder<'b>() -> SharedPresentSurfaceCapabilitiesKhrBuilder<'b> {
33437        SharedPresentSurfaceCapabilitiesKhrBuilder::new()
33438    }
33439
33440    pub unsafe fn from_raw(raw: vks::VkSharedPresentSurfaceCapabilitiesKHR) -> SharedPresentSurfaceCapabilitiesKhr<'s> {
33441        SharedPresentSurfaceCapabilitiesKhr { raw, _p: PhantomData }
33442    }
33443
33444    pub fn next<'a>(&'a self) -> *mut c_void {
33445        self.raw.pNext
33446    }
33447
33448    pub fn shared_present_supported_usage_flags<'a>(&'a self) -> ImageUsageFlags {
33449        ImageUsageFlags::from_bits(self.raw.sharedPresentSupportedUsageFlags)
33450            .expect("SharedPresentSurfaceCapabilitiesKhr::shared_present_supported_usage_flags: error converting flags")
33451    }
33452
33453    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
33454        self.raw.pNext = next;
33455    }
33456
33457    pub fn set_shared_present_supported_usage_flags<'m>(&mut self, shared_present_supported_usage_flags: ImageUsageFlags) {
33458        self.raw.sharedPresentSupportedUsageFlags = shared_present_supported_usage_flags.bits();
33459    }
33460
33461    pub fn as_raw(&self) -> &vks::VkSharedPresentSurfaceCapabilitiesKHR {
33462        &self.raw
33463    }
33464}
33465
33466impl<'s> From<SharedPresentSurfaceCapabilitiesKhr<'s>> for vks::VkSharedPresentSurfaceCapabilitiesKHR {
33467    fn from(f: SharedPresentSurfaceCapabilitiesKhr<'s>) -> vks::VkSharedPresentSurfaceCapabilitiesKHR {
33468        f.raw
33469    }
33470}
33471
33472
33473/// A builder for `VkSharedPresentSurfaceCapabilitiesKHR`.
33474///
33475/// 
33476#[derive(Debug, Clone, Default)]
33477pub struct SharedPresentSurfaceCapabilitiesKhrBuilder<'b> {
33478    raw: vks::VkSharedPresentSurfaceCapabilitiesKHR,
33479    _p: PhantomData<&'b ()>, 
33480}
33481
33482impl<'b> SharedPresentSurfaceCapabilitiesKhrBuilder<'b> {
33483    pub fn new() -> SharedPresentSurfaceCapabilitiesKhrBuilder<'b> {
33484        SharedPresentSurfaceCapabilitiesKhrBuilder {
33485            raw: vks::VkSharedPresentSurfaceCapabilitiesKHR::default(),
33486            _p: PhantomData,
33487        }
33488    }
33489
33490    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> SharedPresentSurfaceCapabilitiesKhrBuilder<'b> {
33491        self.raw.pNext = next;
33492        self
33493    }
33494
33495    pub fn shared_present_supported_usage_flags<'m>(mut self, shared_present_supported_usage_flags: ImageUsageFlags) -> SharedPresentSurfaceCapabilitiesKhrBuilder<'b> {
33496        self.raw.sharedPresentSupportedUsageFlags = shared_present_supported_usage_flags.bits();
33497        self
33498    }
33499
33500    pub fn get_next<'a>(&'a self) -> *mut c_void {
33501        self.raw.pNext
33502    }
33503
33504    pub fn get_shared_present_supported_usage_flags<'a>(&'a self) -> ImageUsageFlags {
33505        ImageUsageFlags::from_bits(self.raw.sharedPresentSupportedUsageFlags)
33506            .expect("SharedPresentSurfaceCapabilitiesKhr::shared_present_supported_usage_flags: error converting flags")
33507    }
33508
33509    pub fn build(self) -> SharedPresentSurfaceCapabilitiesKhr<'b> {
33510        SharedPresentSurfaceCapabilitiesKhr {
33511            raw: self.raw,
33512            _p: PhantomData,
33513        }
33514    }
33515}
33516
33517
33518/// A `VkPhysicalDevice16BitStorageFeaturesKHR`.
33519///
33520/// 
33521#[derive(Debug, Clone, Default)]
33522#[repr(C)]
33523pub struct PhysicalDevice16BitStorageFeaturesKhr<'s> {
33524    raw: vks::VkPhysicalDevice16BitStorageFeaturesKHR,
33525    _p: PhantomData<&'s ()>,
33526}
33527
33528impl<'s> PhysicalDevice16BitStorageFeaturesKhr<'s> {
33529    pub fn builder<'b>() -> PhysicalDevice16BitStorageFeaturesKhrBuilder<'b> {
33530        PhysicalDevice16BitStorageFeaturesKhrBuilder::new()
33531    }
33532
33533    pub unsafe fn from_raw(raw: vks::VkPhysicalDevice16BitStorageFeaturesKHR) -> PhysicalDevice16BitStorageFeaturesKhr<'s> {
33534        PhysicalDevice16BitStorageFeaturesKhr { raw, _p: PhantomData }
33535    }
33536
33537    pub fn next<'a>(&'a self) -> *mut c_void {
33538        self.raw.pNext
33539    }
33540
33541    pub fn storage_buffer_16_bit_access<'a>(&'a self) -> bool {
33542        self.raw.storageBuffer16BitAccess != 0
33543    }
33544
33545    pub fn uniform_and_storage_buffer_16_bit_access<'a>(&'a self) -> bool {
33546        self.raw.uniformAndStorageBuffer16BitAccess != 0
33547    }
33548
33549    pub fn storage_push_constant_16<'a>(&'a self) -> bool {
33550        self.raw.storagePushConstant16 != 0
33551    }
33552
33553    pub fn storage_input_output_16<'a>(&'a self) -> bool {
33554        self.raw.storageInputOutput16 != 0
33555    }
33556
33557    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
33558        self.raw.pNext = next;
33559    }
33560
33561    pub fn set_storage_buffer_16_bit_access<'m>(&mut self, storage_buffer_16_bit_access: bool) {
33562        self.raw.storageBuffer16BitAccess = storage_buffer_16_bit_access as u32;
33563    }
33564
33565    pub fn set_uniform_and_storage_buffer_16_bit_access<'m>(&mut self, uniform_and_storage_buffer_16_bit_access: bool) {
33566        self.raw.uniformAndStorageBuffer16BitAccess = uniform_and_storage_buffer_16_bit_access as u32;
33567    }
33568
33569    pub fn set_storage_push_constant_16<'m>(&mut self, storage_push_constant_16: bool) {
33570        self.raw.storagePushConstant16 = storage_push_constant_16 as u32;
33571    }
33572
33573    pub fn set_storage_input_output_16<'m>(&mut self, storage_input_output_16: bool) {
33574        self.raw.storageInputOutput16 = storage_input_output_16 as u32;
33575    }
33576
33577    pub fn as_raw(&self) -> &vks::VkPhysicalDevice16BitStorageFeaturesKHR {
33578        &self.raw
33579    }
33580}
33581
33582impl<'s> From<PhysicalDevice16BitStorageFeaturesKhr<'s>> for vks::VkPhysicalDevice16BitStorageFeaturesKHR {
33583    fn from(f: PhysicalDevice16BitStorageFeaturesKhr<'s>) -> vks::VkPhysicalDevice16BitStorageFeaturesKHR {
33584        f.raw
33585    }
33586}
33587
33588
33589/// A builder for `VkPhysicalDevice16BitStorageFeaturesKHR`.
33590///
33591/// 
33592#[derive(Debug, Clone, Default)]
33593pub struct PhysicalDevice16BitStorageFeaturesKhrBuilder<'b> {
33594    raw: vks::VkPhysicalDevice16BitStorageFeaturesKHR,
33595    _p: PhantomData<&'b ()>, 
33596}
33597
33598impl<'b> PhysicalDevice16BitStorageFeaturesKhrBuilder<'b> {
33599    pub fn new() -> PhysicalDevice16BitStorageFeaturesKhrBuilder<'b> {
33600        PhysicalDevice16BitStorageFeaturesKhrBuilder {
33601            raw: vks::VkPhysicalDevice16BitStorageFeaturesKHR::default(),
33602            _p: PhantomData,
33603        }
33604    }
33605
33606    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> PhysicalDevice16BitStorageFeaturesKhrBuilder<'b> {
33607        self.raw.pNext = next;
33608        self
33609    }
33610
33611    pub fn storage_buffer_16_bit_access<'m>(mut self, storage_buffer_16_bit_access: bool) -> PhysicalDevice16BitStorageFeaturesKhrBuilder<'b> {
33612        self.raw.storageBuffer16BitAccess = storage_buffer_16_bit_access as u32;
33613        self
33614    }
33615
33616    pub fn uniform_and_storage_buffer_16_bit_access<'m>(mut self, uniform_and_storage_buffer_16_bit_access: bool) -> PhysicalDevice16BitStorageFeaturesKhrBuilder<'b> {
33617        self.raw.uniformAndStorageBuffer16BitAccess = uniform_and_storage_buffer_16_bit_access as u32;
33618        self
33619    }
33620
33621    pub fn storage_push_constant_16<'m>(mut self, storage_push_constant_16: bool) -> PhysicalDevice16BitStorageFeaturesKhrBuilder<'b> {
33622        self.raw.storagePushConstant16 = storage_push_constant_16 as u32;
33623        self
33624    }
33625
33626    pub fn storage_input_output_16<'m>(mut self, storage_input_output_16: bool) -> PhysicalDevice16BitStorageFeaturesKhrBuilder<'b> {
33627        self.raw.storageInputOutput16 = storage_input_output_16 as u32;
33628        self
33629    }
33630
33631    pub fn get_next<'a>(&'a self) -> *mut c_void {
33632        self.raw.pNext
33633    }
33634
33635    pub fn get_storage_buffer_16_bit_access<'a>(&'a self) -> bool {
33636        self.raw.storageBuffer16BitAccess != 0
33637    }
33638
33639    pub fn get_uniform_and_storage_buffer_16_bit_access<'a>(&'a self) -> bool {
33640        self.raw.uniformAndStorageBuffer16BitAccess != 0
33641    }
33642
33643    pub fn get_storage_push_constant_16<'a>(&'a self) -> bool {
33644        self.raw.storagePushConstant16 != 0
33645    }
33646
33647    pub fn get_storage_input_output_16<'a>(&'a self) -> bool {
33648        self.raw.storageInputOutput16 != 0
33649    }
33650
33651    pub fn build(self) -> PhysicalDevice16BitStorageFeaturesKhr<'b> {
33652        PhysicalDevice16BitStorageFeaturesKhr {
33653            raw: self.raw,
33654            _p: PhantomData,
33655        }
33656    }
33657}
33658
33659
33660/// A `VkBufferMemoryRequirementsInfo2KHR`.
33661///
33662/// 
33663#[derive(Debug, Clone, Default)]
33664#[repr(C)]
33665pub struct BufferMemoryRequirementsInfo2Khr<'s> {
33666    raw: vks::VkBufferMemoryRequirementsInfo2KHR,
33667    _p: PhantomData<&'s ()>,
33668}
33669
33670impl<'s> BufferMemoryRequirementsInfo2Khr<'s> {
33671    pub fn builder<'b>() -> BufferMemoryRequirementsInfo2KhrBuilder<'b> {
33672        BufferMemoryRequirementsInfo2KhrBuilder::new()
33673    }
33674
33675    pub unsafe fn from_raw(raw: vks::VkBufferMemoryRequirementsInfo2KHR) -> BufferMemoryRequirementsInfo2Khr<'s> {
33676        BufferMemoryRequirementsInfo2Khr { raw, _p: PhantomData }
33677    }
33678
33679    pub fn next<'a>(&'a self) -> *const c_void {
33680        self.raw.pNext
33681    }
33682
33683    pub fn buffer<'a>(&'a self) -> vks::VkBuffer {
33684        self.raw.buffer
33685    }
33686
33687    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
33688        self.raw.pNext = next;
33689    }
33690
33691    pub fn set_buffer<'m, H>(&mut self, buffer: H)
33692            where H: Handle<Target=BufferHandle> {
33693        self.raw.buffer = buffer.handle().0;
33694    }
33695
33696    pub fn as_raw(&self) -> &vks::VkBufferMemoryRequirementsInfo2KHR {
33697        &self.raw
33698    }
33699}
33700
33701impl<'s> From<BufferMemoryRequirementsInfo2Khr<'s>> for vks::VkBufferMemoryRequirementsInfo2KHR {
33702    fn from(f: BufferMemoryRequirementsInfo2Khr<'s>) -> vks::VkBufferMemoryRequirementsInfo2KHR {
33703        f.raw
33704    }
33705}
33706
33707
33708/// A builder for `VkBufferMemoryRequirementsInfo2KHR`.
33709///
33710/// 
33711#[derive(Debug, Clone, Default)]
33712pub struct BufferMemoryRequirementsInfo2KhrBuilder<'b> {
33713    raw: vks::VkBufferMemoryRequirementsInfo2KHR,
33714    _p: PhantomData<&'b ()>, 
33715}
33716
33717impl<'b> BufferMemoryRequirementsInfo2KhrBuilder<'b> {
33718    pub fn new() -> BufferMemoryRequirementsInfo2KhrBuilder<'b> {
33719        BufferMemoryRequirementsInfo2KhrBuilder {
33720            raw: vks::VkBufferMemoryRequirementsInfo2KHR::default(),
33721            _p: PhantomData,
33722        }
33723    }
33724
33725    pub unsafe fn next<'m>(mut self, next: *const c_void) -> BufferMemoryRequirementsInfo2KhrBuilder<'b> {
33726        self.raw.pNext = next;
33727        self
33728    }
33729
33730    pub fn buffer<'m, H>(mut self, buffer: H) -> BufferMemoryRequirementsInfo2KhrBuilder<'b>
33731            where H: Handle<Target=BufferHandle> {
33732        self.raw.buffer = buffer.handle().0;
33733        self
33734    }
33735
33736    pub fn get_next<'a>(&'a self) -> *const c_void {
33737        self.raw.pNext
33738    }
33739
33740    pub fn get_buffer<'a>(&'a self) -> vks::VkBuffer {
33741        self.raw.buffer
33742    }
33743
33744    pub fn build(self) -> BufferMemoryRequirementsInfo2Khr<'b> {
33745        BufferMemoryRequirementsInfo2Khr {
33746            raw: self.raw,
33747            _p: PhantomData,
33748        }
33749    }
33750}
33751
33752
33753/// A `VkImageMemoryRequirementsInfo2KHR`.
33754///
33755/// 
33756#[derive(Debug, Clone, Default)]
33757#[repr(C)]
33758pub struct ImageMemoryRequirementsInfo2Khr<'s> {
33759    raw: vks::VkImageMemoryRequirementsInfo2KHR,
33760    _p: PhantomData<&'s ()>,
33761}
33762
33763impl<'s> ImageMemoryRequirementsInfo2Khr<'s> {
33764    pub fn builder<'b>() -> ImageMemoryRequirementsInfo2KhrBuilder<'b> {
33765        ImageMemoryRequirementsInfo2KhrBuilder::new()
33766    }
33767
33768    pub unsafe fn from_raw(raw: vks::VkImageMemoryRequirementsInfo2KHR) -> ImageMemoryRequirementsInfo2Khr<'s> {
33769        ImageMemoryRequirementsInfo2Khr { raw, _p: PhantomData }
33770    }
33771
33772    pub fn next<'a>(&'a self) -> *const c_void {
33773        self.raw.pNext
33774    }
33775
33776    pub fn image<'a>(&'a self) -> vks::VkImage {
33777        self.raw.image
33778    }
33779
33780    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
33781        self.raw.pNext = next;
33782    }
33783
33784    pub fn set_image<'m, H>(&mut self, image: H)
33785            where H: Handle<Target=ImageHandle> {
33786        self.raw.image = image.handle().0;
33787    }
33788
33789    pub fn as_raw(&self) -> &vks::VkImageMemoryRequirementsInfo2KHR {
33790        &self.raw
33791    }
33792}
33793
33794impl<'s> From<ImageMemoryRequirementsInfo2Khr<'s>> for vks::VkImageMemoryRequirementsInfo2KHR {
33795    fn from(f: ImageMemoryRequirementsInfo2Khr<'s>) -> vks::VkImageMemoryRequirementsInfo2KHR {
33796        f.raw
33797    }
33798}
33799
33800
33801/// A builder for `VkImageMemoryRequirementsInfo2KHR`.
33802///
33803/// 
33804#[derive(Debug, Clone, Default)]
33805pub struct ImageMemoryRequirementsInfo2KhrBuilder<'b> {
33806    raw: vks::VkImageMemoryRequirementsInfo2KHR,
33807    _p: PhantomData<&'b ()>, 
33808}
33809
33810impl<'b> ImageMemoryRequirementsInfo2KhrBuilder<'b> {
33811    pub fn new() -> ImageMemoryRequirementsInfo2KhrBuilder<'b> {
33812        ImageMemoryRequirementsInfo2KhrBuilder {
33813            raw: vks::VkImageMemoryRequirementsInfo2KHR::default(),
33814            _p: PhantomData,
33815        }
33816    }
33817
33818    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ImageMemoryRequirementsInfo2KhrBuilder<'b> {
33819        self.raw.pNext = next;
33820        self
33821    }
33822
33823    pub fn image<'m, H>(mut self, image: H) -> ImageMemoryRequirementsInfo2KhrBuilder<'b>
33824            where H: Handle<Target=ImageHandle> {
33825        self.raw.image = image.handle().0;
33826        self
33827    }
33828
33829    pub fn get_next<'a>(&'a self) -> *const c_void {
33830        self.raw.pNext
33831    }
33832
33833    pub fn get_image<'a>(&'a self) -> vks::VkImage {
33834        self.raw.image
33835    }
33836
33837    pub fn build(self) -> ImageMemoryRequirementsInfo2Khr<'b> {
33838        ImageMemoryRequirementsInfo2Khr {
33839            raw: self.raw,
33840            _p: PhantomData,
33841        }
33842    }
33843}
33844
33845
33846/// A `VkImageSparseMemoryRequirementsInfo2KHR`.
33847///
33848/// 
33849#[derive(Debug, Clone, Default)]
33850#[repr(C)]
33851pub struct ImageSparseMemoryRequirementsInfo2Khr<'s> {
33852    raw: vks::VkImageSparseMemoryRequirementsInfo2KHR,
33853    _p: PhantomData<&'s ()>,
33854}
33855
33856impl<'s> ImageSparseMemoryRequirementsInfo2Khr<'s> {
33857    pub fn builder<'b>() -> ImageSparseMemoryRequirementsInfo2KhrBuilder<'b> {
33858        ImageSparseMemoryRequirementsInfo2KhrBuilder::new()
33859    }
33860
33861    pub unsafe fn from_raw(raw: vks::VkImageSparseMemoryRequirementsInfo2KHR) -> ImageSparseMemoryRequirementsInfo2Khr<'s> {
33862        ImageSparseMemoryRequirementsInfo2Khr { raw, _p: PhantomData }
33863    }
33864
33865    pub fn next<'a>(&'a self) -> *const c_void {
33866        self.raw.pNext
33867    }
33868
33869    pub fn image<'a>(&'a self) -> vks::VkImage {
33870        self.raw.image
33871    }
33872
33873    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
33874        self.raw.pNext = next;
33875    }
33876
33877    pub fn set_image<'m, H>(&mut self, image: H)
33878            where H: Handle<Target=ImageHandle> {
33879        self.raw.image = image.handle().0;
33880    }
33881
33882    pub fn as_raw(&self) -> &vks::VkImageSparseMemoryRequirementsInfo2KHR {
33883        &self.raw
33884    }
33885}
33886
33887impl<'s> From<ImageSparseMemoryRequirementsInfo2Khr<'s>> for vks::VkImageSparseMemoryRequirementsInfo2KHR {
33888    fn from(f: ImageSparseMemoryRequirementsInfo2Khr<'s>) -> vks::VkImageSparseMemoryRequirementsInfo2KHR {
33889        f.raw
33890    }
33891}
33892
33893
33894/// A builder for `VkImageSparseMemoryRequirementsInfo2KHR`.
33895///
33896/// 
33897#[derive(Debug, Clone, Default)]
33898pub struct ImageSparseMemoryRequirementsInfo2KhrBuilder<'b> {
33899    raw: vks::VkImageSparseMemoryRequirementsInfo2KHR,
33900    _p: PhantomData<&'b ()>, 
33901}
33902
33903impl<'b> ImageSparseMemoryRequirementsInfo2KhrBuilder<'b> {
33904    pub fn new() -> ImageSparseMemoryRequirementsInfo2KhrBuilder<'b> {
33905        ImageSparseMemoryRequirementsInfo2KhrBuilder {
33906            raw: vks::VkImageSparseMemoryRequirementsInfo2KHR::default(),
33907            _p: PhantomData,
33908        }
33909    }
33910
33911    pub unsafe fn next<'m>(mut self, next: *const c_void) -> ImageSparseMemoryRequirementsInfo2KhrBuilder<'b> {
33912        self.raw.pNext = next;
33913        self
33914    }
33915
33916    pub fn image<'m, H>(mut self, image: H) -> ImageSparseMemoryRequirementsInfo2KhrBuilder<'b>
33917            where H: Handle<Target=ImageHandle> {
33918        self.raw.image = image.handle().0;
33919        self
33920    }
33921
33922    pub fn get_next<'a>(&'a self) -> *const c_void {
33923        self.raw.pNext
33924    }
33925
33926    pub fn get_image<'a>(&'a self) -> vks::VkImage {
33927        self.raw.image
33928    }
33929
33930    pub fn build(self) -> ImageSparseMemoryRequirementsInfo2Khr<'b> {
33931        ImageSparseMemoryRequirementsInfo2Khr {
33932            raw: self.raw,
33933            _p: PhantomData,
33934        }
33935    }
33936}
33937
33938
33939/// A `VkMemoryRequirements2KHR`.
33940///
33941/// 
33942#[derive(Debug, Clone, Default)]
33943#[repr(C)]
33944pub struct MemoryRequirements2Khr<'s> {
33945    raw: vks::VkMemoryRequirements2KHR,
33946    _p: PhantomData<&'s ()>,
33947}
33948
33949impl<'s> MemoryRequirements2Khr<'s> {
33950    pub fn builder<'b>() -> MemoryRequirements2KhrBuilder<'b> {
33951        MemoryRequirements2KhrBuilder::new()
33952    }
33953
33954    pub unsafe fn from_raw(raw: vks::VkMemoryRequirements2KHR) -> MemoryRequirements2Khr<'s> {
33955        MemoryRequirements2Khr { raw, _p: PhantomData }
33956    }
33957
33958    pub fn next<'a>(&'a self) -> *mut c_void {
33959        self.raw.pNext
33960    }
33961
33962    pub fn memory_requirements<'a>(&'a self) -> &'a MemoryRequirements {
33963        unsafe { &*(&self.raw.memoryRequirements as *const vks::VkMemoryRequirements as *const MemoryRequirements) }
33964    }
33965
33966    pub fn memory_requirements_mut<'a>(&'a mut self) -> &'a mut MemoryRequirements {
33967        unsafe { &mut *(&mut self.raw.memoryRequirements as *mut  vks::VkMemoryRequirements as *mut MemoryRequirements) }
33968    }
33969
33970    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
33971        self.raw.pNext = next;
33972    }
33973
33974    pub fn set_memory_requirements<'m>(&mut self, memory_requirements: MemoryRequirements) {
33975        self.raw.memoryRequirements = memory_requirements.raw;
33976    }
33977
33978    pub fn as_raw(&self) -> &vks::VkMemoryRequirements2KHR {
33979        &self.raw
33980    }
33981}
33982
33983impl<'s> From<MemoryRequirements2Khr<'s>> for vks::VkMemoryRequirements2KHR {
33984    fn from(f: MemoryRequirements2Khr<'s>) -> vks::VkMemoryRequirements2KHR {
33985        f.raw
33986    }
33987}
33988
33989
33990/// A builder for `VkMemoryRequirements2KHR`.
33991///
33992/// 
33993#[derive(Debug, Clone, Default)]
33994pub struct MemoryRequirements2KhrBuilder<'b> {
33995    raw: vks::VkMemoryRequirements2KHR,
33996    _p: PhantomData<&'b ()>, 
33997}
33998
33999impl<'b> MemoryRequirements2KhrBuilder<'b> {
34000    pub fn new() -> MemoryRequirements2KhrBuilder<'b> {
34001        MemoryRequirements2KhrBuilder {
34002            raw: vks::VkMemoryRequirements2KHR::default(),
34003            _p: PhantomData,
34004        }
34005    }
34006
34007    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> MemoryRequirements2KhrBuilder<'b> {
34008        self.raw.pNext = next;
34009        self
34010    }
34011
34012    pub fn memory_requirements<'m>(mut self, memory_requirements: MemoryRequirements) -> MemoryRequirements2KhrBuilder<'b> {
34013        self.raw.memoryRequirements = memory_requirements.raw;
34014        self
34015    }
34016
34017    pub fn get_next<'a>(&'a self) -> *mut c_void {
34018        self.raw.pNext
34019    }
34020
34021    pub fn get_memory_requirements<'a>(&'a self) -> &'a MemoryRequirements {
34022        unsafe { &*(&self.raw.memoryRequirements as *const vks::VkMemoryRequirements as *const MemoryRequirements) }
34023    }
34024
34025    pub fn get_memory_requirements_mut<'a>(&'a mut self) -> &'a mut MemoryRequirements {
34026        unsafe { &mut *(&mut self.raw.memoryRequirements as *mut  vks::VkMemoryRequirements as *mut MemoryRequirements) }
34027    }
34028
34029    pub fn build(self) -> MemoryRequirements2Khr<'b> {
34030        MemoryRequirements2Khr {
34031            raw: self.raw,
34032            _p: PhantomData,
34033        }
34034    }
34035}
34036
34037
34038/// A `VkSparseImageMemoryRequirements2KHR`.
34039///
34040/// 
34041#[derive(Debug, Clone, Default)]
34042#[repr(C)]
34043pub struct SparseImageMemoryRequirements2Khr<'s> {
34044    raw: vks::VkSparseImageMemoryRequirements2KHR,
34045    _p: PhantomData<&'s ()>,
34046}
34047
34048impl<'s> SparseImageMemoryRequirements2Khr<'s> {
34049    pub fn builder<'b>() -> SparseImageMemoryRequirements2KhrBuilder<'b> {
34050        SparseImageMemoryRequirements2KhrBuilder::new()
34051    }
34052
34053    pub unsafe fn from_raw(raw: vks::VkSparseImageMemoryRequirements2KHR) -> SparseImageMemoryRequirements2Khr<'s> {
34054        SparseImageMemoryRequirements2Khr { raw, _p: PhantomData }
34055    }
34056
34057    pub fn next<'a>(&'a self) -> *mut c_void {
34058        self.raw.pNext
34059    }
34060
34061    pub fn memory_requirements<'a>(&'a self) -> &'a SparseImageMemoryRequirements {
34062        unsafe { &*(&self.raw.memoryRequirements as *const vks::VkSparseImageMemoryRequirements as *const SparseImageMemoryRequirements) }
34063    }
34064
34065    pub fn memory_requirements_mut<'a>(&'a mut self) -> &'a mut SparseImageMemoryRequirements {
34066        unsafe { &mut *(&mut self.raw.memoryRequirements as *mut  vks::VkSparseImageMemoryRequirements as *mut SparseImageMemoryRequirements) }
34067    }
34068
34069    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
34070        self.raw.pNext = next;
34071    }
34072
34073    pub fn set_memory_requirements<'m>(&mut self, memory_requirements: SparseImageMemoryRequirements) {
34074        self.raw.memoryRequirements = memory_requirements.raw;
34075    }
34076
34077    pub fn as_raw(&self) -> &vks::VkSparseImageMemoryRequirements2KHR {
34078        &self.raw
34079    }
34080}
34081
34082impl<'s> From<SparseImageMemoryRequirements2Khr<'s>> for vks::VkSparseImageMemoryRequirements2KHR {
34083    fn from(f: SparseImageMemoryRequirements2Khr<'s>) -> vks::VkSparseImageMemoryRequirements2KHR {
34084        f.raw
34085    }
34086}
34087
34088
34089/// A builder for `VkSparseImageMemoryRequirements2KHR`.
34090///
34091/// 
34092#[derive(Debug, Clone, Default)]
34093pub struct SparseImageMemoryRequirements2KhrBuilder<'b> {
34094    raw: vks::VkSparseImageMemoryRequirements2KHR,
34095    _p: PhantomData<&'b ()>, 
34096}
34097
34098impl<'b> SparseImageMemoryRequirements2KhrBuilder<'b> {
34099    pub fn new() -> SparseImageMemoryRequirements2KhrBuilder<'b> {
34100        SparseImageMemoryRequirements2KhrBuilder {
34101            raw: vks::VkSparseImageMemoryRequirements2KHR::default(),
34102            _p: PhantomData,
34103        }
34104    }
34105
34106    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> SparseImageMemoryRequirements2KhrBuilder<'b> {
34107        self.raw.pNext = next;
34108        self
34109    }
34110
34111    pub fn memory_requirements<'m>(mut self, memory_requirements: SparseImageMemoryRequirements) -> SparseImageMemoryRequirements2KhrBuilder<'b> {
34112        self.raw.memoryRequirements = memory_requirements.raw;
34113        self
34114    }
34115
34116    pub fn get_next<'a>(&'a self) -> *mut c_void {
34117        self.raw.pNext
34118    }
34119
34120    pub fn get_memory_requirements<'a>(&'a self) -> &'a SparseImageMemoryRequirements {
34121        unsafe { &*(&self.raw.memoryRequirements as *const vks::VkSparseImageMemoryRequirements as *const SparseImageMemoryRequirements) }
34122    }
34123
34124    pub fn get_memory_requirements_mut<'a>(&'a mut self) -> &'a mut SparseImageMemoryRequirements {
34125        unsafe { &mut *(&mut self.raw.memoryRequirements as *mut  vks::VkSparseImageMemoryRequirements as *mut SparseImageMemoryRequirements) }
34126    }
34127
34128    pub fn build(self) -> SparseImageMemoryRequirements2Khr<'b> {
34129        SparseImageMemoryRequirements2Khr {
34130            raw: self.raw,
34131            _p: PhantomData,
34132        }
34133    }
34134}
34135
34136
34137/// A `VkMemoryDedicatedRequirementsKHR`.
34138///
34139/// 
34140#[derive(Debug, Clone, Default)]
34141#[repr(C)]
34142pub struct MemoryDedicatedRequirementsKhr<'s> {
34143    raw: vks::VkMemoryDedicatedRequirementsKHR,
34144    _p: PhantomData<&'s ()>,
34145}
34146
34147impl<'s> MemoryDedicatedRequirementsKhr<'s> {
34148    pub fn builder<'b>() -> MemoryDedicatedRequirementsKhrBuilder<'b> {
34149        MemoryDedicatedRequirementsKhrBuilder::new()
34150    }
34151
34152    pub unsafe fn from_raw(raw: vks::VkMemoryDedicatedRequirementsKHR) -> MemoryDedicatedRequirementsKhr<'s> {
34153        MemoryDedicatedRequirementsKhr { raw, _p: PhantomData }
34154    }
34155
34156    pub fn next<'a>(&'a self) -> *mut c_void {
34157        self.raw.pNext
34158    }
34159
34160    pub fn prefers_dedicated_allocation<'a>(&'a self) -> bool {
34161        self.raw.prefersDedicatedAllocation != 0
34162    }
34163
34164    pub fn requires_dedicated_allocation<'a>(&'a self) -> bool {
34165        self.raw.requiresDedicatedAllocation != 0
34166    }
34167
34168    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
34169        self.raw.pNext = next;
34170    }
34171
34172    pub fn set_prefers_dedicated_allocation<'m>(&mut self, prefers_dedicated_allocation: bool) {
34173        self.raw.prefersDedicatedAllocation = prefers_dedicated_allocation as u32;
34174    }
34175
34176    pub fn set_requires_dedicated_allocation<'m>(&mut self, requires_dedicated_allocation: bool) {
34177        self.raw.requiresDedicatedAllocation = requires_dedicated_allocation as u32;
34178    }
34179
34180    pub fn as_raw(&self) -> &vks::VkMemoryDedicatedRequirementsKHR {
34181        &self.raw
34182    }
34183}
34184
34185impl<'s> From<MemoryDedicatedRequirementsKhr<'s>> for vks::VkMemoryDedicatedRequirementsKHR {
34186    fn from(f: MemoryDedicatedRequirementsKhr<'s>) -> vks::VkMemoryDedicatedRequirementsKHR {
34187        f.raw
34188    }
34189}
34190
34191
34192/// A builder for `VkMemoryDedicatedRequirementsKHR`.
34193///
34194/// 
34195#[derive(Debug, Clone, Default)]
34196pub struct MemoryDedicatedRequirementsKhrBuilder<'b> {
34197    raw: vks::VkMemoryDedicatedRequirementsKHR,
34198    _p: PhantomData<&'b ()>, 
34199}
34200
34201impl<'b> MemoryDedicatedRequirementsKhrBuilder<'b> {
34202    pub fn new() -> MemoryDedicatedRequirementsKhrBuilder<'b> {
34203        MemoryDedicatedRequirementsKhrBuilder {
34204            raw: vks::VkMemoryDedicatedRequirementsKHR::default(),
34205            _p: PhantomData,
34206        }
34207    }
34208
34209    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> MemoryDedicatedRequirementsKhrBuilder<'b> {
34210        self.raw.pNext = next;
34211        self
34212    }
34213
34214    pub fn prefers_dedicated_allocation<'m>(mut self, prefers_dedicated_allocation: bool) -> MemoryDedicatedRequirementsKhrBuilder<'b> {
34215        self.raw.prefersDedicatedAllocation = prefers_dedicated_allocation as u32;
34216        self
34217    }
34218
34219    pub fn requires_dedicated_allocation<'m>(mut self, requires_dedicated_allocation: bool) -> MemoryDedicatedRequirementsKhrBuilder<'b> {
34220        self.raw.requiresDedicatedAllocation = requires_dedicated_allocation as u32;
34221        self
34222    }
34223
34224    pub fn get_next<'a>(&'a self) -> *mut c_void {
34225        self.raw.pNext
34226    }
34227
34228    pub fn get_prefers_dedicated_allocation<'a>(&'a self) -> bool {
34229        self.raw.prefersDedicatedAllocation != 0
34230    }
34231
34232    pub fn get_requires_dedicated_allocation<'a>(&'a self) -> bool {
34233        self.raw.requiresDedicatedAllocation != 0
34234    }
34235
34236    pub fn build(self) -> MemoryDedicatedRequirementsKhr<'b> {
34237        MemoryDedicatedRequirementsKhr {
34238            raw: self.raw,
34239            _p: PhantomData,
34240        }
34241    }
34242}
34243
34244
34245/// A `VkMemoryDedicatedAllocateInfoKHR`.
34246///
34247/// 
34248#[derive(Debug, Clone, Default)]
34249#[repr(C)]
34250pub struct MemoryDedicatedAllocateInfoKhr<'s> {
34251    raw: vks::VkMemoryDedicatedAllocateInfoKHR,
34252    _p: PhantomData<&'s ()>,
34253}
34254
34255impl<'s> MemoryDedicatedAllocateInfoKhr<'s> {
34256    pub fn builder<'b>() -> MemoryDedicatedAllocateInfoKhrBuilder<'b> {
34257        MemoryDedicatedAllocateInfoKhrBuilder::new()
34258    }
34259
34260    pub unsafe fn from_raw(raw: vks::VkMemoryDedicatedAllocateInfoKHR) -> MemoryDedicatedAllocateInfoKhr<'s> {
34261        MemoryDedicatedAllocateInfoKhr { raw, _p: PhantomData }
34262    }
34263
34264    pub fn next<'a>(&'a self) -> *const c_void {
34265        self.raw.pNext
34266    }
34267
34268    pub fn image<'a>(&'a self) -> vks::VkImage {
34269        self.raw.image
34270    }
34271
34272    pub fn buffer<'a>(&'a self) -> vks::VkBuffer {
34273        self.raw.buffer
34274    }
34275
34276    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
34277        self.raw.pNext = next;
34278    }
34279
34280    pub fn set_image<'m, H>(&mut self, image: H)
34281            where H: Handle<Target=ImageHandle> {
34282        self.raw.image = image.handle().0;
34283    }
34284
34285    pub fn set_buffer<'m, H>(&mut self, buffer: H)
34286            where H: Handle<Target=BufferHandle> {
34287        self.raw.buffer = buffer.handle().0;
34288    }
34289
34290    pub fn as_raw(&self) -> &vks::VkMemoryDedicatedAllocateInfoKHR {
34291        &self.raw
34292    }
34293}
34294
34295impl<'s> From<MemoryDedicatedAllocateInfoKhr<'s>> for vks::VkMemoryDedicatedAllocateInfoKHR {
34296    fn from(f: MemoryDedicatedAllocateInfoKhr<'s>) -> vks::VkMemoryDedicatedAllocateInfoKHR {
34297        f.raw
34298    }
34299}
34300
34301
34302/// A builder for `VkMemoryDedicatedAllocateInfoKHR`.
34303///
34304/// 
34305#[derive(Debug, Clone, Default)]
34306pub struct MemoryDedicatedAllocateInfoKhrBuilder<'b> {
34307    raw: vks::VkMemoryDedicatedAllocateInfoKHR,
34308    _p: PhantomData<&'b ()>, 
34309}
34310
34311impl<'b> MemoryDedicatedAllocateInfoKhrBuilder<'b> {
34312    pub fn new() -> MemoryDedicatedAllocateInfoKhrBuilder<'b> {
34313        MemoryDedicatedAllocateInfoKhrBuilder {
34314            raw: vks::VkMemoryDedicatedAllocateInfoKHR::default(),
34315            _p: PhantomData,
34316        }
34317    }
34318
34319    pub unsafe fn next<'m>(mut self, next: *const c_void) -> MemoryDedicatedAllocateInfoKhrBuilder<'b> {
34320        self.raw.pNext = next;
34321        self
34322    }
34323
34324    pub fn image<'m, H>(mut self, image: H) -> MemoryDedicatedAllocateInfoKhrBuilder<'b>
34325            where H: Handle<Target=ImageHandle> {
34326        self.raw.image = image.handle().0;
34327        self
34328    }
34329
34330    pub fn buffer<'m, H>(mut self, buffer: H) -> MemoryDedicatedAllocateInfoKhrBuilder<'b>
34331            where H: Handle<Target=BufferHandle> {
34332        self.raw.buffer = buffer.handle().0;
34333        self
34334    }
34335
34336    pub fn get_next<'a>(&'a self) -> *const c_void {
34337        self.raw.pNext
34338    }
34339
34340    pub fn get_image<'a>(&'a self) -> vks::VkImage {
34341        self.raw.image
34342    }
34343
34344    pub fn get_buffer<'a>(&'a self) -> vks::VkBuffer {
34345        self.raw.buffer
34346    }
34347
34348    pub fn build(self) -> MemoryDedicatedAllocateInfoKhr<'b> {
34349        MemoryDedicatedAllocateInfoKhr {
34350            raw: self.raw,
34351            _p: PhantomData,
34352        }
34353    }
34354}
34355
34356
34357/// A `VkTextureLODGatherFormatPropertiesAMD`.
34358///
34359/// 
34360#[derive(Debug, Clone, Default)]
34361#[repr(C)]
34362pub struct TextureLODGatherFormatPropertiesAmd<'s> {
34363    raw: vks::VkTextureLODGatherFormatPropertiesAMD,
34364    _p: PhantomData<&'s ()>,
34365}
34366
34367impl<'s> TextureLODGatherFormatPropertiesAmd<'s> {
34368    pub fn builder<'b>() -> TextureLODGatherFormatPropertiesAmdBuilder<'b> {
34369        TextureLODGatherFormatPropertiesAmdBuilder::new()
34370    }
34371
34372    pub unsafe fn from_raw(raw: vks::VkTextureLODGatherFormatPropertiesAMD) -> TextureLODGatherFormatPropertiesAmd<'s> {
34373        TextureLODGatherFormatPropertiesAmd { raw, _p: PhantomData }
34374    }
34375
34376    pub fn next<'a>(&'a self) -> *mut c_void {
34377        self.raw.pNext
34378    }
34379
34380    pub fn supports_texture_gather_lodbias_amd<'a>(&'a self) -> bool {
34381        self.raw.supportsTextureGatherLODBiasAMD != 0
34382    }
34383
34384    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
34385        self.raw.pNext = next;
34386    }
34387
34388    pub fn set_supports_texture_gather_lodbias_amd<'m>(&mut self, supports_texture_gather_lodbias_amd: bool) {
34389        self.raw.supportsTextureGatherLODBiasAMD = supports_texture_gather_lodbias_amd as u32;
34390    }
34391
34392    pub fn as_raw(&self) -> &vks::VkTextureLODGatherFormatPropertiesAMD {
34393        &self.raw
34394    }
34395}
34396
34397impl<'s> From<TextureLODGatherFormatPropertiesAmd<'s>> for vks::VkTextureLODGatherFormatPropertiesAMD {
34398    fn from(f: TextureLODGatherFormatPropertiesAmd<'s>) -> vks::VkTextureLODGatherFormatPropertiesAMD {
34399        f.raw
34400    }
34401}
34402
34403
34404/// A builder for `VkTextureLODGatherFormatPropertiesAMD`.
34405///
34406/// 
34407#[derive(Debug, Clone, Default)]
34408pub struct TextureLODGatherFormatPropertiesAmdBuilder<'b> {
34409    raw: vks::VkTextureLODGatherFormatPropertiesAMD,
34410    _p: PhantomData<&'b ()>, 
34411}
34412
34413impl<'b> TextureLODGatherFormatPropertiesAmdBuilder<'b> {
34414    pub fn new() -> TextureLODGatherFormatPropertiesAmdBuilder<'b> {
34415        TextureLODGatherFormatPropertiesAmdBuilder {
34416            raw: vks::VkTextureLODGatherFormatPropertiesAMD::default(),
34417            _p: PhantomData,
34418        }
34419    }
34420
34421    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> TextureLODGatherFormatPropertiesAmdBuilder<'b> {
34422        self.raw.pNext = next;
34423        self
34424    }
34425
34426    pub fn supports_texture_gather_lodbias_amd<'m>(mut self, supports_texture_gather_lodbias_amd: bool) -> TextureLODGatherFormatPropertiesAmdBuilder<'b> {
34427        self.raw.supportsTextureGatherLODBiasAMD = supports_texture_gather_lodbias_amd as u32;
34428        self
34429    }
34430
34431    pub fn get_next<'a>(&'a self) -> *mut c_void {
34432        self.raw.pNext
34433    }
34434
34435    pub fn get_supports_texture_gather_lodbias_amd<'a>(&'a self) -> bool {
34436        self.raw.supportsTextureGatherLODBiasAMD != 0
34437    }
34438
34439    pub fn build(self) -> TextureLODGatherFormatPropertiesAmd<'b> {
34440        TextureLODGatherFormatPropertiesAmd {
34441            raw: self.raw,
34442            _p: PhantomData,
34443        }
34444    }
34445}
34446
34447
34448/// A `VkPipelineCoverageToColorStateCreateInfoNV`.
34449///
34450/// 
34451#[derive(Debug, Clone, Default)]
34452#[repr(C)]
34453pub struct PipelineCoverageToColorStateCreateInfoNv<'s> {
34454    raw: vks::VkPipelineCoverageToColorStateCreateInfoNV,
34455    _p: PhantomData<&'s ()>,
34456}
34457
34458impl<'s> PipelineCoverageToColorStateCreateInfoNv<'s> {
34459    pub fn builder<'b>() -> PipelineCoverageToColorStateCreateInfoNvBuilder<'b> {
34460        PipelineCoverageToColorStateCreateInfoNvBuilder::new()
34461    }
34462
34463    pub unsafe fn from_raw(raw: vks::VkPipelineCoverageToColorStateCreateInfoNV) -> PipelineCoverageToColorStateCreateInfoNv<'s> {
34464        PipelineCoverageToColorStateCreateInfoNv { raw, _p: PhantomData }
34465    }
34466
34467    pub fn next<'a>(&'a self) -> *const c_void {
34468        self.raw.pNext
34469    }
34470
34471    pub fn flags<'a>(&'a self) -> PipelineCoverageToColorStateCreateFlagsNv {
34472        PipelineCoverageToColorStateCreateFlagsNv::from_bits(self.raw.flags)
34473            .expect("PipelineCoverageToColorStateCreateInfoNv::flags: error converting flags")
34474    }
34475
34476    pub fn coverage_to_color_enable<'a>(&'a self) -> bool {
34477        self.raw.coverageToColorEnable != 0
34478    }
34479
34480    pub fn coverage_to_color_location<'a>(&'a self) -> u32 {
34481        self.raw.coverageToColorLocation.into()
34482    }
34483
34484    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
34485        self.raw.pNext = next;
34486    }
34487
34488    pub fn set_flags<'m>(&mut self, flags: PipelineCoverageToColorStateCreateFlagsNv) {
34489        self.raw.flags = flags.bits();
34490    }
34491
34492    pub fn set_coverage_to_color_enable<'m>(&mut self, coverage_to_color_enable: bool) {
34493        self.raw.coverageToColorEnable = coverage_to_color_enable as u32;
34494    }
34495
34496    pub fn set_coverage_to_color_location<'m>(&mut self, coverage_to_color_location: u32) {
34497        self.raw.coverageToColorLocation = coverage_to_color_location.into();
34498    }
34499
34500    pub fn as_raw(&self) -> &vks::VkPipelineCoverageToColorStateCreateInfoNV {
34501        &self.raw
34502    }
34503}
34504
34505impl<'s> From<PipelineCoverageToColorStateCreateInfoNv<'s>> for vks::VkPipelineCoverageToColorStateCreateInfoNV {
34506    fn from(f: PipelineCoverageToColorStateCreateInfoNv<'s>) -> vks::VkPipelineCoverageToColorStateCreateInfoNV {
34507        f.raw
34508    }
34509}
34510
34511
34512/// A builder for `VkPipelineCoverageToColorStateCreateInfoNV`.
34513///
34514/// 
34515#[derive(Debug, Clone, Default)]
34516pub struct PipelineCoverageToColorStateCreateInfoNvBuilder<'b> {
34517    raw: vks::VkPipelineCoverageToColorStateCreateInfoNV,
34518    _p: PhantomData<&'b ()>, 
34519}
34520
34521impl<'b> PipelineCoverageToColorStateCreateInfoNvBuilder<'b> {
34522    pub fn new() -> PipelineCoverageToColorStateCreateInfoNvBuilder<'b> {
34523        PipelineCoverageToColorStateCreateInfoNvBuilder {
34524            raw: vks::VkPipelineCoverageToColorStateCreateInfoNV::default(),
34525            _p: PhantomData,
34526        }
34527    }
34528
34529    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PipelineCoverageToColorStateCreateInfoNvBuilder<'b> {
34530        self.raw.pNext = next;
34531        self
34532    }
34533
34534    pub fn flags<'m>(mut self, flags: PipelineCoverageToColorStateCreateFlagsNv) -> PipelineCoverageToColorStateCreateInfoNvBuilder<'b> {
34535        self.raw.flags = flags.bits();
34536        self
34537    }
34538
34539    pub fn coverage_to_color_enable<'m>(mut self, coverage_to_color_enable: bool) -> PipelineCoverageToColorStateCreateInfoNvBuilder<'b> {
34540        self.raw.coverageToColorEnable = coverage_to_color_enable as u32;
34541        self
34542    }
34543
34544    pub fn coverage_to_color_location<'m>(mut self, coverage_to_color_location: u32) -> PipelineCoverageToColorStateCreateInfoNvBuilder<'b> {
34545        self.raw.coverageToColorLocation = coverage_to_color_location.into();
34546        self
34547    }
34548
34549    pub fn get_next<'a>(&'a self) -> *const c_void {
34550        self.raw.pNext
34551    }
34552
34553    pub fn get_flags<'a>(&'a self) -> PipelineCoverageToColorStateCreateFlagsNv {
34554        PipelineCoverageToColorStateCreateFlagsNv::from_bits(self.raw.flags)
34555            .expect("PipelineCoverageToColorStateCreateInfoNv::flags: error converting flags")
34556    }
34557
34558    pub fn get_coverage_to_color_enable<'a>(&'a self) -> bool {
34559        self.raw.coverageToColorEnable != 0
34560    }
34561
34562    pub fn get_coverage_to_color_location<'a>(&'a self) -> u32 {
34563        self.raw.coverageToColorLocation.into()
34564    }
34565
34566    pub fn build(self) -> PipelineCoverageToColorStateCreateInfoNv<'b> {
34567        PipelineCoverageToColorStateCreateInfoNv {
34568            raw: self.raw,
34569            _p: PhantomData,
34570        }
34571    }
34572}
34573
34574
34575/// A `VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT`.
34576///
34577/// 
34578#[derive(Debug, Clone, Default)]
34579#[repr(C)]
34580pub struct PhysicalDeviceSamplerFilterMinmaxPropertiesExt<'s> {
34581    raw: vks::VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT,
34582    _p: PhantomData<&'s ()>,
34583}
34584
34585impl<'s> PhysicalDeviceSamplerFilterMinmaxPropertiesExt<'s> {
34586    pub fn builder<'b>() -> PhysicalDeviceSamplerFilterMinmaxPropertiesExtBuilder<'b> {
34587        PhysicalDeviceSamplerFilterMinmaxPropertiesExtBuilder::new()
34588    }
34589
34590    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT) -> PhysicalDeviceSamplerFilterMinmaxPropertiesExt<'s> {
34591        PhysicalDeviceSamplerFilterMinmaxPropertiesExt { raw, _p: PhantomData }
34592    }
34593
34594    pub fn next<'a>(&'a self) -> *mut c_void {
34595        self.raw.pNext
34596    }
34597
34598    pub fn filter_minmax_single_component_formats<'a>(&'a self) -> bool {
34599        self.raw.filterMinmaxSingleComponentFormats != 0
34600    }
34601
34602    pub fn filter_minmax_image_component_mapping<'a>(&'a self) -> bool {
34603        self.raw.filterMinmaxImageComponentMapping != 0
34604    }
34605
34606    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
34607        self.raw.pNext = next;
34608    }
34609
34610    pub fn set_filter_minmax_single_component_formats<'m>(&mut self, filter_minmax_single_component_formats: bool) {
34611        self.raw.filterMinmaxSingleComponentFormats = filter_minmax_single_component_formats as u32;
34612    }
34613
34614    pub fn set_filter_minmax_image_component_mapping<'m>(&mut self, filter_minmax_image_component_mapping: bool) {
34615        self.raw.filterMinmaxImageComponentMapping = filter_minmax_image_component_mapping as u32;
34616    }
34617
34618    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {
34619        &self.raw
34620    }
34621}
34622
34623impl<'s> From<PhysicalDeviceSamplerFilterMinmaxPropertiesExt<'s>> for vks::VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {
34624    fn from(f: PhysicalDeviceSamplerFilterMinmaxPropertiesExt<'s>) -> vks::VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {
34625        f.raw
34626    }
34627}
34628
34629
34630/// A builder for `VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT`.
34631///
34632/// 
34633#[derive(Debug, Clone, Default)]
34634pub struct PhysicalDeviceSamplerFilterMinmaxPropertiesExtBuilder<'b> {
34635    raw: vks::VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT,
34636    _p: PhantomData<&'b ()>, 
34637}
34638
34639impl<'b> PhysicalDeviceSamplerFilterMinmaxPropertiesExtBuilder<'b> {
34640    pub fn new() -> PhysicalDeviceSamplerFilterMinmaxPropertiesExtBuilder<'b> {
34641        PhysicalDeviceSamplerFilterMinmaxPropertiesExtBuilder {
34642            raw: vks::VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT::default(),
34643            _p: PhantomData,
34644        }
34645    }
34646
34647    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> PhysicalDeviceSamplerFilterMinmaxPropertiesExtBuilder<'b> {
34648        self.raw.pNext = next;
34649        self
34650    }
34651
34652    pub fn filter_minmax_single_component_formats<'m>(mut self, filter_minmax_single_component_formats: bool) -> PhysicalDeviceSamplerFilterMinmaxPropertiesExtBuilder<'b> {
34653        self.raw.filterMinmaxSingleComponentFormats = filter_minmax_single_component_formats as u32;
34654        self
34655    }
34656
34657    pub fn filter_minmax_image_component_mapping<'m>(mut self, filter_minmax_image_component_mapping: bool) -> PhysicalDeviceSamplerFilterMinmaxPropertiesExtBuilder<'b> {
34658        self.raw.filterMinmaxImageComponentMapping = filter_minmax_image_component_mapping as u32;
34659        self
34660    }
34661
34662    pub fn get_next<'a>(&'a self) -> *mut c_void {
34663        self.raw.pNext
34664    }
34665
34666    pub fn get_filter_minmax_single_component_formats<'a>(&'a self) -> bool {
34667        self.raw.filterMinmaxSingleComponentFormats != 0
34668    }
34669
34670    pub fn get_filter_minmax_image_component_mapping<'a>(&'a self) -> bool {
34671        self.raw.filterMinmaxImageComponentMapping != 0
34672    }
34673
34674    pub fn build(self) -> PhysicalDeviceSamplerFilterMinmaxPropertiesExt<'b> {
34675        PhysicalDeviceSamplerFilterMinmaxPropertiesExt {
34676            raw: self.raw,
34677            _p: PhantomData,
34678        }
34679    }
34680}
34681
34682
34683/// A `VkSamplerReductionModeCreateInfoEXT`.
34684///
34685/// 
34686#[derive(Debug, Clone, Default)]
34687#[repr(C)]
34688pub struct SamplerReductionModeCreateInfoExt<'s> {
34689    raw: vks::VkSamplerReductionModeCreateInfoEXT,
34690    _p: PhantomData<&'s ()>,
34691}
34692
34693impl<'s> SamplerReductionModeCreateInfoExt<'s> {
34694    pub fn builder<'b>() -> SamplerReductionModeCreateInfoExtBuilder<'b> {
34695        SamplerReductionModeCreateInfoExtBuilder::new()
34696    }
34697
34698    pub unsafe fn from_raw(raw: vks::VkSamplerReductionModeCreateInfoEXT) -> SamplerReductionModeCreateInfoExt<'s> {
34699        SamplerReductionModeCreateInfoExt { raw, _p: PhantomData }
34700    }
34701
34702    pub fn next<'a>(&'a self) -> *const c_void {
34703        self.raw.pNext
34704    }
34705
34706    pub fn reduction_mode<'a>(&'a self) -> SamplerReductionModeExt {
34707        self.raw.reductionMode.into()
34708    }
34709
34710    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
34711        self.raw.pNext = next;
34712    }
34713
34714    pub fn set_reduction_mode<'m>(&mut self, reduction_mode: SamplerReductionModeExt) {
34715        self.raw.reductionMode = reduction_mode.into();
34716    }
34717
34718    pub fn as_raw(&self) -> &vks::VkSamplerReductionModeCreateInfoEXT {
34719        &self.raw
34720    }
34721}
34722
34723impl<'s> From<SamplerReductionModeCreateInfoExt<'s>> for vks::VkSamplerReductionModeCreateInfoEXT {
34724    fn from(f: SamplerReductionModeCreateInfoExt<'s>) -> vks::VkSamplerReductionModeCreateInfoEXT {
34725        f.raw
34726    }
34727}
34728
34729
34730/// A builder for `VkSamplerReductionModeCreateInfoEXT`.
34731///
34732/// 
34733#[derive(Debug, Clone, Default)]
34734pub struct SamplerReductionModeCreateInfoExtBuilder<'b> {
34735    raw: vks::VkSamplerReductionModeCreateInfoEXT,
34736    _p: PhantomData<&'b ()>, 
34737}
34738
34739impl<'b> SamplerReductionModeCreateInfoExtBuilder<'b> {
34740    pub fn new() -> SamplerReductionModeCreateInfoExtBuilder<'b> {
34741        SamplerReductionModeCreateInfoExtBuilder {
34742            raw: vks::VkSamplerReductionModeCreateInfoEXT::default(),
34743            _p: PhantomData,
34744        }
34745    }
34746
34747    pub unsafe fn next<'m>(mut self, next: *const c_void) -> SamplerReductionModeCreateInfoExtBuilder<'b> {
34748        self.raw.pNext = next;
34749        self
34750    }
34751
34752    pub fn reduction_mode<'m>(mut self, reduction_mode: SamplerReductionModeExt) -> SamplerReductionModeCreateInfoExtBuilder<'b> {
34753        self.raw.reductionMode = reduction_mode.into();
34754        self
34755    }
34756
34757    pub fn get_next<'a>(&'a self) -> *const c_void {
34758        self.raw.pNext
34759    }
34760
34761    pub fn get_reduction_mode<'a>(&'a self) -> SamplerReductionModeExt {
34762        self.raw.reductionMode.into()
34763    }
34764
34765    pub fn build(self) -> SamplerReductionModeCreateInfoExt<'b> {
34766        SamplerReductionModeCreateInfoExt {
34767            raw: self.raw,
34768            _p: PhantomData,
34769        }
34770    }
34771}
34772
34773
34774/// A `VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT`.
34775///
34776/// 
34777#[derive(Debug, Clone, Default)]
34778#[repr(C)]
34779pub struct PhysicalDeviceBlendOperationAdvancedFeaturesExt<'s> {
34780    raw: vks::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT,
34781    _p: PhantomData<&'s ()>,
34782}
34783
34784impl<'s> PhysicalDeviceBlendOperationAdvancedFeaturesExt<'s> {
34785    pub fn builder<'b>() -> PhysicalDeviceBlendOperationAdvancedFeaturesExtBuilder<'b> {
34786        PhysicalDeviceBlendOperationAdvancedFeaturesExtBuilder::new()
34787    }
34788
34789    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT) -> PhysicalDeviceBlendOperationAdvancedFeaturesExt<'s> {
34790        PhysicalDeviceBlendOperationAdvancedFeaturesExt { raw, _p: PhantomData }
34791    }
34792
34793    pub fn next<'a>(&'a self) -> *mut c_void {
34794        self.raw.pNext
34795    }
34796
34797    pub fn advanced_blend_coherent_operations<'a>(&'a self) -> bool {
34798        self.raw.advancedBlendCoherentOperations != 0
34799    }
34800
34801    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
34802        self.raw.pNext = next;
34803    }
34804
34805    pub fn set_advanced_blend_coherent_operations<'m>(&mut self, advanced_blend_coherent_operations: bool) {
34806        self.raw.advancedBlendCoherentOperations = advanced_blend_coherent_operations as u32;
34807    }
34808
34809    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
34810        &self.raw
34811    }
34812}
34813
34814impl<'s> From<PhysicalDeviceBlendOperationAdvancedFeaturesExt<'s>> for vks::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
34815    fn from(f: PhysicalDeviceBlendOperationAdvancedFeaturesExt<'s>) -> vks::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
34816        f.raw
34817    }
34818}
34819
34820
34821/// A builder for `VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT`.
34822///
34823/// 
34824#[derive(Debug, Clone, Default)]
34825pub struct PhysicalDeviceBlendOperationAdvancedFeaturesExtBuilder<'b> {
34826    raw: vks::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT,
34827    _p: PhantomData<&'b ()>, 
34828}
34829
34830impl<'b> PhysicalDeviceBlendOperationAdvancedFeaturesExtBuilder<'b> {
34831    pub fn new() -> PhysicalDeviceBlendOperationAdvancedFeaturesExtBuilder<'b> {
34832        PhysicalDeviceBlendOperationAdvancedFeaturesExtBuilder {
34833            raw: vks::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT::default(),
34834            _p: PhantomData,
34835        }
34836    }
34837
34838    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> PhysicalDeviceBlendOperationAdvancedFeaturesExtBuilder<'b> {
34839        self.raw.pNext = next;
34840        self
34841    }
34842
34843    pub fn advanced_blend_coherent_operations<'m>(mut self, advanced_blend_coherent_operations: bool) -> PhysicalDeviceBlendOperationAdvancedFeaturesExtBuilder<'b> {
34844        self.raw.advancedBlendCoherentOperations = advanced_blend_coherent_operations as u32;
34845        self
34846    }
34847
34848    pub fn get_next<'a>(&'a self) -> *mut c_void {
34849        self.raw.pNext
34850    }
34851
34852    pub fn get_advanced_blend_coherent_operations<'a>(&'a self) -> bool {
34853        self.raw.advancedBlendCoherentOperations != 0
34854    }
34855
34856    pub fn build(self) -> PhysicalDeviceBlendOperationAdvancedFeaturesExt<'b> {
34857        PhysicalDeviceBlendOperationAdvancedFeaturesExt {
34858            raw: self.raw,
34859            _p: PhantomData,
34860        }
34861    }
34862}
34863
34864
34865/// A `VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT`.
34866///
34867/// 
34868#[derive(Debug, Clone, Default)]
34869#[repr(C)]
34870pub struct PhysicalDeviceBlendOperationAdvancedPropertiesExt<'s> {
34871    raw: vks::VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT,
34872    _p: PhantomData<&'s ()>,
34873}
34874
34875impl<'s> PhysicalDeviceBlendOperationAdvancedPropertiesExt<'s> {
34876    pub fn builder<'b>() -> PhysicalDeviceBlendOperationAdvancedPropertiesExtBuilder<'b> {
34877        PhysicalDeviceBlendOperationAdvancedPropertiesExtBuilder::new()
34878    }
34879
34880    pub unsafe fn from_raw(raw: vks::VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT) -> PhysicalDeviceBlendOperationAdvancedPropertiesExt<'s> {
34881        PhysicalDeviceBlendOperationAdvancedPropertiesExt { raw, _p: PhantomData }
34882    }
34883
34884    pub fn next<'a>(&'a self) -> *mut c_void {
34885        self.raw.pNext
34886    }
34887
34888    pub fn advanced_blend_max_color_attachments<'a>(&'a self) -> u32 {
34889        self.raw.advancedBlendMaxColorAttachments.into()
34890    }
34891
34892    pub fn advanced_blend_independent_blend<'a>(&'a self) -> bool {
34893        self.raw.advancedBlendIndependentBlend != 0
34894    }
34895
34896    pub fn advanced_blend_non_premultiplied_src_color<'a>(&'a self) -> bool {
34897        self.raw.advancedBlendNonPremultipliedSrcColor != 0
34898    }
34899
34900    pub fn advanced_blend_non_premultiplied_dst_color<'a>(&'a self) -> bool {
34901        self.raw.advancedBlendNonPremultipliedDstColor != 0
34902    }
34903
34904    pub fn advanced_blend_correlated_overlap<'a>(&'a self) -> bool {
34905        self.raw.advancedBlendCorrelatedOverlap != 0
34906    }
34907
34908    pub fn advanced_blend_all_operations<'a>(&'a self) -> bool {
34909        self.raw.advancedBlendAllOperations != 0
34910    }
34911
34912    pub unsafe fn set_next<'m>(&mut self, next: *mut c_void) {
34913        self.raw.pNext = next;
34914    }
34915
34916    pub fn set_advanced_blend_max_color_attachments<'m>(&mut self, advanced_blend_max_color_attachments: u32) {
34917        self.raw.advancedBlendMaxColorAttachments = advanced_blend_max_color_attachments.into();
34918    }
34919
34920    pub fn set_advanced_blend_independent_blend<'m>(&mut self, advanced_blend_independent_blend: bool) {
34921        self.raw.advancedBlendIndependentBlend = advanced_blend_independent_blend as u32;
34922    }
34923
34924    pub fn set_advanced_blend_non_premultiplied_src_color<'m>(&mut self, advanced_blend_non_premultiplied_src_color: bool) {
34925        self.raw.advancedBlendNonPremultipliedSrcColor = advanced_blend_non_premultiplied_src_color as u32;
34926    }
34927
34928    pub fn set_advanced_blend_non_premultiplied_dst_color<'m>(&mut self, advanced_blend_non_premultiplied_dst_color: bool) {
34929        self.raw.advancedBlendNonPremultipliedDstColor = advanced_blend_non_premultiplied_dst_color as u32;
34930    }
34931
34932    pub fn set_advanced_blend_correlated_overlap<'m>(&mut self, advanced_blend_correlated_overlap: bool) {
34933        self.raw.advancedBlendCorrelatedOverlap = advanced_blend_correlated_overlap as u32;
34934    }
34935
34936    pub fn set_advanced_blend_all_operations<'m>(&mut self, advanced_blend_all_operations: bool) {
34937        self.raw.advancedBlendAllOperations = advanced_blend_all_operations as u32;
34938    }
34939
34940    pub fn as_raw(&self) -> &vks::VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
34941        &self.raw
34942    }
34943}
34944
34945impl<'s> From<PhysicalDeviceBlendOperationAdvancedPropertiesExt<'s>> for vks::VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
34946    fn from(f: PhysicalDeviceBlendOperationAdvancedPropertiesExt<'s>) -> vks::VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
34947        f.raw
34948    }
34949}
34950
34951
34952/// A builder for `VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT`.
34953///
34954/// 
34955#[derive(Debug, Clone, Default)]
34956pub struct PhysicalDeviceBlendOperationAdvancedPropertiesExtBuilder<'b> {
34957    raw: vks::VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT,
34958    _p: PhantomData<&'b ()>, 
34959}
34960
34961impl<'b> PhysicalDeviceBlendOperationAdvancedPropertiesExtBuilder<'b> {
34962    pub fn new() -> PhysicalDeviceBlendOperationAdvancedPropertiesExtBuilder<'b> {
34963        PhysicalDeviceBlendOperationAdvancedPropertiesExtBuilder {
34964            raw: vks::VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT::default(),
34965            _p: PhantomData,
34966        }
34967    }
34968
34969    pub unsafe fn next<'m>(mut self, next: *mut c_void) -> PhysicalDeviceBlendOperationAdvancedPropertiesExtBuilder<'b> {
34970        self.raw.pNext = next;
34971        self
34972    }
34973
34974    pub fn advanced_blend_max_color_attachments<'m>(mut self, advanced_blend_max_color_attachments: u32) -> PhysicalDeviceBlendOperationAdvancedPropertiesExtBuilder<'b> {
34975        self.raw.advancedBlendMaxColorAttachments = advanced_blend_max_color_attachments.into();
34976        self
34977    }
34978
34979    pub fn advanced_blend_independent_blend<'m>(mut self, advanced_blend_independent_blend: bool) -> PhysicalDeviceBlendOperationAdvancedPropertiesExtBuilder<'b> {
34980        self.raw.advancedBlendIndependentBlend = advanced_blend_independent_blend as u32;
34981        self
34982    }
34983
34984    pub fn advanced_blend_non_premultiplied_src_color<'m>(mut self, advanced_blend_non_premultiplied_src_color: bool) -> PhysicalDeviceBlendOperationAdvancedPropertiesExtBuilder<'b> {
34985        self.raw.advancedBlendNonPremultipliedSrcColor = advanced_blend_non_premultiplied_src_color as u32;
34986        self
34987    }
34988
34989    pub fn advanced_blend_non_premultiplied_dst_color<'m>(mut self, advanced_blend_non_premultiplied_dst_color: bool) -> PhysicalDeviceBlendOperationAdvancedPropertiesExtBuilder<'b> {
34990        self.raw.advancedBlendNonPremultipliedDstColor = advanced_blend_non_premultiplied_dst_color as u32;
34991        self
34992    }
34993
34994    pub fn advanced_blend_correlated_overlap<'m>(mut self, advanced_blend_correlated_overlap: bool) -> PhysicalDeviceBlendOperationAdvancedPropertiesExtBuilder<'b> {
34995        self.raw.advancedBlendCorrelatedOverlap = advanced_blend_correlated_overlap as u32;
34996        self
34997    }
34998
34999    pub fn advanced_blend_all_operations<'m>(mut self, advanced_blend_all_operations: bool) -> PhysicalDeviceBlendOperationAdvancedPropertiesExtBuilder<'b> {
35000        self.raw.advancedBlendAllOperations = advanced_blend_all_operations as u32;
35001        self
35002    }
35003
35004    pub fn get_next<'a>(&'a self) -> *mut c_void {
35005        self.raw.pNext
35006    }
35007
35008    pub fn get_advanced_blend_max_color_attachments<'a>(&'a self) -> u32 {
35009        self.raw.advancedBlendMaxColorAttachments.into()
35010    }
35011
35012    pub fn get_advanced_blend_independent_blend<'a>(&'a self) -> bool {
35013        self.raw.advancedBlendIndependentBlend != 0
35014    }
35015
35016    pub fn get_advanced_blend_non_premultiplied_src_color<'a>(&'a self) -> bool {
35017        self.raw.advancedBlendNonPremultipliedSrcColor != 0
35018    }
35019
35020    pub fn get_advanced_blend_non_premultiplied_dst_color<'a>(&'a self) -> bool {
35021        self.raw.advancedBlendNonPremultipliedDstColor != 0
35022    }
35023
35024    pub fn get_advanced_blend_correlated_overlap<'a>(&'a self) -> bool {
35025        self.raw.advancedBlendCorrelatedOverlap != 0
35026    }
35027
35028    pub fn get_advanced_blend_all_operations<'a>(&'a self) -> bool {
35029        self.raw.advancedBlendAllOperations != 0
35030    }
35031
35032    pub fn build(self) -> PhysicalDeviceBlendOperationAdvancedPropertiesExt<'b> {
35033        PhysicalDeviceBlendOperationAdvancedPropertiesExt {
35034            raw: self.raw,
35035            _p: PhantomData,
35036        }
35037    }
35038}
35039
35040
35041/// A `VkPipelineColorBlendAdvancedStateCreateInfoEXT`.
35042///
35043/// 
35044#[derive(Debug, Clone, Default)]
35045#[repr(C)]
35046pub struct PipelineColorBlendAdvancedStateCreateInfoExt<'s> {
35047    raw: vks::VkPipelineColorBlendAdvancedStateCreateInfoEXT,
35048    _p: PhantomData<&'s ()>,
35049}
35050
35051impl<'s> PipelineColorBlendAdvancedStateCreateInfoExt<'s> {
35052    pub fn builder<'b>() -> PipelineColorBlendAdvancedStateCreateInfoExtBuilder<'b> {
35053        PipelineColorBlendAdvancedStateCreateInfoExtBuilder::new()
35054    }
35055
35056    pub unsafe fn from_raw(raw: vks::VkPipelineColorBlendAdvancedStateCreateInfoEXT) -> PipelineColorBlendAdvancedStateCreateInfoExt<'s> {
35057        PipelineColorBlendAdvancedStateCreateInfoExt { raw, _p: PhantomData }
35058    }
35059
35060    pub fn next<'a>(&'a self) -> *const c_void {
35061        self.raw.pNext
35062    }
35063
35064    pub fn src_premultiplied<'a>(&'a self) -> bool {
35065        self.raw.srcPremultiplied != 0
35066    }
35067
35068    pub fn dst_premultiplied<'a>(&'a self) -> bool {
35069        self.raw.dstPremultiplied != 0
35070    }
35071
35072    pub fn blend_overlap<'a>(&'a self) -> BlendOverlapExt {
35073        self.raw.blendOverlap.into()
35074    }
35075
35076    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
35077        self.raw.pNext = next;
35078    }
35079
35080    pub fn set_src_premultiplied<'m>(&mut self, src_premultiplied: bool) {
35081        self.raw.srcPremultiplied = src_premultiplied as u32;
35082    }
35083
35084    pub fn set_dst_premultiplied<'m>(&mut self, dst_premultiplied: bool) {
35085        self.raw.dstPremultiplied = dst_premultiplied as u32;
35086    }
35087
35088    pub fn set_blend_overlap<'m>(&mut self, blend_overlap: BlendOverlapExt) {
35089        self.raw.blendOverlap = blend_overlap.into();
35090    }
35091
35092    pub fn as_raw(&self) -> &vks::VkPipelineColorBlendAdvancedStateCreateInfoEXT {
35093        &self.raw
35094    }
35095}
35096
35097impl<'s> From<PipelineColorBlendAdvancedStateCreateInfoExt<'s>> for vks::VkPipelineColorBlendAdvancedStateCreateInfoEXT {
35098    fn from(f: PipelineColorBlendAdvancedStateCreateInfoExt<'s>) -> vks::VkPipelineColorBlendAdvancedStateCreateInfoEXT {
35099        f.raw
35100    }
35101}
35102
35103
35104/// A builder for `VkPipelineColorBlendAdvancedStateCreateInfoEXT`.
35105///
35106/// 
35107#[derive(Debug, Clone, Default)]
35108pub struct PipelineColorBlendAdvancedStateCreateInfoExtBuilder<'b> {
35109    raw: vks::VkPipelineColorBlendAdvancedStateCreateInfoEXT,
35110    _p: PhantomData<&'b ()>, 
35111}
35112
35113impl<'b> PipelineColorBlendAdvancedStateCreateInfoExtBuilder<'b> {
35114    pub fn new() -> PipelineColorBlendAdvancedStateCreateInfoExtBuilder<'b> {
35115        PipelineColorBlendAdvancedStateCreateInfoExtBuilder {
35116            raw: vks::VkPipelineColorBlendAdvancedStateCreateInfoEXT::default(),
35117            _p: PhantomData,
35118        }
35119    }
35120
35121    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PipelineColorBlendAdvancedStateCreateInfoExtBuilder<'b> {
35122        self.raw.pNext = next;
35123        self
35124    }
35125
35126    pub fn src_premultiplied<'m>(mut self, src_premultiplied: bool) -> PipelineColorBlendAdvancedStateCreateInfoExtBuilder<'b> {
35127        self.raw.srcPremultiplied = src_premultiplied as u32;
35128        self
35129    }
35130
35131    pub fn dst_premultiplied<'m>(mut self, dst_premultiplied: bool) -> PipelineColorBlendAdvancedStateCreateInfoExtBuilder<'b> {
35132        self.raw.dstPremultiplied = dst_premultiplied as u32;
35133        self
35134    }
35135
35136    pub fn blend_overlap<'m>(mut self, blend_overlap: BlendOverlapExt) -> PipelineColorBlendAdvancedStateCreateInfoExtBuilder<'b> {
35137        self.raw.blendOverlap = blend_overlap.into();
35138        self
35139    }
35140
35141    pub fn get_next<'a>(&'a self) -> *const c_void {
35142        self.raw.pNext
35143    }
35144
35145    pub fn get_src_premultiplied<'a>(&'a self) -> bool {
35146        self.raw.srcPremultiplied != 0
35147    }
35148
35149    pub fn get_dst_premultiplied<'a>(&'a self) -> bool {
35150        self.raw.dstPremultiplied != 0
35151    }
35152
35153    pub fn get_blend_overlap<'a>(&'a self) -> BlendOverlapExt {
35154        self.raw.blendOverlap.into()
35155    }
35156
35157    pub fn build(self) -> PipelineColorBlendAdvancedStateCreateInfoExt<'b> {
35158        PipelineColorBlendAdvancedStateCreateInfoExt {
35159            raw: self.raw,
35160            _p: PhantomData,
35161        }
35162    }
35163}
35164
35165
35166/// A `VkPipelineCoverageModulationStateCreateInfoNV`.
35167///
35168/// 
35169#[derive(Debug, Clone, Default)]
35170#[repr(C)]
35171pub struct PipelineCoverageModulationStateCreateInfoNv<'s> {
35172    raw: vks::VkPipelineCoverageModulationStateCreateInfoNV,
35173    _p: PhantomData<&'s ()>,
35174}
35175
35176impl<'s> PipelineCoverageModulationStateCreateInfoNv<'s> {
35177    pub fn builder<'b>() -> PipelineCoverageModulationStateCreateInfoNvBuilder<'b> {
35178        PipelineCoverageModulationStateCreateInfoNvBuilder::new()
35179    }
35180
35181    pub unsafe fn from_raw(raw: vks::VkPipelineCoverageModulationStateCreateInfoNV) -> PipelineCoverageModulationStateCreateInfoNv<'s> {
35182        PipelineCoverageModulationStateCreateInfoNv { raw, _p: PhantomData }
35183    }
35184
35185    pub fn next<'a>(&'a self) -> *const c_void {
35186        self.raw.pNext
35187    }
35188
35189    pub fn flags<'a>(&'a self) -> PipelineCoverageModulationStateCreateFlagsNv {
35190        PipelineCoverageModulationStateCreateFlagsNv::from_bits(self.raw.flags)
35191            .expect("PipelineCoverageModulationStateCreateInfoNv::flags: error converting flags")
35192    }
35193
35194    pub fn coverage_modulation_mode<'a>(&'a self) -> CoverageModulationModeNv {
35195        self.raw.coverageModulationMode.into()
35196    }
35197
35198    pub fn coverage_modulation_table_enable<'a>(&'a self) -> bool {
35199        self.raw.coverageModulationTableEnable != 0
35200    }
35201
35202    pub fn coverage_modulation_table<'a>(&'a self) -> &'a [f32] {
35203        unsafe { slice::from_raw_parts(self.raw.pCoverageModulationTable as *const _, self.raw.coverageModulationTableCount as usize) }
35204    }
35205
35206    pub unsafe fn set_next<'m>(&mut self, next: *const c_void) {
35207        self.raw.pNext = next;
35208    }
35209
35210    pub fn set_flags<'m>(&mut self, flags: PipelineCoverageModulationStateCreateFlagsNv) {
35211        self.raw.flags = flags.bits();
35212    }
35213
35214    pub fn set_coverage_modulation_mode<'m>(&mut self, coverage_modulation_mode: CoverageModulationModeNv) {
35215        self.raw.coverageModulationMode = coverage_modulation_mode.into();
35216    }
35217
35218    pub fn set_coverage_modulation_table_enable<'m>(&mut self, coverage_modulation_table_enable: bool) {
35219        self.raw.coverageModulationTableEnable = coverage_modulation_table_enable as u32;
35220    }
35221
35222    pub fn set_coverage_modulation_table<'m, 'a>(&mut self, coverage_modulation_table: &'a [f32])
35223            where 'a: 's {
35224        assert!(self.raw.coverageModulationTableCount == 0 || self.raw.coverageModulationTableCount == coverage_modulation_table.len() as _, 
35225            "count inconsistency found when specifying `PipelineCoverageModulationStateCreateInfoNv::coverage_modulation_table`.");
35226        self.raw.coverageModulationTableCount = coverage_modulation_table.len() as _;
35227        self.raw.pCoverageModulationTable = coverage_modulation_table.as_ptr() as *const f32 as *const _;
35228    }
35229
35230    pub fn as_raw(&self) -> &vks::VkPipelineCoverageModulationStateCreateInfoNV {
35231        &self.raw
35232    }
35233}
35234
35235impl<'s> From<PipelineCoverageModulationStateCreateInfoNv<'s>> for vks::VkPipelineCoverageModulationStateCreateInfoNV {
35236    fn from(f: PipelineCoverageModulationStateCreateInfoNv<'s>) -> vks::VkPipelineCoverageModulationStateCreateInfoNV {
35237        f.raw
35238    }
35239}
35240
35241
35242/// A builder for `VkPipelineCoverageModulationStateCreateInfoNV`.
35243///
35244/// 
35245#[derive(Debug, Clone, Default)]
35246pub struct PipelineCoverageModulationStateCreateInfoNvBuilder<'b> {
35247    raw: vks::VkPipelineCoverageModulationStateCreateInfoNV,
35248    _p: PhantomData<&'b ()>, 
35249}
35250
35251impl<'b> PipelineCoverageModulationStateCreateInfoNvBuilder<'b> {
35252    pub fn new() -> PipelineCoverageModulationStateCreateInfoNvBuilder<'b> {
35253        PipelineCoverageModulationStateCreateInfoNvBuilder {
35254            raw: vks::VkPipelineCoverageModulationStateCreateInfoNV::default(),
35255            _p: PhantomData,
35256        }
35257    }
35258
35259    pub unsafe fn next<'m>(mut self, next: *const c_void) -> PipelineCoverageModulationStateCreateInfoNvBuilder<'b> {
35260        self.raw.pNext = next;
35261        self
35262    }
35263
35264    pub fn flags<'m>(mut self, flags: PipelineCoverageModulationStateCreateFlagsNv) -> PipelineCoverageModulationStateCreateInfoNvBuilder<'b> {
35265        self.raw.flags = flags.bits();
35266        self
35267    }
35268
35269    pub fn coverage_modulation_mode<'m>(mut self, coverage_modulation_mode: CoverageModulationModeNv) -> PipelineCoverageModulationStateCreateInfoNvBuilder<'b> {
35270        self.raw.coverageModulationMode = coverage_modulation_mode.into();
35271        self
35272    }
35273
35274    pub fn coverage_modulation_table_enable<'m>(mut self, coverage_modulation_table_enable: bool) -> PipelineCoverageModulationStateCreateInfoNvBuilder<'b> {
35275        self.raw.coverageModulationTableEnable = coverage_modulation_table_enable as u32;
35276        self
35277    }
35278
35279    pub fn coverage_modulation_table<'m, 'a>(mut self, coverage_modulation_table: &'a [f32]) -> PipelineCoverageModulationStateCreateInfoNvBuilder<'b>
35280            where 'a: 'b {
35281        assert!(self.raw.coverageModulationTableCount == 0 || self.raw.coverageModulationTableCount == coverage_modulation_table.len() as _, 
35282            "count inconsistency found when specifying `PipelineCoverageModulationStateCreateInfoNv::coverage_modulation_table`.");
35283        self.raw.coverageModulationTableCount = coverage_modulation_table.len() as _;
35284        self.raw.pCoverageModulationTable = coverage_modulation_table.as_ptr() as *const f32 as *const _;
35285        self
35286    }
35287
35288    pub fn get_next<'a>(&'a self) -> *const c_void {
35289        self.raw.pNext
35290    }
35291
35292    pub fn get_flags<'a>(&'a self) -> PipelineCoverageModulationStateCreateFlagsNv {
35293        PipelineCoverageModulationStateCreateFlagsNv::from_bits(self.raw.flags)
35294            .expect("PipelineCoverageModulationStateCreateInfoNv::flags: error converting flags")
35295    }
35296
35297    pub fn get_coverage_modulation_mode<'a>(&'a self) -> CoverageModulationModeNv {
35298        self.raw.coverageModulationMode.into()
35299    }
35300
35301    pub fn get_coverage_modulation_table_enable<'a>(&'a self) -> bool {
35302        self.raw.coverageModulationTableEnable != 0
35303    }
35304
35305    pub fn get_coverage_modulation_table<'a>(&'a self) -> &'a [f32] {
35306        unsafe { slice::from_raw_parts(self.raw.pCoverageModulationTable as *const _, self.raw.coverageModulationTableCount as usize) }
35307    }
35308
35309    pub fn build(self) -> PipelineCoverageModulationStateCreateInfoNv<'b> {
35310        PipelineCoverageModulationStateCreateInfoNv {
35311            raw: self.raw,
35312            _p: PhantomData,
35313        }
35314    }
35315}
35316
35317