1use 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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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