Skip to main content

vulkan_rust_sys/
builders.rs

1use super::structs::*;
2use super::enums::*;
3use super::handles::*;
4use super::bitmasks::*;
5use super::constants::*;
6///Builder for [`Offset2D`].
7pub struct Offset2DBuilder {
8    inner: Offset2D,
9}
10impl Offset2D {
11    /// Start building this struct.
12    #[inline]
13    pub fn builder() -> Offset2DBuilder {
14        Offset2DBuilder {
15            inner: Offset2D { ..Default::default() },
16        }
17    }
18}
19impl Offset2DBuilder {
20    #[inline]
21    pub fn x(mut self, value: i32) -> Self {
22        self.inner.x = value;
23        self
24    }
25    #[inline]
26    pub fn y(mut self, value: i32) -> Self {
27        self.inner.y = value;
28        self
29    }
30}
31impl core::ops::Deref for Offset2DBuilder {
32    type Target = Offset2D;
33    #[inline]
34    fn deref(&self) -> &Self::Target {
35        &self.inner
36    }
37}
38impl core::ops::DerefMut for Offset2DBuilder {
39    #[inline]
40    fn deref_mut(&mut self) -> &mut Self::Target {
41        &mut self.inner
42    }
43}
44///Builder for [`Offset3D`].
45pub struct Offset3DBuilder {
46    inner: Offset3D,
47}
48impl Offset3D {
49    /// Start building this struct.
50    #[inline]
51    pub fn builder() -> Offset3DBuilder {
52        Offset3DBuilder {
53            inner: Offset3D { ..Default::default() },
54        }
55    }
56}
57impl Offset3DBuilder {
58    #[inline]
59    pub fn x(mut self, value: i32) -> Self {
60        self.inner.x = value;
61        self
62    }
63    #[inline]
64    pub fn y(mut self, value: i32) -> Self {
65        self.inner.y = value;
66        self
67    }
68    #[inline]
69    pub fn z(mut self, value: i32) -> Self {
70        self.inner.z = value;
71        self
72    }
73}
74impl core::ops::Deref for Offset3DBuilder {
75    type Target = Offset3D;
76    #[inline]
77    fn deref(&self) -> &Self::Target {
78        &self.inner
79    }
80}
81impl core::ops::DerefMut for Offset3DBuilder {
82    #[inline]
83    fn deref_mut(&mut self) -> &mut Self::Target {
84        &mut self.inner
85    }
86}
87///Builder for [`Extent2D`].
88pub struct Extent2DBuilder {
89    inner: Extent2D,
90}
91impl Extent2D {
92    /// Start building this struct.
93    #[inline]
94    pub fn builder() -> Extent2DBuilder {
95        Extent2DBuilder {
96            inner: Extent2D { ..Default::default() },
97        }
98    }
99}
100impl Extent2DBuilder {
101    #[inline]
102    pub fn width(mut self, value: u32) -> Self {
103        self.inner.width = value;
104        self
105    }
106    #[inline]
107    pub fn height(mut self, value: u32) -> Self {
108        self.inner.height = value;
109        self
110    }
111}
112impl core::ops::Deref for Extent2DBuilder {
113    type Target = Extent2D;
114    #[inline]
115    fn deref(&self) -> &Self::Target {
116        &self.inner
117    }
118}
119impl core::ops::DerefMut for Extent2DBuilder {
120    #[inline]
121    fn deref_mut(&mut self) -> &mut Self::Target {
122        &mut self.inner
123    }
124}
125///Builder for [`Extent3D`].
126pub struct Extent3DBuilder {
127    inner: Extent3D,
128}
129impl Extent3D {
130    /// Start building this struct.
131    #[inline]
132    pub fn builder() -> Extent3DBuilder {
133        Extent3DBuilder {
134            inner: Extent3D { ..Default::default() },
135        }
136    }
137}
138impl Extent3DBuilder {
139    #[inline]
140    pub fn width(mut self, value: u32) -> Self {
141        self.inner.width = value;
142        self
143    }
144    #[inline]
145    pub fn height(mut self, value: u32) -> Self {
146        self.inner.height = value;
147        self
148    }
149    #[inline]
150    pub fn depth(mut self, value: u32) -> Self {
151        self.inner.depth = value;
152        self
153    }
154}
155impl core::ops::Deref for Extent3DBuilder {
156    type Target = Extent3D;
157    #[inline]
158    fn deref(&self) -> &Self::Target {
159        &self.inner
160    }
161}
162impl core::ops::DerefMut for Extent3DBuilder {
163    #[inline]
164    fn deref_mut(&mut self) -> &mut Self::Target {
165        &mut self.inner
166    }
167}
168///Builder for [`Viewport`].
169pub struct ViewportBuilder {
170    inner: Viewport,
171}
172impl Viewport {
173    /// Start building this struct.
174    #[inline]
175    pub fn builder() -> ViewportBuilder {
176        ViewportBuilder {
177            inner: Viewport { ..Default::default() },
178        }
179    }
180}
181impl ViewportBuilder {
182    #[inline]
183    pub fn x(mut self, value: f32) -> Self {
184        self.inner.x = value;
185        self
186    }
187    #[inline]
188    pub fn y(mut self, value: f32) -> Self {
189        self.inner.y = value;
190        self
191    }
192    #[inline]
193    pub fn width(mut self, value: f32) -> Self {
194        self.inner.width = value;
195        self
196    }
197    #[inline]
198    pub fn height(mut self, value: f32) -> Self {
199        self.inner.height = value;
200        self
201    }
202    #[inline]
203    pub fn min_depth(mut self, value: f32) -> Self {
204        self.inner.min_depth = value;
205        self
206    }
207    #[inline]
208    pub fn max_depth(mut self, value: f32) -> Self {
209        self.inner.max_depth = value;
210        self
211    }
212}
213impl core::ops::Deref for ViewportBuilder {
214    type Target = Viewport;
215    #[inline]
216    fn deref(&self) -> &Self::Target {
217        &self.inner
218    }
219}
220impl core::ops::DerefMut for ViewportBuilder {
221    #[inline]
222    fn deref_mut(&mut self) -> &mut Self::Target {
223        &mut self.inner
224    }
225}
226///Builder for [`Rect2D`].
227pub struct Rect2DBuilder {
228    inner: Rect2D,
229}
230impl Rect2D {
231    /// Start building this struct.
232    #[inline]
233    pub fn builder() -> Rect2DBuilder {
234        Rect2DBuilder {
235            inner: Rect2D { ..Default::default() },
236        }
237    }
238}
239impl Rect2DBuilder {
240    #[inline]
241    pub fn offset(mut self, value: Offset2D) -> Self {
242        self.inner.offset = value;
243        self
244    }
245    #[inline]
246    pub fn extent(mut self, value: Extent2D) -> Self {
247        self.inner.extent = value;
248        self
249    }
250}
251impl core::ops::Deref for Rect2DBuilder {
252    type Target = Rect2D;
253    #[inline]
254    fn deref(&self) -> &Self::Target {
255        &self.inner
256    }
257}
258impl core::ops::DerefMut for Rect2DBuilder {
259    #[inline]
260    fn deref_mut(&mut self) -> &mut Self::Target {
261        &mut self.inner
262    }
263}
264///Builder for [`ClearRect`].
265pub struct ClearRectBuilder {
266    inner: ClearRect,
267}
268impl ClearRect {
269    /// Start building this struct.
270    #[inline]
271    pub fn builder() -> ClearRectBuilder {
272        ClearRectBuilder {
273            inner: ClearRect { ..Default::default() },
274        }
275    }
276}
277impl ClearRectBuilder {
278    #[inline]
279    pub fn rect(mut self, value: Rect2D) -> Self {
280        self.inner.rect = value;
281        self
282    }
283    #[inline]
284    pub fn base_array_layer(mut self, value: u32) -> Self {
285        self.inner.base_array_layer = value;
286        self
287    }
288    #[inline]
289    pub fn layer_count(mut self, value: u32) -> Self {
290        self.inner.layer_count = value;
291        self
292    }
293}
294impl core::ops::Deref for ClearRectBuilder {
295    type Target = ClearRect;
296    #[inline]
297    fn deref(&self) -> &Self::Target {
298        &self.inner
299    }
300}
301impl core::ops::DerefMut for ClearRectBuilder {
302    #[inline]
303    fn deref_mut(&mut self) -> &mut Self::Target {
304        &mut self.inner
305    }
306}
307///Builder for [`ComponentMapping`].
308pub struct ComponentMappingBuilder {
309    inner: ComponentMapping,
310}
311impl ComponentMapping {
312    /// Start building this struct.
313    #[inline]
314    pub fn builder() -> ComponentMappingBuilder {
315        ComponentMappingBuilder {
316            inner: ComponentMapping {
317                ..Default::default()
318            },
319        }
320    }
321}
322impl ComponentMappingBuilder {
323    #[inline]
324    pub fn r(mut self, value: ComponentSwizzle) -> Self {
325        self.inner.r = value;
326        self
327    }
328    #[inline]
329    pub fn g(mut self, value: ComponentSwizzle) -> Self {
330        self.inner.g = value;
331        self
332    }
333    #[inline]
334    pub fn b(mut self, value: ComponentSwizzle) -> Self {
335        self.inner.b = value;
336        self
337    }
338    #[inline]
339    pub fn a(mut self, value: ComponentSwizzle) -> Self {
340        self.inner.a = value;
341        self
342    }
343}
344impl core::ops::Deref for ComponentMappingBuilder {
345    type Target = ComponentMapping;
346    #[inline]
347    fn deref(&self) -> &Self::Target {
348        &self.inner
349    }
350}
351impl core::ops::DerefMut for ComponentMappingBuilder {
352    #[inline]
353    fn deref_mut(&mut self) -> &mut Self::Target {
354        &mut self.inner
355    }
356}
357///Builder for [`PhysicalDeviceProperties`].
358pub struct PhysicalDevicePropertiesBuilder {
359    inner: PhysicalDeviceProperties,
360}
361impl PhysicalDeviceProperties {
362    /// Start building this struct.
363    #[inline]
364    pub fn builder() -> PhysicalDevicePropertiesBuilder {
365        PhysicalDevicePropertiesBuilder {
366            inner: PhysicalDeviceProperties {
367                ..Default::default()
368            },
369        }
370    }
371}
372impl PhysicalDevicePropertiesBuilder {
373    #[inline]
374    pub fn api_version(mut self, value: u32) -> Self {
375        self.inner.api_version = value;
376        self
377    }
378    #[inline]
379    pub fn driver_version(mut self, value: u32) -> Self {
380        self.inner.driver_version = value;
381        self
382    }
383    #[inline]
384    pub fn vendor_id(mut self, value: u32) -> Self {
385        self.inner.vendor_id = value;
386        self
387    }
388    #[inline]
389    pub fn device_id(mut self, value: u32) -> Self {
390        self.inner.device_id = value;
391        self
392    }
393    #[inline]
394    pub fn device_type(mut self, value: PhysicalDeviceType) -> Self {
395        self.inner.device_type = value;
396        self
397    }
398    #[inline]
399    pub fn device_name(
400        mut self,
401        value: crate::StringArray<{ MAX_PHYSICAL_DEVICE_NAME_SIZE as usize }>,
402    ) -> Self {
403        self.inner.device_name = value;
404        self
405    }
406    #[inline]
407    pub fn pipeline_cache_uuid(mut self, value: [u8; UUID_SIZE as usize]) -> Self {
408        self.inner.pipeline_cache_uuid = value;
409        self
410    }
411    #[inline]
412    pub fn limits(mut self, value: PhysicalDeviceLimits) -> Self {
413        self.inner.limits = value;
414        self
415    }
416    #[inline]
417    pub fn sparse_properties(mut self, value: PhysicalDeviceSparseProperties) -> Self {
418        self.inner.sparse_properties = value;
419        self
420    }
421}
422impl core::ops::Deref for PhysicalDevicePropertiesBuilder {
423    type Target = PhysicalDeviceProperties;
424    #[inline]
425    fn deref(&self) -> &Self::Target {
426        &self.inner
427    }
428}
429impl core::ops::DerefMut for PhysicalDevicePropertiesBuilder {
430    #[inline]
431    fn deref_mut(&mut self) -> &mut Self::Target {
432        &mut self.inner
433    }
434}
435///Builder for [`ExtensionProperties`].
436pub struct ExtensionPropertiesBuilder {
437    inner: ExtensionProperties,
438}
439impl ExtensionProperties {
440    /// Start building this struct.
441    #[inline]
442    pub fn builder() -> ExtensionPropertiesBuilder {
443        ExtensionPropertiesBuilder {
444            inner: ExtensionProperties {
445                ..Default::default()
446            },
447        }
448    }
449}
450impl ExtensionPropertiesBuilder {
451    #[inline]
452    pub fn extension_name(
453        mut self,
454        value: crate::StringArray<{ MAX_EXTENSION_NAME_SIZE as usize }>,
455    ) -> Self {
456        self.inner.extension_name = value;
457        self
458    }
459    #[inline]
460    pub fn spec_version(mut self, value: u32) -> Self {
461        self.inner.spec_version = value;
462        self
463    }
464}
465impl core::ops::Deref for ExtensionPropertiesBuilder {
466    type Target = ExtensionProperties;
467    #[inline]
468    fn deref(&self) -> &Self::Target {
469        &self.inner
470    }
471}
472impl core::ops::DerefMut for ExtensionPropertiesBuilder {
473    #[inline]
474    fn deref_mut(&mut self) -> &mut Self::Target {
475        &mut self.inner
476    }
477}
478///Builder for [`LayerProperties`].
479pub struct LayerPropertiesBuilder {
480    inner: LayerProperties,
481}
482impl LayerProperties {
483    /// Start building this struct.
484    #[inline]
485    pub fn builder() -> LayerPropertiesBuilder {
486        LayerPropertiesBuilder {
487            inner: LayerProperties {
488                ..Default::default()
489            },
490        }
491    }
492}
493impl LayerPropertiesBuilder {
494    #[inline]
495    pub fn layer_name(
496        mut self,
497        value: crate::StringArray<{ MAX_EXTENSION_NAME_SIZE as usize }>,
498    ) -> Self {
499        self.inner.layer_name = value;
500        self
501    }
502    #[inline]
503    pub fn spec_version(mut self, value: u32) -> Self {
504        self.inner.spec_version = value;
505        self
506    }
507    #[inline]
508    pub fn implementation_version(mut self, value: u32) -> Self {
509        self.inner.implementation_version = value;
510        self
511    }
512    #[inline]
513    pub fn description(
514        mut self,
515        value: crate::StringArray<{ MAX_DESCRIPTION_SIZE as usize }>,
516    ) -> Self {
517        self.inner.description = value;
518        self
519    }
520}
521impl core::ops::Deref for LayerPropertiesBuilder {
522    type Target = LayerProperties;
523    #[inline]
524    fn deref(&self) -> &Self::Target {
525        &self.inner
526    }
527}
528impl core::ops::DerefMut for LayerPropertiesBuilder {
529    #[inline]
530    fn deref_mut(&mut self) -> &mut Self::Target {
531        &mut self.inner
532    }
533}
534///Builder for [`ApplicationInfo`] with lifetime-tied pNext safety.
535pub struct ApplicationInfoBuilder<'a> {
536    inner: ApplicationInfo,
537    _marker: core::marker::PhantomData<&'a ()>,
538}
539impl ApplicationInfo {
540    /// Start building this struct; `s_type` is already set to the correct variant.
541    #[inline]
542    pub fn builder<'a>() -> ApplicationInfoBuilder<'a> {
543        ApplicationInfoBuilder {
544            inner: ApplicationInfo {
545                s_type: StructureType::from_raw(0i32),
546                ..Default::default()
547            },
548            _marker: core::marker::PhantomData,
549        }
550    }
551}
552impl<'a> ApplicationInfoBuilder<'a> {
553    #[inline]
554    pub fn application_name(mut self, value: &'a core::ffi::CStr) -> Self {
555        self.inner.p_application_name = value.as_ptr();
556        self
557    }
558    #[inline]
559    pub fn application_version(mut self, value: u32) -> Self {
560        self.inner.application_version = value;
561        self
562    }
563    #[inline]
564    pub fn engine_name(mut self, value: &'a core::ffi::CStr) -> Self {
565        self.inner.p_engine_name = value.as_ptr();
566        self
567    }
568    #[inline]
569    pub fn engine_version(mut self, value: u32) -> Self {
570        self.inner.engine_version = value;
571        self
572    }
573    #[inline]
574    pub fn api_version(mut self, value: u32) -> Self {
575        self.inner.api_version = value;
576        self
577    }
578    ///Prepend a struct to the pNext chain. See [`ApplicationInfo`]'s **Extended By** section for valid types.
579    #[inline]
580    pub fn push_next<T: ExtendsApplicationInfo>(mut self, next: &'a mut T) -> Self {
581        unsafe {
582            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
583            (*next_ptr).p_next = self.inner.p_next as *mut _;
584            self.inner.p_next = <*mut BaseOutStructure>::cast::<
585                core::ffi::c_void,
586            >(next_ptr) as *const _;
587        }
588        self
589    }
590}
591impl<'a> core::ops::Deref for ApplicationInfoBuilder<'a> {
592    type Target = ApplicationInfo;
593    #[inline]
594    fn deref(&self) -> &Self::Target {
595        &self.inner
596    }
597}
598impl<'a> core::ops::DerefMut for ApplicationInfoBuilder<'a> {
599    #[inline]
600    fn deref_mut(&mut self) -> &mut Self::Target {
601        &mut self.inner
602    }
603}
604///Builder for [`AllocationCallbacks`].
605pub struct AllocationCallbacksBuilder<'a> {
606    inner: AllocationCallbacks,
607    _marker: core::marker::PhantomData<&'a ()>,
608}
609impl AllocationCallbacks {
610    /// Start building this struct.
611    #[inline]
612    pub fn builder<'a>() -> AllocationCallbacksBuilder<'a> {
613        AllocationCallbacksBuilder {
614            inner: AllocationCallbacks {
615                ..Default::default()
616            },
617            _marker: core::marker::PhantomData,
618        }
619    }
620}
621impl<'a> AllocationCallbacksBuilder<'a> {
622    #[inline]
623    pub fn user_data(mut self, value: *mut core::ffi::c_void) -> Self {
624        self.inner.p_user_data = value;
625        self
626    }
627    #[inline]
628    pub fn pfn_allocation(mut self, value: PFN_vkAllocationFunction) -> Self {
629        self.inner.pfn_allocation = value;
630        self
631    }
632    #[inline]
633    pub fn pfn_reallocation(mut self, value: PFN_vkReallocationFunction) -> Self {
634        self.inner.pfn_reallocation = value;
635        self
636    }
637    #[inline]
638    pub fn pfn_free(mut self, value: PFN_vkFreeFunction) -> Self {
639        self.inner.pfn_free = value;
640        self
641    }
642    #[inline]
643    pub fn pfn_internal_allocation(
644        mut self,
645        value: PFN_vkInternalAllocationNotification,
646    ) -> Self {
647        self.inner.pfn_internal_allocation = value;
648        self
649    }
650    #[inline]
651    pub fn pfn_internal_free(mut self, value: PFN_vkInternalFreeNotification) -> Self {
652        self.inner.pfn_internal_free = value;
653        self
654    }
655}
656impl<'a> core::ops::Deref for AllocationCallbacksBuilder<'a> {
657    type Target = AllocationCallbacks;
658    #[inline]
659    fn deref(&self) -> &Self::Target {
660        &self.inner
661    }
662}
663impl<'a> core::ops::DerefMut for AllocationCallbacksBuilder<'a> {
664    #[inline]
665    fn deref_mut(&mut self) -> &mut Self::Target {
666        &mut self.inner
667    }
668}
669///Builder for [`DeviceQueueCreateInfo`] with lifetime-tied pNext safety.
670pub struct DeviceQueueCreateInfoBuilder<'a> {
671    inner: DeviceQueueCreateInfo,
672    _marker: core::marker::PhantomData<&'a ()>,
673}
674impl DeviceQueueCreateInfo {
675    /// Start building this struct; `s_type` is already set to the correct variant.
676    #[inline]
677    pub fn builder<'a>() -> DeviceQueueCreateInfoBuilder<'a> {
678        DeviceQueueCreateInfoBuilder {
679            inner: DeviceQueueCreateInfo {
680                s_type: StructureType::from_raw(2i32),
681                ..Default::default()
682            },
683            _marker: core::marker::PhantomData,
684        }
685    }
686}
687impl<'a> DeviceQueueCreateInfoBuilder<'a> {
688    #[inline]
689    pub fn flags(mut self, value: DeviceQueueCreateFlags) -> Self {
690        self.inner.flags = value;
691        self
692    }
693    #[inline]
694    pub fn queue_family_index(mut self, value: u32) -> Self {
695        self.inner.queue_family_index = value;
696        self
697    }
698    #[inline]
699    pub fn queue_priorities(mut self, slice: &'a [f32]) -> Self {
700        self.inner.queue_count = slice.len() as u32;
701        self.inner.p_queue_priorities = slice.as_ptr();
702        self
703    }
704    ///Prepend a struct to the pNext chain. See [`DeviceQueueCreateInfo`]'s **Extended By** section for valid types.
705    #[inline]
706    pub fn push_next<T: ExtendsDeviceQueueCreateInfo>(
707        mut self,
708        next: &'a mut T,
709    ) -> Self {
710        unsafe {
711            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
712            (*next_ptr).p_next = self.inner.p_next as *mut _;
713            self.inner.p_next = <*mut BaseOutStructure>::cast::<
714                core::ffi::c_void,
715            >(next_ptr) as *const _;
716        }
717        self
718    }
719}
720impl<'a> core::ops::Deref for DeviceQueueCreateInfoBuilder<'a> {
721    type Target = DeviceQueueCreateInfo;
722    #[inline]
723    fn deref(&self) -> &Self::Target {
724        &self.inner
725    }
726}
727impl<'a> core::ops::DerefMut for DeviceQueueCreateInfoBuilder<'a> {
728    #[inline]
729    fn deref_mut(&mut self) -> &mut Self::Target {
730        &mut self.inner
731    }
732}
733///Builder for [`DeviceCreateInfo`] with lifetime-tied pNext safety.
734pub struct DeviceCreateInfoBuilder<'a> {
735    inner: DeviceCreateInfo,
736    _marker: core::marker::PhantomData<&'a ()>,
737}
738impl DeviceCreateInfo {
739    /// Start building this struct; `s_type` is already set to the correct variant.
740    #[inline]
741    pub fn builder<'a>() -> DeviceCreateInfoBuilder<'a> {
742        DeviceCreateInfoBuilder {
743            inner: DeviceCreateInfo {
744                s_type: StructureType::from_raw(3i32),
745                ..Default::default()
746            },
747            _marker: core::marker::PhantomData,
748        }
749    }
750}
751impl<'a> DeviceCreateInfoBuilder<'a> {
752    #[inline]
753    pub fn flags(mut self, value: DeviceCreateFlags) -> Self {
754        self.inner.flags = value;
755        self
756    }
757    #[inline]
758    pub fn queue_create_infos(mut self, slice: &'a [DeviceQueueCreateInfo]) -> Self {
759        self.inner.queue_create_info_count = slice.len() as u32;
760        self.inner.p_queue_create_infos = slice.as_ptr();
761        self
762    }
763    #[inline]
764    pub fn enabled_layer_names(mut self, slice: &'a [*const core::ffi::c_char]) -> Self {
765        self.inner.enabled_layer_count = slice.len() as u32;
766        self.inner.pp_enabled_layer_names = slice.as_ptr();
767        self
768    }
769    #[inline]
770    pub fn enabled_extension_names(
771        mut self,
772        slice: &'a [*const core::ffi::c_char],
773    ) -> Self {
774        self.inner.enabled_extension_count = slice.len() as u32;
775        self.inner.pp_enabled_extension_names = slice.as_ptr();
776        self
777    }
778    #[inline]
779    pub fn enabled_features(mut self, value: &'a PhysicalDeviceFeatures) -> Self {
780        self.inner.p_enabled_features = value;
781        self
782    }
783    ///Prepend a struct to the pNext chain. See [`DeviceCreateInfo`]'s **Extended By** section for valid types.
784    #[inline]
785    pub fn push_next<T: ExtendsDeviceCreateInfo>(mut self, next: &'a mut T) -> Self {
786        unsafe {
787            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
788            (*next_ptr).p_next = self.inner.p_next as *mut _;
789            self.inner.p_next = <*mut BaseOutStructure>::cast::<
790                core::ffi::c_void,
791            >(next_ptr) as *const _;
792        }
793        self
794    }
795}
796impl<'a> core::ops::Deref for DeviceCreateInfoBuilder<'a> {
797    type Target = DeviceCreateInfo;
798    #[inline]
799    fn deref(&self) -> &Self::Target {
800        &self.inner
801    }
802}
803impl<'a> core::ops::DerefMut for DeviceCreateInfoBuilder<'a> {
804    #[inline]
805    fn deref_mut(&mut self) -> &mut Self::Target {
806        &mut self.inner
807    }
808}
809///Builder for [`InstanceCreateInfo`] with lifetime-tied pNext safety.
810pub struct InstanceCreateInfoBuilder<'a> {
811    inner: InstanceCreateInfo,
812    _marker: core::marker::PhantomData<&'a ()>,
813}
814impl InstanceCreateInfo {
815    /// Start building this struct; `s_type` is already set to the correct variant.
816    #[inline]
817    pub fn builder<'a>() -> InstanceCreateInfoBuilder<'a> {
818        InstanceCreateInfoBuilder {
819            inner: InstanceCreateInfo {
820                s_type: StructureType::from_raw(1i32),
821                ..Default::default()
822            },
823            _marker: core::marker::PhantomData,
824        }
825    }
826}
827impl<'a> InstanceCreateInfoBuilder<'a> {
828    #[inline]
829    pub fn flags(mut self, value: InstanceCreateFlags) -> Self {
830        self.inner.flags = value;
831        self
832    }
833    #[inline]
834    pub fn application_info(mut self, value: &'a ApplicationInfo) -> Self {
835        self.inner.p_application_info = value;
836        self
837    }
838    #[inline]
839    pub fn enabled_layer_names(mut self, slice: &'a [*const core::ffi::c_char]) -> Self {
840        self.inner.enabled_layer_count = slice.len() as u32;
841        self.inner.pp_enabled_layer_names = slice.as_ptr();
842        self
843    }
844    #[inline]
845    pub fn enabled_extension_names(
846        mut self,
847        slice: &'a [*const core::ffi::c_char],
848    ) -> Self {
849        self.inner.enabled_extension_count = slice.len() as u32;
850        self.inner.pp_enabled_extension_names = slice.as_ptr();
851        self
852    }
853    ///Prepend a struct to the pNext chain. See [`InstanceCreateInfo`]'s **Extended By** section for valid types.
854    #[inline]
855    pub fn push_next<T: ExtendsInstanceCreateInfo>(mut self, next: &'a mut T) -> Self {
856        unsafe {
857            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
858            (*next_ptr).p_next = self.inner.p_next as *mut _;
859            self.inner.p_next = <*mut BaseOutStructure>::cast::<
860                core::ffi::c_void,
861            >(next_ptr) as *const _;
862        }
863        self
864    }
865}
866impl<'a> core::ops::Deref for InstanceCreateInfoBuilder<'a> {
867    type Target = InstanceCreateInfo;
868    #[inline]
869    fn deref(&self) -> &Self::Target {
870        &self.inner
871    }
872}
873impl<'a> core::ops::DerefMut for InstanceCreateInfoBuilder<'a> {
874    #[inline]
875    fn deref_mut(&mut self) -> &mut Self::Target {
876        &mut self.inner
877    }
878}
879///Builder for [`QueueFamilyProperties`].
880pub struct QueueFamilyPropertiesBuilder {
881    inner: QueueFamilyProperties,
882}
883impl QueueFamilyProperties {
884    /// Start building this struct.
885    #[inline]
886    pub fn builder() -> QueueFamilyPropertiesBuilder {
887        QueueFamilyPropertiesBuilder {
888            inner: QueueFamilyProperties {
889                ..Default::default()
890            },
891        }
892    }
893}
894impl QueueFamilyPropertiesBuilder {
895    #[inline]
896    pub fn queue_flags(mut self, value: QueueFlags) -> Self {
897        self.inner.queue_flags = value;
898        self
899    }
900    #[inline]
901    pub fn queue_count(mut self, value: u32) -> Self {
902        self.inner.queue_count = value;
903        self
904    }
905    #[inline]
906    pub fn timestamp_valid_bits(mut self, value: u32) -> Self {
907        self.inner.timestamp_valid_bits = value;
908        self
909    }
910    #[inline]
911    pub fn min_image_transfer_granularity(mut self, value: Extent3D) -> Self {
912        self.inner.min_image_transfer_granularity = value;
913        self
914    }
915}
916impl core::ops::Deref for QueueFamilyPropertiesBuilder {
917    type Target = QueueFamilyProperties;
918    #[inline]
919    fn deref(&self) -> &Self::Target {
920        &self.inner
921    }
922}
923impl core::ops::DerefMut for QueueFamilyPropertiesBuilder {
924    #[inline]
925    fn deref_mut(&mut self) -> &mut Self::Target {
926        &mut self.inner
927    }
928}
929///Builder for [`PhysicalDeviceMemoryProperties`].
930pub struct PhysicalDeviceMemoryPropertiesBuilder {
931    inner: PhysicalDeviceMemoryProperties,
932}
933impl PhysicalDeviceMemoryProperties {
934    /// Start building this struct.
935    #[inline]
936    pub fn builder() -> PhysicalDeviceMemoryPropertiesBuilder {
937        PhysicalDeviceMemoryPropertiesBuilder {
938            inner: PhysicalDeviceMemoryProperties {
939                ..Default::default()
940            },
941        }
942    }
943}
944impl PhysicalDeviceMemoryPropertiesBuilder {
945    #[inline]
946    pub fn memory_type_count(mut self, value: u32) -> Self {
947        self.inner.memory_type_count = value;
948        self
949    }
950    #[inline]
951    pub fn memory_types(
952        mut self,
953        value: [MemoryType; MAX_MEMORY_TYPES as usize],
954    ) -> Self {
955        self.inner.memory_types = value;
956        self
957    }
958    #[inline]
959    pub fn memory_heap_count(mut self, value: u32) -> Self {
960        self.inner.memory_heap_count = value;
961        self
962    }
963    #[inline]
964    pub fn memory_heaps(
965        mut self,
966        value: [MemoryHeap; MAX_MEMORY_HEAPS as usize],
967    ) -> Self {
968        self.inner.memory_heaps = value;
969        self
970    }
971}
972impl core::ops::Deref for PhysicalDeviceMemoryPropertiesBuilder {
973    type Target = PhysicalDeviceMemoryProperties;
974    #[inline]
975    fn deref(&self) -> &Self::Target {
976        &self.inner
977    }
978}
979impl core::ops::DerefMut for PhysicalDeviceMemoryPropertiesBuilder {
980    #[inline]
981    fn deref_mut(&mut self) -> &mut Self::Target {
982        &mut self.inner
983    }
984}
985///Builder for [`MemoryAllocateInfo`] with lifetime-tied pNext safety.
986pub struct MemoryAllocateInfoBuilder<'a> {
987    inner: MemoryAllocateInfo,
988    _marker: core::marker::PhantomData<&'a ()>,
989}
990impl MemoryAllocateInfo {
991    /// Start building this struct; `s_type` is already set to the correct variant.
992    #[inline]
993    pub fn builder<'a>() -> MemoryAllocateInfoBuilder<'a> {
994        MemoryAllocateInfoBuilder {
995            inner: MemoryAllocateInfo {
996                s_type: StructureType::from_raw(5i32),
997                ..Default::default()
998            },
999            _marker: core::marker::PhantomData,
1000        }
1001    }
1002}
1003impl<'a> MemoryAllocateInfoBuilder<'a> {
1004    #[inline]
1005    pub fn allocation_size(mut self, value: u64) -> Self {
1006        self.inner.allocation_size = value;
1007        self
1008    }
1009    #[inline]
1010    pub fn memory_type_index(mut self, value: u32) -> Self {
1011        self.inner.memory_type_index = value;
1012        self
1013    }
1014    ///Prepend a struct to the pNext chain. See [`MemoryAllocateInfo`]'s **Extended By** section for valid types.
1015    #[inline]
1016    pub fn push_next<T: ExtendsMemoryAllocateInfo>(mut self, next: &'a mut T) -> Self {
1017        unsafe {
1018            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
1019            (*next_ptr).p_next = self.inner.p_next as *mut _;
1020            self.inner.p_next = <*mut BaseOutStructure>::cast::<
1021                core::ffi::c_void,
1022            >(next_ptr) as *const _;
1023        }
1024        self
1025    }
1026}
1027impl<'a> core::ops::Deref for MemoryAllocateInfoBuilder<'a> {
1028    type Target = MemoryAllocateInfo;
1029    #[inline]
1030    fn deref(&self) -> &Self::Target {
1031        &self.inner
1032    }
1033}
1034impl<'a> core::ops::DerefMut for MemoryAllocateInfoBuilder<'a> {
1035    #[inline]
1036    fn deref_mut(&mut self) -> &mut Self::Target {
1037        &mut self.inner
1038    }
1039}
1040///Builder for [`MemoryRequirements`].
1041pub struct MemoryRequirementsBuilder {
1042    inner: MemoryRequirements,
1043}
1044impl MemoryRequirements {
1045    /// Start building this struct.
1046    #[inline]
1047    pub fn builder() -> MemoryRequirementsBuilder {
1048        MemoryRequirementsBuilder {
1049            inner: MemoryRequirements {
1050                ..Default::default()
1051            },
1052        }
1053    }
1054}
1055impl MemoryRequirementsBuilder {
1056    #[inline]
1057    pub fn size(mut self, value: u64) -> Self {
1058        self.inner.size = value;
1059        self
1060    }
1061    #[inline]
1062    pub fn alignment(mut self, value: u64) -> Self {
1063        self.inner.alignment = value;
1064        self
1065    }
1066    #[inline]
1067    pub fn memory_type_bits(mut self, value: u32) -> Self {
1068        self.inner.memory_type_bits = value;
1069        self
1070    }
1071}
1072impl core::ops::Deref for MemoryRequirementsBuilder {
1073    type Target = MemoryRequirements;
1074    #[inline]
1075    fn deref(&self) -> &Self::Target {
1076        &self.inner
1077    }
1078}
1079impl core::ops::DerefMut for MemoryRequirementsBuilder {
1080    #[inline]
1081    fn deref_mut(&mut self) -> &mut Self::Target {
1082        &mut self.inner
1083    }
1084}
1085///Builder for [`SparseImageFormatProperties`].
1086pub struct SparseImageFormatPropertiesBuilder {
1087    inner: SparseImageFormatProperties,
1088}
1089impl SparseImageFormatProperties {
1090    /// Start building this struct.
1091    #[inline]
1092    pub fn builder() -> SparseImageFormatPropertiesBuilder {
1093        SparseImageFormatPropertiesBuilder {
1094            inner: SparseImageFormatProperties {
1095                ..Default::default()
1096            },
1097        }
1098    }
1099}
1100impl SparseImageFormatPropertiesBuilder {
1101    #[inline]
1102    pub fn aspect_mask(mut self, value: ImageAspectFlags) -> Self {
1103        self.inner.aspect_mask = value;
1104        self
1105    }
1106    #[inline]
1107    pub fn image_granularity(mut self, value: Extent3D) -> Self {
1108        self.inner.image_granularity = value;
1109        self
1110    }
1111    #[inline]
1112    pub fn flags(mut self, value: SparseImageFormatFlags) -> Self {
1113        self.inner.flags = value;
1114        self
1115    }
1116}
1117impl core::ops::Deref for SparseImageFormatPropertiesBuilder {
1118    type Target = SparseImageFormatProperties;
1119    #[inline]
1120    fn deref(&self) -> &Self::Target {
1121        &self.inner
1122    }
1123}
1124impl core::ops::DerefMut for SparseImageFormatPropertiesBuilder {
1125    #[inline]
1126    fn deref_mut(&mut self) -> &mut Self::Target {
1127        &mut self.inner
1128    }
1129}
1130///Builder for [`SparseImageMemoryRequirements`].
1131pub struct SparseImageMemoryRequirementsBuilder {
1132    inner: SparseImageMemoryRequirements,
1133}
1134impl SparseImageMemoryRequirements {
1135    /// Start building this struct.
1136    #[inline]
1137    pub fn builder() -> SparseImageMemoryRequirementsBuilder {
1138        SparseImageMemoryRequirementsBuilder {
1139            inner: SparseImageMemoryRequirements {
1140                ..Default::default()
1141            },
1142        }
1143    }
1144}
1145impl SparseImageMemoryRequirementsBuilder {
1146    #[inline]
1147    pub fn format_properties(mut self, value: SparseImageFormatProperties) -> Self {
1148        self.inner.format_properties = value;
1149        self
1150    }
1151    #[inline]
1152    pub fn image_mip_tail_first_lod(mut self, value: u32) -> Self {
1153        self.inner.image_mip_tail_first_lod = value;
1154        self
1155    }
1156    #[inline]
1157    pub fn image_mip_tail_size(mut self, value: u64) -> Self {
1158        self.inner.image_mip_tail_size = value;
1159        self
1160    }
1161    #[inline]
1162    pub fn image_mip_tail_offset(mut self, value: u64) -> Self {
1163        self.inner.image_mip_tail_offset = value;
1164        self
1165    }
1166    #[inline]
1167    pub fn image_mip_tail_stride(mut self, value: u64) -> Self {
1168        self.inner.image_mip_tail_stride = value;
1169        self
1170    }
1171}
1172impl core::ops::Deref for SparseImageMemoryRequirementsBuilder {
1173    type Target = SparseImageMemoryRequirements;
1174    #[inline]
1175    fn deref(&self) -> &Self::Target {
1176        &self.inner
1177    }
1178}
1179impl core::ops::DerefMut for SparseImageMemoryRequirementsBuilder {
1180    #[inline]
1181    fn deref_mut(&mut self) -> &mut Self::Target {
1182        &mut self.inner
1183    }
1184}
1185///Builder for [`MemoryType`].
1186pub struct MemoryTypeBuilder {
1187    inner: MemoryType,
1188}
1189impl MemoryType {
1190    /// Start building this struct.
1191    #[inline]
1192    pub fn builder() -> MemoryTypeBuilder {
1193        MemoryTypeBuilder {
1194            inner: MemoryType { ..Default::default() },
1195        }
1196    }
1197}
1198impl MemoryTypeBuilder {
1199    #[inline]
1200    pub fn property_flags(mut self, value: MemoryPropertyFlags) -> Self {
1201        self.inner.property_flags = value;
1202        self
1203    }
1204    #[inline]
1205    pub fn heap_index(mut self, value: u32) -> Self {
1206        self.inner.heap_index = value;
1207        self
1208    }
1209}
1210impl core::ops::Deref for MemoryTypeBuilder {
1211    type Target = MemoryType;
1212    #[inline]
1213    fn deref(&self) -> &Self::Target {
1214        &self.inner
1215    }
1216}
1217impl core::ops::DerefMut for MemoryTypeBuilder {
1218    #[inline]
1219    fn deref_mut(&mut self) -> &mut Self::Target {
1220        &mut self.inner
1221    }
1222}
1223///Builder for [`MemoryHeap`].
1224pub struct MemoryHeapBuilder {
1225    inner: MemoryHeap,
1226}
1227impl MemoryHeap {
1228    /// Start building this struct.
1229    #[inline]
1230    pub fn builder() -> MemoryHeapBuilder {
1231        MemoryHeapBuilder {
1232            inner: MemoryHeap { ..Default::default() },
1233        }
1234    }
1235}
1236impl MemoryHeapBuilder {
1237    #[inline]
1238    pub fn size(mut self, value: u64) -> Self {
1239        self.inner.size = value;
1240        self
1241    }
1242    #[inline]
1243    pub fn flags(mut self, value: MemoryHeapFlags) -> Self {
1244        self.inner.flags = value;
1245        self
1246    }
1247}
1248impl core::ops::Deref for MemoryHeapBuilder {
1249    type Target = MemoryHeap;
1250    #[inline]
1251    fn deref(&self) -> &Self::Target {
1252        &self.inner
1253    }
1254}
1255impl core::ops::DerefMut for MemoryHeapBuilder {
1256    #[inline]
1257    fn deref_mut(&mut self) -> &mut Self::Target {
1258        &mut self.inner
1259    }
1260}
1261///Builder for [`MappedMemoryRange`] with lifetime-tied pNext safety.
1262pub struct MappedMemoryRangeBuilder<'a> {
1263    inner: MappedMemoryRange,
1264    _marker: core::marker::PhantomData<&'a ()>,
1265}
1266impl MappedMemoryRange {
1267    /// Start building this struct; `s_type` is already set to the correct variant.
1268    #[inline]
1269    pub fn builder<'a>() -> MappedMemoryRangeBuilder<'a> {
1270        MappedMemoryRangeBuilder {
1271            inner: MappedMemoryRange {
1272                s_type: StructureType::from_raw(6i32),
1273                ..Default::default()
1274            },
1275            _marker: core::marker::PhantomData,
1276        }
1277    }
1278}
1279impl<'a> MappedMemoryRangeBuilder<'a> {
1280    #[inline]
1281    pub fn memory(mut self, value: DeviceMemory) -> Self {
1282        self.inner.memory = value;
1283        self
1284    }
1285    #[inline]
1286    pub fn offset(mut self, value: u64) -> Self {
1287        self.inner.offset = value;
1288        self
1289    }
1290    #[inline]
1291    pub fn size(mut self, value: u64) -> Self {
1292        self.inner.size = value;
1293        self
1294    }
1295    ///Prepend a struct to the pNext chain. See [`MappedMemoryRange`]'s **Extended By** section for valid types.
1296    #[inline]
1297    pub fn push_next<T: ExtendsMappedMemoryRange>(mut self, next: &'a mut T) -> Self {
1298        unsafe {
1299            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
1300            (*next_ptr).p_next = self.inner.p_next as *mut _;
1301            self.inner.p_next = <*mut BaseOutStructure>::cast::<
1302                core::ffi::c_void,
1303            >(next_ptr) as *const _;
1304        }
1305        self
1306    }
1307}
1308impl<'a> core::ops::Deref for MappedMemoryRangeBuilder<'a> {
1309    type Target = MappedMemoryRange;
1310    #[inline]
1311    fn deref(&self) -> &Self::Target {
1312        &self.inner
1313    }
1314}
1315impl<'a> core::ops::DerefMut for MappedMemoryRangeBuilder<'a> {
1316    #[inline]
1317    fn deref_mut(&mut self) -> &mut Self::Target {
1318        &mut self.inner
1319    }
1320}
1321///Builder for [`FormatProperties`].
1322pub struct FormatPropertiesBuilder {
1323    inner: FormatProperties,
1324}
1325impl FormatProperties {
1326    /// Start building this struct.
1327    #[inline]
1328    pub fn builder() -> FormatPropertiesBuilder {
1329        FormatPropertiesBuilder {
1330            inner: FormatProperties {
1331                ..Default::default()
1332            },
1333        }
1334    }
1335}
1336impl FormatPropertiesBuilder {
1337    #[inline]
1338    pub fn linear_tiling_features(mut self, value: FormatFeatureFlags) -> Self {
1339        self.inner.linear_tiling_features = value;
1340        self
1341    }
1342    #[inline]
1343    pub fn optimal_tiling_features(mut self, value: FormatFeatureFlags) -> Self {
1344        self.inner.optimal_tiling_features = value;
1345        self
1346    }
1347    #[inline]
1348    pub fn buffer_features(mut self, value: FormatFeatureFlags) -> Self {
1349        self.inner.buffer_features = value;
1350        self
1351    }
1352}
1353impl core::ops::Deref for FormatPropertiesBuilder {
1354    type Target = FormatProperties;
1355    #[inline]
1356    fn deref(&self) -> &Self::Target {
1357        &self.inner
1358    }
1359}
1360impl core::ops::DerefMut for FormatPropertiesBuilder {
1361    #[inline]
1362    fn deref_mut(&mut self) -> &mut Self::Target {
1363        &mut self.inner
1364    }
1365}
1366///Builder for [`ImageFormatProperties`].
1367pub struct ImageFormatPropertiesBuilder {
1368    inner: ImageFormatProperties,
1369}
1370impl ImageFormatProperties {
1371    /// Start building this struct.
1372    #[inline]
1373    pub fn builder() -> ImageFormatPropertiesBuilder {
1374        ImageFormatPropertiesBuilder {
1375            inner: ImageFormatProperties {
1376                ..Default::default()
1377            },
1378        }
1379    }
1380}
1381impl ImageFormatPropertiesBuilder {
1382    #[inline]
1383    pub fn max_extent(mut self, value: Extent3D) -> Self {
1384        self.inner.max_extent = value;
1385        self
1386    }
1387    #[inline]
1388    pub fn max_mip_levels(mut self, value: u32) -> Self {
1389        self.inner.max_mip_levels = value;
1390        self
1391    }
1392    #[inline]
1393    pub fn max_array_layers(mut self, value: u32) -> Self {
1394        self.inner.max_array_layers = value;
1395        self
1396    }
1397    #[inline]
1398    pub fn sample_counts(mut self, value: SampleCountFlags) -> Self {
1399        self.inner.sample_counts = value;
1400        self
1401    }
1402    #[inline]
1403    pub fn max_resource_size(mut self, value: u64) -> Self {
1404        self.inner.max_resource_size = value;
1405        self
1406    }
1407}
1408impl core::ops::Deref for ImageFormatPropertiesBuilder {
1409    type Target = ImageFormatProperties;
1410    #[inline]
1411    fn deref(&self) -> &Self::Target {
1412        &self.inner
1413    }
1414}
1415impl core::ops::DerefMut for ImageFormatPropertiesBuilder {
1416    #[inline]
1417    fn deref_mut(&mut self) -> &mut Self::Target {
1418        &mut self.inner
1419    }
1420}
1421///Builder for [`DescriptorBufferInfo`].
1422pub struct DescriptorBufferInfoBuilder {
1423    inner: DescriptorBufferInfo,
1424}
1425impl DescriptorBufferInfo {
1426    /// Start building this struct.
1427    #[inline]
1428    pub fn builder() -> DescriptorBufferInfoBuilder {
1429        DescriptorBufferInfoBuilder {
1430            inner: DescriptorBufferInfo {
1431                ..Default::default()
1432            },
1433        }
1434    }
1435}
1436impl DescriptorBufferInfoBuilder {
1437    #[inline]
1438    pub fn buffer(mut self, value: Buffer) -> Self {
1439        self.inner.buffer = value;
1440        self
1441    }
1442    #[inline]
1443    pub fn offset(mut self, value: u64) -> Self {
1444        self.inner.offset = value;
1445        self
1446    }
1447    #[inline]
1448    pub fn range(mut self, value: u64) -> Self {
1449        self.inner.range = value;
1450        self
1451    }
1452}
1453impl core::ops::Deref for DescriptorBufferInfoBuilder {
1454    type Target = DescriptorBufferInfo;
1455    #[inline]
1456    fn deref(&self) -> &Self::Target {
1457        &self.inner
1458    }
1459}
1460impl core::ops::DerefMut for DescriptorBufferInfoBuilder {
1461    #[inline]
1462    fn deref_mut(&mut self) -> &mut Self::Target {
1463        &mut self.inner
1464    }
1465}
1466///Builder for [`DescriptorImageInfo`].
1467pub struct DescriptorImageInfoBuilder {
1468    inner: DescriptorImageInfo,
1469}
1470impl DescriptorImageInfo {
1471    /// Start building this struct.
1472    #[inline]
1473    pub fn builder() -> DescriptorImageInfoBuilder {
1474        DescriptorImageInfoBuilder {
1475            inner: DescriptorImageInfo {
1476                ..Default::default()
1477            },
1478        }
1479    }
1480}
1481impl DescriptorImageInfoBuilder {
1482    #[inline]
1483    pub fn sampler(mut self, value: Sampler) -> Self {
1484        self.inner.sampler = value;
1485        self
1486    }
1487    #[inline]
1488    pub fn image_view(mut self, value: ImageView) -> Self {
1489        self.inner.image_view = value;
1490        self
1491    }
1492    #[inline]
1493    pub fn image_layout(mut self, value: ImageLayout) -> Self {
1494        self.inner.image_layout = value;
1495        self
1496    }
1497}
1498impl core::ops::Deref for DescriptorImageInfoBuilder {
1499    type Target = DescriptorImageInfo;
1500    #[inline]
1501    fn deref(&self) -> &Self::Target {
1502        &self.inner
1503    }
1504}
1505impl core::ops::DerefMut for DescriptorImageInfoBuilder {
1506    #[inline]
1507    fn deref_mut(&mut self) -> &mut Self::Target {
1508        &mut self.inner
1509    }
1510}
1511///Builder for [`WriteDescriptorSet`] with lifetime-tied pNext safety.
1512pub struct WriteDescriptorSetBuilder<'a> {
1513    inner: WriteDescriptorSet,
1514    _marker: core::marker::PhantomData<&'a ()>,
1515}
1516impl WriteDescriptorSet {
1517    /// Start building this struct; `s_type` is already set to the correct variant.
1518    #[inline]
1519    pub fn builder<'a>() -> WriteDescriptorSetBuilder<'a> {
1520        WriteDescriptorSetBuilder {
1521            inner: WriteDescriptorSet {
1522                s_type: StructureType::from_raw(35i32),
1523                ..Default::default()
1524            },
1525            _marker: core::marker::PhantomData,
1526        }
1527    }
1528}
1529impl<'a> WriteDescriptorSetBuilder<'a> {
1530    #[inline]
1531    pub fn dst_set(mut self, value: DescriptorSet) -> Self {
1532        self.inner.dst_set = value;
1533        self
1534    }
1535    #[inline]
1536    pub fn dst_binding(mut self, value: u32) -> Self {
1537        self.inner.dst_binding = value;
1538        self
1539    }
1540    #[inline]
1541    pub fn dst_array_element(mut self, value: u32) -> Self {
1542        self.inner.dst_array_element = value;
1543        self
1544    }
1545    #[inline]
1546    pub fn descriptor_type(mut self, value: DescriptorType) -> Self {
1547        self.inner.descriptor_type = value;
1548        self
1549    }
1550    #[inline]
1551    pub fn image_info(mut self, slice: &'a [DescriptorImageInfo]) -> Self {
1552        self.inner.descriptor_count = slice.len() as u32;
1553        self.inner.p_image_info = slice.as_ptr();
1554        self
1555    }
1556    #[inline]
1557    pub fn buffer_info(mut self, slice: &'a [DescriptorBufferInfo]) -> Self {
1558        self.inner.descriptor_count = slice.len() as u32;
1559        self.inner.p_buffer_info = slice.as_ptr();
1560        self
1561    }
1562    #[inline]
1563    pub fn texel_buffer_view(mut self, slice: &'a [BufferView]) -> Self {
1564        self.inner.descriptor_count = slice.len() as u32;
1565        self.inner.p_texel_buffer_view = slice.as_ptr();
1566        self
1567    }
1568    ///Prepend a struct to the pNext chain. See [`WriteDescriptorSet`]'s **Extended By** section for valid types.
1569    #[inline]
1570    pub fn push_next<T: ExtendsWriteDescriptorSet>(mut self, next: &'a mut T) -> Self {
1571        unsafe {
1572            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
1573            (*next_ptr).p_next = self.inner.p_next as *mut _;
1574            self.inner.p_next = <*mut BaseOutStructure>::cast::<
1575                core::ffi::c_void,
1576            >(next_ptr) as *const _;
1577        }
1578        self
1579    }
1580}
1581impl<'a> core::ops::Deref for WriteDescriptorSetBuilder<'a> {
1582    type Target = WriteDescriptorSet;
1583    #[inline]
1584    fn deref(&self) -> &Self::Target {
1585        &self.inner
1586    }
1587}
1588impl<'a> core::ops::DerefMut for WriteDescriptorSetBuilder<'a> {
1589    #[inline]
1590    fn deref_mut(&mut self) -> &mut Self::Target {
1591        &mut self.inner
1592    }
1593}
1594///Builder for [`CopyDescriptorSet`] with lifetime-tied pNext safety.
1595pub struct CopyDescriptorSetBuilder<'a> {
1596    inner: CopyDescriptorSet,
1597    _marker: core::marker::PhantomData<&'a ()>,
1598}
1599impl CopyDescriptorSet {
1600    /// Start building this struct; `s_type` is already set to the correct variant.
1601    #[inline]
1602    pub fn builder<'a>() -> CopyDescriptorSetBuilder<'a> {
1603        CopyDescriptorSetBuilder {
1604            inner: CopyDescriptorSet {
1605                s_type: StructureType::from_raw(36i32),
1606                ..Default::default()
1607            },
1608            _marker: core::marker::PhantomData,
1609        }
1610    }
1611}
1612impl<'a> CopyDescriptorSetBuilder<'a> {
1613    #[inline]
1614    pub fn src_set(mut self, value: DescriptorSet) -> Self {
1615        self.inner.src_set = value;
1616        self
1617    }
1618    #[inline]
1619    pub fn src_binding(mut self, value: u32) -> Self {
1620        self.inner.src_binding = value;
1621        self
1622    }
1623    #[inline]
1624    pub fn src_array_element(mut self, value: u32) -> Self {
1625        self.inner.src_array_element = value;
1626        self
1627    }
1628    #[inline]
1629    pub fn dst_set(mut self, value: DescriptorSet) -> Self {
1630        self.inner.dst_set = value;
1631        self
1632    }
1633    #[inline]
1634    pub fn dst_binding(mut self, value: u32) -> Self {
1635        self.inner.dst_binding = value;
1636        self
1637    }
1638    #[inline]
1639    pub fn dst_array_element(mut self, value: u32) -> Self {
1640        self.inner.dst_array_element = value;
1641        self
1642    }
1643    #[inline]
1644    pub fn descriptor_count(mut self, value: u32) -> Self {
1645        self.inner.descriptor_count = value;
1646        self
1647    }
1648    ///Prepend a struct to the pNext chain. See [`CopyDescriptorSet`]'s **Extended By** section for valid types.
1649    #[inline]
1650    pub fn push_next<T: ExtendsCopyDescriptorSet>(mut self, next: &'a mut T) -> Self {
1651        unsafe {
1652            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
1653            (*next_ptr).p_next = self.inner.p_next as *mut _;
1654            self.inner.p_next = <*mut BaseOutStructure>::cast::<
1655                core::ffi::c_void,
1656            >(next_ptr) as *const _;
1657        }
1658        self
1659    }
1660}
1661impl<'a> core::ops::Deref for CopyDescriptorSetBuilder<'a> {
1662    type Target = CopyDescriptorSet;
1663    #[inline]
1664    fn deref(&self) -> &Self::Target {
1665        &self.inner
1666    }
1667}
1668impl<'a> core::ops::DerefMut for CopyDescriptorSetBuilder<'a> {
1669    #[inline]
1670    fn deref_mut(&mut self) -> &mut Self::Target {
1671        &mut self.inner
1672    }
1673}
1674///Builder for [`BufferUsageFlags2CreateInfo`] with lifetime-tied pNext safety.
1675pub struct BufferUsageFlags2CreateInfoBuilder<'a> {
1676    inner: BufferUsageFlags2CreateInfo,
1677    _marker: core::marker::PhantomData<&'a ()>,
1678}
1679impl BufferUsageFlags2CreateInfo {
1680    /// Start building this struct; `s_type` is already set to the correct variant.
1681    #[inline]
1682    pub fn builder<'a>() -> BufferUsageFlags2CreateInfoBuilder<'a> {
1683        BufferUsageFlags2CreateInfoBuilder {
1684            inner: BufferUsageFlags2CreateInfo {
1685                s_type: StructureType::from_raw(1000470006i32),
1686                ..Default::default()
1687            },
1688            _marker: core::marker::PhantomData,
1689        }
1690    }
1691}
1692impl<'a> BufferUsageFlags2CreateInfoBuilder<'a> {
1693    #[inline]
1694    pub fn usage(mut self, value: BufferUsageFlags2) -> Self {
1695        self.inner.usage = value;
1696        self
1697    }
1698    ///Prepend a struct to the pNext chain. See [`BufferUsageFlags2CreateInfo`]'s **Extended By** section for valid types.
1699    #[inline]
1700    pub fn push_next<T: ExtendsBufferUsageFlags2CreateInfo>(
1701        mut self,
1702        next: &'a mut T,
1703    ) -> Self {
1704        unsafe {
1705            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
1706            (*next_ptr).p_next = self.inner.p_next as *mut _;
1707            self.inner.p_next = <*mut BaseOutStructure>::cast::<
1708                core::ffi::c_void,
1709            >(next_ptr) as *const _;
1710        }
1711        self
1712    }
1713}
1714impl<'a> core::ops::Deref for BufferUsageFlags2CreateInfoBuilder<'a> {
1715    type Target = BufferUsageFlags2CreateInfo;
1716    #[inline]
1717    fn deref(&self) -> &Self::Target {
1718        &self.inner
1719    }
1720}
1721impl<'a> core::ops::DerefMut for BufferUsageFlags2CreateInfoBuilder<'a> {
1722    #[inline]
1723    fn deref_mut(&mut self) -> &mut Self::Target {
1724        &mut self.inner
1725    }
1726}
1727///Builder for [`BufferCreateInfo`] with lifetime-tied pNext safety.
1728pub struct BufferCreateInfoBuilder<'a> {
1729    inner: BufferCreateInfo,
1730    _marker: core::marker::PhantomData<&'a ()>,
1731}
1732impl BufferCreateInfo {
1733    /// Start building this struct; `s_type` is already set to the correct variant.
1734    #[inline]
1735    pub fn builder<'a>() -> BufferCreateInfoBuilder<'a> {
1736        BufferCreateInfoBuilder {
1737            inner: BufferCreateInfo {
1738                s_type: StructureType::from_raw(12i32),
1739                ..Default::default()
1740            },
1741            _marker: core::marker::PhantomData,
1742        }
1743    }
1744}
1745impl<'a> BufferCreateInfoBuilder<'a> {
1746    #[inline]
1747    pub fn flags(mut self, value: BufferCreateFlags) -> Self {
1748        self.inner.flags = value;
1749        self
1750    }
1751    #[inline]
1752    pub fn size(mut self, value: u64) -> Self {
1753        self.inner.size = value;
1754        self
1755    }
1756    #[inline]
1757    pub fn usage(mut self, value: BufferUsageFlags) -> Self {
1758        self.inner.usage = value;
1759        self
1760    }
1761    #[inline]
1762    pub fn sharing_mode(mut self, value: SharingMode) -> Self {
1763        self.inner.sharing_mode = value;
1764        self
1765    }
1766    #[inline]
1767    pub fn queue_family_indices(mut self, slice: &'a [u32]) -> Self {
1768        self.inner.queue_family_index_count = slice.len() as u32;
1769        self.inner.p_queue_family_indices = slice.as_ptr();
1770        self
1771    }
1772    ///Prepend a struct to the pNext chain. See [`BufferCreateInfo`]'s **Extended By** section for valid types.
1773    #[inline]
1774    pub fn push_next<T: ExtendsBufferCreateInfo>(mut self, next: &'a mut T) -> Self {
1775        unsafe {
1776            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
1777            (*next_ptr).p_next = self.inner.p_next as *mut _;
1778            self.inner.p_next = <*mut BaseOutStructure>::cast::<
1779                core::ffi::c_void,
1780            >(next_ptr) as *const _;
1781        }
1782        self
1783    }
1784}
1785impl<'a> core::ops::Deref for BufferCreateInfoBuilder<'a> {
1786    type Target = BufferCreateInfo;
1787    #[inline]
1788    fn deref(&self) -> &Self::Target {
1789        &self.inner
1790    }
1791}
1792impl<'a> core::ops::DerefMut for BufferCreateInfoBuilder<'a> {
1793    #[inline]
1794    fn deref_mut(&mut self) -> &mut Self::Target {
1795        &mut self.inner
1796    }
1797}
1798///Builder for [`BufferViewCreateInfo`] with lifetime-tied pNext safety.
1799pub struct BufferViewCreateInfoBuilder<'a> {
1800    inner: BufferViewCreateInfo,
1801    _marker: core::marker::PhantomData<&'a ()>,
1802}
1803impl BufferViewCreateInfo {
1804    /// Start building this struct; `s_type` is already set to the correct variant.
1805    #[inline]
1806    pub fn builder<'a>() -> BufferViewCreateInfoBuilder<'a> {
1807        BufferViewCreateInfoBuilder {
1808            inner: BufferViewCreateInfo {
1809                s_type: StructureType::from_raw(13i32),
1810                ..Default::default()
1811            },
1812            _marker: core::marker::PhantomData,
1813        }
1814    }
1815}
1816impl<'a> BufferViewCreateInfoBuilder<'a> {
1817    #[inline]
1818    pub fn flags(mut self, value: BufferViewCreateFlags) -> Self {
1819        self.inner.flags = value;
1820        self
1821    }
1822    #[inline]
1823    pub fn buffer(mut self, value: Buffer) -> Self {
1824        self.inner.buffer = value;
1825        self
1826    }
1827    #[inline]
1828    pub fn format(mut self, value: Format) -> Self {
1829        self.inner.format = value;
1830        self
1831    }
1832    #[inline]
1833    pub fn offset(mut self, value: u64) -> Self {
1834        self.inner.offset = value;
1835        self
1836    }
1837    #[inline]
1838    pub fn range(mut self, value: u64) -> Self {
1839        self.inner.range = value;
1840        self
1841    }
1842    ///Prepend a struct to the pNext chain. See [`BufferViewCreateInfo`]'s **Extended By** section for valid types.
1843    #[inline]
1844    pub fn push_next<T: ExtendsBufferViewCreateInfo>(mut self, next: &'a mut T) -> Self {
1845        unsafe {
1846            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
1847            (*next_ptr).p_next = self.inner.p_next as *mut _;
1848            self.inner.p_next = <*mut BaseOutStructure>::cast::<
1849                core::ffi::c_void,
1850            >(next_ptr) as *const _;
1851        }
1852        self
1853    }
1854}
1855impl<'a> core::ops::Deref for BufferViewCreateInfoBuilder<'a> {
1856    type Target = BufferViewCreateInfo;
1857    #[inline]
1858    fn deref(&self) -> &Self::Target {
1859        &self.inner
1860    }
1861}
1862impl<'a> core::ops::DerefMut for BufferViewCreateInfoBuilder<'a> {
1863    #[inline]
1864    fn deref_mut(&mut self) -> &mut Self::Target {
1865        &mut self.inner
1866    }
1867}
1868///Builder for [`ImageSubresource`].
1869pub struct ImageSubresourceBuilder {
1870    inner: ImageSubresource,
1871}
1872impl ImageSubresource {
1873    /// Start building this struct.
1874    #[inline]
1875    pub fn builder() -> ImageSubresourceBuilder {
1876        ImageSubresourceBuilder {
1877            inner: ImageSubresource {
1878                ..Default::default()
1879            },
1880        }
1881    }
1882}
1883impl ImageSubresourceBuilder {
1884    #[inline]
1885    pub fn aspect_mask(mut self, value: ImageAspectFlags) -> Self {
1886        self.inner.aspect_mask = value;
1887        self
1888    }
1889    #[inline]
1890    pub fn mip_level(mut self, value: u32) -> Self {
1891        self.inner.mip_level = value;
1892        self
1893    }
1894    #[inline]
1895    pub fn array_layer(mut self, value: u32) -> Self {
1896        self.inner.array_layer = value;
1897        self
1898    }
1899}
1900impl core::ops::Deref for ImageSubresourceBuilder {
1901    type Target = ImageSubresource;
1902    #[inline]
1903    fn deref(&self) -> &Self::Target {
1904        &self.inner
1905    }
1906}
1907impl core::ops::DerefMut for ImageSubresourceBuilder {
1908    #[inline]
1909    fn deref_mut(&mut self) -> &mut Self::Target {
1910        &mut self.inner
1911    }
1912}
1913///Builder for [`ImageSubresourceLayers`].
1914pub struct ImageSubresourceLayersBuilder {
1915    inner: ImageSubresourceLayers,
1916}
1917impl ImageSubresourceLayers {
1918    /// Start building this struct.
1919    #[inline]
1920    pub fn builder() -> ImageSubresourceLayersBuilder {
1921        ImageSubresourceLayersBuilder {
1922            inner: ImageSubresourceLayers {
1923                ..Default::default()
1924            },
1925        }
1926    }
1927}
1928impl ImageSubresourceLayersBuilder {
1929    #[inline]
1930    pub fn aspect_mask(mut self, value: ImageAspectFlags) -> Self {
1931        self.inner.aspect_mask = value;
1932        self
1933    }
1934    #[inline]
1935    pub fn mip_level(mut self, value: u32) -> Self {
1936        self.inner.mip_level = value;
1937        self
1938    }
1939    #[inline]
1940    pub fn base_array_layer(mut self, value: u32) -> Self {
1941        self.inner.base_array_layer = value;
1942        self
1943    }
1944    #[inline]
1945    pub fn layer_count(mut self, value: u32) -> Self {
1946        self.inner.layer_count = value;
1947        self
1948    }
1949}
1950impl core::ops::Deref for ImageSubresourceLayersBuilder {
1951    type Target = ImageSubresourceLayers;
1952    #[inline]
1953    fn deref(&self) -> &Self::Target {
1954        &self.inner
1955    }
1956}
1957impl core::ops::DerefMut for ImageSubresourceLayersBuilder {
1958    #[inline]
1959    fn deref_mut(&mut self) -> &mut Self::Target {
1960        &mut self.inner
1961    }
1962}
1963///Builder for [`ImageSubresourceRange`].
1964pub struct ImageSubresourceRangeBuilder {
1965    inner: ImageSubresourceRange,
1966}
1967impl ImageSubresourceRange {
1968    /// Start building this struct.
1969    #[inline]
1970    pub fn builder() -> ImageSubresourceRangeBuilder {
1971        ImageSubresourceRangeBuilder {
1972            inner: ImageSubresourceRange {
1973                ..Default::default()
1974            },
1975        }
1976    }
1977}
1978impl ImageSubresourceRangeBuilder {
1979    #[inline]
1980    pub fn aspect_mask(mut self, value: ImageAspectFlags) -> Self {
1981        self.inner.aspect_mask = value;
1982        self
1983    }
1984    #[inline]
1985    pub fn base_mip_level(mut self, value: u32) -> Self {
1986        self.inner.base_mip_level = value;
1987        self
1988    }
1989    #[inline]
1990    pub fn level_count(mut self, value: u32) -> Self {
1991        self.inner.level_count = value;
1992        self
1993    }
1994    #[inline]
1995    pub fn base_array_layer(mut self, value: u32) -> Self {
1996        self.inner.base_array_layer = value;
1997        self
1998    }
1999    #[inline]
2000    pub fn layer_count(mut self, value: u32) -> Self {
2001        self.inner.layer_count = value;
2002        self
2003    }
2004}
2005impl core::ops::Deref for ImageSubresourceRangeBuilder {
2006    type Target = ImageSubresourceRange;
2007    #[inline]
2008    fn deref(&self) -> &Self::Target {
2009        &self.inner
2010    }
2011}
2012impl core::ops::DerefMut for ImageSubresourceRangeBuilder {
2013    #[inline]
2014    fn deref_mut(&mut self) -> &mut Self::Target {
2015        &mut self.inner
2016    }
2017}
2018///Builder for [`MemoryBarrier`] with lifetime-tied pNext safety.
2019pub struct MemoryBarrierBuilder<'a> {
2020    inner: MemoryBarrier,
2021    _marker: core::marker::PhantomData<&'a ()>,
2022}
2023impl MemoryBarrier {
2024    /// Start building this struct; `s_type` is already set to the correct variant.
2025    #[inline]
2026    pub fn builder<'a>() -> MemoryBarrierBuilder<'a> {
2027        MemoryBarrierBuilder {
2028            inner: MemoryBarrier {
2029                s_type: StructureType::from_raw(46i32),
2030                ..Default::default()
2031            },
2032            _marker: core::marker::PhantomData,
2033        }
2034    }
2035}
2036impl<'a> MemoryBarrierBuilder<'a> {
2037    #[inline]
2038    pub fn src_access_mask(mut self, value: AccessFlags) -> Self {
2039        self.inner.src_access_mask = value;
2040        self
2041    }
2042    #[inline]
2043    pub fn dst_access_mask(mut self, value: AccessFlags) -> Self {
2044        self.inner.dst_access_mask = value;
2045        self
2046    }
2047    ///Prepend a struct to the pNext chain. See [`MemoryBarrier`]'s **Extended By** section for valid types.
2048    #[inline]
2049    pub fn push_next<T: ExtendsMemoryBarrier>(mut self, next: &'a mut T) -> Self {
2050        unsafe {
2051            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
2052            (*next_ptr).p_next = self.inner.p_next as *mut _;
2053            self.inner.p_next = <*mut BaseOutStructure>::cast::<
2054                core::ffi::c_void,
2055            >(next_ptr) as *const _;
2056        }
2057        self
2058    }
2059}
2060impl<'a> core::ops::Deref for MemoryBarrierBuilder<'a> {
2061    type Target = MemoryBarrier;
2062    #[inline]
2063    fn deref(&self) -> &Self::Target {
2064        &self.inner
2065    }
2066}
2067impl<'a> core::ops::DerefMut for MemoryBarrierBuilder<'a> {
2068    #[inline]
2069    fn deref_mut(&mut self) -> &mut Self::Target {
2070        &mut self.inner
2071    }
2072}
2073///Builder for [`BufferMemoryBarrier`] with lifetime-tied pNext safety.
2074pub struct BufferMemoryBarrierBuilder<'a> {
2075    inner: BufferMemoryBarrier,
2076    _marker: core::marker::PhantomData<&'a ()>,
2077}
2078impl BufferMemoryBarrier {
2079    /// Start building this struct; `s_type` is already set to the correct variant.
2080    #[inline]
2081    pub fn builder<'a>() -> BufferMemoryBarrierBuilder<'a> {
2082        BufferMemoryBarrierBuilder {
2083            inner: BufferMemoryBarrier {
2084                s_type: StructureType::from_raw(44i32),
2085                ..Default::default()
2086            },
2087            _marker: core::marker::PhantomData,
2088        }
2089    }
2090}
2091impl<'a> BufferMemoryBarrierBuilder<'a> {
2092    #[inline]
2093    pub fn src_access_mask(mut self, value: AccessFlags) -> Self {
2094        self.inner.src_access_mask = value;
2095        self
2096    }
2097    #[inline]
2098    pub fn dst_access_mask(mut self, value: AccessFlags) -> Self {
2099        self.inner.dst_access_mask = value;
2100        self
2101    }
2102    #[inline]
2103    pub fn src_queue_family_index(mut self, value: u32) -> Self {
2104        self.inner.src_queue_family_index = value;
2105        self
2106    }
2107    #[inline]
2108    pub fn dst_queue_family_index(mut self, value: u32) -> Self {
2109        self.inner.dst_queue_family_index = value;
2110        self
2111    }
2112    #[inline]
2113    pub fn buffer(mut self, value: Buffer) -> Self {
2114        self.inner.buffer = value;
2115        self
2116    }
2117    #[inline]
2118    pub fn offset(mut self, value: u64) -> Self {
2119        self.inner.offset = value;
2120        self
2121    }
2122    #[inline]
2123    pub fn size(mut self, value: u64) -> Self {
2124        self.inner.size = value;
2125        self
2126    }
2127    ///Prepend a struct to the pNext chain. See [`BufferMemoryBarrier`]'s **Extended By** section for valid types.
2128    #[inline]
2129    pub fn push_next<T: ExtendsBufferMemoryBarrier>(mut self, next: &'a mut T) -> Self {
2130        unsafe {
2131            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
2132            (*next_ptr).p_next = self.inner.p_next as *mut _;
2133            self.inner.p_next = <*mut BaseOutStructure>::cast::<
2134                core::ffi::c_void,
2135            >(next_ptr) as *const _;
2136        }
2137        self
2138    }
2139}
2140impl<'a> core::ops::Deref for BufferMemoryBarrierBuilder<'a> {
2141    type Target = BufferMemoryBarrier;
2142    #[inline]
2143    fn deref(&self) -> &Self::Target {
2144        &self.inner
2145    }
2146}
2147impl<'a> core::ops::DerefMut for BufferMemoryBarrierBuilder<'a> {
2148    #[inline]
2149    fn deref_mut(&mut self) -> &mut Self::Target {
2150        &mut self.inner
2151    }
2152}
2153///Builder for [`ImageMemoryBarrier`] with lifetime-tied pNext safety.
2154pub struct ImageMemoryBarrierBuilder<'a> {
2155    inner: ImageMemoryBarrier,
2156    _marker: core::marker::PhantomData<&'a ()>,
2157}
2158impl ImageMemoryBarrier {
2159    /// Start building this struct; `s_type` is already set to the correct variant.
2160    #[inline]
2161    pub fn builder<'a>() -> ImageMemoryBarrierBuilder<'a> {
2162        ImageMemoryBarrierBuilder {
2163            inner: ImageMemoryBarrier {
2164                s_type: StructureType::from_raw(45i32),
2165                ..Default::default()
2166            },
2167            _marker: core::marker::PhantomData,
2168        }
2169    }
2170}
2171impl<'a> ImageMemoryBarrierBuilder<'a> {
2172    #[inline]
2173    pub fn src_access_mask(mut self, value: AccessFlags) -> Self {
2174        self.inner.src_access_mask = value;
2175        self
2176    }
2177    #[inline]
2178    pub fn dst_access_mask(mut self, value: AccessFlags) -> Self {
2179        self.inner.dst_access_mask = value;
2180        self
2181    }
2182    #[inline]
2183    pub fn old_layout(mut self, value: ImageLayout) -> Self {
2184        self.inner.old_layout = value;
2185        self
2186    }
2187    #[inline]
2188    pub fn new_layout(mut self, value: ImageLayout) -> Self {
2189        self.inner.new_layout = value;
2190        self
2191    }
2192    #[inline]
2193    pub fn src_queue_family_index(mut self, value: u32) -> Self {
2194        self.inner.src_queue_family_index = value;
2195        self
2196    }
2197    #[inline]
2198    pub fn dst_queue_family_index(mut self, value: u32) -> Self {
2199        self.inner.dst_queue_family_index = value;
2200        self
2201    }
2202    #[inline]
2203    pub fn image(mut self, value: Image) -> Self {
2204        self.inner.image = value;
2205        self
2206    }
2207    #[inline]
2208    pub fn subresource_range(mut self, value: ImageSubresourceRange) -> Self {
2209        self.inner.subresource_range = value;
2210        self
2211    }
2212    ///Prepend a struct to the pNext chain. See [`ImageMemoryBarrier`]'s **Extended By** section for valid types.
2213    #[inline]
2214    pub fn push_next<T: ExtendsImageMemoryBarrier>(mut self, next: &'a mut T) -> Self {
2215        unsafe {
2216            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
2217            (*next_ptr).p_next = self.inner.p_next as *mut _;
2218            self.inner.p_next = <*mut BaseOutStructure>::cast::<
2219                core::ffi::c_void,
2220            >(next_ptr) as *const _;
2221        }
2222        self
2223    }
2224}
2225impl<'a> core::ops::Deref for ImageMemoryBarrierBuilder<'a> {
2226    type Target = ImageMemoryBarrier;
2227    #[inline]
2228    fn deref(&self) -> &Self::Target {
2229        &self.inner
2230    }
2231}
2232impl<'a> core::ops::DerefMut for ImageMemoryBarrierBuilder<'a> {
2233    #[inline]
2234    fn deref_mut(&mut self) -> &mut Self::Target {
2235        &mut self.inner
2236    }
2237}
2238///Builder for [`ImageCreateInfo`] with lifetime-tied pNext safety.
2239pub struct ImageCreateInfoBuilder<'a> {
2240    inner: ImageCreateInfo,
2241    _marker: core::marker::PhantomData<&'a ()>,
2242}
2243impl ImageCreateInfo {
2244    /// Start building this struct; `s_type` is already set to the correct variant.
2245    #[inline]
2246    pub fn builder<'a>() -> ImageCreateInfoBuilder<'a> {
2247        ImageCreateInfoBuilder {
2248            inner: ImageCreateInfo {
2249                s_type: StructureType::from_raw(14i32),
2250                ..Default::default()
2251            },
2252            _marker: core::marker::PhantomData,
2253        }
2254    }
2255}
2256impl<'a> ImageCreateInfoBuilder<'a> {
2257    #[inline]
2258    pub fn flags(mut self, value: ImageCreateFlags) -> Self {
2259        self.inner.flags = value;
2260        self
2261    }
2262    #[inline]
2263    pub fn image_type(mut self, value: ImageType) -> Self {
2264        self.inner.image_type = value;
2265        self
2266    }
2267    #[inline]
2268    pub fn format(mut self, value: Format) -> Self {
2269        self.inner.format = value;
2270        self
2271    }
2272    #[inline]
2273    pub fn extent(mut self, value: Extent3D) -> Self {
2274        self.inner.extent = value;
2275        self
2276    }
2277    #[inline]
2278    pub fn mip_levels(mut self, value: u32) -> Self {
2279        self.inner.mip_levels = value;
2280        self
2281    }
2282    #[inline]
2283    pub fn array_layers(mut self, value: u32) -> Self {
2284        self.inner.array_layers = value;
2285        self
2286    }
2287    #[inline]
2288    pub fn samples(mut self, value: SampleCountFlagBits) -> Self {
2289        self.inner.samples = value;
2290        self
2291    }
2292    #[inline]
2293    pub fn tiling(mut self, value: ImageTiling) -> Self {
2294        self.inner.tiling = value;
2295        self
2296    }
2297    #[inline]
2298    pub fn usage(mut self, value: ImageUsageFlags) -> Self {
2299        self.inner.usage = value;
2300        self
2301    }
2302    #[inline]
2303    pub fn sharing_mode(mut self, value: SharingMode) -> Self {
2304        self.inner.sharing_mode = value;
2305        self
2306    }
2307    #[inline]
2308    pub fn queue_family_indices(mut self, slice: &'a [u32]) -> Self {
2309        self.inner.queue_family_index_count = slice.len() as u32;
2310        self.inner.p_queue_family_indices = slice.as_ptr();
2311        self
2312    }
2313    #[inline]
2314    pub fn initial_layout(mut self, value: ImageLayout) -> Self {
2315        self.inner.initial_layout = value;
2316        self
2317    }
2318    ///Prepend a struct to the pNext chain. See [`ImageCreateInfo`]'s **Extended By** section for valid types.
2319    #[inline]
2320    pub fn push_next<T: ExtendsImageCreateInfo>(mut self, next: &'a mut T) -> Self {
2321        unsafe {
2322            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
2323            (*next_ptr).p_next = self.inner.p_next as *mut _;
2324            self.inner.p_next = <*mut BaseOutStructure>::cast::<
2325                core::ffi::c_void,
2326            >(next_ptr) as *const _;
2327        }
2328        self
2329    }
2330}
2331impl<'a> core::ops::Deref for ImageCreateInfoBuilder<'a> {
2332    type Target = ImageCreateInfo;
2333    #[inline]
2334    fn deref(&self) -> &Self::Target {
2335        &self.inner
2336    }
2337}
2338impl<'a> core::ops::DerefMut for ImageCreateInfoBuilder<'a> {
2339    #[inline]
2340    fn deref_mut(&mut self) -> &mut Self::Target {
2341        &mut self.inner
2342    }
2343}
2344///Builder for [`SubresourceLayout`].
2345pub struct SubresourceLayoutBuilder {
2346    inner: SubresourceLayout,
2347}
2348impl SubresourceLayout {
2349    /// Start building this struct.
2350    #[inline]
2351    pub fn builder() -> SubresourceLayoutBuilder {
2352        SubresourceLayoutBuilder {
2353            inner: SubresourceLayout {
2354                ..Default::default()
2355            },
2356        }
2357    }
2358}
2359impl SubresourceLayoutBuilder {
2360    #[inline]
2361    pub fn offset(mut self, value: u64) -> Self {
2362        self.inner.offset = value;
2363        self
2364    }
2365    #[inline]
2366    pub fn size(mut self, value: u64) -> Self {
2367        self.inner.size = value;
2368        self
2369    }
2370    #[inline]
2371    pub fn row_pitch(mut self, value: u64) -> Self {
2372        self.inner.row_pitch = value;
2373        self
2374    }
2375    #[inline]
2376    pub fn array_pitch(mut self, value: u64) -> Self {
2377        self.inner.array_pitch = value;
2378        self
2379    }
2380    #[inline]
2381    pub fn depth_pitch(mut self, value: u64) -> Self {
2382        self.inner.depth_pitch = value;
2383        self
2384    }
2385}
2386impl core::ops::Deref for SubresourceLayoutBuilder {
2387    type Target = SubresourceLayout;
2388    #[inline]
2389    fn deref(&self) -> &Self::Target {
2390        &self.inner
2391    }
2392}
2393impl core::ops::DerefMut for SubresourceLayoutBuilder {
2394    #[inline]
2395    fn deref_mut(&mut self) -> &mut Self::Target {
2396        &mut self.inner
2397    }
2398}
2399///Builder for [`ImageViewCreateInfo`] with lifetime-tied pNext safety.
2400pub struct ImageViewCreateInfoBuilder<'a> {
2401    inner: ImageViewCreateInfo,
2402    _marker: core::marker::PhantomData<&'a ()>,
2403}
2404impl ImageViewCreateInfo {
2405    /// Start building this struct; `s_type` is already set to the correct variant.
2406    #[inline]
2407    pub fn builder<'a>() -> ImageViewCreateInfoBuilder<'a> {
2408        ImageViewCreateInfoBuilder {
2409            inner: ImageViewCreateInfo {
2410                s_type: StructureType::from_raw(15i32),
2411                ..Default::default()
2412            },
2413            _marker: core::marker::PhantomData,
2414        }
2415    }
2416}
2417impl<'a> ImageViewCreateInfoBuilder<'a> {
2418    #[inline]
2419    pub fn flags(mut self, value: ImageViewCreateFlags) -> Self {
2420        self.inner.flags = value;
2421        self
2422    }
2423    #[inline]
2424    pub fn image(mut self, value: Image) -> Self {
2425        self.inner.image = value;
2426        self
2427    }
2428    #[inline]
2429    pub fn view_type(mut self, value: ImageViewType) -> Self {
2430        self.inner.view_type = value;
2431        self
2432    }
2433    #[inline]
2434    pub fn format(mut self, value: Format) -> Self {
2435        self.inner.format = value;
2436        self
2437    }
2438    #[inline]
2439    pub fn components(mut self, value: ComponentMapping) -> Self {
2440        self.inner.components = value;
2441        self
2442    }
2443    #[inline]
2444    pub fn subresource_range(mut self, value: ImageSubresourceRange) -> Self {
2445        self.inner.subresource_range = value;
2446        self
2447    }
2448    ///Prepend a struct to the pNext chain. See [`ImageViewCreateInfo`]'s **Extended By** section for valid types.
2449    #[inline]
2450    pub fn push_next<T: ExtendsImageViewCreateInfo>(mut self, next: &'a mut T) -> Self {
2451        unsafe {
2452            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
2453            (*next_ptr).p_next = self.inner.p_next as *mut _;
2454            self.inner.p_next = <*mut BaseOutStructure>::cast::<
2455                core::ffi::c_void,
2456            >(next_ptr) as *const _;
2457        }
2458        self
2459    }
2460}
2461impl<'a> core::ops::Deref for ImageViewCreateInfoBuilder<'a> {
2462    type Target = ImageViewCreateInfo;
2463    #[inline]
2464    fn deref(&self) -> &Self::Target {
2465        &self.inner
2466    }
2467}
2468impl<'a> core::ops::DerefMut for ImageViewCreateInfoBuilder<'a> {
2469    #[inline]
2470    fn deref_mut(&mut self) -> &mut Self::Target {
2471        &mut self.inner
2472    }
2473}
2474///Builder for [`BufferCopy`].
2475pub struct BufferCopyBuilder {
2476    inner: BufferCopy,
2477}
2478impl BufferCopy {
2479    /// Start building this struct.
2480    #[inline]
2481    pub fn builder() -> BufferCopyBuilder {
2482        BufferCopyBuilder {
2483            inner: BufferCopy { ..Default::default() },
2484        }
2485    }
2486}
2487impl BufferCopyBuilder {
2488    #[inline]
2489    pub fn src_offset(mut self, value: u64) -> Self {
2490        self.inner.src_offset = value;
2491        self
2492    }
2493    #[inline]
2494    pub fn dst_offset(mut self, value: u64) -> Self {
2495        self.inner.dst_offset = value;
2496        self
2497    }
2498    #[inline]
2499    pub fn size(mut self, value: u64) -> Self {
2500        self.inner.size = value;
2501        self
2502    }
2503}
2504impl core::ops::Deref for BufferCopyBuilder {
2505    type Target = BufferCopy;
2506    #[inline]
2507    fn deref(&self) -> &Self::Target {
2508        &self.inner
2509    }
2510}
2511impl core::ops::DerefMut for BufferCopyBuilder {
2512    #[inline]
2513    fn deref_mut(&mut self) -> &mut Self::Target {
2514        &mut self.inner
2515    }
2516}
2517///Builder for [`SparseMemoryBind`].
2518pub struct SparseMemoryBindBuilder {
2519    inner: SparseMemoryBind,
2520}
2521impl SparseMemoryBind {
2522    /// Start building this struct.
2523    #[inline]
2524    pub fn builder() -> SparseMemoryBindBuilder {
2525        SparseMemoryBindBuilder {
2526            inner: SparseMemoryBind {
2527                ..Default::default()
2528            },
2529        }
2530    }
2531}
2532impl SparseMemoryBindBuilder {
2533    #[inline]
2534    pub fn resource_offset(mut self, value: u64) -> Self {
2535        self.inner.resource_offset = value;
2536        self
2537    }
2538    #[inline]
2539    pub fn size(mut self, value: u64) -> Self {
2540        self.inner.size = value;
2541        self
2542    }
2543    #[inline]
2544    pub fn memory(mut self, value: DeviceMemory) -> Self {
2545        self.inner.memory = value;
2546        self
2547    }
2548    #[inline]
2549    pub fn memory_offset(mut self, value: u64) -> Self {
2550        self.inner.memory_offset = value;
2551        self
2552    }
2553    #[inline]
2554    pub fn flags(mut self, value: SparseMemoryBindFlags) -> Self {
2555        self.inner.flags = value;
2556        self
2557    }
2558}
2559impl core::ops::Deref for SparseMemoryBindBuilder {
2560    type Target = SparseMemoryBind;
2561    #[inline]
2562    fn deref(&self) -> &Self::Target {
2563        &self.inner
2564    }
2565}
2566impl core::ops::DerefMut for SparseMemoryBindBuilder {
2567    #[inline]
2568    fn deref_mut(&mut self) -> &mut Self::Target {
2569        &mut self.inner
2570    }
2571}
2572///Builder for [`SparseImageMemoryBind`].
2573pub struct SparseImageMemoryBindBuilder {
2574    inner: SparseImageMemoryBind,
2575}
2576impl SparseImageMemoryBind {
2577    /// Start building this struct.
2578    #[inline]
2579    pub fn builder() -> SparseImageMemoryBindBuilder {
2580        SparseImageMemoryBindBuilder {
2581            inner: SparseImageMemoryBind {
2582                ..Default::default()
2583            },
2584        }
2585    }
2586}
2587impl SparseImageMemoryBindBuilder {
2588    #[inline]
2589    pub fn subresource(mut self, value: ImageSubresource) -> Self {
2590        self.inner.subresource = value;
2591        self
2592    }
2593    #[inline]
2594    pub fn offset(mut self, value: Offset3D) -> Self {
2595        self.inner.offset = value;
2596        self
2597    }
2598    #[inline]
2599    pub fn extent(mut self, value: Extent3D) -> Self {
2600        self.inner.extent = value;
2601        self
2602    }
2603    #[inline]
2604    pub fn memory(mut self, value: DeviceMemory) -> Self {
2605        self.inner.memory = value;
2606        self
2607    }
2608    #[inline]
2609    pub fn memory_offset(mut self, value: u64) -> Self {
2610        self.inner.memory_offset = value;
2611        self
2612    }
2613    #[inline]
2614    pub fn flags(mut self, value: SparseMemoryBindFlags) -> Self {
2615        self.inner.flags = value;
2616        self
2617    }
2618}
2619impl core::ops::Deref for SparseImageMemoryBindBuilder {
2620    type Target = SparseImageMemoryBind;
2621    #[inline]
2622    fn deref(&self) -> &Self::Target {
2623        &self.inner
2624    }
2625}
2626impl core::ops::DerefMut for SparseImageMemoryBindBuilder {
2627    #[inline]
2628    fn deref_mut(&mut self) -> &mut Self::Target {
2629        &mut self.inner
2630    }
2631}
2632///Builder for [`SparseBufferMemoryBindInfo`].
2633pub struct SparseBufferMemoryBindInfoBuilder<'a> {
2634    inner: SparseBufferMemoryBindInfo,
2635    _marker: core::marker::PhantomData<&'a ()>,
2636}
2637impl SparseBufferMemoryBindInfo {
2638    /// Start building this struct.
2639    #[inline]
2640    pub fn builder<'a>() -> SparseBufferMemoryBindInfoBuilder<'a> {
2641        SparseBufferMemoryBindInfoBuilder {
2642            inner: SparseBufferMemoryBindInfo {
2643                ..Default::default()
2644            },
2645            _marker: core::marker::PhantomData,
2646        }
2647    }
2648}
2649impl<'a> SparseBufferMemoryBindInfoBuilder<'a> {
2650    #[inline]
2651    pub fn buffer(mut self, value: Buffer) -> Self {
2652        self.inner.buffer = value;
2653        self
2654    }
2655    #[inline]
2656    pub fn binds(mut self, slice: &'a [SparseMemoryBind]) -> Self {
2657        self.inner.bind_count = slice.len() as u32;
2658        self.inner.p_binds = slice.as_ptr();
2659        self
2660    }
2661}
2662impl<'a> core::ops::Deref for SparseBufferMemoryBindInfoBuilder<'a> {
2663    type Target = SparseBufferMemoryBindInfo;
2664    #[inline]
2665    fn deref(&self) -> &Self::Target {
2666        &self.inner
2667    }
2668}
2669impl<'a> core::ops::DerefMut for SparseBufferMemoryBindInfoBuilder<'a> {
2670    #[inline]
2671    fn deref_mut(&mut self) -> &mut Self::Target {
2672        &mut self.inner
2673    }
2674}
2675///Builder for [`SparseImageOpaqueMemoryBindInfo`].
2676pub struct SparseImageOpaqueMemoryBindInfoBuilder<'a> {
2677    inner: SparseImageOpaqueMemoryBindInfo,
2678    _marker: core::marker::PhantomData<&'a ()>,
2679}
2680impl SparseImageOpaqueMemoryBindInfo {
2681    /// Start building this struct.
2682    #[inline]
2683    pub fn builder<'a>() -> SparseImageOpaqueMemoryBindInfoBuilder<'a> {
2684        SparseImageOpaqueMemoryBindInfoBuilder {
2685            inner: SparseImageOpaqueMemoryBindInfo {
2686                ..Default::default()
2687            },
2688            _marker: core::marker::PhantomData,
2689        }
2690    }
2691}
2692impl<'a> SparseImageOpaqueMemoryBindInfoBuilder<'a> {
2693    #[inline]
2694    pub fn image(mut self, value: Image) -> Self {
2695        self.inner.image = value;
2696        self
2697    }
2698    #[inline]
2699    pub fn binds(mut self, slice: &'a [SparseMemoryBind]) -> Self {
2700        self.inner.bind_count = slice.len() as u32;
2701        self.inner.p_binds = slice.as_ptr();
2702        self
2703    }
2704}
2705impl<'a> core::ops::Deref for SparseImageOpaqueMemoryBindInfoBuilder<'a> {
2706    type Target = SparseImageOpaqueMemoryBindInfo;
2707    #[inline]
2708    fn deref(&self) -> &Self::Target {
2709        &self.inner
2710    }
2711}
2712impl<'a> core::ops::DerefMut for SparseImageOpaqueMemoryBindInfoBuilder<'a> {
2713    #[inline]
2714    fn deref_mut(&mut self) -> &mut Self::Target {
2715        &mut self.inner
2716    }
2717}
2718///Builder for [`SparseImageMemoryBindInfo`].
2719pub struct SparseImageMemoryBindInfoBuilder<'a> {
2720    inner: SparseImageMemoryBindInfo,
2721    _marker: core::marker::PhantomData<&'a ()>,
2722}
2723impl SparseImageMemoryBindInfo {
2724    /// Start building this struct.
2725    #[inline]
2726    pub fn builder<'a>() -> SparseImageMemoryBindInfoBuilder<'a> {
2727        SparseImageMemoryBindInfoBuilder {
2728            inner: SparseImageMemoryBindInfo {
2729                ..Default::default()
2730            },
2731            _marker: core::marker::PhantomData,
2732        }
2733    }
2734}
2735impl<'a> SparseImageMemoryBindInfoBuilder<'a> {
2736    #[inline]
2737    pub fn image(mut self, value: Image) -> Self {
2738        self.inner.image = value;
2739        self
2740    }
2741    #[inline]
2742    pub fn binds(mut self, slice: &'a [SparseImageMemoryBind]) -> Self {
2743        self.inner.bind_count = slice.len() as u32;
2744        self.inner.p_binds = slice.as_ptr();
2745        self
2746    }
2747}
2748impl<'a> core::ops::Deref for SparseImageMemoryBindInfoBuilder<'a> {
2749    type Target = SparseImageMemoryBindInfo;
2750    #[inline]
2751    fn deref(&self) -> &Self::Target {
2752        &self.inner
2753    }
2754}
2755impl<'a> core::ops::DerefMut for SparseImageMemoryBindInfoBuilder<'a> {
2756    #[inline]
2757    fn deref_mut(&mut self) -> &mut Self::Target {
2758        &mut self.inner
2759    }
2760}
2761///Builder for [`BindSparseInfo`] with lifetime-tied pNext safety.
2762pub struct BindSparseInfoBuilder<'a> {
2763    inner: BindSparseInfo,
2764    _marker: core::marker::PhantomData<&'a ()>,
2765}
2766impl BindSparseInfo {
2767    /// Start building this struct; `s_type` is already set to the correct variant.
2768    #[inline]
2769    pub fn builder<'a>() -> BindSparseInfoBuilder<'a> {
2770        BindSparseInfoBuilder {
2771            inner: BindSparseInfo {
2772                s_type: StructureType::from_raw(7i32),
2773                ..Default::default()
2774            },
2775            _marker: core::marker::PhantomData,
2776        }
2777    }
2778}
2779impl<'a> BindSparseInfoBuilder<'a> {
2780    #[inline]
2781    pub fn wait_semaphores(mut self, slice: &'a [Semaphore]) -> Self {
2782        self.inner.wait_semaphore_count = slice.len() as u32;
2783        self.inner.p_wait_semaphores = slice.as_ptr();
2784        self
2785    }
2786    #[inline]
2787    pub fn buffer_binds(mut self, slice: &'a [SparseBufferMemoryBindInfo]) -> Self {
2788        self.inner.buffer_bind_count = slice.len() as u32;
2789        self.inner.p_buffer_binds = slice.as_ptr();
2790        self
2791    }
2792    #[inline]
2793    pub fn image_opaque_binds(
2794        mut self,
2795        slice: &'a [SparseImageOpaqueMemoryBindInfo],
2796    ) -> Self {
2797        self.inner.image_opaque_bind_count = slice.len() as u32;
2798        self.inner.p_image_opaque_binds = slice.as_ptr();
2799        self
2800    }
2801    #[inline]
2802    pub fn image_binds(mut self, slice: &'a [SparseImageMemoryBindInfo]) -> Self {
2803        self.inner.image_bind_count = slice.len() as u32;
2804        self.inner.p_image_binds = slice.as_ptr();
2805        self
2806    }
2807    #[inline]
2808    pub fn signal_semaphores(mut self, slice: &'a [Semaphore]) -> Self {
2809        self.inner.signal_semaphore_count = slice.len() as u32;
2810        self.inner.p_signal_semaphores = slice.as_ptr();
2811        self
2812    }
2813    ///Prepend a struct to the pNext chain. See [`BindSparseInfo`]'s **Extended By** section for valid types.
2814    #[inline]
2815    pub fn push_next<T: ExtendsBindSparseInfo>(mut self, next: &'a mut T) -> Self {
2816        unsafe {
2817            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
2818            (*next_ptr).p_next = self.inner.p_next as *mut _;
2819            self.inner.p_next = <*mut BaseOutStructure>::cast::<
2820                core::ffi::c_void,
2821            >(next_ptr) as *const _;
2822        }
2823        self
2824    }
2825}
2826impl<'a> core::ops::Deref for BindSparseInfoBuilder<'a> {
2827    type Target = BindSparseInfo;
2828    #[inline]
2829    fn deref(&self) -> &Self::Target {
2830        &self.inner
2831    }
2832}
2833impl<'a> core::ops::DerefMut for BindSparseInfoBuilder<'a> {
2834    #[inline]
2835    fn deref_mut(&mut self) -> &mut Self::Target {
2836        &mut self.inner
2837    }
2838}
2839///Builder for [`ImageCopy`].
2840pub struct ImageCopyBuilder {
2841    inner: ImageCopy,
2842}
2843impl ImageCopy {
2844    /// Start building this struct.
2845    #[inline]
2846    pub fn builder() -> ImageCopyBuilder {
2847        ImageCopyBuilder {
2848            inner: ImageCopy { ..Default::default() },
2849        }
2850    }
2851}
2852impl ImageCopyBuilder {
2853    #[inline]
2854    pub fn src_subresource(mut self, value: ImageSubresourceLayers) -> Self {
2855        self.inner.src_subresource = value;
2856        self
2857    }
2858    #[inline]
2859    pub fn src_offset(mut self, value: Offset3D) -> Self {
2860        self.inner.src_offset = value;
2861        self
2862    }
2863    #[inline]
2864    pub fn dst_subresource(mut self, value: ImageSubresourceLayers) -> Self {
2865        self.inner.dst_subresource = value;
2866        self
2867    }
2868    #[inline]
2869    pub fn dst_offset(mut self, value: Offset3D) -> Self {
2870        self.inner.dst_offset = value;
2871        self
2872    }
2873    #[inline]
2874    pub fn extent(mut self, value: Extent3D) -> Self {
2875        self.inner.extent = value;
2876        self
2877    }
2878}
2879impl core::ops::Deref for ImageCopyBuilder {
2880    type Target = ImageCopy;
2881    #[inline]
2882    fn deref(&self) -> &Self::Target {
2883        &self.inner
2884    }
2885}
2886impl core::ops::DerefMut for ImageCopyBuilder {
2887    #[inline]
2888    fn deref_mut(&mut self) -> &mut Self::Target {
2889        &mut self.inner
2890    }
2891}
2892///Builder for [`ImageBlit`].
2893pub struct ImageBlitBuilder {
2894    inner: ImageBlit,
2895}
2896impl ImageBlit {
2897    /// Start building this struct.
2898    #[inline]
2899    pub fn builder() -> ImageBlitBuilder {
2900        ImageBlitBuilder {
2901            inner: ImageBlit { ..Default::default() },
2902        }
2903    }
2904}
2905impl ImageBlitBuilder {
2906    #[inline]
2907    pub fn src_subresource(mut self, value: ImageSubresourceLayers) -> Self {
2908        self.inner.src_subresource = value;
2909        self
2910    }
2911    #[inline]
2912    pub fn src_offsets(mut self, value: [Offset3D; 2usize]) -> Self {
2913        self.inner.src_offsets = value;
2914        self
2915    }
2916    #[inline]
2917    pub fn dst_subresource(mut self, value: ImageSubresourceLayers) -> Self {
2918        self.inner.dst_subresource = value;
2919        self
2920    }
2921    #[inline]
2922    pub fn dst_offsets(mut self, value: [Offset3D; 2usize]) -> Self {
2923        self.inner.dst_offsets = value;
2924        self
2925    }
2926}
2927impl core::ops::Deref for ImageBlitBuilder {
2928    type Target = ImageBlit;
2929    #[inline]
2930    fn deref(&self) -> &Self::Target {
2931        &self.inner
2932    }
2933}
2934impl core::ops::DerefMut for ImageBlitBuilder {
2935    #[inline]
2936    fn deref_mut(&mut self) -> &mut Self::Target {
2937        &mut self.inner
2938    }
2939}
2940///Builder for [`BufferImageCopy`].
2941pub struct BufferImageCopyBuilder {
2942    inner: BufferImageCopy,
2943}
2944impl BufferImageCopy {
2945    /// Start building this struct.
2946    #[inline]
2947    pub fn builder() -> BufferImageCopyBuilder {
2948        BufferImageCopyBuilder {
2949            inner: BufferImageCopy {
2950                ..Default::default()
2951            },
2952        }
2953    }
2954}
2955impl BufferImageCopyBuilder {
2956    #[inline]
2957    pub fn buffer_offset(mut self, value: u64) -> Self {
2958        self.inner.buffer_offset = value;
2959        self
2960    }
2961    #[inline]
2962    pub fn buffer_row_length(mut self, value: u32) -> Self {
2963        self.inner.buffer_row_length = value;
2964        self
2965    }
2966    #[inline]
2967    pub fn buffer_image_height(mut self, value: u32) -> Self {
2968        self.inner.buffer_image_height = value;
2969        self
2970    }
2971    #[inline]
2972    pub fn image_subresource(mut self, value: ImageSubresourceLayers) -> Self {
2973        self.inner.image_subresource = value;
2974        self
2975    }
2976    #[inline]
2977    pub fn image_offset(mut self, value: Offset3D) -> Self {
2978        self.inner.image_offset = value;
2979        self
2980    }
2981    #[inline]
2982    pub fn image_extent(mut self, value: Extent3D) -> Self {
2983        self.inner.image_extent = value;
2984        self
2985    }
2986}
2987impl core::ops::Deref for BufferImageCopyBuilder {
2988    type Target = BufferImageCopy;
2989    #[inline]
2990    fn deref(&self) -> &Self::Target {
2991        &self.inner
2992    }
2993}
2994impl core::ops::DerefMut for BufferImageCopyBuilder {
2995    #[inline]
2996    fn deref_mut(&mut self) -> &mut Self::Target {
2997        &mut self.inner
2998    }
2999}
3000///Builder for [`StridedDeviceAddressRangeKHR`].
3001pub struct StridedDeviceAddressRangeKHRBuilder {
3002    inner: StridedDeviceAddressRangeKHR,
3003}
3004impl StridedDeviceAddressRangeKHR {
3005    /// Start building this struct.
3006    #[inline]
3007    pub fn builder() -> StridedDeviceAddressRangeKHRBuilder {
3008        StridedDeviceAddressRangeKHRBuilder {
3009            inner: StridedDeviceAddressRangeKHR {
3010                ..Default::default()
3011            },
3012        }
3013    }
3014}
3015impl StridedDeviceAddressRangeKHRBuilder {
3016    #[inline]
3017    pub fn address(mut self, value: u64) -> Self {
3018        self.inner.address = value;
3019        self
3020    }
3021    #[inline]
3022    pub fn size(mut self, value: u64) -> Self {
3023        self.inner.size = value;
3024        self
3025    }
3026    #[inline]
3027    pub fn stride(mut self, value: u64) -> Self {
3028        self.inner.stride = value;
3029        self
3030    }
3031}
3032impl core::ops::Deref for StridedDeviceAddressRangeKHRBuilder {
3033    type Target = StridedDeviceAddressRangeKHR;
3034    #[inline]
3035    fn deref(&self) -> &Self::Target {
3036        &self.inner
3037    }
3038}
3039impl core::ops::DerefMut for StridedDeviceAddressRangeKHRBuilder {
3040    #[inline]
3041    fn deref_mut(&mut self) -> &mut Self::Target {
3042        &mut self.inner
3043    }
3044}
3045///Builder for [`CopyMemoryIndirectCommandKHR`].
3046pub struct CopyMemoryIndirectCommandKHRBuilder {
3047    inner: CopyMemoryIndirectCommandKHR,
3048}
3049impl CopyMemoryIndirectCommandKHR {
3050    /// Start building this struct.
3051    #[inline]
3052    pub fn builder() -> CopyMemoryIndirectCommandKHRBuilder {
3053        CopyMemoryIndirectCommandKHRBuilder {
3054            inner: CopyMemoryIndirectCommandKHR {
3055                ..Default::default()
3056            },
3057        }
3058    }
3059}
3060impl CopyMemoryIndirectCommandKHRBuilder {
3061    #[inline]
3062    pub fn src_address(mut self, value: u64) -> Self {
3063        self.inner.src_address = value;
3064        self
3065    }
3066    #[inline]
3067    pub fn dst_address(mut self, value: u64) -> Self {
3068        self.inner.dst_address = value;
3069        self
3070    }
3071    #[inline]
3072    pub fn size(mut self, value: u64) -> Self {
3073        self.inner.size = value;
3074        self
3075    }
3076}
3077impl core::ops::Deref for CopyMemoryIndirectCommandKHRBuilder {
3078    type Target = CopyMemoryIndirectCommandKHR;
3079    #[inline]
3080    fn deref(&self) -> &Self::Target {
3081        &self.inner
3082    }
3083}
3084impl core::ops::DerefMut for CopyMemoryIndirectCommandKHRBuilder {
3085    #[inline]
3086    fn deref_mut(&mut self) -> &mut Self::Target {
3087        &mut self.inner
3088    }
3089}
3090///Builder for [`CopyMemoryIndirectInfoKHR`] with lifetime-tied pNext safety.
3091pub struct CopyMemoryIndirectInfoKHRBuilder<'a> {
3092    inner: CopyMemoryIndirectInfoKHR,
3093    _marker: core::marker::PhantomData<&'a ()>,
3094}
3095impl CopyMemoryIndirectInfoKHR {
3096    /// Start building this struct; `s_type` is already set to the correct variant.
3097    #[inline]
3098    pub fn builder<'a>() -> CopyMemoryIndirectInfoKHRBuilder<'a> {
3099        CopyMemoryIndirectInfoKHRBuilder {
3100            inner: CopyMemoryIndirectInfoKHR {
3101                s_type: StructureType::from_raw(1000549002i32),
3102                ..Default::default()
3103            },
3104            _marker: core::marker::PhantomData,
3105        }
3106    }
3107}
3108impl<'a> CopyMemoryIndirectInfoKHRBuilder<'a> {
3109    #[inline]
3110    pub fn src_copy_flags(mut self, value: AddressCopyFlagsKHR) -> Self {
3111        self.inner.src_copy_flags = value;
3112        self
3113    }
3114    #[inline]
3115    pub fn dst_copy_flags(mut self, value: AddressCopyFlagsKHR) -> Self {
3116        self.inner.dst_copy_flags = value;
3117        self
3118    }
3119    #[inline]
3120    pub fn copy_count(mut self, value: u32) -> Self {
3121        self.inner.copy_count = value;
3122        self
3123    }
3124    #[inline]
3125    pub fn copy_address_range(mut self, value: StridedDeviceAddressRangeKHR) -> Self {
3126        self.inner.copy_address_range = value;
3127        self
3128    }
3129    ///Prepend a struct to the pNext chain. See [`CopyMemoryIndirectInfoKHR`]'s **Extended By** section for valid types.
3130    #[inline]
3131    pub fn push_next<T: ExtendsCopyMemoryIndirectInfoKHR>(
3132        mut self,
3133        next: &'a mut T,
3134    ) -> Self {
3135        unsafe {
3136            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
3137            (*next_ptr).p_next = self.inner.p_next as *mut _;
3138            self.inner.p_next = <*mut BaseOutStructure>::cast::<
3139                core::ffi::c_void,
3140            >(next_ptr) as *const _;
3141        }
3142        self
3143    }
3144}
3145impl<'a> core::ops::Deref for CopyMemoryIndirectInfoKHRBuilder<'a> {
3146    type Target = CopyMemoryIndirectInfoKHR;
3147    #[inline]
3148    fn deref(&self) -> &Self::Target {
3149        &self.inner
3150    }
3151}
3152impl<'a> core::ops::DerefMut for CopyMemoryIndirectInfoKHRBuilder<'a> {
3153    #[inline]
3154    fn deref_mut(&mut self) -> &mut Self::Target {
3155        &mut self.inner
3156    }
3157}
3158///Builder for [`CopyMemoryToImageIndirectCommandKHR`].
3159pub struct CopyMemoryToImageIndirectCommandKHRBuilder {
3160    inner: CopyMemoryToImageIndirectCommandKHR,
3161}
3162impl CopyMemoryToImageIndirectCommandKHR {
3163    /// Start building this struct.
3164    #[inline]
3165    pub fn builder() -> CopyMemoryToImageIndirectCommandKHRBuilder {
3166        CopyMemoryToImageIndirectCommandKHRBuilder {
3167            inner: CopyMemoryToImageIndirectCommandKHR {
3168                ..Default::default()
3169            },
3170        }
3171    }
3172}
3173impl CopyMemoryToImageIndirectCommandKHRBuilder {
3174    #[inline]
3175    pub fn src_address(mut self, value: u64) -> Self {
3176        self.inner.src_address = value;
3177        self
3178    }
3179    #[inline]
3180    pub fn buffer_row_length(mut self, value: u32) -> Self {
3181        self.inner.buffer_row_length = value;
3182        self
3183    }
3184    #[inline]
3185    pub fn buffer_image_height(mut self, value: u32) -> Self {
3186        self.inner.buffer_image_height = value;
3187        self
3188    }
3189    #[inline]
3190    pub fn image_subresource(mut self, value: ImageSubresourceLayers) -> Self {
3191        self.inner.image_subresource = value;
3192        self
3193    }
3194    #[inline]
3195    pub fn image_offset(mut self, value: Offset3D) -> Self {
3196        self.inner.image_offset = value;
3197        self
3198    }
3199    #[inline]
3200    pub fn image_extent(mut self, value: Extent3D) -> Self {
3201        self.inner.image_extent = value;
3202        self
3203    }
3204}
3205impl core::ops::Deref for CopyMemoryToImageIndirectCommandKHRBuilder {
3206    type Target = CopyMemoryToImageIndirectCommandKHR;
3207    #[inline]
3208    fn deref(&self) -> &Self::Target {
3209        &self.inner
3210    }
3211}
3212impl core::ops::DerefMut for CopyMemoryToImageIndirectCommandKHRBuilder {
3213    #[inline]
3214    fn deref_mut(&mut self) -> &mut Self::Target {
3215        &mut self.inner
3216    }
3217}
3218///Builder for [`CopyMemoryToImageIndirectInfoKHR`] with lifetime-tied pNext safety.
3219pub struct CopyMemoryToImageIndirectInfoKHRBuilder<'a> {
3220    inner: CopyMemoryToImageIndirectInfoKHR,
3221    _marker: core::marker::PhantomData<&'a ()>,
3222}
3223impl CopyMemoryToImageIndirectInfoKHR {
3224    /// Start building this struct; `s_type` is already set to the correct variant.
3225    #[inline]
3226    pub fn builder<'a>() -> CopyMemoryToImageIndirectInfoKHRBuilder<'a> {
3227        CopyMemoryToImageIndirectInfoKHRBuilder {
3228            inner: CopyMemoryToImageIndirectInfoKHR {
3229                s_type: StructureType::from_raw(1000549003i32),
3230                ..Default::default()
3231            },
3232            _marker: core::marker::PhantomData,
3233        }
3234    }
3235}
3236impl<'a> CopyMemoryToImageIndirectInfoKHRBuilder<'a> {
3237    #[inline]
3238    pub fn src_copy_flags(mut self, value: AddressCopyFlagsKHR) -> Self {
3239        self.inner.src_copy_flags = value;
3240        self
3241    }
3242    #[inline]
3243    pub fn copy_address_range(mut self, value: StridedDeviceAddressRangeKHR) -> Self {
3244        self.inner.copy_address_range = value;
3245        self
3246    }
3247    #[inline]
3248    pub fn dst_image(mut self, value: Image) -> Self {
3249        self.inner.dst_image = value;
3250        self
3251    }
3252    #[inline]
3253    pub fn dst_image_layout(mut self, value: ImageLayout) -> Self {
3254        self.inner.dst_image_layout = value;
3255        self
3256    }
3257    #[inline]
3258    pub fn image_subresources(mut self, slice: &'a [ImageSubresourceLayers]) -> Self {
3259        self.inner.copy_count = slice.len() as u32;
3260        self.inner.p_image_subresources = slice.as_ptr();
3261        self
3262    }
3263    ///Prepend a struct to the pNext chain. See [`CopyMemoryToImageIndirectInfoKHR`]'s **Extended By** section for valid types.
3264    #[inline]
3265    pub fn push_next<T: ExtendsCopyMemoryToImageIndirectInfoKHR>(
3266        mut self,
3267        next: &'a mut T,
3268    ) -> Self {
3269        unsafe {
3270            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
3271            (*next_ptr).p_next = self.inner.p_next as *mut _;
3272            self.inner.p_next = <*mut BaseOutStructure>::cast::<
3273                core::ffi::c_void,
3274            >(next_ptr) as *const _;
3275        }
3276        self
3277    }
3278}
3279impl<'a> core::ops::Deref for CopyMemoryToImageIndirectInfoKHRBuilder<'a> {
3280    type Target = CopyMemoryToImageIndirectInfoKHR;
3281    #[inline]
3282    fn deref(&self) -> &Self::Target {
3283        &self.inner
3284    }
3285}
3286impl<'a> core::ops::DerefMut for CopyMemoryToImageIndirectInfoKHRBuilder<'a> {
3287    #[inline]
3288    fn deref_mut(&mut self) -> &mut Self::Target {
3289        &mut self.inner
3290    }
3291}
3292///Builder for [`ImageResolve`].
3293pub struct ImageResolveBuilder {
3294    inner: ImageResolve,
3295}
3296impl ImageResolve {
3297    /// Start building this struct.
3298    #[inline]
3299    pub fn builder() -> ImageResolveBuilder {
3300        ImageResolveBuilder {
3301            inner: ImageResolve {
3302                ..Default::default()
3303            },
3304        }
3305    }
3306}
3307impl ImageResolveBuilder {
3308    #[inline]
3309    pub fn src_subresource(mut self, value: ImageSubresourceLayers) -> Self {
3310        self.inner.src_subresource = value;
3311        self
3312    }
3313    #[inline]
3314    pub fn src_offset(mut self, value: Offset3D) -> Self {
3315        self.inner.src_offset = value;
3316        self
3317    }
3318    #[inline]
3319    pub fn dst_subresource(mut self, value: ImageSubresourceLayers) -> Self {
3320        self.inner.dst_subresource = value;
3321        self
3322    }
3323    #[inline]
3324    pub fn dst_offset(mut self, value: Offset3D) -> Self {
3325        self.inner.dst_offset = value;
3326        self
3327    }
3328    #[inline]
3329    pub fn extent(mut self, value: Extent3D) -> Self {
3330        self.inner.extent = value;
3331        self
3332    }
3333}
3334impl core::ops::Deref for ImageResolveBuilder {
3335    type Target = ImageResolve;
3336    #[inline]
3337    fn deref(&self) -> &Self::Target {
3338        &self.inner
3339    }
3340}
3341impl core::ops::DerefMut for ImageResolveBuilder {
3342    #[inline]
3343    fn deref_mut(&mut self) -> &mut Self::Target {
3344        &mut self.inner
3345    }
3346}
3347///Builder for [`ShaderModuleCreateInfo`] with lifetime-tied pNext safety.
3348pub struct ShaderModuleCreateInfoBuilder<'a> {
3349    inner: ShaderModuleCreateInfo,
3350    _marker: core::marker::PhantomData<&'a ()>,
3351}
3352impl ShaderModuleCreateInfo {
3353    /// Start building this struct; `s_type` is already set to the correct variant.
3354    #[inline]
3355    pub fn builder<'a>() -> ShaderModuleCreateInfoBuilder<'a> {
3356        ShaderModuleCreateInfoBuilder {
3357            inner: ShaderModuleCreateInfo {
3358                s_type: StructureType::from_raw(16i32),
3359                ..Default::default()
3360            },
3361            _marker: core::marker::PhantomData,
3362        }
3363    }
3364}
3365impl<'a> ShaderModuleCreateInfoBuilder<'a> {
3366    #[inline]
3367    pub fn flags(mut self, value: ShaderModuleCreateFlags) -> Self {
3368        self.inner.flags = value;
3369        self
3370    }
3371    #[inline]
3372    pub fn code(mut self, slice: &'a [u32]) -> Self {
3373        self.inner.code_size = core::mem::size_of_val(slice);
3374        self.inner.p_code = slice.as_ptr();
3375        self
3376    }
3377    ///Prepend a struct to the pNext chain. See [`ShaderModuleCreateInfo`]'s **Extended By** section for valid types.
3378    #[inline]
3379    pub fn push_next<T: ExtendsShaderModuleCreateInfo>(
3380        mut self,
3381        next: &'a mut T,
3382    ) -> Self {
3383        unsafe {
3384            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
3385            (*next_ptr).p_next = self.inner.p_next as *mut _;
3386            self.inner.p_next = <*mut BaseOutStructure>::cast::<
3387                core::ffi::c_void,
3388            >(next_ptr) as *const _;
3389        }
3390        self
3391    }
3392}
3393impl<'a> core::ops::Deref for ShaderModuleCreateInfoBuilder<'a> {
3394    type Target = ShaderModuleCreateInfo;
3395    #[inline]
3396    fn deref(&self) -> &Self::Target {
3397        &self.inner
3398    }
3399}
3400impl<'a> core::ops::DerefMut for ShaderModuleCreateInfoBuilder<'a> {
3401    #[inline]
3402    fn deref_mut(&mut self) -> &mut Self::Target {
3403        &mut self.inner
3404    }
3405}
3406///Builder for [`DescriptorSetLayoutBinding`].
3407pub struct DescriptorSetLayoutBindingBuilder<'a> {
3408    inner: DescriptorSetLayoutBinding,
3409    _marker: core::marker::PhantomData<&'a ()>,
3410}
3411impl DescriptorSetLayoutBinding {
3412    /// Start building this struct.
3413    #[inline]
3414    pub fn builder<'a>() -> DescriptorSetLayoutBindingBuilder<'a> {
3415        DescriptorSetLayoutBindingBuilder {
3416            inner: DescriptorSetLayoutBinding {
3417                ..Default::default()
3418            },
3419            _marker: core::marker::PhantomData,
3420        }
3421    }
3422}
3423impl<'a> DescriptorSetLayoutBindingBuilder<'a> {
3424    #[inline]
3425    pub fn binding(mut self, value: u32) -> Self {
3426        self.inner.binding = value;
3427        self
3428    }
3429    #[inline]
3430    pub fn descriptor_type(mut self, value: DescriptorType) -> Self {
3431        self.inner.descriptor_type = value;
3432        self
3433    }
3434    #[inline]
3435    pub fn descriptor_count(mut self, value: u32) -> Self {
3436        self.inner.descriptor_count = value;
3437        self
3438    }
3439    #[inline]
3440    pub fn stage_flags(mut self, value: ShaderStageFlags) -> Self {
3441        self.inner.stage_flags = value;
3442        self
3443    }
3444    #[inline]
3445    pub fn immutable_samplers(mut self, slice: &'a [Sampler]) -> Self {
3446        self.inner.descriptor_count = slice.len() as u32;
3447        self.inner.p_immutable_samplers = slice.as_ptr();
3448        self
3449    }
3450}
3451impl<'a> core::ops::Deref for DescriptorSetLayoutBindingBuilder<'a> {
3452    type Target = DescriptorSetLayoutBinding;
3453    #[inline]
3454    fn deref(&self) -> &Self::Target {
3455        &self.inner
3456    }
3457}
3458impl<'a> core::ops::DerefMut for DescriptorSetLayoutBindingBuilder<'a> {
3459    #[inline]
3460    fn deref_mut(&mut self) -> &mut Self::Target {
3461        &mut self.inner
3462    }
3463}
3464///Builder for [`DescriptorSetLayoutCreateInfo`] with lifetime-tied pNext safety.
3465pub struct DescriptorSetLayoutCreateInfoBuilder<'a> {
3466    inner: DescriptorSetLayoutCreateInfo,
3467    _marker: core::marker::PhantomData<&'a ()>,
3468}
3469impl DescriptorSetLayoutCreateInfo {
3470    /// Start building this struct; `s_type` is already set to the correct variant.
3471    #[inline]
3472    pub fn builder<'a>() -> DescriptorSetLayoutCreateInfoBuilder<'a> {
3473        DescriptorSetLayoutCreateInfoBuilder {
3474            inner: DescriptorSetLayoutCreateInfo {
3475                s_type: StructureType::from_raw(32i32),
3476                ..Default::default()
3477            },
3478            _marker: core::marker::PhantomData,
3479        }
3480    }
3481}
3482impl<'a> DescriptorSetLayoutCreateInfoBuilder<'a> {
3483    #[inline]
3484    pub fn flags(mut self, value: DescriptorSetLayoutCreateFlags) -> Self {
3485        self.inner.flags = value;
3486        self
3487    }
3488    #[inline]
3489    pub fn bindings(mut self, slice: &'a [DescriptorSetLayoutBinding]) -> Self {
3490        self.inner.binding_count = slice.len() as u32;
3491        self.inner.p_bindings = slice.as_ptr();
3492        self
3493    }
3494    ///Prepend a struct to the pNext chain. See [`DescriptorSetLayoutCreateInfo`]'s **Extended By** section for valid types.
3495    #[inline]
3496    pub fn push_next<T: ExtendsDescriptorSetLayoutCreateInfo>(
3497        mut self,
3498        next: &'a mut T,
3499    ) -> Self {
3500        unsafe {
3501            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
3502            (*next_ptr).p_next = self.inner.p_next as *mut _;
3503            self.inner.p_next = <*mut BaseOutStructure>::cast::<
3504                core::ffi::c_void,
3505            >(next_ptr) as *const _;
3506        }
3507        self
3508    }
3509}
3510impl<'a> core::ops::Deref for DescriptorSetLayoutCreateInfoBuilder<'a> {
3511    type Target = DescriptorSetLayoutCreateInfo;
3512    #[inline]
3513    fn deref(&self) -> &Self::Target {
3514        &self.inner
3515    }
3516}
3517impl<'a> core::ops::DerefMut for DescriptorSetLayoutCreateInfoBuilder<'a> {
3518    #[inline]
3519    fn deref_mut(&mut self) -> &mut Self::Target {
3520        &mut self.inner
3521    }
3522}
3523///Builder for [`DescriptorPoolSize`].
3524pub struct DescriptorPoolSizeBuilder {
3525    inner: DescriptorPoolSize,
3526}
3527impl DescriptorPoolSize {
3528    /// Start building this struct.
3529    #[inline]
3530    pub fn builder() -> DescriptorPoolSizeBuilder {
3531        DescriptorPoolSizeBuilder {
3532            inner: DescriptorPoolSize {
3533                ..Default::default()
3534            },
3535        }
3536    }
3537}
3538impl DescriptorPoolSizeBuilder {
3539    #[inline]
3540    pub fn r#type(mut self, value: DescriptorType) -> Self {
3541        self.inner.r#type = value;
3542        self
3543    }
3544    #[inline]
3545    pub fn descriptor_count(mut self, value: u32) -> Self {
3546        self.inner.descriptor_count = value;
3547        self
3548    }
3549}
3550impl core::ops::Deref for DescriptorPoolSizeBuilder {
3551    type Target = DescriptorPoolSize;
3552    #[inline]
3553    fn deref(&self) -> &Self::Target {
3554        &self.inner
3555    }
3556}
3557impl core::ops::DerefMut for DescriptorPoolSizeBuilder {
3558    #[inline]
3559    fn deref_mut(&mut self) -> &mut Self::Target {
3560        &mut self.inner
3561    }
3562}
3563///Builder for [`DescriptorPoolCreateInfo`] with lifetime-tied pNext safety.
3564pub struct DescriptorPoolCreateInfoBuilder<'a> {
3565    inner: DescriptorPoolCreateInfo,
3566    _marker: core::marker::PhantomData<&'a ()>,
3567}
3568impl DescriptorPoolCreateInfo {
3569    /// Start building this struct; `s_type` is already set to the correct variant.
3570    #[inline]
3571    pub fn builder<'a>() -> DescriptorPoolCreateInfoBuilder<'a> {
3572        DescriptorPoolCreateInfoBuilder {
3573            inner: DescriptorPoolCreateInfo {
3574                s_type: StructureType::from_raw(33i32),
3575                ..Default::default()
3576            },
3577            _marker: core::marker::PhantomData,
3578        }
3579    }
3580}
3581impl<'a> DescriptorPoolCreateInfoBuilder<'a> {
3582    #[inline]
3583    pub fn flags(mut self, value: DescriptorPoolCreateFlags) -> Self {
3584        self.inner.flags = value;
3585        self
3586    }
3587    #[inline]
3588    pub fn max_sets(mut self, value: u32) -> Self {
3589        self.inner.max_sets = value;
3590        self
3591    }
3592    #[inline]
3593    pub fn pool_sizes(mut self, slice: &'a [DescriptorPoolSize]) -> Self {
3594        self.inner.pool_size_count = slice.len() as u32;
3595        self.inner.p_pool_sizes = slice.as_ptr();
3596        self
3597    }
3598    ///Prepend a struct to the pNext chain. See [`DescriptorPoolCreateInfo`]'s **Extended By** section for valid types.
3599    #[inline]
3600    pub fn push_next<T: ExtendsDescriptorPoolCreateInfo>(
3601        mut self,
3602        next: &'a mut T,
3603    ) -> Self {
3604        unsafe {
3605            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
3606            (*next_ptr).p_next = self.inner.p_next as *mut _;
3607            self.inner.p_next = <*mut BaseOutStructure>::cast::<
3608                core::ffi::c_void,
3609            >(next_ptr) as *const _;
3610        }
3611        self
3612    }
3613}
3614impl<'a> core::ops::Deref for DescriptorPoolCreateInfoBuilder<'a> {
3615    type Target = DescriptorPoolCreateInfo;
3616    #[inline]
3617    fn deref(&self) -> &Self::Target {
3618        &self.inner
3619    }
3620}
3621impl<'a> core::ops::DerefMut for DescriptorPoolCreateInfoBuilder<'a> {
3622    #[inline]
3623    fn deref_mut(&mut self) -> &mut Self::Target {
3624        &mut self.inner
3625    }
3626}
3627///Builder for [`DescriptorSetAllocateInfo`] with lifetime-tied pNext safety.
3628pub struct DescriptorSetAllocateInfoBuilder<'a> {
3629    inner: DescriptorSetAllocateInfo,
3630    _marker: core::marker::PhantomData<&'a ()>,
3631}
3632impl DescriptorSetAllocateInfo {
3633    /// Start building this struct; `s_type` is already set to the correct variant.
3634    #[inline]
3635    pub fn builder<'a>() -> DescriptorSetAllocateInfoBuilder<'a> {
3636        DescriptorSetAllocateInfoBuilder {
3637            inner: DescriptorSetAllocateInfo {
3638                s_type: StructureType::from_raw(34i32),
3639                ..Default::default()
3640            },
3641            _marker: core::marker::PhantomData,
3642        }
3643    }
3644}
3645impl<'a> DescriptorSetAllocateInfoBuilder<'a> {
3646    #[inline]
3647    pub fn descriptor_pool(mut self, value: DescriptorPool) -> Self {
3648        self.inner.descriptor_pool = value;
3649        self
3650    }
3651    #[inline]
3652    pub fn set_layouts(mut self, slice: &'a [DescriptorSetLayout]) -> Self {
3653        self.inner.descriptor_set_count = slice.len() as u32;
3654        self.inner.p_set_layouts = slice.as_ptr();
3655        self
3656    }
3657    ///Prepend a struct to the pNext chain. See [`DescriptorSetAllocateInfo`]'s **Extended By** section for valid types.
3658    #[inline]
3659    pub fn push_next<T: ExtendsDescriptorSetAllocateInfo>(
3660        mut self,
3661        next: &'a mut T,
3662    ) -> Self {
3663        unsafe {
3664            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
3665            (*next_ptr).p_next = self.inner.p_next as *mut _;
3666            self.inner.p_next = <*mut BaseOutStructure>::cast::<
3667                core::ffi::c_void,
3668            >(next_ptr) as *const _;
3669        }
3670        self
3671    }
3672}
3673impl<'a> core::ops::Deref for DescriptorSetAllocateInfoBuilder<'a> {
3674    type Target = DescriptorSetAllocateInfo;
3675    #[inline]
3676    fn deref(&self) -> &Self::Target {
3677        &self.inner
3678    }
3679}
3680impl<'a> core::ops::DerefMut for DescriptorSetAllocateInfoBuilder<'a> {
3681    #[inline]
3682    fn deref_mut(&mut self) -> &mut Self::Target {
3683        &mut self.inner
3684    }
3685}
3686///Builder for [`SpecializationMapEntry`].
3687pub struct SpecializationMapEntryBuilder {
3688    inner: SpecializationMapEntry,
3689}
3690impl SpecializationMapEntry {
3691    /// Start building this struct.
3692    #[inline]
3693    pub fn builder() -> SpecializationMapEntryBuilder {
3694        SpecializationMapEntryBuilder {
3695            inner: SpecializationMapEntry {
3696                ..Default::default()
3697            },
3698        }
3699    }
3700}
3701impl SpecializationMapEntryBuilder {
3702    #[inline]
3703    pub fn constant_id(mut self, value: u32) -> Self {
3704        self.inner.constant_id = value;
3705        self
3706    }
3707    #[inline]
3708    pub fn offset(mut self, value: u32) -> Self {
3709        self.inner.offset = value;
3710        self
3711    }
3712    #[inline]
3713    pub fn size(mut self, value: usize) -> Self {
3714        self.inner.size = value;
3715        self
3716    }
3717}
3718impl core::ops::Deref for SpecializationMapEntryBuilder {
3719    type Target = SpecializationMapEntry;
3720    #[inline]
3721    fn deref(&self) -> &Self::Target {
3722        &self.inner
3723    }
3724}
3725impl core::ops::DerefMut for SpecializationMapEntryBuilder {
3726    #[inline]
3727    fn deref_mut(&mut self) -> &mut Self::Target {
3728        &mut self.inner
3729    }
3730}
3731///Builder for [`SpecializationInfo`].
3732pub struct SpecializationInfoBuilder<'a> {
3733    inner: SpecializationInfo,
3734    _marker: core::marker::PhantomData<&'a ()>,
3735}
3736impl SpecializationInfo {
3737    /// Start building this struct.
3738    #[inline]
3739    pub fn builder<'a>() -> SpecializationInfoBuilder<'a> {
3740        SpecializationInfoBuilder {
3741            inner: SpecializationInfo {
3742                ..Default::default()
3743            },
3744            _marker: core::marker::PhantomData,
3745        }
3746    }
3747}
3748impl<'a> SpecializationInfoBuilder<'a> {
3749    #[inline]
3750    pub fn map_entries(mut self, slice: &'a [SpecializationMapEntry]) -> Self {
3751        self.inner.map_entry_count = slice.len() as u32;
3752        self.inner.p_map_entries = slice.as_ptr();
3753        self
3754    }
3755    #[inline]
3756    pub fn data(mut self, slice: &'a [core::ffi::c_void]) -> Self {
3757        self.inner.data_size = slice.len();
3758        self.inner.p_data = slice.as_ptr();
3759        self
3760    }
3761}
3762impl<'a> core::ops::Deref for SpecializationInfoBuilder<'a> {
3763    type Target = SpecializationInfo;
3764    #[inline]
3765    fn deref(&self) -> &Self::Target {
3766        &self.inner
3767    }
3768}
3769impl<'a> core::ops::DerefMut for SpecializationInfoBuilder<'a> {
3770    #[inline]
3771    fn deref_mut(&mut self) -> &mut Self::Target {
3772        &mut self.inner
3773    }
3774}
3775///Builder for [`PipelineShaderStageCreateInfo`] with lifetime-tied pNext safety.
3776pub struct PipelineShaderStageCreateInfoBuilder<'a> {
3777    inner: PipelineShaderStageCreateInfo,
3778    _marker: core::marker::PhantomData<&'a ()>,
3779}
3780impl PipelineShaderStageCreateInfo {
3781    /// Start building this struct; `s_type` is already set to the correct variant.
3782    #[inline]
3783    pub fn builder<'a>() -> PipelineShaderStageCreateInfoBuilder<'a> {
3784        PipelineShaderStageCreateInfoBuilder {
3785            inner: PipelineShaderStageCreateInfo {
3786                s_type: StructureType::from_raw(18i32),
3787                ..Default::default()
3788            },
3789            _marker: core::marker::PhantomData,
3790        }
3791    }
3792}
3793impl<'a> PipelineShaderStageCreateInfoBuilder<'a> {
3794    #[inline]
3795    pub fn flags(mut self, value: PipelineShaderStageCreateFlags) -> Self {
3796        self.inner.flags = value;
3797        self
3798    }
3799    #[inline]
3800    pub fn stage(mut self, value: ShaderStageFlagBits) -> Self {
3801        self.inner.stage = value;
3802        self
3803    }
3804    #[inline]
3805    pub fn module(mut self, value: ShaderModule) -> Self {
3806        self.inner.module = value;
3807        self
3808    }
3809    #[inline]
3810    pub fn name(mut self, value: &'a core::ffi::CStr) -> Self {
3811        self.inner.p_name = value.as_ptr();
3812        self
3813    }
3814    #[inline]
3815    pub fn specialization_info(mut self, value: &'a SpecializationInfo) -> Self {
3816        self.inner.p_specialization_info = value;
3817        self
3818    }
3819    ///Prepend a struct to the pNext chain. See [`PipelineShaderStageCreateInfo`]'s **Extended By** section for valid types.
3820    #[inline]
3821    pub fn push_next<T: ExtendsPipelineShaderStageCreateInfo>(
3822        mut self,
3823        next: &'a mut T,
3824    ) -> Self {
3825        unsafe {
3826            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
3827            (*next_ptr).p_next = self.inner.p_next as *mut _;
3828            self.inner.p_next = <*mut BaseOutStructure>::cast::<
3829                core::ffi::c_void,
3830            >(next_ptr) as *const _;
3831        }
3832        self
3833    }
3834}
3835impl<'a> core::ops::Deref for PipelineShaderStageCreateInfoBuilder<'a> {
3836    type Target = PipelineShaderStageCreateInfo;
3837    #[inline]
3838    fn deref(&self) -> &Self::Target {
3839        &self.inner
3840    }
3841}
3842impl<'a> core::ops::DerefMut for PipelineShaderStageCreateInfoBuilder<'a> {
3843    #[inline]
3844    fn deref_mut(&mut self) -> &mut Self::Target {
3845        &mut self.inner
3846    }
3847}
3848///Builder for [`ComputePipelineCreateInfo`] with lifetime-tied pNext safety.
3849pub struct ComputePipelineCreateInfoBuilder<'a> {
3850    inner: ComputePipelineCreateInfo,
3851    _marker: core::marker::PhantomData<&'a ()>,
3852}
3853impl ComputePipelineCreateInfo {
3854    /// Start building this struct; `s_type` is already set to the correct variant.
3855    #[inline]
3856    pub fn builder<'a>() -> ComputePipelineCreateInfoBuilder<'a> {
3857        ComputePipelineCreateInfoBuilder {
3858            inner: ComputePipelineCreateInfo {
3859                s_type: StructureType::from_raw(29i32),
3860                ..Default::default()
3861            },
3862            _marker: core::marker::PhantomData,
3863        }
3864    }
3865}
3866impl<'a> ComputePipelineCreateInfoBuilder<'a> {
3867    #[inline]
3868    pub fn flags(mut self, value: PipelineCreateFlags) -> Self {
3869        self.inner.flags = value;
3870        self
3871    }
3872    #[inline]
3873    pub fn stage(mut self, value: PipelineShaderStageCreateInfo) -> Self {
3874        self.inner.stage = value;
3875        self
3876    }
3877    #[inline]
3878    pub fn layout(mut self, value: PipelineLayout) -> Self {
3879        self.inner.layout = value;
3880        self
3881    }
3882    #[inline]
3883    pub fn base_pipeline_handle(mut self, value: Pipeline) -> Self {
3884        self.inner.base_pipeline_handle = value;
3885        self
3886    }
3887    #[inline]
3888    pub fn base_pipeline_index(mut self, value: i32) -> Self {
3889        self.inner.base_pipeline_index = value;
3890        self
3891    }
3892    ///Prepend a struct to the pNext chain. See [`ComputePipelineCreateInfo`]'s **Extended By** section for valid types.
3893    #[inline]
3894    pub fn push_next<T: ExtendsComputePipelineCreateInfo>(
3895        mut self,
3896        next: &'a mut T,
3897    ) -> Self {
3898        unsafe {
3899            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
3900            (*next_ptr).p_next = self.inner.p_next as *mut _;
3901            self.inner.p_next = <*mut BaseOutStructure>::cast::<
3902                core::ffi::c_void,
3903            >(next_ptr) as *const _;
3904        }
3905        self
3906    }
3907}
3908impl<'a> core::ops::Deref for ComputePipelineCreateInfoBuilder<'a> {
3909    type Target = ComputePipelineCreateInfo;
3910    #[inline]
3911    fn deref(&self) -> &Self::Target {
3912        &self.inner
3913    }
3914}
3915impl<'a> core::ops::DerefMut for ComputePipelineCreateInfoBuilder<'a> {
3916    #[inline]
3917    fn deref_mut(&mut self) -> &mut Self::Target {
3918        &mut self.inner
3919    }
3920}
3921///Builder for [`ComputePipelineIndirectBufferInfoNV`] with lifetime-tied pNext safety.
3922pub struct ComputePipelineIndirectBufferInfoNVBuilder<'a> {
3923    inner: ComputePipelineIndirectBufferInfoNV,
3924    _marker: core::marker::PhantomData<&'a ()>,
3925}
3926impl ComputePipelineIndirectBufferInfoNV {
3927    /// Start building this struct; `s_type` is already set to the correct variant.
3928    #[inline]
3929    pub fn builder<'a>() -> ComputePipelineIndirectBufferInfoNVBuilder<'a> {
3930        ComputePipelineIndirectBufferInfoNVBuilder {
3931            inner: ComputePipelineIndirectBufferInfoNV {
3932                s_type: StructureType::from_raw(1000428001i32),
3933                ..Default::default()
3934            },
3935            _marker: core::marker::PhantomData,
3936        }
3937    }
3938}
3939impl<'a> ComputePipelineIndirectBufferInfoNVBuilder<'a> {
3940    #[inline]
3941    pub fn device_address(mut self, value: u64) -> Self {
3942        self.inner.device_address = value;
3943        self
3944    }
3945    #[inline]
3946    pub fn size(mut self, value: u64) -> Self {
3947        self.inner.size = value;
3948        self
3949    }
3950    #[inline]
3951    pub fn pipeline_device_address_capture_replay(mut self, value: u64) -> Self {
3952        self.inner.pipeline_device_address_capture_replay = value;
3953        self
3954    }
3955    ///Prepend a struct to the pNext chain. See [`ComputePipelineIndirectBufferInfoNV`]'s **Extended By** section for valid types.
3956    #[inline]
3957    pub fn push_next<T: ExtendsComputePipelineIndirectBufferInfoNV>(
3958        mut self,
3959        next: &'a mut T,
3960    ) -> Self {
3961        unsafe {
3962            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
3963            (*next_ptr).p_next = self.inner.p_next as *mut _;
3964            self.inner.p_next = <*mut BaseOutStructure>::cast::<
3965                core::ffi::c_void,
3966            >(next_ptr) as *const _;
3967        }
3968        self
3969    }
3970}
3971impl<'a> core::ops::Deref for ComputePipelineIndirectBufferInfoNVBuilder<'a> {
3972    type Target = ComputePipelineIndirectBufferInfoNV;
3973    #[inline]
3974    fn deref(&self) -> &Self::Target {
3975        &self.inner
3976    }
3977}
3978impl<'a> core::ops::DerefMut for ComputePipelineIndirectBufferInfoNVBuilder<'a> {
3979    #[inline]
3980    fn deref_mut(&mut self) -> &mut Self::Target {
3981        &mut self.inner
3982    }
3983}
3984///Builder for [`PipelineCreateFlags2CreateInfo`] with lifetime-tied pNext safety.
3985pub struct PipelineCreateFlags2CreateInfoBuilder<'a> {
3986    inner: PipelineCreateFlags2CreateInfo,
3987    _marker: core::marker::PhantomData<&'a ()>,
3988}
3989impl PipelineCreateFlags2CreateInfo {
3990    /// Start building this struct; `s_type` is already set to the correct variant.
3991    #[inline]
3992    pub fn builder<'a>() -> PipelineCreateFlags2CreateInfoBuilder<'a> {
3993        PipelineCreateFlags2CreateInfoBuilder {
3994            inner: PipelineCreateFlags2CreateInfo {
3995                s_type: StructureType::from_raw(1000470005i32),
3996                ..Default::default()
3997            },
3998            _marker: core::marker::PhantomData,
3999        }
4000    }
4001}
4002impl<'a> PipelineCreateFlags2CreateInfoBuilder<'a> {
4003    #[inline]
4004    pub fn flags(mut self, value: PipelineCreateFlags2) -> Self {
4005        self.inner.flags = value;
4006        self
4007    }
4008    ///Prepend a struct to the pNext chain. See [`PipelineCreateFlags2CreateInfo`]'s **Extended By** section for valid types.
4009    #[inline]
4010    pub fn push_next<T: ExtendsPipelineCreateFlags2CreateInfo>(
4011        mut self,
4012        next: &'a mut T,
4013    ) -> Self {
4014        unsafe {
4015            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
4016            (*next_ptr).p_next = self.inner.p_next as *mut _;
4017            self.inner.p_next = <*mut BaseOutStructure>::cast::<
4018                core::ffi::c_void,
4019            >(next_ptr) as *const _;
4020        }
4021        self
4022    }
4023}
4024impl<'a> core::ops::Deref for PipelineCreateFlags2CreateInfoBuilder<'a> {
4025    type Target = PipelineCreateFlags2CreateInfo;
4026    #[inline]
4027    fn deref(&self) -> &Self::Target {
4028        &self.inner
4029    }
4030}
4031impl<'a> core::ops::DerefMut for PipelineCreateFlags2CreateInfoBuilder<'a> {
4032    #[inline]
4033    fn deref_mut(&mut self) -> &mut Self::Target {
4034        &mut self.inner
4035    }
4036}
4037///Builder for [`VertexInputBindingDescription`].
4038pub struct VertexInputBindingDescriptionBuilder {
4039    inner: VertexInputBindingDescription,
4040}
4041impl VertexInputBindingDescription {
4042    /// Start building this struct.
4043    #[inline]
4044    pub fn builder() -> VertexInputBindingDescriptionBuilder {
4045        VertexInputBindingDescriptionBuilder {
4046            inner: VertexInputBindingDescription {
4047                ..Default::default()
4048            },
4049        }
4050    }
4051}
4052impl VertexInputBindingDescriptionBuilder {
4053    #[inline]
4054    pub fn binding(mut self, value: u32) -> Self {
4055        self.inner.binding = value;
4056        self
4057    }
4058    #[inline]
4059    pub fn stride(mut self, value: u32) -> Self {
4060        self.inner.stride = value;
4061        self
4062    }
4063    #[inline]
4064    pub fn input_rate(mut self, value: VertexInputRate) -> Self {
4065        self.inner.input_rate = value;
4066        self
4067    }
4068}
4069impl core::ops::Deref for VertexInputBindingDescriptionBuilder {
4070    type Target = VertexInputBindingDescription;
4071    #[inline]
4072    fn deref(&self) -> &Self::Target {
4073        &self.inner
4074    }
4075}
4076impl core::ops::DerefMut for VertexInputBindingDescriptionBuilder {
4077    #[inline]
4078    fn deref_mut(&mut self) -> &mut Self::Target {
4079        &mut self.inner
4080    }
4081}
4082///Builder for [`VertexInputAttributeDescription`].
4083pub struct VertexInputAttributeDescriptionBuilder {
4084    inner: VertexInputAttributeDescription,
4085}
4086impl VertexInputAttributeDescription {
4087    /// Start building this struct.
4088    #[inline]
4089    pub fn builder() -> VertexInputAttributeDescriptionBuilder {
4090        VertexInputAttributeDescriptionBuilder {
4091            inner: VertexInputAttributeDescription {
4092                ..Default::default()
4093            },
4094        }
4095    }
4096}
4097impl VertexInputAttributeDescriptionBuilder {
4098    #[inline]
4099    pub fn location(mut self, value: u32) -> Self {
4100        self.inner.location = value;
4101        self
4102    }
4103    #[inline]
4104    pub fn binding(mut self, value: u32) -> Self {
4105        self.inner.binding = value;
4106        self
4107    }
4108    #[inline]
4109    pub fn format(mut self, value: Format) -> Self {
4110        self.inner.format = value;
4111        self
4112    }
4113    #[inline]
4114    pub fn offset(mut self, value: u32) -> Self {
4115        self.inner.offset = value;
4116        self
4117    }
4118}
4119impl core::ops::Deref for VertexInputAttributeDescriptionBuilder {
4120    type Target = VertexInputAttributeDescription;
4121    #[inline]
4122    fn deref(&self) -> &Self::Target {
4123        &self.inner
4124    }
4125}
4126impl core::ops::DerefMut for VertexInputAttributeDescriptionBuilder {
4127    #[inline]
4128    fn deref_mut(&mut self) -> &mut Self::Target {
4129        &mut self.inner
4130    }
4131}
4132///Builder for [`PipelineVertexInputStateCreateInfo`] with lifetime-tied pNext safety.
4133pub struct PipelineVertexInputStateCreateInfoBuilder<'a> {
4134    inner: PipelineVertexInputStateCreateInfo,
4135    _marker: core::marker::PhantomData<&'a ()>,
4136}
4137impl PipelineVertexInputStateCreateInfo {
4138    /// Start building this struct; `s_type` is already set to the correct variant.
4139    #[inline]
4140    pub fn builder<'a>() -> PipelineVertexInputStateCreateInfoBuilder<'a> {
4141        PipelineVertexInputStateCreateInfoBuilder {
4142            inner: PipelineVertexInputStateCreateInfo {
4143                s_type: StructureType::from_raw(19i32),
4144                ..Default::default()
4145            },
4146            _marker: core::marker::PhantomData,
4147        }
4148    }
4149}
4150impl<'a> PipelineVertexInputStateCreateInfoBuilder<'a> {
4151    #[inline]
4152    pub fn flags(mut self, value: PipelineVertexInputStateCreateFlags) -> Self {
4153        self.inner.flags = value;
4154        self
4155    }
4156    #[inline]
4157    pub fn vertex_binding_descriptions(
4158        mut self,
4159        slice: &'a [VertexInputBindingDescription],
4160    ) -> Self {
4161        self.inner.vertex_binding_description_count = slice.len() as u32;
4162        self.inner.p_vertex_binding_descriptions = slice.as_ptr();
4163        self
4164    }
4165    #[inline]
4166    pub fn vertex_attribute_descriptions(
4167        mut self,
4168        slice: &'a [VertexInputAttributeDescription],
4169    ) -> Self {
4170        self.inner.vertex_attribute_description_count = slice.len() as u32;
4171        self.inner.p_vertex_attribute_descriptions = slice.as_ptr();
4172        self
4173    }
4174    ///Prepend a struct to the pNext chain. See [`PipelineVertexInputStateCreateInfo`]'s **Extended By** section for valid types.
4175    #[inline]
4176    pub fn push_next<T: ExtendsPipelineVertexInputStateCreateInfo>(
4177        mut self,
4178        next: &'a mut T,
4179    ) -> Self {
4180        unsafe {
4181            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
4182            (*next_ptr).p_next = self.inner.p_next as *mut _;
4183            self.inner.p_next = <*mut BaseOutStructure>::cast::<
4184                core::ffi::c_void,
4185            >(next_ptr) as *const _;
4186        }
4187        self
4188    }
4189}
4190impl<'a> core::ops::Deref for PipelineVertexInputStateCreateInfoBuilder<'a> {
4191    type Target = PipelineVertexInputStateCreateInfo;
4192    #[inline]
4193    fn deref(&self) -> &Self::Target {
4194        &self.inner
4195    }
4196}
4197impl<'a> core::ops::DerefMut for PipelineVertexInputStateCreateInfoBuilder<'a> {
4198    #[inline]
4199    fn deref_mut(&mut self) -> &mut Self::Target {
4200        &mut self.inner
4201    }
4202}
4203///Builder for [`PipelineInputAssemblyStateCreateInfo`] with lifetime-tied pNext safety.
4204pub struct PipelineInputAssemblyStateCreateInfoBuilder<'a> {
4205    inner: PipelineInputAssemblyStateCreateInfo,
4206    _marker: core::marker::PhantomData<&'a ()>,
4207}
4208impl PipelineInputAssemblyStateCreateInfo {
4209    /// Start building this struct; `s_type` is already set to the correct variant.
4210    #[inline]
4211    pub fn builder<'a>() -> PipelineInputAssemblyStateCreateInfoBuilder<'a> {
4212        PipelineInputAssemblyStateCreateInfoBuilder {
4213            inner: PipelineInputAssemblyStateCreateInfo {
4214                s_type: StructureType::from_raw(20i32),
4215                ..Default::default()
4216            },
4217            _marker: core::marker::PhantomData,
4218        }
4219    }
4220}
4221impl<'a> PipelineInputAssemblyStateCreateInfoBuilder<'a> {
4222    #[inline]
4223    pub fn flags(mut self, value: PipelineInputAssemblyStateCreateFlags) -> Self {
4224        self.inner.flags = value;
4225        self
4226    }
4227    #[inline]
4228    pub fn topology(mut self, value: PrimitiveTopology) -> Self {
4229        self.inner.topology = value;
4230        self
4231    }
4232    #[inline]
4233    pub fn primitive_restart_enable(mut self, value: bool) -> Self {
4234        self.inner.primitive_restart_enable = value as u32;
4235        self
4236    }
4237    ///Prepend a struct to the pNext chain. See [`PipelineInputAssemblyStateCreateInfo`]'s **Extended By** section for valid types.
4238    #[inline]
4239    pub fn push_next<T: ExtendsPipelineInputAssemblyStateCreateInfo>(
4240        mut self,
4241        next: &'a mut T,
4242    ) -> Self {
4243        unsafe {
4244            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
4245            (*next_ptr).p_next = self.inner.p_next as *mut _;
4246            self.inner.p_next = <*mut BaseOutStructure>::cast::<
4247                core::ffi::c_void,
4248            >(next_ptr) as *const _;
4249        }
4250        self
4251    }
4252}
4253impl<'a> core::ops::Deref for PipelineInputAssemblyStateCreateInfoBuilder<'a> {
4254    type Target = PipelineInputAssemblyStateCreateInfo;
4255    #[inline]
4256    fn deref(&self) -> &Self::Target {
4257        &self.inner
4258    }
4259}
4260impl<'a> core::ops::DerefMut for PipelineInputAssemblyStateCreateInfoBuilder<'a> {
4261    #[inline]
4262    fn deref_mut(&mut self) -> &mut Self::Target {
4263        &mut self.inner
4264    }
4265}
4266///Builder for [`PipelineTessellationStateCreateInfo`] with lifetime-tied pNext safety.
4267pub struct PipelineTessellationStateCreateInfoBuilder<'a> {
4268    inner: PipelineTessellationStateCreateInfo,
4269    _marker: core::marker::PhantomData<&'a ()>,
4270}
4271impl PipelineTessellationStateCreateInfo {
4272    /// Start building this struct; `s_type` is already set to the correct variant.
4273    #[inline]
4274    pub fn builder<'a>() -> PipelineTessellationStateCreateInfoBuilder<'a> {
4275        PipelineTessellationStateCreateInfoBuilder {
4276            inner: PipelineTessellationStateCreateInfo {
4277                s_type: StructureType::from_raw(21i32),
4278                ..Default::default()
4279            },
4280            _marker: core::marker::PhantomData,
4281        }
4282    }
4283}
4284impl<'a> PipelineTessellationStateCreateInfoBuilder<'a> {
4285    #[inline]
4286    pub fn flags(mut self, value: PipelineTessellationStateCreateFlags) -> Self {
4287        self.inner.flags = value;
4288        self
4289    }
4290    #[inline]
4291    pub fn patch_control_points(mut self, value: u32) -> Self {
4292        self.inner.patch_control_points = value;
4293        self
4294    }
4295    ///Prepend a struct to the pNext chain. See [`PipelineTessellationStateCreateInfo`]'s **Extended By** section for valid types.
4296    #[inline]
4297    pub fn push_next<T: ExtendsPipelineTessellationStateCreateInfo>(
4298        mut self,
4299        next: &'a mut T,
4300    ) -> Self {
4301        unsafe {
4302            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
4303            (*next_ptr).p_next = self.inner.p_next as *mut _;
4304            self.inner.p_next = <*mut BaseOutStructure>::cast::<
4305                core::ffi::c_void,
4306            >(next_ptr) as *const _;
4307        }
4308        self
4309    }
4310}
4311impl<'a> core::ops::Deref for PipelineTessellationStateCreateInfoBuilder<'a> {
4312    type Target = PipelineTessellationStateCreateInfo;
4313    #[inline]
4314    fn deref(&self) -> &Self::Target {
4315        &self.inner
4316    }
4317}
4318impl<'a> core::ops::DerefMut for PipelineTessellationStateCreateInfoBuilder<'a> {
4319    #[inline]
4320    fn deref_mut(&mut self) -> &mut Self::Target {
4321        &mut self.inner
4322    }
4323}
4324///Builder for [`PipelineViewportStateCreateInfo`] with lifetime-tied pNext safety.
4325pub struct PipelineViewportStateCreateInfoBuilder<'a> {
4326    inner: PipelineViewportStateCreateInfo,
4327    _marker: core::marker::PhantomData<&'a ()>,
4328}
4329impl PipelineViewportStateCreateInfo {
4330    /// Start building this struct; `s_type` is already set to the correct variant.
4331    #[inline]
4332    pub fn builder<'a>() -> PipelineViewportStateCreateInfoBuilder<'a> {
4333        PipelineViewportStateCreateInfoBuilder {
4334            inner: PipelineViewportStateCreateInfo {
4335                s_type: StructureType::from_raw(22i32),
4336                ..Default::default()
4337            },
4338            _marker: core::marker::PhantomData,
4339        }
4340    }
4341}
4342impl<'a> PipelineViewportStateCreateInfoBuilder<'a> {
4343    #[inline]
4344    pub fn flags(mut self, value: PipelineViewportStateCreateFlags) -> Self {
4345        self.inner.flags = value;
4346        self
4347    }
4348    #[inline]
4349    pub fn viewport_count(mut self, value: u32) -> Self {
4350        self.inner.viewport_count = value;
4351        self
4352    }
4353    #[inline]
4354    pub fn viewports(mut self, slice: &'a [Viewport]) -> Self {
4355        self.inner.viewport_count = slice.len() as u32;
4356        self.inner.p_viewports = slice.as_ptr();
4357        self
4358    }
4359    #[inline]
4360    pub fn scissor_count(mut self, value: u32) -> Self {
4361        self.inner.scissor_count = value;
4362        self
4363    }
4364    #[inline]
4365    pub fn scissors(mut self, slice: &'a [Rect2D]) -> Self {
4366        self.inner.scissor_count = slice.len() as u32;
4367        self.inner.p_scissors = slice.as_ptr();
4368        self
4369    }
4370    ///Prepend a struct to the pNext chain. See [`PipelineViewportStateCreateInfo`]'s **Extended By** section for valid types.
4371    #[inline]
4372    pub fn push_next<T: ExtendsPipelineViewportStateCreateInfo>(
4373        mut self,
4374        next: &'a mut T,
4375    ) -> Self {
4376        unsafe {
4377            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
4378            (*next_ptr).p_next = self.inner.p_next as *mut _;
4379            self.inner.p_next = <*mut BaseOutStructure>::cast::<
4380                core::ffi::c_void,
4381            >(next_ptr) as *const _;
4382        }
4383        self
4384    }
4385}
4386impl<'a> core::ops::Deref for PipelineViewportStateCreateInfoBuilder<'a> {
4387    type Target = PipelineViewportStateCreateInfo;
4388    #[inline]
4389    fn deref(&self) -> &Self::Target {
4390        &self.inner
4391    }
4392}
4393impl<'a> core::ops::DerefMut for PipelineViewportStateCreateInfoBuilder<'a> {
4394    #[inline]
4395    fn deref_mut(&mut self) -> &mut Self::Target {
4396        &mut self.inner
4397    }
4398}
4399///Builder for [`PipelineRasterizationStateCreateInfo`] with lifetime-tied pNext safety.
4400pub struct PipelineRasterizationStateCreateInfoBuilder<'a> {
4401    inner: PipelineRasterizationStateCreateInfo,
4402    _marker: core::marker::PhantomData<&'a ()>,
4403}
4404impl PipelineRasterizationStateCreateInfo {
4405    /// Start building this struct; `s_type` is already set to the correct variant.
4406    #[inline]
4407    pub fn builder<'a>() -> PipelineRasterizationStateCreateInfoBuilder<'a> {
4408        PipelineRasterizationStateCreateInfoBuilder {
4409            inner: PipelineRasterizationStateCreateInfo {
4410                s_type: StructureType::from_raw(23i32),
4411                ..Default::default()
4412            },
4413            _marker: core::marker::PhantomData,
4414        }
4415    }
4416}
4417impl<'a> PipelineRasterizationStateCreateInfoBuilder<'a> {
4418    #[inline]
4419    pub fn flags(mut self, value: PipelineRasterizationStateCreateFlags) -> Self {
4420        self.inner.flags = value;
4421        self
4422    }
4423    #[inline]
4424    pub fn depth_clamp_enable(mut self, value: bool) -> Self {
4425        self.inner.depth_clamp_enable = value as u32;
4426        self
4427    }
4428    #[inline]
4429    pub fn rasterizer_discard_enable(mut self, value: bool) -> Self {
4430        self.inner.rasterizer_discard_enable = value as u32;
4431        self
4432    }
4433    #[inline]
4434    pub fn polygon_mode(mut self, value: PolygonMode) -> Self {
4435        self.inner.polygon_mode = value;
4436        self
4437    }
4438    #[inline]
4439    pub fn cull_mode(mut self, value: CullModeFlags) -> Self {
4440        self.inner.cull_mode = value;
4441        self
4442    }
4443    #[inline]
4444    pub fn front_face(mut self, value: FrontFace) -> Self {
4445        self.inner.front_face = value;
4446        self
4447    }
4448    #[inline]
4449    pub fn depth_bias_enable(mut self, value: bool) -> Self {
4450        self.inner.depth_bias_enable = value as u32;
4451        self
4452    }
4453    #[inline]
4454    pub fn depth_bias_constant_factor(mut self, value: f32) -> Self {
4455        self.inner.depth_bias_constant_factor = value;
4456        self
4457    }
4458    #[inline]
4459    pub fn depth_bias_clamp(mut self, value: f32) -> Self {
4460        self.inner.depth_bias_clamp = value;
4461        self
4462    }
4463    #[inline]
4464    pub fn depth_bias_slope_factor(mut self, value: f32) -> Self {
4465        self.inner.depth_bias_slope_factor = value;
4466        self
4467    }
4468    #[inline]
4469    pub fn line_width(mut self, value: f32) -> Self {
4470        self.inner.line_width = value;
4471        self
4472    }
4473    ///Prepend a struct to the pNext chain. See [`PipelineRasterizationStateCreateInfo`]'s **Extended By** section for valid types.
4474    #[inline]
4475    pub fn push_next<T: ExtendsPipelineRasterizationStateCreateInfo>(
4476        mut self,
4477        next: &'a mut T,
4478    ) -> Self {
4479        unsafe {
4480            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
4481            (*next_ptr).p_next = self.inner.p_next as *mut _;
4482            self.inner.p_next = <*mut BaseOutStructure>::cast::<
4483                core::ffi::c_void,
4484            >(next_ptr) as *const _;
4485        }
4486        self
4487    }
4488}
4489impl<'a> core::ops::Deref for PipelineRasterizationStateCreateInfoBuilder<'a> {
4490    type Target = PipelineRasterizationStateCreateInfo;
4491    #[inline]
4492    fn deref(&self) -> &Self::Target {
4493        &self.inner
4494    }
4495}
4496impl<'a> core::ops::DerefMut for PipelineRasterizationStateCreateInfoBuilder<'a> {
4497    #[inline]
4498    fn deref_mut(&mut self) -> &mut Self::Target {
4499        &mut self.inner
4500    }
4501}
4502///Builder for [`PipelineMultisampleStateCreateInfo`] with lifetime-tied pNext safety.
4503pub struct PipelineMultisampleStateCreateInfoBuilder<'a> {
4504    inner: PipelineMultisampleStateCreateInfo,
4505    _marker: core::marker::PhantomData<&'a ()>,
4506}
4507impl PipelineMultisampleStateCreateInfo {
4508    /// Start building this struct; `s_type` is already set to the correct variant.
4509    #[inline]
4510    pub fn builder<'a>() -> PipelineMultisampleStateCreateInfoBuilder<'a> {
4511        PipelineMultisampleStateCreateInfoBuilder {
4512            inner: PipelineMultisampleStateCreateInfo {
4513                s_type: StructureType::from_raw(24i32),
4514                ..Default::default()
4515            },
4516            _marker: core::marker::PhantomData,
4517        }
4518    }
4519}
4520impl<'a> PipelineMultisampleStateCreateInfoBuilder<'a> {
4521    #[inline]
4522    pub fn flags(mut self, value: PipelineMultisampleStateCreateFlags) -> Self {
4523        self.inner.flags = value;
4524        self
4525    }
4526    #[inline]
4527    pub fn rasterization_samples(mut self, value: SampleCountFlagBits) -> Self {
4528        self.inner.rasterization_samples = value;
4529        self
4530    }
4531    #[inline]
4532    pub fn sample_shading_enable(mut self, value: bool) -> Self {
4533        self.inner.sample_shading_enable = value as u32;
4534        self
4535    }
4536    #[inline]
4537    pub fn min_sample_shading(mut self, value: f32) -> Self {
4538        self.inner.min_sample_shading = value;
4539        self
4540    }
4541    #[inline]
4542    pub fn sample_mask(mut self, value: &'a u32) -> Self {
4543        self.inner.p_sample_mask = value;
4544        self
4545    }
4546    #[inline]
4547    pub fn alpha_to_coverage_enable(mut self, value: bool) -> Self {
4548        self.inner.alpha_to_coverage_enable = value as u32;
4549        self
4550    }
4551    #[inline]
4552    pub fn alpha_to_one_enable(mut self, value: bool) -> Self {
4553        self.inner.alpha_to_one_enable = value as u32;
4554        self
4555    }
4556    ///Prepend a struct to the pNext chain. See [`PipelineMultisampleStateCreateInfo`]'s **Extended By** section for valid types.
4557    #[inline]
4558    pub fn push_next<T: ExtendsPipelineMultisampleStateCreateInfo>(
4559        mut self,
4560        next: &'a mut T,
4561    ) -> Self {
4562        unsafe {
4563            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
4564            (*next_ptr).p_next = self.inner.p_next as *mut _;
4565            self.inner.p_next = <*mut BaseOutStructure>::cast::<
4566                core::ffi::c_void,
4567            >(next_ptr) as *const _;
4568        }
4569        self
4570    }
4571}
4572impl<'a> core::ops::Deref for PipelineMultisampleStateCreateInfoBuilder<'a> {
4573    type Target = PipelineMultisampleStateCreateInfo;
4574    #[inline]
4575    fn deref(&self) -> &Self::Target {
4576        &self.inner
4577    }
4578}
4579impl<'a> core::ops::DerefMut for PipelineMultisampleStateCreateInfoBuilder<'a> {
4580    #[inline]
4581    fn deref_mut(&mut self) -> &mut Self::Target {
4582        &mut self.inner
4583    }
4584}
4585///Builder for [`PipelineColorBlendAttachmentState`].
4586pub struct PipelineColorBlendAttachmentStateBuilder {
4587    inner: PipelineColorBlendAttachmentState,
4588}
4589impl PipelineColorBlendAttachmentState {
4590    /// Start building this struct.
4591    #[inline]
4592    pub fn builder() -> PipelineColorBlendAttachmentStateBuilder {
4593        PipelineColorBlendAttachmentStateBuilder {
4594            inner: PipelineColorBlendAttachmentState {
4595                ..Default::default()
4596            },
4597        }
4598    }
4599}
4600impl PipelineColorBlendAttachmentStateBuilder {
4601    #[inline]
4602    pub fn blend_enable(mut self, value: bool) -> Self {
4603        self.inner.blend_enable = value as u32;
4604        self
4605    }
4606    #[inline]
4607    pub fn src_color_blend_factor(mut self, value: BlendFactor) -> Self {
4608        self.inner.src_color_blend_factor = value;
4609        self
4610    }
4611    #[inline]
4612    pub fn dst_color_blend_factor(mut self, value: BlendFactor) -> Self {
4613        self.inner.dst_color_blend_factor = value;
4614        self
4615    }
4616    #[inline]
4617    pub fn color_blend_op(mut self, value: BlendOp) -> Self {
4618        self.inner.color_blend_op = value;
4619        self
4620    }
4621    #[inline]
4622    pub fn src_alpha_blend_factor(mut self, value: BlendFactor) -> Self {
4623        self.inner.src_alpha_blend_factor = value;
4624        self
4625    }
4626    #[inline]
4627    pub fn dst_alpha_blend_factor(mut self, value: BlendFactor) -> Self {
4628        self.inner.dst_alpha_blend_factor = value;
4629        self
4630    }
4631    #[inline]
4632    pub fn alpha_blend_op(mut self, value: BlendOp) -> Self {
4633        self.inner.alpha_blend_op = value;
4634        self
4635    }
4636    #[inline]
4637    pub fn color_write_mask(mut self, value: ColorComponentFlags) -> Self {
4638        self.inner.color_write_mask = value;
4639        self
4640    }
4641}
4642impl core::ops::Deref for PipelineColorBlendAttachmentStateBuilder {
4643    type Target = PipelineColorBlendAttachmentState;
4644    #[inline]
4645    fn deref(&self) -> &Self::Target {
4646        &self.inner
4647    }
4648}
4649impl core::ops::DerefMut for PipelineColorBlendAttachmentStateBuilder {
4650    #[inline]
4651    fn deref_mut(&mut self) -> &mut Self::Target {
4652        &mut self.inner
4653    }
4654}
4655///Builder for [`PipelineColorBlendStateCreateInfo`] with lifetime-tied pNext safety.
4656pub struct PipelineColorBlendStateCreateInfoBuilder<'a> {
4657    inner: PipelineColorBlendStateCreateInfo,
4658    _marker: core::marker::PhantomData<&'a ()>,
4659}
4660impl PipelineColorBlendStateCreateInfo {
4661    /// Start building this struct; `s_type` is already set to the correct variant.
4662    #[inline]
4663    pub fn builder<'a>() -> PipelineColorBlendStateCreateInfoBuilder<'a> {
4664        PipelineColorBlendStateCreateInfoBuilder {
4665            inner: PipelineColorBlendStateCreateInfo {
4666                s_type: StructureType::from_raw(26i32),
4667                ..Default::default()
4668            },
4669            _marker: core::marker::PhantomData,
4670        }
4671    }
4672}
4673impl<'a> PipelineColorBlendStateCreateInfoBuilder<'a> {
4674    #[inline]
4675    pub fn flags(mut self, value: PipelineColorBlendStateCreateFlags) -> Self {
4676        self.inner.flags = value;
4677        self
4678    }
4679    #[inline]
4680    pub fn logic_op_enable(mut self, value: bool) -> Self {
4681        self.inner.logic_op_enable = value as u32;
4682        self
4683    }
4684    #[inline]
4685    pub fn logic_op(mut self, value: LogicOp) -> Self {
4686        self.inner.logic_op = value;
4687        self
4688    }
4689    #[inline]
4690    pub fn attachment_count(mut self, value: u32) -> Self {
4691        self.inner.attachment_count = value;
4692        self
4693    }
4694    #[inline]
4695    pub fn attachments(
4696        mut self,
4697        slice: &'a [PipelineColorBlendAttachmentState],
4698    ) -> Self {
4699        self.inner.attachment_count = slice.len() as u32;
4700        self.inner.p_attachments = slice.as_ptr();
4701        self
4702    }
4703    #[inline]
4704    pub fn blend_constants(mut self, value: [f32; 4usize]) -> Self {
4705        self.inner.blend_constants = value;
4706        self
4707    }
4708    ///Prepend a struct to the pNext chain. See [`PipelineColorBlendStateCreateInfo`]'s **Extended By** section for valid types.
4709    #[inline]
4710    pub fn push_next<T: ExtendsPipelineColorBlendStateCreateInfo>(
4711        mut self,
4712        next: &'a mut T,
4713    ) -> Self {
4714        unsafe {
4715            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
4716            (*next_ptr).p_next = self.inner.p_next as *mut _;
4717            self.inner.p_next = <*mut BaseOutStructure>::cast::<
4718                core::ffi::c_void,
4719            >(next_ptr) as *const _;
4720        }
4721        self
4722    }
4723}
4724impl<'a> core::ops::Deref for PipelineColorBlendStateCreateInfoBuilder<'a> {
4725    type Target = PipelineColorBlendStateCreateInfo;
4726    #[inline]
4727    fn deref(&self) -> &Self::Target {
4728        &self.inner
4729    }
4730}
4731impl<'a> core::ops::DerefMut for PipelineColorBlendStateCreateInfoBuilder<'a> {
4732    #[inline]
4733    fn deref_mut(&mut self) -> &mut Self::Target {
4734        &mut self.inner
4735    }
4736}
4737///Builder for [`PipelineDynamicStateCreateInfo`] with lifetime-tied pNext safety.
4738pub struct PipelineDynamicStateCreateInfoBuilder<'a> {
4739    inner: PipelineDynamicStateCreateInfo,
4740    _marker: core::marker::PhantomData<&'a ()>,
4741}
4742impl PipelineDynamicStateCreateInfo {
4743    /// Start building this struct; `s_type` is already set to the correct variant.
4744    #[inline]
4745    pub fn builder<'a>() -> PipelineDynamicStateCreateInfoBuilder<'a> {
4746        PipelineDynamicStateCreateInfoBuilder {
4747            inner: PipelineDynamicStateCreateInfo {
4748                s_type: StructureType::from_raw(27i32),
4749                ..Default::default()
4750            },
4751            _marker: core::marker::PhantomData,
4752        }
4753    }
4754}
4755impl<'a> PipelineDynamicStateCreateInfoBuilder<'a> {
4756    #[inline]
4757    pub fn flags(mut self, value: PipelineDynamicStateCreateFlags) -> Self {
4758        self.inner.flags = value;
4759        self
4760    }
4761    #[inline]
4762    pub fn dynamic_states(mut self, slice: &'a [DynamicState]) -> Self {
4763        self.inner.dynamic_state_count = slice.len() as u32;
4764        self.inner.p_dynamic_states = slice.as_ptr();
4765        self
4766    }
4767    ///Prepend a struct to the pNext chain. See [`PipelineDynamicStateCreateInfo`]'s **Extended By** section for valid types.
4768    #[inline]
4769    pub fn push_next<T: ExtendsPipelineDynamicStateCreateInfo>(
4770        mut self,
4771        next: &'a mut T,
4772    ) -> Self {
4773        unsafe {
4774            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
4775            (*next_ptr).p_next = self.inner.p_next as *mut _;
4776            self.inner.p_next = <*mut BaseOutStructure>::cast::<
4777                core::ffi::c_void,
4778            >(next_ptr) as *const _;
4779        }
4780        self
4781    }
4782}
4783impl<'a> core::ops::Deref for PipelineDynamicStateCreateInfoBuilder<'a> {
4784    type Target = PipelineDynamicStateCreateInfo;
4785    #[inline]
4786    fn deref(&self) -> &Self::Target {
4787        &self.inner
4788    }
4789}
4790impl<'a> core::ops::DerefMut for PipelineDynamicStateCreateInfoBuilder<'a> {
4791    #[inline]
4792    fn deref_mut(&mut self) -> &mut Self::Target {
4793        &mut self.inner
4794    }
4795}
4796///Builder for [`StencilOpState`].
4797pub struct StencilOpStateBuilder {
4798    inner: StencilOpState,
4799}
4800impl StencilOpState {
4801    /// Start building this struct.
4802    #[inline]
4803    pub fn builder() -> StencilOpStateBuilder {
4804        StencilOpStateBuilder {
4805            inner: StencilOpState {
4806                ..Default::default()
4807            },
4808        }
4809    }
4810}
4811impl StencilOpStateBuilder {
4812    #[inline]
4813    pub fn fail_op(mut self, value: StencilOp) -> Self {
4814        self.inner.fail_op = value;
4815        self
4816    }
4817    #[inline]
4818    pub fn pass_op(mut self, value: StencilOp) -> Self {
4819        self.inner.pass_op = value;
4820        self
4821    }
4822    #[inline]
4823    pub fn depth_fail_op(mut self, value: StencilOp) -> Self {
4824        self.inner.depth_fail_op = value;
4825        self
4826    }
4827    #[inline]
4828    pub fn compare_op(mut self, value: CompareOp) -> Self {
4829        self.inner.compare_op = value;
4830        self
4831    }
4832    #[inline]
4833    pub fn compare_mask(mut self, value: u32) -> Self {
4834        self.inner.compare_mask = value;
4835        self
4836    }
4837    #[inline]
4838    pub fn write_mask(mut self, value: u32) -> Self {
4839        self.inner.write_mask = value;
4840        self
4841    }
4842    #[inline]
4843    pub fn reference(mut self, value: u32) -> Self {
4844        self.inner.reference = value;
4845        self
4846    }
4847}
4848impl core::ops::Deref for StencilOpStateBuilder {
4849    type Target = StencilOpState;
4850    #[inline]
4851    fn deref(&self) -> &Self::Target {
4852        &self.inner
4853    }
4854}
4855impl core::ops::DerefMut for StencilOpStateBuilder {
4856    #[inline]
4857    fn deref_mut(&mut self) -> &mut Self::Target {
4858        &mut self.inner
4859    }
4860}
4861///Builder for [`PipelineDepthStencilStateCreateInfo`] with lifetime-tied pNext safety.
4862pub struct PipelineDepthStencilStateCreateInfoBuilder<'a> {
4863    inner: PipelineDepthStencilStateCreateInfo,
4864    _marker: core::marker::PhantomData<&'a ()>,
4865}
4866impl PipelineDepthStencilStateCreateInfo {
4867    /// Start building this struct; `s_type` is already set to the correct variant.
4868    #[inline]
4869    pub fn builder<'a>() -> PipelineDepthStencilStateCreateInfoBuilder<'a> {
4870        PipelineDepthStencilStateCreateInfoBuilder {
4871            inner: PipelineDepthStencilStateCreateInfo {
4872                s_type: StructureType::from_raw(25i32),
4873                ..Default::default()
4874            },
4875            _marker: core::marker::PhantomData,
4876        }
4877    }
4878}
4879impl<'a> PipelineDepthStencilStateCreateInfoBuilder<'a> {
4880    #[inline]
4881    pub fn flags(mut self, value: PipelineDepthStencilStateCreateFlags) -> Self {
4882        self.inner.flags = value;
4883        self
4884    }
4885    #[inline]
4886    pub fn depth_test_enable(mut self, value: bool) -> Self {
4887        self.inner.depth_test_enable = value as u32;
4888        self
4889    }
4890    #[inline]
4891    pub fn depth_write_enable(mut self, value: bool) -> Self {
4892        self.inner.depth_write_enable = value as u32;
4893        self
4894    }
4895    #[inline]
4896    pub fn depth_compare_op(mut self, value: CompareOp) -> Self {
4897        self.inner.depth_compare_op = value;
4898        self
4899    }
4900    #[inline]
4901    pub fn depth_bounds_test_enable(mut self, value: bool) -> Self {
4902        self.inner.depth_bounds_test_enable = value as u32;
4903        self
4904    }
4905    #[inline]
4906    pub fn stencil_test_enable(mut self, value: bool) -> Self {
4907        self.inner.stencil_test_enable = value as u32;
4908        self
4909    }
4910    #[inline]
4911    pub fn front(mut self, value: StencilOpState) -> Self {
4912        self.inner.front = value;
4913        self
4914    }
4915    #[inline]
4916    pub fn back(mut self, value: StencilOpState) -> Self {
4917        self.inner.back = value;
4918        self
4919    }
4920    #[inline]
4921    pub fn min_depth_bounds(mut self, value: f32) -> Self {
4922        self.inner.min_depth_bounds = value;
4923        self
4924    }
4925    #[inline]
4926    pub fn max_depth_bounds(mut self, value: f32) -> Self {
4927        self.inner.max_depth_bounds = value;
4928        self
4929    }
4930    ///Prepend a struct to the pNext chain. See [`PipelineDepthStencilStateCreateInfo`]'s **Extended By** section for valid types.
4931    #[inline]
4932    pub fn push_next<T: ExtendsPipelineDepthStencilStateCreateInfo>(
4933        mut self,
4934        next: &'a mut T,
4935    ) -> Self {
4936        unsafe {
4937            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
4938            (*next_ptr).p_next = self.inner.p_next as *mut _;
4939            self.inner.p_next = <*mut BaseOutStructure>::cast::<
4940                core::ffi::c_void,
4941            >(next_ptr) as *const _;
4942        }
4943        self
4944    }
4945}
4946impl<'a> core::ops::Deref for PipelineDepthStencilStateCreateInfoBuilder<'a> {
4947    type Target = PipelineDepthStencilStateCreateInfo;
4948    #[inline]
4949    fn deref(&self) -> &Self::Target {
4950        &self.inner
4951    }
4952}
4953impl<'a> core::ops::DerefMut for PipelineDepthStencilStateCreateInfoBuilder<'a> {
4954    #[inline]
4955    fn deref_mut(&mut self) -> &mut Self::Target {
4956        &mut self.inner
4957    }
4958}
4959///Builder for [`GraphicsPipelineCreateInfo`] with lifetime-tied pNext safety.
4960pub struct GraphicsPipelineCreateInfoBuilder<'a> {
4961    inner: GraphicsPipelineCreateInfo,
4962    _marker: core::marker::PhantomData<&'a ()>,
4963}
4964impl GraphicsPipelineCreateInfo {
4965    /// Start building this struct; `s_type` is already set to the correct variant.
4966    #[inline]
4967    pub fn builder<'a>() -> GraphicsPipelineCreateInfoBuilder<'a> {
4968        GraphicsPipelineCreateInfoBuilder {
4969            inner: GraphicsPipelineCreateInfo {
4970                s_type: StructureType::from_raw(28i32),
4971                ..Default::default()
4972            },
4973            _marker: core::marker::PhantomData,
4974        }
4975    }
4976}
4977impl<'a> GraphicsPipelineCreateInfoBuilder<'a> {
4978    #[inline]
4979    pub fn flags(mut self, value: PipelineCreateFlags) -> Self {
4980        self.inner.flags = value;
4981        self
4982    }
4983    #[inline]
4984    pub fn stages(mut self, slice: &'a [PipelineShaderStageCreateInfo]) -> Self {
4985        self.inner.stage_count = slice.len() as u32;
4986        self.inner.p_stages = slice.as_ptr();
4987        self
4988    }
4989    #[inline]
4990    pub fn vertex_input_state(
4991        mut self,
4992        value: &'a PipelineVertexInputStateCreateInfo,
4993    ) -> Self {
4994        self.inner.p_vertex_input_state = value;
4995        self
4996    }
4997    #[inline]
4998    pub fn input_assembly_state(
4999        mut self,
5000        value: &'a PipelineInputAssemblyStateCreateInfo,
5001    ) -> Self {
5002        self.inner.p_input_assembly_state = value;
5003        self
5004    }
5005    #[inline]
5006    pub fn tessellation_state(
5007        mut self,
5008        value: &'a PipelineTessellationStateCreateInfo,
5009    ) -> Self {
5010        self.inner.p_tessellation_state = value;
5011        self
5012    }
5013    #[inline]
5014    pub fn viewport_state(mut self, value: &'a PipelineViewportStateCreateInfo) -> Self {
5015        self.inner.p_viewport_state = value;
5016        self
5017    }
5018    #[inline]
5019    pub fn rasterization_state(
5020        mut self,
5021        value: &'a PipelineRasterizationStateCreateInfo,
5022    ) -> Self {
5023        self.inner.p_rasterization_state = value;
5024        self
5025    }
5026    #[inline]
5027    pub fn multisample_state(
5028        mut self,
5029        value: &'a PipelineMultisampleStateCreateInfo,
5030    ) -> Self {
5031        self.inner.p_multisample_state = value;
5032        self
5033    }
5034    #[inline]
5035    pub fn depth_stencil_state(
5036        mut self,
5037        value: &'a PipelineDepthStencilStateCreateInfo,
5038    ) -> Self {
5039        self.inner.p_depth_stencil_state = value;
5040        self
5041    }
5042    #[inline]
5043    pub fn color_blend_state(
5044        mut self,
5045        value: &'a PipelineColorBlendStateCreateInfo,
5046    ) -> Self {
5047        self.inner.p_color_blend_state = value;
5048        self
5049    }
5050    #[inline]
5051    pub fn dynamic_state(mut self, value: &'a PipelineDynamicStateCreateInfo) -> Self {
5052        self.inner.p_dynamic_state = value;
5053        self
5054    }
5055    #[inline]
5056    pub fn layout(mut self, value: PipelineLayout) -> Self {
5057        self.inner.layout = value;
5058        self
5059    }
5060    #[inline]
5061    pub fn render_pass(mut self, value: RenderPass) -> Self {
5062        self.inner.render_pass = value;
5063        self
5064    }
5065    #[inline]
5066    pub fn subpass(mut self, value: u32) -> Self {
5067        self.inner.subpass = value;
5068        self
5069    }
5070    #[inline]
5071    pub fn base_pipeline_handle(mut self, value: Pipeline) -> Self {
5072        self.inner.base_pipeline_handle = value;
5073        self
5074    }
5075    #[inline]
5076    pub fn base_pipeline_index(mut self, value: i32) -> Self {
5077        self.inner.base_pipeline_index = value;
5078        self
5079    }
5080    ///Prepend a struct to the pNext chain. See [`GraphicsPipelineCreateInfo`]'s **Extended By** section for valid types.
5081    #[inline]
5082    pub fn push_next<T: ExtendsGraphicsPipelineCreateInfo>(
5083        mut self,
5084        next: &'a mut T,
5085    ) -> Self {
5086        unsafe {
5087            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
5088            (*next_ptr).p_next = self.inner.p_next as *mut _;
5089            self.inner.p_next = <*mut BaseOutStructure>::cast::<
5090                core::ffi::c_void,
5091            >(next_ptr) as *const _;
5092        }
5093        self
5094    }
5095}
5096impl<'a> core::ops::Deref for GraphicsPipelineCreateInfoBuilder<'a> {
5097    type Target = GraphicsPipelineCreateInfo;
5098    #[inline]
5099    fn deref(&self) -> &Self::Target {
5100        &self.inner
5101    }
5102}
5103impl<'a> core::ops::DerefMut for GraphicsPipelineCreateInfoBuilder<'a> {
5104    #[inline]
5105    fn deref_mut(&mut self) -> &mut Self::Target {
5106        &mut self.inner
5107    }
5108}
5109///Builder for [`PipelineCacheCreateInfo`] with lifetime-tied pNext safety.
5110pub struct PipelineCacheCreateInfoBuilder<'a> {
5111    inner: PipelineCacheCreateInfo,
5112    _marker: core::marker::PhantomData<&'a ()>,
5113}
5114impl PipelineCacheCreateInfo {
5115    /// Start building this struct; `s_type` is already set to the correct variant.
5116    #[inline]
5117    pub fn builder<'a>() -> PipelineCacheCreateInfoBuilder<'a> {
5118        PipelineCacheCreateInfoBuilder {
5119            inner: PipelineCacheCreateInfo {
5120                s_type: StructureType::from_raw(17i32),
5121                ..Default::default()
5122            },
5123            _marker: core::marker::PhantomData,
5124        }
5125    }
5126}
5127impl<'a> PipelineCacheCreateInfoBuilder<'a> {
5128    #[inline]
5129    pub fn flags(mut self, value: PipelineCacheCreateFlags) -> Self {
5130        self.inner.flags = value;
5131        self
5132    }
5133    #[inline]
5134    pub fn initial_data(mut self, slice: &'a [core::ffi::c_void]) -> Self {
5135        self.inner.initial_data_size = slice.len();
5136        self.inner.p_initial_data = slice.as_ptr();
5137        self
5138    }
5139    ///Prepend a struct to the pNext chain. See [`PipelineCacheCreateInfo`]'s **Extended By** section for valid types.
5140    #[inline]
5141    pub fn push_next<T: ExtendsPipelineCacheCreateInfo>(
5142        mut self,
5143        next: &'a mut T,
5144    ) -> Self {
5145        unsafe {
5146            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
5147            (*next_ptr).p_next = self.inner.p_next as *mut _;
5148            self.inner.p_next = <*mut BaseOutStructure>::cast::<
5149                core::ffi::c_void,
5150            >(next_ptr) as *const _;
5151        }
5152        self
5153    }
5154}
5155impl<'a> core::ops::Deref for PipelineCacheCreateInfoBuilder<'a> {
5156    type Target = PipelineCacheCreateInfo;
5157    #[inline]
5158    fn deref(&self) -> &Self::Target {
5159        &self.inner
5160    }
5161}
5162impl<'a> core::ops::DerefMut for PipelineCacheCreateInfoBuilder<'a> {
5163    #[inline]
5164    fn deref_mut(&mut self) -> &mut Self::Target {
5165        &mut self.inner
5166    }
5167}
5168///Builder for [`PipelineCacheHeaderVersionOne`].
5169pub struct PipelineCacheHeaderVersionOneBuilder {
5170    inner: PipelineCacheHeaderVersionOne,
5171}
5172impl PipelineCacheHeaderVersionOne {
5173    /// Start building this struct.
5174    #[inline]
5175    pub fn builder() -> PipelineCacheHeaderVersionOneBuilder {
5176        PipelineCacheHeaderVersionOneBuilder {
5177            inner: PipelineCacheHeaderVersionOne {
5178                ..Default::default()
5179            },
5180        }
5181    }
5182}
5183impl PipelineCacheHeaderVersionOneBuilder {
5184    #[inline]
5185    pub fn header_size(mut self, value: u32) -> Self {
5186        self.inner.header_size = value;
5187        self
5188    }
5189    #[inline]
5190    pub fn header_version(mut self, value: PipelineCacheHeaderVersion) -> Self {
5191        self.inner.header_version = value;
5192        self
5193    }
5194    #[inline]
5195    pub fn vendor_id(mut self, value: u32) -> Self {
5196        self.inner.vendor_id = value;
5197        self
5198    }
5199    #[inline]
5200    pub fn device_id(mut self, value: u32) -> Self {
5201        self.inner.device_id = value;
5202        self
5203    }
5204    #[inline]
5205    pub fn pipeline_cache_uuid(mut self, value: [u8; UUID_SIZE as usize]) -> Self {
5206        self.inner.pipeline_cache_uuid = value;
5207        self
5208    }
5209}
5210impl core::ops::Deref for PipelineCacheHeaderVersionOneBuilder {
5211    type Target = PipelineCacheHeaderVersionOne;
5212    #[inline]
5213    fn deref(&self) -> &Self::Target {
5214        &self.inner
5215    }
5216}
5217impl core::ops::DerefMut for PipelineCacheHeaderVersionOneBuilder {
5218    #[inline]
5219    fn deref_mut(&mut self) -> &mut Self::Target {
5220        &mut self.inner
5221    }
5222}
5223///Builder for [`PipelineCacheStageValidationIndexEntry`].
5224pub struct PipelineCacheStageValidationIndexEntryBuilder {
5225    inner: PipelineCacheStageValidationIndexEntry,
5226}
5227impl PipelineCacheStageValidationIndexEntry {
5228    /// Start building this struct.
5229    #[inline]
5230    pub fn builder() -> PipelineCacheStageValidationIndexEntryBuilder {
5231        PipelineCacheStageValidationIndexEntryBuilder {
5232            inner: PipelineCacheStageValidationIndexEntry {
5233                ..Default::default()
5234            },
5235        }
5236    }
5237}
5238impl PipelineCacheStageValidationIndexEntryBuilder {
5239    #[inline]
5240    pub fn code_size(mut self, value: u64) -> Self {
5241        self.inner.code_size = value;
5242        self
5243    }
5244    #[inline]
5245    pub fn code_offset(mut self, value: u64) -> Self {
5246        self.inner.code_offset = value;
5247        self
5248    }
5249}
5250impl core::ops::Deref for PipelineCacheStageValidationIndexEntryBuilder {
5251    type Target = PipelineCacheStageValidationIndexEntry;
5252    #[inline]
5253    fn deref(&self) -> &Self::Target {
5254        &self.inner
5255    }
5256}
5257impl core::ops::DerefMut for PipelineCacheStageValidationIndexEntryBuilder {
5258    #[inline]
5259    fn deref_mut(&mut self) -> &mut Self::Target {
5260        &mut self.inner
5261    }
5262}
5263///Builder for [`PipelineCacheSafetyCriticalIndexEntry`].
5264pub struct PipelineCacheSafetyCriticalIndexEntryBuilder {
5265    inner: PipelineCacheSafetyCriticalIndexEntry,
5266}
5267impl PipelineCacheSafetyCriticalIndexEntry {
5268    /// Start building this struct.
5269    #[inline]
5270    pub fn builder() -> PipelineCacheSafetyCriticalIndexEntryBuilder {
5271        PipelineCacheSafetyCriticalIndexEntryBuilder {
5272            inner: PipelineCacheSafetyCriticalIndexEntry {
5273                ..Default::default()
5274            },
5275        }
5276    }
5277}
5278impl PipelineCacheSafetyCriticalIndexEntryBuilder {
5279    #[inline]
5280    pub fn pipeline_identifier(mut self, value: [u8; UUID_SIZE as usize]) -> Self {
5281        self.inner.pipeline_identifier = value;
5282        self
5283    }
5284    #[inline]
5285    pub fn pipeline_memory_size(mut self, value: u64) -> Self {
5286        self.inner.pipeline_memory_size = value;
5287        self
5288    }
5289    #[inline]
5290    pub fn json_size(mut self, value: u64) -> Self {
5291        self.inner.json_size = value;
5292        self
5293    }
5294    #[inline]
5295    pub fn json_offset(mut self, value: u64) -> Self {
5296        self.inner.json_offset = value;
5297        self
5298    }
5299    #[inline]
5300    pub fn stage_index_count(mut self, value: u32) -> Self {
5301        self.inner.stage_index_count = value;
5302        self
5303    }
5304    #[inline]
5305    pub fn stage_index_stride(mut self, value: u32) -> Self {
5306        self.inner.stage_index_stride = value;
5307        self
5308    }
5309    #[inline]
5310    pub fn stage_index_offset(mut self, value: u64) -> Self {
5311        self.inner.stage_index_offset = value;
5312        self
5313    }
5314}
5315impl core::ops::Deref for PipelineCacheSafetyCriticalIndexEntryBuilder {
5316    type Target = PipelineCacheSafetyCriticalIndexEntry;
5317    #[inline]
5318    fn deref(&self) -> &Self::Target {
5319        &self.inner
5320    }
5321}
5322impl core::ops::DerefMut for PipelineCacheSafetyCriticalIndexEntryBuilder {
5323    #[inline]
5324    fn deref_mut(&mut self) -> &mut Self::Target {
5325        &mut self.inner
5326    }
5327}
5328///Builder for [`PipelineCacheHeaderVersionSafetyCriticalOne`].
5329pub struct PipelineCacheHeaderVersionSafetyCriticalOneBuilder {
5330    inner: PipelineCacheHeaderVersionSafetyCriticalOne,
5331}
5332impl PipelineCacheHeaderVersionSafetyCriticalOne {
5333    /// Start building this struct.
5334    #[inline]
5335    pub fn builder() -> PipelineCacheHeaderVersionSafetyCriticalOneBuilder {
5336        PipelineCacheHeaderVersionSafetyCriticalOneBuilder {
5337            inner: PipelineCacheHeaderVersionSafetyCriticalOne {
5338                ..Default::default()
5339            },
5340        }
5341    }
5342}
5343impl PipelineCacheHeaderVersionSafetyCriticalOneBuilder {
5344    #[inline]
5345    pub fn header_version_one(mut self, value: PipelineCacheHeaderVersionOne) -> Self {
5346        self.inner.header_version_one = value;
5347        self
5348    }
5349    #[inline]
5350    pub fn validation_version(mut self, value: PipelineCacheValidationVersion) -> Self {
5351        self.inner.validation_version = value;
5352        self
5353    }
5354    #[inline]
5355    pub fn implementation_data(mut self, value: u32) -> Self {
5356        self.inner.implementation_data = value;
5357        self
5358    }
5359    #[inline]
5360    pub fn pipeline_index_count(mut self, value: u32) -> Self {
5361        self.inner.pipeline_index_count = value;
5362        self
5363    }
5364    #[inline]
5365    pub fn pipeline_index_stride(mut self, value: u32) -> Self {
5366        self.inner.pipeline_index_stride = value;
5367        self
5368    }
5369    #[inline]
5370    pub fn pipeline_index_offset(mut self, value: u64) -> Self {
5371        self.inner.pipeline_index_offset = value;
5372        self
5373    }
5374}
5375impl core::ops::Deref for PipelineCacheHeaderVersionSafetyCriticalOneBuilder {
5376    type Target = PipelineCacheHeaderVersionSafetyCriticalOne;
5377    #[inline]
5378    fn deref(&self) -> &Self::Target {
5379        &self.inner
5380    }
5381}
5382impl core::ops::DerefMut for PipelineCacheHeaderVersionSafetyCriticalOneBuilder {
5383    #[inline]
5384    fn deref_mut(&mut self) -> &mut Self::Target {
5385        &mut self.inner
5386    }
5387}
5388///Builder for [`PipelineCacheHeaderVersionDataGraphQCOM`].
5389pub struct PipelineCacheHeaderVersionDataGraphQCOMBuilder {
5390    inner: PipelineCacheHeaderVersionDataGraphQCOM,
5391}
5392impl PipelineCacheHeaderVersionDataGraphQCOM {
5393    /// Start building this struct.
5394    #[inline]
5395    pub fn builder() -> PipelineCacheHeaderVersionDataGraphQCOMBuilder {
5396        PipelineCacheHeaderVersionDataGraphQCOMBuilder {
5397            inner: PipelineCacheHeaderVersionDataGraphQCOM {
5398                ..Default::default()
5399            },
5400        }
5401    }
5402}
5403impl PipelineCacheHeaderVersionDataGraphQCOMBuilder {
5404    #[inline]
5405    pub fn header_size(mut self, value: u32) -> Self {
5406        self.inner.header_size = value;
5407        self
5408    }
5409    #[inline]
5410    pub fn header_version(mut self, value: PipelineCacheHeaderVersion) -> Self {
5411        self.inner.header_version = value;
5412        self
5413    }
5414    #[inline]
5415    pub fn cache_type(mut self, value: DataGraphModelCacheTypeQCOM) -> Self {
5416        self.inner.cache_type = value;
5417        self
5418    }
5419    #[inline]
5420    pub fn cache_version(mut self, value: u32) -> Self {
5421        self.inner.cache_version = value;
5422        self
5423    }
5424    #[inline]
5425    pub fn toolchain_version(
5426        mut self,
5427        value: [u32; DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM as usize],
5428    ) -> Self {
5429        self.inner.toolchain_version = value;
5430        self
5431    }
5432}
5433impl core::ops::Deref for PipelineCacheHeaderVersionDataGraphQCOMBuilder {
5434    type Target = PipelineCacheHeaderVersionDataGraphQCOM;
5435    #[inline]
5436    fn deref(&self) -> &Self::Target {
5437        &self.inner
5438    }
5439}
5440impl core::ops::DerefMut for PipelineCacheHeaderVersionDataGraphQCOMBuilder {
5441    #[inline]
5442    fn deref_mut(&mut self) -> &mut Self::Target {
5443        &mut self.inner
5444    }
5445}
5446///Builder for [`PushConstantRange`].
5447pub struct PushConstantRangeBuilder {
5448    inner: PushConstantRange,
5449}
5450impl PushConstantRange {
5451    /// Start building this struct.
5452    #[inline]
5453    pub fn builder() -> PushConstantRangeBuilder {
5454        PushConstantRangeBuilder {
5455            inner: PushConstantRange {
5456                ..Default::default()
5457            },
5458        }
5459    }
5460}
5461impl PushConstantRangeBuilder {
5462    #[inline]
5463    pub fn stage_flags(mut self, value: ShaderStageFlags) -> Self {
5464        self.inner.stage_flags = value;
5465        self
5466    }
5467    #[inline]
5468    pub fn offset(mut self, value: u32) -> Self {
5469        self.inner.offset = value;
5470        self
5471    }
5472    #[inline]
5473    pub fn size(mut self, value: u32) -> Self {
5474        self.inner.size = value;
5475        self
5476    }
5477}
5478impl core::ops::Deref for PushConstantRangeBuilder {
5479    type Target = PushConstantRange;
5480    #[inline]
5481    fn deref(&self) -> &Self::Target {
5482        &self.inner
5483    }
5484}
5485impl core::ops::DerefMut for PushConstantRangeBuilder {
5486    #[inline]
5487    fn deref_mut(&mut self) -> &mut Self::Target {
5488        &mut self.inner
5489    }
5490}
5491///Builder for [`PipelineBinaryCreateInfoKHR`] with lifetime-tied pNext safety.
5492pub struct PipelineBinaryCreateInfoKHRBuilder<'a> {
5493    inner: PipelineBinaryCreateInfoKHR,
5494    _marker: core::marker::PhantomData<&'a ()>,
5495}
5496impl PipelineBinaryCreateInfoKHR {
5497    /// Start building this struct; `s_type` is already set to the correct variant.
5498    #[inline]
5499    pub fn builder<'a>() -> PipelineBinaryCreateInfoKHRBuilder<'a> {
5500        PipelineBinaryCreateInfoKHRBuilder {
5501            inner: PipelineBinaryCreateInfoKHR {
5502                s_type: StructureType::from_raw(1000483001i32),
5503                ..Default::default()
5504            },
5505            _marker: core::marker::PhantomData,
5506        }
5507    }
5508}
5509impl<'a> PipelineBinaryCreateInfoKHRBuilder<'a> {
5510    #[inline]
5511    pub fn keys_and_data_info(
5512        mut self,
5513        value: &'a PipelineBinaryKeysAndDataKHR,
5514    ) -> Self {
5515        self.inner.p_keys_and_data_info = value;
5516        self
5517    }
5518    #[inline]
5519    pub fn pipeline(mut self, value: Pipeline) -> Self {
5520        self.inner.pipeline = value;
5521        self
5522    }
5523    #[inline]
5524    pub fn pipeline_create_info(mut self, value: &'a PipelineCreateInfoKHR) -> Self {
5525        self.inner.p_pipeline_create_info = value;
5526        self
5527    }
5528    ///Prepend a struct to the pNext chain. See [`PipelineBinaryCreateInfoKHR`]'s **Extended By** section for valid types.
5529    #[inline]
5530    pub fn push_next<T: ExtendsPipelineBinaryCreateInfoKHR>(
5531        mut self,
5532        next: &'a mut T,
5533    ) -> Self {
5534        unsafe {
5535            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
5536            (*next_ptr).p_next = self.inner.p_next as *mut _;
5537            self.inner.p_next = <*mut BaseOutStructure>::cast::<
5538                core::ffi::c_void,
5539            >(next_ptr) as *const _;
5540        }
5541        self
5542    }
5543}
5544impl<'a> core::ops::Deref for PipelineBinaryCreateInfoKHRBuilder<'a> {
5545    type Target = PipelineBinaryCreateInfoKHR;
5546    #[inline]
5547    fn deref(&self) -> &Self::Target {
5548        &self.inner
5549    }
5550}
5551impl<'a> core::ops::DerefMut for PipelineBinaryCreateInfoKHRBuilder<'a> {
5552    #[inline]
5553    fn deref_mut(&mut self) -> &mut Self::Target {
5554        &mut self.inner
5555    }
5556}
5557///Builder for [`PipelineBinaryHandlesInfoKHR`] with lifetime-tied pNext safety.
5558pub struct PipelineBinaryHandlesInfoKHRBuilder<'a> {
5559    inner: PipelineBinaryHandlesInfoKHR,
5560    _marker: core::marker::PhantomData<&'a ()>,
5561}
5562impl PipelineBinaryHandlesInfoKHR {
5563    /// Start building this struct; `s_type` is already set to the correct variant.
5564    #[inline]
5565    pub fn builder<'a>() -> PipelineBinaryHandlesInfoKHRBuilder<'a> {
5566        PipelineBinaryHandlesInfoKHRBuilder {
5567            inner: PipelineBinaryHandlesInfoKHR {
5568                s_type: StructureType::from_raw(1000483009i32),
5569                ..Default::default()
5570            },
5571            _marker: core::marker::PhantomData,
5572        }
5573    }
5574}
5575impl<'a> PipelineBinaryHandlesInfoKHRBuilder<'a> {
5576    #[inline]
5577    pub fn pipeline_binary_count(mut self, value: u32) -> Self {
5578        self.inner.pipeline_binary_count = value;
5579        self
5580    }
5581    #[inline]
5582    pub fn pipeline_binaries(mut self, slice: &'a mut [PipelineBinaryKHR]) -> Self {
5583        self.inner.pipeline_binary_count = slice.len() as u32;
5584        self.inner.p_pipeline_binaries = slice.as_mut_ptr();
5585        self
5586    }
5587    ///Prepend a struct to the pNext chain. See [`PipelineBinaryHandlesInfoKHR`]'s **Extended By** section for valid types.
5588    #[inline]
5589    pub fn push_next<T: ExtendsPipelineBinaryHandlesInfoKHR>(
5590        mut self,
5591        next: &'a mut T,
5592    ) -> Self {
5593        unsafe {
5594            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
5595            (*next_ptr).p_next = self.inner.p_next as *mut _;
5596            self.inner.p_next = <*mut BaseOutStructure>::cast::<
5597                core::ffi::c_void,
5598            >(next_ptr) as *const _;
5599        }
5600        self
5601    }
5602}
5603impl<'a> core::ops::Deref for PipelineBinaryHandlesInfoKHRBuilder<'a> {
5604    type Target = PipelineBinaryHandlesInfoKHR;
5605    #[inline]
5606    fn deref(&self) -> &Self::Target {
5607        &self.inner
5608    }
5609}
5610impl<'a> core::ops::DerefMut for PipelineBinaryHandlesInfoKHRBuilder<'a> {
5611    #[inline]
5612    fn deref_mut(&mut self) -> &mut Self::Target {
5613        &mut self.inner
5614    }
5615}
5616///Builder for [`PipelineBinaryDataKHR`].
5617pub struct PipelineBinaryDataKHRBuilder<'a> {
5618    inner: PipelineBinaryDataKHR,
5619    _marker: core::marker::PhantomData<&'a ()>,
5620}
5621impl PipelineBinaryDataKHR {
5622    /// Start building this struct.
5623    #[inline]
5624    pub fn builder<'a>() -> PipelineBinaryDataKHRBuilder<'a> {
5625        PipelineBinaryDataKHRBuilder {
5626            inner: PipelineBinaryDataKHR {
5627                ..Default::default()
5628            },
5629            _marker: core::marker::PhantomData,
5630        }
5631    }
5632}
5633impl<'a> PipelineBinaryDataKHRBuilder<'a> {
5634    #[inline]
5635    pub fn data(mut self, slice: &'a mut [core::ffi::c_void]) -> Self {
5636        self.inner.data_size = slice.len();
5637        self.inner.p_data = slice.as_mut_ptr();
5638        self
5639    }
5640}
5641impl<'a> core::ops::Deref for PipelineBinaryDataKHRBuilder<'a> {
5642    type Target = PipelineBinaryDataKHR;
5643    #[inline]
5644    fn deref(&self) -> &Self::Target {
5645        &self.inner
5646    }
5647}
5648impl<'a> core::ops::DerefMut for PipelineBinaryDataKHRBuilder<'a> {
5649    #[inline]
5650    fn deref_mut(&mut self) -> &mut Self::Target {
5651        &mut self.inner
5652    }
5653}
5654///Builder for [`PipelineBinaryKeysAndDataKHR`].
5655pub struct PipelineBinaryKeysAndDataKHRBuilder<'a> {
5656    inner: PipelineBinaryKeysAndDataKHR,
5657    _marker: core::marker::PhantomData<&'a ()>,
5658}
5659impl PipelineBinaryKeysAndDataKHR {
5660    /// Start building this struct.
5661    #[inline]
5662    pub fn builder<'a>() -> PipelineBinaryKeysAndDataKHRBuilder<'a> {
5663        PipelineBinaryKeysAndDataKHRBuilder {
5664            inner: PipelineBinaryKeysAndDataKHR {
5665                ..Default::default()
5666            },
5667            _marker: core::marker::PhantomData,
5668        }
5669    }
5670}
5671impl<'a> PipelineBinaryKeysAndDataKHRBuilder<'a> {
5672    #[inline]
5673    pub fn pipeline_binary_keys(mut self, slice: &'a [PipelineBinaryKeyKHR]) -> Self {
5674        self.inner.binary_count = slice.len() as u32;
5675        self.inner.p_pipeline_binary_keys = slice.as_ptr();
5676        self
5677    }
5678    #[inline]
5679    pub fn pipeline_binary_data(mut self, slice: &'a [PipelineBinaryDataKHR]) -> Self {
5680        self.inner.binary_count = slice.len() as u32;
5681        self.inner.p_pipeline_binary_data = slice.as_ptr();
5682        self
5683    }
5684}
5685impl<'a> core::ops::Deref for PipelineBinaryKeysAndDataKHRBuilder<'a> {
5686    type Target = PipelineBinaryKeysAndDataKHR;
5687    #[inline]
5688    fn deref(&self) -> &Self::Target {
5689        &self.inner
5690    }
5691}
5692impl<'a> core::ops::DerefMut for PipelineBinaryKeysAndDataKHRBuilder<'a> {
5693    #[inline]
5694    fn deref_mut(&mut self) -> &mut Self::Target {
5695        &mut self.inner
5696    }
5697}
5698///Builder for [`PipelineBinaryKeyKHR`] with lifetime-tied pNext safety.
5699pub struct PipelineBinaryKeyKHRBuilder<'a> {
5700    inner: PipelineBinaryKeyKHR,
5701    _marker: core::marker::PhantomData<&'a ()>,
5702}
5703impl PipelineBinaryKeyKHR {
5704    /// Start building this struct; `s_type` is already set to the correct variant.
5705    #[inline]
5706    pub fn builder<'a>() -> PipelineBinaryKeyKHRBuilder<'a> {
5707        PipelineBinaryKeyKHRBuilder {
5708            inner: PipelineBinaryKeyKHR {
5709                s_type: StructureType::from_raw(1000483003i32),
5710                ..Default::default()
5711            },
5712            _marker: core::marker::PhantomData,
5713        }
5714    }
5715}
5716impl<'a> PipelineBinaryKeyKHRBuilder<'a> {
5717    #[inline]
5718    pub fn key_size(mut self, value: u32) -> Self {
5719        self.inner.key_size = value;
5720        self
5721    }
5722    #[inline]
5723    pub fn key(
5724        mut self,
5725        value: [u8; MAX_PIPELINE_BINARY_KEY_SIZE_KHR as usize],
5726    ) -> Self {
5727        self.inner.key = value;
5728        self
5729    }
5730    ///Prepend a struct to the pNext chain. See [`PipelineBinaryKeyKHR`]'s **Extended By** section for valid types.
5731    #[inline]
5732    pub fn push_next<T: ExtendsPipelineBinaryKeyKHR>(mut self, next: &'a mut T) -> Self {
5733        unsafe {
5734            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
5735            (*next_ptr).p_next = self.inner.p_next as *mut _;
5736            self.inner.p_next = <*mut BaseOutStructure>::cast::<
5737                core::ffi::c_void,
5738            >(next_ptr);
5739        }
5740        self
5741    }
5742}
5743impl<'a> core::ops::Deref for PipelineBinaryKeyKHRBuilder<'a> {
5744    type Target = PipelineBinaryKeyKHR;
5745    #[inline]
5746    fn deref(&self) -> &Self::Target {
5747        &self.inner
5748    }
5749}
5750impl<'a> core::ops::DerefMut for PipelineBinaryKeyKHRBuilder<'a> {
5751    #[inline]
5752    fn deref_mut(&mut self) -> &mut Self::Target {
5753        &mut self.inner
5754    }
5755}
5756///Builder for [`PipelineBinaryInfoKHR`] with lifetime-tied pNext safety.
5757pub struct PipelineBinaryInfoKHRBuilder<'a> {
5758    inner: PipelineBinaryInfoKHR,
5759    _marker: core::marker::PhantomData<&'a ()>,
5760}
5761impl PipelineBinaryInfoKHR {
5762    /// Start building this struct; `s_type` is already set to the correct variant.
5763    #[inline]
5764    pub fn builder<'a>() -> PipelineBinaryInfoKHRBuilder<'a> {
5765        PipelineBinaryInfoKHRBuilder {
5766            inner: PipelineBinaryInfoKHR {
5767                s_type: StructureType::from_raw(1000483002i32),
5768                ..Default::default()
5769            },
5770            _marker: core::marker::PhantomData,
5771        }
5772    }
5773}
5774impl<'a> PipelineBinaryInfoKHRBuilder<'a> {
5775    #[inline]
5776    pub fn pipeline_binaries(mut self, slice: &'a [PipelineBinaryKHR]) -> Self {
5777        self.inner.binary_count = slice.len() as u32;
5778        self.inner.p_pipeline_binaries = slice.as_ptr();
5779        self
5780    }
5781    ///Prepend a struct to the pNext chain. See [`PipelineBinaryInfoKHR`]'s **Extended By** section for valid types.
5782    #[inline]
5783    pub fn push_next<T: ExtendsPipelineBinaryInfoKHR>(
5784        mut self,
5785        next: &'a mut T,
5786    ) -> Self {
5787        unsafe {
5788            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
5789            (*next_ptr).p_next = self.inner.p_next as *mut _;
5790            self.inner.p_next = <*mut BaseOutStructure>::cast::<
5791                core::ffi::c_void,
5792            >(next_ptr) as *const _;
5793        }
5794        self
5795    }
5796}
5797impl<'a> core::ops::Deref for PipelineBinaryInfoKHRBuilder<'a> {
5798    type Target = PipelineBinaryInfoKHR;
5799    #[inline]
5800    fn deref(&self) -> &Self::Target {
5801        &self.inner
5802    }
5803}
5804impl<'a> core::ops::DerefMut for PipelineBinaryInfoKHRBuilder<'a> {
5805    #[inline]
5806    fn deref_mut(&mut self) -> &mut Self::Target {
5807        &mut self.inner
5808    }
5809}
5810///Builder for [`ReleaseCapturedPipelineDataInfoKHR`] with lifetime-tied pNext safety.
5811pub struct ReleaseCapturedPipelineDataInfoKHRBuilder<'a> {
5812    inner: ReleaseCapturedPipelineDataInfoKHR,
5813    _marker: core::marker::PhantomData<&'a ()>,
5814}
5815impl ReleaseCapturedPipelineDataInfoKHR {
5816    /// Start building this struct; `s_type` is already set to the correct variant.
5817    #[inline]
5818    pub fn builder<'a>() -> ReleaseCapturedPipelineDataInfoKHRBuilder<'a> {
5819        ReleaseCapturedPipelineDataInfoKHRBuilder {
5820            inner: ReleaseCapturedPipelineDataInfoKHR {
5821                s_type: StructureType::from_raw(1000483005i32),
5822                ..Default::default()
5823            },
5824            _marker: core::marker::PhantomData,
5825        }
5826    }
5827}
5828impl<'a> ReleaseCapturedPipelineDataInfoKHRBuilder<'a> {
5829    #[inline]
5830    pub fn pipeline(mut self, value: Pipeline) -> Self {
5831        self.inner.pipeline = value;
5832        self
5833    }
5834    ///Prepend a struct to the pNext chain. See [`ReleaseCapturedPipelineDataInfoKHR`]'s **Extended By** section for valid types.
5835    #[inline]
5836    pub fn push_next<T: ExtendsReleaseCapturedPipelineDataInfoKHR>(
5837        mut self,
5838        next: &'a mut T,
5839    ) -> Self {
5840        unsafe {
5841            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
5842            (*next_ptr).p_next = self.inner.p_next as *mut _;
5843            self.inner.p_next = <*mut BaseOutStructure>::cast::<
5844                core::ffi::c_void,
5845            >(next_ptr);
5846        }
5847        self
5848    }
5849}
5850impl<'a> core::ops::Deref for ReleaseCapturedPipelineDataInfoKHRBuilder<'a> {
5851    type Target = ReleaseCapturedPipelineDataInfoKHR;
5852    #[inline]
5853    fn deref(&self) -> &Self::Target {
5854        &self.inner
5855    }
5856}
5857impl<'a> core::ops::DerefMut for ReleaseCapturedPipelineDataInfoKHRBuilder<'a> {
5858    #[inline]
5859    fn deref_mut(&mut self) -> &mut Self::Target {
5860        &mut self.inner
5861    }
5862}
5863///Builder for [`PipelineBinaryDataInfoKHR`] with lifetime-tied pNext safety.
5864pub struct PipelineBinaryDataInfoKHRBuilder<'a> {
5865    inner: PipelineBinaryDataInfoKHR,
5866    _marker: core::marker::PhantomData<&'a ()>,
5867}
5868impl PipelineBinaryDataInfoKHR {
5869    /// Start building this struct; `s_type` is already set to the correct variant.
5870    #[inline]
5871    pub fn builder<'a>() -> PipelineBinaryDataInfoKHRBuilder<'a> {
5872        PipelineBinaryDataInfoKHRBuilder {
5873            inner: PipelineBinaryDataInfoKHR {
5874                s_type: StructureType::from_raw(1000483006i32),
5875                ..Default::default()
5876            },
5877            _marker: core::marker::PhantomData,
5878        }
5879    }
5880}
5881impl<'a> PipelineBinaryDataInfoKHRBuilder<'a> {
5882    #[inline]
5883    pub fn pipeline_binary(mut self, value: PipelineBinaryKHR) -> Self {
5884        self.inner.pipeline_binary = value;
5885        self
5886    }
5887    ///Prepend a struct to the pNext chain. See [`PipelineBinaryDataInfoKHR`]'s **Extended By** section for valid types.
5888    #[inline]
5889    pub fn push_next<T: ExtendsPipelineBinaryDataInfoKHR>(
5890        mut self,
5891        next: &'a mut T,
5892    ) -> Self {
5893        unsafe {
5894            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
5895            (*next_ptr).p_next = self.inner.p_next as *mut _;
5896            self.inner.p_next = <*mut BaseOutStructure>::cast::<
5897                core::ffi::c_void,
5898            >(next_ptr);
5899        }
5900        self
5901    }
5902}
5903impl<'a> core::ops::Deref for PipelineBinaryDataInfoKHRBuilder<'a> {
5904    type Target = PipelineBinaryDataInfoKHR;
5905    #[inline]
5906    fn deref(&self) -> &Self::Target {
5907        &self.inner
5908    }
5909}
5910impl<'a> core::ops::DerefMut for PipelineBinaryDataInfoKHRBuilder<'a> {
5911    #[inline]
5912    fn deref_mut(&mut self) -> &mut Self::Target {
5913        &mut self.inner
5914    }
5915}
5916///Builder for [`PipelineCreateInfoKHR`] with lifetime-tied pNext safety.
5917pub struct PipelineCreateInfoKHRBuilder<'a> {
5918    inner: PipelineCreateInfoKHR,
5919    _marker: core::marker::PhantomData<&'a ()>,
5920}
5921impl PipelineCreateInfoKHR {
5922    /// Start building this struct; `s_type` is already set to the correct variant.
5923    #[inline]
5924    pub fn builder<'a>() -> PipelineCreateInfoKHRBuilder<'a> {
5925        PipelineCreateInfoKHRBuilder {
5926            inner: PipelineCreateInfoKHR {
5927                s_type: StructureType::from_raw(1000483007i32),
5928                ..Default::default()
5929            },
5930            _marker: core::marker::PhantomData,
5931        }
5932    }
5933}
5934impl<'a> PipelineCreateInfoKHRBuilder<'a> {
5935    ///Prepend a struct to the pNext chain. See [`PipelineCreateInfoKHR`]'s **Extended By** section for valid types.
5936    #[inline]
5937    pub fn push_next<T: ExtendsPipelineCreateInfoKHR>(
5938        mut self,
5939        next: &'a mut T,
5940    ) -> Self {
5941        unsafe {
5942            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
5943            (*next_ptr).p_next = self.inner.p_next as *mut _;
5944            self.inner.p_next = <*mut BaseOutStructure>::cast::<
5945                core::ffi::c_void,
5946            >(next_ptr);
5947        }
5948        self
5949    }
5950}
5951impl<'a> core::ops::Deref for PipelineCreateInfoKHRBuilder<'a> {
5952    type Target = PipelineCreateInfoKHR;
5953    #[inline]
5954    fn deref(&self) -> &Self::Target {
5955        &self.inner
5956    }
5957}
5958impl<'a> core::ops::DerefMut for PipelineCreateInfoKHRBuilder<'a> {
5959    #[inline]
5960    fn deref_mut(&mut self) -> &mut Self::Target {
5961        &mut self.inner
5962    }
5963}
5964///Builder for [`PipelineLayoutCreateInfo`] with lifetime-tied pNext safety.
5965pub struct PipelineLayoutCreateInfoBuilder<'a> {
5966    inner: PipelineLayoutCreateInfo,
5967    _marker: core::marker::PhantomData<&'a ()>,
5968}
5969impl PipelineLayoutCreateInfo {
5970    /// Start building this struct; `s_type` is already set to the correct variant.
5971    #[inline]
5972    pub fn builder<'a>() -> PipelineLayoutCreateInfoBuilder<'a> {
5973        PipelineLayoutCreateInfoBuilder {
5974            inner: PipelineLayoutCreateInfo {
5975                s_type: StructureType::from_raw(30i32),
5976                ..Default::default()
5977            },
5978            _marker: core::marker::PhantomData,
5979        }
5980    }
5981}
5982impl<'a> PipelineLayoutCreateInfoBuilder<'a> {
5983    #[inline]
5984    pub fn flags(mut self, value: PipelineLayoutCreateFlags) -> Self {
5985        self.inner.flags = value;
5986        self
5987    }
5988    #[inline]
5989    pub fn set_layout_count(mut self, value: u32) -> Self {
5990        self.inner.set_layout_count = value;
5991        self
5992    }
5993    #[inline]
5994    pub fn set_layouts(mut self, slice: &'a [DescriptorSetLayout]) -> Self {
5995        self.inner.set_layout_count = slice.len() as u32;
5996        self.inner.p_set_layouts = slice.as_ptr();
5997        self
5998    }
5999    #[inline]
6000    pub fn push_constant_ranges(mut self, slice: &'a [PushConstantRange]) -> Self {
6001        self.inner.push_constant_range_count = slice.len() as u32;
6002        self.inner.p_push_constant_ranges = slice.as_ptr();
6003        self
6004    }
6005    ///Prepend a struct to the pNext chain. See [`PipelineLayoutCreateInfo`]'s **Extended By** section for valid types.
6006    #[inline]
6007    pub fn push_next<T: ExtendsPipelineLayoutCreateInfo>(
6008        mut self,
6009        next: &'a mut T,
6010    ) -> Self {
6011        unsafe {
6012            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
6013            (*next_ptr).p_next = self.inner.p_next as *mut _;
6014            self.inner.p_next = <*mut BaseOutStructure>::cast::<
6015                core::ffi::c_void,
6016            >(next_ptr) as *const _;
6017        }
6018        self
6019    }
6020}
6021impl<'a> core::ops::Deref for PipelineLayoutCreateInfoBuilder<'a> {
6022    type Target = PipelineLayoutCreateInfo;
6023    #[inline]
6024    fn deref(&self) -> &Self::Target {
6025        &self.inner
6026    }
6027}
6028impl<'a> core::ops::DerefMut for PipelineLayoutCreateInfoBuilder<'a> {
6029    #[inline]
6030    fn deref_mut(&mut self) -> &mut Self::Target {
6031        &mut self.inner
6032    }
6033}
6034///Builder for [`SamplerCreateInfo`] with lifetime-tied pNext safety.
6035pub struct SamplerCreateInfoBuilder<'a> {
6036    inner: SamplerCreateInfo,
6037    _marker: core::marker::PhantomData<&'a ()>,
6038}
6039impl SamplerCreateInfo {
6040    /// Start building this struct; `s_type` is already set to the correct variant.
6041    #[inline]
6042    pub fn builder<'a>() -> SamplerCreateInfoBuilder<'a> {
6043        SamplerCreateInfoBuilder {
6044            inner: SamplerCreateInfo {
6045                s_type: StructureType::from_raw(31i32),
6046                ..Default::default()
6047            },
6048            _marker: core::marker::PhantomData,
6049        }
6050    }
6051}
6052impl<'a> SamplerCreateInfoBuilder<'a> {
6053    #[inline]
6054    pub fn flags(mut self, value: SamplerCreateFlags) -> Self {
6055        self.inner.flags = value;
6056        self
6057    }
6058    #[inline]
6059    pub fn mag_filter(mut self, value: Filter) -> Self {
6060        self.inner.mag_filter = value;
6061        self
6062    }
6063    #[inline]
6064    pub fn min_filter(mut self, value: Filter) -> Self {
6065        self.inner.min_filter = value;
6066        self
6067    }
6068    #[inline]
6069    pub fn mipmap_mode(mut self, value: SamplerMipmapMode) -> Self {
6070        self.inner.mipmap_mode = value;
6071        self
6072    }
6073    #[inline]
6074    pub fn address_mode_u(mut self, value: SamplerAddressMode) -> Self {
6075        self.inner.address_mode_u = value;
6076        self
6077    }
6078    #[inline]
6079    pub fn address_mode_v(mut self, value: SamplerAddressMode) -> Self {
6080        self.inner.address_mode_v = value;
6081        self
6082    }
6083    #[inline]
6084    pub fn address_mode_w(mut self, value: SamplerAddressMode) -> Self {
6085        self.inner.address_mode_w = value;
6086        self
6087    }
6088    #[inline]
6089    pub fn mip_lod_bias(mut self, value: f32) -> Self {
6090        self.inner.mip_lod_bias = value;
6091        self
6092    }
6093    #[inline]
6094    pub fn anisotropy_enable(mut self, value: bool) -> Self {
6095        self.inner.anisotropy_enable = value as u32;
6096        self
6097    }
6098    #[inline]
6099    pub fn max_anisotropy(mut self, value: f32) -> Self {
6100        self.inner.max_anisotropy = value;
6101        self
6102    }
6103    #[inline]
6104    pub fn compare_enable(mut self, value: bool) -> Self {
6105        self.inner.compare_enable = value as u32;
6106        self
6107    }
6108    #[inline]
6109    pub fn compare_op(mut self, value: CompareOp) -> Self {
6110        self.inner.compare_op = value;
6111        self
6112    }
6113    #[inline]
6114    pub fn min_lod(mut self, value: f32) -> Self {
6115        self.inner.min_lod = value;
6116        self
6117    }
6118    #[inline]
6119    pub fn max_lod(mut self, value: f32) -> Self {
6120        self.inner.max_lod = value;
6121        self
6122    }
6123    #[inline]
6124    pub fn border_color(mut self, value: BorderColor) -> Self {
6125        self.inner.border_color = value;
6126        self
6127    }
6128    #[inline]
6129    pub fn unnormalized_coordinates(mut self, value: bool) -> Self {
6130        self.inner.unnormalized_coordinates = value as u32;
6131        self
6132    }
6133    ///Prepend a struct to the pNext chain. See [`SamplerCreateInfo`]'s **Extended By** section for valid types.
6134    #[inline]
6135    pub fn push_next<T: ExtendsSamplerCreateInfo>(mut self, next: &'a mut T) -> Self {
6136        unsafe {
6137            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
6138            (*next_ptr).p_next = self.inner.p_next as *mut _;
6139            self.inner.p_next = <*mut BaseOutStructure>::cast::<
6140                core::ffi::c_void,
6141            >(next_ptr) as *const _;
6142        }
6143        self
6144    }
6145}
6146impl<'a> core::ops::Deref for SamplerCreateInfoBuilder<'a> {
6147    type Target = SamplerCreateInfo;
6148    #[inline]
6149    fn deref(&self) -> &Self::Target {
6150        &self.inner
6151    }
6152}
6153impl<'a> core::ops::DerefMut for SamplerCreateInfoBuilder<'a> {
6154    #[inline]
6155    fn deref_mut(&mut self) -> &mut Self::Target {
6156        &mut self.inner
6157    }
6158}
6159///Builder for [`CommandPoolCreateInfo`] with lifetime-tied pNext safety.
6160pub struct CommandPoolCreateInfoBuilder<'a> {
6161    inner: CommandPoolCreateInfo,
6162    _marker: core::marker::PhantomData<&'a ()>,
6163}
6164impl CommandPoolCreateInfo {
6165    /// Start building this struct; `s_type` is already set to the correct variant.
6166    #[inline]
6167    pub fn builder<'a>() -> CommandPoolCreateInfoBuilder<'a> {
6168        CommandPoolCreateInfoBuilder {
6169            inner: CommandPoolCreateInfo {
6170                s_type: StructureType::from_raw(39i32),
6171                ..Default::default()
6172            },
6173            _marker: core::marker::PhantomData,
6174        }
6175    }
6176}
6177impl<'a> CommandPoolCreateInfoBuilder<'a> {
6178    #[inline]
6179    pub fn flags(mut self, value: CommandPoolCreateFlags) -> Self {
6180        self.inner.flags = value;
6181        self
6182    }
6183    #[inline]
6184    pub fn queue_family_index(mut self, value: u32) -> Self {
6185        self.inner.queue_family_index = value;
6186        self
6187    }
6188    ///Prepend a struct to the pNext chain. See [`CommandPoolCreateInfo`]'s **Extended By** section for valid types.
6189    #[inline]
6190    pub fn push_next<T: ExtendsCommandPoolCreateInfo>(
6191        mut self,
6192        next: &'a mut T,
6193    ) -> Self {
6194        unsafe {
6195            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
6196            (*next_ptr).p_next = self.inner.p_next as *mut _;
6197            self.inner.p_next = <*mut BaseOutStructure>::cast::<
6198                core::ffi::c_void,
6199            >(next_ptr) as *const _;
6200        }
6201        self
6202    }
6203}
6204impl<'a> core::ops::Deref for CommandPoolCreateInfoBuilder<'a> {
6205    type Target = CommandPoolCreateInfo;
6206    #[inline]
6207    fn deref(&self) -> &Self::Target {
6208        &self.inner
6209    }
6210}
6211impl<'a> core::ops::DerefMut for CommandPoolCreateInfoBuilder<'a> {
6212    #[inline]
6213    fn deref_mut(&mut self) -> &mut Self::Target {
6214        &mut self.inner
6215    }
6216}
6217///Builder for [`CommandBufferAllocateInfo`] with lifetime-tied pNext safety.
6218pub struct CommandBufferAllocateInfoBuilder<'a> {
6219    inner: CommandBufferAllocateInfo,
6220    _marker: core::marker::PhantomData<&'a ()>,
6221}
6222impl CommandBufferAllocateInfo {
6223    /// Start building this struct; `s_type` is already set to the correct variant.
6224    #[inline]
6225    pub fn builder<'a>() -> CommandBufferAllocateInfoBuilder<'a> {
6226        CommandBufferAllocateInfoBuilder {
6227            inner: CommandBufferAllocateInfo {
6228                s_type: StructureType::from_raw(40i32),
6229                ..Default::default()
6230            },
6231            _marker: core::marker::PhantomData,
6232        }
6233    }
6234}
6235impl<'a> CommandBufferAllocateInfoBuilder<'a> {
6236    #[inline]
6237    pub fn command_pool(mut self, value: CommandPool) -> Self {
6238        self.inner.command_pool = value;
6239        self
6240    }
6241    #[inline]
6242    pub fn level(mut self, value: CommandBufferLevel) -> Self {
6243        self.inner.level = value;
6244        self
6245    }
6246    #[inline]
6247    pub fn command_buffer_count(mut self, value: u32) -> Self {
6248        self.inner.command_buffer_count = value;
6249        self
6250    }
6251    ///Prepend a struct to the pNext chain. See [`CommandBufferAllocateInfo`]'s **Extended By** section for valid types.
6252    #[inline]
6253    pub fn push_next<T: ExtendsCommandBufferAllocateInfo>(
6254        mut self,
6255        next: &'a mut T,
6256    ) -> Self {
6257        unsafe {
6258            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
6259            (*next_ptr).p_next = self.inner.p_next as *mut _;
6260            self.inner.p_next = <*mut BaseOutStructure>::cast::<
6261                core::ffi::c_void,
6262            >(next_ptr) as *const _;
6263        }
6264        self
6265    }
6266}
6267impl<'a> core::ops::Deref for CommandBufferAllocateInfoBuilder<'a> {
6268    type Target = CommandBufferAllocateInfo;
6269    #[inline]
6270    fn deref(&self) -> &Self::Target {
6271        &self.inner
6272    }
6273}
6274impl<'a> core::ops::DerefMut for CommandBufferAllocateInfoBuilder<'a> {
6275    #[inline]
6276    fn deref_mut(&mut self) -> &mut Self::Target {
6277        &mut self.inner
6278    }
6279}
6280///Builder for [`CommandBufferInheritanceInfo`] with lifetime-tied pNext safety.
6281pub struct CommandBufferInheritanceInfoBuilder<'a> {
6282    inner: CommandBufferInheritanceInfo,
6283    _marker: core::marker::PhantomData<&'a ()>,
6284}
6285impl CommandBufferInheritanceInfo {
6286    /// Start building this struct; `s_type` is already set to the correct variant.
6287    #[inline]
6288    pub fn builder<'a>() -> CommandBufferInheritanceInfoBuilder<'a> {
6289        CommandBufferInheritanceInfoBuilder {
6290            inner: CommandBufferInheritanceInfo {
6291                s_type: StructureType::from_raw(41i32),
6292                ..Default::default()
6293            },
6294            _marker: core::marker::PhantomData,
6295        }
6296    }
6297}
6298impl<'a> CommandBufferInheritanceInfoBuilder<'a> {
6299    #[inline]
6300    pub fn render_pass(mut self, value: RenderPass) -> Self {
6301        self.inner.render_pass = value;
6302        self
6303    }
6304    #[inline]
6305    pub fn subpass(mut self, value: u32) -> Self {
6306        self.inner.subpass = value;
6307        self
6308    }
6309    #[inline]
6310    pub fn framebuffer(mut self, value: Framebuffer) -> Self {
6311        self.inner.framebuffer = value;
6312        self
6313    }
6314    #[inline]
6315    pub fn occlusion_query_enable(mut self, value: bool) -> Self {
6316        self.inner.occlusion_query_enable = value as u32;
6317        self
6318    }
6319    #[inline]
6320    pub fn query_flags(mut self, value: QueryControlFlags) -> Self {
6321        self.inner.query_flags = value;
6322        self
6323    }
6324    #[inline]
6325    pub fn pipeline_statistics(mut self, value: QueryPipelineStatisticFlags) -> Self {
6326        self.inner.pipeline_statistics = value;
6327        self
6328    }
6329    ///Prepend a struct to the pNext chain. See [`CommandBufferInheritanceInfo`]'s **Extended By** section for valid types.
6330    #[inline]
6331    pub fn push_next<T: ExtendsCommandBufferInheritanceInfo>(
6332        mut self,
6333        next: &'a mut T,
6334    ) -> Self {
6335        unsafe {
6336            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
6337            (*next_ptr).p_next = self.inner.p_next as *mut _;
6338            self.inner.p_next = <*mut BaseOutStructure>::cast::<
6339                core::ffi::c_void,
6340            >(next_ptr) as *const _;
6341        }
6342        self
6343    }
6344}
6345impl<'a> core::ops::Deref for CommandBufferInheritanceInfoBuilder<'a> {
6346    type Target = CommandBufferInheritanceInfo;
6347    #[inline]
6348    fn deref(&self) -> &Self::Target {
6349        &self.inner
6350    }
6351}
6352impl<'a> core::ops::DerefMut for CommandBufferInheritanceInfoBuilder<'a> {
6353    #[inline]
6354    fn deref_mut(&mut self) -> &mut Self::Target {
6355        &mut self.inner
6356    }
6357}
6358///Builder for [`CommandBufferBeginInfo`] with lifetime-tied pNext safety.
6359pub struct CommandBufferBeginInfoBuilder<'a> {
6360    inner: CommandBufferBeginInfo,
6361    _marker: core::marker::PhantomData<&'a ()>,
6362}
6363impl CommandBufferBeginInfo {
6364    /// Start building this struct; `s_type` is already set to the correct variant.
6365    #[inline]
6366    pub fn builder<'a>() -> CommandBufferBeginInfoBuilder<'a> {
6367        CommandBufferBeginInfoBuilder {
6368            inner: CommandBufferBeginInfo {
6369                s_type: StructureType::from_raw(42i32),
6370                ..Default::default()
6371            },
6372            _marker: core::marker::PhantomData,
6373        }
6374    }
6375}
6376impl<'a> CommandBufferBeginInfoBuilder<'a> {
6377    #[inline]
6378    pub fn flags(mut self, value: CommandBufferUsageFlags) -> Self {
6379        self.inner.flags = value;
6380        self
6381    }
6382    #[inline]
6383    pub fn inheritance_info(mut self, value: &'a CommandBufferInheritanceInfo) -> Self {
6384        self.inner.p_inheritance_info = value;
6385        self
6386    }
6387    ///Prepend a struct to the pNext chain. See [`CommandBufferBeginInfo`]'s **Extended By** section for valid types.
6388    #[inline]
6389    pub fn push_next<T: ExtendsCommandBufferBeginInfo>(
6390        mut self,
6391        next: &'a mut T,
6392    ) -> Self {
6393        unsafe {
6394            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
6395            (*next_ptr).p_next = self.inner.p_next as *mut _;
6396            self.inner.p_next = <*mut BaseOutStructure>::cast::<
6397                core::ffi::c_void,
6398            >(next_ptr) as *const _;
6399        }
6400        self
6401    }
6402}
6403impl<'a> core::ops::Deref for CommandBufferBeginInfoBuilder<'a> {
6404    type Target = CommandBufferBeginInfo;
6405    #[inline]
6406    fn deref(&self) -> &Self::Target {
6407        &self.inner
6408    }
6409}
6410impl<'a> core::ops::DerefMut for CommandBufferBeginInfoBuilder<'a> {
6411    #[inline]
6412    fn deref_mut(&mut self) -> &mut Self::Target {
6413        &mut self.inner
6414    }
6415}
6416///Builder for [`RenderPassBeginInfo`] with lifetime-tied pNext safety.
6417pub struct RenderPassBeginInfoBuilder<'a> {
6418    inner: RenderPassBeginInfo,
6419    _marker: core::marker::PhantomData<&'a ()>,
6420}
6421impl RenderPassBeginInfo {
6422    /// Start building this struct; `s_type` is already set to the correct variant.
6423    #[inline]
6424    pub fn builder<'a>() -> RenderPassBeginInfoBuilder<'a> {
6425        RenderPassBeginInfoBuilder {
6426            inner: RenderPassBeginInfo {
6427                s_type: StructureType::from_raw(43i32),
6428                ..Default::default()
6429            },
6430            _marker: core::marker::PhantomData,
6431        }
6432    }
6433}
6434impl<'a> RenderPassBeginInfoBuilder<'a> {
6435    #[inline]
6436    pub fn render_pass(mut self, value: RenderPass) -> Self {
6437        self.inner.render_pass = value;
6438        self
6439    }
6440    #[inline]
6441    pub fn framebuffer(mut self, value: Framebuffer) -> Self {
6442        self.inner.framebuffer = value;
6443        self
6444    }
6445    #[inline]
6446    pub fn render_area(mut self, value: Rect2D) -> Self {
6447        self.inner.render_area = value;
6448        self
6449    }
6450    #[inline]
6451    pub fn clear_values(mut self, slice: &'a [ClearValue]) -> Self {
6452        self.inner.clear_value_count = slice.len() as u32;
6453        self.inner.p_clear_values = slice.as_ptr();
6454        self
6455    }
6456    ///Prepend a struct to the pNext chain. See [`RenderPassBeginInfo`]'s **Extended By** section for valid types.
6457    #[inline]
6458    pub fn push_next<T: ExtendsRenderPassBeginInfo>(mut self, next: &'a mut T) -> Self {
6459        unsafe {
6460            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
6461            (*next_ptr).p_next = self.inner.p_next as *mut _;
6462            self.inner.p_next = <*mut BaseOutStructure>::cast::<
6463                core::ffi::c_void,
6464            >(next_ptr) as *const _;
6465        }
6466        self
6467    }
6468}
6469impl<'a> core::ops::Deref for RenderPassBeginInfoBuilder<'a> {
6470    type Target = RenderPassBeginInfo;
6471    #[inline]
6472    fn deref(&self) -> &Self::Target {
6473        &self.inner
6474    }
6475}
6476impl<'a> core::ops::DerefMut for RenderPassBeginInfoBuilder<'a> {
6477    #[inline]
6478    fn deref_mut(&mut self) -> &mut Self::Target {
6479        &mut self.inner
6480    }
6481}
6482///Builder for [`ClearDepthStencilValue`].
6483pub struct ClearDepthStencilValueBuilder {
6484    inner: ClearDepthStencilValue,
6485}
6486impl ClearDepthStencilValue {
6487    /// Start building this struct.
6488    #[inline]
6489    pub fn builder() -> ClearDepthStencilValueBuilder {
6490        ClearDepthStencilValueBuilder {
6491            inner: ClearDepthStencilValue {
6492                ..Default::default()
6493            },
6494        }
6495    }
6496}
6497impl ClearDepthStencilValueBuilder {
6498    #[inline]
6499    pub fn depth(mut self, value: f32) -> Self {
6500        self.inner.depth = value;
6501        self
6502    }
6503    #[inline]
6504    pub fn stencil(mut self, value: u32) -> Self {
6505        self.inner.stencil = value;
6506        self
6507    }
6508}
6509impl core::ops::Deref for ClearDepthStencilValueBuilder {
6510    type Target = ClearDepthStencilValue;
6511    #[inline]
6512    fn deref(&self) -> &Self::Target {
6513        &self.inner
6514    }
6515}
6516impl core::ops::DerefMut for ClearDepthStencilValueBuilder {
6517    #[inline]
6518    fn deref_mut(&mut self) -> &mut Self::Target {
6519        &mut self.inner
6520    }
6521}
6522///Builder for [`ClearAttachment`].
6523pub struct ClearAttachmentBuilder {
6524    inner: ClearAttachment,
6525}
6526impl ClearAttachment {
6527    /// Start building this struct.
6528    #[inline]
6529    pub fn builder() -> ClearAttachmentBuilder {
6530        ClearAttachmentBuilder {
6531            inner: ClearAttachment {
6532                ..Default::default()
6533            },
6534        }
6535    }
6536}
6537impl ClearAttachmentBuilder {
6538    #[inline]
6539    pub fn aspect_mask(mut self, value: ImageAspectFlags) -> Self {
6540        self.inner.aspect_mask = value;
6541        self
6542    }
6543    #[inline]
6544    pub fn color_attachment(mut self, value: u32) -> Self {
6545        self.inner.color_attachment = value;
6546        self
6547    }
6548    #[inline]
6549    pub fn clear_value(mut self, value: ClearValue) -> Self {
6550        self.inner.clear_value = value;
6551        self
6552    }
6553}
6554impl core::ops::Deref for ClearAttachmentBuilder {
6555    type Target = ClearAttachment;
6556    #[inline]
6557    fn deref(&self) -> &Self::Target {
6558        &self.inner
6559    }
6560}
6561impl core::ops::DerefMut for ClearAttachmentBuilder {
6562    #[inline]
6563    fn deref_mut(&mut self) -> &mut Self::Target {
6564        &mut self.inner
6565    }
6566}
6567///Builder for [`AttachmentDescription`].
6568pub struct AttachmentDescriptionBuilder {
6569    inner: AttachmentDescription,
6570}
6571impl AttachmentDescription {
6572    /// Start building this struct.
6573    #[inline]
6574    pub fn builder() -> AttachmentDescriptionBuilder {
6575        AttachmentDescriptionBuilder {
6576            inner: AttachmentDescription {
6577                ..Default::default()
6578            },
6579        }
6580    }
6581}
6582impl AttachmentDescriptionBuilder {
6583    #[inline]
6584    pub fn flags(mut self, value: AttachmentDescriptionFlags) -> Self {
6585        self.inner.flags = value;
6586        self
6587    }
6588    #[inline]
6589    pub fn format(mut self, value: Format) -> Self {
6590        self.inner.format = value;
6591        self
6592    }
6593    #[inline]
6594    pub fn samples(mut self, value: SampleCountFlagBits) -> Self {
6595        self.inner.samples = value;
6596        self
6597    }
6598    #[inline]
6599    pub fn load_op(mut self, value: AttachmentLoadOp) -> Self {
6600        self.inner.load_op = value;
6601        self
6602    }
6603    #[inline]
6604    pub fn store_op(mut self, value: AttachmentStoreOp) -> Self {
6605        self.inner.store_op = value;
6606        self
6607    }
6608    #[inline]
6609    pub fn stencil_load_op(mut self, value: AttachmentLoadOp) -> Self {
6610        self.inner.stencil_load_op = value;
6611        self
6612    }
6613    #[inline]
6614    pub fn stencil_store_op(mut self, value: AttachmentStoreOp) -> Self {
6615        self.inner.stencil_store_op = value;
6616        self
6617    }
6618    #[inline]
6619    pub fn initial_layout(mut self, value: ImageLayout) -> Self {
6620        self.inner.initial_layout = value;
6621        self
6622    }
6623    #[inline]
6624    pub fn final_layout(mut self, value: ImageLayout) -> Self {
6625        self.inner.final_layout = value;
6626        self
6627    }
6628}
6629impl core::ops::Deref for AttachmentDescriptionBuilder {
6630    type Target = AttachmentDescription;
6631    #[inline]
6632    fn deref(&self) -> &Self::Target {
6633        &self.inner
6634    }
6635}
6636impl core::ops::DerefMut for AttachmentDescriptionBuilder {
6637    #[inline]
6638    fn deref_mut(&mut self) -> &mut Self::Target {
6639        &mut self.inner
6640    }
6641}
6642///Builder for [`AttachmentReference`].
6643pub struct AttachmentReferenceBuilder {
6644    inner: AttachmentReference,
6645}
6646impl AttachmentReference {
6647    /// Start building this struct.
6648    #[inline]
6649    pub fn builder() -> AttachmentReferenceBuilder {
6650        AttachmentReferenceBuilder {
6651            inner: AttachmentReference {
6652                ..Default::default()
6653            },
6654        }
6655    }
6656}
6657impl AttachmentReferenceBuilder {
6658    #[inline]
6659    pub fn attachment(mut self, value: u32) -> Self {
6660        self.inner.attachment = value;
6661        self
6662    }
6663    #[inline]
6664    pub fn layout(mut self, value: ImageLayout) -> Self {
6665        self.inner.layout = value;
6666        self
6667    }
6668}
6669impl core::ops::Deref for AttachmentReferenceBuilder {
6670    type Target = AttachmentReference;
6671    #[inline]
6672    fn deref(&self) -> &Self::Target {
6673        &self.inner
6674    }
6675}
6676impl core::ops::DerefMut for AttachmentReferenceBuilder {
6677    #[inline]
6678    fn deref_mut(&mut self) -> &mut Self::Target {
6679        &mut self.inner
6680    }
6681}
6682///Builder for [`SubpassDescription`].
6683pub struct SubpassDescriptionBuilder<'a> {
6684    inner: SubpassDescription,
6685    _marker: core::marker::PhantomData<&'a ()>,
6686}
6687impl SubpassDescription {
6688    /// Start building this struct.
6689    #[inline]
6690    pub fn builder<'a>() -> SubpassDescriptionBuilder<'a> {
6691        SubpassDescriptionBuilder {
6692            inner: SubpassDescription {
6693                ..Default::default()
6694            },
6695            _marker: core::marker::PhantomData,
6696        }
6697    }
6698}
6699impl<'a> SubpassDescriptionBuilder<'a> {
6700    #[inline]
6701    pub fn flags(mut self, value: SubpassDescriptionFlags) -> Self {
6702        self.inner.flags = value;
6703        self
6704    }
6705    #[inline]
6706    pub fn pipeline_bind_point(mut self, value: PipelineBindPoint) -> Self {
6707        self.inner.pipeline_bind_point = value;
6708        self
6709    }
6710    #[inline]
6711    pub fn input_attachments(mut self, slice: &'a [AttachmentReference]) -> Self {
6712        self.inner.input_attachment_count = slice.len() as u32;
6713        self.inner.p_input_attachments = slice.as_ptr();
6714        self
6715    }
6716    #[inline]
6717    pub fn color_attachments(mut self, slice: &'a [AttachmentReference]) -> Self {
6718        self.inner.color_attachment_count = slice.len() as u32;
6719        self.inner.p_color_attachments = slice.as_ptr();
6720        self
6721    }
6722    #[inline]
6723    pub fn resolve_attachments(mut self, slice: &'a [AttachmentReference]) -> Self {
6724        self.inner.color_attachment_count = slice.len() as u32;
6725        self.inner.p_resolve_attachments = slice.as_ptr();
6726        self
6727    }
6728    #[inline]
6729    pub fn depth_stencil_attachment(mut self, value: &'a AttachmentReference) -> Self {
6730        self.inner.p_depth_stencil_attachment = value;
6731        self
6732    }
6733    #[inline]
6734    pub fn preserve_attachments(mut self, slice: &'a [u32]) -> Self {
6735        self.inner.preserve_attachment_count = slice.len() as u32;
6736        self.inner.p_preserve_attachments = slice.as_ptr();
6737        self
6738    }
6739}
6740impl<'a> core::ops::Deref for SubpassDescriptionBuilder<'a> {
6741    type Target = SubpassDescription;
6742    #[inline]
6743    fn deref(&self) -> &Self::Target {
6744        &self.inner
6745    }
6746}
6747impl<'a> core::ops::DerefMut for SubpassDescriptionBuilder<'a> {
6748    #[inline]
6749    fn deref_mut(&mut self) -> &mut Self::Target {
6750        &mut self.inner
6751    }
6752}
6753///Builder for [`SubpassDependency`].
6754pub struct SubpassDependencyBuilder {
6755    inner: SubpassDependency,
6756}
6757impl SubpassDependency {
6758    /// Start building this struct.
6759    #[inline]
6760    pub fn builder() -> SubpassDependencyBuilder {
6761        SubpassDependencyBuilder {
6762            inner: SubpassDependency {
6763                ..Default::default()
6764            },
6765        }
6766    }
6767}
6768impl SubpassDependencyBuilder {
6769    #[inline]
6770    pub fn src_subpass(mut self, value: u32) -> Self {
6771        self.inner.src_subpass = value;
6772        self
6773    }
6774    #[inline]
6775    pub fn dst_subpass(mut self, value: u32) -> Self {
6776        self.inner.dst_subpass = value;
6777        self
6778    }
6779    #[inline]
6780    pub fn src_stage_mask(mut self, value: PipelineStageFlags) -> Self {
6781        self.inner.src_stage_mask = value;
6782        self
6783    }
6784    #[inline]
6785    pub fn dst_stage_mask(mut self, value: PipelineStageFlags) -> Self {
6786        self.inner.dst_stage_mask = value;
6787        self
6788    }
6789    #[inline]
6790    pub fn src_access_mask(mut self, value: AccessFlags) -> Self {
6791        self.inner.src_access_mask = value;
6792        self
6793    }
6794    #[inline]
6795    pub fn dst_access_mask(mut self, value: AccessFlags) -> Self {
6796        self.inner.dst_access_mask = value;
6797        self
6798    }
6799    #[inline]
6800    pub fn dependency_flags(mut self, value: DependencyFlags) -> Self {
6801        self.inner.dependency_flags = value;
6802        self
6803    }
6804}
6805impl core::ops::Deref for SubpassDependencyBuilder {
6806    type Target = SubpassDependency;
6807    #[inline]
6808    fn deref(&self) -> &Self::Target {
6809        &self.inner
6810    }
6811}
6812impl core::ops::DerefMut for SubpassDependencyBuilder {
6813    #[inline]
6814    fn deref_mut(&mut self) -> &mut Self::Target {
6815        &mut self.inner
6816    }
6817}
6818///Builder for [`RenderPassCreateInfo`] with lifetime-tied pNext safety.
6819pub struct RenderPassCreateInfoBuilder<'a> {
6820    inner: RenderPassCreateInfo,
6821    _marker: core::marker::PhantomData<&'a ()>,
6822}
6823impl RenderPassCreateInfo {
6824    /// Start building this struct; `s_type` is already set to the correct variant.
6825    #[inline]
6826    pub fn builder<'a>() -> RenderPassCreateInfoBuilder<'a> {
6827        RenderPassCreateInfoBuilder {
6828            inner: RenderPassCreateInfo {
6829                s_type: StructureType::from_raw(38i32),
6830                ..Default::default()
6831            },
6832            _marker: core::marker::PhantomData,
6833        }
6834    }
6835}
6836impl<'a> RenderPassCreateInfoBuilder<'a> {
6837    #[inline]
6838    pub fn flags(mut self, value: RenderPassCreateFlags) -> Self {
6839        self.inner.flags = value;
6840        self
6841    }
6842    #[inline]
6843    pub fn attachments(mut self, slice: &'a [AttachmentDescription]) -> Self {
6844        self.inner.attachment_count = slice.len() as u32;
6845        self.inner.p_attachments = slice.as_ptr();
6846        self
6847    }
6848    #[inline]
6849    pub fn subpasses(mut self, slice: &'a [SubpassDescription]) -> Self {
6850        self.inner.subpass_count = slice.len() as u32;
6851        self.inner.p_subpasses = slice.as_ptr();
6852        self
6853    }
6854    #[inline]
6855    pub fn dependencies(mut self, slice: &'a [SubpassDependency]) -> Self {
6856        self.inner.dependency_count = slice.len() as u32;
6857        self.inner.p_dependencies = slice.as_ptr();
6858        self
6859    }
6860    ///Prepend a struct to the pNext chain. See [`RenderPassCreateInfo`]'s **Extended By** section for valid types.
6861    #[inline]
6862    pub fn push_next<T: ExtendsRenderPassCreateInfo>(mut self, next: &'a mut T) -> Self {
6863        unsafe {
6864            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
6865            (*next_ptr).p_next = self.inner.p_next as *mut _;
6866            self.inner.p_next = <*mut BaseOutStructure>::cast::<
6867                core::ffi::c_void,
6868            >(next_ptr) as *const _;
6869        }
6870        self
6871    }
6872}
6873impl<'a> core::ops::Deref for RenderPassCreateInfoBuilder<'a> {
6874    type Target = RenderPassCreateInfo;
6875    #[inline]
6876    fn deref(&self) -> &Self::Target {
6877        &self.inner
6878    }
6879}
6880impl<'a> core::ops::DerefMut for RenderPassCreateInfoBuilder<'a> {
6881    #[inline]
6882    fn deref_mut(&mut self) -> &mut Self::Target {
6883        &mut self.inner
6884    }
6885}
6886///Builder for [`EventCreateInfo`] with lifetime-tied pNext safety.
6887pub struct EventCreateInfoBuilder<'a> {
6888    inner: EventCreateInfo,
6889    _marker: core::marker::PhantomData<&'a ()>,
6890}
6891impl EventCreateInfo {
6892    /// Start building this struct; `s_type` is already set to the correct variant.
6893    #[inline]
6894    pub fn builder<'a>() -> EventCreateInfoBuilder<'a> {
6895        EventCreateInfoBuilder {
6896            inner: EventCreateInfo {
6897                s_type: StructureType::from_raw(10i32),
6898                ..Default::default()
6899            },
6900            _marker: core::marker::PhantomData,
6901        }
6902    }
6903}
6904impl<'a> EventCreateInfoBuilder<'a> {
6905    #[inline]
6906    pub fn flags(mut self, value: EventCreateFlags) -> Self {
6907        self.inner.flags = value;
6908        self
6909    }
6910    ///Prepend a struct to the pNext chain. See [`EventCreateInfo`]'s **Extended By** section for valid types.
6911    #[inline]
6912    pub fn push_next<T: ExtendsEventCreateInfo>(mut self, next: &'a mut T) -> Self {
6913        unsafe {
6914            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
6915            (*next_ptr).p_next = self.inner.p_next as *mut _;
6916            self.inner.p_next = <*mut BaseOutStructure>::cast::<
6917                core::ffi::c_void,
6918            >(next_ptr) as *const _;
6919        }
6920        self
6921    }
6922}
6923impl<'a> core::ops::Deref for EventCreateInfoBuilder<'a> {
6924    type Target = EventCreateInfo;
6925    #[inline]
6926    fn deref(&self) -> &Self::Target {
6927        &self.inner
6928    }
6929}
6930impl<'a> core::ops::DerefMut for EventCreateInfoBuilder<'a> {
6931    #[inline]
6932    fn deref_mut(&mut self) -> &mut Self::Target {
6933        &mut self.inner
6934    }
6935}
6936///Builder for [`FenceCreateInfo`] with lifetime-tied pNext safety.
6937pub struct FenceCreateInfoBuilder<'a> {
6938    inner: FenceCreateInfo,
6939    _marker: core::marker::PhantomData<&'a ()>,
6940}
6941impl FenceCreateInfo {
6942    /// Start building this struct; `s_type` is already set to the correct variant.
6943    #[inline]
6944    pub fn builder<'a>() -> FenceCreateInfoBuilder<'a> {
6945        FenceCreateInfoBuilder {
6946            inner: FenceCreateInfo {
6947                s_type: StructureType::from_raw(8i32),
6948                ..Default::default()
6949            },
6950            _marker: core::marker::PhantomData,
6951        }
6952    }
6953}
6954impl<'a> FenceCreateInfoBuilder<'a> {
6955    #[inline]
6956    pub fn flags(mut self, value: FenceCreateFlags) -> Self {
6957        self.inner.flags = value;
6958        self
6959    }
6960    ///Prepend a struct to the pNext chain. See [`FenceCreateInfo`]'s **Extended By** section for valid types.
6961    #[inline]
6962    pub fn push_next<T: ExtendsFenceCreateInfo>(mut self, next: &'a mut T) -> Self {
6963        unsafe {
6964            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
6965            (*next_ptr).p_next = self.inner.p_next as *mut _;
6966            self.inner.p_next = <*mut BaseOutStructure>::cast::<
6967                core::ffi::c_void,
6968            >(next_ptr) as *const _;
6969        }
6970        self
6971    }
6972}
6973impl<'a> core::ops::Deref for FenceCreateInfoBuilder<'a> {
6974    type Target = FenceCreateInfo;
6975    #[inline]
6976    fn deref(&self) -> &Self::Target {
6977        &self.inner
6978    }
6979}
6980impl<'a> core::ops::DerefMut for FenceCreateInfoBuilder<'a> {
6981    #[inline]
6982    fn deref_mut(&mut self) -> &mut Self::Target {
6983        &mut self.inner
6984    }
6985}
6986///Builder for [`PhysicalDeviceFeatures`].
6987pub struct PhysicalDeviceFeaturesBuilder {
6988    inner: PhysicalDeviceFeatures,
6989}
6990impl PhysicalDeviceFeatures {
6991    /// Start building this struct.
6992    #[inline]
6993    pub fn builder() -> PhysicalDeviceFeaturesBuilder {
6994        PhysicalDeviceFeaturesBuilder {
6995            inner: PhysicalDeviceFeatures {
6996                ..Default::default()
6997            },
6998        }
6999    }
7000}
7001impl PhysicalDeviceFeaturesBuilder {
7002    #[inline]
7003    pub fn robust_buffer_access(mut self, value: bool) -> Self {
7004        self.inner.robust_buffer_access = value as u32;
7005        self
7006    }
7007    #[inline]
7008    pub fn full_draw_index_uint32(mut self, value: bool) -> Self {
7009        self.inner.full_draw_index_uint32 = value as u32;
7010        self
7011    }
7012    #[inline]
7013    pub fn image_cube_array(mut self, value: bool) -> Self {
7014        self.inner.image_cube_array = value as u32;
7015        self
7016    }
7017    #[inline]
7018    pub fn independent_blend(mut self, value: bool) -> Self {
7019        self.inner.independent_blend = value as u32;
7020        self
7021    }
7022    #[inline]
7023    pub fn geometry_shader(mut self, value: bool) -> Self {
7024        self.inner.geometry_shader = value as u32;
7025        self
7026    }
7027    #[inline]
7028    pub fn tessellation_shader(mut self, value: bool) -> Self {
7029        self.inner.tessellation_shader = value as u32;
7030        self
7031    }
7032    #[inline]
7033    pub fn sample_rate_shading(mut self, value: bool) -> Self {
7034        self.inner.sample_rate_shading = value as u32;
7035        self
7036    }
7037    #[inline]
7038    pub fn dual_src_blend(mut self, value: bool) -> Self {
7039        self.inner.dual_src_blend = value as u32;
7040        self
7041    }
7042    #[inline]
7043    pub fn logic_op(mut self, value: bool) -> Self {
7044        self.inner.logic_op = value as u32;
7045        self
7046    }
7047    #[inline]
7048    pub fn multi_draw_indirect(mut self, value: bool) -> Self {
7049        self.inner.multi_draw_indirect = value as u32;
7050        self
7051    }
7052    #[inline]
7053    pub fn draw_indirect_first_instance(mut self, value: bool) -> Self {
7054        self.inner.draw_indirect_first_instance = value as u32;
7055        self
7056    }
7057    #[inline]
7058    pub fn depth_clamp(mut self, value: bool) -> Self {
7059        self.inner.depth_clamp = value as u32;
7060        self
7061    }
7062    #[inline]
7063    pub fn depth_bias_clamp(mut self, value: bool) -> Self {
7064        self.inner.depth_bias_clamp = value as u32;
7065        self
7066    }
7067    #[inline]
7068    pub fn fill_mode_non_solid(mut self, value: bool) -> Self {
7069        self.inner.fill_mode_non_solid = value as u32;
7070        self
7071    }
7072    #[inline]
7073    pub fn depth_bounds(mut self, value: bool) -> Self {
7074        self.inner.depth_bounds = value as u32;
7075        self
7076    }
7077    #[inline]
7078    pub fn wide_lines(mut self, value: bool) -> Self {
7079        self.inner.wide_lines = value as u32;
7080        self
7081    }
7082    #[inline]
7083    pub fn large_points(mut self, value: bool) -> Self {
7084        self.inner.large_points = value as u32;
7085        self
7086    }
7087    #[inline]
7088    pub fn alpha_to_one(mut self, value: bool) -> Self {
7089        self.inner.alpha_to_one = value as u32;
7090        self
7091    }
7092    #[inline]
7093    pub fn multi_viewport(mut self, value: bool) -> Self {
7094        self.inner.multi_viewport = value as u32;
7095        self
7096    }
7097    #[inline]
7098    pub fn sampler_anisotropy(mut self, value: bool) -> Self {
7099        self.inner.sampler_anisotropy = value as u32;
7100        self
7101    }
7102    #[inline]
7103    pub fn texture_compression_etc2(mut self, value: bool) -> Self {
7104        self.inner.texture_compression_etc2 = value as u32;
7105        self
7106    }
7107    #[inline]
7108    pub fn texture_compression_astc_ldr(mut self, value: bool) -> Self {
7109        self.inner.texture_compression_astc_ldr = value as u32;
7110        self
7111    }
7112    #[inline]
7113    pub fn texture_compression_bc(mut self, value: bool) -> Self {
7114        self.inner.texture_compression_bc = value as u32;
7115        self
7116    }
7117    #[inline]
7118    pub fn occlusion_query_precise(mut self, value: bool) -> Self {
7119        self.inner.occlusion_query_precise = value as u32;
7120        self
7121    }
7122    #[inline]
7123    pub fn pipeline_statistics_query(mut self, value: bool) -> Self {
7124        self.inner.pipeline_statistics_query = value as u32;
7125        self
7126    }
7127    #[inline]
7128    pub fn vertex_pipeline_stores_and_atomics(mut self, value: bool) -> Self {
7129        self.inner.vertex_pipeline_stores_and_atomics = value as u32;
7130        self
7131    }
7132    #[inline]
7133    pub fn fragment_stores_and_atomics(mut self, value: bool) -> Self {
7134        self.inner.fragment_stores_and_atomics = value as u32;
7135        self
7136    }
7137    #[inline]
7138    pub fn shader_tessellation_and_geometry_point_size(mut self, value: bool) -> Self {
7139        self.inner.shader_tessellation_and_geometry_point_size = value as u32;
7140        self
7141    }
7142    #[inline]
7143    pub fn shader_image_gather_extended(mut self, value: bool) -> Self {
7144        self.inner.shader_image_gather_extended = value as u32;
7145        self
7146    }
7147    #[inline]
7148    pub fn shader_storage_image_extended_formats(mut self, value: bool) -> Self {
7149        self.inner.shader_storage_image_extended_formats = value as u32;
7150        self
7151    }
7152    #[inline]
7153    pub fn shader_storage_image_multisample(mut self, value: bool) -> Self {
7154        self.inner.shader_storage_image_multisample = value as u32;
7155        self
7156    }
7157    #[inline]
7158    pub fn shader_storage_image_read_without_format(mut self, value: bool) -> Self {
7159        self.inner.shader_storage_image_read_without_format = value as u32;
7160        self
7161    }
7162    #[inline]
7163    pub fn shader_storage_image_write_without_format(mut self, value: bool) -> Self {
7164        self.inner.shader_storage_image_write_without_format = value as u32;
7165        self
7166    }
7167    #[inline]
7168    pub fn shader_uniform_buffer_array_dynamic_indexing(mut self, value: bool) -> Self {
7169        self.inner.shader_uniform_buffer_array_dynamic_indexing = value as u32;
7170        self
7171    }
7172    #[inline]
7173    pub fn shader_sampled_image_array_dynamic_indexing(mut self, value: bool) -> Self {
7174        self.inner.shader_sampled_image_array_dynamic_indexing = value as u32;
7175        self
7176    }
7177    #[inline]
7178    pub fn shader_storage_buffer_array_dynamic_indexing(mut self, value: bool) -> Self {
7179        self.inner.shader_storage_buffer_array_dynamic_indexing = value as u32;
7180        self
7181    }
7182    #[inline]
7183    pub fn shader_storage_image_array_dynamic_indexing(mut self, value: bool) -> Self {
7184        self.inner.shader_storage_image_array_dynamic_indexing = value as u32;
7185        self
7186    }
7187    #[inline]
7188    pub fn shader_clip_distance(mut self, value: bool) -> Self {
7189        self.inner.shader_clip_distance = value as u32;
7190        self
7191    }
7192    #[inline]
7193    pub fn shader_cull_distance(mut self, value: bool) -> Self {
7194        self.inner.shader_cull_distance = value as u32;
7195        self
7196    }
7197    #[inline]
7198    pub fn shader_float64(mut self, value: bool) -> Self {
7199        self.inner.shader_float64 = value as u32;
7200        self
7201    }
7202    #[inline]
7203    pub fn shader_int64(mut self, value: bool) -> Self {
7204        self.inner.shader_int64 = value as u32;
7205        self
7206    }
7207    #[inline]
7208    pub fn shader_int16(mut self, value: bool) -> Self {
7209        self.inner.shader_int16 = value as u32;
7210        self
7211    }
7212    #[inline]
7213    pub fn shader_resource_residency(mut self, value: bool) -> Self {
7214        self.inner.shader_resource_residency = value as u32;
7215        self
7216    }
7217    #[inline]
7218    pub fn shader_resource_min_lod(mut self, value: bool) -> Self {
7219        self.inner.shader_resource_min_lod = value as u32;
7220        self
7221    }
7222    #[inline]
7223    pub fn sparse_binding(mut self, value: bool) -> Self {
7224        self.inner.sparse_binding = value as u32;
7225        self
7226    }
7227    #[inline]
7228    pub fn sparse_residency_buffer(mut self, value: bool) -> Self {
7229        self.inner.sparse_residency_buffer = value as u32;
7230        self
7231    }
7232    #[inline]
7233    pub fn sparse_residency_image2_d(mut self, value: bool) -> Self {
7234        self.inner.sparse_residency_image2_d = value as u32;
7235        self
7236    }
7237    #[inline]
7238    pub fn sparse_residency_image3_d(mut self, value: bool) -> Self {
7239        self.inner.sparse_residency_image3_d = value as u32;
7240        self
7241    }
7242    #[inline]
7243    pub fn sparse_residency2_samples(mut self, value: bool) -> Self {
7244        self.inner.sparse_residency2_samples = value as u32;
7245        self
7246    }
7247    #[inline]
7248    pub fn sparse_residency4_samples(mut self, value: bool) -> Self {
7249        self.inner.sparse_residency4_samples = value as u32;
7250        self
7251    }
7252    #[inline]
7253    pub fn sparse_residency8_samples(mut self, value: bool) -> Self {
7254        self.inner.sparse_residency8_samples = value as u32;
7255        self
7256    }
7257    #[inline]
7258    pub fn sparse_residency16_samples(mut self, value: bool) -> Self {
7259        self.inner.sparse_residency16_samples = value as u32;
7260        self
7261    }
7262    #[inline]
7263    pub fn sparse_residency_aliased(mut self, value: bool) -> Self {
7264        self.inner.sparse_residency_aliased = value as u32;
7265        self
7266    }
7267    #[inline]
7268    pub fn variable_multisample_rate(mut self, value: bool) -> Self {
7269        self.inner.variable_multisample_rate = value as u32;
7270        self
7271    }
7272    #[inline]
7273    pub fn inherited_queries(mut self, value: bool) -> Self {
7274        self.inner.inherited_queries = value as u32;
7275        self
7276    }
7277}
7278impl core::ops::Deref for PhysicalDeviceFeaturesBuilder {
7279    type Target = PhysicalDeviceFeatures;
7280    #[inline]
7281    fn deref(&self) -> &Self::Target {
7282        &self.inner
7283    }
7284}
7285impl core::ops::DerefMut for PhysicalDeviceFeaturesBuilder {
7286    #[inline]
7287    fn deref_mut(&mut self) -> &mut Self::Target {
7288        &mut self.inner
7289    }
7290}
7291///Builder for [`PhysicalDeviceSparseProperties`].
7292pub struct PhysicalDeviceSparsePropertiesBuilder {
7293    inner: PhysicalDeviceSparseProperties,
7294}
7295impl PhysicalDeviceSparseProperties {
7296    /// Start building this struct.
7297    #[inline]
7298    pub fn builder() -> PhysicalDeviceSparsePropertiesBuilder {
7299        PhysicalDeviceSparsePropertiesBuilder {
7300            inner: PhysicalDeviceSparseProperties {
7301                ..Default::default()
7302            },
7303        }
7304    }
7305}
7306impl PhysicalDeviceSparsePropertiesBuilder {
7307    #[inline]
7308    pub fn residency_standard2_d_block_shape(mut self, value: bool) -> Self {
7309        self.inner.residency_standard2_d_block_shape = value as u32;
7310        self
7311    }
7312    #[inline]
7313    pub fn residency_standard2_d_multisample_block_shape(mut self, value: bool) -> Self {
7314        self.inner.residency_standard2_d_multisample_block_shape = value as u32;
7315        self
7316    }
7317    #[inline]
7318    pub fn residency_standard3_d_block_shape(mut self, value: bool) -> Self {
7319        self.inner.residency_standard3_d_block_shape = value as u32;
7320        self
7321    }
7322    #[inline]
7323    pub fn residency_aligned_mip_size(mut self, value: bool) -> Self {
7324        self.inner.residency_aligned_mip_size = value as u32;
7325        self
7326    }
7327    #[inline]
7328    pub fn residency_non_resident_strict(mut self, value: bool) -> Self {
7329        self.inner.residency_non_resident_strict = value as u32;
7330        self
7331    }
7332}
7333impl core::ops::Deref for PhysicalDeviceSparsePropertiesBuilder {
7334    type Target = PhysicalDeviceSparseProperties;
7335    #[inline]
7336    fn deref(&self) -> &Self::Target {
7337        &self.inner
7338    }
7339}
7340impl core::ops::DerefMut for PhysicalDeviceSparsePropertiesBuilder {
7341    #[inline]
7342    fn deref_mut(&mut self) -> &mut Self::Target {
7343        &mut self.inner
7344    }
7345}
7346///Builder for [`PhysicalDeviceLimits`].
7347pub struct PhysicalDeviceLimitsBuilder {
7348    inner: PhysicalDeviceLimits,
7349}
7350impl PhysicalDeviceLimits {
7351    /// Start building this struct.
7352    #[inline]
7353    pub fn builder() -> PhysicalDeviceLimitsBuilder {
7354        PhysicalDeviceLimitsBuilder {
7355            inner: PhysicalDeviceLimits {
7356                ..Default::default()
7357            },
7358        }
7359    }
7360}
7361impl PhysicalDeviceLimitsBuilder {
7362    #[inline]
7363    pub fn max_image_dimension1_d(mut self, value: u32) -> Self {
7364        self.inner.max_image_dimension1_d = value;
7365        self
7366    }
7367    #[inline]
7368    pub fn max_image_dimension2_d(mut self, value: u32) -> Self {
7369        self.inner.max_image_dimension2_d = value;
7370        self
7371    }
7372    #[inline]
7373    pub fn max_image_dimension3_d(mut self, value: u32) -> Self {
7374        self.inner.max_image_dimension3_d = value;
7375        self
7376    }
7377    #[inline]
7378    pub fn max_image_dimension_cube(mut self, value: u32) -> Self {
7379        self.inner.max_image_dimension_cube = value;
7380        self
7381    }
7382    #[inline]
7383    pub fn max_image_array_layers(mut self, value: u32) -> Self {
7384        self.inner.max_image_array_layers = value;
7385        self
7386    }
7387    #[inline]
7388    pub fn max_texel_buffer_elements(mut self, value: u32) -> Self {
7389        self.inner.max_texel_buffer_elements = value;
7390        self
7391    }
7392    #[inline]
7393    pub fn max_uniform_buffer_range(mut self, value: u32) -> Self {
7394        self.inner.max_uniform_buffer_range = value;
7395        self
7396    }
7397    #[inline]
7398    pub fn max_storage_buffer_range(mut self, value: u32) -> Self {
7399        self.inner.max_storage_buffer_range = value;
7400        self
7401    }
7402    #[inline]
7403    pub fn max_push_constants_size(mut self, value: u32) -> Self {
7404        self.inner.max_push_constants_size = value;
7405        self
7406    }
7407    #[inline]
7408    pub fn max_memory_allocation_count(mut self, value: u32) -> Self {
7409        self.inner.max_memory_allocation_count = value;
7410        self
7411    }
7412    #[inline]
7413    pub fn max_sampler_allocation_count(mut self, value: u32) -> Self {
7414        self.inner.max_sampler_allocation_count = value;
7415        self
7416    }
7417    #[inline]
7418    pub fn buffer_image_granularity(mut self, value: u64) -> Self {
7419        self.inner.buffer_image_granularity = value;
7420        self
7421    }
7422    #[inline]
7423    pub fn sparse_address_space_size(mut self, value: u64) -> Self {
7424        self.inner.sparse_address_space_size = value;
7425        self
7426    }
7427    #[inline]
7428    pub fn max_bound_descriptor_sets(mut self, value: u32) -> Self {
7429        self.inner.max_bound_descriptor_sets = value;
7430        self
7431    }
7432    #[inline]
7433    pub fn max_per_stage_descriptor_samplers(mut self, value: u32) -> Self {
7434        self.inner.max_per_stage_descriptor_samplers = value;
7435        self
7436    }
7437    #[inline]
7438    pub fn max_per_stage_descriptor_uniform_buffers(mut self, value: u32) -> Self {
7439        self.inner.max_per_stage_descriptor_uniform_buffers = value;
7440        self
7441    }
7442    #[inline]
7443    pub fn max_per_stage_descriptor_storage_buffers(mut self, value: u32) -> Self {
7444        self.inner.max_per_stage_descriptor_storage_buffers = value;
7445        self
7446    }
7447    #[inline]
7448    pub fn max_per_stage_descriptor_sampled_images(mut self, value: u32) -> Self {
7449        self.inner.max_per_stage_descriptor_sampled_images = value;
7450        self
7451    }
7452    #[inline]
7453    pub fn max_per_stage_descriptor_storage_images(mut self, value: u32) -> Self {
7454        self.inner.max_per_stage_descriptor_storage_images = value;
7455        self
7456    }
7457    #[inline]
7458    pub fn max_per_stage_descriptor_input_attachments(mut self, value: u32) -> Self {
7459        self.inner.max_per_stage_descriptor_input_attachments = value;
7460        self
7461    }
7462    #[inline]
7463    pub fn max_per_stage_resources(mut self, value: u32) -> Self {
7464        self.inner.max_per_stage_resources = value;
7465        self
7466    }
7467    #[inline]
7468    pub fn max_descriptor_set_samplers(mut self, value: u32) -> Self {
7469        self.inner.max_descriptor_set_samplers = value;
7470        self
7471    }
7472    #[inline]
7473    pub fn max_descriptor_set_uniform_buffers(mut self, value: u32) -> Self {
7474        self.inner.max_descriptor_set_uniform_buffers = value;
7475        self
7476    }
7477    #[inline]
7478    pub fn max_descriptor_set_uniform_buffers_dynamic(mut self, value: u32) -> Self {
7479        self.inner.max_descriptor_set_uniform_buffers_dynamic = value;
7480        self
7481    }
7482    #[inline]
7483    pub fn max_descriptor_set_storage_buffers(mut self, value: u32) -> Self {
7484        self.inner.max_descriptor_set_storage_buffers = value;
7485        self
7486    }
7487    #[inline]
7488    pub fn max_descriptor_set_storage_buffers_dynamic(mut self, value: u32) -> Self {
7489        self.inner.max_descriptor_set_storage_buffers_dynamic = value;
7490        self
7491    }
7492    #[inline]
7493    pub fn max_descriptor_set_sampled_images(mut self, value: u32) -> Self {
7494        self.inner.max_descriptor_set_sampled_images = value;
7495        self
7496    }
7497    #[inline]
7498    pub fn max_descriptor_set_storage_images(mut self, value: u32) -> Self {
7499        self.inner.max_descriptor_set_storage_images = value;
7500        self
7501    }
7502    #[inline]
7503    pub fn max_descriptor_set_input_attachments(mut self, value: u32) -> Self {
7504        self.inner.max_descriptor_set_input_attachments = value;
7505        self
7506    }
7507    #[inline]
7508    pub fn max_vertex_input_attributes(mut self, value: u32) -> Self {
7509        self.inner.max_vertex_input_attributes = value;
7510        self
7511    }
7512    #[inline]
7513    pub fn max_vertex_input_bindings(mut self, value: u32) -> Self {
7514        self.inner.max_vertex_input_bindings = value;
7515        self
7516    }
7517    #[inline]
7518    pub fn max_vertex_input_attribute_offset(mut self, value: u32) -> Self {
7519        self.inner.max_vertex_input_attribute_offset = value;
7520        self
7521    }
7522    #[inline]
7523    pub fn max_vertex_input_binding_stride(mut self, value: u32) -> Self {
7524        self.inner.max_vertex_input_binding_stride = value;
7525        self
7526    }
7527    #[inline]
7528    pub fn max_vertex_output_components(mut self, value: u32) -> Self {
7529        self.inner.max_vertex_output_components = value;
7530        self
7531    }
7532    #[inline]
7533    pub fn max_tessellation_generation_level(mut self, value: u32) -> Self {
7534        self.inner.max_tessellation_generation_level = value;
7535        self
7536    }
7537    #[inline]
7538    pub fn max_tessellation_patch_size(mut self, value: u32) -> Self {
7539        self.inner.max_tessellation_patch_size = value;
7540        self
7541    }
7542    #[inline]
7543    pub fn max_tessellation_control_per_vertex_input_components(
7544        mut self,
7545        value: u32,
7546    ) -> Self {
7547        self.inner.max_tessellation_control_per_vertex_input_components = value;
7548        self
7549    }
7550    #[inline]
7551    pub fn max_tessellation_control_per_vertex_output_components(
7552        mut self,
7553        value: u32,
7554    ) -> Self {
7555        self.inner.max_tessellation_control_per_vertex_output_components = value;
7556        self
7557    }
7558    #[inline]
7559    pub fn max_tessellation_control_per_patch_output_components(
7560        mut self,
7561        value: u32,
7562    ) -> Self {
7563        self.inner.max_tessellation_control_per_patch_output_components = value;
7564        self
7565    }
7566    #[inline]
7567    pub fn max_tessellation_control_total_output_components(
7568        mut self,
7569        value: u32,
7570    ) -> Self {
7571        self.inner.max_tessellation_control_total_output_components = value;
7572        self
7573    }
7574    #[inline]
7575    pub fn max_tessellation_evaluation_input_components(mut self, value: u32) -> Self {
7576        self.inner.max_tessellation_evaluation_input_components = value;
7577        self
7578    }
7579    #[inline]
7580    pub fn max_tessellation_evaluation_output_components(mut self, value: u32) -> Self {
7581        self.inner.max_tessellation_evaluation_output_components = value;
7582        self
7583    }
7584    #[inline]
7585    pub fn max_geometry_shader_invocations(mut self, value: u32) -> Self {
7586        self.inner.max_geometry_shader_invocations = value;
7587        self
7588    }
7589    #[inline]
7590    pub fn max_geometry_input_components(mut self, value: u32) -> Self {
7591        self.inner.max_geometry_input_components = value;
7592        self
7593    }
7594    #[inline]
7595    pub fn max_geometry_output_components(mut self, value: u32) -> Self {
7596        self.inner.max_geometry_output_components = value;
7597        self
7598    }
7599    #[inline]
7600    pub fn max_geometry_output_vertices(mut self, value: u32) -> Self {
7601        self.inner.max_geometry_output_vertices = value;
7602        self
7603    }
7604    #[inline]
7605    pub fn max_geometry_total_output_components(mut self, value: u32) -> Self {
7606        self.inner.max_geometry_total_output_components = value;
7607        self
7608    }
7609    #[inline]
7610    pub fn max_fragment_input_components(mut self, value: u32) -> Self {
7611        self.inner.max_fragment_input_components = value;
7612        self
7613    }
7614    #[inline]
7615    pub fn max_fragment_output_attachments(mut self, value: u32) -> Self {
7616        self.inner.max_fragment_output_attachments = value;
7617        self
7618    }
7619    #[inline]
7620    pub fn max_fragment_dual_src_attachments(mut self, value: u32) -> Self {
7621        self.inner.max_fragment_dual_src_attachments = value;
7622        self
7623    }
7624    #[inline]
7625    pub fn max_fragment_combined_output_resources(mut self, value: u32) -> Self {
7626        self.inner.max_fragment_combined_output_resources = value;
7627        self
7628    }
7629    #[inline]
7630    pub fn max_compute_shared_memory_size(mut self, value: u32) -> Self {
7631        self.inner.max_compute_shared_memory_size = value;
7632        self
7633    }
7634    #[inline]
7635    pub fn max_compute_work_group_count(mut self, value: [u32; 3usize]) -> Self {
7636        self.inner.max_compute_work_group_count = value;
7637        self
7638    }
7639    #[inline]
7640    pub fn max_compute_work_group_invocations(mut self, value: u32) -> Self {
7641        self.inner.max_compute_work_group_invocations = value;
7642        self
7643    }
7644    #[inline]
7645    pub fn max_compute_work_group_size(mut self, value: [u32; 3usize]) -> Self {
7646        self.inner.max_compute_work_group_size = value;
7647        self
7648    }
7649    #[inline]
7650    pub fn sub_pixel_precision_bits(mut self, value: u32) -> Self {
7651        self.inner.sub_pixel_precision_bits = value;
7652        self
7653    }
7654    #[inline]
7655    pub fn sub_texel_precision_bits(mut self, value: u32) -> Self {
7656        self.inner.sub_texel_precision_bits = value;
7657        self
7658    }
7659    #[inline]
7660    pub fn mipmap_precision_bits(mut self, value: u32) -> Self {
7661        self.inner.mipmap_precision_bits = value;
7662        self
7663    }
7664    #[inline]
7665    pub fn max_draw_indexed_index_value(mut self, value: u32) -> Self {
7666        self.inner.max_draw_indexed_index_value = value;
7667        self
7668    }
7669    #[inline]
7670    pub fn max_draw_indirect_count(mut self, value: u32) -> Self {
7671        self.inner.max_draw_indirect_count = value;
7672        self
7673    }
7674    #[inline]
7675    pub fn max_sampler_lod_bias(mut self, value: f32) -> Self {
7676        self.inner.max_sampler_lod_bias = value;
7677        self
7678    }
7679    #[inline]
7680    pub fn max_sampler_anisotropy(mut self, value: f32) -> Self {
7681        self.inner.max_sampler_anisotropy = value;
7682        self
7683    }
7684    #[inline]
7685    pub fn max_viewports(mut self, value: u32) -> Self {
7686        self.inner.max_viewports = value;
7687        self
7688    }
7689    #[inline]
7690    pub fn max_viewport_dimensions(mut self, value: [u32; 2usize]) -> Self {
7691        self.inner.max_viewport_dimensions = value;
7692        self
7693    }
7694    #[inline]
7695    pub fn viewport_bounds_range(mut self, value: [f32; 2usize]) -> Self {
7696        self.inner.viewport_bounds_range = value;
7697        self
7698    }
7699    #[inline]
7700    pub fn viewport_sub_pixel_bits(mut self, value: u32) -> Self {
7701        self.inner.viewport_sub_pixel_bits = value;
7702        self
7703    }
7704    #[inline]
7705    pub fn min_memory_map_alignment(mut self, value: usize) -> Self {
7706        self.inner.min_memory_map_alignment = value;
7707        self
7708    }
7709    #[inline]
7710    pub fn min_texel_buffer_offset_alignment(mut self, value: u64) -> Self {
7711        self.inner.min_texel_buffer_offset_alignment = value;
7712        self
7713    }
7714    #[inline]
7715    pub fn min_uniform_buffer_offset_alignment(mut self, value: u64) -> Self {
7716        self.inner.min_uniform_buffer_offset_alignment = value;
7717        self
7718    }
7719    #[inline]
7720    pub fn min_storage_buffer_offset_alignment(mut self, value: u64) -> Self {
7721        self.inner.min_storage_buffer_offset_alignment = value;
7722        self
7723    }
7724    #[inline]
7725    pub fn min_texel_offset(mut self, value: i32) -> Self {
7726        self.inner.min_texel_offset = value;
7727        self
7728    }
7729    #[inline]
7730    pub fn max_texel_offset(mut self, value: u32) -> Self {
7731        self.inner.max_texel_offset = value;
7732        self
7733    }
7734    #[inline]
7735    pub fn min_texel_gather_offset(mut self, value: i32) -> Self {
7736        self.inner.min_texel_gather_offset = value;
7737        self
7738    }
7739    #[inline]
7740    pub fn max_texel_gather_offset(mut self, value: u32) -> Self {
7741        self.inner.max_texel_gather_offset = value;
7742        self
7743    }
7744    #[inline]
7745    pub fn min_interpolation_offset(mut self, value: f32) -> Self {
7746        self.inner.min_interpolation_offset = value;
7747        self
7748    }
7749    #[inline]
7750    pub fn max_interpolation_offset(mut self, value: f32) -> Self {
7751        self.inner.max_interpolation_offset = value;
7752        self
7753    }
7754    #[inline]
7755    pub fn sub_pixel_interpolation_offset_bits(mut self, value: u32) -> Self {
7756        self.inner.sub_pixel_interpolation_offset_bits = value;
7757        self
7758    }
7759    #[inline]
7760    pub fn max_framebuffer_width(mut self, value: u32) -> Self {
7761        self.inner.max_framebuffer_width = value;
7762        self
7763    }
7764    #[inline]
7765    pub fn max_framebuffer_height(mut self, value: u32) -> Self {
7766        self.inner.max_framebuffer_height = value;
7767        self
7768    }
7769    #[inline]
7770    pub fn max_framebuffer_layers(mut self, value: u32) -> Self {
7771        self.inner.max_framebuffer_layers = value;
7772        self
7773    }
7774    #[inline]
7775    pub fn framebuffer_color_sample_counts(mut self, value: SampleCountFlags) -> Self {
7776        self.inner.framebuffer_color_sample_counts = value;
7777        self
7778    }
7779    #[inline]
7780    pub fn framebuffer_depth_sample_counts(mut self, value: SampleCountFlags) -> Self {
7781        self.inner.framebuffer_depth_sample_counts = value;
7782        self
7783    }
7784    #[inline]
7785    pub fn framebuffer_stencil_sample_counts(mut self, value: SampleCountFlags) -> Self {
7786        self.inner.framebuffer_stencil_sample_counts = value;
7787        self
7788    }
7789    #[inline]
7790    pub fn framebuffer_no_attachments_sample_counts(
7791        mut self,
7792        value: SampleCountFlags,
7793    ) -> Self {
7794        self.inner.framebuffer_no_attachments_sample_counts = value;
7795        self
7796    }
7797    #[inline]
7798    pub fn max_color_attachments(mut self, value: u32) -> Self {
7799        self.inner.max_color_attachments = value;
7800        self
7801    }
7802    #[inline]
7803    pub fn sampled_image_color_sample_counts(mut self, value: SampleCountFlags) -> Self {
7804        self.inner.sampled_image_color_sample_counts = value;
7805        self
7806    }
7807    #[inline]
7808    pub fn sampled_image_integer_sample_counts(
7809        mut self,
7810        value: SampleCountFlags,
7811    ) -> Self {
7812        self.inner.sampled_image_integer_sample_counts = value;
7813        self
7814    }
7815    #[inline]
7816    pub fn sampled_image_depth_sample_counts(mut self, value: SampleCountFlags) -> Self {
7817        self.inner.sampled_image_depth_sample_counts = value;
7818        self
7819    }
7820    #[inline]
7821    pub fn sampled_image_stencil_sample_counts(
7822        mut self,
7823        value: SampleCountFlags,
7824    ) -> Self {
7825        self.inner.sampled_image_stencil_sample_counts = value;
7826        self
7827    }
7828    #[inline]
7829    pub fn storage_image_sample_counts(mut self, value: SampleCountFlags) -> Self {
7830        self.inner.storage_image_sample_counts = value;
7831        self
7832    }
7833    #[inline]
7834    pub fn max_sample_mask_words(mut self, value: u32) -> Self {
7835        self.inner.max_sample_mask_words = value;
7836        self
7837    }
7838    #[inline]
7839    pub fn timestamp_compute_and_graphics(mut self, value: bool) -> Self {
7840        self.inner.timestamp_compute_and_graphics = value as u32;
7841        self
7842    }
7843    #[inline]
7844    pub fn timestamp_period(mut self, value: f32) -> Self {
7845        self.inner.timestamp_period = value;
7846        self
7847    }
7848    #[inline]
7849    pub fn max_clip_distances(mut self, value: u32) -> Self {
7850        self.inner.max_clip_distances = value;
7851        self
7852    }
7853    #[inline]
7854    pub fn max_cull_distances(mut self, value: u32) -> Self {
7855        self.inner.max_cull_distances = value;
7856        self
7857    }
7858    #[inline]
7859    pub fn max_combined_clip_and_cull_distances(mut self, value: u32) -> Self {
7860        self.inner.max_combined_clip_and_cull_distances = value;
7861        self
7862    }
7863    #[inline]
7864    pub fn discrete_queue_priorities(mut self, value: u32) -> Self {
7865        self.inner.discrete_queue_priorities = value;
7866        self
7867    }
7868    #[inline]
7869    pub fn point_size_range(mut self, value: [f32; 2usize]) -> Self {
7870        self.inner.point_size_range = value;
7871        self
7872    }
7873    #[inline]
7874    pub fn line_width_range(mut self, value: [f32; 2usize]) -> Self {
7875        self.inner.line_width_range = value;
7876        self
7877    }
7878    #[inline]
7879    pub fn point_size_granularity(mut self, value: f32) -> Self {
7880        self.inner.point_size_granularity = value;
7881        self
7882    }
7883    #[inline]
7884    pub fn line_width_granularity(mut self, value: f32) -> Self {
7885        self.inner.line_width_granularity = value;
7886        self
7887    }
7888    #[inline]
7889    pub fn strict_lines(mut self, value: bool) -> Self {
7890        self.inner.strict_lines = value as u32;
7891        self
7892    }
7893    #[inline]
7894    pub fn standard_sample_locations(mut self, value: bool) -> Self {
7895        self.inner.standard_sample_locations = value as u32;
7896        self
7897    }
7898    #[inline]
7899    pub fn optimal_buffer_copy_offset_alignment(mut self, value: u64) -> Self {
7900        self.inner.optimal_buffer_copy_offset_alignment = value;
7901        self
7902    }
7903    #[inline]
7904    pub fn optimal_buffer_copy_row_pitch_alignment(mut self, value: u64) -> Self {
7905        self.inner.optimal_buffer_copy_row_pitch_alignment = value;
7906        self
7907    }
7908    #[inline]
7909    pub fn non_coherent_atom_size(mut self, value: u64) -> Self {
7910        self.inner.non_coherent_atom_size = value;
7911        self
7912    }
7913}
7914impl core::ops::Deref for PhysicalDeviceLimitsBuilder {
7915    type Target = PhysicalDeviceLimits;
7916    #[inline]
7917    fn deref(&self) -> &Self::Target {
7918        &self.inner
7919    }
7920}
7921impl core::ops::DerefMut for PhysicalDeviceLimitsBuilder {
7922    #[inline]
7923    fn deref_mut(&mut self) -> &mut Self::Target {
7924        &mut self.inner
7925    }
7926}
7927///Builder for [`SemaphoreCreateInfo`] with lifetime-tied pNext safety.
7928pub struct SemaphoreCreateInfoBuilder<'a> {
7929    inner: SemaphoreCreateInfo,
7930    _marker: core::marker::PhantomData<&'a ()>,
7931}
7932impl SemaphoreCreateInfo {
7933    /// Start building this struct; `s_type` is already set to the correct variant.
7934    #[inline]
7935    pub fn builder<'a>() -> SemaphoreCreateInfoBuilder<'a> {
7936        SemaphoreCreateInfoBuilder {
7937            inner: SemaphoreCreateInfo {
7938                s_type: StructureType::from_raw(9i32),
7939                ..Default::default()
7940            },
7941            _marker: core::marker::PhantomData,
7942        }
7943    }
7944}
7945impl<'a> SemaphoreCreateInfoBuilder<'a> {
7946    #[inline]
7947    pub fn flags(mut self, value: SemaphoreCreateFlags) -> Self {
7948        self.inner.flags = value;
7949        self
7950    }
7951    ///Prepend a struct to the pNext chain. See [`SemaphoreCreateInfo`]'s **Extended By** section for valid types.
7952    #[inline]
7953    pub fn push_next<T: ExtendsSemaphoreCreateInfo>(mut self, next: &'a mut T) -> Self {
7954        unsafe {
7955            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
7956            (*next_ptr).p_next = self.inner.p_next as *mut _;
7957            self.inner.p_next = <*mut BaseOutStructure>::cast::<
7958                core::ffi::c_void,
7959            >(next_ptr) as *const _;
7960        }
7961        self
7962    }
7963}
7964impl<'a> core::ops::Deref for SemaphoreCreateInfoBuilder<'a> {
7965    type Target = SemaphoreCreateInfo;
7966    #[inline]
7967    fn deref(&self) -> &Self::Target {
7968        &self.inner
7969    }
7970}
7971impl<'a> core::ops::DerefMut for SemaphoreCreateInfoBuilder<'a> {
7972    #[inline]
7973    fn deref_mut(&mut self) -> &mut Self::Target {
7974        &mut self.inner
7975    }
7976}
7977///Builder for [`QueryPoolCreateInfo`] with lifetime-tied pNext safety.
7978pub struct QueryPoolCreateInfoBuilder<'a> {
7979    inner: QueryPoolCreateInfo,
7980    _marker: core::marker::PhantomData<&'a ()>,
7981}
7982impl QueryPoolCreateInfo {
7983    /// Start building this struct; `s_type` is already set to the correct variant.
7984    #[inline]
7985    pub fn builder<'a>() -> QueryPoolCreateInfoBuilder<'a> {
7986        QueryPoolCreateInfoBuilder {
7987            inner: QueryPoolCreateInfo {
7988                s_type: StructureType::from_raw(11i32),
7989                ..Default::default()
7990            },
7991            _marker: core::marker::PhantomData,
7992        }
7993    }
7994}
7995impl<'a> QueryPoolCreateInfoBuilder<'a> {
7996    #[inline]
7997    pub fn flags(mut self, value: QueryPoolCreateFlags) -> Self {
7998        self.inner.flags = value;
7999        self
8000    }
8001    #[inline]
8002    pub fn query_type(mut self, value: QueryType) -> Self {
8003        self.inner.query_type = value;
8004        self
8005    }
8006    #[inline]
8007    pub fn query_count(mut self, value: u32) -> Self {
8008        self.inner.query_count = value;
8009        self
8010    }
8011    #[inline]
8012    pub fn pipeline_statistics(mut self, value: QueryPipelineStatisticFlags) -> Self {
8013        self.inner.pipeline_statistics = value;
8014        self
8015    }
8016    ///Prepend a struct to the pNext chain. See [`QueryPoolCreateInfo`]'s **Extended By** section for valid types.
8017    #[inline]
8018    pub fn push_next<T: ExtendsQueryPoolCreateInfo>(mut self, next: &'a mut T) -> Self {
8019        unsafe {
8020            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
8021            (*next_ptr).p_next = self.inner.p_next as *mut _;
8022            self.inner.p_next = <*mut BaseOutStructure>::cast::<
8023                core::ffi::c_void,
8024            >(next_ptr) as *const _;
8025        }
8026        self
8027    }
8028}
8029impl<'a> core::ops::Deref for QueryPoolCreateInfoBuilder<'a> {
8030    type Target = QueryPoolCreateInfo;
8031    #[inline]
8032    fn deref(&self) -> &Self::Target {
8033        &self.inner
8034    }
8035}
8036impl<'a> core::ops::DerefMut for QueryPoolCreateInfoBuilder<'a> {
8037    #[inline]
8038    fn deref_mut(&mut self) -> &mut Self::Target {
8039        &mut self.inner
8040    }
8041}
8042///Builder for [`FramebufferCreateInfo`] with lifetime-tied pNext safety.
8043pub struct FramebufferCreateInfoBuilder<'a> {
8044    inner: FramebufferCreateInfo,
8045    _marker: core::marker::PhantomData<&'a ()>,
8046}
8047impl FramebufferCreateInfo {
8048    /// Start building this struct; `s_type` is already set to the correct variant.
8049    #[inline]
8050    pub fn builder<'a>() -> FramebufferCreateInfoBuilder<'a> {
8051        FramebufferCreateInfoBuilder {
8052            inner: FramebufferCreateInfo {
8053                s_type: StructureType::from_raw(37i32),
8054                ..Default::default()
8055            },
8056            _marker: core::marker::PhantomData,
8057        }
8058    }
8059}
8060impl<'a> FramebufferCreateInfoBuilder<'a> {
8061    #[inline]
8062    pub fn flags(mut self, value: FramebufferCreateFlags) -> Self {
8063        self.inner.flags = value;
8064        self
8065    }
8066    #[inline]
8067    pub fn render_pass(mut self, value: RenderPass) -> Self {
8068        self.inner.render_pass = value;
8069        self
8070    }
8071    #[inline]
8072    pub fn attachments(mut self, slice: &'a [ImageView]) -> Self {
8073        self.inner.attachment_count = slice.len() as u32;
8074        self.inner.p_attachments = slice.as_ptr();
8075        self
8076    }
8077    #[inline]
8078    pub fn width(mut self, value: u32) -> Self {
8079        self.inner.width = value;
8080        self
8081    }
8082    #[inline]
8083    pub fn height(mut self, value: u32) -> Self {
8084        self.inner.height = value;
8085        self
8086    }
8087    #[inline]
8088    pub fn layers(mut self, value: u32) -> Self {
8089        self.inner.layers = value;
8090        self
8091    }
8092    ///Prepend a struct to the pNext chain. See [`FramebufferCreateInfo`]'s **Extended By** section for valid types.
8093    #[inline]
8094    pub fn push_next<T: ExtendsFramebufferCreateInfo>(
8095        mut self,
8096        next: &'a mut T,
8097    ) -> Self {
8098        unsafe {
8099            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
8100            (*next_ptr).p_next = self.inner.p_next as *mut _;
8101            self.inner.p_next = <*mut BaseOutStructure>::cast::<
8102                core::ffi::c_void,
8103            >(next_ptr) as *const _;
8104        }
8105        self
8106    }
8107}
8108impl<'a> core::ops::Deref for FramebufferCreateInfoBuilder<'a> {
8109    type Target = FramebufferCreateInfo;
8110    #[inline]
8111    fn deref(&self) -> &Self::Target {
8112        &self.inner
8113    }
8114}
8115impl<'a> core::ops::DerefMut for FramebufferCreateInfoBuilder<'a> {
8116    #[inline]
8117    fn deref_mut(&mut self) -> &mut Self::Target {
8118        &mut self.inner
8119    }
8120}
8121///Builder for [`DrawIndirectCommand`].
8122pub struct DrawIndirectCommandBuilder {
8123    inner: DrawIndirectCommand,
8124}
8125impl DrawIndirectCommand {
8126    /// Start building this struct.
8127    #[inline]
8128    pub fn builder() -> DrawIndirectCommandBuilder {
8129        DrawIndirectCommandBuilder {
8130            inner: DrawIndirectCommand {
8131                ..Default::default()
8132            },
8133        }
8134    }
8135}
8136impl DrawIndirectCommandBuilder {
8137    #[inline]
8138    pub fn vertex_count(mut self, value: u32) -> Self {
8139        self.inner.vertex_count = value;
8140        self
8141    }
8142    #[inline]
8143    pub fn instance_count(mut self, value: u32) -> Self {
8144        self.inner.instance_count = value;
8145        self
8146    }
8147    #[inline]
8148    pub fn first_vertex(mut self, value: u32) -> Self {
8149        self.inner.first_vertex = value;
8150        self
8151    }
8152    #[inline]
8153    pub fn first_instance(mut self, value: u32) -> Self {
8154        self.inner.first_instance = value;
8155        self
8156    }
8157}
8158impl core::ops::Deref for DrawIndirectCommandBuilder {
8159    type Target = DrawIndirectCommand;
8160    #[inline]
8161    fn deref(&self) -> &Self::Target {
8162        &self.inner
8163    }
8164}
8165impl core::ops::DerefMut for DrawIndirectCommandBuilder {
8166    #[inline]
8167    fn deref_mut(&mut self) -> &mut Self::Target {
8168        &mut self.inner
8169    }
8170}
8171///Builder for [`DrawIndexedIndirectCommand`].
8172pub struct DrawIndexedIndirectCommandBuilder {
8173    inner: DrawIndexedIndirectCommand,
8174}
8175impl DrawIndexedIndirectCommand {
8176    /// Start building this struct.
8177    #[inline]
8178    pub fn builder() -> DrawIndexedIndirectCommandBuilder {
8179        DrawIndexedIndirectCommandBuilder {
8180            inner: DrawIndexedIndirectCommand {
8181                ..Default::default()
8182            },
8183        }
8184    }
8185}
8186impl DrawIndexedIndirectCommandBuilder {
8187    #[inline]
8188    pub fn index_count(mut self, value: u32) -> Self {
8189        self.inner.index_count = value;
8190        self
8191    }
8192    #[inline]
8193    pub fn instance_count(mut self, value: u32) -> Self {
8194        self.inner.instance_count = value;
8195        self
8196    }
8197    #[inline]
8198    pub fn first_index(mut self, value: u32) -> Self {
8199        self.inner.first_index = value;
8200        self
8201    }
8202    #[inline]
8203    pub fn vertex_offset(mut self, value: i32) -> Self {
8204        self.inner.vertex_offset = value;
8205        self
8206    }
8207    #[inline]
8208    pub fn first_instance(mut self, value: u32) -> Self {
8209        self.inner.first_instance = value;
8210        self
8211    }
8212}
8213impl core::ops::Deref for DrawIndexedIndirectCommandBuilder {
8214    type Target = DrawIndexedIndirectCommand;
8215    #[inline]
8216    fn deref(&self) -> &Self::Target {
8217        &self.inner
8218    }
8219}
8220impl core::ops::DerefMut for DrawIndexedIndirectCommandBuilder {
8221    #[inline]
8222    fn deref_mut(&mut self) -> &mut Self::Target {
8223        &mut self.inner
8224    }
8225}
8226///Builder for [`DispatchIndirectCommand`].
8227pub struct DispatchIndirectCommandBuilder {
8228    inner: DispatchIndirectCommand,
8229}
8230impl DispatchIndirectCommand {
8231    /// Start building this struct.
8232    #[inline]
8233    pub fn builder() -> DispatchIndirectCommandBuilder {
8234        DispatchIndirectCommandBuilder {
8235            inner: DispatchIndirectCommand {
8236                ..Default::default()
8237            },
8238        }
8239    }
8240}
8241impl DispatchIndirectCommandBuilder {
8242    #[inline]
8243    pub fn x(mut self, value: u32) -> Self {
8244        self.inner.x = value;
8245        self
8246    }
8247    #[inline]
8248    pub fn y(mut self, value: u32) -> Self {
8249        self.inner.y = value;
8250        self
8251    }
8252    #[inline]
8253    pub fn z(mut self, value: u32) -> Self {
8254        self.inner.z = value;
8255        self
8256    }
8257}
8258impl core::ops::Deref for DispatchIndirectCommandBuilder {
8259    type Target = DispatchIndirectCommand;
8260    #[inline]
8261    fn deref(&self) -> &Self::Target {
8262        &self.inner
8263    }
8264}
8265impl core::ops::DerefMut for DispatchIndirectCommandBuilder {
8266    #[inline]
8267    fn deref_mut(&mut self) -> &mut Self::Target {
8268        &mut self.inner
8269    }
8270}
8271///Builder for [`MultiDrawInfoEXT`].
8272pub struct MultiDrawInfoEXTBuilder {
8273    inner: MultiDrawInfoEXT,
8274}
8275impl MultiDrawInfoEXT {
8276    /// Start building this struct.
8277    #[inline]
8278    pub fn builder() -> MultiDrawInfoEXTBuilder {
8279        MultiDrawInfoEXTBuilder {
8280            inner: MultiDrawInfoEXT {
8281                ..Default::default()
8282            },
8283        }
8284    }
8285}
8286impl MultiDrawInfoEXTBuilder {
8287    #[inline]
8288    pub fn first_vertex(mut self, value: u32) -> Self {
8289        self.inner.first_vertex = value;
8290        self
8291    }
8292    #[inline]
8293    pub fn vertex_count(mut self, value: u32) -> Self {
8294        self.inner.vertex_count = value;
8295        self
8296    }
8297}
8298impl core::ops::Deref for MultiDrawInfoEXTBuilder {
8299    type Target = MultiDrawInfoEXT;
8300    #[inline]
8301    fn deref(&self) -> &Self::Target {
8302        &self.inner
8303    }
8304}
8305impl core::ops::DerefMut for MultiDrawInfoEXTBuilder {
8306    #[inline]
8307    fn deref_mut(&mut self) -> &mut Self::Target {
8308        &mut self.inner
8309    }
8310}
8311///Builder for [`MultiDrawIndexedInfoEXT`].
8312pub struct MultiDrawIndexedInfoEXTBuilder {
8313    inner: MultiDrawIndexedInfoEXT,
8314}
8315impl MultiDrawIndexedInfoEXT {
8316    /// Start building this struct.
8317    #[inline]
8318    pub fn builder() -> MultiDrawIndexedInfoEXTBuilder {
8319        MultiDrawIndexedInfoEXTBuilder {
8320            inner: MultiDrawIndexedInfoEXT {
8321                ..Default::default()
8322            },
8323        }
8324    }
8325}
8326impl MultiDrawIndexedInfoEXTBuilder {
8327    #[inline]
8328    pub fn first_index(mut self, value: u32) -> Self {
8329        self.inner.first_index = value;
8330        self
8331    }
8332    #[inline]
8333    pub fn index_count(mut self, value: u32) -> Self {
8334        self.inner.index_count = value;
8335        self
8336    }
8337    #[inline]
8338    pub fn vertex_offset(mut self, value: i32) -> Self {
8339        self.inner.vertex_offset = value;
8340        self
8341    }
8342}
8343impl core::ops::Deref for MultiDrawIndexedInfoEXTBuilder {
8344    type Target = MultiDrawIndexedInfoEXT;
8345    #[inline]
8346    fn deref(&self) -> &Self::Target {
8347        &self.inner
8348    }
8349}
8350impl core::ops::DerefMut for MultiDrawIndexedInfoEXTBuilder {
8351    #[inline]
8352    fn deref_mut(&mut self) -> &mut Self::Target {
8353        &mut self.inner
8354    }
8355}
8356///Builder for [`SubmitInfo`] with lifetime-tied pNext safety.
8357pub struct SubmitInfoBuilder<'a> {
8358    inner: SubmitInfo,
8359    _marker: core::marker::PhantomData<&'a ()>,
8360}
8361impl SubmitInfo {
8362    /// Start building this struct; `s_type` is already set to the correct variant.
8363    #[inline]
8364    pub fn builder<'a>() -> SubmitInfoBuilder<'a> {
8365        SubmitInfoBuilder {
8366            inner: SubmitInfo {
8367                s_type: StructureType::from_raw(4i32),
8368                ..Default::default()
8369            },
8370            _marker: core::marker::PhantomData,
8371        }
8372    }
8373}
8374impl<'a> SubmitInfoBuilder<'a> {
8375    #[inline]
8376    pub fn wait_semaphores(mut self, slice: &'a [Semaphore]) -> Self {
8377        self.inner.wait_semaphore_count = slice.len() as u32;
8378        self.inner.p_wait_semaphores = slice.as_ptr();
8379        self
8380    }
8381    #[inline]
8382    pub fn wait_dst_stage_mask(mut self, slice: &'a [PipelineStageFlags]) -> Self {
8383        self.inner.wait_semaphore_count = slice.len() as u32;
8384        self.inner.p_wait_dst_stage_mask = slice.as_ptr();
8385        self
8386    }
8387    #[inline]
8388    pub fn command_buffers(mut self, slice: &'a [CommandBuffer]) -> Self {
8389        self.inner.command_buffer_count = slice.len() as u32;
8390        self.inner.p_command_buffers = slice.as_ptr();
8391        self
8392    }
8393    #[inline]
8394    pub fn signal_semaphores(mut self, slice: &'a [Semaphore]) -> Self {
8395        self.inner.signal_semaphore_count = slice.len() as u32;
8396        self.inner.p_signal_semaphores = slice.as_ptr();
8397        self
8398    }
8399    ///Prepend a struct to the pNext chain. See [`SubmitInfo`]'s **Extended By** section for valid types.
8400    #[inline]
8401    pub fn push_next<T: ExtendsSubmitInfo>(mut self, next: &'a mut T) -> Self {
8402        unsafe {
8403            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
8404            (*next_ptr).p_next = self.inner.p_next as *mut _;
8405            self.inner.p_next = <*mut BaseOutStructure>::cast::<
8406                core::ffi::c_void,
8407            >(next_ptr) as *const _;
8408        }
8409        self
8410    }
8411}
8412impl<'a> core::ops::Deref for SubmitInfoBuilder<'a> {
8413    type Target = SubmitInfo;
8414    #[inline]
8415    fn deref(&self) -> &Self::Target {
8416        &self.inner
8417    }
8418}
8419impl<'a> core::ops::DerefMut for SubmitInfoBuilder<'a> {
8420    #[inline]
8421    fn deref_mut(&mut self) -> &mut Self::Target {
8422        &mut self.inner
8423    }
8424}
8425///Builder for [`DisplayPropertiesKHR`].
8426pub struct DisplayPropertiesKHRBuilder<'a> {
8427    inner: DisplayPropertiesKHR,
8428    _marker: core::marker::PhantomData<&'a ()>,
8429}
8430impl DisplayPropertiesKHR {
8431    /// Start building this struct.
8432    #[inline]
8433    pub fn builder<'a>() -> DisplayPropertiesKHRBuilder<'a> {
8434        DisplayPropertiesKHRBuilder {
8435            inner: DisplayPropertiesKHR {
8436                ..Default::default()
8437            },
8438            _marker: core::marker::PhantomData,
8439        }
8440    }
8441}
8442impl<'a> DisplayPropertiesKHRBuilder<'a> {
8443    #[inline]
8444    pub fn display(mut self, value: DisplayKHR) -> Self {
8445        self.inner.display = value;
8446        self
8447    }
8448    #[inline]
8449    pub fn display_name(mut self, value: &'a core::ffi::CStr) -> Self {
8450        self.inner.display_name = value.as_ptr();
8451        self
8452    }
8453    #[inline]
8454    pub fn physical_dimensions(mut self, value: Extent2D) -> Self {
8455        self.inner.physical_dimensions = value;
8456        self
8457    }
8458    #[inline]
8459    pub fn physical_resolution(mut self, value: Extent2D) -> Self {
8460        self.inner.physical_resolution = value;
8461        self
8462    }
8463    #[inline]
8464    pub fn supported_transforms(mut self, value: SurfaceTransformFlagsKHR) -> Self {
8465        self.inner.supported_transforms = value;
8466        self
8467    }
8468    #[inline]
8469    pub fn plane_reorder_possible(mut self, value: bool) -> Self {
8470        self.inner.plane_reorder_possible = value as u32;
8471        self
8472    }
8473    #[inline]
8474    pub fn persistent_content(mut self, value: bool) -> Self {
8475        self.inner.persistent_content = value as u32;
8476        self
8477    }
8478}
8479impl<'a> core::ops::Deref for DisplayPropertiesKHRBuilder<'a> {
8480    type Target = DisplayPropertiesKHR;
8481    #[inline]
8482    fn deref(&self) -> &Self::Target {
8483        &self.inner
8484    }
8485}
8486impl<'a> core::ops::DerefMut for DisplayPropertiesKHRBuilder<'a> {
8487    #[inline]
8488    fn deref_mut(&mut self) -> &mut Self::Target {
8489        &mut self.inner
8490    }
8491}
8492///Builder for [`DisplayPlanePropertiesKHR`].
8493pub struct DisplayPlanePropertiesKHRBuilder {
8494    inner: DisplayPlanePropertiesKHR,
8495}
8496impl DisplayPlanePropertiesKHR {
8497    /// Start building this struct.
8498    #[inline]
8499    pub fn builder() -> DisplayPlanePropertiesKHRBuilder {
8500        DisplayPlanePropertiesKHRBuilder {
8501            inner: DisplayPlanePropertiesKHR {
8502                ..Default::default()
8503            },
8504        }
8505    }
8506}
8507impl DisplayPlanePropertiesKHRBuilder {
8508    #[inline]
8509    pub fn current_display(mut self, value: DisplayKHR) -> Self {
8510        self.inner.current_display = value;
8511        self
8512    }
8513    #[inline]
8514    pub fn current_stack_index(mut self, value: u32) -> Self {
8515        self.inner.current_stack_index = value;
8516        self
8517    }
8518}
8519impl core::ops::Deref for DisplayPlanePropertiesKHRBuilder {
8520    type Target = DisplayPlanePropertiesKHR;
8521    #[inline]
8522    fn deref(&self) -> &Self::Target {
8523        &self.inner
8524    }
8525}
8526impl core::ops::DerefMut for DisplayPlanePropertiesKHRBuilder {
8527    #[inline]
8528    fn deref_mut(&mut self) -> &mut Self::Target {
8529        &mut self.inner
8530    }
8531}
8532///Builder for [`DisplayModeParametersKHR`].
8533pub struct DisplayModeParametersKHRBuilder {
8534    inner: DisplayModeParametersKHR,
8535}
8536impl DisplayModeParametersKHR {
8537    /// Start building this struct.
8538    #[inline]
8539    pub fn builder() -> DisplayModeParametersKHRBuilder {
8540        DisplayModeParametersKHRBuilder {
8541            inner: DisplayModeParametersKHR {
8542                ..Default::default()
8543            },
8544        }
8545    }
8546}
8547impl DisplayModeParametersKHRBuilder {
8548    #[inline]
8549    pub fn visible_region(mut self, value: Extent2D) -> Self {
8550        self.inner.visible_region = value;
8551        self
8552    }
8553    #[inline]
8554    pub fn refresh_rate(mut self, value: u32) -> Self {
8555        self.inner.refresh_rate = value;
8556        self
8557    }
8558}
8559impl core::ops::Deref for DisplayModeParametersKHRBuilder {
8560    type Target = DisplayModeParametersKHR;
8561    #[inline]
8562    fn deref(&self) -> &Self::Target {
8563        &self.inner
8564    }
8565}
8566impl core::ops::DerefMut for DisplayModeParametersKHRBuilder {
8567    #[inline]
8568    fn deref_mut(&mut self) -> &mut Self::Target {
8569        &mut self.inner
8570    }
8571}
8572///Builder for [`DisplayModePropertiesKHR`].
8573pub struct DisplayModePropertiesKHRBuilder {
8574    inner: DisplayModePropertiesKHR,
8575}
8576impl DisplayModePropertiesKHR {
8577    /// Start building this struct.
8578    #[inline]
8579    pub fn builder() -> DisplayModePropertiesKHRBuilder {
8580        DisplayModePropertiesKHRBuilder {
8581            inner: DisplayModePropertiesKHR {
8582                ..Default::default()
8583            },
8584        }
8585    }
8586}
8587impl DisplayModePropertiesKHRBuilder {
8588    #[inline]
8589    pub fn display_mode(mut self, value: DisplayModeKHR) -> Self {
8590        self.inner.display_mode = value;
8591        self
8592    }
8593    #[inline]
8594    pub fn parameters(mut self, value: DisplayModeParametersKHR) -> Self {
8595        self.inner.parameters = value;
8596        self
8597    }
8598}
8599impl core::ops::Deref for DisplayModePropertiesKHRBuilder {
8600    type Target = DisplayModePropertiesKHR;
8601    #[inline]
8602    fn deref(&self) -> &Self::Target {
8603        &self.inner
8604    }
8605}
8606impl core::ops::DerefMut for DisplayModePropertiesKHRBuilder {
8607    #[inline]
8608    fn deref_mut(&mut self) -> &mut Self::Target {
8609        &mut self.inner
8610    }
8611}
8612///Builder for [`DisplayModeCreateInfoKHR`] with lifetime-tied pNext safety.
8613pub struct DisplayModeCreateInfoKHRBuilder<'a> {
8614    inner: DisplayModeCreateInfoKHR,
8615    _marker: core::marker::PhantomData<&'a ()>,
8616}
8617impl DisplayModeCreateInfoKHR {
8618    /// Start building this struct; `s_type` is already set to the correct variant.
8619    #[inline]
8620    pub fn builder<'a>() -> DisplayModeCreateInfoKHRBuilder<'a> {
8621        DisplayModeCreateInfoKHRBuilder {
8622            inner: DisplayModeCreateInfoKHR {
8623                s_type: StructureType::from_raw(1000002000i32),
8624                ..Default::default()
8625            },
8626            _marker: core::marker::PhantomData,
8627        }
8628    }
8629}
8630impl<'a> DisplayModeCreateInfoKHRBuilder<'a> {
8631    #[inline]
8632    pub fn flags(mut self, value: DisplayModeCreateFlagsKHR) -> Self {
8633        self.inner.flags = value;
8634        self
8635    }
8636    #[inline]
8637    pub fn parameters(mut self, value: DisplayModeParametersKHR) -> Self {
8638        self.inner.parameters = value;
8639        self
8640    }
8641    ///Prepend a struct to the pNext chain. See [`DisplayModeCreateInfoKHR`]'s **Extended By** section for valid types.
8642    #[inline]
8643    pub fn push_next<T: ExtendsDisplayModeCreateInfoKHR>(
8644        mut self,
8645        next: &'a mut T,
8646    ) -> Self {
8647        unsafe {
8648            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
8649            (*next_ptr).p_next = self.inner.p_next as *mut _;
8650            self.inner.p_next = <*mut BaseOutStructure>::cast::<
8651                core::ffi::c_void,
8652            >(next_ptr) as *const _;
8653        }
8654        self
8655    }
8656}
8657impl<'a> core::ops::Deref for DisplayModeCreateInfoKHRBuilder<'a> {
8658    type Target = DisplayModeCreateInfoKHR;
8659    #[inline]
8660    fn deref(&self) -> &Self::Target {
8661        &self.inner
8662    }
8663}
8664impl<'a> core::ops::DerefMut for DisplayModeCreateInfoKHRBuilder<'a> {
8665    #[inline]
8666    fn deref_mut(&mut self) -> &mut Self::Target {
8667        &mut self.inner
8668    }
8669}
8670///Builder for [`DisplayPlaneCapabilitiesKHR`].
8671pub struct DisplayPlaneCapabilitiesKHRBuilder {
8672    inner: DisplayPlaneCapabilitiesKHR,
8673}
8674impl DisplayPlaneCapabilitiesKHR {
8675    /// Start building this struct.
8676    #[inline]
8677    pub fn builder() -> DisplayPlaneCapabilitiesKHRBuilder {
8678        DisplayPlaneCapabilitiesKHRBuilder {
8679            inner: DisplayPlaneCapabilitiesKHR {
8680                ..Default::default()
8681            },
8682        }
8683    }
8684}
8685impl DisplayPlaneCapabilitiesKHRBuilder {
8686    #[inline]
8687    pub fn supported_alpha(mut self, value: DisplayPlaneAlphaFlagsKHR) -> Self {
8688        self.inner.supported_alpha = value;
8689        self
8690    }
8691    #[inline]
8692    pub fn min_src_position(mut self, value: Offset2D) -> Self {
8693        self.inner.min_src_position = value;
8694        self
8695    }
8696    #[inline]
8697    pub fn max_src_position(mut self, value: Offset2D) -> Self {
8698        self.inner.max_src_position = value;
8699        self
8700    }
8701    #[inline]
8702    pub fn min_src_extent(mut self, value: Extent2D) -> Self {
8703        self.inner.min_src_extent = value;
8704        self
8705    }
8706    #[inline]
8707    pub fn max_src_extent(mut self, value: Extent2D) -> Self {
8708        self.inner.max_src_extent = value;
8709        self
8710    }
8711    #[inline]
8712    pub fn min_dst_position(mut self, value: Offset2D) -> Self {
8713        self.inner.min_dst_position = value;
8714        self
8715    }
8716    #[inline]
8717    pub fn max_dst_position(mut self, value: Offset2D) -> Self {
8718        self.inner.max_dst_position = value;
8719        self
8720    }
8721    #[inline]
8722    pub fn min_dst_extent(mut self, value: Extent2D) -> Self {
8723        self.inner.min_dst_extent = value;
8724        self
8725    }
8726    #[inline]
8727    pub fn max_dst_extent(mut self, value: Extent2D) -> Self {
8728        self.inner.max_dst_extent = value;
8729        self
8730    }
8731}
8732impl core::ops::Deref for DisplayPlaneCapabilitiesKHRBuilder {
8733    type Target = DisplayPlaneCapabilitiesKHR;
8734    #[inline]
8735    fn deref(&self) -> &Self::Target {
8736        &self.inner
8737    }
8738}
8739impl core::ops::DerefMut for DisplayPlaneCapabilitiesKHRBuilder {
8740    #[inline]
8741    fn deref_mut(&mut self) -> &mut Self::Target {
8742        &mut self.inner
8743    }
8744}
8745///Builder for [`DisplaySurfaceCreateInfoKHR`] with lifetime-tied pNext safety.
8746pub struct DisplaySurfaceCreateInfoKHRBuilder<'a> {
8747    inner: DisplaySurfaceCreateInfoKHR,
8748    _marker: core::marker::PhantomData<&'a ()>,
8749}
8750impl DisplaySurfaceCreateInfoKHR {
8751    /// Start building this struct; `s_type` is already set to the correct variant.
8752    #[inline]
8753    pub fn builder<'a>() -> DisplaySurfaceCreateInfoKHRBuilder<'a> {
8754        DisplaySurfaceCreateInfoKHRBuilder {
8755            inner: DisplaySurfaceCreateInfoKHR {
8756                s_type: StructureType::from_raw(1000002001i32),
8757                ..Default::default()
8758            },
8759            _marker: core::marker::PhantomData,
8760        }
8761    }
8762}
8763impl<'a> DisplaySurfaceCreateInfoKHRBuilder<'a> {
8764    #[inline]
8765    pub fn flags(mut self, value: DisplaySurfaceCreateFlagsKHR) -> Self {
8766        self.inner.flags = value;
8767        self
8768    }
8769    #[inline]
8770    pub fn display_mode(mut self, value: DisplayModeKHR) -> Self {
8771        self.inner.display_mode = value;
8772        self
8773    }
8774    #[inline]
8775    pub fn plane_index(mut self, value: u32) -> Self {
8776        self.inner.plane_index = value;
8777        self
8778    }
8779    #[inline]
8780    pub fn plane_stack_index(mut self, value: u32) -> Self {
8781        self.inner.plane_stack_index = value;
8782        self
8783    }
8784    #[inline]
8785    pub fn transform(mut self, value: SurfaceTransformFlagBitsKHR) -> Self {
8786        self.inner.transform = value;
8787        self
8788    }
8789    #[inline]
8790    pub fn global_alpha(mut self, value: f32) -> Self {
8791        self.inner.global_alpha = value;
8792        self
8793    }
8794    #[inline]
8795    pub fn alpha_mode(mut self, value: DisplayPlaneAlphaFlagBitsKHR) -> Self {
8796        self.inner.alpha_mode = value;
8797        self
8798    }
8799    #[inline]
8800    pub fn image_extent(mut self, value: Extent2D) -> Self {
8801        self.inner.image_extent = value;
8802        self
8803    }
8804    ///Prepend a struct to the pNext chain. See [`DisplaySurfaceCreateInfoKHR`]'s **Extended By** section for valid types.
8805    #[inline]
8806    pub fn push_next<T: ExtendsDisplaySurfaceCreateInfoKHR>(
8807        mut self,
8808        next: &'a mut T,
8809    ) -> Self {
8810        unsafe {
8811            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
8812            (*next_ptr).p_next = self.inner.p_next as *mut _;
8813            self.inner.p_next = <*mut BaseOutStructure>::cast::<
8814                core::ffi::c_void,
8815            >(next_ptr) as *const _;
8816        }
8817        self
8818    }
8819}
8820impl<'a> core::ops::Deref for DisplaySurfaceCreateInfoKHRBuilder<'a> {
8821    type Target = DisplaySurfaceCreateInfoKHR;
8822    #[inline]
8823    fn deref(&self) -> &Self::Target {
8824        &self.inner
8825    }
8826}
8827impl<'a> core::ops::DerefMut for DisplaySurfaceCreateInfoKHRBuilder<'a> {
8828    #[inline]
8829    fn deref_mut(&mut self) -> &mut Self::Target {
8830        &mut self.inner
8831    }
8832}
8833///Builder for [`DisplaySurfaceStereoCreateInfoNV`] with lifetime-tied pNext safety.
8834pub struct DisplaySurfaceStereoCreateInfoNVBuilder<'a> {
8835    inner: DisplaySurfaceStereoCreateInfoNV,
8836    _marker: core::marker::PhantomData<&'a ()>,
8837}
8838impl DisplaySurfaceStereoCreateInfoNV {
8839    /// Start building this struct; `s_type` is already set to the correct variant.
8840    #[inline]
8841    pub fn builder<'a>() -> DisplaySurfaceStereoCreateInfoNVBuilder<'a> {
8842        DisplaySurfaceStereoCreateInfoNVBuilder {
8843            inner: DisplaySurfaceStereoCreateInfoNV {
8844                s_type: StructureType::from_raw(1000551000i32),
8845                ..Default::default()
8846            },
8847            _marker: core::marker::PhantomData,
8848        }
8849    }
8850}
8851impl<'a> DisplaySurfaceStereoCreateInfoNVBuilder<'a> {
8852    #[inline]
8853    pub fn stereo_type(mut self, value: DisplaySurfaceStereoTypeNV) -> Self {
8854        self.inner.stereo_type = value;
8855        self
8856    }
8857    ///Prepend a struct to the pNext chain. See [`DisplaySurfaceStereoCreateInfoNV`]'s **Extended By** section for valid types.
8858    #[inline]
8859    pub fn push_next<T: ExtendsDisplaySurfaceStereoCreateInfoNV>(
8860        mut self,
8861        next: &'a mut T,
8862    ) -> Self {
8863        unsafe {
8864            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
8865            (*next_ptr).p_next = self.inner.p_next as *mut _;
8866            self.inner.p_next = <*mut BaseOutStructure>::cast::<
8867                core::ffi::c_void,
8868            >(next_ptr) as *const _;
8869        }
8870        self
8871    }
8872}
8873impl<'a> core::ops::Deref for DisplaySurfaceStereoCreateInfoNVBuilder<'a> {
8874    type Target = DisplaySurfaceStereoCreateInfoNV;
8875    #[inline]
8876    fn deref(&self) -> &Self::Target {
8877        &self.inner
8878    }
8879}
8880impl<'a> core::ops::DerefMut for DisplaySurfaceStereoCreateInfoNVBuilder<'a> {
8881    #[inline]
8882    fn deref_mut(&mut self) -> &mut Self::Target {
8883        &mut self.inner
8884    }
8885}
8886///Builder for [`DisplayPresentInfoKHR`] with lifetime-tied pNext safety.
8887pub struct DisplayPresentInfoKHRBuilder<'a> {
8888    inner: DisplayPresentInfoKHR,
8889    _marker: core::marker::PhantomData<&'a ()>,
8890}
8891impl DisplayPresentInfoKHR {
8892    /// Start building this struct; `s_type` is already set to the correct variant.
8893    #[inline]
8894    pub fn builder<'a>() -> DisplayPresentInfoKHRBuilder<'a> {
8895        DisplayPresentInfoKHRBuilder {
8896            inner: DisplayPresentInfoKHR {
8897                s_type: StructureType::from_raw(1000003000i32),
8898                ..Default::default()
8899            },
8900            _marker: core::marker::PhantomData,
8901        }
8902    }
8903}
8904impl<'a> DisplayPresentInfoKHRBuilder<'a> {
8905    #[inline]
8906    pub fn src_rect(mut self, value: Rect2D) -> Self {
8907        self.inner.src_rect = value;
8908        self
8909    }
8910    #[inline]
8911    pub fn dst_rect(mut self, value: Rect2D) -> Self {
8912        self.inner.dst_rect = value;
8913        self
8914    }
8915    #[inline]
8916    pub fn persistent(mut self, value: bool) -> Self {
8917        self.inner.persistent = value as u32;
8918        self
8919    }
8920    ///Prepend a struct to the pNext chain. See [`DisplayPresentInfoKHR`]'s **Extended By** section for valid types.
8921    #[inline]
8922    pub fn push_next<T: ExtendsDisplayPresentInfoKHR>(
8923        mut self,
8924        next: &'a mut T,
8925    ) -> Self {
8926        unsafe {
8927            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
8928            (*next_ptr).p_next = self.inner.p_next as *mut _;
8929            self.inner.p_next = <*mut BaseOutStructure>::cast::<
8930                core::ffi::c_void,
8931            >(next_ptr) as *const _;
8932        }
8933        self
8934    }
8935}
8936impl<'a> core::ops::Deref for DisplayPresentInfoKHRBuilder<'a> {
8937    type Target = DisplayPresentInfoKHR;
8938    #[inline]
8939    fn deref(&self) -> &Self::Target {
8940        &self.inner
8941    }
8942}
8943impl<'a> core::ops::DerefMut for DisplayPresentInfoKHRBuilder<'a> {
8944    #[inline]
8945    fn deref_mut(&mut self) -> &mut Self::Target {
8946        &mut self.inner
8947    }
8948}
8949///Builder for [`SurfaceCapabilitiesKHR`].
8950pub struct SurfaceCapabilitiesKHRBuilder {
8951    inner: SurfaceCapabilitiesKHR,
8952}
8953impl SurfaceCapabilitiesKHR {
8954    /// Start building this struct.
8955    #[inline]
8956    pub fn builder() -> SurfaceCapabilitiesKHRBuilder {
8957        SurfaceCapabilitiesKHRBuilder {
8958            inner: SurfaceCapabilitiesKHR {
8959                ..Default::default()
8960            },
8961        }
8962    }
8963}
8964impl SurfaceCapabilitiesKHRBuilder {
8965    #[inline]
8966    pub fn min_image_count(mut self, value: u32) -> Self {
8967        self.inner.min_image_count = value;
8968        self
8969    }
8970    #[inline]
8971    pub fn max_image_count(mut self, value: u32) -> Self {
8972        self.inner.max_image_count = value;
8973        self
8974    }
8975    #[inline]
8976    pub fn current_extent(mut self, value: Extent2D) -> Self {
8977        self.inner.current_extent = value;
8978        self
8979    }
8980    #[inline]
8981    pub fn min_image_extent(mut self, value: Extent2D) -> Self {
8982        self.inner.min_image_extent = value;
8983        self
8984    }
8985    #[inline]
8986    pub fn max_image_extent(mut self, value: Extent2D) -> Self {
8987        self.inner.max_image_extent = value;
8988        self
8989    }
8990    #[inline]
8991    pub fn max_image_array_layers(mut self, value: u32) -> Self {
8992        self.inner.max_image_array_layers = value;
8993        self
8994    }
8995    #[inline]
8996    pub fn supported_transforms(mut self, value: SurfaceTransformFlagsKHR) -> Self {
8997        self.inner.supported_transforms = value;
8998        self
8999    }
9000    #[inline]
9001    pub fn current_transform(mut self, value: SurfaceTransformFlagBitsKHR) -> Self {
9002        self.inner.current_transform = value;
9003        self
9004    }
9005    #[inline]
9006    pub fn supported_composite_alpha(mut self, value: CompositeAlphaFlagsKHR) -> Self {
9007        self.inner.supported_composite_alpha = value;
9008        self
9009    }
9010    #[inline]
9011    pub fn supported_usage_flags(mut self, value: ImageUsageFlags) -> Self {
9012        self.inner.supported_usage_flags = value;
9013        self
9014    }
9015}
9016impl core::ops::Deref for SurfaceCapabilitiesKHRBuilder {
9017    type Target = SurfaceCapabilitiesKHR;
9018    #[inline]
9019    fn deref(&self) -> &Self::Target {
9020        &self.inner
9021    }
9022}
9023impl core::ops::DerefMut for SurfaceCapabilitiesKHRBuilder {
9024    #[inline]
9025    fn deref_mut(&mut self) -> &mut Self::Target {
9026        &mut self.inner
9027    }
9028}
9029///Builder for [`AndroidSurfaceCreateInfoKHR`] with lifetime-tied pNext safety.
9030pub struct AndroidSurfaceCreateInfoKHRBuilder<'a> {
9031    inner: AndroidSurfaceCreateInfoKHR,
9032    _marker: core::marker::PhantomData<&'a ()>,
9033}
9034impl AndroidSurfaceCreateInfoKHR {
9035    /// Start building this struct; `s_type` is already set to the correct variant.
9036    #[inline]
9037    pub fn builder<'a>() -> AndroidSurfaceCreateInfoKHRBuilder<'a> {
9038        AndroidSurfaceCreateInfoKHRBuilder {
9039            inner: AndroidSurfaceCreateInfoKHR {
9040                s_type: StructureType::from_raw(1000008000i32),
9041                ..Default::default()
9042            },
9043            _marker: core::marker::PhantomData,
9044        }
9045    }
9046}
9047impl<'a> AndroidSurfaceCreateInfoKHRBuilder<'a> {
9048    #[inline]
9049    pub fn flags(mut self, value: AndroidSurfaceCreateFlagsKHR) -> Self {
9050        self.inner.flags = value;
9051        self
9052    }
9053    #[inline]
9054    pub fn window(mut self, value: *mut core::ffi::c_void) -> Self {
9055        self.inner.window = value;
9056        self
9057    }
9058    ///Prepend a struct to the pNext chain. See [`AndroidSurfaceCreateInfoKHR`]'s **Extended By** section for valid types.
9059    #[inline]
9060    pub fn push_next<T: ExtendsAndroidSurfaceCreateInfoKHR>(
9061        mut self,
9062        next: &'a mut T,
9063    ) -> Self {
9064        unsafe {
9065            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
9066            (*next_ptr).p_next = self.inner.p_next as *mut _;
9067            self.inner.p_next = <*mut BaseOutStructure>::cast::<
9068                core::ffi::c_void,
9069            >(next_ptr) as *const _;
9070        }
9071        self
9072    }
9073}
9074impl<'a> core::ops::Deref for AndroidSurfaceCreateInfoKHRBuilder<'a> {
9075    type Target = AndroidSurfaceCreateInfoKHR;
9076    #[inline]
9077    fn deref(&self) -> &Self::Target {
9078        &self.inner
9079    }
9080}
9081impl<'a> core::ops::DerefMut for AndroidSurfaceCreateInfoKHRBuilder<'a> {
9082    #[inline]
9083    fn deref_mut(&mut self) -> &mut Self::Target {
9084        &mut self.inner
9085    }
9086}
9087///Builder for [`ViSurfaceCreateInfoNN`] with lifetime-tied pNext safety.
9088pub struct ViSurfaceCreateInfoNNBuilder<'a> {
9089    inner: ViSurfaceCreateInfoNN,
9090    _marker: core::marker::PhantomData<&'a ()>,
9091}
9092impl ViSurfaceCreateInfoNN {
9093    /// Start building this struct; `s_type` is already set to the correct variant.
9094    #[inline]
9095    pub fn builder<'a>() -> ViSurfaceCreateInfoNNBuilder<'a> {
9096        ViSurfaceCreateInfoNNBuilder {
9097            inner: ViSurfaceCreateInfoNN {
9098                s_type: StructureType::from_raw(1000062000i32),
9099                ..Default::default()
9100            },
9101            _marker: core::marker::PhantomData,
9102        }
9103    }
9104}
9105impl<'a> ViSurfaceCreateInfoNNBuilder<'a> {
9106    #[inline]
9107    pub fn flags(mut self, value: ViSurfaceCreateFlagsNN) -> Self {
9108        self.inner.flags = value;
9109        self
9110    }
9111    #[inline]
9112    pub fn window(mut self, value: *mut core::ffi::c_void) -> Self {
9113        self.inner.window = value;
9114        self
9115    }
9116    ///Prepend a struct to the pNext chain. See [`ViSurfaceCreateInfoNN`]'s **Extended By** section for valid types.
9117    #[inline]
9118    pub fn push_next<T: ExtendsViSurfaceCreateInfoNN>(
9119        mut self,
9120        next: &'a mut T,
9121    ) -> Self {
9122        unsafe {
9123            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
9124            (*next_ptr).p_next = self.inner.p_next as *mut _;
9125            self.inner.p_next = <*mut BaseOutStructure>::cast::<
9126                core::ffi::c_void,
9127            >(next_ptr) as *const _;
9128        }
9129        self
9130    }
9131}
9132impl<'a> core::ops::Deref for ViSurfaceCreateInfoNNBuilder<'a> {
9133    type Target = ViSurfaceCreateInfoNN;
9134    #[inline]
9135    fn deref(&self) -> &Self::Target {
9136        &self.inner
9137    }
9138}
9139impl<'a> core::ops::DerefMut for ViSurfaceCreateInfoNNBuilder<'a> {
9140    #[inline]
9141    fn deref_mut(&mut self) -> &mut Self::Target {
9142        &mut self.inner
9143    }
9144}
9145///Builder for [`WaylandSurfaceCreateInfoKHR`] with lifetime-tied pNext safety.
9146pub struct WaylandSurfaceCreateInfoKHRBuilder<'a> {
9147    inner: WaylandSurfaceCreateInfoKHR,
9148    _marker: core::marker::PhantomData<&'a ()>,
9149}
9150impl WaylandSurfaceCreateInfoKHR {
9151    /// Start building this struct; `s_type` is already set to the correct variant.
9152    #[inline]
9153    pub fn builder<'a>() -> WaylandSurfaceCreateInfoKHRBuilder<'a> {
9154        WaylandSurfaceCreateInfoKHRBuilder {
9155            inner: WaylandSurfaceCreateInfoKHR {
9156                s_type: StructureType::from_raw(1000006000i32),
9157                ..Default::default()
9158            },
9159            _marker: core::marker::PhantomData,
9160        }
9161    }
9162}
9163impl<'a> WaylandSurfaceCreateInfoKHRBuilder<'a> {
9164    #[inline]
9165    pub fn flags(mut self, value: WaylandSurfaceCreateFlagsKHR) -> Self {
9166        self.inner.flags = value;
9167        self
9168    }
9169    #[inline]
9170    pub fn display(mut self, value: *mut core::ffi::c_void) -> Self {
9171        self.inner.display = value;
9172        self
9173    }
9174    #[inline]
9175    pub fn surface(mut self, value: *mut core::ffi::c_void) -> Self {
9176        self.inner.surface = value;
9177        self
9178    }
9179    ///Prepend a struct to the pNext chain. See [`WaylandSurfaceCreateInfoKHR`]'s **Extended By** section for valid types.
9180    #[inline]
9181    pub fn push_next<T: ExtendsWaylandSurfaceCreateInfoKHR>(
9182        mut self,
9183        next: &'a mut T,
9184    ) -> Self {
9185        unsafe {
9186            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
9187            (*next_ptr).p_next = self.inner.p_next as *mut _;
9188            self.inner.p_next = <*mut BaseOutStructure>::cast::<
9189                core::ffi::c_void,
9190            >(next_ptr) as *const _;
9191        }
9192        self
9193    }
9194}
9195impl<'a> core::ops::Deref for WaylandSurfaceCreateInfoKHRBuilder<'a> {
9196    type Target = WaylandSurfaceCreateInfoKHR;
9197    #[inline]
9198    fn deref(&self) -> &Self::Target {
9199        &self.inner
9200    }
9201}
9202impl<'a> core::ops::DerefMut for WaylandSurfaceCreateInfoKHRBuilder<'a> {
9203    #[inline]
9204    fn deref_mut(&mut self) -> &mut Self::Target {
9205        &mut self.inner
9206    }
9207}
9208///Builder for [`UbmSurfaceCreateInfoSEC`] with lifetime-tied pNext safety.
9209pub struct UbmSurfaceCreateInfoSECBuilder<'a> {
9210    inner: UbmSurfaceCreateInfoSEC,
9211    _marker: core::marker::PhantomData<&'a ()>,
9212}
9213impl UbmSurfaceCreateInfoSEC {
9214    /// Start building this struct; `s_type` is already set to the correct variant.
9215    #[inline]
9216    pub fn builder<'a>() -> UbmSurfaceCreateInfoSECBuilder<'a> {
9217        UbmSurfaceCreateInfoSECBuilder {
9218            inner: UbmSurfaceCreateInfoSEC {
9219                s_type: StructureType::from_raw(1000664000i32),
9220                ..Default::default()
9221            },
9222            _marker: core::marker::PhantomData,
9223        }
9224    }
9225}
9226impl<'a> UbmSurfaceCreateInfoSECBuilder<'a> {
9227    #[inline]
9228    pub fn flags(mut self, value: UbmSurfaceCreateFlagsSEC) -> Self {
9229        self.inner.flags = value;
9230        self
9231    }
9232    #[inline]
9233    pub fn device(mut self, value: *mut core::ffi::c_void) -> Self {
9234        self.inner.device = value;
9235        self
9236    }
9237    #[inline]
9238    pub fn surface(mut self, value: *mut core::ffi::c_void) -> Self {
9239        self.inner.surface = value;
9240        self
9241    }
9242    ///Prepend a struct to the pNext chain. See [`UbmSurfaceCreateInfoSEC`]'s **Extended By** section for valid types.
9243    #[inline]
9244    pub fn push_next<T: ExtendsUbmSurfaceCreateInfoSEC>(
9245        mut self,
9246        next: &'a mut T,
9247    ) -> Self {
9248        unsafe {
9249            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
9250            (*next_ptr).p_next = self.inner.p_next as *mut _;
9251            self.inner.p_next = <*mut BaseOutStructure>::cast::<
9252                core::ffi::c_void,
9253            >(next_ptr) as *const _;
9254        }
9255        self
9256    }
9257}
9258impl<'a> core::ops::Deref for UbmSurfaceCreateInfoSECBuilder<'a> {
9259    type Target = UbmSurfaceCreateInfoSEC;
9260    #[inline]
9261    fn deref(&self) -> &Self::Target {
9262        &self.inner
9263    }
9264}
9265impl<'a> core::ops::DerefMut for UbmSurfaceCreateInfoSECBuilder<'a> {
9266    #[inline]
9267    fn deref_mut(&mut self) -> &mut Self::Target {
9268        &mut self.inner
9269    }
9270}
9271///Builder for [`Win32SurfaceCreateInfoKHR`] with lifetime-tied pNext safety.
9272pub struct Win32SurfaceCreateInfoKHRBuilder<'a> {
9273    inner: Win32SurfaceCreateInfoKHR,
9274    _marker: core::marker::PhantomData<&'a ()>,
9275}
9276impl Win32SurfaceCreateInfoKHR {
9277    /// Start building this struct; `s_type` is already set to the correct variant.
9278    #[inline]
9279    pub fn builder<'a>() -> Win32SurfaceCreateInfoKHRBuilder<'a> {
9280        Win32SurfaceCreateInfoKHRBuilder {
9281            inner: Win32SurfaceCreateInfoKHR {
9282                s_type: StructureType::from_raw(1000009000i32),
9283                ..Default::default()
9284            },
9285            _marker: core::marker::PhantomData,
9286        }
9287    }
9288}
9289impl<'a> Win32SurfaceCreateInfoKHRBuilder<'a> {
9290    #[inline]
9291    pub fn flags(mut self, value: Win32SurfaceCreateFlagsKHR) -> Self {
9292        self.inner.flags = value;
9293        self
9294    }
9295    #[inline]
9296    pub fn hinstance(mut self, value: isize) -> Self {
9297        self.inner.hinstance = value;
9298        self
9299    }
9300    #[inline]
9301    pub fn hwnd(mut self, value: isize) -> Self {
9302        self.inner.hwnd = value;
9303        self
9304    }
9305    ///Prepend a struct to the pNext chain. See [`Win32SurfaceCreateInfoKHR`]'s **Extended By** section for valid types.
9306    #[inline]
9307    pub fn push_next<T: ExtendsWin32SurfaceCreateInfoKHR>(
9308        mut self,
9309        next: &'a mut T,
9310    ) -> Self {
9311        unsafe {
9312            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
9313            (*next_ptr).p_next = self.inner.p_next as *mut _;
9314            self.inner.p_next = <*mut BaseOutStructure>::cast::<
9315                core::ffi::c_void,
9316            >(next_ptr) as *const _;
9317        }
9318        self
9319    }
9320}
9321impl<'a> core::ops::Deref for Win32SurfaceCreateInfoKHRBuilder<'a> {
9322    type Target = Win32SurfaceCreateInfoKHR;
9323    #[inline]
9324    fn deref(&self) -> &Self::Target {
9325        &self.inner
9326    }
9327}
9328impl<'a> core::ops::DerefMut for Win32SurfaceCreateInfoKHRBuilder<'a> {
9329    #[inline]
9330    fn deref_mut(&mut self) -> &mut Self::Target {
9331        &mut self.inner
9332    }
9333}
9334///Builder for [`XlibSurfaceCreateInfoKHR`] with lifetime-tied pNext safety.
9335pub struct XlibSurfaceCreateInfoKHRBuilder<'a> {
9336    inner: XlibSurfaceCreateInfoKHR,
9337    _marker: core::marker::PhantomData<&'a ()>,
9338}
9339impl XlibSurfaceCreateInfoKHR {
9340    /// Start building this struct; `s_type` is already set to the correct variant.
9341    #[inline]
9342    pub fn builder<'a>() -> XlibSurfaceCreateInfoKHRBuilder<'a> {
9343        XlibSurfaceCreateInfoKHRBuilder {
9344            inner: XlibSurfaceCreateInfoKHR {
9345                s_type: StructureType::from_raw(1000004000i32),
9346                ..Default::default()
9347            },
9348            _marker: core::marker::PhantomData,
9349        }
9350    }
9351}
9352impl<'a> XlibSurfaceCreateInfoKHRBuilder<'a> {
9353    #[inline]
9354    pub fn flags(mut self, value: XlibSurfaceCreateFlagsKHR) -> Self {
9355        self.inner.flags = value;
9356        self
9357    }
9358    #[inline]
9359    pub fn dpy(mut self, value: *mut core::ffi::c_void) -> Self {
9360        self.inner.dpy = value;
9361        self
9362    }
9363    #[inline]
9364    pub fn window(mut self, value: core::ffi::c_ulong) -> Self {
9365        self.inner.window = value;
9366        self
9367    }
9368    ///Prepend a struct to the pNext chain. See [`XlibSurfaceCreateInfoKHR`]'s **Extended By** section for valid types.
9369    #[inline]
9370    pub fn push_next<T: ExtendsXlibSurfaceCreateInfoKHR>(
9371        mut self,
9372        next: &'a mut T,
9373    ) -> Self {
9374        unsafe {
9375            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
9376            (*next_ptr).p_next = self.inner.p_next as *mut _;
9377            self.inner.p_next = <*mut BaseOutStructure>::cast::<
9378                core::ffi::c_void,
9379            >(next_ptr) as *const _;
9380        }
9381        self
9382    }
9383}
9384impl<'a> core::ops::Deref for XlibSurfaceCreateInfoKHRBuilder<'a> {
9385    type Target = XlibSurfaceCreateInfoKHR;
9386    #[inline]
9387    fn deref(&self) -> &Self::Target {
9388        &self.inner
9389    }
9390}
9391impl<'a> core::ops::DerefMut for XlibSurfaceCreateInfoKHRBuilder<'a> {
9392    #[inline]
9393    fn deref_mut(&mut self) -> &mut Self::Target {
9394        &mut self.inner
9395    }
9396}
9397///Builder for [`XcbSurfaceCreateInfoKHR`] with lifetime-tied pNext safety.
9398pub struct XcbSurfaceCreateInfoKHRBuilder<'a> {
9399    inner: XcbSurfaceCreateInfoKHR,
9400    _marker: core::marker::PhantomData<&'a ()>,
9401}
9402impl XcbSurfaceCreateInfoKHR {
9403    /// Start building this struct; `s_type` is already set to the correct variant.
9404    #[inline]
9405    pub fn builder<'a>() -> XcbSurfaceCreateInfoKHRBuilder<'a> {
9406        XcbSurfaceCreateInfoKHRBuilder {
9407            inner: XcbSurfaceCreateInfoKHR {
9408                s_type: StructureType::from_raw(1000005000i32),
9409                ..Default::default()
9410            },
9411            _marker: core::marker::PhantomData,
9412        }
9413    }
9414}
9415impl<'a> XcbSurfaceCreateInfoKHRBuilder<'a> {
9416    #[inline]
9417    pub fn flags(mut self, value: XcbSurfaceCreateFlagsKHR) -> Self {
9418        self.inner.flags = value;
9419        self
9420    }
9421    #[inline]
9422    pub fn connection(mut self, value: *mut core::ffi::c_void) -> Self {
9423        self.inner.connection = value;
9424        self
9425    }
9426    #[inline]
9427    pub fn window(mut self, value: u32) -> Self {
9428        self.inner.window = value;
9429        self
9430    }
9431    ///Prepend a struct to the pNext chain. See [`XcbSurfaceCreateInfoKHR`]'s **Extended By** section for valid types.
9432    #[inline]
9433    pub fn push_next<T: ExtendsXcbSurfaceCreateInfoKHR>(
9434        mut self,
9435        next: &'a mut T,
9436    ) -> Self {
9437        unsafe {
9438            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
9439            (*next_ptr).p_next = self.inner.p_next as *mut _;
9440            self.inner.p_next = <*mut BaseOutStructure>::cast::<
9441                core::ffi::c_void,
9442            >(next_ptr) as *const _;
9443        }
9444        self
9445    }
9446}
9447impl<'a> core::ops::Deref for XcbSurfaceCreateInfoKHRBuilder<'a> {
9448    type Target = XcbSurfaceCreateInfoKHR;
9449    #[inline]
9450    fn deref(&self) -> &Self::Target {
9451        &self.inner
9452    }
9453}
9454impl<'a> core::ops::DerefMut for XcbSurfaceCreateInfoKHRBuilder<'a> {
9455    #[inline]
9456    fn deref_mut(&mut self) -> &mut Self::Target {
9457        &mut self.inner
9458    }
9459}
9460///Builder for [`DirectFBSurfaceCreateInfoEXT`] with lifetime-tied pNext safety.
9461pub struct DirectFBSurfaceCreateInfoEXTBuilder<'a> {
9462    inner: DirectFBSurfaceCreateInfoEXT,
9463    _marker: core::marker::PhantomData<&'a ()>,
9464}
9465impl DirectFBSurfaceCreateInfoEXT {
9466    /// Start building this struct; `s_type` is already set to the correct variant.
9467    #[inline]
9468    pub fn builder<'a>() -> DirectFBSurfaceCreateInfoEXTBuilder<'a> {
9469        DirectFBSurfaceCreateInfoEXTBuilder {
9470            inner: DirectFBSurfaceCreateInfoEXT {
9471                s_type: StructureType::from_raw(1000346000i32),
9472                ..Default::default()
9473            },
9474            _marker: core::marker::PhantomData,
9475        }
9476    }
9477}
9478impl<'a> DirectFBSurfaceCreateInfoEXTBuilder<'a> {
9479    #[inline]
9480    pub fn flags(mut self, value: DirectFBSurfaceCreateFlagsEXT) -> Self {
9481        self.inner.flags = value;
9482        self
9483    }
9484    #[inline]
9485    pub fn dfb(mut self, value: *mut core::ffi::c_void) -> Self {
9486        self.inner.dfb = value;
9487        self
9488    }
9489    #[inline]
9490    pub fn surface(mut self, value: *mut core::ffi::c_void) -> Self {
9491        self.inner.surface = value;
9492        self
9493    }
9494    ///Prepend a struct to the pNext chain. See [`DirectFBSurfaceCreateInfoEXT`]'s **Extended By** section for valid types.
9495    #[inline]
9496    pub fn push_next<T: ExtendsDirectFBSurfaceCreateInfoEXT>(
9497        mut self,
9498        next: &'a mut T,
9499    ) -> Self {
9500        unsafe {
9501            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
9502            (*next_ptr).p_next = self.inner.p_next as *mut _;
9503            self.inner.p_next = <*mut BaseOutStructure>::cast::<
9504                core::ffi::c_void,
9505            >(next_ptr) as *const _;
9506        }
9507        self
9508    }
9509}
9510impl<'a> core::ops::Deref for DirectFBSurfaceCreateInfoEXTBuilder<'a> {
9511    type Target = DirectFBSurfaceCreateInfoEXT;
9512    #[inline]
9513    fn deref(&self) -> &Self::Target {
9514        &self.inner
9515    }
9516}
9517impl<'a> core::ops::DerefMut for DirectFBSurfaceCreateInfoEXTBuilder<'a> {
9518    #[inline]
9519    fn deref_mut(&mut self) -> &mut Self::Target {
9520        &mut self.inner
9521    }
9522}
9523///Builder for [`ImagePipeSurfaceCreateInfoFUCHSIA`] with lifetime-tied pNext safety.
9524pub struct ImagePipeSurfaceCreateInfoFUCHSIABuilder<'a> {
9525    inner: ImagePipeSurfaceCreateInfoFUCHSIA,
9526    _marker: core::marker::PhantomData<&'a ()>,
9527}
9528impl ImagePipeSurfaceCreateInfoFUCHSIA {
9529    /// Start building this struct; `s_type` is already set to the correct variant.
9530    #[inline]
9531    pub fn builder<'a>() -> ImagePipeSurfaceCreateInfoFUCHSIABuilder<'a> {
9532        ImagePipeSurfaceCreateInfoFUCHSIABuilder {
9533            inner: ImagePipeSurfaceCreateInfoFUCHSIA {
9534                s_type: StructureType::from_raw(1000214000i32),
9535                ..Default::default()
9536            },
9537            _marker: core::marker::PhantomData,
9538        }
9539    }
9540}
9541impl<'a> ImagePipeSurfaceCreateInfoFUCHSIABuilder<'a> {
9542    #[inline]
9543    pub fn flags(mut self, value: ImagePipeSurfaceCreateFlagsFUCHSIA) -> Self {
9544        self.inner.flags = value;
9545        self
9546    }
9547    #[inline]
9548    pub fn image_pipe_handle(mut self, value: u32) -> Self {
9549        self.inner.image_pipe_handle = value;
9550        self
9551    }
9552    ///Prepend a struct to the pNext chain. See [`ImagePipeSurfaceCreateInfoFUCHSIA`]'s **Extended By** section for valid types.
9553    #[inline]
9554    pub fn push_next<T: ExtendsImagePipeSurfaceCreateInfoFUCHSIA>(
9555        mut self,
9556        next: &'a mut T,
9557    ) -> Self {
9558        unsafe {
9559            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
9560            (*next_ptr).p_next = self.inner.p_next as *mut _;
9561            self.inner.p_next = <*mut BaseOutStructure>::cast::<
9562                core::ffi::c_void,
9563            >(next_ptr) as *const _;
9564        }
9565        self
9566    }
9567}
9568impl<'a> core::ops::Deref for ImagePipeSurfaceCreateInfoFUCHSIABuilder<'a> {
9569    type Target = ImagePipeSurfaceCreateInfoFUCHSIA;
9570    #[inline]
9571    fn deref(&self) -> &Self::Target {
9572        &self.inner
9573    }
9574}
9575impl<'a> core::ops::DerefMut for ImagePipeSurfaceCreateInfoFUCHSIABuilder<'a> {
9576    #[inline]
9577    fn deref_mut(&mut self) -> &mut Self::Target {
9578        &mut self.inner
9579    }
9580}
9581///Builder for [`StreamDescriptorSurfaceCreateInfoGGP`] with lifetime-tied pNext safety.
9582pub struct StreamDescriptorSurfaceCreateInfoGGPBuilder<'a> {
9583    inner: StreamDescriptorSurfaceCreateInfoGGP,
9584    _marker: core::marker::PhantomData<&'a ()>,
9585}
9586impl StreamDescriptorSurfaceCreateInfoGGP {
9587    /// Start building this struct; `s_type` is already set to the correct variant.
9588    #[inline]
9589    pub fn builder<'a>() -> StreamDescriptorSurfaceCreateInfoGGPBuilder<'a> {
9590        StreamDescriptorSurfaceCreateInfoGGPBuilder {
9591            inner: StreamDescriptorSurfaceCreateInfoGGP {
9592                s_type: StructureType::from_raw(1000049000i32),
9593                ..Default::default()
9594            },
9595            _marker: core::marker::PhantomData,
9596        }
9597    }
9598}
9599impl<'a> StreamDescriptorSurfaceCreateInfoGGPBuilder<'a> {
9600    #[inline]
9601    pub fn flags(mut self, value: StreamDescriptorSurfaceCreateFlagsGGP) -> Self {
9602        self.inner.flags = value;
9603        self
9604    }
9605    #[inline]
9606    pub fn stream_descriptor(mut self, value: u32) -> Self {
9607        self.inner.stream_descriptor = value;
9608        self
9609    }
9610    ///Prepend a struct to the pNext chain. See [`StreamDescriptorSurfaceCreateInfoGGP`]'s **Extended By** section for valid types.
9611    #[inline]
9612    pub fn push_next<T: ExtendsStreamDescriptorSurfaceCreateInfoGGP>(
9613        mut self,
9614        next: &'a mut T,
9615    ) -> Self {
9616        unsafe {
9617            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
9618            (*next_ptr).p_next = self.inner.p_next as *mut _;
9619            self.inner.p_next = <*mut BaseOutStructure>::cast::<
9620                core::ffi::c_void,
9621            >(next_ptr) as *const _;
9622        }
9623        self
9624    }
9625}
9626impl<'a> core::ops::Deref for StreamDescriptorSurfaceCreateInfoGGPBuilder<'a> {
9627    type Target = StreamDescriptorSurfaceCreateInfoGGP;
9628    #[inline]
9629    fn deref(&self) -> &Self::Target {
9630        &self.inner
9631    }
9632}
9633impl<'a> core::ops::DerefMut for StreamDescriptorSurfaceCreateInfoGGPBuilder<'a> {
9634    #[inline]
9635    fn deref_mut(&mut self) -> &mut Self::Target {
9636        &mut self.inner
9637    }
9638}
9639///Builder for [`ScreenSurfaceCreateInfoQNX`] with lifetime-tied pNext safety.
9640pub struct ScreenSurfaceCreateInfoQNXBuilder<'a> {
9641    inner: ScreenSurfaceCreateInfoQNX,
9642    _marker: core::marker::PhantomData<&'a ()>,
9643}
9644impl ScreenSurfaceCreateInfoQNX {
9645    /// Start building this struct; `s_type` is already set to the correct variant.
9646    #[inline]
9647    pub fn builder<'a>() -> ScreenSurfaceCreateInfoQNXBuilder<'a> {
9648        ScreenSurfaceCreateInfoQNXBuilder {
9649            inner: ScreenSurfaceCreateInfoQNX {
9650                s_type: StructureType::from_raw(1000378000i32),
9651                ..Default::default()
9652            },
9653            _marker: core::marker::PhantomData,
9654        }
9655    }
9656}
9657impl<'a> ScreenSurfaceCreateInfoQNXBuilder<'a> {
9658    #[inline]
9659    pub fn flags(mut self, value: ScreenSurfaceCreateFlagsQNX) -> Self {
9660        self.inner.flags = value;
9661        self
9662    }
9663    #[inline]
9664    pub fn context(mut self, value: *mut core::ffi::c_void) -> Self {
9665        self.inner.context = value;
9666        self
9667    }
9668    #[inline]
9669    pub fn window(mut self, value: *mut core::ffi::c_void) -> Self {
9670        self.inner.window = value;
9671        self
9672    }
9673    ///Prepend a struct to the pNext chain. See [`ScreenSurfaceCreateInfoQNX`]'s **Extended By** section for valid types.
9674    #[inline]
9675    pub fn push_next<T: ExtendsScreenSurfaceCreateInfoQNX>(
9676        mut self,
9677        next: &'a mut T,
9678    ) -> Self {
9679        unsafe {
9680            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
9681            (*next_ptr).p_next = self.inner.p_next as *mut _;
9682            self.inner.p_next = <*mut BaseOutStructure>::cast::<
9683                core::ffi::c_void,
9684            >(next_ptr) as *const _;
9685        }
9686        self
9687    }
9688}
9689impl<'a> core::ops::Deref for ScreenSurfaceCreateInfoQNXBuilder<'a> {
9690    type Target = ScreenSurfaceCreateInfoQNX;
9691    #[inline]
9692    fn deref(&self) -> &Self::Target {
9693        &self.inner
9694    }
9695}
9696impl<'a> core::ops::DerefMut for ScreenSurfaceCreateInfoQNXBuilder<'a> {
9697    #[inline]
9698    fn deref_mut(&mut self) -> &mut Self::Target {
9699        &mut self.inner
9700    }
9701}
9702///Builder for [`SurfaceFormatKHR`].
9703pub struct SurfaceFormatKHRBuilder {
9704    inner: SurfaceFormatKHR,
9705}
9706impl SurfaceFormatKHR {
9707    /// Start building this struct.
9708    #[inline]
9709    pub fn builder() -> SurfaceFormatKHRBuilder {
9710        SurfaceFormatKHRBuilder {
9711            inner: SurfaceFormatKHR {
9712                ..Default::default()
9713            },
9714        }
9715    }
9716}
9717impl SurfaceFormatKHRBuilder {
9718    #[inline]
9719    pub fn format(mut self, value: Format) -> Self {
9720        self.inner.format = value;
9721        self
9722    }
9723    #[inline]
9724    pub fn color_space(mut self, value: ColorSpaceKHR) -> Self {
9725        self.inner.color_space = value;
9726        self
9727    }
9728}
9729impl core::ops::Deref for SurfaceFormatKHRBuilder {
9730    type Target = SurfaceFormatKHR;
9731    #[inline]
9732    fn deref(&self) -> &Self::Target {
9733        &self.inner
9734    }
9735}
9736impl core::ops::DerefMut for SurfaceFormatKHRBuilder {
9737    #[inline]
9738    fn deref_mut(&mut self) -> &mut Self::Target {
9739        &mut self.inner
9740    }
9741}
9742///Builder for [`SwapchainCreateInfoKHR`] with lifetime-tied pNext safety.
9743pub struct SwapchainCreateInfoKHRBuilder<'a> {
9744    inner: SwapchainCreateInfoKHR,
9745    _marker: core::marker::PhantomData<&'a ()>,
9746}
9747impl SwapchainCreateInfoKHR {
9748    /// Start building this struct; `s_type` is already set to the correct variant.
9749    #[inline]
9750    pub fn builder<'a>() -> SwapchainCreateInfoKHRBuilder<'a> {
9751        SwapchainCreateInfoKHRBuilder {
9752            inner: SwapchainCreateInfoKHR {
9753                s_type: StructureType::from_raw(1000001000i32),
9754                ..Default::default()
9755            },
9756            _marker: core::marker::PhantomData,
9757        }
9758    }
9759}
9760impl<'a> SwapchainCreateInfoKHRBuilder<'a> {
9761    #[inline]
9762    pub fn flags(mut self, value: SwapchainCreateFlagsKHR) -> Self {
9763        self.inner.flags = value;
9764        self
9765    }
9766    #[inline]
9767    pub fn surface(mut self, value: SurfaceKHR) -> Self {
9768        self.inner.surface = value;
9769        self
9770    }
9771    #[inline]
9772    pub fn min_image_count(mut self, value: u32) -> Self {
9773        self.inner.min_image_count = value;
9774        self
9775    }
9776    #[inline]
9777    pub fn image_format(mut self, value: Format) -> Self {
9778        self.inner.image_format = value;
9779        self
9780    }
9781    #[inline]
9782    pub fn image_color_space(mut self, value: ColorSpaceKHR) -> Self {
9783        self.inner.image_color_space = value;
9784        self
9785    }
9786    #[inline]
9787    pub fn image_extent(mut self, value: Extent2D) -> Self {
9788        self.inner.image_extent = value;
9789        self
9790    }
9791    #[inline]
9792    pub fn image_array_layers(mut self, value: u32) -> Self {
9793        self.inner.image_array_layers = value;
9794        self
9795    }
9796    #[inline]
9797    pub fn image_usage(mut self, value: ImageUsageFlags) -> Self {
9798        self.inner.image_usage = value;
9799        self
9800    }
9801    #[inline]
9802    pub fn image_sharing_mode(mut self, value: SharingMode) -> Self {
9803        self.inner.image_sharing_mode = value;
9804        self
9805    }
9806    #[inline]
9807    pub fn queue_family_indices(mut self, slice: &'a [u32]) -> Self {
9808        self.inner.queue_family_index_count = slice.len() as u32;
9809        self.inner.p_queue_family_indices = slice.as_ptr();
9810        self
9811    }
9812    #[inline]
9813    pub fn pre_transform(mut self, value: SurfaceTransformFlagBitsKHR) -> Self {
9814        self.inner.pre_transform = value;
9815        self
9816    }
9817    #[inline]
9818    pub fn composite_alpha(mut self, value: CompositeAlphaFlagBitsKHR) -> Self {
9819        self.inner.composite_alpha = value;
9820        self
9821    }
9822    #[inline]
9823    pub fn present_mode(mut self, value: PresentModeKHR) -> Self {
9824        self.inner.present_mode = value;
9825        self
9826    }
9827    #[inline]
9828    pub fn clipped(mut self, value: bool) -> Self {
9829        self.inner.clipped = value as u32;
9830        self
9831    }
9832    #[inline]
9833    pub fn old_swapchain(mut self, value: SwapchainKHR) -> Self {
9834        self.inner.old_swapchain = value;
9835        self
9836    }
9837    ///Prepend a struct to the pNext chain. See [`SwapchainCreateInfoKHR`]'s **Extended By** section for valid types.
9838    #[inline]
9839    pub fn push_next<T: ExtendsSwapchainCreateInfoKHR>(
9840        mut self,
9841        next: &'a mut T,
9842    ) -> Self {
9843        unsafe {
9844            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
9845            (*next_ptr).p_next = self.inner.p_next as *mut _;
9846            self.inner.p_next = <*mut BaseOutStructure>::cast::<
9847                core::ffi::c_void,
9848            >(next_ptr) as *const _;
9849        }
9850        self
9851    }
9852}
9853impl<'a> core::ops::Deref for SwapchainCreateInfoKHRBuilder<'a> {
9854    type Target = SwapchainCreateInfoKHR;
9855    #[inline]
9856    fn deref(&self) -> &Self::Target {
9857        &self.inner
9858    }
9859}
9860impl<'a> core::ops::DerefMut for SwapchainCreateInfoKHRBuilder<'a> {
9861    #[inline]
9862    fn deref_mut(&mut self) -> &mut Self::Target {
9863        &mut self.inner
9864    }
9865}
9866///Builder for [`PresentInfoKHR`] with lifetime-tied pNext safety.
9867pub struct PresentInfoKHRBuilder<'a> {
9868    inner: PresentInfoKHR,
9869    _marker: core::marker::PhantomData<&'a ()>,
9870}
9871impl PresentInfoKHR {
9872    /// Start building this struct; `s_type` is already set to the correct variant.
9873    #[inline]
9874    pub fn builder<'a>() -> PresentInfoKHRBuilder<'a> {
9875        PresentInfoKHRBuilder {
9876            inner: PresentInfoKHR {
9877                s_type: StructureType::from_raw(1000001001i32),
9878                ..Default::default()
9879            },
9880            _marker: core::marker::PhantomData,
9881        }
9882    }
9883}
9884impl<'a> PresentInfoKHRBuilder<'a> {
9885    #[inline]
9886    pub fn wait_semaphores(mut self, slice: &'a [Semaphore]) -> Self {
9887        self.inner.wait_semaphore_count = slice.len() as u32;
9888        self.inner.p_wait_semaphores = slice.as_ptr();
9889        self
9890    }
9891    #[inline]
9892    pub fn swapchains(mut self, slice: &'a [SwapchainKHR]) -> Self {
9893        self.inner.swapchain_count = slice.len() as u32;
9894        self.inner.p_swapchains = slice.as_ptr();
9895        self
9896    }
9897    #[inline]
9898    pub fn image_indices(mut self, slice: &'a [u32]) -> Self {
9899        self.inner.swapchain_count = slice.len() as u32;
9900        self.inner.p_image_indices = slice.as_ptr();
9901        self
9902    }
9903    #[inline]
9904    pub fn results(mut self, slice: &'a mut [Result]) -> Self {
9905        self.inner.swapchain_count = slice.len() as u32;
9906        self.inner.p_results = slice.as_mut_ptr();
9907        self
9908    }
9909    ///Prepend a struct to the pNext chain. See [`PresentInfoKHR`]'s **Extended By** section for valid types.
9910    #[inline]
9911    pub fn push_next<T: ExtendsPresentInfoKHR>(mut self, next: &'a mut T) -> Self {
9912        unsafe {
9913            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
9914            (*next_ptr).p_next = self.inner.p_next as *mut _;
9915            self.inner.p_next = <*mut BaseOutStructure>::cast::<
9916                core::ffi::c_void,
9917            >(next_ptr) as *const _;
9918        }
9919        self
9920    }
9921}
9922impl<'a> core::ops::Deref for PresentInfoKHRBuilder<'a> {
9923    type Target = PresentInfoKHR;
9924    #[inline]
9925    fn deref(&self) -> &Self::Target {
9926        &self.inner
9927    }
9928}
9929impl<'a> core::ops::DerefMut for PresentInfoKHRBuilder<'a> {
9930    #[inline]
9931    fn deref_mut(&mut self) -> &mut Self::Target {
9932        &mut self.inner
9933    }
9934}
9935///Builder for [`DebugReportCallbackCreateInfoEXT`] with lifetime-tied pNext safety.
9936pub struct DebugReportCallbackCreateInfoEXTBuilder<'a> {
9937    inner: DebugReportCallbackCreateInfoEXT,
9938    _marker: core::marker::PhantomData<&'a ()>,
9939}
9940impl DebugReportCallbackCreateInfoEXT {
9941    /// Start building this struct; `s_type` is already set to the correct variant.
9942    #[inline]
9943    pub fn builder<'a>() -> DebugReportCallbackCreateInfoEXTBuilder<'a> {
9944        DebugReportCallbackCreateInfoEXTBuilder {
9945            inner: DebugReportCallbackCreateInfoEXT {
9946                s_type: StructureType::from_raw(1000011000i32),
9947                ..Default::default()
9948            },
9949            _marker: core::marker::PhantomData,
9950        }
9951    }
9952}
9953impl<'a> DebugReportCallbackCreateInfoEXTBuilder<'a> {
9954    #[inline]
9955    pub fn flags(mut self, value: DebugReportFlagsEXT) -> Self {
9956        self.inner.flags = value;
9957        self
9958    }
9959    #[inline]
9960    pub fn pfn_callback(mut self, value: PFN_vkDebugReportCallbackEXT) -> Self {
9961        self.inner.pfn_callback = value;
9962        self
9963    }
9964    #[inline]
9965    pub fn user_data(mut self, value: *mut core::ffi::c_void) -> Self {
9966        self.inner.p_user_data = value;
9967        self
9968    }
9969    ///Prepend a struct to the pNext chain. See [`DebugReportCallbackCreateInfoEXT`]'s **Extended By** section for valid types.
9970    #[inline]
9971    pub fn push_next<T: ExtendsDebugReportCallbackCreateInfoEXT>(
9972        mut self,
9973        next: &'a mut T,
9974    ) -> Self {
9975        unsafe {
9976            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
9977            (*next_ptr).p_next = self.inner.p_next as *mut _;
9978            self.inner.p_next = <*mut BaseOutStructure>::cast::<
9979                core::ffi::c_void,
9980            >(next_ptr) as *const _;
9981        }
9982        self
9983    }
9984}
9985impl<'a> core::ops::Deref for DebugReportCallbackCreateInfoEXTBuilder<'a> {
9986    type Target = DebugReportCallbackCreateInfoEXT;
9987    #[inline]
9988    fn deref(&self) -> &Self::Target {
9989        &self.inner
9990    }
9991}
9992impl<'a> core::ops::DerefMut for DebugReportCallbackCreateInfoEXTBuilder<'a> {
9993    #[inline]
9994    fn deref_mut(&mut self) -> &mut Self::Target {
9995        &mut self.inner
9996    }
9997}
9998///Builder for [`ValidationFlagsEXT`] with lifetime-tied pNext safety.
9999pub struct ValidationFlagsEXTBuilder<'a> {
10000    inner: ValidationFlagsEXT,
10001    _marker: core::marker::PhantomData<&'a ()>,
10002}
10003impl ValidationFlagsEXT {
10004    /// Start building this struct; `s_type` is already set to the correct variant.
10005    #[inline]
10006    pub fn builder<'a>() -> ValidationFlagsEXTBuilder<'a> {
10007        ValidationFlagsEXTBuilder {
10008            inner: ValidationFlagsEXT {
10009                s_type: StructureType::from_raw(1000061000i32),
10010                ..Default::default()
10011            },
10012            _marker: core::marker::PhantomData,
10013        }
10014    }
10015}
10016impl<'a> ValidationFlagsEXTBuilder<'a> {
10017    #[inline]
10018    pub fn disabled_validation_checks(
10019        mut self,
10020        slice: &'a [ValidationCheckEXT],
10021    ) -> Self {
10022        self.inner.disabled_validation_check_count = slice.len() as u32;
10023        self.inner.p_disabled_validation_checks = slice.as_ptr();
10024        self
10025    }
10026    ///Prepend a struct to the pNext chain. See [`ValidationFlagsEXT`]'s **Extended By** section for valid types.
10027    #[inline]
10028    pub fn push_next<T: ExtendsValidationFlagsEXT>(mut self, next: &'a mut T) -> Self {
10029        unsafe {
10030            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
10031            (*next_ptr).p_next = self.inner.p_next as *mut _;
10032            self.inner.p_next = <*mut BaseOutStructure>::cast::<
10033                core::ffi::c_void,
10034            >(next_ptr) as *const _;
10035        }
10036        self
10037    }
10038}
10039impl<'a> core::ops::Deref for ValidationFlagsEXTBuilder<'a> {
10040    type Target = ValidationFlagsEXT;
10041    #[inline]
10042    fn deref(&self) -> &Self::Target {
10043        &self.inner
10044    }
10045}
10046impl<'a> core::ops::DerefMut for ValidationFlagsEXTBuilder<'a> {
10047    #[inline]
10048    fn deref_mut(&mut self) -> &mut Self::Target {
10049        &mut self.inner
10050    }
10051}
10052///Builder for [`ValidationFeaturesEXT`] with lifetime-tied pNext safety.
10053pub struct ValidationFeaturesEXTBuilder<'a> {
10054    inner: ValidationFeaturesEXT,
10055    _marker: core::marker::PhantomData<&'a ()>,
10056}
10057impl ValidationFeaturesEXT {
10058    /// Start building this struct; `s_type` is already set to the correct variant.
10059    #[inline]
10060    pub fn builder<'a>() -> ValidationFeaturesEXTBuilder<'a> {
10061        ValidationFeaturesEXTBuilder {
10062            inner: ValidationFeaturesEXT {
10063                s_type: StructureType::from_raw(1000247000i32),
10064                ..Default::default()
10065            },
10066            _marker: core::marker::PhantomData,
10067        }
10068    }
10069}
10070impl<'a> ValidationFeaturesEXTBuilder<'a> {
10071    #[inline]
10072    pub fn enabled_validation_features(
10073        mut self,
10074        slice: &'a [ValidationFeatureEnableEXT],
10075    ) -> Self {
10076        self.inner.enabled_validation_feature_count = slice.len() as u32;
10077        self.inner.p_enabled_validation_features = slice.as_ptr();
10078        self
10079    }
10080    #[inline]
10081    pub fn disabled_validation_features(
10082        mut self,
10083        slice: &'a [ValidationFeatureDisableEXT],
10084    ) -> Self {
10085        self.inner.disabled_validation_feature_count = slice.len() as u32;
10086        self.inner.p_disabled_validation_features = slice.as_ptr();
10087        self
10088    }
10089    ///Prepend a struct to the pNext chain. See [`ValidationFeaturesEXT`]'s **Extended By** section for valid types.
10090    #[inline]
10091    pub fn push_next<T: ExtendsValidationFeaturesEXT>(
10092        mut self,
10093        next: &'a mut T,
10094    ) -> Self {
10095        unsafe {
10096            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
10097            (*next_ptr).p_next = self.inner.p_next as *mut _;
10098            self.inner.p_next = <*mut BaseOutStructure>::cast::<
10099                core::ffi::c_void,
10100            >(next_ptr) as *const _;
10101        }
10102        self
10103    }
10104}
10105impl<'a> core::ops::Deref for ValidationFeaturesEXTBuilder<'a> {
10106    type Target = ValidationFeaturesEXT;
10107    #[inline]
10108    fn deref(&self) -> &Self::Target {
10109        &self.inner
10110    }
10111}
10112impl<'a> core::ops::DerefMut for ValidationFeaturesEXTBuilder<'a> {
10113    #[inline]
10114    fn deref_mut(&mut self) -> &mut Self::Target {
10115        &mut self.inner
10116    }
10117}
10118///Builder for [`LayerSettingsCreateInfoEXT`] with lifetime-tied pNext safety.
10119pub struct LayerSettingsCreateInfoEXTBuilder<'a> {
10120    inner: LayerSettingsCreateInfoEXT,
10121    _marker: core::marker::PhantomData<&'a ()>,
10122}
10123impl LayerSettingsCreateInfoEXT {
10124    /// Start building this struct; `s_type` is already set to the correct variant.
10125    #[inline]
10126    pub fn builder<'a>() -> LayerSettingsCreateInfoEXTBuilder<'a> {
10127        LayerSettingsCreateInfoEXTBuilder {
10128            inner: LayerSettingsCreateInfoEXT {
10129                s_type: StructureType::from_raw(1000496000i32),
10130                ..Default::default()
10131            },
10132            _marker: core::marker::PhantomData,
10133        }
10134    }
10135}
10136impl<'a> LayerSettingsCreateInfoEXTBuilder<'a> {
10137    #[inline]
10138    pub fn settings(mut self, slice: &'a [LayerSettingEXT]) -> Self {
10139        self.inner.setting_count = slice.len() as u32;
10140        self.inner.p_settings = slice.as_ptr();
10141        self
10142    }
10143    ///Prepend a struct to the pNext chain. See [`LayerSettingsCreateInfoEXT`]'s **Extended By** section for valid types.
10144    #[inline]
10145    pub fn push_next<T: ExtendsLayerSettingsCreateInfoEXT>(
10146        mut self,
10147        next: &'a mut T,
10148    ) -> Self {
10149        unsafe {
10150            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
10151            (*next_ptr).p_next = self.inner.p_next as *mut _;
10152            self.inner.p_next = <*mut BaseOutStructure>::cast::<
10153                core::ffi::c_void,
10154            >(next_ptr) as *const _;
10155        }
10156        self
10157    }
10158}
10159impl<'a> core::ops::Deref for LayerSettingsCreateInfoEXTBuilder<'a> {
10160    type Target = LayerSettingsCreateInfoEXT;
10161    #[inline]
10162    fn deref(&self) -> &Self::Target {
10163        &self.inner
10164    }
10165}
10166impl<'a> core::ops::DerefMut for LayerSettingsCreateInfoEXTBuilder<'a> {
10167    #[inline]
10168    fn deref_mut(&mut self) -> &mut Self::Target {
10169        &mut self.inner
10170    }
10171}
10172///Builder for [`LayerSettingEXT`].
10173pub struct LayerSettingEXTBuilder<'a> {
10174    inner: LayerSettingEXT,
10175    _marker: core::marker::PhantomData<&'a ()>,
10176}
10177impl LayerSettingEXT {
10178    /// Start building this struct.
10179    #[inline]
10180    pub fn builder<'a>() -> LayerSettingEXTBuilder<'a> {
10181        LayerSettingEXTBuilder {
10182            inner: LayerSettingEXT {
10183                ..Default::default()
10184            },
10185            _marker: core::marker::PhantomData,
10186        }
10187    }
10188}
10189impl<'a> LayerSettingEXTBuilder<'a> {
10190    #[inline]
10191    pub fn layer_name(mut self, value: &'a core::ffi::CStr) -> Self {
10192        self.inner.p_layer_name = value.as_ptr();
10193        self
10194    }
10195    #[inline]
10196    pub fn setting_name(mut self, value: &'a core::ffi::CStr) -> Self {
10197        self.inner.p_setting_name = value.as_ptr();
10198        self
10199    }
10200    #[inline]
10201    pub fn r#type(mut self, value: LayerSettingTypeEXT) -> Self {
10202        self.inner.r#type = value;
10203        self
10204    }
10205    #[inline]
10206    pub fn values(mut self, slice: &'a [core::ffi::c_void]) -> Self {
10207        self.inner.value_count = slice.len() as u32;
10208        self.inner.p_values = slice.as_ptr();
10209        self
10210    }
10211}
10212impl<'a> core::ops::Deref for LayerSettingEXTBuilder<'a> {
10213    type Target = LayerSettingEXT;
10214    #[inline]
10215    fn deref(&self) -> &Self::Target {
10216        &self.inner
10217    }
10218}
10219impl<'a> core::ops::DerefMut for LayerSettingEXTBuilder<'a> {
10220    #[inline]
10221    fn deref_mut(&mut self) -> &mut Self::Target {
10222        &mut self.inner
10223    }
10224}
10225///Builder for [`ApplicationParametersEXT`] with lifetime-tied pNext safety.
10226pub struct ApplicationParametersEXTBuilder<'a> {
10227    inner: ApplicationParametersEXT,
10228    _marker: core::marker::PhantomData<&'a ()>,
10229}
10230impl ApplicationParametersEXT {
10231    /// Start building this struct; `s_type` is already set to the correct variant.
10232    #[inline]
10233    pub fn builder<'a>() -> ApplicationParametersEXTBuilder<'a> {
10234        ApplicationParametersEXTBuilder {
10235            inner: ApplicationParametersEXT {
10236                s_type: Default::default(),
10237                ..Default::default()
10238            },
10239            _marker: core::marker::PhantomData,
10240        }
10241    }
10242}
10243impl<'a> ApplicationParametersEXTBuilder<'a> {
10244    #[inline]
10245    pub fn vendor_id(mut self, value: u32) -> Self {
10246        self.inner.vendor_id = value;
10247        self
10248    }
10249    #[inline]
10250    pub fn device_id(mut self, value: u32) -> Self {
10251        self.inner.device_id = value;
10252        self
10253    }
10254    #[inline]
10255    pub fn key(mut self, value: u32) -> Self {
10256        self.inner.key = value;
10257        self
10258    }
10259    #[inline]
10260    pub fn value(mut self, value: u64) -> Self {
10261        self.inner.value = value;
10262        self
10263    }
10264    ///Prepend a struct to the pNext chain. See [`ApplicationParametersEXT`]'s **Extended By** section for valid types.
10265    #[inline]
10266    pub fn push_next<T: ExtendsApplicationParametersEXT>(
10267        mut self,
10268        next: &'a mut T,
10269    ) -> Self {
10270        unsafe {
10271            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
10272            (*next_ptr).p_next = self.inner.p_next as *mut _;
10273            self.inner.p_next = <*mut BaseOutStructure>::cast::<
10274                core::ffi::c_void,
10275            >(next_ptr) as *const _;
10276        }
10277        self
10278    }
10279}
10280impl<'a> core::ops::Deref for ApplicationParametersEXTBuilder<'a> {
10281    type Target = ApplicationParametersEXT;
10282    #[inline]
10283    fn deref(&self) -> &Self::Target {
10284        &self.inner
10285    }
10286}
10287impl<'a> core::ops::DerefMut for ApplicationParametersEXTBuilder<'a> {
10288    #[inline]
10289    fn deref_mut(&mut self) -> &mut Self::Target {
10290        &mut self.inner
10291    }
10292}
10293///Builder for [`PipelineRasterizationStateRasterizationOrderAMD`] with lifetime-tied pNext safety.
10294pub struct PipelineRasterizationStateRasterizationOrderAMDBuilder<'a> {
10295    inner: PipelineRasterizationStateRasterizationOrderAMD,
10296    _marker: core::marker::PhantomData<&'a ()>,
10297}
10298impl PipelineRasterizationStateRasterizationOrderAMD {
10299    /// Start building this struct; `s_type` is already set to the correct variant.
10300    #[inline]
10301    pub fn builder<'a>() -> PipelineRasterizationStateRasterizationOrderAMDBuilder<'a> {
10302        PipelineRasterizationStateRasterizationOrderAMDBuilder {
10303            inner: PipelineRasterizationStateRasterizationOrderAMD {
10304                s_type: StructureType::from_raw(1000018000i32),
10305                ..Default::default()
10306            },
10307            _marker: core::marker::PhantomData,
10308        }
10309    }
10310}
10311impl<'a> PipelineRasterizationStateRasterizationOrderAMDBuilder<'a> {
10312    #[inline]
10313    pub fn rasterization_order(mut self, value: RasterizationOrderAMD) -> Self {
10314        self.inner.rasterization_order = value;
10315        self
10316    }
10317    ///Prepend a struct to the pNext chain. See [`PipelineRasterizationStateRasterizationOrderAMD`]'s **Extended By** section for valid types.
10318    #[inline]
10319    pub fn push_next<T: ExtendsPipelineRasterizationStateRasterizationOrderAMD>(
10320        mut self,
10321        next: &'a mut T,
10322    ) -> Self {
10323        unsafe {
10324            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
10325            (*next_ptr).p_next = self.inner.p_next as *mut _;
10326            self.inner.p_next = <*mut BaseOutStructure>::cast::<
10327                core::ffi::c_void,
10328            >(next_ptr) as *const _;
10329        }
10330        self
10331    }
10332}
10333impl<'a> core::ops::Deref
10334for PipelineRasterizationStateRasterizationOrderAMDBuilder<'a> {
10335    type Target = PipelineRasterizationStateRasterizationOrderAMD;
10336    #[inline]
10337    fn deref(&self) -> &Self::Target {
10338        &self.inner
10339    }
10340}
10341impl<'a> core::ops::DerefMut
10342for PipelineRasterizationStateRasterizationOrderAMDBuilder<'a> {
10343    #[inline]
10344    fn deref_mut(&mut self) -> &mut Self::Target {
10345        &mut self.inner
10346    }
10347}
10348///Builder for [`DebugMarkerObjectNameInfoEXT`] with lifetime-tied pNext safety.
10349pub struct DebugMarkerObjectNameInfoEXTBuilder<'a> {
10350    inner: DebugMarkerObjectNameInfoEXT,
10351    _marker: core::marker::PhantomData<&'a ()>,
10352}
10353impl DebugMarkerObjectNameInfoEXT {
10354    /// Start building this struct; `s_type` is already set to the correct variant.
10355    #[inline]
10356    pub fn builder<'a>() -> DebugMarkerObjectNameInfoEXTBuilder<'a> {
10357        DebugMarkerObjectNameInfoEXTBuilder {
10358            inner: DebugMarkerObjectNameInfoEXT {
10359                s_type: StructureType::from_raw(1000022000i32),
10360                ..Default::default()
10361            },
10362            _marker: core::marker::PhantomData,
10363        }
10364    }
10365}
10366impl<'a> DebugMarkerObjectNameInfoEXTBuilder<'a> {
10367    #[inline]
10368    pub fn object_type(mut self, value: DebugReportObjectTypeEXT) -> Self {
10369        self.inner.object_type = value;
10370        self
10371    }
10372    #[inline]
10373    pub fn object(mut self, value: u64) -> Self {
10374        self.inner.object = value;
10375        self
10376    }
10377    #[inline]
10378    pub fn object_name(mut self, value: &'a core::ffi::CStr) -> Self {
10379        self.inner.p_object_name = value.as_ptr();
10380        self
10381    }
10382    ///Prepend a struct to the pNext chain. See [`DebugMarkerObjectNameInfoEXT`]'s **Extended By** section for valid types.
10383    #[inline]
10384    pub fn push_next<T: ExtendsDebugMarkerObjectNameInfoEXT>(
10385        mut self,
10386        next: &'a mut T,
10387    ) -> Self {
10388        unsafe {
10389            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
10390            (*next_ptr).p_next = self.inner.p_next as *mut _;
10391            self.inner.p_next = <*mut BaseOutStructure>::cast::<
10392                core::ffi::c_void,
10393            >(next_ptr) as *const _;
10394        }
10395        self
10396    }
10397}
10398impl<'a> core::ops::Deref for DebugMarkerObjectNameInfoEXTBuilder<'a> {
10399    type Target = DebugMarkerObjectNameInfoEXT;
10400    #[inline]
10401    fn deref(&self) -> &Self::Target {
10402        &self.inner
10403    }
10404}
10405impl<'a> core::ops::DerefMut for DebugMarkerObjectNameInfoEXTBuilder<'a> {
10406    #[inline]
10407    fn deref_mut(&mut self) -> &mut Self::Target {
10408        &mut self.inner
10409    }
10410}
10411///Builder for [`DebugMarkerObjectTagInfoEXT`] with lifetime-tied pNext safety.
10412pub struct DebugMarkerObjectTagInfoEXTBuilder<'a> {
10413    inner: DebugMarkerObjectTagInfoEXT,
10414    _marker: core::marker::PhantomData<&'a ()>,
10415}
10416impl DebugMarkerObjectTagInfoEXT {
10417    /// Start building this struct; `s_type` is already set to the correct variant.
10418    #[inline]
10419    pub fn builder<'a>() -> DebugMarkerObjectTagInfoEXTBuilder<'a> {
10420        DebugMarkerObjectTagInfoEXTBuilder {
10421            inner: DebugMarkerObjectTagInfoEXT {
10422                s_type: StructureType::from_raw(1000022001i32),
10423                ..Default::default()
10424            },
10425            _marker: core::marker::PhantomData,
10426        }
10427    }
10428}
10429impl<'a> DebugMarkerObjectTagInfoEXTBuilder<'a> {
10430    #[inline]
10431    pub fn object_type(mut self, value: DebugReportObjectTypeEXT) -> Self {
10432        self.inner.object_type = value;
10433        self
10434    }
10435    #[inline]
10436    pub fn object(mut self, value: u64) -> Self {
10437        self.inner.object = value;
10438        self
10439    }
10440    #[inline]
10441    pub fn tag_name(mut self, value: u64) -> Self {
10442        self.inner.tag_name = value;
10443        self
10444    }
10445    #[inline]
10446    pub fn tag(mut self, slice: &'a [core::ffi::c_void]) -> Self {
10447        self.inner.tag_size = slice.len();
10448        self.inner.p_tag = slice.as_ptr();
10449        self
10450    }
10451    ///Prepend a struct to the pNext chain. See [`DebugMarkerObjectTagInfoEXT`]'s **Extended By** section for valid types.
10452    #[inline]
10453    pub fn push_next<T: ExtendsDebugMarkerObjectTagInfoEXT>(
10454        mut self,
10455        next: &'a mut T,
10456    ) -> Self {
10457        unsafe {
10458            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
10459            (*next_ptr).p_next = self.inner.p_next as *mut _;
10460            self.inner.p_next = <*mut BaseOutStructure>::cast::<
10461                core::ffi::c_void,
10462            >(next_ptr) as *const _;
10463        }
10464        self
10465    }
10466}
10467impl<'a> core::ops::Deref for DebugMarkerObjectTagInfoEXTBuilder<'a> {
10468    type Target = DebugMarkerObjectTagInfoEXT;
10469    #[inline]
10470    fn deref(&self) -> &Self::Target {
10471        &self.inner
10472    }
10473}
10474impl<'a> core::ops::DerefMut for DebugMarkerObjectTagInfoEXTBuilder<'a> {
10475    #[inline]
10476    fn deref_mut(&mut self) -> &mut Self::Target {
10477        &mut self.inner
10478    }
10479}
10480///Builder for [`DebugMarkerMarkerInfoEXT`] with lifetime-tied pNext safety.
10481pub struct DebugMarkerMarkerInfoEXTBuilder<'a> {
10482    inner: DebugMarkerMarkerInfoEXT,
10483    _marker: core::marker::PhantomData<&'a ()>,
10484}
10485impl DebugMarkerMarkerInfoEXT {
10486    /// Start building this struct; `s_type` is already set to the correct variant.
10487    #[inline]
10488    pub fn builder<'a>() -> DebugMarkerMarkerInfoEXTBuilder<'a> {
10489        DebugMarkerMarkerInfoEXTBuilder {
10490            inner: DebugMarkerMarkerInfoEXT {
10491                s_type: StructureType::from_raw(1000022002i32),
10492                ..Default::default()
10493            },
10494            _marker: core::marker::PhantomData,
10495        }
10496    }
10497}
10498impl<'a> DebugMarkerMarkerInfoEXTBuilder<'a> {
10499    #[inline]
10500    pub fn marker_name(mut self, value: &'a core::ffi::CStr) -> Self {
10501        self.inner.p_marker_name = value.as_ptr();
10502        self
10503    }
10504    #[inline]
10505    pub fn color(mut self, value: [f32; 4usize]) -> Self {
10506        self.inner.color = value;
10507        self
10508    }
10509    ///Prepend a struct to the pNext chain. See [`DebugMarkerMarkerInfoEXT`]'s **Extended By** section for valid types.
10510    #[inline]
10511    pub fn push_next<T: ExtendsDebugMarkerMarkerInfoEXT>(
10512        mut self,
10513        next: &'a mut T,
10514    ) -> Self {
10515        unsafe {
10516            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
10517            (*next_ptr).p_next = self.inner.p_next as *mut _;
10518            self.inner.p_next = <*mut BaseOutStructure>::cast::<
10519                core::ffi::c_void,
10520            >(next_ptr) as *const _;
10521        }
10522        self
10523    }
10524}
10525impl<'a> core::ops::Deref for DebugMarkerMarkerInfoEXTBuilder<'a> {
10526    type Target = DebugMarkerMarkerInfoEXT;
10527    #[inline]
10528    fn deref(&self) -> &Self::Target {
10529        &self.inner
10530    }
10531}
10532impl<'a> core::ops::DerefMut for DebugMarkerMarkerInfoEXTBuilder<'a> {
10533    #[inline]
10534    fn deref_mut(&mut self) -> &mut Self::Target {
10535        &mut self.inner
10536    }
10537}
10538///Builder for [`DedicatedAllocationImageCreateInfoNV`] with lifetime-tied pNext safety.
10539pub struct DedicatedAllocationImageCreateInfoNVBuilder<'a> {
10540    inner: DedicatedAllocationImageCreateInfoNV,
10541    _marker: core::marker::PhantomData<&'a ()>,
10542}
10543impl DedicatedAllocationImageCreateInfoNV {
10544    /// Start building this struct; `s_type` is already set to the correct variant.
10545    #[inline]
10546    pub fn builder<'a>() -> DedicatedAllocationImageCreateInfoNVBuilder<'a> {
10547        DedicatedAllocationImageCreateInfoNVBuilder {
10548            inner: DedicatedAllocationImageCreateInfoNV {
10549                s_type: StructureType::from_raw(1000026000i32),
10550                ..Default::default()
10551            },
10552            _marker: core::marker::PhantomData,
10553        }
10554    }
10555}
10556impl<'a> DedicatedAllocationImageCreateInfoNVBuilder<'a> {
10557    #[inline]
10558    pub fn dedicated_allocation(mut self, value: bool) -> Self {
10559        self.inner.dedicated_allocation = value as u32;
10560        self
10561    }
10562    ///Prepend a struct to the pNext chain. See [`DedicatedAllocationImageCreateInfoNV`]'s **Extended By** section for valid types.
10563    #[inline]
10564    pub fn push_next<T: ExtendsDedicatedAllocationImageCreateInfoNV>(
10565        mut self,
10566        next: &'a mut T,
10567    ) -> Self {
10568        unsafe {
10569            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
10570            (*next_ptr).p_next = self.inner.p_next as *mut _;
10571            self.inner.p_next = <*mut BaseOutStructure>::cast::<
10572                core::ffi::c_void,
10573            >(next_ptr) as *const _;
10574        }
10575        self
10576    }
10577}
10578impl<'a> core::ops::Deref for DedicatedAllocationImageCreateInfoNVBuilder<'a> {
10579    type Target = DedicatedAllocationImageCreateInfoNV;
10580    #[inline]
10581    fn deref(&self) -> &Self::Target {
10582        &self.inner
10583    }
10584}
10585impl<'a> core::ops::DerefMut for DedicatedAllocationImageCreateInfoNVBuilder<'a> {
10586    #[inline]
10587    fn deref_mut(&mut self) -> &mut Self::Target {
10588        &mut self.inner
10589    }
10590}
10591///Builder for [`DedicatedAllocationBufferCreateInfoNV`] with lifetime-tied pNext safety.
10592pub struct DedicatedAllocationBufferCreateInfoNVBuilder<'a> {
10593    inner: DedicatedAllocationBufferCreateInfoNV,
10594    _marker: core::marker::PhantomData<&'a ()>,
10595}
10596impl DedicatedAllocationBufferCreateInfoNV {
10597    /// Start building this struct; `s_type` is already set to the correct variant.
10598    #[inline]
10599    pub fn builder<'a>() -> DedicatedAllocationBufferCreateInfoNVBuilder<'a> {
10600        DedicatedAllocationBufferCreateInfoNVBuilder {
10601            inner: DedicatedAllocationBufferCreateInfoNV {
10602                s_type: StructureType::from_raw(1000026001i32),
10603                ..Default::default()
10604            },
10605            _marker: core::marker::PhantomData,
10606        }
10607    }
10608}
10609impl<'a> DedicatedAllocationBufferCreateInfoNVBuilder<'a> {
10610    #[inline]
10611    pub fn dedicated_allocation(mut self, value: bool) -> Self {
10612        self.inner.dedicated_allocation = value as u32;
10613        self
10614    }
10615    ///Prepend a struct to the pNext chain. See [`DedicatedAllocationBufferCreateInfoNV`]'s **Extended By** section for valid types.
10616    #[inline]
10617    pub fn push_next<T: ExtendsDedicatedAllocationBufferCreateInfoNV>(
10618        mut self,
10619        next: &'a mut T,
10620    ) -> Self {
10621        unsafe {
10622            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
10623            (*next_ptr).p_next = self.inner.p_next as *mut _;
10624            self.inner.p_next = <*mut BaseOutStructure>::cast::<
10625                core::ffi::c_void,
10626            >(next_ptr) as *const _;
10627        }
10628        self
10629    }
10630}
10631impl<'a> core::ops::Deref for DedicatedAllocationBufferCreateInfoNVBuilder<'a> {
10632    type Target = DedicatedAllocationBufferCreateInfoNV;
10633    #[inline]
10634    fn deref(&self) -> &Self::Target {
10635        &self.inner
10636    }
10637}
10638impl<'a> core::ops::DerefMut for DedicatedAllocationBufferCreateInfoNVBuilder<'a> {
10639    #[inline]
10640    fn deref_mut(&mut self) -> &mut Self::Target {
10641        &mut self.inner
10642    }
10643}
10644///Builder for [`DedicatedAllocationMemoryAllocateInfoNV`] with lifetime-tied pNext safety.
10645pub struct DedicatedAllocationMemoryAllocateInfoNVBuilder<'a> {
10646    inner: DedicatedAllocationMemoryAllocateInfoNV,
10647    _marker: core::marker::PhantomData<&'a ()>,
10648}
10649impl DedicatedAllocationMemoryAllocateInfoNV {
10650    /// Start building this struct; `s_type` is already set to the correct variant.
10651    #[inline]
10652    pub fn builder<'a>() -> DedicatedAllocationMemoryAllocateInfoNVBuilder<'a> {
10653        DedicatedAllocationMemoryAllocateInfoNVBuilder {
10654            inner: DedicatedAllocationMemoryAllocateInfoNV {
10655                s_type: StructureType::from_raw(1000026002i32),
10656                ..Default::default()
10657            },
10658            _marker: core::marker::PhantomData,
10659        }
10660    }
10661}
10662impl<'a> DedicatedAllocationMemoryAllocateInfoNVBuilder<'a> {
10663    #[inline]
10664    pub fn image(mut self, value: Image) -> Self {
10665        self.inner.image = value;
10666        self
10667    }
10668    #[inline]
10669    pub fn buffer(mut self, value: Buffer) -> Self {
10670        self.inner.buffer = value;
10671        self
10672    }
10673    ///Prepend a struct to the pNext chain. See [`DedicatedAllocationMemoryAllocateInfoNV`]'s **Extended By** section for valid types.
10674    #[inline]
10675    pub fn push_next<T: ExtendsDedicatedAllocationMemoryAllocateInfoNV>(
10676        mut self,
10677        next: &'a mut T,
10678    ) -> Self {
10679        unsafe {
10680            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
10681            (*next_ptr).p_next = self.inner.p_next as *mut _;
10682            self.inner.p_next = <*mut BaseOutStructure>::cast::<
10683                core::ffi::c_void,
10684            >(next_ptr) as *const _;
10685        }
10686        self
10687    }
10688}
10689impl<'a> core::ops::Deref for DedicatedAllocationMemoryAllocateInfoNVBuilder<'a> {
10690    type Target = DedicatedAllocationMemoryAllocateInfoNV;
10691    #[inline]
10692    fn deref(&self) -> &Self::Target {
10693        &self.inner
10694    }
10695}
10696impl<'a> core::ops::DerefMut for DedicatedAllocationMemoryAllocateInfoNVBuilder<'a> {
10697    #[inline]
10698    fn deref_mut(&mut self) -> &mut Self::Target {
10699        &mut self.inner
10700    }
10701}
10702///Builder for [`ExternalImageFormatPropertiesNV`].
10703pub struct ExternalImageFormatPropertiesNVBuilder {
10704    inner: ExternalImageFormatPropertiesNV,
10705}
10706impl ExternalImageFormatPropertiesNV {
10707    /// Start building this struct.
10708    #[inline]
10709    pub fn builder() -> ExternalImageFormatPropertiesNVBuilder {
10710        ExternalImageFormatPropertiesNVBuilder {
10711            inner: ExternalImageFormatPropertiesNV {
10712                ..Default::default()
10713            },
10714        }
10715    }
10716}
10717impl ExternalImageFormatPropertiesNVBuilder {
10718    #[inline]
10719    pub fn image_format_properties(mut self, value: ImageFormatProperties) -> Self {
10720        self.inner.image_format_properties = value;
10721        self
10722    }
10723    #[inline]
10724    pub fn external_memory_features(
10725        mut self,
10726        value: ExternalMemoryFeatureFlagsNV,
10727    ) -> Self {
10728        self.inner.external_memory_features = value;
10729        self
10730    }
10731    #[inline]
10732    pub fn export_from_imported_handle_types(
10733        mut self,
10734        value: ExternalMemoryHandleTypeFlagsNV,
10735    ) -> Self {
10736        self.inner.export_from_imported_handle_types = value;
10737        self
10738    }
10739    #[inline]
10740    pub fn compatible_handle_types(
10741        mut self,
10742        value: ExternalMemoryHandleTypeFlagsNV,
10743    ) -> Self {
10744        self.inner.compatible_handle_types = value;
10745        self
10746    }
10747}
10748impl core::ops::Deref for ExternalImageFormatPropertiesNVBuilder {
10749    type Target = ExternalImageFormatPropertiesNV;
10750    #[inline]
10751    fn deref(&self) -> &Self::Target {
10752        &self.inner
10753    }
10754}
10755impl core::ops::DerefMut for ExternalImageFormatPropertiesNVBuilder {
10756    #[inline]
10757    fn deref_mut(&mut self) -> &mut Self::Target {
10758        &mut self.inner
10759    }
10760}
10761///Builder for [`ExternalMemoryImageCreateInfoNV`] with lifetime-tied pNext safety.
10762pub struct ExternalMemoryImageCreateInfoNVBuilder<'a> {
10763    inner: ExternalMemoryImageCreateInfoNV,
10764    _marker: core::marker::PhantomData<&'a ()>,
10765}
10766impl ExternalMemoryImageCreateInfoNV {
10767    /// Start building this struct; `s_type` is already set to the correct variant.
10768    #[inline]
10769    pub fn builder<'a>() -> ExternalMemoryImageCreateInfoNVBuilder<'a> {
10770        ExternalMemoryImageCreateInfoNVBuilder {
10771            inner: ExternalMemoryImageCreateInfoNV {
10772                s_type: StructureType::from_raw(1000056000i32),
10773                ..Default::default()
10774            },
10775            _marker: core::marker::PhantomData,
10776        }
10777    }
10778}
10779impl<'a> ExternalMemoryImageCreateInfoNVBuilder<'a> {
10780    #[inline]
10781    pub fn handle_types(mut self, value: ExternalMemoryHandleTypeFlagsNV) -> Self {
10782        self.inner.handle_types = value;
10783        self
10784    }
10785    ///Prepend a struct to the pNext chain. See [`ExternalMemoryImageCreateInfoNV`]'s **Extended By** section for valid types.
10786    #[inline]
10787    pub fn push_next<T: ExtendsExternalMemoryImageCreateInfoNV>(
10788        mut self,
10789        next: &'a mut T,
10790    ) -> Self {
10791        unsafe {
10792            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
10793            (*next_ptr).p_next = self.inner.p_next as *mut _;
10794            self.inner.p_next = <*mut BaseOutStructure>::cast::<
10795                core::ffi::c_void,
10796            >(next_ptr) as *const _;
10797        }
10798        self
10799    }
10800}
10801impl<'a> core::ops::Deref for ExternalMemoryImageCreateInfoNVBuilder<'a> {
10802    type Target = ExternalMemoryImageCreateInfoNV;
10803    #[inline]
10804    fn deref(&self) -> &Self::Target {
10805        &self.inner
10806    }
10807}
10808impl<'a> core::ops::DerefMut for ExternalMemoryImageCreateInfoNVBuilder<'a> {
10809    #[inline]
10810    fn deref_mut(&mut self) -> &mut Self::Target {
10811        &mut self.inner
10812    }
10813}
10814///Builder for [`ExportMemoryAllocateInfoNV`] with lifetime-tied pNext safety.
10815pub struct ExportMemoryAllocateInfoNVBuilder<'a> {
10816    inner: ExportMemoryAllocateInfoNV,
10817    _marker: core::marker::PhantomData<&'a ()>,
10818}
10819impl ExportMemoryAllocateInfoNV {
10820    /// Start building this struct; `s_type` is already set to the correct variant.
10821    #[inline]
10822    pub fn builder<'a>() -> ExportMemoryAllocateInfoNVBuilder<'a> {
10823        ExportMemoryAllocateInfoNVBuilder {
10824            inner: ExportMemoryAllocateInfoNV {
10825                s_type: StructureType::from_raw(1000056001i32),
10826                ..Default::default()
10827            },
10828            _marker: core::marker::PhantomData,
10829        }
10830    }
10831}
10832impl<'a> ExportMemoryAllocateInfoNVBuilder<'a> {
10833    #[inline]
10834    pub fn handle_types(mut self, value: ExternalMemoryHandleTypeFlagsNV) -> Self {
10835        self.inner.handle_types = value;
10836        self
10837    }
10838    ///Prepend a struct to the pNext chain. See [`ExportMemoryAllocateInfoNV`]'s **Extended By** section for valid types.
10839    #[inline]
10840    pub fn push_next<T: ExtendsExportMemoryAllocateInfoNV>(
10841        mut self,
10842        next: &'a mut T,
10843    ) -> Self {
10844        unsafe {
10845            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
10846            (*next_ptr).p_next = self.inner.p_next as *mut _;
10847            self.inner.p_next = <*mut BaseOutStructure>::cast::<
10848                core::ffi::c_void,
10849            >(next_ptr) as *const _;
10850        }
10851        self
10852    }
10853}
10854impl<'a> core::ops::Deref for ExportMemoryAllocateInfoNVBuilder<'a> {
10855    type Target = ExportMemoryAllocateInfoNV;
10856    #[inline]
10857    fn deref(&self) -> &Self::Target {
10858        &self.inner
10859    }
10860}
10861impl<'a> core::ops::DerefMut for ExportMemoryAllocateInfoNVBuilder<'a> {
10862    #[inline]
10863    fn deref_mut(&mut self) -> &mut Self::Target {
10864        &mut self.inner
10865    }
10866}
10867///Builder for [`ImportMemoryWin32HandleInfoNV`] with lifetime-tied pNext safety.
10868pub struct ImportMemoryWin32HandleInfoNVBuilder<'a> {
10869    inner: ImportMemoryWin32HandleInfoNV,
10870    _marker: core::marker::PhantomData<&'a ()>,
10871}
10872impl ImportMemoryWin32HandleInfoNV {
10873    /// Start building this struct; `s_type` is already set to the correct variant.
10874    #[inline]
10875    pub fn builder<'a>() -> ImportMemoryWin32HandleInfoNVBuilder<'a> {
10876        ImportMemoryWin32HandleInfoNVBuilder {
10877            inner: ImportMemoryWin32HandleInfoNV {
10878                s_type: StructureType::from_raw(1000057000i32),
10879                ..Default::default()
10880            },
10881            _marker: core::marker::PhantomData,
10882        }
10883    }
10884}
10885impl<'a> ImportMemoryWin32HandleInfoNVBuilder<'a> {
10886    #[inline]
10887    pub fn handle_type(mut self, value: ExternalMemoryHandleTypeFlagsNV) -> Self {
10888        self.inner.handle_type = value;
10889        self
10890    }
10891    #[inline]
10892    pub fn handle(mut self, value: isize) -> Self {
10893        self.inner.handle = value;
10894        self
10895    }
10896    ///Prepend a struct to the pNext chain. See [`ImportMemoryWin32HandleInfoNV`]'s **Extended By** section for valid types.
10897    #[inline]
10898    pub fn push_next<T: ExtendsImportMemoryWin32HandleInfoNV>(
10899        mut self,
10900        next: &'a mut T,
10901    ) -> Self {
10902        unsafe {
10903            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
10904            (*next_ptr).p_next = self.inner.p_next as *mut _;
10905            self.inner.p_next = <*mut BaseOutStructure>::cast::<
10906                core::ffi::c_void,
10907            >(next_ptr) as *const _;
10908        }
10909        self
10910    }
10911}
10912impl<'a> core::ops::Deref for ImportMemoryWin32HandleInfoNVBuilder<'a> {
10913    type Target = ImportMemoryWin32HandleInfoNV;
10914    #[inline]
10915    fn deref(&self) -> &Self::Target {
10916        &self.inner
10917    }
10918}
10919impl<'a> core::ops::DerefMut for ImportMemoryWin32HandleInfoNVBuilder<'a> {
10920    #[inline]
10921    fn deref_mut(&mut self) -> &mut Self::Target {
10922        &mut self.inner
10923    }
10924}
10925///Builder for [`ExportMemoryWin32HandleInfoNV`] with lifetime-tied pNext safety.
10926pub struct ExportMemoryWin32HandleInfoNVBuilder<'a> {
10927    inner: ExportMemoryWin32HandleInfoNV,
10928    _marker: core::marker::PhantomData<&'a ()>,
10929}
10930impl ExportMemoryWin32HandleInfoNV {
10931    /// Start building this struct; `s_type` is already set to the correct variant.
10932    #[inline]
10933    pub fn builder<'a>() -> ExportMemoryWin32HandleInfoNVBuilder<'a> {
10934        ExportMemoryWin32HandleInfoNVBuilder {
10935            inner: ExportMemoryWin32HandleInfoNV {
10936                s_type: StructureType::from_raw(1000057001i32),
10937                ..Default::default()
10938            },
10939            _marker: core::marker::PhantomData,
10940        }
10941    }
10942}
10943impl<'a> ExportMemoryWin32HandleInfoNVBuilder<'a> {
10944    #[inline]
10945    pub fn attributes(mut self, value: *const core::ffi::c_void) -> Self {
10946        self.inner.p_attributes = value;
10947        self
10948    }
10949    #[inline]
10950    pub fn dw_access(mut self, value: u32) -> Self {
10951        self.inner.dw_access = value;
10952        self
10953    }
10954    ///Prepend a struct to the pNext chain. See [`ExportMemoryWin32HandleInfoNV`]'s **Extended By** section for valid types.
10955    #[inline]
10956    pub fn push_next<T: ExtendsExportMemoryWin32HandleInfoNV>(
10957        mut self,
10958        next: &'a mut T,
10959    ) -> Self {
10960        unsafe {
10961            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
10962            (*next_ptr).p_next = self.inner.p_next as *mut _;
10963            self.inner.p_next = <*mut BaseOutStructure>::cast::<
10964                core::ffi::c_void,
10965            >(next_ptr) as *const _;
10966        }
10967        self
10968    }
10969}
10970impl<'a> core::ops::Deref for ExportMemoryWin32HandleInfoNVBuilder<'a> {
10971    type Target = ExportMemoryWin32HandleInfoNV;
10972    #[inline]
10973    fn deref(&self) -> &Self::Target {
10974        &self.inner
10975    }
10976}
10977impl<'a> core::ops::DerefMut for ExportMemoryWin32HandleInfoNVBuilder<'a> {
10978    #[inline]
10979    fn deref_mut(&mut self) -> &mut Self::Target {
10980        &mut self.inner
10981    }
10982}
10983///Builder for [`ExportMemorySciBufInfoNV`] with lifetime-tied pNext safety.
10984pub struct ExportMemorySciBufInfoNVBuilder<'a> {
10985    inner: ExportMemorySciBufInfoNV,
10986    _marker: core::marker::PhantomData<&'a ()>,
10987}
10988impl ExportMemorySciBufInfoNV {
10989    /// Start building this struct; `s_type` is already set to the correct variant.
10990    #[inline]
10991    pub fn builder<'a>() -> ExportMemorySciBufInfoNVBuilder<'a> {
10992        ExportMemorySciBufInfoNVBuilder {
10993            inner: ExportMemorySciBufInfoNV {
10994                s_type: Default::default(),
10995                ..Default::default()
10996            },
10997            _marker: core::marker::PhantomData,
10998        }
10999    }
11000}
11001impl<'a> ExportMemorySciBufInfoNVBuilder<'a> {
11002    #[inline]
11003    pub fn p_attributes(mut self, value: *const core::ffi::c_void) -> Self {
11004        self.inner.p_attributes = value;
11005        self
11006    }
11007    ///Prepend a struct to the pNext chain. See [`ExportMemorySciBufInfoNV`]'s **Extended By** section for valid types.
11008    #[inline]
11009    pub fn push_next<T: ExtendsExportMemorySciBufInfoNV>(
11010        mut self,
11011        next: &'a mut T,
11012    ) -> Self {
11013        unsafe {
11014            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
11015            (*next_ptr).p_next = self.inner.p_next as *mut _;
11016            self.inner.p_next = <*mut BaseOutStructure>::cast::<
11017                core::ffi::c_void,
11018            >(next_ptr) as *const _;
11019        }
11020        self
11021    }
11022}
11023impl<'a> core::ops::Deref for ExportMemorySciBufInfoNVBuilder<'a> {
11024    type Target = ExportMemorySciBufInfoNV;
11025    #[inline]
11026    fn deref(&self) -> &Self::Target {
11027        &self.inner
11028    }
11029}
11030impl<'a> core::ops::DerefMut for ExportMemorySciBufInfoNVBuilder<'a> {
11031    #[inline]
11032    fn deref_mut(&mut self) -> &mut Self::Target {
11033        &mut self.inner
11034    }
11035}
11036///Builder for [`ImportMemorySciBufInfoNV`] with lifetime-tied pNext safety.
11037pub struct ImportMemorySciBufInfoNVBuilder<'a> {
11038    inner: ImportMemorySciBufInfoNV,
11039    _marker: core::marker::PhantomData<&'a ()>,
11040}
11041impl ImportMemorySciBufInfoNV {
11042    /// Start building this struct; `s_type` is already set to the correct variant.
11043    #[inline]
11044    pub fn builder<'a>() -> ImportMemorySciBufInfoNVBuilder<'a> {
11045        ImportMemorySciBufInfoNVBuilder {
11046            inner: ImportMemorySciBufInfoNV {
11047                s_type: Default::default(),
11048                ..Default::default()
11049            },
11050            _marker: core::marker::PhantomData,
11051        }
11052    }
11053}
11054impl<'a> ImportMemorySciBufInfoNVBuilder<'a> {
11055    #[inline]
11056    pub fn handle_type(mut self, value: ExternalMemoryHandleTypeFlagBits) -> Self {
11057        self.inner.handle_type = value;
11058        self
11059    }
11060    #[inline]
11061    pub fn handle(mut self, value: *const core::ffi::c_void) -> Self {
11062        self.inner.handle = value;
11063        self
11064    }
11065    ///Prepend a struct to the pNext chain. See [`ImportMemorySciBufInfoNV`]'s **Extended By** section for valid types.
11066    #[inline]
11067    pub fn push_next<T: ExtendsImportMemorySciBufInfoNV>(
11068        mut self,
11069        next: &'a mut T,
11070    ) -> Self {
11071        unsafe {
11072            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
11073            (*next_ptr).p_next = self.inner.p_next as *mut _;
11074            self.inner.p_next = <*mut BaseOutStructure>::cast::<
11075                core::ffi::c_void,
11076            >(next_ptr) as *const _;
11077        }
11078        self
11079    }
11080}
11081impl<'a> core::ops::Deref for ImportMemorySciBufInfoNVBuilder<'a> {
11082    type Target = ImportMemorySciBufInfoNV;
11083    #[inline]
11084    fn deref(&self) -> &Self::Target {
11085        &self.inner
11086    }
11087}
11088impl<'a> core::ops::DerefMut for ImportMemorySciBufInfoNVBuilder<'a> {
11089    #[inline]
11090    fn deref_mut(&mut self) -> &mut Self::Target {
11091        &mut self.inner
11092    }
11093}
11094///Builder for [`MemoryGetSciBufInfoNV`] with lifetime-tied pNext safety.
11095pub struct MemoryGetSciBufInfoNVBuilder<'a> {
11096    inner: MemoryGetSciBufInfoNV,
11097    _marker: core::marker::PhantomData<&'a ()>,
11098}
11099impl MemoryGetSciBufInfoNV {
11100    /// Start building this struct; `s_type` is already set to the correct variant.
11101    #[inline]
11102    pub fn builder<'a>() -> MemoryGetSciBufInfoNVBuilder<'a> {
11103        MemoryGetSciBufInfoNVBuilder {
11104            inner: MemoryGetSciBufInfoNV {
11105                s_type: Default::default(),
11106                ..Default::default()
11107            },
11108            _marker: core::marker::PhantomData,
11109        }
11110    }
11111}
11112impl<'a> MemoryGetSciBufInfoNVBuilder<'a> {
11113    #[inline]
11114    pub fn memory(mut self, value: DeviceMemory) -> Self {
11115        self.inner.memory = value;
11116        self
11117    }
11118    #[inline]
11119    pub fn handle_type(mut self, value: ExternalMemoryHandleTypeFlagBits) -> Self {
11120        self.inner.handle_type = value;
11121        self
11122    }
11123    ///Prepend a struct to the pNext chain. See [`MemoryGetSciBufInfoNV`]'s **Extended By** section for valid types.
11124    #[inline]
11125    pub fn push_next<T: ExtendsMemoryGetSciBufInfoNV>(
11126        mut self,
11127        next: &'a mut T,
11128    ) -> Self {
11129        unsafe {
11130            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
11131            (*next_ptr).p_next = self.inner.p_next as *mut _;
11132            self.inner.p_next = <*mut BaseOutStructure>::cast::<
11133                core::ffi::c_void,
11134            >(next_ptr) as *const _;
11135        }
11136        self
11137    }
11138}
11139impl<'a> core::ops::Deref for MemoryGetSciBufInfoNVBuilder<'a> {
11140    type Target = MemoryGetSciBufInfoNV;
11141    #[inline]
11142    fn deref(&self) -> &Self::Target {
11143        &self.inner
11144    }
11145}
11146impl<'a> core::ops::DerefMut for MemoryGetSciBufInfoNVBuilder<'a> {
11147    #[inline]
11148    fn deref_mut(&mut self) -> &mut Self::Target {
11149        &mut self.inner
11150    }
11151}
11152///Builder for [`MemorySciBufPropertiesNV`] with lifetime-tied pNext safety.
11153pub struct MemorySciBufPropertiesNVBuilder<'a> {
11154    inner: MemorySciBufPropertiesNV,
11155    _marker: core::marker::PhantomData<&'a ()>,
11156}
11157impl MemorySciBufPropertiesNV {
11158    /// Start building this struct; `s_type` is already set to the correct variant.
11159    #[inline]
11160    pub fn builder<'a>() -> MemorySciBufPropertiesNVBuilder<'a> {
11161        MemorySciBufPropertiesNVBuilder {
11162            inner: MemorySciBufPropertiesNV {
11163                s_type: Default::default(),
11164                ..Default::default()
11165            },
11166            _marker: core::marker::PhantomData,
11167        }
11168    }
11169}
11170impl<'a> MemorySciBufPropertiesNVBuilder<'a> {
11171    #[inline]
11172    pub fn memory_type_bits(mut self, value: u32) -> Self {
11173        self.inner.memory_type_bits = value;
11174        self
11175    }
11176    ///Prepend a struct to the pNext chain. See [`MemorySciBufPropertiesNV`]'s **Extended By** section for valid types.
11177    #[inline]
11178    pub fn push_next<T: ExtendsMemorySciBufPropertiesNV>(
11179        mut self,
11180        next: &'a mut T,
11181    ) -> Self {
11182        unsafe {
11183            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
11184            (*next_ptr).p_next = self.inner.p_next as *mut _;
11185            self.inner.p_next = <*mut BaseOutStructure>::cast::<
11186                core::ffi::c_void,
11187            >(next_ptr) as *const _;
11188        }
11189        self
11190    }
11191}
11192impl<'a> core::ops::Deref for MemorySciBufPropertiesNVBuilder<'a> {
11193    type Target = MemorySciBufPropertiesNV;
11194    #[inline]
11195    fn deref(&self) -> &Self::Target {
11196        &self.inner
11197    }
11198}
11199impl<'a> core::ops::DerefMut for MemorySciBufPropertiesNVBuilder<'a> {
11200    #[inline]
11201    fn deref_mut(&mut self) -> &mut Self::Target {
11202        &mut self.inner
11203    }
11204}
11205///Builder for [`PhysicalDeviceExternalMemorySciBufFeaturesNV`] with lifetime-tied pNext safety.
11206pub struct PhysicalDeviceExternalMemorySciBufFeaturesNVBuilder<'a> {
11207    inner: PhysicalDeviceExternalMemorySciBufFeaturesNV,
11208    _marker: core::marker::PhantomData<&'a ()>,
11209}
11210impl PhysicalDeviceExternalMemorySciBufFeaturesNV {
11211    /// Start building this struct; `s_type` is already set to the correct variant.
11212    #[inline]
11213    pub fn builder<'a>() -> PhysicalDeviceExternalMemorySciBufFeaturesNVBuilder<'a> {
11214        PhysicalDeviceExternalMemorySciBufFeaturesNVBuilder {
11215            inner: PhysicalDeviceExternalMemorySciBufFeaturesNV {
11216                s_type: Default::default(),
11217                ..Default::default()
11218            },
11219            _marker: core::marker::PhantomData,
11220        }
11221    }
11222}
11223impl<'a> PhysicalDeviceExternalMemorySciBufFeaturesNVBuilder<'a> {
11224    #[inline]
11225    pub fn sci_buf_import(mut self, value: bool) -> Self {
11226        self.inner.sci_buf_import = value as u32;
11227        self
11228    }
11229    #[inline]
11230    pub fn sci_buf_export(mut self, value: bool) -> Self {
11231        self.inner.sci_buf_export = value as u32;
11232        self
11233    }
11234    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceExternalMemorySciBufFeaturesNV`]'s **Extended By** section for valid types.
11235    #[inline]
11236    pub fn push_next<T: ExtendsPhysicalDeviceExternalMemorySciBufFeaturesNV>(
11237        mut self,
11238        next: &'a mut T,
11239    ) -> Self {
11240        unsafe {
11241            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
11242            (*next_ptr).p_next = self.inner.p_next as *mut _;
11243            self.inner.p_next = <*mut BaseOutStructure>::cast::<
11244                core::ffi::c_void,
11245            >(next_ptr);
11246        }
11247        self
11248    }
11249}
11250impl<'a> core::ops::Deref for PhysicalDeviceExternalMemorySciBufFeaturesNVBuilder<'a> {
11251    type Target = PhysicalDeviceExternalMemorySciBufFeaturesNV;
11252    #[inline]
11253    fn deref(&self) -> &Self::Target {
11254        &self.inner
11255    }
11256}
11257impl<'a> core::ops::DerefMut
11258for PhysicalDeviceExternalMemorySciBufFeaturesNVBuilder<'a> {
11259    #[inline]
11260    fn deref_mut(&mut self) -> &mut Self::Target {
11261        &mut self.inner
11262    }
11263}
11264///Builder for [`Win32KeyedMutexAcquireReleaseInfoNV`] with lifetime-tied pNext safety.
11265pub struct Win32KeyedMutexAcquireReleaseInfoNVBuilder<'a> {
11266    inner: Win32KeyedMutexAcquireReleaseInfoNV,
11267    _marker: core::marker::PhantomData<&'a ()>,
11268}
11269impl Win32KeyedMutexAcquireReleaseInfoNV {
11270    /// Start building this struct; `s_type` is already set to the correct variant.
11271    #[inline]
11272    pub fn builder<'a>() -> Win32KeyedMutexAcquireReleaseInfoNVBuilder<'a> {
11273        Win32KeyedMutexAcquireReleaseInfoNVBuilder {
11274            inner: Win32KeyedMutexAcquireReleaseInfoNV {
11275                s_type: StructureType::from_raw(1000058000i32),
11276                ..Default::default()
11277            },
11278            _marker: core::marker::PhantomData,
11279        }
11280    }
11281}
11282impl<'a> Win32KeyedMutexAcquireReleaseInfoNVBuilder<'a> {
11283    #[inline]
11284    pub fn acquire_syncs(mut self, slice: &'a [DeviceMemory]) -> Self {
11285        self.inner.acquire_count = slice.len() as u32;
11286        self.inner.p_acquire_syncs = slice.as_ptr();
11287        self
11288    }
11289    #[inline]
11290    pub fn acquire_keys(mut self, slice: &'a [u64]) -> Self {
11291        self.inner.acquire_count = slice.len() as u32;
11292        self.inner.p_acquire_keys = slice.as_ptr();
11293        self
11294    }
11295    #[inline]
11296    pub fn acquire_timeout_milliseconds(mut self, slice: &'a [u32]) -> Self {
11297        self.inner.acquire_count = slice.len() as u32;
11298        self.inner.p_acquire_timeout_milliseconds = slice.as_ptr();
11299        self
11300    }
11301    #[inline]
11302    pub fn release_syncs(mut self, slice: &'a [DeviceMemory]) -> Self {
11303        self.inner.release_count = slice.len() as u32;
11304        self.inner.p_release_syncs = slice.as_ptr();
11305        self
11306    }
11307    #[inline]
11308    pub fn release_keys(mut self, slice: &'a [u64]) -> Self {
11309        self.inner.release_count = slice.len() as u32;
11310        self.inner.p_release_keys = slice.as_ptr();
11311        self
11312    }
11313    ///Prepend a struct to the pNext chain. See [`Win32KeyedMutexAcquireReleaseInfoNV`]'s **Extended By** section for valid types.
11314    #[inline]
11315    pub fn push_next<T: ExtendsWin32KeyedMutexAcquireReleaseInfoNV>(
11316        mut self,
11317        next: &'a mut T,
11318    ) -> Self {
11319        unsafe {
11320            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
11321            (*next_ptr).p_next = self.inner.p_next as *mut _;
11322            self.inner.p_next = <*mut BaseOutStructure>::cast::<
11323                core::ffi::c_void,
11324            >(next_ptr) as *const _;
11325        }
11326        self
11327    }
11328}
11329impl<'a> core::ops::Deref for Win32KeyedMutexAcquireReleaseInfoNVBuilder<'a> {
11330    type Target = Win32KeyedMutexAcquireReleaseInfoNV;
11331    #[inline]
11332    fn deref(&self) -> &Self::Target {
11333        &self.inner
11334    }
11335}
11336impl<'a> core::ops::DerefMut for Win32KeyedMutexAcquireReleaseInfoNVBuilder<'a> {
11337    #[inline]
11338    fn deref_mut(&mut self) -> &mut Self::Target {
11339        &mut self.inner
11340    }
11341}
11342///Builder for [`PhysicalDeviceDeviceGeneratedCommandsFeaturesNV`] with lifetime-tied pNext safety.
11343pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
11344    inner: PhysicalDeviceDeviceGeneratedCommandsFeaturesNV,
11345    _marker: core::marker::PhantomData<&'a ()>,
11346}
11347impl PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
11348    /// Start building this struct; `s_type` is already set to the correct variant.
11349    #[inline]
11350    pub fn builder<'a>() -> PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
11351        PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder {
11352            inner: PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
11353                s_type: StructureType::from_raw(1000277007i32),
11354                ..Default::default()
11355            },
11356            _marker: core::marker::PhantomData,
11357        }
11358    }
11359}
11360impl<'a> PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
11361    #[inline]
11362    pub fn device_generated_commands(mut self, value: bool) -> Self {
11363        self.inner.device_generated_commands = value as u32;
11364        self
11365    }
11366    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDeviceGeneratedCommandsFeaturesNV`]'s **Extended By** section for valid types.
11367    #[inline]
11368    pub fn push_next<T: ExtendsPhysicalDeviceDeviceGeneratedCommandsFeaturesNV>(
11369        mut self,
11370        next: &'a mut T,
11371    ) -> Self {
11372        unsafe {
11373            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
11374            (*next_ptr).p_next = self.inner.p_next as *mut _;
11375            self.inner.p_next = <*mut BaseOutStructure>::cast::<
11376                core::ffi::c_void,
11377            >(next_ptr);
11378        }
11379        self
11380    }
11381}
11382impl<'a> core::ops::Deref
11383for PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
11384    type Target = PhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
11385    #[inline]
11386    fn deref(&self) -> &Self::Target {
11387        &self.inner
11388    }
11389}
11390impl<'a> core::ops::DerefMut
11391for PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
11392    #[inline]
11393    fn deref_mut(&mut self) -> &mut Self::Target {
11394        &mut self.inner
11395    }
11396}
11397///Builder for [`PushConstantBankInfoNV`] with lifetime-tied pNext safety.
11398pub struct PushConstantBankInfoNVBuilder<'a> {
11399    inner: PushConstantBankInfoNV,
11400    _marker: core::marker::PhantomData<&'a ()>,
11401}
11402impl PushConstantBankInfoNV {
11403    /// Start building this struct; `s_type` is already set to the correct variant.
11404    #[inline]
11405    pub fn builder<'a>() -> PushConstantBankInfoNVBuilder<'a> {
11406        PushConstantBankInfoNVBuilder {
11407            inner: PushConstantBankInfoNV {
11408                s_type: StructureType::from_raw(1000580000i32),
11409                ..Default::default()
11410            },
11411            _marker: core::marker::PhantomData,
11412        }
11413    }
11414}
11415impl<'a> PushConstantBankInfoNVBuilder<'a> {
11416    #[inline]
11417    pub fn bank(mut self, value: u32) -> Self {
11418        self.inner.bank = value;
11419        self
11420    }
11421    ///Prepend a struct to the pNext chain. See [`PushConstantBankInfoNV`]'s **Extended By** section for valid types.
11422    #[inline]
11423    pub fn push_next<T: ExtendsPushConstantBankInfoNV>(
11424        mut self,
11425        next: &'a mut T,
11426    ) -> Self {
11427        unsafe {
11428            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
11429            (*next_ptr).p_next = self.inner.p_next as *mut _;
11430            self.inner.p_next = <*mut BaseOutStructure>::cast::<
11431                core::ffi::c_void,
11432            >(next_ptr) as *const _;
11433        }
11434        self
11435    }
11436}
11437impl<'a> core::ops::Deref for PushConstantBankInfoNVBuilder<'a> {
11438    type Target = PushConstantBankInfoNV;
11439    #[inline]
11440    fn deref(&self) -> &Self::Target {
11441        &self.inner
11442    }
11443}
11444impl<'a> core::ops::DerefMut for PushConstantBankInfoNVBuilder<'a> {
11445    #[inline]
11446    fn deref_mut(&mut self) -> &mut Self::Target {
11447        &mut self.inner
11448    }
11449}
11450///Builder for [`PhysicalDevicePushConstantBankFeaturesNV`] with lifetime-tied pNext safety.
11451pub struct PhysicalDevicePushConstantBankFeaturesNVBuilder<'a> {
11452    inner: PhysicalDevicePushConstantBankFeaturesNV,
11453    _marker: core::marker::PhantomData<&'a ()>,
11454}
11455impl PhysicalDevicePushConstantBankFeaturesNV {
11456    /// Start building this struct; `s_type` is already set to the correct variant.
11457    #[inline]
11458    pub fn builder<'a>() -> PhysicalDevicePushConstantBankFeaturesNVBuilder<'a> {
11459        PhysicalDevicePushConstantBankFeaturesNVBuilder {
11460            inner: PhysicalDevicePushConstantBankFeaturesNV {
11461                s_type: StructureType::from_raw(1000580001i32),
11462                ..Default::default()
11463            },
11464            _marker: core::marker::PhantomData,
11465        }
11466    }
11467}
11468impl<'a> PhysicalDevicePushConstantBankFeaturesNVBuilder<'a> {
11469    #[inline]
11470    pub fn push_constant_bank(mut self, value: bool) -> Self {
11471        self.inner.push_constant_bank = value as u32;
11472        self
11473    }
11474    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePushConstantBankFeaturesNV`]'s **Extended By** section for valid types.
11475    #[inline]
11476    pub fn push_next<T: ExtendsPhysicalDevicePushConstantBankFeaturesNV>(
11477        mut self,
11478        next: &'a mut T,
11479    ) -> Self {
11480        unsafe {
11481            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
11482            (*next_ptr).p_next = self.inner.p_next as *mut _;
11483            self.inner.p_next = <*mut BaseOutStructure>::cast::<
11484                core::ffi::c_void,
11485            >(next_ptr);
11486        }
11487        self
11488    }
11489}
11490impl<'a> core::ops::Deref for PhysicalDevicePushConstantBankFeaturesNVBuilder<'a> {
11491    type Target = PhysicalDevicePushConstantBankFeaturesNV;
11492    #[inline]
11493    fn deref(&self) -> &Self::Target {
11494        &self.inner
11495    }
11496}
11497impl<'a> core::ops::DerefMut for PhysicalDevicePushConstantBankFeaturesNVBuilder<'a> {
11498    #[inline]
11499    fn deref_mut(&mut self) -> &mut Self::Target {
11500        &mut self.inner
11501    }
11502}
11503///Builder for [`PhysicalDevicePushConstantBankPropertiesNV`] with lifetime-tied pNext safety.
11504pub struct PhysicalDevicePushConstantBankPropertiesNVBuilder<'a> {
11505    inner: PhysicalDevicePushConstantBankPropertiesNV,
11506    _marker: core::marker::PhantomData<&'a ()>,
11507}
11508impl PhysicalDevicePushConstantBankPropertiesNV {
11509    /// Start building this struct; `s_type` is already set to the correct variant.
11510    #[inline]
11511    pub fn builder<'a>() -> PhysicalDevicePushConstantBankPropertiesNVBuilder<'a> {
11512        PhysicalDevicePushConstantBankPropertiesNVBuilder {
11513            inner: PhysicalDevicePushConstantBankPropertiesNV {
11514                s_type: StructureType::from_raw(1000580002i32),
11515                ..Default::default()
11516            },
11517            _marker: core::marker::PhantomData,
11518        }
11519    }
11520}
11521impl<'a> PhysicalDevicePushConstantBankPropertiesNVBuilder<'a> {
11522    #[inline]
11523    pub fn max_graphics_push_constant_banks(mut self, value: u32) -> Self {
11524        self.inner.max_graphics_push_constant_banks = value;
11525        self
11526    }
11527    #[inline]
11528    pub fn max_compute_push_constant_banks(mut self, value: u32) -> Self {
11529        self.inner.max_compute_push_constant_banks = value;
11530        self
11531    }
11532    #[inline]
11533    pub fn max_graphics_push_data_banks(mut self, value: u32) -> Self {
11534        self.inner.max_graphics_push_data_banks = value;
11535        self
11536    }
11537    #[inline]
11538    pub fn max_compute_push_data_banks(mut self, value: u32) -> Self {
11539        self.inner.max_compute_push_data_banks = value;
11540        self
11541    }
11542}
11543impl<'a> core::ops::Deref for PhysicalDevicePushConstantBankPropertiesNVBuilder<'a> {
11544    type Target = PhysicalDevicePushConstantBankPropertiesNV;
11545    #[inline]
11546    fn deref(&self) -> &Self::Target {
11547        &self.inner
11548    }
11549}
11550impl<'a> core::ops::DerefMut for PhysicalDevicePushConstantBankPropertiesNVBuilder<'a> {
11551    #[inline]
11552    fn deref_mut(&mut self) -> &mut Self::Target {
11553        &mut self.inner
11554    }
11555}
11556///Builder for [`PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV`] with lifetime-tied pNext safety.
11557pub struct PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNVBuilder<'a> {
11558    inner: PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV,
11559    _marker: core::marker::PhantomData<&'a ()>,
11560}
11561impl PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {
11562    /// Start building this struct; `s_type` is already set to the correct variant.
11563    #[inline]
11564    pub fn builder<'a>() -> PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNVBuilder<
11565        'a,
11566    > {
11567        PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNVBuilder {
11568            inner: PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {
11569                s_type: StructureType::from_raw(1000428000i32),
11570                ..Default::default()
11571            },
11572            _marker: core::marker::PhantomData,
11573        }
11574    }
11575}
11576impl<'a> PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNVBuilder<'a> {
11577    #[inline]
11578    pub fn device_generated_compute(mut self, value: bool) -> Self {
11579        self.inner.device_generated_compute = value as u32;
11580        self
11581    }
11582    #[inline]
11583    pub fn device_generated_compute_pipelines(mut self, value: bool) -> Self {
11584        self.inner.device_generated_compute_pipelines = value as u32;
11585        self
11586    }
11587    #[inline]
11588    pub fn device_generated_compute_capture_replay(mut self, value: bool) -> Self {
11589        self.inner.device_generated_compute_capture_replay = value as u32;
11590        self
11591    }
11592    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV`]'s **Extended By** section for valid types.
11593    #[inline]
11594    pub fn push_next<T: ExtendsPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV>(
11595        mut self,
11596        next: &'a mut T,
11597    ) -> Self {
11598        unsafe {
11599            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
11600            (*next_ptr).p_next = self.inner.p_next as *mut _;
11601            self.inner.p_next = <*mut BaseOutStructure>::cast::<
11602                core::ffi::c_void,
11603            >(next_ptr);
11604        }
11605        self
11606    }
11607}
11608impl<'a> core::ops::Deref
11609for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNVBuilder<'a> {
11610    type Target = PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV;
11611    #[inline]
11612    fn deref(&self) -> &Self::Target {
11613        &self.inner
11614    }
11615}
11616impl<'a> core::ops::DerefMut
11617for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNVBuilder<'a> {
11618    #[inline]
11619    fn deref_mut(&mut self) -> &mut Self::Target {
11620        &mut self.inner
11621    }
11622}
11623///Builder for [`DevicePrivateDataCreateInfo`] with lifetime-tied pNext safety.
11624pub struct DevicePrivateDataCreateInfoBuilder<'a> {
11625    inner: DevicePrivateDataCreateInfo,
11626    _marker: core::marker::PhantomData<&'a ()>,
11627}
11628impl DevicePrivateDataCreateInfo {
11629    /// Start building this struct; `s_type` is already set to the correct variant.
11630    #[inline]
11631    pub fn builder<'a>() -> DevicePrivateDataCreateInfoBuilder<'a> {
11632        DevicePrivateDataCreateInfoBuilder {
11633            inner: DevicePrivateDataCreateInfo {
11634                s_type: StructureType::from_raw(1000295001i32),
11635                ..Default::default()
11636            },
11637            _marker: core::marker::PhantomData,
11638        }
11639    }
11640}
11641impl<'a> DevicePrivateDataCreateInfoBuilder<'a> {
11642    #[inline]
11643    pub fn private_data_slot_request_count(mut self, value: u32) -> Self {
11644        self.inner.private_data_slot_request_count = value;
11645        self
11646    }
11647    ///Prepend a struct to the pNext chain. See [`DevicePrivateDataCreateInfo`]'s **Extended By** section for valid types.
11648    #[inline]
11649    pub fn push_next<T: ExtendsDevicePrivateDataCreateInfo>(
11650        mut self,
11651        next: &'a mut T,
11652    ) -> Self {
11653        unsafe {
11654            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
11655            (*next_ptr).p_next = self.inner.p_next as *mut _;
11656            self.inner.p_next = <*mut BaseOutStructure>::cast::<
11657                core::ffi::c_void,
11658            >(next_ptr) as *const _;
11659        }
11660        self
11661    }
11662}
11663impl<'a> core::ops::Deref for DevicePrivateDataCreateInfoBuilder<'a> {
11664    type Target = DevicePrivateDataCreateInfo;
11665    #[inline]
11666    fn deref(&self) -> &Self::Target {
11667        &self.inner
11668    }
11669}
11670impl<'a> core::ops::DerefMut for DevicePrivateDataCreateInfoBuilder<'a> {
11671    #[inline]
11672    fn deref_mut(&mut self) -> &mut Self::Target {
11673        &mut self.inner
11674    }
11675}
11676///Builder for [`PrivateDataSlotCreateInfo`] with lifetime-tied pNext safety.
11677pub struct PrivateDataSlotCreateInfoBuilder<'a> {
11678    inner: PrivateDataSlotCreateInfo,
11679    _marker: core::marker::PhantomData<&'a ()>,
11680}
11681impl PrivateDataSlotCreateInfo {
11682    /// Start building this struct; `s_type` is already set to the correct variant.
11683    #[inline]
11684    pub fn builder<'a>() -> PrivateDataSlotCreateInfoBuilder<'a> {
11685        PrivateDataSlotCreateInfoBuilder {
11686            inner: PrivateDataSlotCreateInfo {
11687                s_type: StructureType::from_raw(1000295002i32),
11688                ..Default::default()
11689            },
11690            _marker: core::marker::PhantomData,
11691        }
11692    }
11693}
11694impl<'a> PrivateDataSlotCreateInfoBuilder<'a> {
11695    #[inline]
11696    pub fn flags(mut self, value: PrivateDataSlotCreateFlags) -> Self {
11697        self.inner.flags = value;
11698        self
11699    }
11700    ///Prepend a struct to the pNext chain. See [`PrivateDataSlotCreateInfo`]'s **Extended By** section for valid types.
11701    #[inline]
11702    pub fn push_next<T: ExtendsPrivateDataSlotCreateInfo>(
11703        mut self,
11704        next: &'a mut T,
11705    ) -> Self {
11706        unsafe {
11707            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
11708            (*next_ptr).p_next = self.inner.p_next as *mut _;
11709            self.inner.p_next = <*mut BaseOutStructure>::cast::<
11710                core::ffi::c_void,
11711            >(next_ptr) as *const _;
11712        }
11713        self
11714    }
11715}
11716impl<'a> core::ops::Deref for PrivateDataSlotCreateInfoBuilder<'a> {
11717    type Target = PrivateDataSlotCreateInfo;
11718    #[inline]
11719    fn deref(&self) -> &Self::Target {
11720        &self.inner
11721    }
11722}
11723impl<'a> core::ops::DerefMut for PrivateDataSlotCreateInfoBuilder<'a> {
11724    #[inline]
11725    fn deref_mut(&mut self) -> &mut Self::Target {
11726        &mut self.inner
11727    }
11728}
11729///Builder for [`PhysicalDevicePrivateDataFeatures`] with lifetime-tied pNext safety.
11730pub struct PhysicalDevicePrivateDataFeaturesBuilder<'a> {
11731    inner: PhysicalDevicePrivateDataFeatures,
11732    _marker: core::marker::PhantomData<&'a ()>,
11733}
11734impl PhysicalDevicePrivateDataFeatures {
11735    /// Start building this struct; `s_type` is already set to the correct variant.
11736    #[inline]
11737    pub fn builder<'a>() -> PhysicalDevicePrivateDataFeaturesBuilder<'a> {
11738        PhysicalDevicePrivateDataFeaturesBuilder {
11739            inner: PhysicalDevicePrivateDataFeatures {
11740                s_type: StructureType::from_raw(1000295000i32),
11741                ..Default::default()
11742            },
11743            _marker: core::marker::PhantomData,
11744        }
11745    }
11746}
11747impl<'a> PhysicalDevicePrivateDataFeaturesBuilder<'a> {
11748    #[inline]
11749    pub fn private_data(mut self, value: bool) -> Self {
11750        self.inner.private_data = value as u32;
11751        self
11752    }
11753    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePrivateDataFeatures`]'s **Extended By** section for valid types.
11754    #[inline]
11755    pub fn push_next<T: ExtendsPhysicalDevicePrivateDataFeatures>(
11756        mut self,
11757        next: &'a mut T,
11758    ) -> Self {
11759        unsafe {
11760            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
11761            (*next_ptr).p_next = self.inner.p_next as *mut _;
11762            self.inner.p_next = <*mut BaseOutStructure>::cast::<
11763                core::ffi::c_void,
11764            >(next_ptr);
11765        }
11766        self
11767    }
11768}
11769impl<'a> core::ops::Deref for PhysicalDevicePrivateDataFeaturesBuilder<'a> {
11770    type Target = PhysicalDevicePrivateDataFeatures;
11771    #[inline]
11772    fn deref(&self) -> &Self::Target {
11773        &self.inner
11774    }
11775}
11776impl<'a> core::ops::DerefMut for PhysicalDevicePrivateDataFeaturesBuilder<'a> {
11777    #[inline]
11778    fn deref_mut(&mut self) -> &mut Self::Target {
11779        &mut self.inner
11780    }
11781}
11782///Builder for [`PhysicalDeviceDeviceGeneratedCommandsPropertiesNV`] with lifetime-tied pNext safety.
11783pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
11784    inner: PhysicalDeviceDeviceGeneratedCommandsPropertiesNV,
11785    _marker: core::marker::PhantomData<&'a ()>,
11786}
11787impl PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
11788    /// Start building this struct; `s_type` is already set to the correct variant.
11789    #[inline]
11790    pub fn builder<'a>() -> PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<
11791        'a,
11792    > {
11793        PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder {
11794            inner: PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
11795                s_type: StructureType::from_raw(1000277000i32),
11796                ..Default::default()
11797            },
11798            _marker: core::marker::PhantomData,
11799        }
11800    }
11801}
11802impl<'a> PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
11803    #[inline]
11804    pub fn max_graphics_shader_group_count(mut self, value: u32) -> Self {
11805        self.inner.max_graphics_shader_group_count = value;
11806        self
11807    }
11808    #[inline]
11809    pub fn max_indirect_sequence_count(mut self, value: u32) -> Self {
11810        self.inner.max_indirect_sequence_count = value;
11811        self
11812    }
11813    #[inline]
11814    pub fn max_indirect_commands_token_count(mut self, value: u32) -> Self {
11815        self.inner.max_indirect_commands_token_count = value;
11816        self
11817    }
11818    #[inline]
11819    pub fn max_indirect_commands_stream_count(mut self, value: u32) -> Self {
11820        self.inner.max_indirect_commands_stream_count = value;
11821        self
11822    }
11823    #[inline]
11824    pub fn max_indirect_commands_token_offset(mut self, value: u32) -> Self {
11825        self.inner.max_indirect_commands_token_offset = value;
11826        self
11827    }
11828    #[inline]
11829    pub fn max_indirect_commands_stream_stride(mut self, value: u32) -> Self {
11830        self.inner.max_indirect_commands_stream_stride = value;
11831        self
11832    }
11833    #[inline]
11834    pub fn min_sequences_count_buffer_offset_alignment(mut self, value: u32) -> Self {
11835        self.inner.min_sequences_count_buffer_offset_alignment = value;
11836        self
11837    }
11838    #[inline]
11839    pub fn min_sequences_index_buffer_offset_alignment(mut self, value: u32) -> Self {
11840        self.inner.min_sequences_index_buffer_offset_alignment = value;
11841        self
11842    }
11843    #[inline]
11844    pub fn min_indirect_commands_buffer_offset_alignment(mut self, value: u32) -> Self {
11845        self.inner.min_indirect_commands_buffer_offset_alignment = value;
11846        self
11847    }
11848}
11849impl<'a> core::ops::Deref
11850for PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
11851    type Target = PhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
11852    #[inline]
11853    fn deref(&self) -> &Self::Target {
11854        &self.inner
11855    }
11856}
11857impl<'a> core::ops::DerefMut
11858for PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
11859    #[inline]
11860    fn deref_mut(&mut self) -> &mut Self::Target {
11861        &mut self.inner
11862    }
11863}
11864///Builder for [`PhysicalDeviceClusterAccelerationStructureFeaturesNV`] with lifetime-tied pNext safety.
11865pub struct PhysicalDeviceClusterAccelerationStructureFeaturesNVBuilder<'a> {
11866    inner: PhysicalDeviceClusterAccelerationStructureFeaturesNV,
11867    _marker: core::marker::PhantomData<&'a ()>,
11868}
11869impl PhysicalDeviceClusterAccelerationStructureFeaturesNV {
11870    /// Start building this struct; `s_type` is already set to the correct variant.
11871    #[inline]
11872    pub fn builder<'a>() -> PhysicalDeviceClusterAccelerationStructureFeaturesNVBuilder<
11873        'a,
11874    > {
11875        PhysicalDeviceClusterAccelerationStructureFeaturesNVBuilder {
11876            inner: PhysicalDeviceClusterAccelerationStructureFeaturesNV {
11877                s_type: StructureType::from_raw(1000569000i32),
11878                ..Default::default()
11879            },
11880            _marker: core::marker::PhantomData,
11881        }
11882    }
11883}
11884impl<'a> PhysicalDeviceClusterAccelerationStructureFeaturesNVBuilder<'a> {
11885    #[inline]
11886    pub fn cluster_acceleration_structure(mut self, value: bool) -> Self {
11887        self.inner.cluster_acceleration_structure = value as u32;
11888        self
11889    }
11890    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceClusterAccelerationStructureFeaturesNV`]'s **Extended By** section for valid types.
11891    #[inline]
11892    pub fn push_next<T: ExtendsPhysicalDeviceClusterAccelerationStructureFeaturesNV>(
11893        mut self,
11894        next: &'a mut T,
11895    ) -> Self {
11896        unsafe {
11897            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
11898            (*next_ptr).p_next = self.inner.p_next as *mut _;
11899            self.inner.p_next = <*mut BaseOutStructure>::cast::<
11900                core::ffi::c_void,
11901            >(next_ptr);
11902        }
11903        self
11904    }
11905}
11906impl<'a> core::ops::Deref
11907for PhysicalDeviceClusterAccelerationStructureFeaturesNVBuilder<'a> {
11908    type Target = PhysicalDeviceClusterAccelerationStructureFeaturesNV;
11909    #[inline]
11910    fn deref(&self) -> &Self::Target {
11911        &self.inner
11912    }
11913}
11914impl<'a> core::ops::DerefMut
11915for PhysicalDeviceClusterAccelerationStructureFeaturesNVBuilder<'a> {
11916    #[inline]
11917    fn deref_mut(&mut self) -> &mut Self::Target {
11918        &mut self.inner
11919    }
11920}
11921///Builder for [`PhysicalDeviceClusterAccelerationStructurePropertiesNV`] with lifetime-tied pNext safety.
11922pub struct PhysicalDeviceClusterAccelerationStructurePropertiesNVBuilder<'a> {
11923    inner: PhysicalDeviceClusterAccelerationStructurePropertiesNV,
11924    _marker: core::marker::PhantomData<&'a ()>,
11925}
11926impl PhysicalDeviceClusterAccelerationStructurePropertiesNV {
11927    /// Start building this struct; `s_type` is already set to the correct variant.
11928    #[inline]
11929    pub fn builder<'a>() -> PhysicalDeviceClusterAccelerationStructurePropertiesNVBuilder<
11930        'a,
11931    > {
11932        PhysicalDeviceClusterAccelerationStructurePropertiesNVBuilder {
11933            inner: PhysicalDeviceClusterAccelerationStructurePropertiesNV {
11934                s_type: StructureType::from_raw(1000569001i32),
11935                ..Default::default()
11936            },
11937            _marker: core::marker::PhantomData,
11938        }
11939    }
11940}
11941impl<'a> PhysicalDeviceClusterAccelerationStructurePropertiesNVBuilder<'a> {
11942    #[inline]
11943    pub fn max_vertices_per_cluster(mut self, value: u32) -> Self {
11944        self.inner.max_vertices_per_cluster = value;
11945        self
11946    }
11947    #[inline]
11948    pub fn max_triangles_per_cluster(mut self, value: u32) -> Self {
11949        self.inner.max_triangles_per_cluster = value;
11950        self
11951    }
11952    #[inline]
11953    pub fn cluster_scratch_byte_alignment(mut self, value: u32) -> Self {
11954        self.inner.cluster_scratch_byte_alignment = value;
11955        self
11956    }
11957    #[inline]
11958    pub fn cluster_byte_alignment(mut self, value: u32) -> Self {
11959        self.inner.cluster_byte_alignment = value;
11960        self
11961    }
11962    #[inline]
11963    pub fn cluster_template_byte_alignment(mut self, value: u32) -> Self {
11964        self.inner.cluster_template_byte_alignment = value;
11965        self
11966    }
11967    #[inline]
11968    pub fn cluster_bottom_level_byte_alignment(mut self, value: u32) -> Self {
11969        self.inner.cluster_bottom_level_byte_alignment = value;
11970        self
11971    }
11972    #[inline]
11973    pub fn cluster_template_bounds_byte_alignment(mut self, value: u32) -> Self {
11974        self.inner.cluster_template_bounds_byte_alignment = value;
11975        self
11976    }
11977    #[inline]
11978    pub fn max_cluster_geometry_index(mut self, value: u32) -> Self {
11979        self.inner.max_cluster_geometry_index = value;
11980        self
11981    }
11982}
11983impl<'a> core::ops::Deref
11984for PhysicalDeviceClusterAccelerationStructurePropertiesNVBuilder<'a> {
11985    type Target = PhysicalDeviceClusterAccelerationStructurePropertiesNV;
11986    #[inline]
11987    fn deref(&self) -> &Self::Target {
11988        &self.inner
11989    }
11990}
11991impl<'a> core::ops::DerefMut
11992for PhysicalDeviceClusterAccelerationStructurePropertiesNVBuilder<'a> {
11993    #[inline]
11994    fn deref_mut(&mut self) -> &mut Self::Target {
11995        &mut self.inner
11996    }
11997}
11998///Builder for [`StridedDeviceAddressNV`].
11999pub struct StridedDeviceAddressNVBuilder {
12000    inner: StridedDeviceAddressNV,
12001}
12002impl StridedDeviceAddressNV {
12003    /// Start building this struct.
12004    #[inline]
12005    pub fn builder() -> StridedDeviceAddressNVBuilder {
12006        StridedDeviceAddressNVBuilder {
12007            inner: StridedDeviceAddressNV {
12008                ..Default::default()
12009            },
12010        }
12011    }
12012}
12013impl StridedDeviceAddressNVBuilder {
12014    #[inline]
12015    pub fn start_address(mut self, value: u64) -> Self {
12016        self.inner.start_address = value;
12017        self
12018    }
12019    #[inline]
12020    pub fn stride_in_bytes(mut self, value: u64) -> Self {
12021        self.inner.stride_in_bytes = value;
12022        self
12023    }
12024}
12025impl core::ops::Deref for StridedDeviceAddressNVBuilder {
12026    type Target = StridedDeviceAddressNV;
12027    #[inline]
12028    fn deref(&self) -> &Self::Target {
12029        &self.inner
12030    }
12031}
12032impl core::ops::DerefMut for StridedDeviceAddressNVBuilder {
12033    #[inline]
12034    fn deref_mut(&mut self) -> &mut Self::Target {
12035        &mut self.inner
12036    }
12037}
12038///Builder for [`RayTracingPipelineClusterAccelerationStructureCreateInfoNV`] with lifetime-tied pNext safety.
12039pub struct RayTracingPipelineClusterAccelerationStructureCreateInfoNVBuilder<'a> {
12040    inner: RayTracingPipelineClusterAccelerationStructureCreateInfoNV,
12041    _marker: core::marker::PhantomData<&'a ()>,
12042}
12043impl RayTracingPipelineClusterAccelerationStructureCreateInfoNV {
12044    /// Start building this struct; `s_type` is already set to the correct variant.
12045    #[inline]
12046    pub fn builder<'a>() -> RayTracingPipelineClusterAccelerationStructureCreateInfoNVBuilder<
12047        'a,
12048    > {
12049        RayTracingPipelineClusterAccelerationStructureCreateInfoNVBuilder {
12050            inner: RayTracingPipelineClusterAccelerationStructureCreateInfoNV {
12051                s_type: StructureType::from_raw(1000569007i32),
12052                ..Default::default()
12053            },
12054            _marker: core::marker::PhantomData,
12055        }
12056    }
12057}
12058impl<'a> RayTracingPipelineClusterAccelerationStructureCreateInfoNVBuilder<'a> {
12059    #[inline]
12060    pub fn allow_cluster_acceleration_structure(mut self, value: bool) -> Self {
12061        self.inner.allow_cluster_acceleration_structure = value as u32;
12062        self
12063    }
12064    ///Prepend a struct to the pNext chain. See [`RayTracingPipelineClusterAccelerationStructureCreateInfoNV`]'s **Extended By** section for valid types.
12065    #[inline]
12066    pub fn push_next<
12067        T: ExtendsRayTracingPipelineClusterAccelerationStructureCreateInfoNV,
12068    >(mut self, next: &'a mut T) -> Self {
12069        unsafe {
12070            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
12071            (*next_ptr).p_next = self.inner.p_next as *mut _;
12072            self.inner.p_next = <*mut BaseOutStructure>::cast::<
12073                core::ffi::c_void,
12074            >(next_ptr);
12075        }
12076        self
12077    }
12078}
12079impl<'a> core::ops::Deref
12080for RayTracingPipelineClusterAccelerationStructureCreateInfoNVBuilder<'a> {
12081    type Target = RayTracingPipelineClusterAccelerationStructureCreateInfoNV;
12082    #[inline]
12083    fn deref(&self) -> &Self::Target {
12084        &self.inner
12085    }
12086}
12087impl<'a> core::ops::DerefMut
12088for RayTracingPipelineClusterAccelerationStructureCreateInfoNVBuilder<'a> {
12089    #[inline]
12090    fn deref_mut(&mut self) -> &mut Self::Target {
12091        &mut self.inner
12092    }
12093}
12094///Builder for [`ClusterAccelerationStructureMoveObjectsInfoNV`].
12095pub struct ClusterAccelerationStructureMoveObjectsInfoNVBuilder {
12096    inner: ClusterAccelerationStructureMoveObjectsInfoNV,
12097}
12098impl ClusterAccelerationStructureMoveObjectsInfoNV {
12099    /// Start building this struct.
12100    #[inline]
12101    pub fn builder() -> ClusterAccelerationStructureMoveObjectsInfoNVBuilder {
12102        ClusterAccelerationStructureMoveObjectsInfoNVBuilder {
12103            inner: ClusterAccelerationStructureMoveObjectsInfoNV {
12104                ..Default::default()
12105            },
12106        }
12107    }
12108}
12109impl ClusterAccelerationStructureMoveObjectsInfoNVBuilder {
12110    #[inline]
12111    pub fn src_acceleration_structure(mut self, value: u64) -> Self {
12112        self.inner.src_acceleration_structure = value;
12113        self
12114    }
12115}
12116impl core::ops::Deref for ClusterAccelerationStructureMoveObjectsInfoNVBuilder {
12117    type Target = ClusterAccelerationStructureMoveObjectsInfoNV;
12118    #[inline]
12119    fn deref(&self) -> &Self::Target {
12120        &self.inner
12121    }
12122}
12123impl core::ops::DerefMut for ClusterAccelerationStructureMoveObjectsInfoNVBuilder {
12124    #[inline]
12125    fn deref_mut(&mut self) -> &mut Self::Target {
12126        &mut self.inner
12127    }
12128}
12129///Builder for [`ClusterAccelerationStructureBuildClustersBottomLevelInfoNV`].
12130pub struct ClusterAccelerationStructureBuildClustersBottomLevelInfoNVBuilder {
12131    inner: ClusterAccelerationStructureBuildClustersBottomLevelInfoNV,
12132}
12133impl ClusterAccelerationStructureBuildClustersBottomLevelInfoNV {
12134    /// Start building this struct.
12135    #[inline]
12136    pub fn builder() -> ClusterAccelerationStructureBuildClustersBottomLevelInfoNVBuilder {
12137        ClusterAccelerationStructureBuildClustersBottomLevelInfoNVBuilder {
12138            inner: ClusterAccelerationStructureBuildClustersBottomLevelInfoNV {
12139                ..Default::default()
12140            },
12141        }
12142    }
12143}
12144impl ClusterAccelerationStructureBuildClustersBottomLevelInfoNVBuilder {
12145    #[inline]
12146    pub fn cluster_references_count(mut self, value: u32) -> Self {
12147        self.inner.cluster_references_count = value;
12148        self
12149    }
12150    #[inline]
12151    pub fn cluster_references_stride(mut self, value: u32) -> Self {
12152        self.inner.cluster_references_stride = value;
12153        self
12154    }
12155    #[inline]
12156    pub fn cluster_references(mut self, value: u64) -> Self {
12157        self.inner.cluster_references = value;
12158        self
12159    }
12160}
12161impl core::ops::Deref
12162for ClusterAccelerationStructureBuildClustersBottomLevelInfoNVBuilder {
12163    type Target = ClusterAccelerationStructureBuildClustersBottomLevelInfoNV;
12164    #[inline]
12165    fn deref(&self) -> &Self::Target {
12166        &self.inner
12167    }
12168}
12169impl core::ops::DerefMut
12170for ClusterAccelerationStructureBuildClustersBottomLevelInfoNVBuilder {
12171    #[inline]
12172    fn deref_mut(&mut self) -> &mut Self::Target {
12173        &mut self.inner
12174    }
12175}
12176///Builder for [`ClusterAccelerationStructureGetTemplateIndicesInfoNV`].
12177pub struct ClusterAccelerationStructureGetTemplateIndicesInfoNVBuilder {
12178    inner: ClusterAccelerationStructureGetTemplateIndicesInfoNV,
12179}
12180impl ClusterAccelerationStructureGetTemplateIndicesInfoNV {
12181    /// Start building this struct.
12182    #[inline]
12183    pub fn builder() -> ClusterAccelerationStructureGetTemplateIndicesInfoNVBuilder {
12184        ClusterAccelerationStructureGetTemplateIndicesInfoNVBuilder {
12185            inner: ClusterAccelerationStructureGetTemplateIndicesInfoNV {
12186                ..Default::default()
12187            },
12188        }
12189    }
12190}
12191impl ClusterAccelerationStructureGetTemplateIndicesInfoNVBuilder {
12192    #[inline]
12193    pub fn cluster_template_address(mut self, value: u64) -> Self {
12194        self.inner.cluster_template_address = value;
12195        self
12196    }
12197}
12198impl core::ops::Deref for ClusterAccelerationStructureGetTemplateIndicesInfoNVBuilder {
12199    type Target = ClusterAccelerationStructureGetTemplateIndicesInfoNV;
12200    #[inline]
12201    fn deref(&self) -> &Self::Target {
12202        &self.inner
12203    }
12204}
12205impl core::ops::DerefMut
12206for ClusterAccelerationStructureGetTemplateIndicesInfoNVBuilder {
12207    #[inline]
12208    fn deref_mut(&mut self) -> &mut Self::Target {
12209        &mut self.inner
12210    }
12211}
12212///Builder for [`ClusterAccelerationStructureClustersBottomLevelInputNV`] with lifetime-tied pNext safety.
12213pub struct ClusterAccelerationStructureClustersBottomLevelInputNVBuilder<'a> {
12214    inner: ClusterAccelerationStructureClustersBottomLevelInputNV,
12215    _marker: core::marker::PhantomData<&'a ()>,
12216}
12217impl ClusterAccelerationStructureClustersBottomLevelInputNV {
12218    /// Start building this struct; `s_type` is already set to the correct variant.
12219    #[inline]
12220    pub fn builder<'a>() -> ClusterAccelerationStructureClustersBottomLevelInputNVBuilder<
12221        'a,
12222    > {
12223        ClusterAccelerationStructureClustersBottomLevelInputNVBuilder {
12224            inner: ClusterAccelerationStructureClustersBottomLevelInputNV {
12225                s_type: StructureType::from_raw(1000569002i32),
12226                ..Default::default()
12227            },
12228            _marker: core::marker::PhantomData,
12229        }
12230    }
12231}
12232impl<'a> ClusterAccelerationStructureClustersBottomLevelInputNVBuilder<'a> {
12233    #[inline]
12234    pub fn max_total_cluster_count(mut self, value: u32) -> Self {
12235        self.inner.max_total_cluster_count = value;
12236        self
12237    }
12238    #[inline]
12239    pub fn max_cluster_count_per_acceleration_structure(mut self, value: u32) -> Self {
12240        self.inner.max_cluster_count_per_acceleration_structure = value;
12241        self
12242    }
12243    ///Prepend a struct to the pNext chain. See [`ClusterAccelerationStructureClustersBottomLevelInputNV`]'s **Extended By** section for valid types.
12244    #[inline]
12245    pub fn push_next<T: ExtendsClusterAccelerationStructureClustersBottomLevelInputNV>(
12246        mut self,
12247        next: &'a mut T,
12248    ) -> Self {
12249        unsafe {
12250            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
12251            (*next_ptr).p_next = self.inner.p_next as *mut _;
12252            self.inner.p_next = <*mut BaseOutStructure>::cast::<
12253                core::ffi::c_void,
12254            >(next_ptr);
12255        }
12256        self
12257    }
12258}
12259impl<'a> core::ops::Deref
12260for ClusterAccelerationStructureClustersBottomLevelInputNVBuilder<'a> {
12261    type Target = ClusterAccelerationStructureClustersBottomLevelInputNV;
12262    #[inline]
12263    fn deref(&self) -> &Self::Target {
12264        &self.inner
12265    }
12266}
12267impl<'a> core::ops::DerefMut
12268for ClusterAccelerationStructureClustersBottomLevelInputNVBuilder<'a> {
12269    #[inline]
12270    fn deref_mut(&mut self) -> &mut Self::Target {
12271        &mut self.inner
12272    }
12273}
12274///Builder for [`ClusterAccelerationStructureTriangleClusterInputNV`] with lifetime-tied pNext safety.
12275pub struct ClusterAccelerationStructureTriangleClusterInputNVBuilder<'a> {
12276    inner: ClusterAccelerationStructureTriangleClusterInputNV,
12277    _marker: core::marker::PhantomData<&'a ()>,
12278}
12279impl ClusterAccelerationStructureTriangleClusterInputNV {
12280    /// Start building this struct; `s_type` is already set to the correct variant.
12281    #[inline]
12282    pub fn builder<'a>() -> ClusterAccelerationStructureTriangleClusterInputNVBuilder<
12283        'a,
12284    > {
12285        ClusterAccelerationStructureTriangleClusterInputNVBuilder {
12286            inner: ClusterAccelerationStructureTriangleClusterInputNV {
12287                s_type: StructureType::from_raw(1000569003i32),
12288                ..Default::default()
12289            },
12290            _marker: core::marker::PhantomData,
12291        }
12292    }
12293}
12294impl<'a> ClusterAccelerationStructureTriangleClusterInputNVBuilder<'a> {
12295    #[inline]
12296    pub fn vertex_format(mut self, value: Format) -> Self {
12297        self.inner.vertex_format = value;
12298        self
12299    }
12300    #[inline]
12301    pub fn max_geometry_index_value(mut self, value: u32) -> Self {
12302        self.inner.max_geometry_index_value = value;
12303        self
12304    }
12305    #[inline]
12306    pub fn max_cluster_unique_geometry_count(mut self, value: u32) -> Self {
12307        self.inner.max_cluster_unique_geometry_count = value;
12308        self
12309    }
12310    #[inline]
12311    pub fn max_cluster_triangle_count(mut self, value: u32) -> Self {
12312        self.inner.max_cluster_triangle_count = value;
12313        self
12314    }
12315    #[inline]
12316    pub fn max_cluster_vertex_count(mut self, value: u32) -> Self {
12317        self.inner.max_cluster_vertex_count = value;
12318        self
12319    }
12320    #[inline]
12321    pub fn max_total_triangle_count(mut self, value: u32) -> Self {
12322        self.inner.max_total_triangle_count = value;
12323        self
12324    }
12325    #[inline]
12326    pub fn max_total_vertex_count(mut self, value: u32) -> Self {
12327        self.inner.max_total_vertex_count = value;
12328        self
12329    }
12330    #[inline]
12331    pub fn min_position_truncate_bit_count(mut self, value: u32) -> Self {
12332        self.inner.min_position_truncate_bit_count = value;
12333        self
12334    }
12335    ///Prepend a struct to the pNext chain. See [`ClusterAccelerationStructureTriangleClusterInputNV`]'s **Extended By** section for valid types.
12336    #[inline]
12337    pub fn push_next<T: ExtendsClusterAccelerationStructureTriangleClusterInputNV>(
12338        mut self,
12339        next: &'a mut T,
12340    ) -> Self {
12341        unsafe {
12342            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
12343            (*next_ptr).p_next = self.inner.p_next as *mut _;
12344            self.inner.p_next = <*mut BaseOutStructure>::cast::<
12345                core::ffi::c_void,
12346            >(next_ptr);
12347        }
12348        self
12349    }
12350}
12351impl<'a> core::ops::Deref
12352for ClusterAccelerationStructureTriangleClusterInputNVBuilder<'a> {
12353    type Target = ClusterAccelerationStructureTriangleClusterInputNV;
12354    #[inline]
12355    fn deref(&self) -> &Self::Target {
12356        &self.inner
12357    }
12358}
12359impl<'a> core::ops::DerefMut
12360for ClusterAccelerationStructureTriangleClusterInputNVBuilder<'a> {
12361    #[inline]
12362    fn deref_mut(&mut self) -> &mut Self::Target {
12363        &mut self.inner
12364    }
12365}
12366///Builder for [`ClusterAccelerationStructureMoveObjectsInputNV`] with lifetime-tied pNext safety.
12367pub struct ClusterAccelerationStructureMoveObjectsInputNVBuilder<'a> {
12368    inner: ClusterAccelerationStructureMoveObjectsInputNV,
12369    _marker: core::marker::PhantomData<&'a ()>,
12370}
12371impl ClusterAccelerationStructureMoveObjectsInputNV {
12372    /// Start building this struct; `s_type` is already set to the correct variant.
12373    #[inline]
12374    pub fn builder<'a>() -> ClusterAccelerationStructureMoveObjectsInputNVBuilder<'a> {
12375        ClusterAccelerationStructureMoveObjectsInputNVBuilder {
12376            inner: ClusterAccelerationStructureMoveObjectsInputNV {
12377                s_type: StructureType::from_raw(1000569004i32),
12378                ..Default::default()
12379            },
12380            _marker: core::marker::PhantomData,
12381        }
12382    }
12383}
12384impl<'a> ClusterAccelerationStructureMoveObjectsInputNVBuilder<'a> {
12385    #[inline]
12386    pub fn r#type(mut self, value: ClusterAccelerationStructureTypeNV) -> Self {
12387        self.inner.r#type = value;
12388        self
12389    }
12390    #[inline]
12391    pub fn no_move_overlap(mut self, value: bool) -> Self {
12392        self.inner.no_move_overlap = value as u32;
12393        self
12394    }
12395    #[inline]
12396    pub fn max_moved_bytes(mut self, value: u64) -> Self {
12397        self.inner.max_moved_bytes = value;
12398        self
12399    }
12400    ///Prepend a struct to the pNext chain. See [`ClusterAccelerationStructureMoveObjectsInputNV`]'s **Extended By** section for valid types.
12401    #[inline]
12402    pub fn push_next<T: ExtendsClusterAccelerationStructureMoveObjectsInputNV>(
12403        mut self,
12404        next: &'a mut T,
12405    ) -> Self {
12406        unsafe {
12407            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
12408            (*next_ptr).p_next = self.inner.p_next as *mut _;
12409            self.inner.p_next = <*mut BaseOutStructure>::cast::<
12410                core::ffi::c_void,
12411            >(next_ptr);
12412        }
12413        self
12414    }
12415}
12416impl<'a> core::ops::Deref for ClusterAccelerationStructureMoveObjectsInputNVBuilder<'a> {
12417    type Target = ClusterAccelerationStructureMoveObjectsInputNV;
12418    #[inline]
12419    fn deref(&self) -> &Self::Target {
12420        &self.inner
12421    }
12422}
12423impl<'a> core::ops::DerefMut
12424for ClusterAccelerationStructureMoveObjectsInputNVBuilder<'a> {
12425    #[inline]
12426    fn deref_mut(&mut self) -> &mut Self::Target {
12427        &mut self.inner
12428    }
12429}
12430///Builder for [`ClusterAccelerationStructureInputInfoNV`] with lifetime-tied pNext safety.
12431pub struct ClusterAccelerationStructureInputInfoNVBuilder<'a> {
12432    inner: ClusterAccelerationStructureInputInfoNV,
12433    _marker: core::marker::PhantomData<&'a ()>,
12434}
12435impl ClusterAccelerationStructureInputInfoNV {
12436    /// Start building this struct; `s_type` is already set to the correct variant.
12437    #[inline]
12438    pub fn builder<'a>() -> ClusterAccelerationStructureInputInfoNVBuilder<'a> {
12439        ClusterAccelerationStructureInputInfoNVBuilder {
12440            inner: ClusterAccelerationStructureInputInfoNV {
12441                s_type: StructureType::from_raw(1000569005i32),
12442                ..Default::default()
12443            },
12444            _marker: core::marker::PhantomData,
12445        }
12446    }
12447}
12448impl<'a> ClusterAccelerationStructureInputInfoNVBuilder<'a> {
12449    #[inline]
12450    pub fn max_acceleration_structure_count(mut self, value: u32) -> Self {
12451        self.inner.max_acceleration_structure_count = value;
12452        self
12453    }
12454    #[inline]
12455    pub fn flags(mut self, value: BuildAccelerationStructureFlagsKHR) -> Self {
12456        self.inner.flags = value;
12457        self
12458    }
12459    #[inline]
12460    pub fn op_type(mut self, value: ClusterAccelerationStructureOpTypeNV) -> Self {
12461        self.inner.op_type = value;
12462        self
12463    }
12464    #[inline]
12465    pub fn op_mode(mut self, value: ClusterAccelerationStructureOpModeNV) -> Self {
12466        self.inner.op_mode = value;
12467        self
12468    }
12469    #[inline]
12470    pub fn op_input(mut self, value: ClusterAccelerationStructureOpInputNV) -> Self {
12471        self.inner.op_input = value;
12472        self
12473    }
12474    ///Prepend a struct to the pNext chain. See [`ClusterAccelerationStructureInputInfoNV`]'s **Extended By** section for valid types.
12475    #[inline]
12476    pub fn push_next<T: ExtendsClusterAccelerationStructureInputInfoNV>(
12477        mut self,
12478        next: &'a mut T,
12479    ) -> Self {
12480        unsafe {
12481            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
12482            (*next_ptr).p_next = self.inner.p_next as *mut _;
12483            self.inner.p_next = <*mut BaseOutStructure>::cast::<
12484                core::ffi::c_void,
12485            >(next_ptr);
12486        }
12487        self
12488    }
12489}
12490impl<'a> core::ops::Deref for ClusterAccelerationStructureInputInfoNVBuilder<'a> {
12491    type Target = ClusterAccelerationStructureInputInfoNV;
12492    #[inline]
12493    fn deref(&self) -> &Self::Target {
12494        &self.inner
12495    }
12496}
12497impl<'a> core::ops::DerefMut for ClusterAccelerationStructureInputInfoNVBuilder<'a> {
12498    #[inline]
12499    fn deref_mut(&mut self) -> &mut Self::Target {
12500        &mut self.inner
12501    }
12502}
12503///Builder for [`ClusterAccelerationStructureCommandsInfoNV`] with lifetime-tied pNext safety.
12504pub struct ClusterAccelerationStructureCommandsInfoNVBuilder<'a> {
12505    inner: ClusterAccelerationStructureCommandsInfoNV,
12506    _marker: core::marker::PhantomData<&'a ()>,
12507}
12508impl ClusterAccelerationStructureCommandsInfoNV {
12509    /// Start building this struct; `s_type` is already set to the correct variant.
12510    #[inline]
12511    pub fn builder<'a>() -> ClusterAccelerationStructureCommandsInfoNVBuilder<'a> {
12512        ClusterAccelerationStructureCommandsInfoNVBuilder {
12513            inner: ClusterAccelerationStructureCommandsInfoNV {
12514                s_type: StructureType::from_raw(1000569006i32),
12515                ..Default::default()
12516            },
12517            _marker: core::marker::PhantomData,
12518        }
12519    }
12520}
12521impl<'a> ClusterAccelerationStructureCommandsInfoNVBuilder<'a> {
12522    #[inline]
12523    pub fn input(mut self, value: ClusterAccelerationStructureInputInfoNV) -> Self {
12524        self.inner.input = value;
12525        self
12526    }
12527    #[inline]
12528    pub fn dst_implicit_data(mut self, value: u64) -> Self {
12529        self.inner.dst_implicit_data = value;
12530        self
12531    }
12532    #[inline]
12533    pub fn scratch_data(mut self, value: u64) -> Self {
12534        self.inner.scratch_data = value;
12535        self
12536    }
12537    #[inline]
12538    pub fn dst_addresses_array(mut self, value: StridedDeviceAddressRegionKHR) -> Self {
12539        self.inner.dst_addresses_array = value;
12540        self
12541    }
12542    #[inline]
12543    pub fn dst_sizes_array(mut self, value: StridedDeviceAddressRegionKHR) -> Self {
12544        self.inner.dst_sizes_array = value;
12545        self
12546    }
12547    #[inline]
12548    pub fn src_infos_array(mut self, value: StridedDeviceAddressRegionKHR) -> Self {
12549        self.inner.src_infos_array = value;
12550        self
12551    }
12552    #[inline]
12553    pub fn src_infos_count(mut self, value: u64) -> Self {
12554        self.inner.src_infos_count = value;
12555        self
12556    }
12557    #[inline]
12558    pub fn address_resolution_flags(
12559        mut self,
12560        value: ClusterAccelerationStructureAddressResolutionFlagsNV,
12561    ) -> Self {
12562        self.inner.address_resolution_flags = value;
12563        self
12564    }
12565    ///Prepend a struct to the pNext chain. See [`ClusterAccelerationStructureCommandsInfoNV`]'s **Extended By** section for valid types.
12566    #[inline]
12567    pub fn push_next<T: ExtendsClusterAccelerationStructureCommandsInfoNV>(
12568        mut self,
12569        next: &'a mut T,
12570    ) -> Self {
12571        unsafe {
12572            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
12573            (*next_ptr).p_next = self.inner.p_next as *mut _;
12574            self.inner.p_next = <*mut BaseOutStructure>::cast::<
12575                core::ffi::c_void,
12576            >(next_ptr);
12577        }
12578        self
12579    }
12580}
12581impl<'a> core::ops::Deref for ClusterAccelerationStructureCommandsInfoNVBuilder<'a> {
12582    type Target = ClusterAccelerationStructureCommandsInfoNV;
12583    #[inline]
12584    fn deref(&self) -> &Self::Target {
12585        &self.inner
12586    }
12587}
12588impl<'a> core::ops::DerefMut for ClusterAccelerationStructureCommandsInfoNVBuilder<'a> {
12589    #[inline]
12590    fn deref_mut(&mut self) -> &mut Self::Target {
12591        &mut self.inner
12592    }
12593}
12594///Builder for [`PhysicalDeviceMultiDrawPropertiesEXT`] with lifetime-tied pNext safety.
12595pub struct PhysicalDeviceMultiDrawPropertiesEXTBuilder<'a> {
12596    inner: PhysicalDeviceMultiDrawPropertiesEXT,
12597    _marker: core::marker::PhantomData<&'a ()>,
12598}
12599impl PhysicalDeviceMultiDrawPropertiesEXT {
12600    /// Start building this struct; `s_type` is already set to the correct variant.
12601    #[inline]
12602    pub fn builder<'a>() -> PhysicalDeviceMultiDrawPropertiesEXTBuilder<'a> {
12603        PhysicalDeviceMultiDrawPropertiesEXTBuilder {
12604            inner: PhysicalDeviceMultiDrawPropertiesEXT {
12605                s_type: StructureType::from_raw(1000392001i32),
12606                ..Default::default()
12607            },
12608            _marker: core::marker::PhantomData,
12609        }
12610    }
12611}
12612impl<'a> PhysicalDeviceMultiDrawPropertiesEXTBuilder<'a> {
12613    #[inline]
12614    pub fn max_multi_draw_count(mut self, value: u32) -> Self {
12615        self.inner.max_multi_draw_count = value;
12616        self
12617    }
12618}
12619impl<'a> core::ops::Deref for PhysicalDeviceMultiDrawPropertiesEXTBuilder<'a> {
12620    type Target = PhysicalDeviceMultiDrawPropertiesEXT;
12621    #[inline]
12622    fn deref(&self) -> &Self::Target {
12623        &self.inner
12624    }
12625}
12626impl<'a> core::ops::DerefMut for PhysicalDeviceMultiDrawPropertiesEXTBuilder<'a> {
12627    #[inline]
12628    fn deref_mut(&mut self) -> &mut Self::Target {
12629        &mut self.inner
12630    }
12631}
12632///Builder for [`GraphicsShaderGroupCreateInfoNV`] with lifetime-tied pNext safety.
12633pub struct GraphicsShaderGroupCreateInfoNVBuilder<'a> {
12634    inner: GraphicsShaderGroupCreateInfoNV,
12635    _marker: core::marker::PhantomData<&'a ()>,
12636}
12637impl GraphicsShaderGroupCreateInfoNV {
12638    /// Start building this struct; `s_type` is already set to the correct variant.
12639    #[inline]
12640    pub fn builder<'a>() -> GraphicsShaderGroupCreateInfoNVBuilder<'a> {
12641        GraphicsShaderGroupCreateInfoNVBuilder {
12642            inner: GraphicsShaderGroupCreateInfoNV {
12643                s_type: StructureType::from_raw(1000277001i32),
12644                ..Default::default()
12645            },
12646            _marker: core::marker::PhantomData,
12647        }
12648    }
12649}
12650impl<'a> GraphicsShaderGroupCreateInfoNVBuilder<'a> {
12651    #[inline]
12652    pub fn stages(mut self, slice: &'a [PipelineShaderStageCreateInfo]) -> Self {
12653        self.inner.stage_count = slice.len() as u32;
12654        self.inner.p_stages = slice.as_ptr();
12655        self
12656    }
12657    #[inline]
12658    pub fn vertex_input_state(
12659        mut self,
12660        value: &'a PipelineVertexInputStateCreateInfo,
12661    ) -> Self {
12662        self.inner.p_vertex_input_state = value;
12663        self
12664    }
12665    #[inline]
12666    pub fn tessellation_state(
12667        mut self,
12668        value: &'a PipelineTessellationStateCreateInfo,
12669    ) -> Self {
12670        self.inner.p_tessellation_state = value;
12671        self
12672    }
12673    ///Prepend a struct to the pNext chain. See [`GraphicsShaderGroupCreateInfoNV`]'s **Extended By** section for valid types.
12674    #[inline]
12675    pub fn push_next<T: ExtendsGraphicsShaderGroupCreateInfoNV>(
12676        mut self,
12677        next: &'a mut T,
12678    ) -> Self {
12679        unsafe {
12680            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
12681            (*next_ptr).p_next = self.inner.p_next as *mut _;
12682            self.inner.p_next = <*mut BaseOutStructure>::cast::<
12683                core::ffi::c_void,
12684            >(next_ptr) as *const _;
12685        }
12686        self
12687    }
12688}
12689impl<'a> core::ops::Deref for GraphicsShaderGroupCreateInfoNVBuilder<'a> {
12690    type Target = GraphicsShaderGroupCreateInfoNV;
12691    #[inline]
12692    fn deref(&self) -> &Self::Target {
12693        &self.inner
12694    }
12695}
12696impl<'a> core::ops::DerefMut for GraphicsShaderGroupCreateInfoNVBuilder<'a> {
12697    #[inline]
12698    fn deref_mut(&mut self) -> &mut Self::Target {
12699        &mut self.inner
12700    }
12701}
12702///Builder for [`GraphicsPipelineShaderGroupsCreateInfoNV`] with lifetime-tied pNext safety.
12703pub struct GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
12704    inner: GraphicsPipelineShaderGroupsCreateInfoNV,
12705    _marker: core::marker::PhantomData<&'a ()>,
12706}
12707impl GraphicsPipelineShaderGroupsCreateInfoNV {
12708    /// Start building this struct; `s_type` is already set to the correct variant.
12709    #[inline]
12710    pub fn builder<'a>() -> GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
12711        GraphicsPipelineShaderGroupsCreateInfoNVBuilder {
12712            inner: GraphicsPipelineShaderGroupsCreateInfoNV {
12713                s_type: StructureType::from_raw(1000277002i32),
12714                ..Default::default()
12715            },
12716            _marker: core::marker::PhantomData,
12717        }
12718    }
12719}
12720impl<'a> GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
12721    #[inline]
12722    pub fn groups(mut self, slice: &'a [GraphicsShaderGroupCreateInfoNV]) -> Self {
12723        self.inner.group_count = slice.len() as u32;
12724        self.inner.p_groups = slice.as_ptr();
12725        self
12726    }
12727    #[inline]
12728    pub fn pipelines(mut self, slice: &'a [Pipeline]) -> Self {
12729        self.inner.pipeline_count = slice.len() as u32;
12730        self.inner.p_pipelines = slice.as_ptr();
12731        self
12732    }
12733    ///Prepend a struct to the pNext chain. See [`GraphicsPipelineShaderGroupsCreateInfoNV`]'s **Extended By** section for valid types.
12734    #[inline]
12735    pub fn push_next<T: ExtendsGraphicsPipelineShaderGroupsCreateInfoNV>(
12736        mut self,
12737        next: &'a mut T,
12738    ) -> Self {
12739        unsafe {
12740            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
12741            (*next_ptr).p_next = self.inner.p_next as *mut _;
12742            self.inner.p_next = <*mut BaseOutStructure>::cast::<
12743                core::ffi::c_void,
12744            >(next_ptr) as *const _;
12745        }
12746        self
12747    }
12748}
12749impl<'a> core::ops::Deref for GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
12750    type Target = GraphicsPipelineShaderGroupsCreateInfoNV;
12751    #[inline]
12752    fn deref(&self) -> &Self::Target {
12753        &self.inner
12754    }
12755}
12756impl<'a> core::ops::DerefMut for GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
12757    #[inline]
12758    fn deref_mut(&mut self) -> &mut Self::Target {
12759        &mut self.inner
12760    }
12761}
12762///Builder for [`BindShaderGroupIndirectCommandNV`].
12763pub struct BindShaderGroupIndirectCommandNVBuilder {
12764    inner: BindShaderGroupIndirectCommandNV,
12765}
12766impl BindShaderGroupIndirectCommandNV {
12767    /// Start building this struct.
12768    #[inline]
12769    pub fn builder() -> BindShaderGroupIndirectCommandNVBuilder {
12770        BindShaderGroupIndirectCommandNVBuilder {
12771            inner: BindShaderGroupIndirectCommandNV {
12772                ..Default::default()
12773            },
12774        }
12775    }
12776}
12777impl BindShaderGroupIndirectCommandNVBuilder {
12778    #[inline]
12779    pub fn group_index(mut self, value: u32) -> Self {
12780        self.inner.group_index = value;
12781        self
12782    }
12783}
12784impl core::ops::Deref for BindShaderGroupIndirectCommandNVBuilder {
12785    type Target = BindShaderGroupIndirectCommandNV;
12786    #[inline]
12787    fn deref(&self) -> &Self::Target {
12788        &self.inner
12789    }
12790}
12791impl core::ops::DerefMut for BindShaderGroupIndirectCommandNVBuilder {
12792    #[inline]
12793    fn deref_mut(&mut self) -> &mut Self::Target {
12794        &mut self.inner
12795    }
12796}
12797///Builder for [`BindIndexBufferIndirectCommandNV`].
12798pub struct BindIndexBufferIndirectCommandNVBuilder {
12799    inner: BindIndexBufferIndirectCommandNV,
12800}
12801impl BindIndexBufferIndirectCommandNV {
12802    /// Start building this struct.
12803    #[inline]
12804    pub fn builder() -> BindIndexBufferIndirectCommandNVBuilder {
12805        BindIndexBufferIndirectCommandNVBuilder {
12806            inner: BindIndexBufferIndirectCommandNV {
12807                ..Default::default()
12808            },
12809        }
12810    }
12811}
12812impl BindIndexBufferIndirectCommandNVBuilder {
12813    #[inline]
12814    pub fn buffer_address(mut self, value: u64) -> Self {
12815        self.inner.buffer_address = value;
12816        self
12817    }
12818    #[inline]
12819    pub fn size(mut self, value: u32) -> Self {
12820        self.inner.size = value;
12821        self
12822    }
12823    #[inline]
12824    pub fn index_type(mut self, value: IndexType) -> Self {
12825        self.inner.index_type = value;
12826        self
12827    }
12828}
12829impl core::ops::Deref for BindIndexBufferIndirectCommandNVBuilder {
12830    type Target = BindIndexBufferIndirectCommandNV;
12831    #[inline]
12832    fn deref(&self) -> &Self::Target {
12833        &self.inner
12834    }
12835}
12836impl core::ops::DerefMut for BindIndexBufferIndirectCommandNVBuilder {
12837    #[inline]
12838    fn deref_mut(&mut self) -> &mut Self::Target {
12839        &mut self.inner
12840    }
12841}
12842///Builder for [`BindVertexBufferIndirectCommandNV`].
12843pub struct BindVertexBufferIndirectCommandNVBuilder {
12844    inner: BindVertexBufferIndirectCommandNV,
12845}
12846impl BindVertexBufferIndirectCommandNV {
12847    /// Start building this struct.
12848    #[inline]
12849    pub fn builder() -> BindVertexBufferIndirectCommandNVBuilder {
12850        BindVertexBufferIndirectCommandNVBuilder {
12851            inner: BindVertexBufferIndirectCommandNV {
12852                ..Default::default()
12853            },
12854        }
12855    }
12856}
12857impl BindVertexBufferIndirectCommandNVBuilder {
12858    #[inline]
12859    pub fn buffer_address(mut self, value: u64) -> Self {
12860        self.inner.buffer_address = value;
12861        self
12862    }
12863    #[inline]
12864    pub fn size(mut self, value: u32) -> Self {
12865        self.inner.size = value;
12866        self
12867    }
12868    #[inline]
12869    pub fn stride(mut self, value: u32) -> Self {
12870        self.inner.stride = value;
12871        self
12872    }
12873}
12874impl core::ops::Deref for BindVertexBufferIndirectCommandNVBuilder {
12875    type Target = BindVertexBufferIndirectCommandNV;
12876    #[inline]
12877    fn deref(&self) -> &Self::Target {
12878        &self.inner
12879    }
12880}
12881impl core::ops::DerefMut for BindVertexBufferIndirectCommandNVBuilder {
12882    #[inline]
12883    fn deref_mut(&mut self) -> &mut Self::Target {
12884        &mut self.inner
12885    }
12886}
12887///Builder for [`SetStateFlagsIndirectCommandNV`].
12888pub struct SetStateFlagsIndirectCommandNVBuilder {
12889    inner: SetStateFlagsIndirectCommandNV,
12890}
12891impl SetStateFlagsIndirectCommandNV {
12892    /// Start building this struct.
12893    #[inline]
12894    pub fn builder() -> SetStateFlagsIndirectCommandNVBuilder {
12895        SetStateFlagsIndirectCommandNVBuilder {
12896            inner: SetStateFlagsIndirectCommandNV {
12897                ..Default::default()
12898            },
12899        }
12900    }
12901}
12902impl SetStateFlagsIndirectCommandNVBuilder {
12903    #[inline]
12904    pub fn data(mut self, value: u32) -> Self {
12905        self.inner.data = value;
12906        self
12907    }
12908}
12909impl core::ops::Deref for SetStateFlagsIndirectCommandNVBuilder {
12910    type Target = SetStateFlagsIndirectCommandNV;
12911    #[inline]
12912    fn deref(&self) -> &Self::Target {
12913        &self.inner
12914    }
12915}
12916impl core::ops::DerefMut for SetStateFlagsIndirectCommandNVBuilder {
12917    #[inline]
12918    fn deref_mut(&mut self) -> &mut Self::Target {
12919        &mut self.inner
12920    }
12921}
12922///Builder for [`IndirectCommandsStreamNV`].
12923pub struct IndirectCommandsStreamNVBuilder {
12924    inner: IndirectCommandsStreamNV,
12925}
12926impl IndirectCommandsStreamNV {
12927    /// Start building this struct.
12928    #[inline]
12929    pub fn builder() -> IndirectCommandsStreamNVBuilder {
12930        IndirectCommandsStreamNVBuilder {
12931            inner: IndirectCommandsStreamNV {
12932                ..Default::default()
12933            },
12934        }
12935    }
12936}
12937impl IndirectCommandsStreamNVBuilder {
12938    #[inline]
12939    pub fn buffer(mut self, value: Buffer) -> Self {
12940        self.inner.buffer = value;
12941        self
12942    }
12943    #[inline]
12944    pub fn offset(mut self, value: u64) -> Self {
12945        self.inner.offset = value;
12946        self
12947    }
12948}
12949impl core::ops::Deref for IndirectCommandsStreamNVBuilder {
12950    type Target = IndirectCommandsStreamNV;
12951    #[inline]
12952    fn deref(&self) -> &Self::Target {
12953        &self.inner
12954    }
12955}
12956impl core::ops::DerefMut for IndirectCommandsStreamNVBuilder {
12957    #[inline]
12958    fn deref_mut(&mut self) -> &mut Self::Target {
12959        &mut self.inner
12960    }
12961}
12962///Builder for [`IndirectCommandsLayoutTokenNV`] with lifetime-tied pNext safety.
12963pub struct IndirectCommandsLayoutTokenNVBuilder<'a> {
12964    inner: IndirectCommandsLayoutTokenNV,
12965    _marker: core::marker::PhantomData<&'a ()>,
12966}
12967impl IndirectCommandsLayoutTokenNV {
12968    /// Start building this struct; `s_type` is already set to the correct variant.
12969    #[inline]
12970    pub fn builder<'a>() -> IndirectCommandsLayoutTokenNVBuilder<'a> {
12971        IndirectCommandsLayoutTokenNVBuilder {
12972            inner: IndirectCommandsLayoutTokenNV {
12973                s_type: StructureType::from_raw(1000277003i32),
12974                ..Default::default()
12975            },
12976            _marker: core::marker::PhantomData,
12977        }
12978    }
12979}
12980impl<'a> IndirectCommandsLayoutTokenNVBuilder<'a> {
12981    #[inline]
12982    pub fn token_type(mut self, value: IndirectCommandsTokenTypeNV) -> Self {
12983        self.inner.token_type = value;
12984        self
12985    }
12986    #[inline]
12987    pub fn stream(mut self, value: u32) -> Self {
12988        self.inner.stream = value;
12989        self
12990    }
12991    #[inline]
12992    pub fn offset(mut self, value: u32) -> Self {
12993        self.inner.offset = value;
12994        self
12995    }
12996    #[inline]
12997    pub fn vertex_binding_unit(mut self, value: u32) -> Self {
12998        self.inner.vertex_binding_unit = value;
12999        self
13000    }
13001    #[inline]
13002    pub fn vertex_dynamic_stride(mut self, value: bool) -> Self {
13003        self.inner.vertex_dynamic_stride = value as u32;
13004        self
13005    }
13006    #[inline]
13007    pub fn pushconstant_pipeline_layout(mut self, value: PipelineLayout) -> Self {
13008        self.inner.pushconstant_pipeline_layout = value;
13009        self
13010    }
13011    #[inline]
13012    pub fn pushconstant_shader_stage_flags(mut self, value: ShaderStageFlags) -> Self {
13013        self.inner.pushconstant_shader_stage_flags = value;
13014        self
13015    }
13016    #[inline]
13017    pub fn pushconstant_offset(mut self, value: u32) -> Self {
13018        self.inner.pushconstant_offset = value;
13019        self
13020    }
13021    #[inline]
13022    pub fn pushconstant_size(mut self, value: u32) -> Self {
13023        self.inner.pushconstant_size = value;
13024        self
13025    }
13026    #[inline]
13027    pub fn indirect_state_flags(mut self, value: IndirectStateFlagsNV) -> Self {
13028        self.inner.indirect_state_flags = value;
13029        self
13030    }
13031    #[inline]
13032    pub fn index_types(mut self, slice: &'a [IndexType]) -> Self {
13033        self.inner.index_type_count = slice.len() as u32;
13034        self.inner.p_index_types = slice.as_ptr();
13035        self
13036    }
13037    #[inline]
13038    pub fn index_type_values(mut self, slice: &'a [u32]) -> Self {
13039        self.inner.index_type_count = slice.len() as u32;
13040        self.inner.p_index_type_values = slice.as_ptr();
13041        self
13042    }
13043    ///Prepend a struct to the pNext chain. See [`IndirectCommandsLayoutTokenNV`]'s **Extended By** section for valid types.
13044    #[inline]
13045    pub fn push_next<T: ExtendsIndirectCommandsLayoutTokenNV>(
13046        mut self,
13047        next: &'a mut T,
13048    ) -> Self {
13049        unsafe {
13050            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
13051            (*next_ptr).p_next = self.inner.p_next as *mut _;
13052            self.inner.p_next = <*mut BaseOutStructure>::cast::<
13053                core::ffi::c_void,
13054            >(next_ptr) as *const _;
13055        }
13056        self
13057    }
13058}
13059impl<'a> core::ops::Deref for IndirectCommandsLayoutTokenNVBuilder<'a> {
13060    type Target = IndirectCommandsLayoutTokenNV;
13061    #[inline]
13062    fn deref(&self) -> &Self::Target {
13063        &self.inner
13064    }
13065}
13066impl<'a> core::ops::DerefMut for IndirectCommandsLayoutTokenNVBuilder<'a> {
13067    #[inline]
13068    fn deref_mut(&mut self) -> &mut Self::Target {
13069        &mut self.inner
13070    }
13071}
13072///Builder for [`IndirectCommandsLayoutCreateInfoNV`] with lifetime-tied pNext safety.
13073pub struct IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
13074    inner: IndirectCommandsLayoutCreateInfoNV,
13075    _marker: core::marker::PhantomData<&'a ()>,
13076}
13077impl IndirectCommandsLayoutCreateInfoNV {
13078    /// Start building this struct; `s_type` is already set to the correct variant.
13079    #[inline]
13080    pub fn builder<'a>() -> IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
13081        IndirectCommandsLayoutCreateInfoNVBuilder {
13082            inner: IndirectCommandsLayoutCreateInfoNV {
13083                s_type: StructureType::from_raw(1000277004i32),
13084                ..Default::default()
13085            },
13086            _marker: core::marker::PhantomData,
13087        }
13088    }
13089}
13090impl<'a> IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
13091    #[inline]
13092    pub fn flags(mut self, value: IndirectCommandsLayoutUsageFlagsNV) -> Self {
13093        self.inner.flags = value;
13094        self
13095    }
13096    #[inline]
13097    pub fn pipeline_bind_point(mut self, value: PipelineBindPoint) -> Self {
13098        self.inner.pipeline_bind_point = value;
13099        self
13100    }
13101    #[inline]
13102    pub fn tokens(mut self, slice: &'a [IndirectCommandsLayoutTokenNV]) -> Self {
13103        self.inner.token_count = slice.len() as u32;
13104        self.inner.p_tokens = slice.as_ptr();
13105        self
13106    }
13107    #[inline]
13108    pub fn stream_strides(mut self, slice: &'a [u32]) -> Self {
13109        self.inner.stream_count = slice.len() as u32;
13110        self.inner.p_stream_strides = slice.as_ptr();
13111        self
13112    }
13113    ///Prepend a struct to the pNext chain. See [`IndirectCommandsLayoutCreateInfoNV`]'s **Extended By** section for valid types.
13114    #[inline]
13115    pub fn push_next<T: ExtendsIndirectCommandsLayoutCreateInfoNV>(
13116        mut self,
13117        next: &'a mut T,
13118    ) -> Self {
13119        unsafe {
13120            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
13121            (*next_ptr).p_next = self.inner.p_next as *mut _;
13122            self.inner.p_next = <*mut BaseOutStructure>::cast::<
13123                core::ffi::c_void,
13124            >(next_ptr) as *const _;
13125        }
13126        self
13127    }
13128}
13129impl<'a> core::ops::Deref for IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
13130    type Target = IndirectCommandsLayoutCreateInfoNV;
13131    #[inline]
13132    fn deref(&self) -> &Self::Target {
13133        &self.inner
13134    }
13135}
13136impl<'a> core::ops::DerefMut for IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
13137    #[inline]
13138    fn deref_mut(&mut self) -> &mut Self::Target {
13139        &mut self.inner
13140    }
13141}
13142///Builder for [`GeneratedCommandsInfoNV`] with lifetime-tied pNext safety.
13143pub struct GeneratedCommandsInfoNVBuilder<'a> {
13144    inner: GeneratedCommandsInfoNV,
13145    _marker: core::marker::PhantomData<&'a ()>,
13146}
13147impl GeneratedCommandsInfoNV {
13148    /// Start building this struct; `s_type` is already set to the correct variant.
13149    #[inline]
13150    pub fn builder<'a>() -> GeneratedCommandsInfoNVBuilder<'a> {
13151        GeneratedCommandsInfoNVBuilder {
13152            inner: GeneratedCommandsInfoNV {
13153                s_type: StructureType::from_raw(1000277005i32),
13154                ..Default::default()
13155            },
13156            _marker: core::marker::PhantomData,
13157        }
13158    }
13159}
13160impl<'a> GeneratedCommandsInfoNVBuilder<'a> {
13161    #[inline]
13162    pub fn pipeline_bind_point(mut self, value: PipelineBindPoint) -> Self {
13163        self.inner.pipeline_bind_point = value;
13164        self
13165    }
13166    #[inline]
13167    pub fn pipeline(mut self, value: Pipeline) -> Self {
13168        self.inner.pipeline = value;
13169        self
13170    }
13171    #[inline]
13172    pub fn indirect_commands_layout(mut self, value: IndirectCommandsLayoutNV) -> Self {
13173        self.inner.indirect_commands_layout = value;
13174        self
13175    }
13176    #[inline]
13177    pub fn streams(mut self, slice: &'a [IndirectCommandsStreamNV]) -> Self {
13178        self.inner.stream_count = slice.len() as u32;
13179        self.inner.p_streams = slice.as_ptr();
13180        self
13181    }
13182    #[inline]
13183    pub fn sequences_count(mut self, value: u32) -> Self {
13184        self.inner.sequences_count = value;
13185        self
13186    }
13187    #[inline]
13188    pub fn preprocess_buffer(mut self, value: Buffer) -> Self {
13189        self.inner.preprocess_buffer = value;
13190        self
13191    }
13192    #[inline]
13193    pub fn preprocess_offset(mut self, value: u64) -> Self {
13194        self.inner.preprocess_offset = value;
13195        self
13196    }
13197    #[inline]
13198    pub fn preprocess_size(mut self, value: u64) -> Self {
13199        self.inner.preprocess_size = value;
13200        self
13201    }
13202    #[inline]
13203    pub fn sequences_count_buffer(mut self, value: Buffer) -> Self {
13204        self.inner.sequences_count_buffer = value;
13205        self
13206    }
13207    #[inline]
13208    pub fn sequences_count_offset(mut self, value: u64) -> Self {
13209        self.inner.sequences_count_offset = value;
13210        self
13211    }
13212    #[inline]
13213    pub fn sequences_index_buffer(mut self, value: Buffer) -> Self {
13214        self.inner.sequences_index_buffer = value;
13215        self
13216    }
13217    #[inline]
13218    pub fn sequences_index_offset(mut self, value: u64) -> Self {
13219        self.inner.sequences_index_offset = value;
13220        self
13221    }
13222    ///Prepend a struct to the pNext chain. See [`GeneratedCommandsInfoNV`]'s **Extended By** section for valid types.
13223    #[inline]
13224    pub fn push_next<T: ExtendsGeneratedCommandsInfoNV>(
13225        mut self,
13226        next: &'a mut T,
13227    ) -> Self {
13228        unsafe {
13229            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
13230            (*next_ptr).p_next = self.inner.p_next as *mut _;
13231            self.inner.p_next = <*mut BaseOutStructure>::cast::<
13232                core::ffi::c_void,
13233            >(next_ptr) as *const _;
13234        }
13235        self
13236    }
13237}
13238impl<'a> core::ops::Deref for GeneratedCommandsInfoNVBuilder<'a> {
13239    type Target = GeneratedCommandsInfoNV;
13240    #[inline]
13241    fn deref(&self) -> &Self::Target {
13242        &self.inner
13243    }
13244}
13245impl<'a> core::ops::DerefMut for GeneratedCommandsInfoNVBuilder<'a> {
13246    #[inline]
13247    fn deref_mut(&mut self) -> &mut Self::Target {
13248        &mut self.inner
13249    }
13250}
13251///Builder for [`GeneratedCommandsMemoryRequirementsInfoNV`] with lifetime-tied pNext safety.
13252pub struct GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
13253    inner: GeneratedCommandsMemoryRequirementsInfoNV,
13254    _marker: core::marker::PhantomData<&'a ()>,
13255}
13256impl GeneratedCommandsMemoryRequirementsInfoNV {
13257    /// Start building this struct; `s_type` is already set to the correct variant.
13258    #[inline]
13259    pub fn builder<'a>() -> GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
13260        GeneratedCommandsMemoryRequirementsInfoNVBuilder {
13261            inner: GeneratedCommandsMemoryRequirementsInfoNV {
13262                s_type: StructureType::from_raw(1000277006i32),
13263                ..Default::default()
13264            },
13265            _marker: core::marker::PhantomData,
13266        }
13267    }
13268}
13269impl<'a> GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
13270    #[inline]
13271    pub fn pipeline_bind_point(mut self, value: PipelineBindPoint) -> Self {
13272        self.inner.pipeline_bind_point = value;
13273        self
13274    }
13275    #[inline]
13276    pub fn pipeline(mut self, value: Pipeline) -> Self {
13277        self.inner.pipeline = value;
13278        self
13279    }
13280    #[inline]
13281    pub fn indirect_commands_layout(mut self, value: IndirectCommandsLayoutNV) -> Self {
13282        self.inner.indirect_commands_layout = value;
13283        self
13284    }
13285    #[inline]
13286    pub fn max_sequences_count(mut self, value: u32) -> Self {
13287        self.inner.max_sequences_count = value;
13288        self
13289    }
13290    ///Prepend a struct to the pNext chain. See [`GeneratedCommandsMemoryRequirementsInfoNV`]'s **Extended By** section for valid types.
13291    #[inline]
13292    pub fn push_next<T: ExtendsGeneratedCommandsMemoryRequirementsInfoNV>(
13293        mut self,
13294        next: &'a mut T,
13295    ) -> Self {
13296        unsafe {
13297            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
13298            (*next_ptr).p_next = self.inner.p_next as *mut _;
13299            self.inner.p_next = <*mut BaseOutStructure>::cast::<
13300                core::ffi::c_void,
13301            >(next_ptr) as *const _;
13302        }
13303        self
13304    }
13305}
13306impl<'a> core::ops::Deref for GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
13307    type Target = GeneratedCommandsMemoryRequirementsInfoNV;
13308    #[inline]
13309    fn deref(&self) -> &Self::Target {
13310        &self.inner
13311    }
13312}
13313impl<'a> core::ops::DerefMut for GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
13314    #[inline]
13315    fn deref_mut(&mut self) -> &mut Self::Target {
13316        &mut self.inner
13317    }
13318}
13319///Builder for [`PipelineIndirectDeviceAddressInfoNV`] with lifetime-tied pNext safety.
13320pub struct PipelineIndirectDeviceAddressInfoNVBuilder<'a> {
13321    inner: PipelineIndirectDeviceAddressInfoNV,
13322    _marker: core::marker::PhantomData<&'a ()>,
13323}
13324impl PipelineIndirectDeviceAddressInfoNV {
13325    /// Start building this struct; `s_type` is already set to the correct variant.
13326    #[inline]
13327    pub fn builder<'a>() -> PipelineIndirectDeviceAddressInfoNVBuilder<'a> {
13328        PipelineIndirectDeviceAddressInfoNVBuilder {
13329            inner: PipelineIndirectDeviceAddressInfoNV {
13330                s_type: StructureType::from_raw(1000428002i32),
13331                ..Default::default()
13332            },
13333            _marker: core::marker::PhantomData,
13334        }
13335    }
13336}
13337impl<'a> PipelineIndirectDeviceAddressInfoNVBuilder<'a> {
13338    #[inline]
13339    pub fn pipeline_bind_point(mut self, value: PipelineBindPoint) -> Self {
13340        self.inner.pipeline_bind_point = value;
13341        self
13342    }
13343    #[inline]
13344    pub fn pipeline(mut self, value: Pipeline) -> Self {
13345        self.inner.pipeline = value;
13346        self
13347    }
13348    ///Prepend a struct to the pNext chain. See [`PipelineIndirectDeviceAddressInfoNV`]'s **Extended By** section for valid types.
13349    #[inline]
13350    pub fn push_next<T: ExtendsPipelineIndirectDeviceAddressInfoNV>(
13351        mut self,
13352        next: &'a mut T,
13353    ) -> Self {
13354        unsafe {
13355            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
13356            (*next_ptr).p_next = self.inner.p_next as *mut _;
13357            self.inner.p_next = <*mut BaseOutStructure>::cast::<
13358                core::ffi::c_void,
13359            >(next_ptr) as *const _;
13360        }
13361        self
13362    }
13363}
13364impl<'a> core::ops::Deref for PipelineIndirectDeviceAddressInfoNVBuilder<'a> {
13365    type Target = PipelineIndirectDeviceAddressInfoNV;
13366    #[inline]
13367    fn deref(&self) -> &Self::Target {
13368        &self.inner
13369    }
13370}
13371impl<'a> core::ops::DerefMut for PipelineIndirectDeviceAddressInfoNVBuilder<'a> {
13372    #[inline]
13373    fn deref_mut(&mut self) -> &mut Self::Target {
13374        &mut self.inner
13375    }
13376}
13377///Builder for [`BindPipelineIndirectCommandNV`].
13378pub struct BindPipelineIndirectCommandNVBuilder {
13379    inner: BindPipelineIndirectCommandNV,
13380}
13381impl BindPipelineIndirectCommandNV {
13382    /// Start building this struct.
13383    #[inline]
13384    pub fn builder() -> BindPipelineIndirectCommandNVBuilder {
13385        BindPipelineIndirectCommandNVBuilder {
13386            inner: BindPipelineIndirectCommandNV {
13387                ..Default::default()
13388            },
13389        }
13390    }
13391}
13392impl BindPipelineIndirectCommandNVBuilder {
13393    #[inline]
13394    pub fn pipeline_address(mut self, value: u64) -> Self {
13395        self.inner.pipeline_address = value;
13396        self
13397    }
13398}
13399impl core::ops::Deref for BindPipelineIndirectCommandNVBuilder {
13400    type Target = BindPipelineIndirectCommandNV;
13401    #[inline]
13402    fn deref(&self) -> &Self::Target {
13403        &self.inner
13404    }
13405}
13406impl core::ops::DerefMut for BindPipelineIndirectCommandNVBuilder {
13407    #[inline]
13408    fn deref_mut(&mut self) -> &mut Self::Target {
13409        &mut self.inner
13410    }
13411}
13412///Builder for [`PhysicalDeviceFeatures2`] with lifetime-tied pNext safety.
13413pub struct PhysicalDeviceFeatures2Builder<'a> {
13414    inner: PhysicalDeviceFeatures2,
13415    _marker: core::marker::PhantomData<&'a ()>,
13416}
13417impl PhysicalDeviceFeatures2 {
13418    /// Start building this struct; `s_type` is already set to the correct variant.
13419    #[inline]
13420    pub fn builder<'a>() -> PhysicalDeviceFeatures2Builder<'a> {
13421        PhysicalDeviceFeatures2Builder {
13422            inner: PhysicalDeviceFeatures2 {
13423                s_type: StructureType::from_raw(1000059000i32),
13424                ..Default::default()
13425            },
13426            _marker: core::marker::PhantomData,
13427        }
13428    }
13429}
13430impl<'a> PhysicalDeviceFeatures2Builder<'a> {
13431    #[inline]
13432    pub fn features(mut self, value: PhysicalDeviceFeatures) -> Self {
13433        self.inner.features = value;
13434        self
13435    }
13436    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceFeatures2`]'s **Extended By** section for valid types.
13437    #[inline]
13438    pub fn push_next<T: ExtendsPhysicalDeviceFeatures2>(
13439        mut self,
13440        next: &'a mut T,
13441    ) -> Self {
13442        unsafe {
13443            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
13444            (*next_ptr).p_next = self.inner.p_next as *mut _;
13445            self.inner.p_next = <*mut BaseOutStructure>::cast::<
13446                core::ffi::c_void,
13447            >(next_ptr);
13448        }
13449        self
13450    }
13451}
13452impl<'a> core::ops::Deref for PhysicalDeviceFeatures2Builder<'a> {
13453    type Target = PhysicalDeviceFeatures2;
13454    #[inline]
13455    fn deref(&self) -> &Self::Target {
13456        &self.inner
13457    }
13458}
13459impl<'a> core::ops::DerefMut for PhysicalDeviceFeatures2Builder<'a> {
13460    #[inline]
13461    fn deref_mut(&mut self) -> &mut Self::Target {
13462        &mut self.inner
13463    }
13464}
13465///Builder for [`PhysicalDeviceProperties2`] with lifetime-tied pNext safety.
13466pub struct PhysicalDeviceProperties2Builder<'a> {
13467    inner: PhysicalDeviceProperties2,
13468    _marker: core::marker::PhantomData<&'a ()>,
13469}
13470impl PhysicalDeviceProperties2 {
13471    /// Start building this struct; `s_type` is already set to the correct variant.
13472    #[inline]
13473    pub fn builder<'a>() -> PhysicalDeviceProperties2Builder<'a> {
13474        PhysicalDeviceProperties2Builder {
13475            inner: PhysicalDeviceProperties2 {
13476                s_type: StructureType::from_raw(1000059001i32),
13477                ..Default::default()
13478            },
13479            _marker: core::marker::PhantomData,
13480        }
13481    }
13482}
13483impl<'a> PhysicalDeviceProperties2Builder<'a> {
13484    #[inline]
13485    pub fn properties(mut self, value: PhysicalDeviceProperties) -> Self {
13486        self.inner.properties = value;
13487        self
13488    }
13489}
13490impl<'a> core::ops::Deref for PhysicalDeviceProperties2Builder<'a> {
13491    type Target = PhysicalDeviceProperties2;
13492    #[inline]
13493    fn deref(&self) -> &Self::Target {
13494        &self.inner
13495    }
13496}
13497impl<'a> core::ops::DerefMut for PhysicalDeviceProperties2Builder<'a> {
13498    #[inline]
13499    fn deref_mut(&mut self) -> &mut Self::Target {
13500        &mut self.inner
13501    }
13502}
13503///Builder for [`FormatProperties2`] with lifetime-tied pNext safety.
13504pub struct FormatProperties2Builder<'a> {
13505    inner: FormatProperties2,
13506    _marker: core::marker::PhantomData<&'a ()>,
13507}
13508impl FormatProperties2 {
13509    /// Start building this struct; `s_type` is already set to the correct variant.
13510    #[inline]
13511    pub fn builder<'a>() -> FormatProperties2Builder<'a> {
13512        FormatProperties2Builder {
13513            inner: FormatProperties2 {
13514                s_type: StructureType::from_raw(1000059002i32),
13515                ..Default::default()
13516            },
13517            _marker: core::marker::PhantomData,
13518        }
13519    }
13520}
13521impl<'a> FormatProperties2Builder<'a> {
13522    #[inline]
13523    pub fn format_properties(mut self, value: FormatProperties) -> Self {
13524        self.inner.format_properties = value;
13525        self
13526    }
13527}
13528impl<'a> core::ops::Deref for FormatProperties2Builder<'a> {
13529    type Target = FormatProperties2;
13530    #[inline]
13531    fn deref(&self) -> &Self::Target {
13532        &self.inner
13533    }
13534}
13535impl<'a> core::ops::DerefMut for FormatProperties2Builder<'a> {
13536    #[inline]
13537    fn deref_mut(&mut self) -> &mut Self::Target {
13538        &mut self.inner
13539    }
13540}
13541///Builder for [`ImageFormatProperties2`] with lifetime-tied pNext safety.
13542pub struct ImageFormatProperties2Builder<'a> {
13543    inner: ImageFormatProperties2,
13544    _marker: core::marker::PhantomData<&'a ()>,
13545}
13546impl ImageFormatProperties2 {
13547    /// Start building this struct; `s_type` is already set to the correct variant.
13548    #[inline]
13549    pub fn builder<'a>() -> ImageFormatProperties2Builder<'a> {
13550        ImageFormatProperties2Builder {
13551            inner: ImageFormatProperties2 {
13552                s_type: StructureType::from_raw(1000059003i32),
13553                ..Default::default()
13554            },
13555            _marker: core::marker::PhantomData,
13556        }
13557    }
13558}
13559impl<'a> ImageFormatProperties2Builder<'a> {
13560    #[inline]
13561    pub fn image_format_properties(mut self, value: ImageFormatProperties) -> Self {
13562        self.inner.image_format_properties = value;
13563        self
13564    }
13565}
13566impl<'a> core::ops::Deref for ImageFormatProperties2Builder<'a> {
13567    type Target = ImageFormatProperties2;
13568    #[inline]
13569    fn deref(&self) -> &Self::Target {
13570        &self.inner
13571    }
13572}
13573impl<'a> core::ops::DerefMut for ImageFormatProperties2Builder<'a> {
13574    #[inline]
13575    fn deref_mut(&mut self) -> &mut Self::Target {
13576        &mut self.inner
13577    }
13578}
13579///Builder for [`PhysicalDeviceImageFormatInfo2`] with lifetime-tied pNext safety.
13580pub struct PhysicalDeviceImageFormatInfo2Builder<'a> {
13581    inner: PhysicalDeviceImageFormatInfo2,
13582    _marker: core::marker::PhantomData<&'a ()>,
13583}
13584impl PhysicalDeviceImageFormatInfo2 {
13585    /// Start building this struct; `s_type` is already set to the correct variant.
13586    #[inline]
13587    pub fn builder<'a>() -> PhysicalDeviceImageFormatInfo2Builder<'a> {
13588        PhysicalDeviceImageFormatInfo2Builder {
13589            inner: PhysicalDeviceImageFormatInfo2 {
13590                s_type: StructureType::from_raw(1000059004i32),
13591                ..Default::default()
13592            },
13593            _marker: core::marker::PhantomData,
13594        }
13595    }
13596}
13597impl<'a> PhysicalDeviceImageFormatInfo2Builder<'a> {
13598    #[inline]
13599    pub fn format(mut self, value: Format) -> Self {
13600        self.inner.format = value;
13601        self
13602    }
13603    #[inline]
13604    pub fn r#type(mut self, value: ImageType) -> Self {
13605        self.inner.r#type = value;
13606        self
13607    }
13608    #[inline]
13609    pub fn tiling(mut self, value: ImageTiling) -> Self {
13610        self.inner.tiling = value;
13611        self
13612    }
13613    #[inline]
13614    pub fn usage(mut self, value: ImageUsageFlags) -> Self {
13615        self.inner.usage = value;
13616        self
13617    }
13618    #[inline]
13619    pub fn flags(mut self, value: ImageCreateFlags) -> Self {
13620        self.inner.flags = value;
13621        self
13622    }
13623    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceImageFormatInfo2`]'s **Extended By** section for valid types.
13624    #[inline]
13625    pub fn push_next<T: ExtendsPhysicalDeviceImageFormatInfo2>(
13626        mut self,
13627        next: &'a mut T,
13628    ) -> Self {
13629        unsafe {
13630            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
13631            (*next_ptr).p_next = self.inner.p_next as *mut _;
13632            self.inner.p_next = <*mut BaseOutStructure>::cast::<
13633                core::ffi::c_void,
13634            >(next_ptr) as *const _;
13635        }
13636        self
13637    }
13638}
13639impl<'a> core::ops::Deref for PhysicalDeviceImageFormatInfo2Builder<'a> {
13640    type Target = PhysicalDeviceImageFormatInfo2;
13641    #[inline]
13642    fn deref(&self) -> &Self::Target {
13643        &self.inner
13644    }
13645}
13646impl<'a> core::ops::DerefMut for PhysicalDeviceImageFormatInfo2Builder<'a> {
13647    #[inline]
13648    fn deref_mut(&mut self) -> &mut Self::Target {
13649        &mut self.inner
13650    }
13651}
13652///Builder for [`QueueFamilyProperties2`] with lifetime-tied pNext safety.
13653pub struct QueueFamilyProperties2Builder<'a> {
13654    inner: QueueFamilyProperties2,
13655    _marker: core::marker::PhantomData<&'a ()>,
13656}
13657impl QueueFamilyProperties2 {
13658    /// Start building this struct; `s_type` is already set to the correct variant.
13659    #[inline]
13660    pub fn builder<'a>() -> QueueFamilyProperties2Builder<'a> {
13661        QueueFamilyProperties2Builder {
13662            inner: QueueFamilyProperties2 {
13663                s_type: StructureType::from_raw(1000059005i32),
13664                ..Default::default()
13665            },
13666            _marker: core::marker::PhantomData,
13667        }
13668    }
13669}
13670impl<'a> QueueFamilyProperties2Builder<'a> {
13671    #[inline]
13672    pub fn queue_family_properties(mut self, value: QueueFamilyProperties) -> Self {
13673        self.inner.queue_family_properties = value;
13674        self
13675    }
13676}
13677impl<'a> core::ops::Deref for QueueFamilyProperties2Builder<'a> {
13678    type Target = QueueFamilyProperties2;
13679    #[inline]
13680    fn deref(&self) -> &Self::Target {
13681        &self.inner
13682    }
13683}
13684impl<'a> core::ops::DerefMut for QueueFamilyProperties2Builder<'a> {
13685    #[inline]
13686    fn deref_mut(&mut self) -> &mut Self::Target {
13687        &mut self.inner
13688    }
13689}
13690///Builder for [`PhysicalDeviceMemoryProperties2`] with lifetime-tied pNext safety.
13691pub struct PhysicalDeviceMemoryProperties2Builder<'a> {
13692    inner: PhysicalDeviceMemoryProperties2,
13693    _marker: core::marker::PhantomData<&'a ()>,
13694}
13695impl PhysicalDeviceMemoryProperties2 {
13696    /// Start building this struct; `s_type` is already set to the correct variant.
13697    #[inline]
13698    pub fn builder<'a>() -> PhysicalDeviceMemoryProperties2Builder<'a> {
13699        PhysicalDeviceMemoryProperties2Builder {
13700            inner: PhysicalDeviceMemoryProperties2 {
13701                s_type: StructureType::from_raw(1000059006i32),
13702                ..Default::default()
13703            },
13704            _marker: core::marker::PhantomData,
13705        }
13706    }
13707}
13708impl<'a> PhysicalDeviceMemoryProperties2Builder<'a> {
13709    #[inline]
13710    pub fn memory_properties(mut self, value: PhysicalDeviceMemoryProperties) -> Self {
13711        self.inner.memory_properties = value;
13712        self
13713    }
13714}
13715impl<'a> core::ops::Deref for PhysicalDeviceMemoryProperties2Builder<'a> {
13716    type Target = PhysicalDeviceMemoryProperties2;
13717    #[inline]
13718    fn deref(&self) -> &Self::Target {
13719        &self.inner
13720    }
13721}
13722impl<'a> core::ops::DerefMut for PhysicalDeviceMemoryProperties2Builder<'a> {
13723    #[inline]
13724    fn deref_mut(&mut self) -> &mut Self::Target {
13725        &mut self.inner
13726    }
13727}
13728///Builder for [`SparseImageFormatProperties2`] with lifetime-tied pNext safety.
13729pub struct SparseImageFormatProperties2Builder<'a> {
13730    inner: SparseImageFormatProperties2,
13731    _marker: core::marker::PhantomData<&'a ()>,
13732}
13733impl SparseImageFormatProperties2 {
13734    /// Start building this struct; `s_type` is already set to the correct variant.
13735    #[inline]
13736    pub fn builder<'a>() -> SparseImageFormatProperties2Builder<'a> {
13737        SparseImageFormatProperties2Builder {
13738            inner: SparseImageFormatProperties2 {
13739                s_type: StructureType::from_raw(1000059007i32),
13740                ..Default::default()
13741            },
13742            _marker: core::marker::PhantomData,
13743        }
13744    }
13745}
13746impl<'a> SparseImageFormatProperties2Builder<'a> {
13747    #[inline]
13748    pub fn properties(mut self, value: SparseImageFormatProperties) -> Self {
13749        self.inner.properties = value;
13750        self
13751    }
13752}
13753impl<'a> core::ops::Deref for SparseImageFormatProperties2Builder<'a> {
13754    type Target = SparseImageFormatProperties2;
13755    #[inline]
13756    fn deref(&self) -> &Self::Target {
13757        &self.inner
13758    }
13759}
13760impl<'a> core::ops::DerefMut for SparseImageFormatProperties2Builder<'a> {
13761    #[inline]
13762    fn deref_mut(&mut self) -> &mut Self::Target {
13763        &mut self.inner
13764    }
13765}
13766///Builder for [`PhysicalDeviceSparseImageFormatInfo2`] with lifetime-tied pNext safety.
13767pub struct PhysicalDeviceSparseImageFormatInfo2Builder<'a> {
13768    inner: PhysicalDeviceSparseImageFormatInfo2,
13769    _marker: core::marker::PhantomData<&'a ()>,
13770}
13771impl PhysicalDeviceSparseImageFormatInfo2 {
13772    /// Start building this struct; `s_type` is already set to the correct variant.
13773    #[inline]
13774    pub fn builder<'a>() -> PhysicalDeviceSparseImageFormatInfo2Builder<'a> {
13775        PhysicalDeviceSparseImageFormatInfo2Builder {
13776            inner: PhysicalDeviceSparseImageFormatInfo2 {
13777                s_type: StructureType::from_raw(1000059008i32),
13778                ..Default::default()
13779            },
13780            _marker: core::marker::PhantomData,
13781        }
13782    }
13783}
13784impl<'a> PhysicalDeviceSparseImageFormatInfo2Builder<'a> {
13785    #[inline]
13786    pub fn format(mut self, value: Format) -> Self {
13787        self.inner.format = value;
13788        self
13789    }
13790    #[inline]
13791    pub fn r#type(mut self, value: ImageType) -> Self {
13792        self.inner.r#type = value;
13793        self
13794    }
13795    #[inline]
13796    pub fn samples(mut self, value: SampleCountFlagBits) -> Self {
13797        self.inner.samples = value;
13798        self
13799    }
13800    #[inline]
13801    pub fn usage(mut self, value: ImageUsageFlags) -> Self {
13802        self.inner.usage = value;
13803        self
13804    }
13805    #[inline]
13806    pub fn tiling(mut self, value: ImageTiling) -> Self {
13807        self.inner.tiling = value;
13808        self
13809    }
13810    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceSparseImageFormatInfo2`]'s **Extended By** section for valid types.
13811    #[inline]
13812    pub fn push_next<T: ExtendsPhysicalDeviceSparseImageFormatInfo2>(
13813        mut self,
13814        next: &'a mut T,
13815    ) -> Self {
13816        unsafe {
13817            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
13818            (*next_ptr).p_next = self.inner.p_next as *mut _;
13819            self.inner.p_next = <*mut BaseOutStructure>::cast::<
13820                core::ffi::c_void,
13821            >(next_ptr) as *const _;
13822        }
13823        self
13824    }
13825}
13826impl<'a> core::ops::Deref for PhysicalDeviceSparseImageFormatInfo2Builder<'a> {
13827    type Target = PhysicalDeviceSparseImageFormatInfo2;
13828    #[inline]
13829    fn deref(&self) -> &Self::Target {
13830        &self.inner
13831    }
13832}
13833impl<'a> core::ops::DerefMut for PhysicalDeviceSparseImageFormatInfo2Builder<'a> {
13834    #[inline]
13835    fn deref_mut(&mut self) -> &mut Self::Target {
13836        &mut self.inner
13837    }
13838}
13839///Builder for [`PhysicalDevicePushDescriptorProperties`] with lifetime-tied pNext safety.
13840pub struct PhysicalDevicePushDescriptorPropertiesBuilder<'a> {
13841    inner: PhysicalDevicePushDescriptorProperties,
13842    _marker: core::marker::PhantomData<&'a ()>,
13843}
13844impl PhysicalDevicePushDescriptorProperties {
13845    /// Start building this struct; `s_type` is already set to the correct variant.
13846    #[inline]
13847    pub fn builder<'a>() -> PhysicalDevicePushDescriptorPropertiesBuilder<'a> {
13848        PhysicalDevicePushDescriptorPropertiesBuilder {
13849            inner: PhysicalDevicePushDescriptorProperties {
13850                s_type: StructureType::from_raw(1000080000i32),
13851                ..Default::default()
13852            },
13853            _marker: core::marker::PhantomData,
13854        }
13855    }
13856}
13857impl<'a> PhysicalDevicePushDescriptorPropertiesBuilder<'a> {
13858    #[inline]
13859    pub fn max_push_descriptors(mut self, value: u32) -> Self {
13860        self.inner.max_push_descriptors = value;
13861        self
13862    }
13863}
13864impl<'a> core::ops::Deref for PhysicalDevicePushDescriptorPropertiesBuilder<'a> {
13865    type Target = PhysicalDevicePushDescriptorProperties;
13866    #[inline]
13867    fn deref(&self) -> &Self::Target {
13868        &self.inner
13869    }
13870}
13871impl<'a> core::ops::DerefMut for PhysicalDevicePushDescriptorPropertiesBuilder<'a> {
13872    #[inline]
13873    fn deref_mut(&mut self) -> &mut Self::Target {
13874        &mut self.inner
13875    }
13876}
13877///Builder for [`ConformanceVersion`].
13878pub struct ConformanceVersionBuilder {
13879    inner: ConformanceVersion,
13880}
13881impl ConformanceVersion {
13882    /// Start building this struct.
13883    #[inline]
13884    pub fn builder() -> ConformanceVersionBuilder {
13885        ConformanceVersionBuilder {
13886            inner: ConformanceVersion {
13887                ..Default::default()
13888            },
13889        }
13890    }
13891}
13892impl ConformanceVersionBuilder {
13893    #[inline]
13894    pub fn major(mut self, value: u8) -> Self {
13895        self.inner.major = value;
13896        self
13897    }
13898    #[inline]
13899    pub fn minor(mut self, value: u8) -> Self {
13900        self.inner.minor = value;
13901        self
13902    }
13903    #[inline]
13904    pub fn subminor(mut self, value: u8) -> Self {
13905        self.inner.subminor = value;
13906        self
13907    }
13908    #[inline]
13909    pub fn patch(mut self, value: u8) -> Self {
13910        self.inner.patch = value;
13911        self
13912    }
13913}
13914impl core::ops::Deref for ConformanceVersionBuilder {
13915    type Target = ConformanceVersion;
13916    #[inline]
13917    fn deref(&self) -> &Self::Target {
13918        &self.inner
13919    }
13920}
13921impl core::ops::DerefMut for ConformanceVersionBuilder {
13922    #[inline]
13923    fn deref_mut(&mut self) -> &mut Self::Target {
13924        &mut self.inner
13925    }
13926}
13927///Builder for [`PhysicalDeviceDriverProperties`] with lifetime-tied pNext safety.
13928pub struct PhysicalDeviceDriverPropertiesBuilder<'a> {
13929    inner: PhysicalDeviceDriverProperties,
13930    _marker: core::marker::PhantomData<&'a ()>,
13931}
13932impl PhysicalDeviceDriverProperties {
13933    /// Start building this struct; `s_type` is already set to the correct variant.
13934    #[inline]
13935    pub fn builder<'a>() -> PhysicalDeviceDriverPropertiesBuilder<'a> {
13936        PhysicalDeviceDriverPropertiesBuilder {
13937            inner: PhysicalDeviceDriverProperties {
13938                s_type: StructureType::from_raw(1000196000i32),
13939                ..Default::default()
13940            },
13941            _marker: core::marker::PhantomData,
13942        }
13943    }
13944}
13945impl<'a> PhysicalDeviceDriverPropertiesBuilder<'a> {
13946    #[inline]
13947    pub fn driver_id(mut self, value: DriverId) -> Self {
13948        self.inner.driver_id = value;
13949        self
13950    }
13951    #[inline]
13952    pub fn driver_name(
13953        mut self,
13954        value: crate::StringArray<{ MAX_DRIVER_NAME_SIZE as usize }>,
13955    ) -> Self {
13956        self.inner.driver_name = value;
13957        self
13958    }
13959    #[inline]
13960    pub fn driver_info(
13961        mut self,
13962        value: crate::StringArray<{ MAX_DRIVER_INFO_SIZE as usize }>,
13963    ) -> Self {
13964        self.inner.driver_info = value;
13965        self
13966    }
13967    #[inline]
13968    pub fn conformance_version(mut self, value: ConformanceVersion) -> Self {
13969        self.inner.conformance_version = value;
13970        self
13971    }
13972}
13973impl<'a> core::ops::Deref for PhysicalDeviceDriverPropertiesBuilder<'a> {
13974    type Target = PhysicalDeviceDriverProperties;
13975    #[inline]
13976    fn deref(&self) -> &Self::Target {
13977        &self.inner
13978    }
13979}
13980impl<'a> core::ops::DerefMut for PhysicalDeviceDriverPropertiesBuilder<'a> {
13981    #[inline]
13982    fn deref_mut(&mut self) -> &mut Self::Target {
13983        &mut self.inner
13984    }
13985}
13986///Builder for [`PresentRegionsKHR`] with lifetime-tied pNext safety.
13987pub struct PresentRegionsKHRBuilder<'a> {
13988    inner: PresentRegionsKHR,
13989    _marker: core::marker::PhantomData<&'a ()>,
13990}
13991impl PresentRegionsKHR {
13992    /// Start building this struct; `s_type` is already set to the correct variant.
13993    #[inline]
13994    pub fn builder<'a>() -> PresentRegionsKHRBuilder<'a> {
13995        PresentRegionsKHRBuilder {
13996            inner: PresentRegionsKHR {
13997                s_type: StructureType::from_raw(1000084000i32),
13998                ..Default::default()
13999            },
14000            _marker: core::marker::PhantomData,
14001        }
14002    }
14003}
14004impl<'a> PresentRegionsKHRBuilder<'a> {
14005    #[inline]
14006    pub fn swapchain_count(mut self, value: u32) -> Self {
14007        self.inner.swapchain_count = value;
14008        self
14009    }
14010    #[inline]
14011    pub fn regions(mut self, slice: &'a [PresentRegionKHR]) -> Self {
14012        self.inner.swapchain_count = slice.len() as u32;
14013        self.inner.p_regions = slice.as_ptr();
14014        self
14015    }
14016    ///Prepend a struct to the pNext chain. See [`PresentRegionsKHR`]'s **Extended By** section for valid types.
14017    #[inline]
14018    pub fn push_next<T: ExtendsPresentRegionsKHR>(mut self, next: &'a mut T) -> Self {
14019        unsafe {
14020            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
14021            (*next_ptr).p_next = self.inner.p_next as *mut _;
14022            self.inner.p_next = <*mut BaseOutStructure>::cast::<
14023                core::ffi::c_void,
14024            >(next_ptr) as *const _;
14025        }
14026        self
14027    }
14028}
14029impl<'a> core::ops::Deref for PresentRegionsKHRBuilder<'a> {
14030    type Target = PresentRegionsKHR;
14031    #[inline]
14032    fn deref(&self) -> &Self::Target {
14033        &self.inner
14034    }
14035}
14036impl<'a> core::ops::DerefMut for PresentRegionsKHRBuilder<'a> {
14037    #[inline]
14038    fn deref_mut(&mut self) -> &mut Self::Target {
14039        &mut self.inner
14040    }
14041}
14042///Builder for [`PresentRegionKHR`].
14043pub struct PresentRegionKHRBuilder<'a> {
14044    inner: PresentRegionKHR,
14045    _marker: core::marker::PhantomData<&'a ()>,
14046}
14047impl PresentRegionKHR {
14048    /// Start building this struct.
14049    #[inline]
14050    pub fn builder<'a>() -> PresentRegionKHRBuilder<'a> {
14051        PresentRegionKHRBuilder {
14052            inner: PresentRegionKHR {
14053                ..Default::default()
14054            },
14055            _marker: core::marker::PhantomData,
14056        }
14057    }
14058}
14059impl<'a> PresentRegionKHRBuilder<'a> {
14060    #[inline]
14061    pub fn rectangle_count(mut self, value: u32) -> Self {
14062        self.inner.rectangle_count = value;
14063        self
14064    }
14065    #[inline]
14066    pub fn rectangles(mut self, slice: &'a [RectLayerKHR]) -> Self {
14067        self.inner.rectangle_count = slice.len() as u32;
14068        self.inner.p_rectangles = slice.as_ptr();
14069        self
14070    }
14071}
14072impl<'a> core::ops::Deref for PresentRegionKHRBuilder<'a> {
14073    type Target = PresentRegionKHR;
14074    #[inline]
14075    fn deref(&self) -> &Self::Target {
14076        &self.inner
14077    }
14078}
14079impl<'a> core::ops::DerefMut for PresentRegionKHRBuilder<'a> {
14080    #[inline]
14081    fn deref_mut(&mut self) -> &mut Self::Target {
14082        &mut self.inner
14083    }
14084}
14085///Builder for [`RectLayerKHR`].
14086pub struct RectLayerKHRBuilder {
14087    inner: RectLayerKHR,
14088}
14089impl RectLayerKHR {
14090    /// Start building this struct.
14091    #[inline]
14092    pub fn builder() -> RectLayerKHRBuilder {
14093        RectLayerKHRBuilder {
14094            inner: RectLayerKHR {
14095                ..Default::default()
14096            },
14097        }
14098    }
14099}
14100impl RectLayerKHRBuilder {
14101    #[inline]
14102    pub fn offset(mut self, value: Offset2D) -> Self {
14103        self.inner.offset = value;
14104        self
14105    }
14106    #[inline]
14107    pub fn extent(mut self, value: Extent2D) -> Self {
14108        self.inner.extent = value;
14109        self
14110    }
14111    #[inline]
14112    pub fn layer(mut self, value: u32) -> Self {
14113        self.inner.layer = value;
14114        self
14115    }
14116}
14117impl core::ops::Deref for RectLayerKHRBuilder {
14118    type Target = RectLayerKHR;
14119    #[inline]
14120    fn deref(&self) -> &Self::Target {
14121        &self.inner
14122    }
14123}
14124impl core::ops::DerefMut for RectLayerKHRBuilder {
14125    #[inline]
14126    fn deref_mut(&mut self) -> &mut Self::Target {
14127        &mut self.inner
14128    }
14129}
14130///Builder for [`PhysicalDeviceVariablePointersFeatures`] with lifetime-tied pNext safety.
14131pub struct PhysicalDeviceVariablePointersFeaturesBuilder<'a> {
14132    inner: PhysicalDeviceVariablePointersFeatures,
14133    _marker: core::marker::PhantomData<&'a ()>,
14134}
14135impl PhysicalDeviceVariablePointersFeatures {
14136    /// Start building this struct; `s_type` is already set to the correct variant.
14137    #[inline]
14138    pub fn builder<'a>() -> PhysicalDeviceVariablePointersFeaturesBuilder<'a> {
14139        PhysicalDeviceVariablePointersFeaturesBuilder {
14140            inner: PhysicalDeviceVariablePointersFeatures {
14141                s_type: StructureType::from_raw(1000120000i32),
14142                ..Default::default()
14143            },
14144            _marker: core::marker::PhantomData,
14145        }
14146    }
14147}
14148impl<'a> PhysicalDeviceVariablePointersFeaturesBuilder<'a> {
14149    #[inline]
14150    pub fn variable_pointers_storage_buffer(mut self, value: bool) -> Self {
14151        self.inner.variable_pointers_storage_buffer = value as u32;
14152        self
14153    }
14154    #[inline]
14155    pub fn variable_pointers(mut self, value: bool) -> Self {
14156        self.inner.variable_pointers = value as u32;
14157        self
14158    }
14159    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceVariablePointersFeatures`]'s **Extended By** section for valid types.
14160    #[inline]
14161    pub fn push_next<T: ExtendsPhysicalDeviceVariablePointersFeatures>(
14162        mut self,
14163        next: &'a mut T,
14164    ) -> Self {
14165        unsafe {
14166            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
14167            (*next_ptr).p_next = self.inner.p_next as *mut _;
14168            self.inner.p_next = <*mut BaseOutStructure>::cast::<
14169                core::ffi::c_void,
14170            >(next_ptr);
14171        }
14172        self
14173    }
14174}
14175impl<'a> core::ops::Deref for PhysicalDeviceVariablePointersFeaturesBuilder<'a> {
14176    type Target = PhysicalDeviceVariablePointersFeatures;
14177    #[inline]
14178    fn deref(&self) -> &Self::Target {
14179        &self.inner
14180    }
14181}
14182impl<'a> core::ops::DerefMut for PhysicalDeviceVariablePointersFeaturesBuilder<'a> {
14183    #[inline]
14184    fn deref_mut(&mut self) -> &mut Self::Target {
14185        &mut self.inner
14186    }
14187}
14188///Builder for [`ExternalMemoryProperties`].
14189pub struct ExternalMemoryPropertiesBuilder {
14190    inner: ExternalMemoryProperties,
14191}
14192impl ExternalMemoryProperties {
14193    /// Start building this struct.
14194    #[inline]
14195    pub fn builder() -> ExternalMemoryPropertiesBuilder {
14196        ExternalMemoryPropertiesBuilder {
14197            inner: ExternalMemoryProperties {
14198                ..Default::default()
14199            },
14200        }
14201    }
14202}
14203impl ExternalMemoryPropertiesBuilder {
14204    #[inline]
14205    pub fn external_memory_features(
14206        mut self,
14207        value: ExternalMemoryFeatureFlags,
14208    ) -> Self {
14209        self.inner.external_memory_features = value;
14210        self
14211    }
14212    #[inline]
14213    pub fn export_from_imported_handle_types(
14214        mut self,
14215        value: ExternalMemoryHandleTypeFlags,
14216    ) -> Self {
14217        self.inner.export_from_imported_handle_types = value;
14218        self
14219    }
14220    #[inline]
14221    pub fn compatible_handle_types(
14222        mut self,
14223        value: ExternalMemoryHandleTypeFlags,
14224    ) -> Self {
14225        self.inner.compatible_handle_types = value;
14226        self
14227    }
14228}
14229impl core::ops::Deref for ExternalMemoryPropertiesBuilder {
14230    type Target = ExternalMemoryProperties;
14231    #[inline]
14232    fn deref(&self) -> &Self::Target {
14233        &self.inner
14234    }
14235}
14236impl core::ops::DerefMut for ExternalMemoryPropertiesBuilder {
14237    #[inline]
14238    fn deref_mut(&mut self) -> &mut Self::Target {
14239        &mut self.inner
14240    }
14241}
14242///Builder for [`PhysicalDeviceExternalImageFormatInfo`] with lifetime-tied pNext safety.
14243pub struct PhysicalDeviceExternalImageFormatInfoBuilder<'a> {
14244    inner: PhysicalDeviceExternalImageFormatInfo,
14245    _marker: core::marker::PhantomData<&'a ()>,
14246}
14247impl PhysicalDeviceExternalImageFormatInfo {
14248    /// Start building this struct; `s_type` is already set to the correct variant.
14249    #[inline]
14250    pub fn builder<'a>() -> PhysicalDeviceExternalImageFormatInfoBuilder<'a> {
14251        PhysicalDeviceExternalImageFormatInfoBuilder {
14252            inner: PhysicalDeviceExternalImageFormatInfo {
14253                s_type: StructureType::from_raw(1000071000i32),
14254                ..Default::default()
14255            },
14256            _marker: core::marker::PhantomData,
14257        }
14258    }
14259}
14260impl<'a> PhysicalDeviceExternalImageFormatInfoBuilder<'a> {
14261    #[inline]
14262    pub fn handle_type(mut self, value: ExternalMemoryHandleTypeFlagBits) -> Self {
14263        self.inner.handle_type = value;
14264        self
14265    }
14266    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceExternalImageFormatInfo`]'s **Extended By** section for valid types.
14267    #[inline]
14268    pub fn push_next<T: ExtendsPhysicalDeviceExternalImageFormatInfo>(
14269        mut self,
14270        next: &'a mut T,
14271    ) -> Self {
14272        unsafe {
14273            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
14274            (*next_ptr).p_next = self.inner.p_next as *mut _;
14275            self.inner.p_next = <*mut BaseOutStructure>::cast::<
14276                core::ffi::c_void,
14277            >(next_ptr) as *const _;
14278        }
14279        self
14280    }
14281}
14282impl<'a> core::ops::Deref for PhysicalDeviceExternalImageFormatInfoBuilder<'a> {
14283    type Target = PhysicalDeviceExternalImageFormatInfo;
14284    #[inline]
14285    fn deref(&self) -> &Self::Target {
14286        &self.inner
14287    }
14288}
14289impl<'a> core::ops::DerefMut for PhysicalDeviceExternalImageFormatInfoBuilder<'a> {
14290    #[inline]
14291    fn deref_mut(&mut self) -> &mut Self::Target {
14292        &mut self.inner
14293    }
14294}
14295///Builder for [`ExternalImageFormatProperties`] with lifetime-tied pNext safety.
14296pub struct ExternalImageFormatPropertiesBuilder<'a> {
14297    inner: ExternalImageFormatProperties,
14298    _marker: core::marker::PhantomData<&'a ()>,
14299}
14300impl ExternalImageFormatProperties {
14301    /// Start building this struct; `s_type` is already set to the correct variant.
14302    #[inline]
14303    pub fn builder<'a>() -> ExternalImageFormatPropertiesBuilder<'a> {
14304        ExternalImageFormatPropertiesBuilder {
14305            inner: ExternalImageFormatProperties {
14306                s_type: StructureType::from_raw(1000071001i32),
14307                ..Default::default()
14308            },
14309            _marker: core::marker::PhantomData,
14310        }
14311    }
14312}
14313impl<'a> ExternalImageFormatPropertiesBuilder<'a> {
14314    #[inline]
14315    pub fn external_memory_properties(
14316        mut self,
14317        value: ExternalMemoryProperties,
14318    ) -> Self {
14319        self.inner.external_memory_properties = value;
14320        self
14321    }
14322}
14323impl<'a> core::ops::Deref for ExternalImageFormatPropertiesBuilder<'a> {
14324    type Target = ExternalImageFormatProperties;
14325    #[inline]
14326    fn deref(&self) -> &Self::Target {
14327        &self.inner
14328    }
14329}
14330impl<'a> core::ops::DerefMut for ExternalImageFormatPropertiesBuilder<'a> {
14331    #[inline]
14332    fn deref_mut(&mut self) -> &mut Self::Target {
14333        &mut self.inner
14334    }
14335}
14336///Builder for [`PhysicalDeviceExternalBufferInfo`] with lifetime-tied pNext safety.
14337pub struct PhysicalDeviceExternalBufferInfoBuilder<'a> {
14338    inner: PhysicalDeviceExternalBufferInfo,
14339    _marker: core::marker::PhantomData<&'a ()>,
14340}
14341impl PhysicalDeviceExternalBufferInfo {
14342    /// Start building this struct; `s_type` is already set to the correct variant.
14343    #[inline]
14344    pub fn builder<'a>() -> PhysicalDeviceExternalBufferInfoBuilder<'a> {
14345        PhysicalDeviceExternalBufferInfoBuilder {
14346            inner: PhysicalDeviceExternalBufferInfo {
14347                s_type: StructureType::from_raw(1000071002i32),
14348                ..Default::default()
14349            },
14350            _marker: core::marker::PhantomData,
14351        }
14352    }
14353}
14354impl<'a> PhysicalDeviceExternalBufferInfoBuilder<'a> {
14355    #[inline]
14356    pub fn flags(mut self, value: BufferCreateFlags) -> Self {
14357        self.inner.flags = value;
14358        self
14359    }
14360    #[inline]
14361    pub fn usage(mut self, value: BufferUsageFlags) -> Self {
14362        self.inner.usage = value;
14363        self
14364    }
14365    #[inline]
14366    pub fn handle_type(mut self, value: ExternalMemoryHandleTypeFlagBits) -> Self {
14367        self.inner.handle_type = value;
14368        self
14369    }
14370    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceExternalBufferInfo`]'s **Extended By** section for valid types.
14371    #[inline]
14372    pub fn push_next<T: ExtendsPhysicalDeviceExternalBufferInfo>(
14373        mut self,
14374        next: &'a mut T,
14375    ) -> Self {
14376        unsafe {
14377            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
14378            (*next_ptr).p_next = self.inner.p_next as *mut _;
14379            self.inner.p_next = <*mut BaseOutStructure>::cast::<
14380                core::ffi::c_void,
14381            >(next_ptr) as *const _;
14382        }
14383        self
14384    }
14385}
14386impl<'a> core::ops::Deref for PhysicalDeviceExternalBufferInfoBuilder<'a> {
14387    type Target = PhysicalDeviceExternalBufferInfo;
14388    #[inline]
14389    fn deref(&self) -> &Self::Target {
14390        &self.inner
14391    }
14392}
14393impl<'a> core::ops::DerefMut for PhysicalDeviceExternalBufferInfoBuilder<'a> {
14394    #[inline]
14395    fn deref_mut(&mut self) -> &mut Self::Target {
14396        &mut self.inner
14397    }
14398}
14399///Builder for [`ExternalBufferProperties`] with lifetime-tied pNext safety.
14400pub struct ExternalBufferPropertiesBuilder<'a> {
14401    inner: ExternalBufferProperties,
14402    _marker: core::marker::PhantomData<&'a ()>,
14403}
14404impl ExternalBufferProperties {
14405    /// Start building this struct; `s_type` is already set to the correct variant.
14406    #[inline]
14407    pub fn builder<'a>() -> ExternalBufferPropertiesBuilder<'a> {
14408        ExternalBufferPropertiesBuilder {
14409            inner: ExternalBufferProperties {
14410                s_type: StructureType::from_raw(1000071003i32),
14411                ..Default::default()
14412            },
14413            _marker: core::marker::PhantomData,
14414        }
14415    }
14416}
14417impl<'a> ExternalBufferPropertiesBuilder<'a> {
14418    #[inline]
14419    pub fn external_memory_properties(
14420        mut self,
14421        value: ExternalMemoryProperties,
14422    ) -> Self {
14423        self.inner.external_memory_properties = value;
14424        self
14425    }
14426}
14427impl<'a> core::ops::Deref for ExternalBufferPropertiesBuilder<'a> {
14428    type Target = ExternalBufferProperties;
14429    #[inline]
14430    fn deref(&self) -> &Self::Target {
14431        &self.inner
14432    }
14433}
14434impl<'a> core::ops::DerefMut for ExternalBufferPropertiesBuilder<'a> {
14435    #[inline]
14436    fn deref_mut(&mut self) -> &mut Self::Target {
14437        &mut self.inner
14438    }
14439}
14440///Builder for [`PhysicalDeviceIDProperties`] with lifetime-tied pNext safety.
14441pub struct PhysicalDeviceIDPropertiesBuilder<'a> {
14442    inner: PhysicalDeviceIDProperties,
14443    _marker: core::marker::PhantomData<&'a ()>,
14444}
14445impl PhysicalDeviceIDProperties {
14446    /// Start building this struct; `s_type` is already set to the correct variant.
14447    #[inline]
14448    pub fn builder<'a>() -> PhysicalDeviceIDPropertiesBuilder<'a> {
14449        PhysicalDeviceIDPropertiesBuilder {
14450            inner: PhysicalDeviceIDProperties {
14451                s_type: StructureType::from_raw(1000071004i32),
14452                ..Default::default()
14453            },
14454            _marker: core::marker::PhantomData,
14455        }
14456    }
14457}
14458impl<'a> PhysicalDeviceIDPropertiesBuilder<'a> {
14459    #[inline]
14460    pub fn device_uuid(mut self, value: [u8; UUID_SIZE as usize]) -> Self {
14461        self.inner.device_uuid = value;
14462        self
14463    }
14464    #[inline]
14465    pub fn driver_uuid(mut self, value: [u8; UUID_SIZE as usize]) -> Self {
14466        self.inner.driver_uuid = value;
14467        self
14468    }
14469    #[inline]
14470    pub fn device_luid(mut self, value: [u8; LUID_SIZE as usize]) -> Self {
14471        self.inner.device_luid = value;
14472        self
14473    }
14474    #[inline]
14475    pub fn device_node_mask(mut self, value: u32) -> Self {
14476        self.inner.device_node_mask = value;
14477        self
14478    }
14479    #[inline]
14480    pub fn device_luid_valid(mut self, value: bool) -> Self {
14481        self.inner.device_luid_valid = value as u32;
14482        self
14483    }
14484}
14485impl<'a> core::ops::Deref for PhysicalDeviceIDPropertiesBuilder<'a> {
14486    type Target = PhysicalDeviceIDProperties;
14487    #[inline]
14488    fn deref(&self) -> &Self::Target {
14489        &self.inner
14490    }
14491}
14492impl<'a> core::ops::DerefMut for PhysicalDeviceIDPropertiesBuilder<'a> {
14493    #[inline]
14494    fn deref_mut(&mut self) -> &mut Self::Target {
14495        &mut self.inner
14496    }
14497}
14498///Builder for [`ExternalMemoryImageCreateInfo`] with lifetime-tied pNext safety.
14499pub struct ExternalMemoryImageCreateInfoBuilder<'a> {
14500    inner: ExternalMemoryImageCreateInfo,
14501    _marker: core::marker::PhantomData<&'a ()>,
14502}
14503impl ExternalMemoryImageCreateInfo {
14504    /// Start building this struct; `s_type` is already set to the correct variant.
14505    #[inline]
14506    pub fn builder<'a>() -> ExternalMemoryImageCreateInfoBuilder<'a> {
14507        ExternalMemoryImageCreateInfoBuilder {
14508            inner: ExternalMemoryImageCreateInfo {
14509                s_type: StructureType::from_raw(1000072001i32),
14510                ..Default::default()
14511            },
14512            _marker: core::marker::PhantomData,
14513        }
14514    }
14515}
14516impl<'a> ExternalMemoryImageCreateInfoBuilder<'a> {
14517    #[inline]
14518    pub fn handle_types(mut self, value: ExternalMemoryHandleTypeFlags) -> Self {
14519        self.inner.handle_types = value;
14520        self
14521    }
14522    ///Prepend a struct to the pNext chain. See [`ExternalMemoryImageCreateInfo`]'s **Extended By** section for valid types.
14523    #[inline]
14524    pub fn push_next<T: ExtendsExternalMemoryImageCreateInfo>(
14525        mut self,
14526        next: &'a mut T,
14527    ) -> Self {
14528        unsafe {
14529            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
14530            (*next_ptr).p_next = self.inner.p_next as *mut _;
14531            self.inner.p_next = <*mut BaseOutStructure>::cast::<
14532                core::ffi::c_void,
14533            >(next_ptr) as *const _;
14534        }
14535        self
14536    }
14537}
14538impl<'a> core::ops::Deref for ExternalMemoryImageCreateInfoBuilder<'a> {
14539    type Target = ExternalMemoryImageCreateInfo;
14540    #[inline]
14541    fn deref(&self) -> &Self::Target {
14542        &self.inner
14543    }
14544}
14545impl<'a> core::ops::DerefMut for ExternalMemoryImageCreateInfoBuilder<'a> {
14546    #[inline]
14547    fn deref_mut(&mut self) -> &mut Self::Target {
14548        &mut self.inner
14549    }
14550}
14551///Builder for [`ExternalMemoryBufferCreateInfo`] with lifetime-tied pNext safety.
14552pub struct ExternalMemoryBufferCreateInfoBuilder<'a> {
14553    inner: ExternalMemoryBufferCreateInfo,
14554    _marker: core::marker::PhantomData<&'a ()>,
14555}
14556impl ExternalMemoryBufferCreateInfo {
14557    /// Start building this struct; `s_type` is already set to the correct variant.
14558    #[inline]
14559    pub fn builder<'a>() -> ExternalMemoryBufferCreateInfoBuilder<'a> {
14560        ExternalMemoryBufferCreateInfoBuilder {
14561            inner: ExternalMemoryBufferCreateInfo {
14562                s_type: StructureType::from_raw(1000072000i32),
14563                ..Default::default()
14564            },
14565            _marker: core::marker::PhantomData,
14566        }
14567    }
14568}
14569impl<'a> ExternalMemoryBufferCreateInfoBuilder<'a> {
14570    #[inline]
14571    pub fn handle_types(mut self, value: ExternalMemoryHandleTypeFlags) -> Self {
14572        self.inner.handle_types = value;
14573        self
14574    }
14575    ///Prepend a struct to the pNext chain. See [`ExternalMemoryBufferCreateInfo`]'s **Extended By** section for valid types.
14576    #[inline]
14577    pub fn push_next<T: ExtendsExternalMemoryBufferCreateInfo>(
14578        mut self,
14579        next: &'a mut T,
14580    ) -> Self {
14581        unsafe {
14582            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
14583            (*next_ptr).p_next = self.inner.p_next as *mut _;
14584            self.inner.p_next = <*mut BaseOutStructure>::cast::<
14585                core::ffi::c_void,
14586            >(next_ptr) as *const _;
14587        }
14588        self
14589    }
14590}
14591impl<'a> core::ops::Deref for ExternalMemoryBufferCreateInfoBuilder<'a> {
14592    type Target = ExternalMemoryBufferCreateInfo;
14593    #[inline]
14594    fn deref(&self) -> &Self::Target {
14595        &self.inner
14596    }
14597}
14598impl<'a> core::ops::DerefMut for ExternalMemoryBufferCreateInfoBuilder<'a> {
14599    #[inline]
14600    fn deref_mut(&mut self) -> &mut Self::Target {
14601        &mut self.inner
14602    }
14603}
14604///Builder for [`ExportMemoryAllocateInfo`] with lifetime-tied pNext safety.
14605pub struct ExportMemoryAllocateInfoBuilder<'a> {
14606    inner: ExportMemoryAllocateInfo,
14607    _marker: core::marker::PhantomData<&'a ()>,
14608}
14609impl ExportMemoryAllocateInfo {
14610    /// Start building this struct; `s_type` is already set to the correct variant.
14611    #[inline]
14612    pub fn builder<'a>() -> ExportMemoryAllocateInfoBuilder<'a> {
14613        ExportMemoryAllocateInfoBuilder {
14614            inner: ExportMemoryAllocateInfo {
14615                s_type: StructureType::from_raw(1000072002i32),
14616                ..Default::default()
14617            },
14618            _marker: core::marker::PhantomData,
14619        }
14620    }
14621}
14622impl<'a> ExportMemoryAllocateInfoBuilder<'a> {
14623    #[inline]
14624    pub fn handle_types(mut self, value: ExternalMemoryHandleTypeFlags) -> Self {
14625        self.inner.handle_types = value;
14626        self
14627    }
14628    ///Prepend a struct to the pNext chain. See [`ExportMemoryAllocateInfo`]'s **Extended By** section for valid types.
14629    #[inline]
14630    pub fn push_next<T: ExtendsExportMemoryAllocateInfo>(
14631        mut self,
14632        next: &'a mut T,
14633    ) -> Self {
14634        unsafe {
14635            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
14636            (*next_ptr).p_next = self.inner.p_next as *mut _;
14637            self.inner.p_next = <*mut BaseOutStructure>::cast::<
14638                core::ffi::c_void,
14639            >(next_ptr) as *const _;
14640        }
14641        self
14642    }
14643}
14644impl<'a> core::ops::Deref for ExportMemoryAllocateInfoBuilder<'a> {
14645    type Target = ExportMemoryAllocateInfo;
14646    #[inline]
14647    fn deref(&self) -> &Self::Target {
14648        &self.inner
14649    }
14650}
14651impl<'a> core::ops::DerefMut for ExportMemoryAllocateInfoBuilder<'a> {
14652    #[inline]
14653    fn deref_mut(&mut self) -> &mut Self::Target {
14654        &mut self.inner
14655    }
14656}
14657///Builder for [`ImportMemoryWin32HandleInfoKHR`] with lifetime-tied pNext safety.
14658pub struct ImportMemoryWin32HandleInfoKHRBuilder<'a> {
14659    inner: ImportMemoryWin32HandleInfoKHR,
14660    _marker: core::marker::PhantomData<&'a ()>,
14661}
14662impl ImportMemoryWin32HandleInfoKHR {
14663    /// Start building this struct; `s_type` is already set to the correct variant.
14664    #[inline]
14665    pub fn builder<'a>() -> ImportMemoryWin32HandleInfoKHRBuilder<'a> {
14666        ImportMemoryWin32HandleInfoKHRBuilder {
14667            inner: ImportMemoryWin32HandleInfoKHR {
14668                s_type: StructureType::from_raw(1000073000i32),
14669                ..Default::default()
14670            },
14671            _marker: core::marker::PhantomData,
14672        }
14673    }
14674}
14675impl<'a> ImportMemoryWin32HandleInfoKHRBuilder<'a> {
14676    #[inline]
14677    pub fn handle_type(mut self, value: ExternalMemoryHandleTypeFlagBits) -> Self {
14678        self.inner.handle_type = value;
14679        self
14680    }
14681    #[inline]
14682    pub fn handle(mut self, value: isize) -> Self {
14683        self.inner.handle = value;
14684        self
14685    }
14686    #[inline]
14687    pub fn name(mut self, value: *const u16) -> Self {
14688        self.inner.name = value;
14689        self
14690    }
14691    ///Prepend a struct to the pNext chain. See [`ImportMemoryWin32HandleInfoKHR`]'s **Extended By** section for valid types.
14692    #[inline]
14693    pub fn push_next<T: ExtendsImportMemoryWin32HandleInfoKHR>(
14694        mut self,
14695        next: &'a mut T,
14696    ) -> Self {
14697        unsafe {
14698            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
14699            (*next_ptr).p_next = self.inner.p_next as *mut _;
14700            self.inner.p_next = <*mut BaseOutStructure>::cast::<
14701                core::ffi::c_void,
14702            >(next_ptr) as *const _;
14703        }
14704        self
14705    }
14706}
14707impl<'a> core::ops::Deref for ImportMemoryWin32HandleInfoKHRBuilder<'a> {
14708    type Target = ImportMemoryWin32HandleInfoKHR;
14709    #[inline]
14710    fn deref(&self) -> &Self::Target {
14711        &self.inner
14712    }
14713}
14714impl<'a> core::ops::DerefMut for ImportMemoryWin32HandleInfoKHRBuilder<'a> {
14715    #[inline]
14716    fn deref_mut(&mut self) -> &mut Self::Target {
14717        &mut self.inner
14718    }
14719}
14720///Builder for [`ExportMemoryWin32HandleInfoKHR`] with lifetime-tied pNext safety.
14721pub struct ExportMemoryWin32HandleInfoKHRBuilder<'a> {
14722    inner: ExportMemoryWin32HandleInfoKHR,
14723    _marker: core::marker::PhantomData<&'a ()>,
14724}
14725impl ExportMemoryWin32HandleInfoKHR {
14726    /// Start building this struct; `s_type` is already set to the correct variant.
14727    #[inline]
14728    pub fn builder<'a>() -> ExportMemoryWin32HandleInfoKHRBuilder<'a> {
14729        ExportMemoryWin32HandleInfoKHRBuilder {
14730            inner: ExportMemoryWin32HandleInfoKHR {
14731                s_type: StructureType::from_raw(1000073001i32),
14732                ..Default::default()
14733            },
14734            _marker: core::marker::PhantomData,
14735        }
14736    }
14737}
14738impl<'a> ExportMemoryWin32HandleInfoKHRBuilder<'a> {
14739    #[inline]
14740    pub fn attributes(mut self, value: *const core::ffi::c_void) -> Self {
14741        self.inner.p_attributes = value;
14742        self
14743    }
14744    #[inline]
14745    pub fn dw_access(mut self, value: u32) -> Self {
14746        self.inner.dw_access = value;
14747        self
14748    }
14749    #[inline]
14750    pub fn name(mut self, value: *const u16) -> Self {
14751        self.inner.name = value;
14752        self
14753    }
14754    ///Prepend a struct to the pNext chain. See [`ExportMemoryWin32HandleInfoKHR`]'s **Extended By** section for valid types.
14755    #[inline]
14756    pub fn push_next<T: ExtendsExportMemoryWin32HandleInfoKHR>(
14757        mut self,
14758        next: &'a mut T,
14759    ) -> Self {
14760        unsafe {
14761            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
14762            (*next_ptr).p_next = self.inner.p_next as *mut _;
14763            self.inner.p_next = <*mut BaseOutStructure>::cast::<
14764                core::ffi::c_void,
14765            >(next_ptr) as *const _;
14766        }
14767        self
14768    }
14769}
14770impl<'a> core::ops::Deref for ExportMemoryWin32HandleInfoKHRBuilder<'a> {
14771    type Target = ExportMemoryWin32HandleInfoKHR;
14772    #[inline]
14773    fn deref(&self) -> &Self::Target {
14774        &self.inner
14775    }
14776}
14777impl<'a> core::ops::DerefMut for ExportMemoryWin32HandleInfoKHRBuilder<'a> {
14778    #[inline]
14779    fn deref_mut(&mut self) -> &mut Self::Target {
14780        &mut self.inner
14781    }
14782}
14783///Builder for [`ImportMemoryZirconHandleInfoFUCHSIA`] with lifetime-tied pNext safety.
14784pub struct ImportMemoryZirconHandleInfoFUCHSIABuilder<'a> {
14785    inner: ImportMemoryZirconHandleInfoFUCHSIA,
14786    _marker: core::marker::PhantomData<&'a ()>,
14787}
14788impl ImportMemoryZirconHandleInfoFUCHSIA {
14789    /// Start building this struct; `s_type` is already set to the correct variant.
14790    #[inline]
14791    pub fn builder<'a>() -> ImportMemoryZirconHandleInfoFUCHSIABuilder<'a> {
14792        ImportMemoryZirconHandleInfoFUCHSIABuilder {
14793            inner: ImportMemoryZirconHandleInfoFUCHSIA {
14794                s_type: StructureType::from_raw(1000364000i32),
14795                ..Default::default()
14796            },
14797            _marker: core::marker::PhantomData,
14798        }
14799    }
14800}
14801impl<'a> ImportMemoryZirconHandleInfoFUCHSIABuilder<'a> {
14802    #[inline]
14803    pub fn handle_type(mut self, value: ExternalMemoryHandleTypeFlagBits) -> Self {
14804        self.inner.handle_type = value;
14805        self
14806    }
14807    #[inline]
14808    pub fn handle(mut self, value: u32) -> Self {
14809        self.inner.handle = value;
14810        self
14811    }
14812    ///Prepend a struct to the pNext chain. See [`ImportMemoryZirconHandleInfoFUCHSIA`]'s **Extended By** section for valid types.
14813    #[inline]
14814    pub fn push_next<T: ExtendsImportMemoryZirconHandleInfoFUCHSIA>(
14815        mut self,
14816        next: &'a mut T,
14817    ) -> Self {
14818        unsafe {
14819            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
14820            (*next_ptr).p_next = self.inner.p_next as *mut _;
14821            self.inner.p_next = <*mut BaseOutStructure>::cast::<
14822                core::ffi::c_void,
14823            >(next_ptr) as *const _;
14824        }
14825        self
14826    }
14827}
14828impl<'a> core::ops::Deref for ImportMemoryZirconHandleInfoFUCHSIABuilder<'a> {
14829    type Target = ImportMemoryZirconHandleInfoFUCHSIA;
14830    #[inline]
14831    fn deref(&self) -> &Self::Target {
14832        &self.inner
14833    }
14834}
14835impl<'a> core::ops::DerefMut for ImportMemoryZirconHandleInfoFUCHSIABuilder<'a> {
14836    #[inline]
14837    fn deref_mut(&mut self) -> &mut Self::Target {
14838        &mut self.inner
14839    }
14840}
14841///Builder for [`MemoryZirconHandlePropertiesFUCHSIA`] with lifetime-tied pNext safety.
14842pub struct MemoryZirconHandlePropertiesFUCHSIABuilder<'a> {
14843    inner: MemoryZirconHandlePropertiesFUCHSIA,
14844    _marker: core::marker::PhantomData<&'a ()>,
14845}
14846impl MemoryZirconHandlePropertiesFUCHSIA {
14847    /// Start building this struct; `s_type` is already set to the correct variant.
14848    #[inline]
14849    pub fn builder<'a>() -> MemoryZirconHandlePropertiesFUCHSIABuilder<'a> {
14850        MemoryZirconHandlePropertiesFUCHSIABuilder {
14851            inner: MemoryZirconHandlePropertiesFUCHSIA {
14852                s_type: StructureType::from_raw(1000364001i32),
14853                ..Default::default()
14854            },
14855            _marker: core::marker::PhantomData,
14856        }
14857    }
14858}
14859impl<'a> MemoryZirconHandlePropertiesFUCHSIABuilder<'a> {
14860    #[inline]
14861    pub fn memory_type_bits(mut self, value: u32) -> Self {
14862        self.inner.memory_type_bits = value;
14863        self
14864    }
14865}
14866impl<'a> core::ops::Deref for MemoryZirconHandlePropertiesFUCHSIABuilder<'a> {
14867    type Target = MemoryZirconHandlePropertiesFUCHSIA;
14868    #[inline]
14869    fn deref(&self) -> &Self::Target {
14870        &self.inner
14871    }
14872}
14873impl<'a> core::ops::DerefMut for MemoryZirconHandlePropertiesFUCHSIABuilder<'a> {
14874    #[inline]
14875    fn deref_mut(&mut self) -> &mut Self::Target {
14876        &mut self.inner
14877    }
14878}
14879///Builder for [`MemoryGetZirconHandleInfoFUCHSIA`] with lifetime-tied pNext safety.
14880pub struct MemoryGetZirconHandleInfoFUCHSIABuilder<'a> {
14881    inner: MemoryGetZirconHandleInfoFUCHSIA,
14882    _marker: core::marker::PhantomData<&'a ()>,
14883}
14884impl MemoryGetZirconHandleInfoFUCHSIA {
14885    /// Start building this struct; `s_type` is already set to the correct variant.
14886    #[inline]
14887    pub fn builder<'a>() -> MemoryGetZirconHandleInfoFUCHSIABuilder<'a> {
14888        MemoryGetZirconHandleInfoFUCHSIABuilder {
14889            inner: MemoryGetZirconHandleInfoFUCHSIA {
14890                s_type: StructureType::from_raw(1000364002i32),
14891                ..Default::default()
14892            },
14893            _marker: core::marker::PhantomData,
14894        }
14895    }
14896}
14897impl<'a> MemoryGetZirconHandleInfoFUCHSIABuilder<'a> {
14898    #[inline]
14899    pub fn memory(mut self, value: DeviceMemory) -> Self {
14900        self.inner.memory = value;
14901        self
14902    }
14903    #[inline]
14904    pub fn handle_type(mut self, value: ExternalMemoryHandleTypeFlagBits) -> Self {
14905        self.inner.handle_type = value;
14906        self
14907    }
14908    ///Prepend a struct to the pNext chain. See [`MemoryGetZirconHandleInfoFUCHSIA`]'s **Extended By** section for valid types.
14909    #[inline]
14910    pub fn push_next<T: ExtendsMemoryGetZirconHandleInfoFUCHSIA>(
14911        mut self,
14912        next: &'a mut T,
14913    ) -> Self {
14914        unsafe {
14915            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
14916            (*next_ptr).p_next = self.inner.p_next as *mut _;
14917            self.inner.p_next = <*mut BaseOutStructure>::cast::<
14918                core::ffi::c_void,
14919            >(next_ptr) as *const _;
14920        }
14921        self
14922    }
14923}
14924impl<'a> core::ops::Deref for MemoryGetZirconHandleInfoFUCHSIABuilder<'a> {
14925    type Target = MemoryGetZirconHandleInfoFUCHSIA;
14926    #[inline]
14927    fn deref(&self) -> &Self::Target {
14928        &self.inner
14929    }
14930}
14931impl<'a> core::ops::DerefMut for MemoryGetZirconHandleInfoFUCHSIABuilder<'a> {
14932    #[inline]
14933    fn deref_mut(&mut self) -> &mut Self::Target {
14934        &mut self.inner
14935    }
14936}
14937///Builder for [`MemoryWin32HandlePropertiesKHR`] with lifetime-tied pNext safety.
14938pub struct MemoryWin32HandlePropertiesKHRBuilder<'a> {
14939    inner: MemoryWin32HandlePropertiesKHR,
14940    _marker: core::marker::PhantomData<&'a ()>,
14941}
14942impl MemoryWin32HandlePropertiesKHR {
14943    /// Start building this struct; `s_type` is already set to the correct variant.
14944    #[inline]
14945    pub fn builder<'a>() -> MemoryWin32HandlePropertiesKHRBuilder<'a> {
14946        MemoryWin32HandlePropertiesKHRBuilder {
14947            inner: MemoryWin32HandlePropertiesKHR {
14948                s_type: StructureType::from_raw(1000073002i32),
14949                ..Default::default()
14950            },
14951            _marker: core::marker::PhantomData,
14952        }
14953    }
14954}
14955impl<'a> MemoryWin32HandlePropertiesKHRBuilder<'a> {
14956    #[inline]
14957    pub fn memory_type_bits(mut self, value: u32) -> Self {
14958        self.inner.memory_type_bits = value;
14959        self
14960    }
14961}
14962impl<'a> core::ops::Deref for MemoryWin32HandlePropertiesKHRBuilder<'a> {
14963    type Target = MemoryWin32HandlePropertiesKHR;
14964    #[inline]
14965    fn deref(&self) -> &Self::Target {
14966        &self.inner
14967    }
14968}
14969impl<'a> core::ops::DerefMut for MemoryWin32HandlePropertiesKHRBuilder<'a> {
14970    #[inline]
14971    fn deref_mut(&mut self) -> &mut Self::Target {
14972        &mut self.inner
14973    }
14974}
14975///Builder for [`MemoryGetWin32HandleInfoKHR`] with lifetime-tied pNext safety.
14976pub struct MemoryGetWin32HandleInfoKHRBuilder<'a> {
14977    inner: MemoryGetWin32HandleInfoKHR,
14978    _marker: core::marker::PhantomData<&'a ()>,
14979}
14980impl MemoryGetWin32HandleInfoKHR {
14981    /// Start building this struct; `s_type` is already set to the correct variant.
14982    #[inline]
14983    pub fn builder<'a>() -> MemoryGetWin32HandleInfoKHRBuilder<'a> {
14984        MemoryGetWin32HandleInfoKHRBuilder {
14985            inner: MemoryGetWin32HandleInfoKHR {
14986                s_type: StructureType::from_raw(1000073003i32),
14987                ..Default::default()
14988            },
14989            _marker: core::marker::PhantomData,
14990        }
14991    }
14992}
14993impl<'a> MemoryGetWin32HandleInfoKHRBuilder<'a> {
14994    #[inline]
14995    pub fn memory(mut self, value: DeviceMemory) -> Self {
14996        self.inner.memory = value;
14997        self
14998    }
14999    #[inline]
15000    pub fn handle_type(mut self, value: ExternalMemoryHandleTypeFlagBits) -> Self {
15001        self.inner.handle_type = value;
15002        self
15003    }
15004    ///Prepend a struct to the pNext chain. See [`MemoryGetWin32HandleInfoKHR`]'s **Extended By** section for valid types.
15005    #[inline]
15006    pub fn push_next<T: ExtendsMemoryGetWin32HandleInfoKHR>(
15007        mut self,
15008        next: &'a mut T,
15009    ) -> Self {
15010        unsafe {
15011            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
15012            (*next_ptr).p_next = self.inner.p_next as *mut _;
15013            self.inner.p_next = <*mut BaseOutStructure>::cast::<
15014                core::ffi::c_void,
15015            >(next_ptr) as *const _;
15016        }
15017        self
15018    }
15019}
15020impl<'a> core::ops::Deref for MemoryGetWin32HandleInfoKHRBuilder<'a> {
15021    type Target = MemoryGetWin32HandleInfoKHR;
15022    #[inline]
15023    fn deref(&self) -> &Self::Target {
15024        &self.inner
15025    }
15026}
15027impl<'a> core::ops::DerefMut for MemoryGetWin32HandleInfoKHRBuilder<'a> {
15028    #[inline]
15029    fn deref_mut(&mut self) -> &mut Self::Target {
15030        &mut self.inner
15031    }
15032}
15033///Builder for [`ImportMemoryFdInfoKHR`] with lifetime-tied pNext safety.
15034pub struct ImportMemoryFdInfoKHRBuilder<'a> {
15035    inner: ImportMemoryFdInfoKHR,
15036    _marker: core::marker::PhantomData<&'a ()>,
15037}
15038impl ImportMemoryFdInfoKHR {
15039    /// Start building this struct; `s_type` is already set to the correct variant.
15040    #[inline]
15041    pub fn builder<'a>() -> ImportMemoryFdInfoKHRBuilder<'a> {
15042        ImportMemoryFdInfoKHRBuilder {
15043            inner: ImportMemoryFdInfoKHR {
15044                s_type: StructureType::from_raw(1000074000i32),
15045                ..Default::default()
15046            },
15047            _marker: core::marker::PhantomData,
15048        }
15049    }
15050}
15051impl<'a> ImportMemoryFdInfoKHRBuilder<'a> {
15052    #[inline]
15053    pub fn handle_type(mut self, value: ExternalMemoryHandleTypeFlagBits) -> Self {
15054        self.inner.handle_type = value;
15055        self
15056    }
15057    #[inline]
15058    pub fn fd(mut self, value: core::ffi::c_int) -> Self {
15059        self.inner.fd = value;
15060        self
15061    }
15062    ///Prepend a struct to the pNext chain. See [`ImportMemoryFdInfoKHR`]'s **Extended By** section for valid types.
15063    #[inline]
15064    pub fn push_next<T: ExtendsImportMemoryFdInfoKHR>(
15065        mut self,
15066        next: &'a mut T,
15067    ) -> Self {
15068        unsafe {
15069            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
15070            (*next_ptr).p_next = self.inner.p_next as *mut _;
15071            self.inner.p_next = <*mut BaseOutStructure>::cast::<
15072                core::ffi::c_void,
15073            >(next_ptr) as *const _;
15074        }
15075        self
15076    }
15077}
15078impl<'a> core::ops::Deref for ImportMemoryFdInfoKHRBuilder<'a> {
15079    type Target = ImportMemoryFdInfoKHR;
15080    #[inline]
15081    fn deref(&self) -> &Self::Target {
15082        &self.inner
15083    }
15084}
15085impl<'a> core::ops::DerefMut for ImportMemoryFdInfoKHRBuilder<'a> {
15086    #[inline]
15087    fn deref_mut(&mut self) -> &mut Self::Target {
15088        &mut self.inner
15089    }
15090}
15091///Builder for [`MemoryFdPropertiesKHR`] with lifetime-tied pNext safety.
15092pub struct MemoryFdPropertiesKHRBuilder<'a> {
15093    inner: MemoryFdPropertiesKHR,
15094    _marker: core::marker::PhantomData<&'a ()>,
15095}
15096impl MemoryFdPropertiesKHR {
15097    /// Start building this struct; `s_type` is already set to the correct variant.
15098    #[inline]
15099    pub fn builder<'a>() -> MemoryFdPropertiesKHRBuilder<'a> {
15100        MemoryFdPropertiesKHRBuilder {
15101            inner: MemoryFdPropertiesKHR {
15102                s_type: StructureType::from_raw(1000074001i32),
15103                ..Default::default()
15104            },
15105            _marker: core::marker::PhantomData,
15106        }
15107    }
15108}
15109impl<'a> MemoryFdPropertiesKHRBuilder<'a> {
15110    #[inline]
15111    pub fn memory_type_bits(mut self, value: u32) -> Self {
15112        self.inner.memory_type_bits = value;
15113        self
15114    }
15115}
15116impl<'a> core::ops::Deref for MemoryFdPropertiesKHRBuilder<'a> {
15117    type Target = MemoryFdPropertiesKHR;
15118    #[inline]
15119    fn deref(&self) -> &Self::Target {
15120        &self.inner
15121    }
15122}
15123impl<'a> core::ops::DerefMut for MemoryFdPropertiesKHRBuilder<'a> {
15124    #[inline]
15125    fn deref_mut(&mut self) -> &mut Self::Target {
15126        &mut self.inner
15127    }
15128}
15129///Builder for [`MemoryGetFdInfoKHR`] with lifetime-tied pNext safety.
15130pub struct MemoryGetFdInfoKHRBuilder<'a> {
15131    inner: MemoryGetFdInfoKHR,
15132    _marker: core::marker::PhantomData<&'a ()>,
15133}
15134impl MemoryGetFdInfoKHR {
15135    /// Start building this struct; `s_type` is already set to the correct variant.
15136    #[inline]
15137    pub fn builder<'a>() -> MemoryGetFdInfoKHRBuilder<'a> {
15138        MemoryGetFdInfoKHRBuilder {
15139            inner: MemoryGetFdInfoKHR {
15140                s_type: StructureType::from_raw(1000074002i32),
15141                ..Default::default()
15142            },
15143            _marker: core::marker::PhantomData,
15144        }
15145    }
15146}
15147impl<'a> MemoryGetFdInfoKHRBuilder<'a> {
15148    #[inline]
15149    pub fn memory(mut self, value: DeviceMemory) -> Self {
15150        self.inner.memory = value;
15151        self
15152    }
15153    #[inline]
15154    pub fn handle_type(mut self, value: ExternalMemoryHandleTypeFlagBits) -> Self {
15155        self.inner.handle_type = value;
15156        self
15157    }
15158    ///Prepend a struct to the pNext chain. See [`MemoryGetFdInfoKHR`]'s **Extended By** section for valid types.
15159    #[inline]
15160    pub fn push_next<T: ExtendsMemoryGetFdInfoKHR>(mut self, next: &'a mut T) -> Self {
15161        unsafe {
15162            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
15163            (*next_ptr).p_next = self.inner.p_next as *mut _;
15164            self.inner.p_next = <*mut BaseOutStructure>::cast::<
15165                core::ffi::c_void,
15166            >(next_ptr) as *const _;
15167        }
15168        self
15169    }
15170}
15171impl<'a> core::ops::Deref for MemoryGetFdInfoKHRBuilder<'a> {
15172    type Target = MemoryGetFdInfoKHR;
15173    #[inline]
15174    fn deref(&self) -> &Self::Target {
15175        &self.inner
15176    }
15177}
15178impl<'a> core::ops::DerefMut for MemoryGetFdInfoKHRBuilder<'a> {
15179    #[inline]
15180    fn deref_mut(&mut self) -> &mut Self::Target {
15181        &mut self.inner
15182    }
15183}
15184///Builder for [`Win32KeyedMutexAcquireReleaseInfoKHR`] with lifetime-tied pNext safety.
15185pub struct Win32KeyedMutexAcquireReleaseInfoKHRBuilder<'a> {
15186    inner: Win32KeyedMutexAcquireReleaseInfoKHR,
15187    _marker: core::marker::PhantomData<&'a ()>,
15188}
15189impl Win32KeyedMutexAcquireReleaseInfoKHR {
15190    /// Start building this struct; `s_type` is already set to the correct variant.
15191    #[inline]
15192    pub fn builder<'a>() -> Win32KeyedMutexAcquireReleaseInfoKHRBuilder<'a> {
15193        Win32KeyedMutexAcquireReleaseInfoKHRBuilder {
15194            inner: Win32KeyedMutexAcquireReleaseInfoKHR {
15195                s_type: StructureType::from_raw(1000075000i32),
15196                ..Default::default()
15197            },
15198            _marker: core::marker::PhantomData,
15199        }
15200    }
15201}
15202impl<'a> Win32KeyedMutexAcquireReleaseInfoKHRBuilder<'a> {
15203    #[inline]
15204    pub fn acquire_syncs(mut self, slice: &'a [DeviceMemory]) -> Self {
15205        self.inner.acquire_count = slice.len() as u32;
15206        self.inner.p_acquire_syncs = slice.as_ptr();
15207        self
15208    }
15209    #[inline]
15210    pub fn acquire_keys(mut self, slice: &'a [u64]) -> Self {
15211        self.inner.acquire_count = slice.len() as u32;
15212        self.inner.p_acquire_keys = slice.as_ptr();
15213        self
15214    }
15215    #[inline]
15216    pub fn acquire_timeouts(mut self, slice: &'a [u32]) -> Self {
15217        self.inner.acquire_count = slice.len() as u32;
15218        self.inner.p_acquire_timeouts = slice.as_ptr();
15219        self
15220    }
15221    #[inline]
15222    pub fn release_syncs(mut self, slice: &'a [DeviceMemory]) -> Self {
15223        self.inner.release_count = slice.len() as u32;
15224        self.inner.p_release_syncs = slice.as_ptr();
15225        self
15226    }
15227    #[inline]
15228    pub fn release_keys(mut self, slice: &'a [u64]) -> Self {
15229        self.inner.release_count = slice.len() as u32;
15230        self.inner.p_release_keys = slice.as_ptr();
15231        self
15232    }
15233    ///Prepend a struct to the pNext chain. See [`Win32KeyedMutexAcquireReleaseInfoKHR`]'s **Extended By** section for valid types.
15234    #[inline]
15235    pub fn push_next<T: ExtendsWin32KeyedMutexAcquireReleaseInfoKHR>(
15236        mut self,
15237        next: &'a mut T,
15238    ) -> Self {
15239        unsafe {
15240            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
15241            (*next_ptr).p_next = self.inner.p_next as *mut _;
15242            self.inner.p_next = <*mut BaseOutStructure>::cast::<
15243                core::ffi::c_void,
15244            >(next_ptr) as *const _;
15245        }
15246        self
15247    }
15248}
15249impl<'a> core::ops::Deref for Win32KeyedMutexAcquireReleaseInfoKHRBuilder<'a> {
15250    type Target = Win32KeyedMutexAcquireReleaseInfoKHR;
15251    #[inline]
15252    fn deref(&self) -> &Self::Target {
15253        &self.inner
15254    }
15255}
15256impl<'a> core::ops::DerefMut for Win32KeyedMutexAcquireReleaseInfoKHRBuilder<'a> {
15257    #[inline]
15258    fn deref_mut(&mut self) -> &mut Self::Target {
15259        &mut self.inner
15260    }
15261}
15262///Builder for [`ImportMemoryMetalHandleInfoEXT`] with lifetime-tied pNext safety.
15263pub struct ImportMemoryMetalHandleInfoEXTBuilder<'a> {
15264    inner: ImportMemoryMetalHandleInfoEXT,
15265    _marker: core::marker::PhantomData<&'a ()>,
15266}
15267impl ImportMemoryMetalHandleInfoEXT {
15268    /// Start building this struct; `s_type` is already set to the correct variant.
15269    #[inline]
15270    pub fn builder<'a>() -> ImportMemoryMetalHandleInfoEXTBuilder<'a> {
15271        ImportMemoryMetalHandleInfoEXTBuilder {
15272            inner: ImportMemoryMetalHandleInfoEXT {
15273                s_type: StructureType::from_raw(1000602000i32),
15274                ..Default::default()
15275            },
15276            _marker: core::marker::PhantomData,
15277        }
15278    }
15279}
15280impl<'a> ImportMemoryMetalHandleInfoEXTBuilder<'a> {
15281    #[inline]
15282    pub fn handle_type(mut self, value: ExternalMemoryHandleTypeFlagBits) -> Self {
15283        self.inner.handle_type = value;
15284        self
15285    }
15286    #[inline]
15287    pub fn handle(mut self, value: *mut core::ffi::c_void) -> Self {
15288        self.inner.handle = value;
15289        self
15290    }
15291    ///Prepend a struct to the pNext chain. See [`ImportMemoryMetalHandleInfoEXT`]'s **Extended By** section for valid types.
15292    #[inline]
15293    pub fn push_next<T: ExtendsImportMemoryMetalHandleInfoEXT>(
15294        mut self,
15295        next: &'a mut T,
15296    ) -> Self {
15297        unsafe {
15298            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
15299            (*next_ptr).p_next = self.inner.p_next as *mut _;
15300            self.inner.p_next = <*mut BaseOutStructure>::cast::<
15301                core::ffi::c_void,
15302            >(next_ptr) as *const _;
15303        }
15304        self
15305    }
15306}
15307impl<'a> core::ops::Deref for ImportMemoryMetalHandleInfoEXTBuilder<'a> {
15308    type Target = ImportMemoryMetalHandleInfoEXT;
15309    #[inline]
15310    fn deref(&self) -> &Self::Target {
15311        &self.inner
15312    }
15313}
15314impl<'a> core::ops::DerefMut for ImportMemoryMetalHandleInfoEXTBuilder<'a> {
15315    #[inline]
15316    fn deref_mut(&mut self) -> &mut Self::Target {
15317        &mut self.inner
15318    }
15319}
15320///Builder for [`MemoryMetalHandlePropertiesEXT`] with lifetime-tied pNext safety.
15321pub struct MemoryMetalHandlePropertiesEXTBuilder<'a> {
15322    inner: MemoryMetalHandlePropertiesEXT,
15323    _marker: core::marker::PhantomData<&'a ()>,
15324}
15325impl MemoryMetalHandlePropertiesEXT {
15326    /// Start building this struct; `s_type` is already set to the correct variant.
15327    #[inline]
15328    pub fn builder<'a>() -> MemoryMetalHandlePropertiesEXTBuilder<'a> {
15329        MemoryMetalHandlePropertiesEXTBuilder {
15330            inner: MemoryMetalHandlePropertiesEXT {
15331                s_type: StructureType::from_raw(1000602001i32),
15332                ..Default::default()
15333            },
15334            _marker: core::marker::PhantomData,
15335        }
15336    }
15337}
15338impl<'a> MemoryMetalHandlePropertiesEXTBuilder<'a> {
15339    #[inline]
15340    pub fn memory_type_bits(mut self, value: u32) -> Self {
15341        self.inner.memory_type_bits = value;
15342        self
15343    }
15344}
15345impl<'a> core::ops::Deref for MemoryMetalHandlePropertiesEXTBuilder<'a> {
15346    type Target = MemoryMetalHandlePropertiesEXT;
15347    #[inline]
15348    fn deref(&self) -> &Self::Target {
15349        &self.inner
15350    }
15351}
15352impl<'a> core::ops::DerefMut for MemoryMetalHandlePropertiesEXTBuilder<'a> {
15353    #[inline]
15354    fn deref_mut(&mut self) -> &mut Self::Target {
15355        &mut self.inner
15356    }
15357}
15358///Builder for [`MemoryGetMetalHandleInfoEXT`] with lifetime-tied pNext safety.
15359pub struct MemoryGetMetalHandleInfoEXTBuilder<'a> {
15360    inner: MemoryGetMetalHandleInfoEXT,
15361    _marker: core::marker::PhantomData<&'a ()>,
15362}
15363impl MemoryGetMetalHandleInfoEXT {
15364    /// Start building this struct; `s_type` is already set to the correct variant.
15365    #[inline]
15366    pub fn builder<'a>() -> MemoryGetMetalHandleInfoEXTBuilder<'a> {
15367        MemoryGetMetalHandleInfoEXTBuilder {
15368            inner: MemoryGetMetalHandleInfoEXT {
15369                s_type: StructureType::from_raw(1000602002i32),
15370                ..Default::default()
15371            },
15372            _marker: core::marker::PhantomData,
15373        }
15374    }
15375}
15376impl<'a> MemoryGetMetalHandleInfoEXTBuilder<'a> {
15377    #[inline]
15378    pub fn memory(mut self, value: DeviceMemory) -> Self {
15379        self.inner.memory = value;
15380        self
15381    }
15382    #[inline]
15383    pub fn handle_type(mut self, value: ExternalMemoryHandleTypeFlagBits) -> Self {
15384        self.inner.handle_type = value;
15385        self
15386    }
15387    ///Prepend a struct to the pNext chain. See [`MemoryGetMetalHandleInfoEXT`]'s **Extended By** section for valid types.
15388    #[inline]
15389    pub fn push_next<T: ExtendsMemoryGetMetalHandleInfoEXT>(
15390        mut self,
15391        next: &'a mut T,
15392    ) -> Self {
15393        unsafe {
15394            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
15395            (*next_ptr).p_next = self.inner.p_next as *mut _;
15396            self.inner.p_next = <*mut BaseOutStructure>::cast::<
15397                core::ffi::c_void,
15398            >(next_ptr) as *const _;
15399        }
15400        self
15401    }
15402}
15403impl<'a> core::ops::Deref for MemoryGetMetalHandleInfoEXTBuilder<'a> {
15404    type Target = MemoryGetMetalHandleInfoEXT;
15405    #[inline]
15406    fn deref(&self) -> &Self::Target {
15407        &self.inner
15408    }
15409}
15410impl<'a> core::ops::DerefMut for MemoryGetMetalHandleInfoEXTBuilder<'a> {
15411    #[inline]
15412    fn deref_mut(&mut self) -> &mut Self::Target {
15413        &mut self.inner
15414    }
15415}
15416///Builder for [`PhysicalDeviceExternalSemaphoreInfo`] with lifetime-tied pNext safety.
15417pub struct PhysicalDeviceExternalSemaphoreInfoBuilder<'a> {
15418    inner: PhysicalDeviceExternalSemaphoreInfo,
15419    _marker: core::marker::PhantomData<&'a ()>,
15420}
15421impl PhysicalDeviceExternalSemaphoreInfo {
15422    /// Start building this struct; `s_type` is already set to the correct variant.
15423    #[inline]
15424    pub fn builder<'a>() -> PhysicalDeviceExternalSemaphoreInfoBuilder<'a> {
15425        PhysicalDeviceExternalSemaphoreInfoBuilder {
15426            inner: PhysicalDeviceExternalSemaphoreInfo {
15427                s_type: StructureType::from_raw(1000076000i32),
15428                ..Default::default()
15429            },
15430            _marker: core::marker::PhantomData,
15431        }
15432    }
15433}
15434impl<'a> PhysicalDeviceExternalSemaphoreInfoBuilder<'a> {
15435    #[inline]
15436    pub fn handle_type(mut self, value: ExternalSemaphoreHandleTypeFlagBits) -> Self {
15437        self.inner.handle_type = value;
15438        self
15439    }
15440    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceExternalSemaphoreInfo`]'s **Extended By** section for valid types.
15441    #[inline]
15442    pub fn push_next<T: ExtendsPhysicalDeviceExternalSemaphoreInfo>(
15443        mut self,
15444        next: &'a mut T,
15445    ) -> Self {
15446        unsafe {
15447            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
15448            (*next_ptr).p_next = self.inner.p_next as *mut _;
15449            self.inner.p_next = <*mut BaseOutStructure>::cast::<
15450                core::ffi::c_void,
15451            >(next_ptr) as *const _;
15452        }
15453        self
15454    }
15455}
15456impl<'a> core::ops::Deref for PhysicalDeviceExternalSemaphoreInfoBuilder<'a> {
15457    type Target = PhysicalDeviceExternalSemaphoreInfo;
15458    #[inline]
15459    fn deref(&self) -> &Self::Target {
15460        &self.inner
15461    }
15462}
15463impl<'a> core::ops::DerefMut for PhysicalDeviceExternalSemaphoreInfoBuilder<'a> {
15464    #[inline]
15465    fn deref_mut(&mut self) -> &mut Self::Target {
15466        &mut self.inner
15467    }
15468}
15469///Builder for [`ExternalSemaphoreProperties`] with lifetime-tied pNext safety.
15470pub struct ExternalSemaphorePropertiesBuilder<'a> {
15471    inner: ExternalSemaphoreProperties,
15472    _marker: core::marker::PhantomData<&'a ()>,
15473}
15474impl ExternalSemaphoreProperties {
15475    /// Start building this struct; `s_type` is already set to the correct variant.
15476    #[inline]
15477    pub fn builder<'a>() -> ExternalSemaphorePropertiesBuilder<'a> {
15478        ExternalSemaphorePropertiesBuilder {
15479            inner: ExternalSemaphoreProperties {
15480                s_type: StructureType::from_raw(1000076001i32),
15481                ..Default::default()
15482            },
15483            _marker: core::marker::PhantomData,
15484        }
15485    }
15486}
15487impl<'a> ExternalSemaphorePropertiesBuilder<'a> {
15488    #[inline]
15489    pub fn export_from_imported_handle_types(
15490        mut self,
15491        value: ExternalSemaphoreHandleTypeFlags,
15492    ) -> Self {
15493        self.inner.export_from_imported_handle_types = value;
15494        self
15495    }
15496    #[inline]
15497    pub fn compatible_handle_types(
15498        mut self,
15499        value: ExternalSemaphoreHandleTypeFlags,
15500    ) -> Self {
15501        self.inner.compatible_handle_types = value;
15502        self
15503    }
15504    #[inline]
15505    pub fn external_semaphore_features(
15506        mut self,
15507        value: ExternalSemaphoreFeatureFlags,
15508    ) -> Self {
15509        self.inner.external_semaphore_features = value;
15510        self
15511    }
15512}
15513impl<'a> core::ops::Deref for ExternalSemaphorePropertiesBuilder<'a> {
15514    type Target = ExternalSemaphoreProperties;
15515    #[inline]
15516    fn deref(&self) -> &Self::Target {
15517        &self.inner
15518    }
15519}
15520impl<'a> core::ops::DerefMut for ExternalSemaphorePropertiesBuilder<'a> {
15521    #[inline]
15522    fn deref_mut(&mut self) -> &mut Self::Target {
15523        &mut self.inner
15524    }
15525}
15526///Builder for [`ExportSemaphoreCreateInfo`] with lifetime-tied pNext safety.
15527pub struct ExportSemaphoreCreateInfoBuilder<'a> {
15528    inner: ExportSemaphoreCreateInfo,
15529    _marker: core::marker::PhantomData<&'a ()>,
15530}
15531impl ExportSemaphoreCreateInfo {
15532    /// Start building this struct; `s_type` is already set to the correct variant.
15533    #[inline]
15534    pub fn builder<'a>() -> ExportSemaphoreCreateInfoBuilder<'a> {
15535        ExportSemaphoreCreateInfoBuilder {
15536            inner: ExportSemaphoreCreateInfo {
15537                s_type: StructureType::from_raw(1000077000i32),
15538                ..Default::default()
15539            },
15540            _marker: core::marker::PhantomData,
15541        }
15542    }
15543}
15544impl<'a> ExportSemaphoreCreateInfoBuilder<'a> {
15545    #[inline]
15546    pub fn handle_types(mut self, value: ExternalSemaphoreHandleTypeFlags) -> Self {
15547        self.inner.handle_types = value;
15548        self
15549    }
15550    ///Prepend a struct to the pNext chain. See [`ExportSemaphoreCreateInfo`]'s **Extended By** section for valid types.
15551    #[inline]
15552    pub fn push_next<T: ExtendsExportSemaphoreCreateInfo>(
15553        mut self,
15554        next: &'a mut T,
15555    ) -> Self {
15556        unsafe {
15557            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
15558            (*next_ptr).p_next = self.inner.p_next as *mut _;
15559            self.inner.p_next = <*mut BaseOutStructure>::cast::<
15560                core::ffi::c_void,
15561            >(next_ptr) as *const _;
15562        }
15563        self
15564    }
15565}
15566impl<'a> core::ops::Deref for ExportSemaphoreCreateInfoBuilder<'a> {
15567    type Target = ExportSemaphoreCreateInfo;
15568    #[inline]
15569    fn deref(&self) -> &Self::Target {
15570        &self.inner
15571    }
15572}
15573impl<'a> core::ops::DerefMut for ExportSemaphoreCreateInfoBuilder<'a> {
15574    #[inline]
15575    fn deref_mut(&mut self) -> &mut Self::Target {
15576        &mut self.inner
15577    }
15578}
15579///Builder for [`ImportSemaphoreWin32HandleInfoKHR`] with lifetime-tied pNext safety.
15580pub struct ImportSemaphoreWin32HandleInfoKHRBuilder<'a> {
15581    inner: ImportSemaphoreWin32HandleInfoKHR,
15582    _marker: core::marker::PhantomData<&'a ()>,
15583}
15584impl ImportSemaphoreWin32HandleInfoKHR {
15585    /// Start building this struct; `s_type` is already set to the correct variant.
15586    #[inline]
15587    pub fn builder<'a>() -> ImportSemaphoreWin32HandleInfoKHRBuilder<'a> {
15588        ImportSemaphoreWin32HandleInfoKHRBuilder {
15589            inner: ImportSemaphoreWin32HandleInfoKHR {
15590                s_type: StructureType::from_raw(1000078000i32),
15591                ..Default::default()
15592            },
15593            _marker: core::marker::PhantomData,
15594        }
15595    }
15596}
15597impl<'a> ImportSemaphoreWin32HandleInfoKHRBuilder<'a> {
15598    #[inline]
15599    pub fn semaphore(mut self, value: Semaphore) -> Self {
15600        self.inner.semaphore = value;
15601        self
15602    }
15603    #[inline]
15604    pub fn flags(mut self, value: SemaphoreImportFlags) -> Self {
15605        self.inner.flags = value;
15606        self
15607    }
15608    #[inline]
15609    pub fn handle_type(mut self, value: ExternalSemaphoreHandleTypeFlagBits) -> Self {
15610        self.inner.handle_type = value;
15611        self
15612    }
15613    #[inline]
15614    pub fn handle(mut self, value: isize) -> Self {
15615        self.inner.handle = value;
15616        self
15617    }
15618    #[inline]
15619    pub fn name(mut self, value: *const u16) -> Self {
15620        self.inner.name = value;
15621        self
15622    }
15623    ///Prepend a struct to the pNext chain. See [`ImportSemaphoreWin32HandleInfoKHR`]'s **Extended By** section for valid types.
15624    #[inline]
15625    pub fn push_next<T: ExtendsImportSemaphoreWin32HandleInfoKHR>(
15626        mut self,
15627        next: &'a mut T,
15628    ) -> Self {
15629        unsafe {
15630            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
15631            (*next_ptr).p_next = self.inner.p_next as *mut _;
15632            self.inner.p_next = <*mut BaseOutStructure>::cast::<
15633                core::ffi::c_void,
15634            >(next_ptr) as *const _;
15635        }
15636        self
15637    }
15638}
15639impl<'a> core::ops::Deref for ImportSemaphoreWin32HandleInfoKHRBuilder<'a> {
15640    type Target = ImportSemaphoreWin32HandleInfoKHR;
15641    #[inline]
15642    fn deref(&self) -> &Self::Target {
15643        &self.inner
15644    }
15645}
15646impl<'a> core::ops::DerefMut for ImportSemaphoreWin32HandleInfoKHRBuilder<'a> {
15647    #[inline]
15648    fn deref_mut(&mut self) -> &mut Self::Target {
15649        &mut self.inner
15650    }
15651}
15652///Builder for [`ExportSemaphoreWin32HandleInfoKHR`] with lifetime-tied pNext safety.
15653pub struct ExportSemaphoreWin32HandleInfoKHRBuilder<'a> {
15654    inner: ExportSemaphoreWin32HandleInfoKHR,
15655    _marker: core::marker::PhantomData<&'a ()>,
15656}
15657impl ExportSemaphoreWin32HandleInfoKHR {
15658    /// Start building this struct; `s_type` is already set to the correct variant.
15659    #[inline]
15660    pub fn builder<'a>() -> ExportSemaphoreWin32HandleInfoKHRBuilder<'a> {
15661        ExportSemaphoreWin32HandleInfoKHRBuilder {
15662            inner: ExportSemaphoreWin32HandleInfoKHR {
15663                s_type: StructureType::from_raw(1000078001i32),
15664                ..Default::default()
15665            },
15666            _marker: core::marker::PhantomData,
15667        }
15668    }
15669}
15670impl<'a> ExportSemaphoreWin32HandleInfoKHRBuilder<'a> {
15671    #[inline]
15672    pub fn attributes(mut self, value: *const core::ffi::c_void) -> Self {
15673        self.inner.p_attributes = value;
15674        self
15675    }
15676    #[inline]
15677    pub fn dw_access(mut self, value: u32) -> Self {
15678        self.inner.dw_access = value;
15679        self
15680    }
15681    #[inline]
15682    pub fn name(mut self, value: *const u16) -> Self {
15683        self.inner.name = value;
15684        self
15685    }
15686    ///Prepend a struct to the pNext chain. See [`ExportSemaphoreWin32HandleInfoKHR`]'s **Extended By** section for valid types.
15687    #[inline]
15688    pub fn push_next<T: ExtendsExportSemaphoreWin32HandleInfoKHR>(
15689        mut self,
15690        next: &'a mut T,
15691    ) -> Self {
15692        unsafe {
15693            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
15694            (*next_ptr).p_next = self.inner.p_next as *mut _;
15695            self.inner.p_next = <*mut BaseOutStructure>::cast::<
15696                core::ffi::c_void,
15697            >(next_ptr) as *const _;
15698        }
15699        self
15700    }
15701}
15702impl<'a> core::ops::Deref for ExportSemaphoreWin32HandleInfoKHRBuilder<'a> {
15703    type Target = ExportSemaphoreWin32HandleInfoKHR;
15704    #[inline]
15705    fn deref(&self) -> &Self::Target {
15706        &self.inner
15707    }
15708}
15709impl<'a> core::ops::DerefMut for ExportSemaphoreWin32HandleInfoKHRBuilder<'a> {
15710    #[inline]
15711    fn deref_mut(&mut self) -> &mut Self::Target {
15712        &mut self.inner
15713    }
15714}
15715///Builder for [`D3D12FenceSubmitInfoKHR`] with lifetime-tied pNext safety.
15716pub struct D3D12FenceSubmitInfoKHRBuilder<'a> {
15717    inner: D3D12FenceSubmitInfoKHR,
15718    _marker: core::marker::PhantomData<&'a ()>,
15719}
15720impl D3D12FenceSubmitInfoKHR {
15721    /// Start building this struct; `s_type` is already set to the correct variant.
15722    #[inline]
15723    pub fn builder<'a>() -> D3D12FenceSubmitInfoKHRBuilder<'a> {
15724        D3D12FenceSubmitInfoKHRBuilder {
15725            inner: D3D12FenceSubmitInfoKHR {
15726                s_type: StructureType::from_raw(1000078002i32),
15727                ..Default::default()
15728            },
15729            _marker: core::marker::PhantomData,
15730        }
15731    }
15732}
15733impl<'a> D3D12FenceSubmitInfoKHRBuilder<'a> {
15734    #[inline]
15735    pub fn wait_semaphore_values_count(mut self, value: u32) -> Self {
15736        self.inner.wait_semaphore_values_count = value;
15737        self
15738    }
15739    #[inline]
15740    pub fn wait_semaphore_values(mut self, slice: &'a [u64]) -> Self {
15741        self.inner.wait_semaphore_values_count = slice.len() as u32;
15742        self.inner.p_wait_semaphore_values = slice.as_ptr();
15743        self
15744    }
15745    #[inline]
15746    pub fn signal_semaphore_values_count(mut self, value: u32) -> Self {
15747        self.inner.signal_semaphore_values_count = value;
15748        self
15749    }
15750    #[inline]
15751    pub fn signal_semaphore_values(mut self, slice: &'a [u64]) -> Self {
15752        self.inner.signal_semaphore_values_count = slice.len() as u32;
15753        self.inner.p_signal_semaphore_values = slice.as_ptr();
15754        self
15755    }
15756    ///Prepend a struct to the pNext chain. See [`D3D12FenceSubmitInfoKHR`]'s **Extended By** section for valid types.
15757    #[inline]
15758    pub fn push_next<T: ExtendsD3D12FenceSubmitInfoKHR>(
15759        mut self,
15760        next: &'a mut T,
15761    ) -> Self {
15762        unsafe {
15763            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
15764            (*next_ptr).p_next = self.inner.p_next as *mut _;
15765            self.inner.p_next = <*mut BaseOutStructure>::cast::<
15766                core::ffi::c_void,
15767            >(next_ptr) as *const _;
15768        }
15769        self
15770    }
15771}
15772impl<'a> core::ops::Deref for D3D12FenceSubmitInfoKHRBuilder<'a> {
15773    type Target = D3D12FenceSubmitInfoKHR;
15774    #[inline]
15775    fn deref(&self) -> &Self::Target {
15776        &self.inner
15777    }
15778}
15779impl<'a> core::ops::DerefMut for D3D12FenceSubmitInfoKHRBuilder<'a> {
15780    #[inline]
15781    fn deref_mut(&mut self) -> &mut Self::Target {
15782        &mut self.inner
15783    }
15784}
15785///Builder for [`SemaphoreGetWin32HandleInfoKHR`] with lifetime-tied pNext safety.
15786pub struct SemaphoreGetWin32HandleInfoKHRBuilder<'a> {
15787    inner: SemaphoreGetWin32HandleInfoKHR,
15788    _marker: core::marker::PhantomData<&'a ()>,
15789}
15790impl SemaphoreGetWin32HandleInfoKHR {
15791    /// Start building this struct; `s_type` is already set to the correct variant.
15792    #[inline]
15793    pub fn builder<'a>() -> SemaphoreGetWin32HandleInfoKHRBuilder<'a> {
15794        SemaphoreGetWin32HandleInfoKHRBuilder {
15795            inner: SemaphoreGetWin32HandleInfoKHR {
15796                s_type: StructureType::from_raw(1000078003i32),
15797                ..Default::default()
15798            },
15799            _marker: core::marker::PhantomData,
15800        }
15801    }
15802}
15803impl<'a> SemaphoreGetWin32HandleInfoKHRBuilder<'a> {
15804    #[inline]
15805    pub fn semaphore(mut self, value: Semaphore) -> Self {
15806        self.inner.semaphore = value;
15807        self
15808    }
15809    #[inline]
15810    pub fn handle_type(mut self, value: ExternalSemaphoreHandleTypeFlagBits) -> Self {
15811        self.inner.handle_type = value;
15812        self
15813    }
15814    ///Prepend a struct to the pNext chain. See [`SemaphoreGetWin32HandleInfoKHR`]'s **Extended By** section for valid types.
15815    #[inline]
15816    pub fn push_next<T: ExtendsSemaphoreGetWin32HandleInfoKHR>(
15817        mut self,
15818        next: &'a mut T,
15819    ) -> Self {
15820        unsafe {
15821            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
15822            (*next_ptr).p_next = self.inner.p_next as *mut _;
15823            self.inner.p_next = <*mut BaseOutStructure>::cast::<
15824                core::ffi::c_void,
15825            >(next_ptr) as *const _;
15826        }
15827        self
15828    }
15829}
15830impl<'a> core::ops::Deref for SemaphoreGetWin32HandleInfoKHRBuilder<'a> {
15831    type Target = SemaphoreGetWin32HandleInfoKHR;
15832    #[inline]
15833    fn deref(&self) -> &Self::Target {
15834        &self.inner
15835    }
15836}
15837impl<'a> core::ops::DerefMut for SemaphoreGetWin32HandleInfoKHRBuilder<'a> {
15838    #[inline]
15839    fn deref_mut(&mut self) -> &mut Self::Target {
15840        &mut self.inner
15841    }
15842}
15843///Builder for [`ImportSemaphoreFdInfoKHR`] with lifetime-tied pNext safety.
15844pub struct ImportSemaphoreFdInfoKHRBuilder<'a> {
15845    inner: ImportSemaphoreFdInfoKHR,
15846    _marker: core::marker::PhantomData<&'a ()>,
15847}
15848impl ImportSemaphoreFdInfoKHR {
15849    /// Start building this struct; `s_type` is already set to the correct variant.
15850    #[inline]
15851    pub fn builder<'a>() -> ImportSemaphoreFdInfoKHRBuilder<'a> {
15852        ImportSemaphoreFdInfoKHRBuilder {
15853            inner: ImportSemaphoreFdInfoKHR {
15854                s_type: StructureType::from_raw(1000079000i32),
15855                ..Default::default()
15856            },
15857            _marker: core::marker::PhantomData,
15858        }
15859    }
15860}
15861impl<'a> ImportSemaphoreFdInfoKHRBuilder<'a> {
15862    #[inline]
15863    pub fn semaphore(mut self, value: Semaphore) -> Self {
15864        self.inner.semaphore = value;
15865        self
15866    }
15867    #[inline]
15868    pub fn flags(mut self, value: SemaphoreImportFlags) -> Self {
15869        self.inner.flags = value;
15870        self
15871    }
15872    #[inline]
15873    pub fn handle_type(mut self, value: ExternalSemaphoreHandleTypeFlagBits) -> Self {
15874        self.inner.handle_type = value;
15875        self
15876    }
15877    #[inline]
15878    pub fn fd(mut self, value: core::ffi::c_int) -> Self {
15879        self.inner.fd = value;
15880        self
15881    }
15882    ///Prepend a struct to the pNext chain. See [`ImportSemaphoreFdInfoKHR`]'s **Extended By** section for valid types.
15883    #[inline]
15884    pub fn push_next<T: ExtendsImportSemaphoreFdInfoKHR>(
15885        mut self,
15886        next: &'a mut T,
15887    ) -> Self {
15888        unsafe {
15889            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
15890            (*next_ptr).p_next = self.inner.p_next as *mut _;
15891            self.inner.p_next = <*mut BaseOutStructure>::cast::<
15892                core::ffi::c_void,
15893            >(next_ptr) as *const _;
15894        }
15895        self
15896    }
15897}
15898impl<'a> core::ops::Deref for ImportSemaphoreFdInfoKHRBuilder<'a> {
15899    type Target = ImportSemaphoreFdInfoKHR;
15900    #[inline]
15901    fn deref(&self) -> &Self::Target {
15902        &self.inner
15903    }
15904}
15905impl<'a> core::ops::DerefMut for ImportSemaphoreFdInfoKHRBuilder<'a> {
15906    #[inline]
15907    fn deref_mut(&mut self) -> &mut Self::Target {
15908        &mut self.inner
15909    }
15910}
15911///Builder for [`SemaphoreGetFdInfoKHR`] with lifetime-tied pNext safety.
15912pub struct SemaphoreGetFdInfoKHRBuilder<'a> {
15913    inner: SemaphoreGetFdInfoKHR,
15914    _marker: core::marker::PhantomData<&'a ()>,
15915}
15916impl SemaphoreGetFdInfoKHR {
15917    /// Start building this struct; `s_type` is already set to the correct variant.
15918    #[inline]
15919    pub fn builder<'a>() -> SemaphoreGetFdInfoKHRBuilder<'a> {
15920        SemaphoreGetFdInfoKHRBuilder {
15921            inner: SemaphoreGetFdInfoKHR {
15922                s_type: StructureType::from_raw(1000079001i32),
15923                ..Default::default()
15924            },
15925            _marker: core::marker::PhantomData,
15926        }
15927    }
15928}
15929impl<'a> SemaphoreGetFdInfoKHRBuilder<'a> {
15930    #[inline]
15931    pub fn semaphore(mut self, value: Semaphore) -> Self {
15932        self.inner.semaphore = value;
15933        self
15934    }
15935    #[inline]
15936    pub fn handle_type(mut self, value: ExternalSemaphoreHandleTypeFlagBits) -> Self {
15937        self.inner.handle_type = value;
15938        self
15939    }
15940    ///Prepend a struct to the pNext chain. See [`SemaphoreGetFdInfoKHR`]'s **Extended By** section for valid types.
15941    #[inline]
15942    pub fn push_next<T: ExtendsSemaphoreGetFdInfoKHR>(
15943        mut self,
15944        next: &'a mut T,
15945    ) -> Self {
15946        unsafe {
15947            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
15948            (*next_ptr).p_next = self.inner.p_next as *mut _;
15949            self.inner.p_next = <*mut BaseOutStructure>::cast::<
15950                core::ffi::c_void,
15951            >(next_ptr) as *const _;
15952        }
15953        self
15954    }
15955}
15956impl<'a> core::ops::Deref for SemaphoreGetFdInfoKHRBuilder<'a> {
15957    type Target = SemaphoreGetFdInfoKHR;
15958    #[inline]
15959    fn deref(&self) -> &Self::Target {
15960        &self.inner
15961    }
15962}
15963impl<'a> core::ops::DerefMut for SemaphoreGetFdInfoKHRBuilder<'a> {
15964    #[inline]
15965    fn deref_mut(&mut self) -> &mut Self::Target {
15966        &mut self.inner
15967    }
15968}
15969///Builder for [`ImportSemaphoreZirconHandleInfoFUCHSIA`] with lifetime-tied pNext safety.
15970pub struct ImportSemaphoreZirconHandleInfoFUCHSIABuilder<'a> {
15971    inner: ImportSemaphoreZirconHandleInfoFUCHSIA,
15972    _marker: core::marker::PhantomData<&'a ()>,
15973}
15974impl ImportSemaphoreZirconHandleInfoFUCHSIA {
15975    /// Start building this struct; `s_type` is already set to the correct variant.
15976    #[inline]
15977    pub fn builder<'a>() -> ImportSemaphoreZirconHandleInfoFUCHSIABuilder<'a> {
15978        ImportSemaphoreZirconHandleInfoFUCHSIABuilder {
15979            inner: ImportSemaphoreZirconHandleInfoFUCHSIA {
15980                s_type: StructureType::from_raw(1000365000i32),
15981                ..Default::default()
15982            },
15983            _marker: core::marker::PhantomData,
15984        }
15985    }
15986}
15987impl<'a> ImportSemaphoreZirconHandleInfoFUCHSIABuilder<'a> {
15988    #[inline]
15989    pub fn semaphore(mut self, value: Semaphore) -> Self {
15990        self.inner.semaphore = value;
15991        self
15992    }
15993    #[inline]
15994    pub fn flags(mut self, value: SemaphoreImportFlags) -> Self {
15995        self.inner.flags = value;
15996        self
15997    }
15998    #[inline]
15999    pub fn handle_type(mut self, value: ExternalSemaphoreHandleTypeFlagBits) -> Self {
16000        self.inner.handle_type = value;
16001        self
16002    }
16003    #[inline]
16004    pub fn zircon_handle(mut self, value: u32) -> Self {
16005        self.inner.zircon_handle = value;
16006        self
16007    }
16008    ///Prepend a struct to the pNext chain. See [`ImportSemaphoreZirconHandleInfoFUCHSIA`]'s **Extended By** section for valid types.
16009    #[inline]
16010    pub fn push_next<T: ExtendsImportSemaphoreZirconHandleInfoFUCHSIA>(
16011        mut self,
16012        next: &'a mut T,
16013    ) -> Self {
16014        unsafe {
16015            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
16016            (*next_ptr).p_next = self.inner.p_next as *mut _;
16017            self.inner.p_next = <*mut BaseOutStructure>::cast::<
16018                core::ffi::c_void,
16019            >(next_ptr) as *const _;
16020        }
16021        self
16022    }
16023}
16024impl<'a> core::ops::Deref for ImportSemaphoreZirconHandleInfoFUCHSIABuilder<'a> {
16025    type Target = ImportSemaphoreZirconHandleInfoFUCHSIA;
16026    #[inline]
16027    fn deref(&self) -> &Self::Target {
16028        &self.inner
16029    }
16030}
16031impl<'a> core::ops::DerefMut for ImportSemaphoreZirconHandleInfoFUCHSIABuilder<'a> {
16032    #[inline]
16033    fn deref_mut(&mut self) -> &mut Self::Target {
16034        &mut self.inner
16035    }
16036}
16037///Builder for [`SemaphoreGetZirconHandleInfoFUCHSIA`] with lifetime-tied pNext safety.
16038pub struct SemaphoreGetZirconHandleInfoFUCHSIABuilder<'a> {
16039    inner: SemaphoreGetZirconHandleInfoFUCHSIA,
16040    _marker: core::marker::PhantomData<&'a ()>,
16041}
16042impl SemaphoreGetZirconHandleInfoFUCHSIA {
16043    /// Start building this struct; `s_type` is already set to the correct variant.
16044    #[inline]
16045    pub fn builder<'a>() -> SemaphoreGetZirconHandleInfoFUCHSIABuilder<'a> {
16046        SemaphoreGetZirconHandleInfoFUCHSIABuilder {
16047            inner: SemaphoreGetZirconHandleInfoFUCHSIA {
16048                s_type: StructureType::from_raw(1000365001i32),
16049                ..Default::default()
16050            },
16051            _marker: core::marker::PhantomData,
16052        }
16053    }
16054}
16055impl<'a> SemaphoreGetZirconHandleInfoFUCHSIABuilder<'a> {
16056    #[inline]
16057    pub fn semaphore(mut self, value: Semaphore) -> Self {
16058        self.inner.semaphore = value;
16059        self
16060    }
16061    #[inline]
16062    pub fn handle_type(mut self, value: ExternalSemaphoreHandleTypeFlagBits) -> Self {
16063        self.inner.handle_type = value;
16064        self
16065    }
16066    ///Prepend a struct to the pNext chain. See [`SemaphoreGetZirconHandleInfoFUCHSIA`]'s **Extended By** section for valid types.
16067    #[inline]
16068    pub fn push_next<T: ExtendsSemaphoreGetZirconHandleInfoFUCHSIA>(
16069        mut self,
16070        next: &'a mut T,
16071    ) -> Self {
16072        unsafe {
16073            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
16074            (*next_ptr).p_next = self.inner.p_next as *mut _;
16075            self.inner.p_next = <*mut BaseOutStructure>::cast::<
16076                core::ffi::c_void,
16077            >(next_ptr) as *const _;
16078        }
16079        self
16080    }
16081}
16082impl<'a> core::ops::Deref for SemaphoreGetZirconHandleInfoFUCHSIABuilder<'a> {
16083    type Target = SemaphoreGetZirconHandleInfoFUCHSIA;
16084    #[inline]
16085    fn deref(&self) -> &Self::Target {
16086        &self.inner
16087    }
16088}
16089impl<'a> core::ops::DerefMut for SemaphoreGetZirconHandleInfoFUCHSIABuilder<'a> {
16090    #[inline]
16091    fn deref_mut(&mut self) -> &mut Self::Target {
16092        &mut self.inner
16093    }
16094}
16095///Builder for [`PhysicalDeviceExternalFenceInfo`] with lifetime-tied pNext safety.
16096pub struct PhysicalDeviceExternalFenceInfoBuilder<'a> {
16097    inner: PhysicalDeviceExternalFenceInfo,
16098    _marker: core::marker::PhantomData<&'a ()>,
16099}
16100impl PhysicalDeviceExternalFenceInfo {
16101    /// Start building this struct; `s_type` is already set to the correct variant.
16102    #[inline]
16103    pub fn builder<'a>() -> PhysicalDeviceExternalFenceInfoBuilder<'a> {
16104        PhysicalDeviceExternalFenceInfoBuilder {
16105            inner: PhysicalDeviceExternalFenceInfo {
16106                s_type: StructureType::from_raw(1000112000i32),
16107                ..Default::default()
16108            },
16109            _marker: core::marker::PhantomData,
16110        }
16111    }
16112}
16113impl<'a> PhysicalDeviceExternalFenceInfoBuilder<'a> {
16114    #[inline]
16115    pub fn handle_type(mut self, value: ExternalFenceHandleTypeFlagBits) -> Self {
16116        self.inner.handle_type = value;
16117        self
16118    }
16119    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceExternalFenceInfo`]'s **Extended By** section for valid types.
16120    #[inline]
16121    pub fn push_next<T: ExtendsPhysicalDeviceExternalFenceInfo>(
16122        mut self,
16123        next: &'a mut T,
16124    ) -> Self {
16125        unsafe {
16126            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
16127            (*next_ptr).p_next = self.inner.p_next as *mut _;
16128            self.inner.p_next = <*mut BaseOutStructure>::cast::<
16129                core::ffi::c_void,
16130            >(next_ptr) as *const _;
16131        }
16132        self
16133    }
16134}
16135impl<'a> core::ops::Deref for PhysicalDeviceExternalFenceInfoBuilder<'a> {
16136    type Target = PhysicalDeviceExternalFenceInfo;
16137    #[inline]
16138    fn deref(&self) -> &Self::Target {
16139        &self.inner
16140    }
16141}
16142impl<'a> core::ops::DerefMut for PhysicalDeviceExternalFenceInfoBuilder<'a> {
16143    #[inline]
16144    fn deref_mut(&mut self) -> &mut Self::Target {
16145        &mut self.inner
16146    }
16147}
16148///Builder for [`ExternalFenceProperties`] with lifetime-tied pNext safety.
16149pub struct ExternalFencePropertiesBuilder<'a> {
16150    inner: ExternalFenceProperties,
16151    _marker: core::marker::PhantomData<&'a ()>,
16152}
16153impl ExternalFenceProperties {
16154    /// Start building this struct; `s_type` is already set to the correct variant.
16155    #[inline]
16156    pub fn builder<'a>() -> ExternalFencePropertiesBuilder<'a> {
16157        ExternalFencePropertiesBuilder {
16158            inner: ExternalFenceProperties {
16159                s_type: StructureType::from_raw(1000112001i32),
16160                ..Default::default()
16161            },
16162            _marker: core::marker::PhantomData,
16163        }
16164    }
16165}
16166impl<'a> ExternalFencePropertiesBuilder<'a> {
16167    #[inline]
16168    pub fn export_from_imported_handle_types(
16169        mut self,
16170        value: ExternalFenceHandleTypeFlags,
16171    ) -> Self {
16172        self.inner.export_from_imported_handle_types = value;
16173        self
16174    }
16175    #[inline]
16176    pub fn compatible_handle_types(
16177        mut self,
16178        value: ExternalFenceHandleTypeFlags,
16179    ) -> Self {
16180        self.inner.compatible_handle_types = value;
16181        self
16182    }
16183    #[inline]
16184    pub fn external_fence_features(mut self, value: ExternalFenceFeatureFlags) -> Self {
16185        self.inner.external_fence_features = value;
16186        self
16187    }
16188}
16189impl<'a> core::ops::Deref for ExternalFencePropertiesBuilder<'a> {
16190    type Target = ExternalFenceProperties;
16191    #[inline]
16192    fn deref(&self) -> &Self::Target {
16193        &self.inner
16194    }
16195}
16196impl<'a> core::ops::DerefMut for ExternalFencePropertiesBuilder<'a> {
16197    #[inline]
16198    fn deref_mut(&mut self) -> &mut Self::Target {
16199        &mut self.inner
16200    }
16201}
16202///Builder for [`ExportFenceCreateInfo`] with lifetime-tied pNext safety.
16203pub struct ExportFenceCreateInfoBuilder<'a> {
16204    inner: ExportFenceCreateInfo,
16205    _marker: core::marker::PhantomData<&'a ()>,
16206}
16207impl ExportFenceCreateInfo {
16208    /// Start building this struct; `s_type` is already set to the correct variant.
16209    #[inline]
16210    pub fn builder<'a>() -> ExportFenceCreateInfoBuilder<'a> {
16211        ExportFenceCreateInfoBuilder {
16212            inner: ExportFenceCreateInfo {
16213                s_type: StructureType::from_raw(1000113000i32),
16214                ..Default::default()
16215            },
16216            _marker: core::marker::PhantomData,
16217        }
16218    }
16219}
16220impl<'a> ExportFenceCreateInfoBuilder<'a> {
16221    #[inline]
16222    pub fn handle_types(mut self, value: ExternalFenceHandleTypeFlags) -> Self {
16223        self.inner.handle_types = value;
16224        self
16225    }
16226    ///Prepend a struct to the pNext chain. See [`ExportFenceCreateInfo`]'s **Extended By** section for valid types.
16227    #[inline]
16228    pub fn push_next<T: ExtendsExportFenceCreateInfo>(
16229        mut self,
16230        next: &'a mut T,
16231    ) -> Self {
16232        unsafe {
16233            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
16234            (*next_ptr).p_next = self.inner.p_next as *mut _;
16235            self.inner.p_next = <*mut BaseOutStructure>::cast::<
16236                core::ffi::c_void,
16237            >(next_ptr) as *const _;
16238        }
16239        self
16240    }
16241}
16242impl<'a> core::ops::Deref for ExportFenceCreateInfoBuilder<'a> {
16243    type Target = ExportFenceCreateInfo;
16244    #[inline]
16245    fn deref(&self) -> &Self::Target {
16246        &self.inner
16247    }
16248}
16249impl<'a> core::ops::DerefMut for ExportFenceCreateInfoBuilder<'a> {
16250    #[inline]
16251    fn deref_mut(&mut self) -> &mut Self::Target {
16252        &mut self.inner
16253    }
16254}
16255///Builder for [`ImportFenceWin32HandleInfoKHR`] with lifetime-tied pNext safety.
16256pub struct ImportFenceWin32HandleInfoKHRBuilder<'a> {
16257    inner: ImportFenceWin32HandleInfoKHR,
16258    _marker: core::marker::PhantomData<&'a ()>,
16259}
16260impl ImportFenceWin32HandleInfoKHR {
16261    /// Start building this struct; `s_type` is already set to the correct variant.
16262    #[inline]
16263    pub fn builder<'a>() -> ImportFenceWin32HandleInfoKHRBuilder<'a> {
16264        ImportFenceWin32HandleInfoKHRBuilder {
16265            inner: ImportFenceWin32HandleInfoKHR {
16266                s_type: StructureType::from_raw(1000114000i32),
16267                ..Default::default()
16268            },
16269            _marker: core::marker::PhantomData,
16270        }
16271    }
16272}
16273impl<'a> ImportFenceWin32HandleInfoKHRBuilder<'a> {
16274    #[inline]
16275    pub fn fence(mut self, value: Fence) -> Self {
16276        self.inner.fence = value;
16277        self
16278    }
16279    #[inline]
16280    pub fn flags(mut self, value: FenceImportFlags) -> Self {
16281        self.inner.flags = value;
16282        self
16283    }
16284    #[inline]
16285    pub fn handle_type(mut self, value: ExternalFenceHandleTypeFlagBits) -> Self {
16286        self.inner.handle_type = value;
16287        self
16288    }
16289    #[inline]
16290    pub fn handle(mut self, value: isize) -> Self {
16291        self.inner.handle = value;
16292        self
16293    }
16294    #[inline]
16295    pub fn name(mut self, value: *const u16) -> Self {
16296        self.inner.name = value;
16297        self
16298    }
16299    ///Prepend a struct to the pNext chain. See [`ImportFenceWin32HandleInfoKHR`]'s **Extended By** section for valid types.
16300    #[inline]
16301    pub fn push_next<T: ExtendsImportFenceWin32HandleInfoKHR>(
16302        mut self,
16303        next: &'a mut T,
16304    ) -> Self {
16305        unsafe {
16306            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
16307            (*next_ptr).p_next = self.inner.p_next as *mut _;
16308            self.inner.p_next = <*mut BaseOutStructure>::cast::<
16309                core::ffi::c_void,
16310            >(next_ptr) as *const _;
16311        }
16312        self
16313    }
16314}
16315impl<'a> core::ops::Deref for ImportFenceWin32HandleInfoKHRBuilder<'a> {
16316    type Target = ImportFenceWin32HandleInfoKHR;
16317    #[inline]
16318    fn deref(&self) -> &Self::Target {
16319        &self.inner
16320    }
16321}
16322impl<'a> core::ops::DerefMut for ImportFenceWin32HandleInfoKHRBuilder<'a> {
16323    #[inline]
16324    fn deref_mut(&mut self) -> &mut Self::Target {
16325        &mut self.inner
16326    }
16327}
16328///Builder for [`ExportFenceWin32HandleInfoKHR`] with lifetime-tied pNext safety.
16329pub struct ExportFenceWin32HandleInfoKHRBuilder<'a> {
16330    inner: ExportFenceWin32HandleInfoKHR,
16331    _marker: core::marker::PhantomData<&'a ()>,
16332}
16333impl ExportFenceWin32HandleInfoKHR {
16334    /// Start building this struct; `s_type` is already set to the correct variant.
16335    #[inline]
16336    pub fn builder<'a>() -> ExportFenceWin32HandleInfoKHRBuilder<'a> {
16337        ExportFenceWin32HandleInfoKHRBuilder {
16338            inner: ExportFenceWin32HandleInfoKHR {
16339                s_type: StructureType::from_raw(1000114001i32),
16340                ..Default::default()
16341            },
16342            _marker: core::marker::PhantomData,
16343        }
16344    }
16345}
16346impl<'a> ExportFenceWin32HandleInfoKHRBuilder<'a> {
16347    #[inline]
16348    pub fn attributes(mut self, value: *const core::ffi::c_void) -> Self {
16349        self.inner.p_attributes = value;
16350        self
16351    }
16352    #[inline]
16353    pub fn dw_access(mut self, value: u32) -> Self {
16354        self.inner.dw_access = value;
16355        self
16356    }
16357    #[inline]
16358    pub fn name(mut self, value: *const u16) -> Self {
16359        self.inner.name = value;
16360        self
16361    }
16362    ///Prepend a struct to the pNext chain. See [`ExportFenceWin32HandleInfoKHR`]'s **Extended By** section for valid types.
16363    #[inline]
16364    pub fn push_next<T: ExtendsExportFenceWin32HandleInfoKHR>(
16365        mut self,
16366        next: &'a mut T,
16367    ) -> Self {
16368        unsafe {
16369            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
16370            (*next_ptr).p_next = self.inner.p_next as *mut _;
16371            self.inner.p_next = <*mut BaseOutStructure>::cast::<
16372                core::ffi::c_void,
16373            >(next_ptr) as *const _;
16374        }
16375        self
16376    }
16377}
16378impl<'a> core::ops::Deref for ExportFenceWin32HandleInfoKHRBuilder<'a> {
16379    type Target = ExportFenceWin32HandleInfoKHR;
16380    #[inline]
16381    fn deref(&self) -> &Self::Target {
16382        &self.inner
16383    }
16384}
16385impl<'a> core::ops::DerefMut for ExportFenceWin32HandleInfoKHRBuilder<'a> {
16386    #[inline]
16387    fn deref_mut(&mut self) -> &mut Self::Target {
16388        &mut self.inner
16389    }
16390}
16391///Builder for [`FenceGetWin32HandleInfoKHR`] with lifetime-tied pNext safety.
16392pub struct FenceGetWin32HandleInfoKHRBuilder<'a> {
16393    inner: FenceGetWin32HandleInfoKHR,
16394    _marker: core::marker::PhantomData<&'a ()>,
16395}
16396impl FenceGetWin32HandleInfoKHR {
16397    /// Start building this struct; `s_type` is already set to the correct variant.
16398    #[inline]
16399    pub fn builder<'a>() -> FenceGetWin32HandleInfoKHRBuilder<'a> {
16400        FenceGetWin32HandleInfoKHRBuilder {
16401            inner: FenceGetWin32HandleInfoKHR {
16402                s_type: StructureType::from_raw(1000114002i32),
16403                ..Default::default()
16404            },
16405            _marker: core::marker::PhantomData,
16406        }
16407    }
16408}
16409impl<'a> FenceGetWin32HandleInfoKHRBuilder<'a> {
16410    #[inline]
16411    pub fn fence(mut self, value: Fence) -> Self {
16412        self.inner.fence = value;
16413        self
16414    }
16415    #[inline]
16416    pub fn handle_type(mut self, value: ExternalFenceHandleTypeFlagBits) -> Self {
16417        self.inner.handle_type = value;
16418        self
16419    }
16420    ///Prepend a struct to the pNext chain. See [`FenceGetWin32HandleInfoKHR`]'s **Extended By** section for valid types.
16421    #[inline]
16422    pub fn push_next<T: ExtendsFenceGetWin32HandleInfoKHR>(
16423        mut self,
16424        next: &'a mut T,
16425    ) -> Self {
16426        unsafe {
16427            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
16428            (*next_ptr).p_next = self.inner.p_next as *mut _;
16429            self.inner.p_next = <*mut BaseOutStructure>::cast::<
16430                core::ffi::c_void,
16431            >(next_ptr) as *const _;
16432        }
16433        self
16434    }
16435}
16436impl<'a> core::ops::Deref for FenceGetWin32HandleInfoKHRBuilder<'a> {
16437    type Target = FenceGetWin32HandleInfoKHR;
16438    #[inline]
16439    fn deref(&self) -> &Self::Target {
16440        &self.inner
16441    }
16442}
16443impl<'a> core::ops::DerefMut for FenceGetWin32HandleInfoKHRBuilder<'a> {
16444    #[inline]
16445    fn deref_mut(&mut self) -> &mut Self::Target {
16446        &mut self.inner
16447    }
16448}
16449///Builder for [`ImportFenceFdInfoKHR`] with lifetime-tied pNext safety.
16450pub struct ImportFenceFdInfoKHRBuilder<'a> {
16451    inner: ImportFenceFdInfoKHR,
16452    _marker: core::marker::PhantomData<&'a ()>,
16453}
16454impl ImportFenceFdInfoKHR {
16455    /// Start building this struct; `s_type` is already set to the correct variant.
16456    #[inline]
16457    pub fn builder<'a>() -> ImportFenceFdInfoKHRBuilder<'a> {
16458        ImportFenceFdInfoKHRBuilder {
16459            inner: ImportFenceFdInfoKHR {
16460                s_type: StructureType::from_raw(1000115000i32),
16461                ..Default::default()
16462            },
16463            _marker: core::marker::PhantomData,
16464        }
16465    }
16466}
16467impl<'a> ImportFenceFdInfoKHRBuilder<'a> {
16468    #[inline]
16469    pub fn fence(mut self, value: Fence) -> Self {
16470        self.inner.fence = value;
16471        self
16472    }
16473    #[inline]
16474    pub fn flags(mut self, value: FenceImportFlags) -> Self {
16475        self.inner.flags = value;
16476        self
16477    }
16478    #[inline]
16479    pub fn handle_type(mut self, value: ExternalFenceHandleTypeFlagBits) -> Self {
16480        self.inner.handle_type = value;
16481        self
16482    }
16483    #[inline]
16484    pub fn fd(mut self, value: core::ffi::c_int) -> Self {
16485        self.inner.fd = value;
16486        self
16487    }
16488    ///Prepend a struct to the pNext chain. See [`ImportFenceFdInfoKHR`]'s **Extended By** section for valid types.
16489    #[inline]
16490    pub fn push_next<T: ExtendsImportFenceFdInfoKHR>(mut self, next: &'a mut T) -> Self {
16491        unsafe {
16492            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
16493            (*next_ptr).p_next = self.inner.p_next as *mut _;
16494            self.inner.p_next = <*mut BaseOutStructure>::cast::<
16495                core::ffi::c_void,
16496            >(next_ptr) as *const _;
16497        }
16498        self
16499    }
16500}
16501impl<'a> core::ops::Deref for ImportFenceFdInfoKHRBuilder<'a> {
16502    type Target = ImportFenceFdInfoKHR;
16503    #[inline]
16504    fn deref(&self) -> &Self::Target {
16505        &self.inner
16506    }
16507}
16508impl<'a> core::ops::DerefMut for ImportFenceFdInfoKHRBuilder<'a> {
16509    #[inline]
16510    fn deref_mut(&mut self) -> &mut Self::Target {
16511        &mut self.inner
16512    }
16513}
16514///Builder for [`FenceGetFdInfoKHR`] with lifetime-tied pNext safety.
16515pub struct FenceGetFdInfoKHRBuilder<'a> {
16516    inner: FenceGetFdInfoKHR,
16517    _marker: core::marker::PhantomData<&'a ()>,
16518}
16519impl FenceGetFdInfoKHR {
16520    /// Start building this struct; `s_type` is already set to the correct variant.
16521    #[inline]
16522    pub fn builder<'a>() -> FenceGetFdInfoKHRBuilder<'a> {
16523        FenceGetFdInfoKHRBuilder {
16524            inner: FenceGetFdInfoKHR {
16525                s_type: StructureType::from_raw(1000115001i32),
16526                ..Default::default()
16527            },
16528            _marker: core::marker::PhantomData,
16529        }
16530    }
16531}
16532impl<'a> FenceGetFdInfoKHRBuilder<'a> {
16533    #[inline]
16534    pub fn fence(mut self, value: Fence) -> Self {
16535        self.inner.fence = value;
16536        self
16537    }
16538    #[inline]
16539    pub fn handle_type(mut self, value: ExternalFenceHandleTypeFlagBits) -> Self {
16540        self.inner.handle_type = value;
16541        self
16542    }
16543    ///Prepend a struct to the pNext chain. See [`FenceGetFdInfoKHR`]'s **Extended By** section for valid types.
16544    #[inline]
16545    pub fn push_next<T: ExtendsFenceGetFdInfoKHR>(mut self, next: &'a mut T) -> Self {
16546        unsafe {
16547            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
16548            (*next_ptr).p_next = self.inner.p_next as *mut _;
16549            self.inner.p_next = <*mut BaseOutStructure>::cast::<
16550                core::ffi::c_void,
16551            >(next_ptr) as *const _;
16552        }
16553        self
16554    }
16555}
16556impl<'a> core::ops::Deref for FenceGetFdInfoKHRBuilder<'a> {
16557    type Target = FenceGetFdInfoKHR;
16558    #[inline]
16559    fn deref(&self) -> &Self::Target {
16560        &self.inner
16561    }
16562}
16563impl<'a> core::ops::DerefMut for FenceGetFdInfoKHRBuilder<'a> {
16564    #[inline]
16565    fn deref_mut(&mut self) -> &mut Self::Target {
16566        &mut self.inner
16567    }
16568}
16569///Builder for [`ExportFenceSciSyncInfoNV`] with lifetime-tied pNext safety.
16570pub struct ExportFenceSciSyncInfoNVBuilder<'a> {
16571    inner: ExportFenceSciSyncInfoNV,
16572    _marker: core::marker::PhantomData<&'a ()>,
16573}
16574impl ExportFenceSciSyncInfoNV {
16575    /// Start building this struct; `s_type` is already set to the correct variant.
16576    #[inline]
16577    pub fn builder<'a>() -> ExportFenceSciSyncInfoNVBuilder<'a> {
16578        ExportFenceSciSyncInfoNVBuilder {
16579            inner: ExportFenceSciSyncInfoNV {
16580                s_type: Default::default(),
16581                ..Default::default()
16582            },
16583            _marker: core::marker::PhantomData,
16584        }
16585    }
16586}
16587impl<'a> ExportFenceSciSyncInfoNVBuilder<'a> {
16588    #[inline]
16589    pub fn p_attributes(mut self, value: *const core::ffi::c_void) -> Self {
16590        self.inner.p_attributes = value;
16591        self
16592    }
16593    ///Prepend a struct to the pNext chain. See [`ExportFenceSciSyncInfoNV`]'s **Extended By** section for valid types.
16594    #[inline]
16595    pub fn push_next<T: ExtendsExportFenceSciSyncInfoNV>(
16596        mut self,
16597        next: &'a mut T,
16598    ) -> Self {
16599        unsafe {
16600            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
16601            (*next_ptr).p_next = self.inner.p_next as *mut _;
16602            self.inner.p_next = <*mut BaseOutStructure>::cast::<
16603                core::ffi::c_void,
16604            >(next_ptr) as *const _;
16605        }
16606        self
16607    }
16608}
16609impl<'a> core::ops::Deref for ExportFenceSciSyncInfoNVBuilder<'a> {
16610    type Target = ExportFenceSciSyncInfoNV;
16611    #[inline]
16612    fn deref(&self) -> &Self::Target {
16613        &self.inner
16614    }
16615}
16616impl<'a> core::ops::DerefMut for ExportFenceSciSyncInfoNVBuilder<'a> {
16617    #[inline]
16618    fn deref_mut(&mut self) -> &mut Self::Target {
16619        &mut self.inner
16620    }
16621}
16622///Builder for [`ImportFenceSciSyncInfoNV`] with lifetime-tied pNext safety.
16623pub struct ImportFenceSciSyncInfoNVBuilder<'a> {
16624    inner: ImportFenceSciSyncInfoNV,
16625    _marker: core::marker::PhantomData<&'a ()>,
16626}
16627impl ImportFenceSciSyncInfoNV {
16628    /// Start building this struct; `s_type` is already set to the correct variant.
16629    #[inline]
16630    pub fn builder<'a>() -> ImportFenceSciSyncInfoNVBuilder<'a> {
16631        ImportFenceSciSyncInfoNVBuilder {
16632            inner: ImportFenceSciSyncInfoNV {
16633                s_type: Default::default(),
16634                ..Default::default()
16635            },
16636            _marker: core::marker::PhantomData,
16637        }
16638    }
16639}
16640impl<'a> ImportFenceSciSyncInfoNVBuilder<'a> {
16641    #[inline]
16642    pub fn fence(mut self, value: Fence) -> Self {
16643        self.inner.fence = value;
16644        self
16645    }
16646    #[inline]
16647    pub fn handle_type(mut self, value: ExternalFenceHandleTypeFlagBits) -> Self {
16648        self.inner.handle_type = value;
16649        self
16650    }
16651    #[inline]
16652    pub fn handle(mut self, value: *mut core::ffi::c_void) -> Self {
16653        self.inner.handle = value;
16654        self
16655    }
16656    ///Prepend a struct to the pNext chain. See [`ImportFenceSciSyncInfoNV`]'s **Extended By** section for valid types.
16657    #[inline]
16658    pub fn push_next<T: ExtendsImportFenceSciSyncInfoNV>(
16659        mut self,
16660        next: &'a mut T,
16661    ) -> Self {
16662        unsafe {
16663            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
16664            (*next_ptr).p_next = self.inner.p_next as *mut _;
16665            self.inner.p_next = <*mut BaseOutStructure>::cast::<
16666                core::ffi::c_void,
16667            >(next_ptr) as *const _;
16668        }
16669        self
16670    }
16671}
16672impl<'a> core::ops::Deref for ImportFenceSciSyncInfoNVBuilder<'a> {
16673    type Target = ImportFenceSciSyncInfoNV;
16674    #[inline]
16675    fn deref(&self) -> &Self::Target {
16676        &self.inner
16677    }
16678}
16679impl<'a> core::ops::DerefMut for ImportFenceSciSyncInfoNVBuilder<'a> {
16680    #[inline]
16681    fn deref_mut(&mut self) -> &mut Self::Target {
16682        &mut self.inner
16683    }
16684}
16685///Builder for [`FenceGetSciSyncInfoNV`] with lifetime-tied pNext safety.
16686pub struct FenceGetSciSyncInfoNVBuilder<'a> {
16687    inner: FenceGetSciSyncInfoNV,
16688    _marker: core::marker::PhantomData<&'a ()>,
16689}
16690impl FenceGetSciSyncInfoNV {
16691    /// Start building this struct; `s_type` is already set to the correct variant.
16692    #[inline]
16693    pub fn builder<'a>() -> FenceGetSciSyncInfoNVBuilder<'a> {
16694        FenceGetSciSyncInfoNVBuilder {
16695            inner: FenceGetSciSyncInfoNV {
16696                s_type: Default::default(),
16697                ..Default::default()
16698            },
16699            _marker: core::marker::PhantomData,
16700        }
16701    }
16702}
16703impl<'a> FenceGetSciSyncInfoNVBuilder<'a> {
16704    #[inline]
16705    pub fn fence(mut self, value: Fence) -> Self {
16706        self.inner.fence = value;
16707        self
16708    }
16709    #[inline]
16710    pub fn handle_type(mut self, value: ExternalFenceHandleTypeFlagBits) -> Self {
16711        self.inner.handle_type = value;
16712        self
16713    }
16714    ///Prepend a struct to the pNext chain. See [`FenceGetSciSyncInfoNV`]'s **Extended By** section for valid types.
16715    #[inline]
16716    pub fn push_next<T: ExtendsFenceGetSciSyncInfoNV>(
16717        mut self,
16718        next: &'a mut T,
16719    ) -> Self {
16720        unsafe {
16721            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
16722            (*next_ptr).p_next = self.inner.p_next as *mut _;
16723            self.inner.p_next = <*mut BaseOutStructure>::cast::<
16724                core::ffi::c_void,
16725            >(next_ptr) as *const _;
16726        }
16727        self
16728    }
16729}
16730impl<'a> core::ops::Deref for FenceGetSciSyncInfoNVBuilder<'a> {
16731    type Target = FenceGetSciSyncInfoNV;
16732    #[inline]
16733    fn deref(&self) -> &Self::Target {
16734        &self.inner
16735    }
16736}
16737impl<'a> core::ops::DerefMut for FenceGetSciSyncInfoNVBuilder<'a> {
16738    #[inline]
16739    fn deref_mut(&mut self) -> &mut Self::Target {
16740        &mut self.inner
16741    }
16742}
16743///Builder for [`ExportSemaphoreSciSyncInfoNV`] with lifetime-tied pNext safety.
16744pub struct ExportSemaphoreSciSyncInfoNVBuilder<'a> {
16745    inner: ExportSemaphoreSciSyncInfoNV,
16746    _marker: core::marker::PhantomData<&'a ()>,
16747}
16748impl ExportSemaphoreSciSyncInfoNV {
16749    /// Start building this struct; `s_type` is already set to the correct variant.
16750    #[inline]
16751    pub fn builder<'a>() -> ExportSemaphoreSciSyncInfoNVBuilder<'a> {
16752        ExportSemaphoreSciSyncInfoNVBuilder {
16753            inner: ExportSemaphoreSciSyncInfoNV {
16754                s_type: Default::default(),
16755                ..Default::default()
16756            },
16757            _marker: core::marker::PhantomData,
16758        }
16759    }
16760}
16761impl<'a> ExportSemaphoreSciSyncInfoNVBuilder<'a> {
16762    #[inline]
16763    pub fn p_attributes(mut self, value: *const core::ffi::c_void) -> Self {
16764        self.inner.p_attributes = value;
16765        self
16766    }
16767    ///Prepend a struct to the pNext chain. See [`ExportSemaphoreSciSyncInfoNV`]'s **Extended By** section for valid types.
16768    #[inline]
16769    pub fn push_next<T: ExtendsExportSemaphoreSciSyncInfoNV>(
16770        mut self,
16771        next: &'a mut T,
16772    ) -> Self {
16773        unsafe {
16774            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
16775            (*next_ptr).p_next = self.inner.p_next as *mut _;
16776            self.inner.p_next = <*mut BaseOutStructure>::cast::<
16777                core::ffi::c_void,
16778            >(next_ptr) as *const _;
16779        }
16780        self
16781    }
16782}
16783impl<'a> core::ops::Deref for ExportSemaphoreSciSyncInfoNVBuilder<'a> {
16784    type Target = ExportSemaphoreSciSyncInfoNV;
16785    #[inline]
16786    fn deref(&self) -> &Self::Target {
16787        &self.inner
16788    }
16789}
16790impl<'a> core::ops::DerefMut for ExportSemaphoreSciSyncInfoNVBuilder<'a> {
16791    #[inline]
16792    fn deref_mut(&mut self) -> &mut Self::Target {
16793        &mut self.inner
16794    }
16795}
16796///Builder for [`ImportSemaphoreSciSyncInfoNV`] with lifetime-tied pNext safety.
16797pub struct ImportSemaphoreSciSyncInfoNVBuilder<'a> {
16798    inner: ImportSemaphoreSciSyncInfoNV,
16799    _marker: core::marker::PhantomData<&'a ()>,
16800}
16801impl ImportSemaphoreSciSyncInfoNV {
16802    /// Start building this struct; `s_type` is already set to the correct variant.
16803    #[inline]
16804    pub fn builder<'a>() -> ImportSemaphoreSciSyncInfoNVBuilder<'a> {
16805        ImportSemaphoreSciSyncInfoNVBuilder {
16806            inner: ImportSemaphoreSciSyncInfoNV {
16807                s_type: Default::default(),
16808                ..Default::default()
16809            },
16810            _marker: core::marker::PhantomData,
16811        }
16812    }
16813}
16814impl<'a> ImportSemaphoreSciSyncInfoNVBuilder<'a> {
16815    #[inline]
16816    pub fn semaphore(mut self, value: Semaphore) -> Self {
16817        self.inner.semaphore = value;
16818        self
16819    }
16820    #[inline]
16821    pub fn handle_type(mut self, value: ExternalSemaphoreHandleTypeFlagBits) -> Self {
16822        self.inner.handle_type = value;
16823        self
16824    }
16825    #[inline]
16826    pub fn handle(mut self, value: *mut core::ffi::c_void) -> Self {
16827        self.inner.handle = value;
16828        self
16829    }
16830    ///Prepend a struct to the pNext chain. See [`ImportSemaphoreSciSyncInfoNV`]'s **Extended By** section for valid types.
16831    #[inline]
16832    pub fn push_next<T: ExtendsImportSemaphoreSciSyncInfoNV>(
16833        mut self,
16834        next: &'a mut T,
16835    ) -> Self {
16836        unsafe {
16837            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
16838            (*next_ptr).p_next = self.inner.p_next as *mut _;
16839            self.inner.p_next = <*mut BaseOutStructure>::cast::<
16840                core::ffi::c_void,
16841            >(next_ptr) as *const _;
16842        }
16843        self
16844    }
16845}
16846impl<'a> core::ops::Deref for ImportSemaphoreSciSyncInfoNVBuilder<'a> {
16847    type Target = ImportSemaphoreSciSyncInfoNV;
16848    #[inline]
16849    fn deref(&self) -> &Self::Target {
16850        &self.inner
16851    }
16852}
16853impl<'a> core::ops::DerefMut for ImportSemaphoreSciSyncInfoNVBuilder<'a> {
16854    #[inline]
16855    fn deref_mut(&mut self) -> &mut Self::Target {
16856        &mut self.inner
16857    }
16858}
16859///Builder for [`SemaphoreGetSciSyncInfoNV`] with lifetime-tied pNext safety.
16860pub struct SemaphoreGetSciSyncInfoNVBuilder<'a> {
16861    inner: SemaphoreGetSciSyncInfoNV,
16862    _marker: core::marker::PhantomData<&'a ()>,
16863}
16864impl SemaphoreGetSciSyncInfoNV {
16865    /// Start building this struct; `s_type` is already set to the correct variant.
16866    #[inline]
16867    pub fn builder<'a>() -> SemaphoreGetSciSyncInfoNVBuilder<'a> {
16868        SemaphoreGetSciSyncInfoNVBuilder {
16869            inner: SemaphoreGetSciSyncInfoNV {
16870                s_type: Default::default(),
16871                ..Default::default()
16872            },
16873            _marker: core::marker::PhantomData,
16874        }
16875    }
16876}
16877impl<'a> SemaphoreGetSciSyncInfoNVBuilder<'a> {
16878    #[inline]
16879    pub fn semaphore(mut self, value: Semaphore) -> Self {
16880        self.inner.semaphore = value;
16881        self
16882    }
16883    #[inline]
16884    pub fn handle_type(mut self, value: ExternalSemaphoreHandleTypeFlagBits) -> Self {
16885        self.inner.handle_type = value;
16886        self
16887    }
16888    ///Prepend a struct to the pNext chain. See [`SemaphoreGetSciSyncInfoNV`]'s **Extended By** section for valid types.
16889    #[inline]
16890    pub fn push_next<T: ExtendsSemaphoreGetSciSyncInfoNV>(
16891        mut self,
16892        next: &'a mut T,
16893    ) -> Self {
16894        unsafe {
16895            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
16896            (*next_ptr).p_next = self.inner.p_next as *mut _;
16897            self.inner.p_next = <*mut BaseOutStructure>::cast::<
16898                core::ffi::c_void,
16899            >(next_ptr) as *const _;
16900        }
16901        self
16902    }
16903}
16904impl<'a> core::ops::Deref for SemaphoreGetSciSyncInfoNVBuilder<'a> {
16905    type Target = SemaphoreGetSciSyncInfoNV;
16906    #[inline]
16907    fn deref(&self) -> &Self::Target {
16908        &self.inner
16909    }
16910}
16911impl<'a> core::ops::DerefMut for SemaphoreGetSciSyncInfoNVBuilder<'a> {
16912    #[inline]
16913    fn deref_mut(&mut self) -> &mut Self::Target {
16914        &mut self.inner
16915    }
16916}
16917///Builder for [`SciSyncAttributesInfoNV`] with lifetime-tied pNext safety.
16918pub struct SciSyncAttributesInfoNVBuilder<'a> {
16919    inner: SciSyncAttributesInfoNV,
16920    _marker: core::marker::PhantomData<&'a ()>,
16921}
16922impl SciSyncAttributesInfoNV {
16923    /// Start building this struct; `s_type` is already set to the correct variant.
16924    #[inline]
16925    pub fn builder<'a>() -> SciSyncAttributesInfoNVBuilder<'a> {
16926        SciSyncAttributesInfoNVBuilder {
16927            inner: SciSyncAttributesInfoNV {
16928                s_type: Default::default(),
16929                ..Default::default()
16930            },
16931            _marker: core::marker::PhantomData,
16932        }
16933    }
16934}
16935impl<'a> SciSyncAttributesInfoNVBuilder<'a> {
16936    #[inline]
16937    pub fn client_type(mut self, value: SciSyncClientTypeNV) -> Self {
16938        self.inner.client_type = value;
16939        self
16940    }
16941    #[inline]
16942    pub fn primitive_type(mut self, value: SciSyncPrimitiveTypeNV) -> Self {
16943        self.inner.primitive_type = value;
16944        self
16945    }
16946    ///Prepend a struct to the pNext chain. See [`SciSyncAttributesInfoNV`]'s **Extended By** section for valid types.
16947    #[inline]
16948    pub fn push_next<T: ExtendsSciSyncAttributesInfoNV>(
16949        mut self,
16950        next: &'a mut T,
16951    ) -> Self {
16952        unsafe {
16953            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
16954            (*next_ptr).p_next = self.inner.p_next as *mut _;
16955            self.inner.p_next = <*mut BaseOutStructure>::cast::<
16956                core::ffi::c_void,
16957            >(next_ptr) as *const _;
16958        }
16959        self
16960    }
16961}
16962impl<'a> core::ops::Deref for SciSyncAttributesInfoNVBuilder<'a> {
16963    type Target = SciSyncAttributesInfoNV;
16964    #[inline]
16965    fn deref(&self) -> &Self::Target {
16966        &self.inner
16967    }
16968}
16969impl<'a> core::ops::DerefMut for SciSyncAttributesInfoNVBuilder<'a> {
16970    #[inline]
16971    fn deref_mut(&mut self) -> &mut Self::Target {
16972        &mut self.inner
16973    }
16974}
16975///Builder for [`PhysicalDeviceExternalSciSyncFeaturesNV`] with lifetime-tied pNext safety.
16976pub struct PhysicalDeviceExternalSciSyncFeaturesNVBuilder<'a> {
16977    inner: PhysicalDeviceExternalSciSyncFeaturesNV,
16978    _marker: core::marker::PhantomData<&'a ()>,
16979}
16980impl PhysicalDeviceExternalSciSyncFeaturesNV {
16981    /// Start building this struct; `s_type` is already set to the correct variant.
16982    #[inline]
16983    pub fn builder<'a>() -> PhysicalDeviceExternalSciSyncFeaturesNVBuilder<'a> {
16984        PhysicalDeviceExternalSciSyncFeaturesNVBuilder {
16985            inner: PhysicalDeviceExternalSciSyncFeaturesNV {
16986                s_type: Default::default(),
16987                ..Default::default()
16988            },
16989            _marker: core::marker::PhantomData,
16990        }
16991    }
16992}
16993impl<'a> PhysicalDeviceExternalSciSyncFeaturesNVBuilder<'a> {
16994    #[inline]
16995    pub fn sci_sync_fence(mut self, value: bool) -> Self {
16996        self.inner.sci_sync_fence = value as u32;
16997        self
16998    }
16999    #[inline]
17000    pub fn sci_sync_semaphore(mut self, value: bool) -> Self {
17001        self.inner.sci_sync_semaphore = value as u32;
17002        self
17003    }
17004    #[inline]
17005    pub fn sci_sync_import(mut self, value: bool) -> Self {
17006        self.inner.sci_sync_import = value as u32;
17007        self
17008    }
17009    #[inline]
17010    pub fn sci_sync_export(mut self, value: bool) -> Self {
17011        self.inner.sci_sync_export = value as u32;
17012        self
17013    }
17014    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceExternalSciSyncFeaturesNV`]'s **Extended By** section for valid types.
17015    #[inline]
17016    pub fn push_next<T: ExtendsPhysicalDeviceExternalSciSyncFeaturesNV>(
17017        mut self,
17018        next: &'a mut T,
17019    ) -> Self {
17020        unsafe {
17021            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
17022            (*next_ptr).p_next = self.inner.p_next as *mut _;
17023            self.inner.p_next = <*mut BaseOutStructure>::cast::<
17024                core::ffi::c_void,
17025            >(next_ptr);
17026        }
17027        self
17028    }
17029}
17030impl<'a> core::ops::Deref for PhysicalDeviceExternalSciSyncFeaturesNVBuilder<'a> {
17031    type Target = PhysicalDeviceExternalSciSyncFeaturesNV;
17032    #[inline]
17033    fn deref(&self) -> &Self::Target {
17034        &self.inner
17035    }
17036}
17037impl<'a> core::ops::DerefMut for PhysicalDeviceExternalSciSyncFeaturesNVBuilder<'a> {
17038    #[inline]
17039    fn deref_mut(&mut self) -> &mut Self::Target {
17040        &mut self.inner
17041    }
17042}
17043///Builder for [`PhysicalDeviceExternalSciSync2FeaturesNV`] with lifetime-tied pNext safety.
17044pub struct PhysicalDeviceExternalSciSync2FeaturesNVBuilder<'a> {
17045    inner: PhysicalDeviceExternalSciSync2FeaturesNV,
17046    _marker: core::marker::PhantomData<&'a ()>,
17047}
17048impl PhysicalDeviceExternalSciSync2FeaturesNV {
17049    /// Start building this struct; `s_type` is already set to the correct variant.
17050    #[inline]
17051    pub fn builder<'a>() -> PhysicalDeviceExternalSciSync2FeaturesNVBuilder<'a> {
17052        PhysicalDeviceExternalSciSync2FeaturesNVBuilder {
17053            inner: PhysicalDeviceExternalSciSync2FeaturesNV {
17054                s_type: Default::default(),
17055                ..Default::default()
17056            },
17057            _marker: core::marker::PhantomData,
17058        }
17059    }
17060}
17061impl<'a> PhysicalDeviceExternalSciSync2FeaturesNVBuilder<'a> {
17062    #[inline]
17063    pub fn sci_sync_fence(mut self, value: bool) -> Self {
17064        self.inner.sci_sync_fence = value as u32;
17065        self
17066    }
17067    #[inline]
17068    pub fn sci_sync_semaphore2(mut self, value: bool) -> Self {
17069        self.inner.sci_sync_semaphore2 = value as u32;
17070        self
17071    }
17072    #[inline]
17073    pub fn sci_sync_import(mut self, value: bool) -> Self {
17074        self.inner.sci_sync_import = value as u32;
17075        self
17076    }
17077    #[inline]
17078    pub fn sci_sync_export(mut self, value: bool) -> Self {
17079        self.inner.sci_sync_export = value as u32;
17080        self
17081    }
17082    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceExternalSciSync2FeaturesNV`]'s **Extended By** section for valid types.
17083    #[inline]
17084    pub fn push_next<T: ExtendsPhysicalDeviceExternalSciSync2FeaturesNV>(
17085        mut self,
17086        next: &'a mut T,
17087    ) -> Self {
17088        unsafe {
17089            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
17090            (*next_ptr).p_next = self.inner.p_next as *mut _;
17091            self.inner.p_next = <*mut BaseOutStructure>::cast::<
17092                core::ffi::c_void,
17093            >(next_ptr);
17094        }
17095        self
17096    }
17097}
17098impl<'a> core::ops::Deref for PhysicalDeviceExternalSciSync2FeaturesNVBuilder<'a> {
17099    type Target = PhysicalDeviceExternalSciSync2FeaturesNV;
17100    #[inline]
17101    fn deref(&self) -> &Self::Target {
17102        &self.inner
17103    }
17104}
17105impl<'a> core::ops::DerefMut for PhysicalDeviceExternalSciSync2FeaturesNVBuilder<'a> {
17106    #[inline]
17107    fn deref_mut(&mut self) -> &mut Self::Target {
17108        &mut self.inner
17109    }
17110}
17111///Builder for [`SemaphoreSciSyncPoolCreateInfoNV`] with lifetime-tied pNext safety.
17112pub struct SemaphoreSciSyncPoolCreateInfoNVBuilder<'a> {
17113    inner: SemaphoreSciSyncPoolCreateInfoNV,
17114    _marker: core::marker::PhantomData<&'a ()>,
17115}
17116impl SemaphoreSciSyncPoolCreateInfoNV {
17117    /// Start building this struct; `s_type` is already set to the correct variant.
17118    #[inline]
17119    pub fn builder<'a>() -> SemaphoreSciSyncPoolCreateInfoNVBuilder<'a> {
17120        SemaphoreSciSyncPoolCreateInfoNVBuilder {
17121            inner: SemaphoreSciSyncPoolCreateInfoNV {
17122                s_type: Default::default(),
17123                ..Default::default()
17124            },
17125            _marker: core::marker::PhantomData,
17126        }
17127    }
17128}
17129impl<'a> SemaphoreSciSyncPoolCreateInfoNVBuilder<'a> {
17130    #[inline]
17131    pub fn handle(mut self, value: *const core::ffi::c_void) -> Self {
17132        self.inner.handle = value;
17133        self
17134    }
17135    ///Prepend a struct to the pNext chain. See [`SemaphoreSciSyncPoolCreateInfoNV`]'s **Extended By** section for valid types.
17136    #[inline]
17137    pub fn push_next<T: ExtendsSemaphoreSciSyncPoolCreateInfoNV>(
17138        mut self,
17139        next: &'a mut T,
17140    ) -> Self {
17141        unsafe {
17142            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
17143            (*next_ptr).p_next = self.inner.p_next as *mut _;
17144            self.inner.p_next = <*mut BaseOutStructure>::cast::<
17145                core::ffi::c_void,
17146            >(next_ptr) as *const _;
17147        }
17148        self
17149    }
17150}
17151impl<'a> core::ops::Deref for SemaphoreSciSyncPoolCreateInfoNVBuilder<'a> {
17152    type Target = SemaphoreSciSyncPoolCreateInfoNV;
17153    #[inline]
17154    fn deref(&self) -> &Self::Target {
17155        &self.inner
17156    }
17157}
17158impl<'a> core::ops::DerefMut for SemaphoreSciSyncPoolCreateInfoNVBuilder<'a> {
17159    #[inline]
17160    fn deref_mut(&mut self) -> &mut Self::Target {
17161        &mut self.inner
17162    }
17163}
17164///Builder for [`SemaphoreSciSyncCreateInfoNV`] with lifetime-tied pNext safety.
17165pub struct SemaphoreSciSyncCreateInfoNVBuilder<'a> {
17166    inner: SemaphoreSciSyncCreateInfoNV,
17167    _marker: core::marker::PhantomData<&'a ()>,
17168}
17169impl SemaphoreSciSyncCreateInfoNV {
17170    /// Start building this struct; `s_type` is already set to the correct variant.
17171    #[inline]
17172    pub fn builder<'a>() -> SemaphoreSciSyncCreateInfoNVBuilder<'a> {
17173        SemaphoreSciSyncCreateInfoNVBuilder {
17174            inner: SemaphoreSciSyncCreateInfoNV {
17175                s_type: Default::default(),
17176                ..Default::default()
17177            },
17178            _marker: core::marker::PhantomData,
17179        }
17180    }
17181}
17182impl<'a> SemaphoreSciSyncCreateInfoNVBuilder<'a> {
17183    #[inline]
17184    pub fn semaphore_pool(mut self, value: SemaphoreSciSyncPoolNV) -> Self {
17185        self.inner.semaphore_pool = value;
17186        self
17187    }
17188    #[inline]
17189    pub fn fence(mut self, value: *const core::ffi::c_void) -> Self {
17190        self.inner.p_fence = value;
17191        self
17192    }
17193    ///Prepend a struct to the pNext chain. See [`SemaphoreSciSyncCreateInfoNV`]'s **Extended By** section for valid types.
17194    #[inline]
17195    pub fn push_next<T: ExtendsSemaphoreSciSyncCreateInfoNV>(
17196        mut self,
17197        next: &'a mut T,
17198    ) -> Self {
17199        unsafe {
17200            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
17201            (*next_ptr).p_next = self.inner.p_next as *mut _;
17202            self.inner.p_next = <*mut BaseOutStructure>::cast::<
17203                core::ffi::c_void,
17204            >(next_ptr) as *const _;
17205        }
17206        self
17207    }
17208}
17209impl<'a> core::ops::Deref for SemaphoreSciSyncCreateInfoNVBuilder<'a> {
17210    type Target = SemaphoreSciSyncCreateInfoNV;
17211    #[inline]
17212    fn deref(&self) -> &Self::Target {
17213        &self.inner
17214    }
17215}
17216impl<'a> core::ops::DerefMut for SemaphoreSciSyncCreateInfoNVBuilder<'a> {
17217    #[inline]
17218    fn deref_mut(&mut self) -> &mut Self::Target {
17219        &mut self.inner
17220    }
17221}
17222///Builder for [`DeviceSemaphoreSciSyncPoolReservationCreateInfoNV`] with lifetime-tied pNext safety.
17223pub struct DeviceSemaphoreSciSyncPoolReservationCreateInfoNVBuilder<'a> {
17224    inner: DeviceSemaphoreSciSyncPoolReservationCreateInfoNV,
17225    _marker: core::marker::PhantomData<&'a ()>,
17226}
17227impl DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {
17228    /// Start building this struct; `s_type` is already set to the correct variant.
17229    #[inline]
17230    pub fn builder<'a>() -> DeviceSemaphoreSciSyncPoolReservationCreateInfoNVBuilder<
17231        'a,
17232    > {
17233        DeviceSemaphoreSciSyncPoolReservationCreateInfoNVBuilder {
17234            inner: DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {
17235                s_type: Default::default(),
17236                ..Default::default()
17237            },
17238            _marker: core::marker::PhantomData,
17239        }
17240    }
17241}
17242impl<'a> DeviceSemaphoreSciSyncPoolReservationCreateInfoNVBuilder<'a> {
17243    #[inline]
17244    pub fn semaphore_sci_sync_pool_request_count(mut self, value: u32) -> Self {
17245        self.inner.semaphore_sci_sync_pool_request_count = value;
17246        self
17247    }
17248    ///Prepend a struct to the pNext chain. See [`DeviceSemaphoreSciSyncPoolReservationCreateInfoNV`]'s **Extended By** section for valid types.
17249    #[inline]
17250    pub fn push_next<T: ExtendsDeviceSemaphoreSciSyncPoolReservationCreateInfoNV>(
17251        mut self,
17252        next: &'a mut T,
17253    ) -> Self {
17254        unsafe {
17255            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
17256            (*next_ptr).p_next = self.inner.p_next as *mut _;
17257            self.inner.p_next = <*mut BaseOutStructure>::cast::<
17258                core::ffi::c_void,
17259            >(next_ptr) as *const _;
17260        }
17261        self
17262    }
17263}
17264impl<'a> core::ops::Deref
17265for DeviceSemaphoreSciSyncPoolReservationCreateInfoNVBuilder<'a> {
17266    type Target = DeviceSemaphoreSciSyncPoolReservationCreateInfoNV;
17267    #[inline]
17268    fn deref(&self) -> &Self::Target {
17269        &self.inner
17270    }
17271}
17272impl<'a> core::ops::DerefMut
17273for DeviceSemaphoreSciSyncPoolReservationCreateInfoNVBuilder<'a> {
17274    #[inline]
17275    fn deref_mut(&mut self) -> &mut Self::Target {
17276        &mut self.inner
17277    }
17278}
17279///Builder for [`PhysicalDeviceMultiviewFeatures`] with lifetime-tied pNext safety.
17280pub struct PhysicalDeviceMultiviewFeaturesBuilder<'a> {
17281    inner: PhysicalDeviceMultiviewFeatures,
17282    _marker: core::marker::PhantomData<&'a ()>,
17283}
17284impl PhysicalDeviceMultiviewFeatures {
17285    /// Start building this struct; `s_type` is already set to the correct variant.
17286    #[inline]
17287    pub fn builder<'a>() -> PhysicalDeviceMultiviewFeaturesBuilder<'a> {
17288        PhysicalDeviceMultiviewFeaturesBuilder {
17289            inner: PhysicalDeviceMultiviewFeatures {
17290                s_type: StructureType::from_raw(1000053001i32),
17291                ..Default::default()
17292            },
17293            _marker: core::marker::PhantomData,
17294        }
17295    }
17296}
17297impl<'a> PhysicalDeviceMultiviewFeaturesBuilder<'a> {
17298    #[inline]
17299    pub fn multiview(mut self, value: bool) -> Self {
17300        self.inner.multiview = value as u32;
17301        self
17302    }
17303    #[inline]
17304    pub fn multiview_geometry_shader(mut self, value: bool) -> Self {
17305        self.inner.multiview_geometry_shader = value as u32;
17306        self
17307    }
17308    #[inline]
17309    pub fn multiview_tessellation_shader(mut self, value: bool) -> Self {
17310        self.inner.multiview_tessellation_shader = value as u32;
17311        self
17312    }
17313    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceMultiviewFeatures`]'s **Extended By** section for valid types.
17314    #[inline]
17315    pub fn push_next<T: ExtendsPhysicalDeviceMultiviewFeatures>(
17316        mut self,
17317        next: &'a mut T,
17318    ) -> Self {
17319        unsafe {
17320            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
17321            (*next_ptr).p_next = self.inner.p_next as *mut _;
17322            self.inner.p_next = <*mut BaseOutStructure>::cast::<
17323                core::ffi::c_void,
17324            >(next_ptr);
17325        }
17326        self
17327    }
17328}
17329impl<'a> core::ops::Deref for PhysicalDeviceMultiviewFeaturesBuilder<'a> {
17330    type Target = PhysicalDeviceMultiviewFeatures;
17331    #[inline]
17332    fn deref(&self) -> &Self::Target {
17333        &self.inner
17334    }
17335}
17336impl<'a> core::ops::DerefMut for PhysicalDeviceMultiviewFeaturesBuilder<'a> {
17337    #[inline]
17338    fn deref_mut(&mut self) -> &mut Self::Target {
17339        &mut self.inner
17340    }
17341}
17342///Builder for [`PhysicalDeviceMultiviewProperties`] with lifetime-tied pNext safety.
17343pub struct PhysicalDeviceMultiviewPropertiesBuilder<'a> {
17344    inner: PhysicalDeviceMultiviewProperties,
17345    _marker: core::marker::PhantomData<&'a ()>,
17346}
17347impl PhysicalDeviceMultiviewProperties {
17348    /// Start building this struct; `s_type` is already set to the correct variant.
17349    #[inline]
17350    pub fn builder<'a>() -> PhysicalDeviceMultiviewPropertiesBuilder<'a> {
17351        PhysicalDeviceMultiviewPropertiesBuilder {
17352            inner: PhysicalDeviceMultiviewProperties {
17353                s_type: StructureType::from_raw(1000053002i32),
17354                ..Default::default()
17355            },
17356            _marker: core::marker::PhantomData,
17357        }
17358    }
17359}
17360impl<'a> PhysicalDeviceMultiviewPropertiesBuilder<'a> {
17361    #[inline]
17362    pub fn max_multiview_view_count(mut self, value: u32) -> Self {
17363        self.inner.max_multiview_view_count = value;
17364        self
17365    }
17366    #[inline]
17367    pub fn max_multiview_instance_index(mut self, value: u32) -> Self {
17368        self.inner.max_multiview_instance_index = value;
17369        self
17370    }
17371}
17372impl<'a> core::ops::Deref for PhysicalDeviceMultiviewPropertiesBuilder<'a> {
17373    type Target = PhysicalDeviceMultiviewProperties;
17374    #[inline]
17375    fn deref(&self) -> &Self::Target {
17376        &self.inner
17377    }
17378}
17379impl<'a> core::ops::DerefMut for PhysicalDeviceMultiviewPropertiesBuilder<'a> {
17380    #[inline]
17381    fn deref_mut(&mut self) -> &mut Self::Target {
17382        &mut self.inner
17383    }
17384}
17385///Builder for [`RenderPassMultiviewCreateInfo`] with lifetime-tied pNext safety.
17386pub struct RenderPassMultiviewCreateInfoBuilder<'a> {
17387    inner: RenderPassMultiviewCreateInfo,
17388    _marker: core::marker::PhantomData<&'a ()>,
17389}
17390impl RenderPassMultiviewCreateInfo {
17391    /// Start building this struct; `s_type` is already set to the correct variant.
17392    #[inline]
17393    pub fn builder<'a>() -> RenderPassMultiviewCreateInfoBuilder<'a> {
17394        RenderPassMultiviewCreateInfoBuilder {
17395            inner: RenderPassMultiviewCreateInfo {
17396                s_type: StructureType::from_raw(1000053000i32),
17397                ..Default::default()
17398            },
17399            _marker: core::marker::PhantomData,
17400        }
17401    }
17402}
17403impl<'a> RenderPassMultiviewCreateInfoBuilder<'a> {
17404    #[inline]
17405    pub fn view_masks(mut self, slice: &'a [u32]) -> Self {
17406        self.inner.subpass_count = slice.len() as u32;
17407        self.inner.p_view_masks = slice.as_ptr();
17408        self
17409    }
17410    #[inline]
17411    pub fn view_offsets(mut self, slice: &'a [i32]) -> Self {
17412        self.inner.dependency_count = slice.len() as u32;
17413        self.inner.p_view_offsets = slice.as_ptr();
17414        self
17415    }
17416    #[inline]
17417    pub fn correlation_masks(mut self, slice: &'a [u32]) -> Self {
17418        self.inner.correlation_mask_count = slice.len() as u32;
17419        self.inner.p_correlation_masks = slice.as_ptr();
17420        self
17421    }
17422    ///Prepend a struct to the pNext chain. See [`RenderPassMultiviewCreateInfo`]'s **Extended By** section for valid types.
17423    #[inline]
17424    pub fn push_next<T: ExtendsRenderPassMultiviewCreateInfo>(
17425        mut self,
17426        next: &'a mut T,
17427    ) -> Self {
17428        unsafe {
17429            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
17430            (*next_ptr).p_next = self.inner.p_next as *mut _;
17431            self.inner.p_next = <*mut BaseOutStructure>::cast::<
17432                core::ffi::c_void,
17433            >(next_ptr) as *const _;
17434        }
17435        self
17436    }
17437}
17438impl<'a> core::ops::Deref for RenderPassMultiviewCreateInfoBuilder<'a> {
17439    type Target = RenderPassMultiviewCreateInfo;
17440    #[inline]
17441    fn deref(&self) -> &Self::Target {
17442        &self.inner
17443    }
17444}
17445impl<'a> core::ops::DerefMut for RenderPassMultiviewCreateInfoBuilder<'a> {
17446    #[inline]
17447    fn deref_mut(&mut self) -> &mut Self::Target {
17448        &mut self.inner
17449    }
17450}
17451///Builder for [`SurfaceCapabilities2EXT`] with lifetime-tied pNext safety.
17452pub struct SurfaceCapabilities2EXTBuilder<'a> {
17453    inner: SurfaceCapabilities2EXT,
17454    _marker: core::marker::PhantomData<&'a ()>,
17455}
17456impl SurfaceCapabilities2EXT {
17457    /// Start building this struct; `s_type` is already set to the correct variant.
17458    #[inline]
17459    pub fn builder<'a>() -> SurfaceCapabilities2EXTBuilder<'a> {
17460        SurfaceCapabilities2EXTBuilder {
17461            inner: SurfaceCapabilities2EXT {
17462                s_type: StructureType::from_raw(1000090000i32),
17463                ..Default::default()
17464            },
17465            _marker: core::marker::PhantomData,
17466        }
17467    }
17468}
17469impl<'a> SurfaceCapabilities2EXTBuilder<'a> {
17470    #[inline]
17471    pub fn min_image_count(mut self, value: u32) -> Self {
17472        self.inner.min_image_count = value;
17473        self
17474    }
17475    #[inline]
17476    pub fn max_image_count(mut self, value: u32) -> Self {
17477        self.inner.max_image_count = value;
17478        self
17479    }
17480    #[inline]
17481    pub fn current_extent(mut self, value: Extent2D) -> Self {
17482        self.inner.current_extent = value;
17483        self
17484    }
17485    #[inline]
17486    pub fn min_image_extent(mut self, value: Extent2D) -> Self {
17487        self.inner.min_image_extent = value;
17488        self
17489    }
17490    #[inline]
17491    pub fn max_image_extent(mut self, value: Extent2D) -> Self {
17492        self.inner.max_image_extent = value;
17493        self
17494    }
17495    #[inline]
17496    pub fn max_image_array_layers(mut self, value: u32) -> Self {
17497        self.inner.max_image_array_layers = value;
17498        self
17499    }
17500    #[inline]
17501    pub fn supported_transforms(mut self, value: SurfaceTransformFlagsKHR) -> Self {
17502        self.inner.supported_transforms = value;
17503        self
17504    }
17505    #[inline]
17506    pub fn current_transform(mut self, value: SurfaceTransformFlagBitsKHR) -> Self {
17507        self.inner.current_transform = value;
17508        self
17509    }
17510    #[inline]
17511    pub fn supported_composite_alpha(mut self, value: CompositeAlphaFlagsKHR) -> Self {
17512        self.inner.supported_composite_alpha = value;
17513        self
17514    }
17515    #[inline]
17516    pub fn supported_usage_flags(mut self, value: ImageUsageFlags) -> Self {
17517        self.inner.supported_usage_flags = value;
17518        self
17519    }
17520    #[inline]
17521    pub fn supported_surface_counters(mut self, value: SurfaceCounterFlagsEXT) -> Self {
17522        self.inner.supported_surface_counters = value;
17523        self
17524    }
17525}
17526impl<'a> core::ops::Deref for SurfaceCapabilities2EXTBuilder<'a> {
17527    type Target = SurfaceCapabilities2EXT;
17528    #[inline]
17529    fn deref(&self) -> &Self::Target {
17530        &self.inner
17531    }
17532}
17533impl<'a> core::ops::DerefMut for SurfaceCapabilities2EXTBuilder<'a> {
17534    #[inline]
17535    fn deref_mut(&mut self) -> &mut Self::Target {
17536        &mut self.inner
17537    }
17538}
17539///Builder for [`DisplayPowerInfoEXT`] with lifetime-tied pNext safety.
17540pub struct DisplayPowerInfoEXTBuilder<'a> {
17541    inner: DisplayPowerInfoEXT,
17542    _marker: core::marker::PhantomData<&'a ()>,
17543}
17544impl DisplayPowerInfoEXT {
17545    /// Start building this struct; `s_type` is already set to the correct variant.
17546    #[inline]
17547    pub fn builder<'a>() -> DisplayPowerInfoEXTBuilder<'a> {
17548        DisplayPowerInfoEXTBuilder {
17549            inner: DisplayPowerInfoEXT {
17550                s_type: StructureType::from_raw(1000091000i32),
17551                ..Default::default()
17552            },
17553            _marker: core::marker::PhantomData,
17554        }
17555    }
17556}
17557impl<'a> DisplayPowerInfoEXTBuilder<'a> {
17558    #[inline]
17559    pub fn power_state(mut self, value: DisplayPowerStateEXT) -> Self {
17560        self.inner.power_state = value;
17561        self
17562    }
17563    ///Prepend a struct to the pNext chain. See [`DisplayPowerInfoEXT`]'s **Extended By** section for valid types.
17564    #[inline]
17565    pub fn push_next<T: ExtendsDisplayPowerInfoEXT>(mut self, next: &'a mut T) -> Self {
17566        unsafe {
17567            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
17568            (*next_ptr).p_next = self.inner.p_next as *mut _;
17569            self.inner.p_next = <*mut BaseOutStructure>::cast::<
17570                core::ffi::c_void,
17571            >(next_ptr) as *const _;
17572        }
17573        self
17574    }
17575}
17576impl<'a> core::ops::Deref for DisplayPowerInfoEXTBuilder<'a> {
17577    type Target = DisplayPowerInfoEXT;
17578    #[inline]
17579    fn deref(&self) -> &Self::Target {
17580        &self.inner
17581    }
17582}
17583impl<'a> core::ops::DerefMut for DisplayPowerInfoEXTBuilder<'a> {
17584    #[inline]
17585    fn deref_mut(&mut self) -> &mut Self::Target {
17586        &mut self.inner
17587    }
17588}
17589///Builder for [`DeviceEventInfoEXT`] with lifetime-tied pNext safety.
17590pub struct DeviceEventInfoEXTBuilder<'a> {
17591    inner: DeviceEventInfoEXT,
17592    _marker: core::marker::PhantomData<&'a ()>,
17593}
17594impl DeviceEventInfoEXT {
17595    /// Start building this struct; `s_type` is already set to the correct variant.
17596    #[inline]
17597    pub fn builder<'a>() -> DeviceEventInfoEXTBuilder<'a> {
17598        DeviceEventInfoEXTBuilder {
17599            inner: DeviceEventInfoEXT {
17600                s_type: StructureType::from_raw(1000091001i32),
17601                ..Default::default()
17602            },
17603            _marker: core::marker::PhantomData,
17604        }
17605    }
17606}
17607impl<'a> DeviceEventInfoEXTBuilder<'a> {
17608    #[inline]
17609    pub fn device_event(mut self, value: DeviceEventTypeEXT) -> Self {
17610        self.inner.device_event = value;
17611        self
17612    }
17613    ///Prepend a struct to the pNext chain. See [`DeviceEventInfoEXT`]'s **Extended By** section for valid types.
17614    #[inline]
17615    pub fn push_next<T: ExtendsDeviceEventInfoEXT>(mut self, next: &'a mut T) -> Self {
17616        unsafe {
17617            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
17618            (*next_ptr).p_next = self.inner.p_next as *mut _;
17619            self.inner.p_next = <*mut BaseOutStructure>::cast::<
17620                core::ffi::c_void,
17621            >(next_ptr) as *const _;
17622        }
17623        self
17624    }
17625}
17626impl<'a> core::ops::Deref for DeviceEventInfoEXTBuilder<'a> {
17627    type Target = DeviceEventInfoEXT;
17628    #[inline]
17629    fn deref(&self) -> &Self::Target {
17630        &self.inner
17631    }
17632}
17633impl<'a> core::ops::DerefMut for DeviceEventInfoEXTBuilder<'a> {
17634    #[inline]
17635    fn deref_mut(&mut self) -> &mut Self::Target {
17636        &mut self.inner
17637    }
17638}
17639///Builder for [`DisplayEventInfoEXT`] with lifetime-tied pNext safety.
17640pub struct DisplayEventInfoEXTBuilder<'a> {
17641    inner: DisplayEventInfoEXT,
17642    _marker: core::marker::PhantomData<&'a ()>,
17643}
17644impl DisplayEventInfoEXT {
17645    /// Start building this struct; `s_type` is already set to the correct variant.
17646    #[inline]
17647    pub fn builder<'a>() -> DisplayEventInfoEXTBuilder<'a> {
17648        DisplayEventInfoEXTBuilder {
17649            inner: DisplayEventInfoEXT {
17650                s_type: StructureType::from_raw(1000091002i32),
17651                ..Default::default()
17652            },
17653            _marker: core::marker::PhantomData,
17654        }
17655    }
17656}
17657impl<'a> DisplayEventInfoEXTBuilder<'a> {
17658    #[inline]
17659    pub fn display_event(mut self, value: DisplayEventTypeEXT) -> Self {
17660        self.inner.display_event = value;
17661        self
17662    }
17663    ///Prepend a struct to the pNext chain. See [`DisplayEventInfoEXT`]'s **Extended By** section for valid types.
17664    #[inline]
17665    pub fn push_next<T: ExtendsDisplayEventInfoEXT>(mut self, next: &'a mut T) -> Self {
17666        unsafe {
17667            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
17668            (*next_ptr).p_next = self.inner.p_next as *mut _;
17669            self.inner.p_next = <*mut BaseOutStructure>::cast::<
17670                core::ffi::c_void,
17671            >(next_ptr) as *const _;
17672        }
17673        self
17674    }
17675}
17676impl<'a> core::ops::Deref for DisplayEventInfoEXTBuilder<'a> {
17677    type Target = DisplayEventInfoEXT;
17678    #[inline]
17679    fn deref(&self) -> &Self::Target {
17680        &self.inner
17681    }
17682}
17683impl<'a> core::ops::DerefMut for DisplayEventInfoEXTBuilder<'a> {
17684    #[inline]
17685    fn deref_mut(&mut self) -> &mut Self::Target {
17686        &mut self.inner
17687    }
17688}
17689///Builder for [`SwapchainCounterCreateInfoEXT`] with lifetime-tied pNext safety.
17690pub struct SwapchainCounterCreateInfoEXTBuilder<'a> {
17691    inner: SwapchainCounterCreateInfoEXT,
17692    _marker: core::marker::PhantomData<&'a ()>,
17693}
17694impl SwapchainCounterCreateInfoEXT {
17695    /// Start building this struct; `s_type` is already set to the correct variant.
17696    #[inline]
17697    pub fn builder<'a>() -> SwapchainCounterCreateInfoEXTBuilder<'a> {
17698        SwapchainCounterCreateInfoEXTBuilder {
17699            inner: SwapchainCounterCreateInfoEXT {
17700                s_type: StructureType::from_raw(1000091003i32),
17701                ..Default::default()
17702            },
17703            _marker: core::marker::PhantomData,
17704        }
17705    }
17706}
17707impl<'a> SwapchainCounterCreateInfoEXTBuilder<'a> {
17708    #[inline]
17709    pub fn surface_counters(mut self, value: SurfaceCounterFlagsEXT) -> Self {
17710        self.inner.surface_counters = value;
17711        self
17712    }
17713    ///Prepend a struct to the pNext chain. See [`SwapchainCounterCreateInfoEXT`]'s **Extended By** section for valid types.
17714    #[inline]
17715    pub fn push_next<T: ExtendsSwapchainCounterCreateInfoEXT>(
17716        mut self,
17717        next: &'a mut T,
17718    ) -> Self {
17719        unsafe {
17720            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
17721            (*next_ptr).p_next = self.inner.p_next as *mut _;
17722            self.inner.p_next = <*mut BaseOutStructure>::cast::<
17723                core::ffi::c_void,
17724            >(next_ptr) as *const _;
17725        }
17726        self
17727    }
17728}
17729impl<'a> core::ops::Deref for SwapchainCounterCreateInfoEXTBuilder<'a> {
17730    type Target = SwapchainCounterCreateInfoEXT;
17731    #[inline]
17732    fn deref(&self) -> &Self::Target {
17733        &self.inner
17734    }
17735}
17736impl<'a> core::ops::DerefMut for SwapchainCounterCreateInfoEXTBuilder<'a> {
17737    #[inline]
17738    fn deref_mut(&mut self) -> &mut Self::Target {
17739        &mut self.inner
17740    }
17741}
17742///Builder for [`PhysicalDeviceGroupProperties`] with lifetime-tied pNext safety.
17743pub struct PhysicalDeviceGroupPropertiesBuilder<'a> {
17744    inner: PhysicalDeviceGroupProperties,
17745    _marker: core::marker::PhantomData<&'a ()>,
17746}
17747impl PhysicalDeviceGroupProperties {
17748    /// Start building this struct; `s_type` is already set to the correct variant.
17749    #[inline]
17750    pub fn builder<'a>() -> PhysicalDeviceGroupPropertiesBuilder<'a> {
17751        PhysicalDeviceGroupPropertiesBuilder {
17752            inner: PhysicalDeviceGroupProperties {
17753                s_type: StructureType::from_raw(1000070000i32),
17754                ..Default::default()
17755            },
17756            _marker: core::marker::PhantomData,
17757        }
17758    }
17759}
17760impl<'a> PhysicalDeviceGroupPropertiesBuilder<'a> {
17761    #[inline]
17762    pub fn physical_device_count(mut self, value: u32) -> Self {
17763        self.inner.physical_device_count = value;
17764        self
17765    }
17766    #[inline]
17767    pub fn physical_devices(
17768        mut self,
17769        value: [PhysicalDevice; MAX_DEVICE_GROUP_SIZE as usize],
17770    ) -> Self {
17771        self.inner.physical_devices = value;
17772        self
17773    }
17774    #[inline]
17775    pub fn subset_allocation(mut self, value: bool) -> Self {
17776        self.inner.subset_allocation = value as u32;
17777        self
17778    }
17779}
17780impl<'a> core::ops::Deref for PhysicalDeviceGroupPropertiesBuilder<'a> {
17781    type Target = PhysicalDeviceGroupProperties;
17782    #[inline]
17783    fn deref(&self) -> &Self::Target {
17784        &self.inner
17785    }
17786}
17787impl<'a> core::ops::DerefMut for PhysicalDeviceGroupPropertiesBuilder<'a> {
17788    #[inline]
17789    fn deref_mut(&mut self) -> &mut Self::Target {
17790        &mut self.inner
17791    }
17792}
17793///Builder for [`MemoryAllocateFlagsInfo`] with lifetime-tied pNext safety.
17794pub struct MemoryAllocateFlagsInfoBuilder<'a> {
17795    inner: MemoryAllocateFlagsInfo,
17796    _marker: core::marker::PhantomData<&'a ()>,
17797}
17798impl MemoryAllocateFlagsInfo {
17799    /// Start building this struct; `s_type` is already set to the correct variant.
17800    #[inline]
17801    pub fn builder<'a>() -> MemoryAllocateFlagsInfoBuilder<'a> {
17802        MemoryAllocateFlagsInfoBuilder {
17803            inner: MemoryAllocateFlagsInfo {
17804                s_type: StructureType::from_raw(1000060000i32),
17805                ..Default::default()
17806            },
17807            _marker: core::marker::PhantomData,
17808        }
17809    }
17810}
17811impl<'a> MemoryAllocateFlagsInfoBuilder<'a> {
17812    #[inline]
17813    pub fn flags(mut self, value: MemoryAllocateFlags) -> Self {
17814        self.inner.flags = value;
17815        self
17816    }
17817    #[inline]
17818    pub fn device_mask(mut self, value: u32) -> Self {
17819        self.inner.device_mask = value;
17820        self
17821    }
17822    ///Prepend a struct to the pNext chain. See [`MemoryAllocateFlagsInfo`]'s **Extended By** section for valid types.
17823    #[inline]
17824    pub fn push_next<T: ExtendsMemoryAllocateFlagsInfo>(
17825        mut self,
17826        next: &'a mut T,
17827    ) -> Self {
17828        unsafe {
17829            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
17830            (*next_ptr).p_next = self.inner.p_next as *mut _;
17831            self.inner.p_next = <*mut BaseOutStructure>::cast::<
17832                core::ffi::c_void,
17833            >(next_ptr) as *const _;
17834        }
17835        self
17836    }
17837}
17838impl<'a> core::ops::Deref for MemoryAllocateFlagsInfoBuilder<'a> {
17839    type Target = MemoryAllocateFlagsInfo;
17840    #[inline]
17841    fn deref(&self) -> &Self::Target {
17842        &self.inner
17843    }
17844}
17845impl<'a> core::ops::DerefMut for MemoryAllocateFlagsInfoBuilder<'a> {
17846    #[inline]
17847    fn deref_mut(&mut self) -> &mut Self::Target {
17848        &mut self.inner
17849    }
17850}
17851///Builder for [`BindBufferMemoryInfo`] with lifetime-tied pNext safety.
17852pub struct BindBufferMemoryInfoBuilder<'a> {
17853    inner: BindBufferMemoryInfo,
17854    _marker: core::marker::PhantomData<&'a ()>,
17855}
17856impl BindBufferMemoryInfo {
17857    /// Start building this struct; `s_type` is already set to the correct variant.
17858    #[inline]
17859    pub fn builder<'a>() -> BindBufferMemoryInfoBuilder<'a> {
17860        BindBufferMemoryInfoBuilder {
17861            inner: BindBufferMemoryInfo {
17862                s_type: StructureType::from_raw(1000157000i32),
17863                ..Default::default()
17864            },
17865            _marker: core::marker::PhantomData,
17866        }
17867    }
17868}
17869impl<'a> BindBufferMemoryInfoBuilder<'a> {
17870    #[inline]
17871    pub fn buffer(mut self, value: Buffer) -> Self {
17872        self.inner.buffer = value;
17873        self
17874    }
17875    #[inline]
17876    pub fn memory(mut self, value: DeviceMemory) -> Self {
17877        self.inner.memory = value;
17878        self
17879    }
17880    #[inline]
17881    pub fn memory_offset(mut self, value: u64) -> Self {
17882        self.inner.memory_offset = value;
17883        self
17884    }
17885    ///Prepend a struct to the pNext chain. See [`BindBufferMemoryInfo`]'s **Extended By** section for valid types.
17886    #[inline]
17887    pub fn push_next<T: ExtendsBindBufferMemoryInfo>(mut self, next: &'a mut T) -> Self {
17888        unsafe {
17889            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
17890            (*next_ptr).p_next = self.inner.p_next as *mut _;
17891            self.inner.p_next = <*mut BaseOutStructure>::cast::<
17892                core::ffi::c_void,
17893            >(next_ptr) as *const _;
17894        }
17895        self
17896    }
17897}
17898impl<'a> core::ops::Deref for BindBufferMemoryInfoBuilder<'a> {
17899    type Target = BindBufferMemoryInfo;
17900    #[inline]
17901    fn deref(&self) -> &Self::Target {
17902        &self.inner
17903    }
17904}
17905impl<'a> core::ops::DerefMut for BindBufferMemoryInfoBuilder<'a> {
17906    #[inline]
17907    fn deref_mut(&mut self) -> &mut Self::Target {
17908        &mut self.inner
17909    }
17910}
17911///Builder for [`BindBufferMemoryDeviceGroupInfo`] with lifetime-tied pNext safety.
17912pub struct BindBufferMemoryDeviceGroupInfoBuilder<'a> {
17913    inner: BindBufferMemoryDeviceGroupInfo,
17914    _marker: core::marker::PhantomData<&'a ()>,
17915}
17916impl BindBufferMemoryDeviceGroupInfo {
17917    /// Start building this struct; `s_type` is already set to the correct variant.
17918    #[inline]
17919    pub fn builder<'a>() -> BindBufferMemoryDeviceGroupInfoBuilder<'a> {
17920        BindBufferMemoryDeviceGroupInfoBuilder {
17921            inner: BindBufferMemoryDeviceGroupInfo {
17922                s_type: StructureType::from_raw(1000060013i32),
17923                ..Default::default()
17924            },
17925            _marker: core::marker::PhantomData,
17926        }
17927    }
17928}
17929impl<'a> BindBufferMemoryDeviceGroupInfoBuilder<'a> {
17930    #[inline]
17931    pub fn device_indices(mut self, slice: &'a [u32]) -> Self {
17932        self.inner.device_index_count = slice.len() as u32;
17933        self.inner.p_device_indices = slice.as_ptr();
17934        self
17935    }
17936    ///Prepend a struct to the pNext chain. See [`BindBufferMemoryDeviceGroupInfo`]'s **Extended By** section for valid types.
17937    #[inline]
17938    pub fn push_next<T: ExtendsBindBufferMemoryDeviceGroupInfo>(
17939        mut self,
17940        next: &'a mut T,
17941    ) -> Self {
17942        unsafe {
17943            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
17944            (*next_ptr).p_next = self.inner.p_next as *mut _;
17945            self.inner.p_next = <*mut BaseOutStructure>::cast::<
17946                core::ffi::c_void,
17947            >(next_ptr) as *const _;
17948        }
17949        self
17950    }
17951}
17952impl<'a> core::ops::Deref for BindBufferMemoryDeviceGroupInfoBuilder<'a> {
17953    type Target = BindBufferMemoryDeviceGroupInfo;
17954    #[inline]
17955    fn deref(&self) -> &Self::Target {
17956        &self.inner
17957    }
17958}
17959impl<'a> core::ops::DerefMut for BindBufferMemoryDeviceGroupInfoBuilder<'a> {
17960    #[inline]
17961    fn deref_mut(&mut self) -> &mut Self::Target {
17962        &mut self.inner
17963    }
17964}
17965///Builder for [`BindImageMemoryInfo`] with lifetime-tied pNext safety.
17966pub struct BindImageMemoryInfoBuilder<'a> {
17967    inner: BindImageMemoryInfo,
17968    _marker: core::marker::PhantomData<&'a ()>,
17969}
17970impl BindImageMemoryInfo {
17971    /// Start building this struct; `s_type` is already set to the correct variant.
17972    #[inline]
17973    pub fn builder<'a>() -> BindImageMemoryInfoBuilder<'a> {
17974        BindImageMemoryInfoBuilder {
17975            inner: BindImageMemoryInfo {
17976                s_type: StructureType::from_raw(1000157001i32),
17977                ..Default::default()
17978            },
17979            _marker: core::marker::PhantomData,
17980        }
17981    }
17982}
17983impl<'a> BindImageMemoryInfoBuilder<'a> {
17984    #[inline]
17985    pub fn image(mut self, value: Image) -> Self {
17986        self.inner.image = value;
17987        self
17988    }
17989    #[inline]
17990    pub fn memory(mut self, value: DeviceMemory) -> Self {
17991        self.inner.memory = value;
17992        self
17993    }
17994    #[inline]
17995    pub fn memory_offset(mut self, value: u64) -> Self {
17996        self.inner.memory_offset = value;
17997        self
17998    }
17999    ///Prepend a struct to the pNext chain. See [`BindImageMemoryInfo`]'s **Extended By** section for valid types.
18000    #[inline]
18001    pub fn push_next<T: ExtendsBindImageMemoryInfo>(mut self, next: &'a mut T) -> Self {
18002        unsafe {
18003            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
18004            (*next_ptr).p_next = self.inner.p_next as *mut _;
18005            self.inner.p_next = <*mut BaseOutStructure>::cast::<
18006                core::ffi::c_void,
18007            >(next_ptr) as *const _;
18008        }
18009        self
18010    }
18011}
18012impl<'a> core::ops::Deref for BindImageMemoryInfoBuilder<'a> {
18013    type Target = BindImageMemoryInfo;
18014    #[inline]
18015    fn deref(&self) -> &Self::Target {
18016        &self.inner
18017    }
18018}
18019impl<'a> core::ops::DerefMut for BindImageMemoryInfoBuilder<'a> {
18020    #[inline]
18021    fn deref_mut(&mut self) -> &mut Self::Target {
18022        &mut self.inner
18023    }
18024}
18025///Builder for [`BindImageMemoryDeviceGroupInfo`] with lifetime-tied pNext safety.
18026pub struct BindImageMemoryDeviceGroupInfoBuilder<'a> {
18027    inner: BindImageMemoryDeviceGroupInfo,
18028    _marker: core::marker::PhantomData<&'a ()>,
18029}
18030impl BindImageMemoryDeviceGroupInfo {
18031    /// Start building this struct; `s_type` is already set to the correct variant.
18032    #[inline]
18033    pub fn builder<'a>() -> BindImageMemoryDeviceGroupInfoBuilder<'a> {
18034        BindImageMemoryDeviceGroupInfoBuilder {
18035            inner: BindImageMemoryDeviceGroupInfo {
18036                s_type: StructureType::from_raw(1000060014i32),
18037                ..Default::default()
18038            },
18039            _marker: core::marker::PhantomData,
18040        }
18041    }
18042}
18043impl<'a> BindImageMemoryDeviceGroupInfoBuilder<'a> {
18044    #[inline]
18045    pub fn device_indices(mut self, slice: &'a [u32]) -> Self {
18046        self.inner.device_index_count = slice.len() as u32;
18047        self.inner.p_device_indices = slice.as_ptr();
18048        self
18049    }
18050    #[inline]
18051    pub fn split_instance_bind_regions(mut self, slice: &'a [Rect2D]) -> Self {
18052        self.inner.split_instance_bind_region_count = slice.len() as u32;
18053        self.inner.p_split_instance_bind_regions = slice.as_ptr();
18054        self
18055    }
18056    ///Prepend a struct to the pNext chain. See [`BindImageMemoryDeviceGroupInfo`]'s **Extended By** section for valid types.
18057    #[inline]
18058    pub fn push_next<T: ExtendsBindImageMemoryDeviceGroupInfo>(
18059        mut self,
18060        next: &'a mut T,
18061    ) -> Self {
18062        unsafe {
18063            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
18064            (*next_ptr).p_next = self.inner.p_next as *mut _;
18065            self.inner.p_next = <*mut BaseOutStructure>::cast::<
18066                core::ffi::c_void,
18067            >(next_ptr) as *const _;
18068        }
18069        self
18070    }
18071}
18072impl<'a> core::ops::Deref for BindImageMemoryDeviceGroupInfoBuilder<'a> {
18073    type Target = BindImageMemoryDeviceGroupInfo;
18074    #[inline]
18075    fn deref(&self) -> &Self::Target {
18076        &self.inner
18077    }
18078}
18079impl<'a> core::ops::DerefMut for BindImageMemoryDeviceGroupInfoBuilder<'a> {
18080    #[inline]
18081    fn deref_mut(&mut self) -> &mut Self::Target {
18082        &mut self.inner
18083    }
18084}
18085///Builder for [`DeviceGroupRenderPassBeginInfo`] with lifetime-tied pNext safety.
18086pub struct DeviceGroupRenderPassBeginInfoBuilder<'a> {
18087    inner: DeviceGroupRenderPassBeginInfo,
18088    _marker: core::marker::PhantomData<&'a ()>,
18089}
18090impl DeviceGroupRenderPassBeginInfo {
18091    /// Start building this struct; `s_type` is already set to the correct variant.
18092    #[inline]
18093    pub fn builder<'a>() -> DeviceGroupRenderPassBeginInfoBuilder<'a> {
18094        DeviceGroupRenderPassBeginInfoBuilder {
18095            inner: DeviceGroupRenderPassBeginInfo {
18096                s_type: StructureType::from_raw(1000060003i32),
18097                ..Default::default()
18098            },
18099            _marker: core::marker::PhantomData,
18100        }
18101    }
18102}
18103impl<'a> DeviceGroupRenderPassBeginInfoBuilder<'a> {
18104    #[inline]
18105    pub fn device_mask(mut self, value: u32) -> Self {
18106        self.inner.device_mask = value;
18107        self
18108    }
18109    #[inline]
18110    pub fn device_render_areas(mut self, slice: &'a [Rect2D]) -> Self {
18111        self.inner.device_render_area_count = slice.len() as u32;
18112        self.inner.p_device_render_areas = slice.as_ptr();
18113        self
18114    }
18115    ///Prepend a struct to the pNext chain. See [`DeviceGroupRenderPassBeginInfo`]'s **Extended By** section for valid types.
18116    #[inline]
18117    pub fn push_next<T: ExtendsDeviceGroupRenderPassBeginInfo>(
18118        mut self,
18119        next: &'a mut T,
18120    ) -> Self {
18121        unsafe {
18122            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
18123            (*next_ptr).p_next = self.inner.p_next as *mut _;
18124            self.inner.p_next = <*mut BaseOutStructure>::cast::<
18125                core::ffi::c_void,
18126            >(next_ptr) as *const _;
18127        }
18128        self
18129    }
18130}
18131impl<'a> core::ops::Deref for DeviceGroupRenderPassBeginInfoBuilder<'a> {
18132    type Target = DeviceGroupRenderPassBeginInfo;
18133    #[inline]
18134    fn deref(&self) -> &Self::Target {
18135        &self.inner
18136    }
18137}
18138impl<'a> core::ops::DerefMut for DeviceGroupRenderPassBeginInfoBuilder<'a> {
18139    #[inline]
18140    fn deref_mut(&mut self) -> &mut Self::Target {
18141        &mut self.inner
18142    }
18143}
18144///Builder for [`DeviceGroupCommandBufferBeginInfo`] with lifetime-tied pNext safety.
18145pub struct DeviceGroupCommandBufferBeginInfoBuilder<'a> {
18146    inner: DeviceGroupCommandBufferBeginInfo,
18147    _marker: core::marker::PhantomData<&'a ()>,
18148}
18149impl DeviceGroupCommandBufferBeginInfo {
18150    /// Start building this struct; `s_type` is already set to the correct variant.
18151    #[inline]
18152    pub fn builder<'a>() -> DeviceGroupCommandBufferBeginInfoBuilder<'a> {
18153        DeviceGroupCommandBufferBeginInfoBuilder {
18154            inner: DeviceGroupCommandBufferBeginInfo {
18155                s_type: StructureType::from_raw(1000060004i32),
18156                ..Default::default()
18157            },
18158            _marker: core::marker::PhantomData,
18159        }
18160    }
18161}
18162impl<'a> DeviceGroupCommandBufferBeginInfoBuilder<'a> {
18163    #[inline]
18164    pub fn device_mask(mut self, value: u32) -> Self {
18165        self.inner.device_mask = value;
18166        self
18167    }
18168    ///Prepend a struct to the pNext chain. See [`DeviceGroupCommandBufferBeginInfo`]'s **Extended By** section for valid types.
18169    #[inline]
18170    pub fn push_next<T: ExtendsDeviceGroupCommandBufferBeginInfo>(
18171        mut self,
18172        next: &'a mut T,
18173    ) -> Self {
18174        unsafe {
18175            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
18176            (*next_ptr).p_next = self.inner.p_next as *mut _;
18177            self.inner.p_next = <*mut BaseOutStructure>::cast::<
18178                core::ffi::c_void,
18179            >(next_ptr) as *const _;
18180        }
18181        self
18182    }
18183}
18184impl<'a> core::ops::Deref for DeviceGroupCommandBufferBeginInfoBuilder<'a> {
18185    type Target = DeviceGroupCommandBufferBeginInfo;
18186    #[inline]
18187    fn deref(&self) -> &Self::Target {
18188        &self.inner
18189    }
18190}
18191impl<'a> core::ops::DerefMut for DeviceGroupCommandBufferBeginInfoBuilder<'a> {
18192    #[inline]
18193    fn deref_mut(&mut self) -> &mut Self::Target {
18194        &mut self.inner
18195    }
18196}
18197///Builder for [`DeviceGroupSubmitInfo`] with lifetime-tied pNext safety.
18198pub struct DeviceGroupSubmitInfoBuilder<'a> {
18199    inner: DeviceGroupSubmitInfo,
18200    _marker: core::marker::PhantomData<&'a ()>,
18201}
18202impl DeviceGroupSubmitInfo {
18203    /// Start building this struct; `s_type` is already set to the correct variant.
18204    #[inline]
18205    pub fn builder<'a>() -> DeviceGroupSubmitInfoBuilder<'a> {
18206        DeviceGroupSubmitInfoBuilder {
18207            inner: DeviceGroupSubmitInfo {
18208                s_type: StructureType::from_raw(1000060005i32),
18209                ..Default::default()
18210            },
18211            _marker: core::marker::PhantomData,
18212        }
18213    }
18214}
18215impl<'a> DeviceGroupSubmitInfoBuilder<'a> {
18216    #[inline]
18217    pub fn wait_semaphore_device_indices(mut self, slice: &'a [u32]) -> Self {
18218        self.inner.wait_semaphore_count = slice.len() as u32;
18219        self.inner.p_wait_semaphore_device_indices = slice.as_ptr();
18220        self
18221    }
18222    #[inline]
18223    pub fn command_buffer_device_masks(mut self, slice: &'a [u32]) -> Self {
18224        self.inner.command_buffer_count = slice.len() as u32;
18225        self.inner.p_command_buffer_device_masks = slice.as_ptr();
18226        self
18227    }
18228    #[inline]
18229    pub fn signal_semaphore_device_indices(mut self, slice: &'a [u32]) -> Self {
18230        self.inner.signal_semaphore_count = slice.len() as u32;
18231        self.inner.p_signal_semaphore_device_indices = slice.as_ptr();
18232        self
18233    }
18234    ///Prepend a struct to the pNext chain. See [`DeviceGroupSubmitInfo`]'s **Extended By** section for valid types.
18235    #[inline]
18236    pub fn push_next<T: ExtendsDeviceGroupSubmitInfo>(
18237        mut self,
18238        next: &'a mut T,
18239    ) -> Self {
18240        unsafe {
18241            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
18242            (*next_ptr).p_next = self.inner.p_next as *mut _;
18243            self.inner.p_next = <*mut BaseOutStructure>::cast::<
18244                core::ffi::c_void,
18245            >(next_ptr) as *const _;
18246        }
18247        self
18248    }
18249}
18250impl<'a> core::ops::Deref for DeviceGroupSubmitInfoBuilder<'a> {
18251    type Target = DeviceGroupSubmitInfo;
18252    #[inline]
18253    fn deref(&self) -> &Self::Target {
18254        &self.inner
18255    }
18256}
18257impl<'a> core::ops::DerefMut for DeviceGroupSubmitInfoBuilder<'a> {
18258    #[inline]
18259    fn deref_mut(&mut self) -> &mut Self::Target {
18260        &mut self.inner
18261    }
18262}
18263///Builder for [`DeviceGroupBindSparseInfo`] with lifetime-tied pNext safety.
18264pub struct DeviceGroupBindSparseInfoBuilder<'a> {
18265    inner: DeviceGroupBindSparseInfo,
18266    _marker: core::marker::PhantomData<&'a ()>,
18267}
18268impl DeviceGroupBindSparseInfo {
18269    /// Start building this struct; `s_type` is already set to the correct variant.
18270    #[inline]
18271    pub fn builder<'a>() -> DeviceGroupBindSparseInfoBuilder<'a> {
18272        DeviceGroupBindSparseInfoBuilder {
18273            inner: DeviceGroupBindSparseInfo {
18274                s_type: StructureType::from_raw(1000060006i32),
18275                ..Default::default()
18276            },
18277            _marker: core::marker::PhantomData,
18278        }
18279    }
18280}
18281impl<'a> DeviceGroupBindSparseInfoBuilder<'a> {
18282    #[inline]
18283    pub fn resource_device_index(mut self, value: u32) -> Self {
18284        self.inner.resource_device_index = value;
18285        self
18286    }
18287    #[inline]
18288    pub fn memory_device_index(mut self, value: u32) -> Self {
18289        self.inner.memory_device_index = value;
18290        self
18291    }
18292    ///Prepend a struct to the pNext chain. See [`DeviceGroupBindSparseInfo`]'s **Extended By** section for valid types.
18293    #[inline]
18294    pub fn push_next<T: ExtendsDeviceGroupBindSparseInfo>(
18295        mut self,
18296        next: &'a mut T,
18297    ) -> Self {
18298        unsafe {
18299            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
18300            (*next_ptr).p_next = self.inner.p_next as *mut _;
18301            self.inner.p_next = <*mut BaseOutStructure>::cast::<
18302                core::ffi::c_void,
18303            >(next_ptr) as *const _;
18304        }
18305        self
18306    }
18307}
18308impl<'a> core::ops::Deref for DeviceGroupBindSparseInfoBuilder<'a> {
18309    type Target = DeviceGroupBindSparseInfo;
18310    #[inline]
18311    fn deref(&self) -> &Self::Target {
18312        &self.inner
18313    }
18314}
18315impl<'a> core::ops::DerefMut for DeviceGroupBindSparseInfoBuilder<'a> {
18316    #[inline]
18317    fn deref_mut(&mut self) -> &mut Self::Target {
18318        &mut self.inner
18319    }
18320}
18321///Builder for [`DeviceGroupPresentCapabilitiesKHR`] with lifetime-tied pNext safety.
18322pub struct DeviceGroupPresentCapabilitiesKHRBuilder<'a> {
18323    inner: DeviceGroupPresentCapabilitiesKHR,
18324    _marker: core::marker::PhantomData<&'a ()>,
18325}
18326impl DeviceGroupPresentCapabilitiesKHR {
18327    /// Start building this struct; `s_type` is already set to the correct variant.
18328    #[inline]
18329    pub fn builder<'a>() -> DeviceGroupPresentCapabilitiesKHRBuilder<'a> {
18330        DeviceGroupPresentCapabilitiesKHRBuilder {
18331            inner: DeviceGroupPresentCapabilitiesKHR {
18332                s_type: StructureType::from_raw(1000060007i32),
18333                ..Default::default()
18334            },
18335            _marker: core::marker::PhantomData,
18336        }
18337    }
18338}
18339impl<'a> DeviceGroupPresentCapabilitiesKHRBuilder<'a> {
18340    #[inline]
18341    pub fn present_mask(mut self, value: [u32; MAX_DEVICE_GROUP_SIZE as usize]) -> Self {
18342        self.inner.present_mask = value;
18343        self
18344    }
18345    #[inline]
18346    pub fn modes(mut self, value: DeviceGroupPresentModeFlagsKHR) -> Self {
18347        self.inner.modes = value;
18348        self
18349    }
18350}
18351impl<'a> core::ops::Deref for DeviceGroupPresentCapabilitiesKHRBuilder<'a> {
18352    type Target = DeviceGroupPresentCapabilitiesKHR;
18353    #[inline]
18354    fn deref(&self) -> &Self::Target {
18355        &self.inner
18356    }
18357}
18358impl<'a> core::ops::DerefMut for DeviceGroupPresentCapabilitiesKHRBuilder<'a> {
18359    #[inline]
18360    fn deref_mut(&mut self) -> &mut Self::Target {
18361        &mut self.inner
18362    }
18363}
18364///Builder for [`ImageSwapchainCreateInfoKHR`] with lifetime-tied pNext safety.
18365pub struct ImageSwapchainCreateInfoKHRBuilder<'a> {
18366    inner: ImageSwapchainCreateInfoKHR,
18367    _marker: core::marker::PhantomData<&'a ()>,
18368}
18369impl ImageSwapchainCreateInfoKHR {
18370    /// Start building this struct; `s_type` is already set to the correct variant.
18371    #[inline]
18372    pub fn builder<'a>() -> ImageSwapchainCreateInfoKHRBuilder<'a> {
18373        ImageSwapchainCreateInfoKHRBuilder {
18374            inner: ImageSwapchainCreateInfoKHR {
18375                s_type: StructureType::from_raw(1000060008i32),
18376                ..Default::default()
18377            },
18378            _marker: core::marker::PhantomData,
18379        }
18380    }
18381}
18382impl<'a> ImageSwapchainCreateInfoKHRBuilder<'a> {
18383    #[inline]
18384    pub fn swapchain(mut self, value: SwapchainKHR) -> Self {
18385        self.inner.swapchain = value;
18386        self
18387    }
18388    ///Prepend a struct to the pNext chain. See [`ImageSwapchainCreateInfoKHR`]'s **Extended By** section for valid types.
18389    #[inline]
18390    pub fn push_next<T: ExtendsImageSwapchainCreateInfoKHR>(
18391        mut self,
18392        next: &'a mut T,
18393    ) -> Self {
18394        unsafe {
18395            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
18396            (*next_ptr).p_next = self.inner.p_next as *mut _;
18397            self.inner.p_next = <*mut BaseOutStructure>::cast::<
18398                core::ffi::c_void,
18399            >(next_ptr) as *const _;
18400        }
18401        self
18402    }
18403}
18404impl<'a> core::ops::Deref for ImageSwapchainCreateInfoKHRBuilder<'a> {
18405    type Target = ImageSwapchainCreateInfoKHR;
18406    #[inline]
18407    fn deref(&self) -> &Self::Target {
18408        &self.inner
18409    }
18410}
18411impl<'a> core::ops::DerefMut for ImageSwapchainCreateInfoKHRBuilder<'a> {
18412    #[inline]
18413    fn deref_mut(&mut self) -> &mut Self::Target {
18414        &mut self.inner
18415    }
18416}
18417///Builder for [`BindImageMemorySwapchainInfoKHR`] with lifetime-tied pNext safety.
18418pub struct BindImageMemorySwapchainInfoKHRBuilder<'a> {
18419    inner: BindImageMemorySwapchainInfoKHR,
18420    _marker: core::marker::PhantomData<&'a ()>,
18421}
18422impl BindImageMemorySwapchainInfoKHR {
18423    /// Start building this struct; `s_type` is already set to the correct variant.
18424    #[inline]
18425    pub fn builder<'a>() -> BindImageMemorySwapchainInfoKHRBuilder<'a> {
18426        BindImageMemorySwapchainInfoKHRBuilder {
18427            inner: BindImageMemorySwapchainInfoKHR {
18428                s_type: StructureType::from_raw(1000060009i32),
18429                ..Default::default()
18430            },
18431            _marker: core::marker::PhantomData,
18432        }
18433    }
18434}
18435impl<'a> BindImageMemorySwapchainInfoKHRBuilder<'a> {
18436    #[inline]
18437    pub fn swapchain(mut self, value: SwapchainKHR) -> Self {
18438        self.inner.swapchain = value;
18439        self
18440    }
18441    #[inline]
18442    pub fn image_index(mut self, value: u32) -> Self {
18443        self.inner.image_index = value;
18444        self
18445    }
18446    ///Prepend a struct to the pNext chain. See [`BindImageMemorySwapchainInfoKHR`]'s **Extended By** section for valid types.
18447    #[inline]
18448    pub fn push_next<T: ExtendsBindImageMemorySwapchainInfoKHR>(
18449        mut self,
18450        next: &'a mut T,
18451    ) -> Self {
18452        unsafe {
18453            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
18454            (*next_ptr).p_next = self.inner.p_next as *mut _;
18455            self.inner.p_next = <*mut BaseOutStructure>::cast::<
18456                core::ffi::c_void,
18457            >(next_ptr) as *const _;
18458        }
18459        self
18460    }
18461}
18462impl<'a> core::ops::Deref for BindImageMemorySwapchainInfoKHRBuilder<'a> {
18463    type Target = BindImageMemorySwapchainInfoKHR;
18464    #[inline]
18465    fn deref(&self) -> &Self::Target {
18466        &self.inner
18467    }
18468}
18469impl<'a> core::ops::DerefMut for BindImageMemorySwapchainInfoKHRBuilder<'a> {
18470    #[inline]
18471    fn deref_mut(&mut self) -> &mut Self::Target {
18472        &mut self.inner
18473    }
18474}
18475///Builder for [`AcquireNextImageInfoKHR`] with lifetime-tied pNext safety.
18476pub struct AcquireNextImageInfoKHRBuilder<'a> {
18477    inner: AcquireNextImageInfoKHR,
18478    _marker: core::marker::PhantomData<&'a ()>,
18479}
18480impl AcquireNextImageInfoKHR {
18481    /// Start building this struct; `s_type` is already set to the correct variant.
18482    #[inline]
18483    pub fn builder<'a>() -> AcquireNextImageInfoKHRBuilder<'a> {
18484        AcquireNextImageInfoKHRBuilder {
18485            inner: AcquireNextImageInfoKHR {
18486                s_type: StructureType::from_raw(1000060010i32),
18487                ..Default::default()
18488            },
18489            _marker: core::marker::PhantomData,
18490        }
18491    }
18492}
18493impl<'a> AcquireNextImageInfoKHRBuilder<'a> {
18494    #[inline]
18495    pub fn swapchain(mut self, value: SwapchainKHR) -> Self {
18496        self.inner.swapchain = value;
18497        self
18498    }
18499    #[inline]
18500    pub fn timeout(mut self, value: u64) -> Self {
18501        self.inner.timeout = value;
18502        self
18503    }
18504    #[inline]
18505    pub fn semaphore(mut self, value: Semaphore) -> Self {
18506        self.inner.semaphore = value;
18507        self
18508    }
18509    #[inline]
18510    pub fn fence(mut self, value: Fence) -> Self {
18511        self.inner.fence = value;
18512        self
18513    }
18514    #[inline]
18515    pub fn device_mask(mut self, value: u32) -> Self {
18516        self.inner.device_mask = value;
18517        self
18518    }
18519    ///Prepend a struct to the pNext chain. See [`AcquireNextImageInfoKHR`]'s **Extended By** section for valid types.
18520    #[inline]
18521    pub fn push_next<T: ExtendsAcquireNextImageInfoKHR>(
18522        mut self,
18523        next: &'a mut T,
18524    ) -> Self {
18525        unsafe {
18526            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
18527            (*next_ptr).p_next = self.inner.p_next as *mut _;
18528            self.inner.p_next = <*mut BaseOutStructure>::cast::<
18529                core::ffi::c_void,
18530            >(next_ptr) as *const _;
18531        }
18532        self
18533    }
18534}
18535impl<'a> core::ops::Deref for AcquireNextImageInfoKHRBuilder<'a> {
18536    type Target = AcquireNextImageInfoKHR;
18537    #[inline]
18538    fn deref(&self) -> &Self::Target {
18539        &self.inner
18540    }
18541}
18542impl<'a> core::ops::DerefMut for AcquireNextImageInfoKHRBuilder<'a> {
18543    #[inline]
18544    fn deref_mut(&mut self) -> &mut Self::Target {
18545        &mut self.inner
18546    }
18547}
18548///Builder for [`DeviceGroupPresentInfoKHR`] with lifetime-tied pNext safety.
18549pub struct DeviceGroupPresentInfoKHRBuilder<'a> {
18550    inner: DeviceGroupPresentInfoKHR,
18551    _marker: core::marker::PhantomData<&'a ()>,
18552}
18553impl DeviceGroupPresentInfoKHR {
18554    /// Start building this struct; `s_type` is already set to the correct variant.
18555    #[inline]
18556    pub fn builder<'a>() -> DeviceGroupPresentInfoKHRBuilder<'a> {
18557        DeviceGroupPresentInfoKHRBuilder {
18558            inner: DeviceGroupPresentInfoKHR {
18559                s_type: StructureType::from_raw(1000060011i32),
18560                ..Default::default()
18561            },
18562            _marker: core::marker::PhantomData,
18563        }
18564    }
18565}
18566impl<'a> DeviceGroupPresentInfoKHRBuilder<'a> {
18567    #[inline]
18568    pub fn device_masks(mut self, slice: &'a [u32]) -> Self {
18569        self.inner.swapchain_count = slice.len() as u32;
18570        self.inner.p_device_masks = slice.as_ptr();
18571        self
18572    }
18573    #[inline]
18574    pub fn mode(mut self, value: DeviceGroupPresentModeFlagBitsKHR) -> Self {
18575        self.inner.mode = value;
18576        self
18577    }
18578    ///Prepend a struct to the pNext chain. See [`DeviceGroupPresentInfoKHR`]'s **Extended By** section for valid types.
18579    #[inline]
18580    pub fn push_next<T: ExtendsDeviceGroupPresentInfoKHR>(
18581        mut self,
18582        next: &'a mut T,
18583    ) -> Self {
18584        unsafe {
18585            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
18586            (*next_ptr).p_next = self.inner.p_next as *mut _;
18587            self.inner.p_next = <*mut BaseOutStructure>::cast::<
18588                core::ffi::c_void,
18589            >(next_ptr) as *const _;
18590        }
18591        self
18592    }
18593}
18594impl<'a> core::ops::Deref for DeviceGroupPresentInfoKHRBuilder<'a> {
18595    type Target = DeviceGroupPresentInfoKHR;
18596    #[inline]
18597    fn deref(&self) -> &Self::Target {
18598        &self.inner
18599    }
18600}
18601impl<'a> core::ops::DerefMut for DeviceGroupPresentInfoKHRBuilder<'a> {
18602    #[inline]
18603    fn deref_mut(&mut self) -> &mut Self::Target {
18604        &mut self.inner
18605    }
18606}
18607///Builder for [`DeviceGroupDeviceCreateInfo`] with lifetime-tied pNext safety.
18608pub struct DeviceGroupDeviceCreateInfoBuilder<'a> {
18609    inner: DeviceGroupDeviceCreateInfo,
18610    _marker: core::marker::PhantomData<&'a ()>,
18611}
18612impl DeviceGroupDeviceCreateInfo {
18613    /// Start building this struct; `s_type` is already set to the correct variant.
18614    #[inline]
18615    pub fn builder<'a>() -> DeviceGroupDeviceCreateInfoBuilder<'a> {
18616        DeviceGroupDeviceCreateInfoBuilder {
18617            inner: DeviceGroupDeviceCreateInfo {
18618                s_type: StructureType::from_raw(1000070001i32),
18619                ..Default::default()
18620            },
18621            _marker: core::marker::PhantomData,
18622        }
18623    }
18624}
18625impl<'a> DeviceGroupDeviceCreateInfoBuilder<'a> {
18626    #[inline]
18627    pub fn physical_devices(mut self, slice: &'a [PhysicalDevice]) -> Self {
18628        self.inner.physical_device_count = slice.len() as u32;
18629        self.inner.p_physical_devices = slice.as_ptr();
18630        self
18631    }
18632    ///Prepend a struct to the pNext chain. See [`DeviceGroupDeviceCreateInfo`]'s **Extended By** section for valid types.
18633    #[inline]
18634    pub fn push_next<T: ExtendsDeviceGroupDeviceCreateInfo>(
18635        mut self,
18636        next: &'a mut T,
18637    ) -> Self {
18638        unsafe {
18639            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
18640            (*next_ptr).p_next = self.inner.p_next as *mut _;
18641            self.inner.p_next = <*mut BaseOutStructure>::cast::<
18642                core::ffi::c_void,
18643            >(next_ptr) as *const _;
18644        }
18645        self
18646    }
18647}
18648impl<'a> core::ops::Deref for DeviceGroupDeviceCreateInfoBuilder<'a> {
18649    type Target = DeviceGroupDeviceCreateInfo;
18650    #[inline]
18651    fn deref(&self) -> &Self::Target {
18652        &self.inner
18653    }
18654}
18655impl<'a> core::ops::DerefMut for DeviceGroupDeviceCreateInfoBuilder<'a> {
18656    #[inline]
18657    fn deref_mut(&mut self) -> &mut Self::Target {
18658        &mut self.inner
18659    }
18660}
18661///Builder for [`DeviceGroupSwapchainCreateInfoKHR`] with lifetime-tied pNext safety.
18662pub struct DeviceGroupSwapchainCreateInfoKHRBuilder<'a> {
18663    inner: DeviceGroupSwapchainCreateInfoKHR,
18664    _marker: core::marker::PhantomData<&'a ()>,
18665}
18666impl DeviceGroupSwapchainCreateInfoKHR {
18667    /// Start building this struct; `s_type` is already set to the correct variant.
18668    #[inline]
18669    pub fn builder<'a>() -> DeviceGroupSwapchainCreateInfoKHRBuilder<'a> {
18670        DeviceGroupSwapchainCreateInfoKHRBuilder {
18671            inner: DeviceGroupSwapchainCreateInfoKHR {
18672                s_type: StructureType::from_raw(1000060012i32),
18673                ..Default::default()
18674            },
18675            _marker: core::marker::PhantomData,
18676        }
18677    }
18678}
18679impl<'a> DeviceGroupSwapchainCreateInfoKHRBuilder<'a> {
18680    #[inline]
18681    pub fn modes(mut self, value: DeviceGroupPresentModeFlagsKHR) -> Self {
18682        self.inner.modes = value;
18683        self
18684    }
18685    ///Prepend a struct to the pNext chain. See [`DeviceGroupSwapchainCreateInfoKHR`]'s **Extended By** section for valid types.
18686    #[inline]
18687    pub fn push_next<T: ExtendsDeviceGroupSwapchainCreateInfoKHR>(
18688        mut self,
18689        next: &'a mut T,
18690    ) -> Self {
18691        unsafe {
18692            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
18693            (*next_ptr).p_next = self.inner.p_next as *mut _;
18694            self.inner.p_next = <*mut BaseOutStructure>::cast::<
18695                core::ffi::c_void,
18696            >(next_ptr) as *const _;
18697        }
18698        self
18699    }
18700}
18701impl<'a> core::ops::Deref for DeviceGroupSwapchainCreateInfoKHRBuilder<'a> {
18702    type Target = DeviceGroupSwapchainCreateInfoKHR;
18703    #[inline]
18704    fn deref(&self) -> &Self::Target {
18705        &self.inner
18706    }
18707}
18708impl<'a> core::ops::DerefMut for DeviceGroupSwapchainCreateInfoKHRBuilder<'a> {
18709    #[inline]
18710    fn deref_mut(&mut self) -> &mut Self::Target {
18711        &mut self.inner
18712    }
18713}
18714///Builder for [`DescriptorUpdateTemplateEntry`].
18715pub struct DescriptorUpdateTemplateEntryBuilder {
18716    inner: DescriptorUpdateTemplateEntry,
18717}
18718impl DescriptorUpdateTemplateEntry {
18719    /// Start building this struct.
18720    #[inline]
18721    pub fn builder() -> DescriptorUpdateTemplateEntryBuilder {
18722        DescriptorUpdateTemplateEntryBuilder {
18723            inner: DescriptorUpdateTemplateEntry {
18724                ..Default::default()
18725            },
18726        }
18727    }
18728}
18729impl DescriptorUpdateTemplateEntryBuilder {
18730    #[inline]
18731    pub fn dst_binding(mut self, value: u32) -> Self {
18732        self.inner.dst_binding = value;
18733        self
18734    }
18735    #[inline]
18736    pub fn dst_array_element(mut self, value: u32) -> Self {
18737        self.inner.dst_array_element = value;
18738        self
18739    }
18740    #[inline]
18741    pub fn descriptor_count(mut self, value: u32) -> Self {
18742        self.inner.descriptor_count = value;
18743        self
18744    }
18745    #[inline]
18746    pub fn descriptor_type(mut self, value: DescriptorType) -> Self {
18747        self.inner.descriptor_type = value;
18748        self
18749    }
18750    #[inline]
18751    pub fn offset(mut self, value: usize) -> Self {
18752        self.inner.offset = value;
18753        self
18754    }
18755    #[inline]
18756    pub fn stride(mut self, value: usize) -> Self {
18757        self.inner.stride = value;
18758        self
18759    }
18760}
18761impl core::ops::Deref for DescriptorUpdateTemplateEntryBuilder {
18762    type Target = DescriptorUpdateTemplateEntry;
18763    #[inline]
18764    fn deref(&self) -> &Self::Target {
18765        &self.inner
18766    }
18767}
18768impl core::ops::DerefMut for DescriptorUpdateTemplateEntryBuilder {
18769    #[inline]
18770    fn deref_mut(&mut self) -> &mut Self::Target {
18771        &mut self.inner
18772    }
18773}
18774///Builder for [`DescriptorUpdateTemplateCreateInfo`] with lifetime-tied pNext safety.
18775pub struct DescriptorUpdateTemplateCreateInfoBuilder<'a> {
18776    inner: DescriptorUpdateTemplateCreateInfo,
18777    _marker: core::marker::PhantomData<&'a ()>,
18778}
18779impl DescriptorUpdateTemplateCreateInfo {
18780    /// Start building this struct; `s_type` is already set to the correct variant.
18781    #[inline]
18782    pub fn builder<'a>() -> DescriptorUpdateTemplateCreateInfoBuilder<'a> {
18783        DescriptorUpdateTemplateCreateInfoBuilder {
18784            inner: DescriptorUpdateTemplateCreateInfo {
18785                s_type: StructureType::from_raw(1000085000i32),
18786                ..Default::default()
18787            },
18788            _marker: core::marker::PhantomData,
18789        }
18790    }
18791}
18792impl<'a> DescriptorUpdateTemplateCreateInfoBuilder<'a> {
18793    #[inline]
18794    pub fn flags(mut self, value: DescriptorUpdateTemplateCreateFlags) -> Self {
18795        self.inner.flags = value;
18796        self
18797    }
18798    #[inline]
18799    pub fn descriptor_update_entries(
18800        mut self,
18801        slice: &'a [DescriptorUpdateTemplateEntry],
18802    ) -> Self {
18803        self.inner.descriptor_update_entry_count = slice.len() as u32;
18804        self.inner.p_descriptor_update_entries = slice.as_ptr();
18805        self
18806    }
18807    #[inline]
18808    pub fn template_type(mut self, value: DescriptorUpdateTemplateType) -> Self {
18809        self.inner.template_type = value;
18810        self
18811    }
18812    #[inline]
18813    pub fn descriptor_set_layout(mut self, value: DescriptorSetLayout) -> Self {
18814        self.inner.descriptor_set_layout = value;
18815        self
18816    }
18817    #[inline]
18818    pub fn pipeline_bind_point(mut self, value: PipelineBindPoint) -> Self {
18819        self.inner.pipeline_bind_point = value;
18820        self
18821    }
18822    #[inline]
18823    pub fn pipeline_layout(mut self, value: PipelineLayout) -> Self {
18824        self.inner.pipeline_layout = value;
18825        self
18826    }
18827    #[inline]
18828    pub fn set(mut self, value: u32) -> Self {
18829        self.inner.set = value;
18830        self
18831    }
18832    ///Prepend a struct to the pNext chain. See [`DescriptorUpdateTemplateCreateInfo`]'s **Extended By** section for valid types.
18833    #[inline]
18834    pub fn push_next<T: ExtendsDescriptorUpdateTemplateCreateInfo>(
18835        mut self,
18836        next: &'a mut T,
18837    ) -> Self {
18838        unsafe {
18839            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
18840            (*next_ptr).p_next = self.inner.p_next as *mut _;
18841            self.inner.p_next = <*mut BaseOutStructure>::cast::<
18842                core::ffi::c_void,
18843            >(next_ptr) as *const _;
18844        }
18845        self
18846    }
18847}
18848impl<'a> core::ops::Deref for DescriptorUpdateTemplateCreateInfoBuilder<'a> {
18849    type Target = DescriptorUpdateTemplateCreateInfo;
18850    #[inline]
18851    fn deref(&self) -> &Self::Target {
18852        &self.inner
18853    }
18854}
18855impl<'a> core::ops::DerefMut for DescriptorUpdateTemplateCreateInfoBuilder<'a> {
18856    #[inline]
18857    fn deref_mut(&mut self) -> &mut Self::Target {
18858        &mut self.inner
18859    }
18860}
18861///Builder for [`XYColorEXT`].
18862pub struct XYColorEXTBuilder {
18863    inner: XYColorEXT,
18864}
18865impl XYColorEXT {
18866    /// Start building this struct.
18867    #[inline]
18868    pub fn builder() -> XYColorEXTBuilder {
18869        XYColorEXTBuilder {
18870            inner: XYColorEXT { ..Default::default() },
18871        }
18872    }
18873}
18874impl XYColorEXTBuilder {
18875    #[inline]
18876    pub fn x(mut self, value: f32) -> Self {
18877        self.inner.x = value;
18878        self
18879    }
18880    #[inline]
18881    pub fn y(mut self, value: f32) -> Self {
18882        self.inner.y = value;
18883        self
18884    }
18885}
18886impl core::ops::Deref for XYColorEXTBuilder {
18887    type Target = XYColorEXT;
18888    #[inline]
18889    fn deref(&self) -> &Self::Target {
18890        &self.inner
18891    }
18892}
18893impl core::ops::DerefMut for XYColorEXTBuilder {
18894    #[inline]
18895    fn deref_mut(&mut self) -> &mut Self::Target {
18896        &mut self.inner
18897    }
18898}
18899///Builder for [`PhysicalDevicePresentIdFeaturesKHR`] with lifetime-tied pNext safety.
18900pub struct PhysicalDevicePresentIdFeaturesKHRBuilder<'a> {
18901    inner: PhysicalDevicePresentIdFeaturesKHR,
18902    _marker: core::marker::PhantomData<&'a ()>,
18903}
18904impl PhysicalDevicePresentIdFeaturesKHR {
18905    /// Start building this struct; `s_type` is already set to the correct variant.
18906    #[inline]
18907    pub fn builder<'a>() -> PhysicalDevicePresentIdFeaturesKHRBuilder<'a> {
18908        PhysicalDevicePresentIdFeaturesKHRBuilder {
18909            inner: PhysicalDevicePresentIdFeaturesKHR {
18910                s_type: StructureType::from_raw(1000294001i32),
18911                ..Default::default()
18912            },
18913            _marker: core::marker::PhantomData,
18914        }
18915    }
18916}
18917impl<'a> PhysicalDevicePresentIdFeaturesKHRBuilder<'a> {
18918    #[inline]
18919    pub fn present_id(mut self, value: bool) -> Self {
18920        self.inner.present_id = value as u32;
18921        self
18922    }
18923    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePresentIdFeaturesKHR`]'s **Extended By** section for valid types.
18924    #[inline]
18925    pub fn push_next<T: ExtendsPhysicalDevicePresentIdFeaturesKHR>(
18926        mut self,
18927        next: &'a mut T,
18928    ) -> Self {
18929        unsafe {
18930            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
18931            (*next_ptr).p_next = self.inner.p_next as *mut _;
18932            self.inner.p_next = <*mut BaseOutStructure>::cast::<
18933                core::ffi::c_void,
18934            >(next_ptr);
18935        }
18936        self
18937    }
18938}
18939impl<'a> core::ops::Deref for PhysicalDevicePresentIdFeaturesKHRBuilder<'a> {
18940    type Target = PhysicalDevicePresentIdFeaturesKHR;
18941    #[inline]
18942    fn deref(&self) -> &Self::Target {
18943        &self.inner
18944    }
18945}
18946impl<'a> core::ops::DerefMut for PhysicalDevicePresentIdFeaturesKHRBuilder<'a> {
18947    #[inline]
18948    fn deref_mut(&mut self) -> &mut Self::Target {
18949        &mut self.inner
18950    }
18951}
18952///Builder for [`PresentIdKHR`] with lifetime-tied pNext safety.
18953pub struct PresentIdKHRBuilder<'a> {
18954    inner: PresentIdKHR,
18955    _marker: core::marker::PhantomData<&'a ()>,
18956}
18957impl PresentIdKHR {
18958    /// Start building this struct; `s_type` is already set to the correct variant.
18959    #[inline]
18960    pub fn builder<'a>() -> PresentIdKHRBuilder<'a> {
18961        PresentIdKHRBuilder {
18962            inner: PresentIdKHR {
18963                s_type: StructureType::from_raw(1000294000i32),
18964                ..Default::default()
18965            },
18966            _marker: core::marker::PhantomData,
18967        }
18968    }
18969}
18970impl<'a> PresentIdKHRBuilder<'a> {
18971    #[inline]
18972    pub fn swapchain_count(mut self, value: u32) -> Self {
18973        self.inner.swapchain_count = value;
18974        self
18975    }
18976    #[inline]
18977    pub fn present_ids(mut self, slice: &'a [u64]) -> Self {
18978        self.inner.swapchain_count = slice.len() as u32;
18979        self.inner.p_present_ids = slice.as_ptr();
18980        self
18981    }
18982    ///Prepend a struct to the pNext chain. See [`PresentIdKHR`]'s **Extended By** section for valid types.
18983    #[inline]
18984    pub fn push_next<T: ExtendsPresentIdKHR>(mut self, next: &'a mut T) -> Self {
18985        unsafe {
18986            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
18987            (*next_ptr).p_next = self.inner.p_next as *mut _;
18988            self.inner.p_next = <*mut BaseOutStructure>::cast::<
18989                core::ffi::c_void,
18990            >(next_ptr) as *const _;
18991        }
18992        self
18993    }
18994}
18995impl<'a> core::ops::Deref for PresentIdKHRBuilder<'a> {
18996    type Target = PresentIdKHR;
18997    #[inline]
18998    fn deref(&self) -> &Self::Target {
18999        &self.inner
19000    }
19001}
19002impl<'a> core::ops::DerefMut for PresentIdKHRBuilder<'a> {
19003    #[inline]
19004    fn deref_mut(&mut self) -> &mut Self::Target {
19005        &mut self.inner
19006    }
19007}
19008///Builder for [`PhysicalDevicePresentId2FeaturesKHR`] with lifetime-tied pNext safety.
19009pub struct PhysicalDevicePresentId2FeaturesKHRBuilder<'a> {
19010    inner: PhysicalDevicePresentId2FeaturesKHR,
19011    _marker: core::marker::PhantomData<&'a ()>,
19012}
19013impl PhysicalDevicePresentId2FeaturesKHR {
19014    /// Start building this struct; `s_type` is already set to the correct variant.
19015    #[inline]
19016    pub fn builder<'a>() -> PhysicalDevicePresentId2FeaturesKHRBuilder<'a> {
19017        PhysicalDevicePresentId2FeaturesKHRBuilder {
19018            inner: PhysicalDevicePresentId2FeaturesKHR {
19019                s_type: StructureType::from_raw(1000479002i32),
19020                ..Default::default()
19021            },
19022            _marker: core::marker::PhantomData,
19023        }
19024    }
19025}
19026impl<'a> PhysicalDevicePresentId2FeaturesKHRBuilder<'a> {
19027    #[inline]
19028    pub fn present_id2(mut self, value: bool) -> Self {
19029        self.inner.present_id2 = value as u32;
19030        self
19031    }
19032    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePresentId2FeaturesKHR`]'s **Extended By** section for valid types.
19033    #[inline]
19034    pub fn push_next<T: ExtendsPhysicalDevicePresentId2FeaturesKHR>(
19035        mut self,
19036        next: &'a mut T,
19037    ) -> Self {
19038        unsafe {
19039            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
19040            (*next_ptr).p_next = self.inner.p_next as *mut _;
19041            self.inner.p_next = <*mut BaseOutStructure>::cast::<
19042                core::ffi::c_void,
19043            >(next_ptr);
19044        }
19045        self
19046    }
19047}
19048impl<'a> core::ops::Deref for PhysicalDevicePresentId2FeaturesKHRBuilder<'a> {
19049    type Target = PhysicalDevicePresentId2FeaturesKHR;
19050    #[inline]
19051    fn deref(&self) -> &Self::Target {
19052        &self.inner
19053    }
19054}
19055impl<'a> core::ops::DerefMut for PhysicalDevicePresentId2FeaturesKHRBuilder<'a> {
19056    #[inline]
19057    fn deref_mut(&mut self) -> &mut Self::Target {
19058        &mut self.inner
19059    }
19060}
19061///Builder for [`PresentId2KHR`] with lifetime-tied pNext safety.
19062pub struct PresentId2KHRBuilder<'a> {
19063    inner: PresentId2KHR,
19064    _marker: core::marker::PhantomData<&'a ()>,
19065}
19066impl PresentId2KHR {
19067    /// Start building this struct; `s_type` is already set to the correct variant.
19068    #[inline]
19069    pub fn builder<'a>() -> PresentId2KHRBuilder<'a> {
19070        PresentId2KHRBuilder {
19071            inner: PresentId2KHR {
19072                s_type: StructureType::from_raw(1000479001i32),
19073                ..Default::default()
19074            },
19075            _marker: core::marker::PhantomData,
19076        }
19077    }
19078}
19079impl<'a> PresentId2KHRBuilder<'a> {
19080    #[inline]
19081    pub fn swapchain_count(mut self, value: u32) -> Self {
19082        self.inner.swapchain_count = value;
19083        self
19084    }
19085    #[inline]
19086    pub fn present_ids(mut self, slice: &'a [u64]) -> Self {
19087        self.inner.swapchain_count = slice.len() as u32;
19088        self.inner.p_present_ids = slice.as_ptr();
19089        self
19090    }
19091    ///Prepend a struct to the pNext chain. See [`PresentId2KHR`]'s **Extended By** section for valid types.
19092    #[inline]
19093    pub fn push_next<T: ExtendsPresentId2KHR>(mut self, next: &'a mut T) -> Self {
19094        unsafe {
19095            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
19096            (*next_ptr).p_next = self.inner.p_next as *mut _;
19097            self.inner.p_next = <*mut BaseOutStructure>::cast::<
19098                core::ffi::c_void,
19099            >(next_ptr) as *const _;
19100        }
19101        self
19102    }
19103}
19104impl<'a> core::ops::Deref for PresentId2KHRBuilder<'a> {
19105    type Target = PresentId2KHR;
19106    #[inline]
19107    fn deref(&self) -> &Self::Target {
19108        &self.inner
19109    }
19110}
19111impl<'a> core::ops::DerefMut for PresentId2KHRBuilder<'a> {
19112    #[inline]
19113    fn deref_mut(&mut self) -> &mut Self::Target {
19114        &mut self.inner
19115    }
19116}
19117///Builder for [`PresentWait2InfoKHR`] with lifetime-tied pNext safety.
19118pub struct PresentWait2InfoKHRBuilder<'a> {
19119    inner: PresentWait2InfoKHR,
19120    _marker: core::marker::PhantomData<&'a ()>,
19121}
19122impl PresentWait2InfoKHR {
19123    /// Start building this struct; `s_type` is already set to the correct variant.
19124    #[inline]
19125    pub fn builder<'a>() -> PresentWait2InfoKHRBuilder<'a> {
19126        PresentWait2InfoKHRBuilder {
19127            inner: PresentWait2InfoKHR {
19128                s_type: StructureType::from_raw(1000480002i32),
19129                ..Default::default()
19130            },
19131            _marker: core::marker::PhantomData,
19132        }
19133    }
19134}
19135impl<'a> PresentWait2InfoKHRBuilder<'a> {
19136    #[inline]
19137    pub fn present_id(mut self, value: u64) -> Self {
19138        self.inner.present_id = value;
19139        self
19140    }
19141    #[inline]
19142    pub fn timeout(mut self, value: u64) -> Self {
19143        self.inner.timeout = value;
19144        self
19145    }
19146    ///Prepend a struct to the pNext chain. See [`PresentWait2InfoKHR`]'s **Extended By** section for valid types.
19147    #[inline]
19148    pub fn push_next<T: ExtendsPresentWait2InfoKHR>(mut self, next: &'a mut T) -> Self {
19149        unsafe {
19150            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
19151            (*next_ptr).p_next = self.inner.p_next as *mut _;
19152            self.inner.p_next = <*mut BaseOutStructure>::cast::<
19153                core::ffi::c_void,
19154            >(next_ptr) as *const _;
19155        }
19156        self
19157    }
19158}
19159impl<'a> core::ops::Deref for PresentWait2InfoKHRBuilder<'a> {
19160    type Target = PresentWait2InfoKHR;
19161    #[inline]
19162    fn deref(&self) -> &Self::Target {
19163        &self.inner
19164    }
19165}
19166impl<'a> core::ops::DerefMut for PresentWait2InfoKHRBuilder<'a> {
19167    #[inline]
19168    fn deref_mut(&mut self) -> &mut Self::Target {
19169        &mut self.inner
19170    }
19171}
19172///Builder for [`PhysicalDevicePresentWaitFeaturesKHR`] with lifetime-tied pNext safety.
19173pub struct PhysicalDevicePresentWaitFeaturesKHRBuilder<'a> {
19174    inner: PhysicalDevicePresentWaitFeaturesKHR,
19175    _marker: core::marker::PhantomData<&'a ()>,
19176}
19177impl PhysicalDevicePresentWaitFeaturesKHR {
19178    /// Start building this struct; `s_type` is already set to the correct variant.
19179    #[inline]
19180    pub fn builder<'a>() -> PhysicalDevicePresentWaitFeaturesKHRBuilder<'a> {
19181        PhysicalDevicePresentWaitFeaturesKHRBuilder {
19182            inner: PhysicalDevicePresentWaitFeaturesKHR {
19183                s_type: StructureType::from_raw(1000248000i32),
19184                ..Default::default()
19185            },
19186            _marker: core::marker::PhantomData,
19187        }
19188    }
19189}
19190impl<'a> PhysicalDevicePresentWaitFeaturesKHRBuilder<'a> {
19191    #[inline]
19192    pub fn present_wait(mut self, value: bool) -> Self {
19193        self.inner.present_wait = value as u32;
19194        self
19195    }
19196    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePresentWaitFeaturesKHR`]'s **Extended By** section for valid types.
19197    #[inline]
19198    pub fn push_next<T: ExtendsPhysicalDevicePresentWaitFeaturesKHR>(
19199        mut self,
19200        next: &'a mut T,
19201    ) -> Self {
19202        unsafe {
19203            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
19204            (*next_ptr).p_next = self.inner.p_next as *mut _;
19205            self.inner.p_next = <*mut BaseOutStructure>::cast::<
19206                core::ffi::c_void,
19207            >(next_ptr);
19208        }
19209        self
19210    }
19211}
19212impl<'a> core::ops::Deref for PhysicalDevicePresentWaitFeaturesKHRBuilder<'a> {
19213    type Target = PhysicalDevicePresentWaitFeaturesKHR;
19214    #[inline]
19215    fn deref(&self) -> &Self::Target {
19216        &self.inner
19217    }
19218}
19219impl<'a> core::ops::DerefMut for PhysicalDevicePresentWaitFeaturesKHRBuilder<'a> {
19220    #[inline]
19221    fn deref_mut(&mut self) -> &mut Self::Target {
19222        &mut self.inner
19223    }
19224}
19225///Builder for [`PhysicalDevicePresentWait2FeaturesKHR`] with lifetime-tied pNext safety.
19226pub struct PhysicalDevicePresentWait2FeaturesKHRBuilder<'a> {
19227    inner: PhysicalDevicePresentWait2FeaturesKHR,
19228    _marker: core::marker::PhantomData<&'a ()>,
19229}
19230impl PhysicalDevicePresentWait2FeaturesKHR {
19231    /// Start building this struct; `s_type` is already set to the correct variant.
19232    #[inline]
19233    pub fn builder<'a>() -> PhysicalDevicePresentWait2FeaturesKHRBuilder<'a> {
19234        PhysicalDevicePresentWait2FeaturesKHRBuilder {
19235            inner: PhysicalDevicePresentWait2FeaturesKHR {
19236                s_type: StructureType::from_raw(1000480001i32),
19237                ..Default::default()
19238            },
19239            _marker: core::marker::PhantomData,
19240        }
19241    }
19242}
19243impl<'a> PhysicalDevicePresentWait2FeaturesKHRBuilder<'a> {
19244    #[inline]
19245    pub fn present_wait2(mut self, value: bool) -> Self {
19246        self.inner.present_wait2 = value as u32;
19247        self
19248    }
19249    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePresentWait2FeaturesKHR`]'s **Extended By** section for valid types.
19250    #[inline]
19251    pub fn push_next<T: ExtendsPhysicalDevicePresentWait2FeaturesKHR>(
19252        mut self,
19253        next: &'a mut T,
19254    ) -> Self {
19255        unsafe {
19256            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
19257            (*next_ptr).p_next = self.inner.p_next as *mut _;
19258            self.inner.p_next = <*mut BaseOutStructure>::cast::<
19259                core::ffi::c_void,
19260            >(next_ptr);
19261        }
19262        self
19263    }
19264}
19265impl<'a> core::ops::Deref for PhysicalDevicePresentWait2FeaturesKHRBuilder<'a> {
19266    type Target = PhysicalDevicePresentWait2FeaturesKHR;
19267    #[inline]
19268    fn deref(&self) -> &Self::Target {
19269        &self.inner
19270    }
19271}
19272impl<'a> core::ops::DerefMut for PhysicalDevicePresentWait2FeaturesKHRBuilder<'a> {
19273    #[inline]
19274    fn deref_mut(&mut self) -> &mut Self::Target {
19275        &mut self.inner
19276    }
19277}
19278///Builder for [`PhysicalDevicePresentTimingFeaturesEXT`] with lifetime-tied pNext safety.
19279pub struct PhysicalDevicePresentTimingFeaturesEXTBuilder<'a> {
19280    inner: PhysicalDevicePresentTimingFeaturesEXT,
19281    _marker: core::marker::PhantomData<&'a ()>,
19282}
19283impl PhysicalDevicePresentTimingFeaturesEXT {
19284    /// Start building this struct; `s_type` is already set to the correct variant.
19285    #[inline]
19286    pub fn builder<'a>() -> PhysicalDevicePresentTimingFeaturesEXTBuilder<'a> {
19287        PhysicalDevicePresentTimingFeaturesEXTBuilder {
19288            inner: PhysicalDevicePresentTimingFeaturesEXT {
19289                s_type: StructureType::from_raw(1000208000i32),
19290                ..Default::default()
19291            },
19292            _marker: core::marker::PhantomData,
19293        }
19294    }
19295}
19296impl<'a> PhysicalDevicePresentTimingFeaturesEXTBuilder<'a> {
19297    #[inline]
19298    pub fn present_timing(mut self, value: bool) -> Self {
19299        self.inner.present_timing = value as u32;
19300        self
19301    }
19302    #[inline]
19303    pub fn present_at_absolute_time(mut self, value: bool) -> Self {
19304        self.inner.present_at_absolute_time = value as u32;
19305        self
19306    }
19307    #[inline]
19308    pub fn present_at_relative_time(mut self, value: bool) -> Self {
19309        self.inner.present_at_relative_time = value as u32;
19310        self
19311    }
19312    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePresentTimingFeaturesEXT`]'s **Extended By** section for valid types.
19313    #[inline]
19314    pub fn push_next<T: ExtendsPhysicalDevicePresentTimingFeaturesEXT>(
19315        mut self,
19316        next: &'a mut T,
19317    ) -> Self {
19318        unsafe {
19319            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
19320            (*next_ptr).p_next = self.inner.p_next as *mut _;
19321            self.inner.p_next = <*mut BaseOutStructure>::cast::<
19322                core::ffi::c_void,
19323            >(next_ptr);
19324        }
19325        self
19326    }
19327}
19328impl<'a> core::ops::Deref for PhysicalDevicePresentTimingFeaturesEXTBuilder<'a> {
19329    type Target = PhysicalDevicePresentTimingFeaturesEXT;
19330    #[inline]
19331    fn deref(&self) -> &Self::Target {
19332        &self.inner
19333    }
19334}
19335impl<'a> core::ops::DerefMut for PhysicalDevicePresentTimingFeaturesEXTBuilder<'a> {
19336    #[inline]
19337    fn deref_mut(&mut self) -> &mut Self::Target {
19338        &mut self.inner
19339    }
19340}
19341///Builder for [`PresentTimingSurfaceCapabilitiesEXT`] with lifetime-tied pNext safety.
19342pub struct PresentTimingSurfaceCapabilitiesEXTBuilder<'a> {
19343    inner: PresentTimingSurfaceCapabilitiesEXT,
19344    _marker: core::marker::PhantomData<&'a ()>,
19345}
19346impl PresentTimingSurfaceCapabilitiesEXT {
19347    /// Start building this struct; `s_type` is already set to the correct variant.
19348    #[inline]
19349    pub fn builder<'a>() -> PresentTimingSurfaceCapabilitiesEXTBuilder<'a> {
19350        PresentTimingSurfaceCapabilitiesEXTBuilder {
19351            inner: PresentTimingSurfaceCapabilitiesEXT {
19352                s_type: StructureType::from_raw(1000208008i32),
19353                ..Default::default()
19354            },
19355            _marker: core::marker::PhantomData,
19356        }
19357    }
19358}
19359impl<'a> PresentTimingSurfaceCapabilitiesEXTBuilder<'a> {
19360    #[inline]
19361    pub fn present_timing_supported(mut self, value: bool) -> Self {
19362        self.inner.present_timing_supported = value as u32;
19363        self
19364    }
19365    #[inline]
19366    pub fn present_at_absolute_time_supported(mut self, value: bool) -> Self {
19367        self.inner.present_at_absolute_time_supported = value as u32;
19368        self
19369    }
19370    #[inline]
19371    pub fn present_at_relative_time_supported(mut self, value: bool) -> Self {
19372        self.inner.present_at_relative_time_supported = value as u32;
19373        self
19374    }
19375    #[inline]
19376    pub fn present_stage_queries(mut self, value: PresentStageFlagsEXT) -> Self {
19377        self.inner.present_stage_queries = value;
19378        self
19379    }
19380}
19381impl<'a> core::ops::Deref for PresentTimingSurfaceCapabilitiesEXTBuilder<'a> {
19382    type Target = PresentTimingSurfaceCapabilitiesEXT;
19383    #[inline]
19384    fn deref(&self) -> &Self::Target {
19385        &self.inner
19386    }
19387}
19388impl<'a> core::ops::DerefMut for PresentTimingSurfaceCapabilitiesEXTBuilder<'a> {
19389    #[inline]
19390    fn deref_mut(&mut self) -> &mut Self::Target {
19391        &mut self.inner
19392    }
19393}
19394///Builder for [`SwapchainTimingPropertiesEXT`] with lifetime-tied pNext safety.
19395pub struct SwapchainTimingPropertiesEXTBuilder<'a> {
19396    inner: SwapchainTimingPropertiesEXT,
19397    _marker: core::marker::PhantomData<&'a ()>,
19398}
19399impl SwapchainTimingPropertiesEXT {
19400    /// Start building this struct; `s_type` is already set to the correct variant.
19401    #[inline]
19402    pub fn builder<'a>() -> SwapchainTimingPropertiesEXTBuilder<'a> {
19403        SwapchainTimingPropertiesEXTBuilder {
19404            inner: SwapchainTimingPropertiesEXT {
19405                s_type: StructureType::from_raw(1000208001i32),
19406                ..Default::default()
19407            },
19408            _marker: core::marker::PhantomData,
19409        }
19410    }
19411}
19412impl<'a> SwapchainTimingPropertiesEXTBuilder<'a> {
19413    #[inline]
19414    pub fn refresh_duration(mut self, value: u64) -> Self {
19415        self.inner.refresh_duration = value;
19416        self
19417    }
19418    #[inline]
19419    pub fn refresh_interval(mut self, value: u64) -> Self {
19420        self.inner.refresh_interval = value;
19421        self
19422    }
19423}
19424impl<'a> core::ops::Deref for SwapchainTimingPropertiesEXTBuilder<'a> {
19425    type Target = SwapchainTimingPropertiesEXT;
19426    #[inline]
19427    fn deref(&self) -> &Self::Target {
19428        &self.inner
19429    }
19430}
19431impl<'a> core::ops::DerefMut for SwapchainTimingPropertiesEXTBuilder<'a> {
19432    #[inline]
19433    fn deref_mut(&mut self) -> &mut Self::Target {
19434        &mut self.inner
19435    }
19436}
19437///Builder for [`SwapchainTimeDomainPropertiesEXT`] with lifetime-tied pNext safety.
19438pub struct SwapchainTimeDomainPropertiesEXTBuilder<'a> {
19439    inner: SwapchainTimeDomainPropertiesEXT,
19440    _marker: core::marker::PhantomData<&'a ()>,
19441}
19442impl SwapchainTimeDomainPropertiesEXT {
19443    /// Start building this struct; `s_type` is already set to the correct variant.
19444    #[inline]
19445    pub fn builder<'a>() -> SwapchainTimeDomainPropertiesEXTBuilder<'a> {
19446        SwapchainTimeDomainPropertiesEXTBuilder {
19447            inner: SwapchainTimeDomainPropertiesEXT {
19448                s_type: StructureType::from_raw(1000208002i32),
19449                ..Default::default()
19450            },
19451            _marker: core::marker::PhantomData,
19452        }
19453    }
19454}
19455impl<'a> SwapchainTimeDomainPropertiesEXTBuilder<'a> {
19456    #[inline]
19457    pub fn time_domain_count(mut self, value: u32) -> Self {
19458        self.inner.time_domain_count = value;
19459        self
19460    }
19461    #[inline]
19462    pub fn time_domains(mut self, slice: &'a mut [TimeDomainKHR]) -> Self {
19463        self.inner.time_domain_count = slice.len() as u32;
19464        self.inner.p_time_domains = slice.as_mut_ptr();
19465        self
19466    }
19467    #[inline]
19468    pub fn time_domain_ids(mut self, slice: &'a mut [u64]) -> Self {
19469        self.inner.time_domain_count = slice.len() as u32;
19470        self.inner.p_time_domain_ids = slice.as_mut_ptr();
19471        self
19472    }
19473}
19474impl<'a> core::ops::Deref for SwapchainTimeDomainPropertiesEXTBuilder<'a> {
19475    type Target = SwapchainTimeDomainPropertiesEXT;
19476    #[inline]
19477    fn deref(&self) -> &Self::Target {
19478        &self.inner
19479    }
19480}
19481impl<'a> core::ops::DerefMut for SwapchainTimeDomainPropertiesEXTBuilder<'a> {
19482    #[inline]
19483    fn deref_mut(&mut self) -> &mut Self::Target {
19484        &mut self.inner
19485    }
19486}
19487///Builder for [`PresentStageTimeEXT`].
19488pub struct PresentStageTimeEXTBuilder {
19489    inner: PresentStageTimeEXT,
19490}
19491impl PresentStageTimeEXT {
19492    /// Start building this struct.
19493    #[inline]
19494    pub fn builder() -> PresentStageTimeEXTBuilder {
19495        PresentStageTimeEXTBuilder {
19496            inner: PresentStageTimeEXT {
19497                ..Default::default()
19498            },
19499        }
19500    }
19501}
19502impl PresentStageTimeEXTBuilder {
19503    #[inline]
19504    pub fn stage(mut self, value: PresentStageFlagsEXT) -> Self {
19505        self.inner.stage = value;
19506        self
19507    }
19508    #[inline]
19509    pub fn time(mut self, value: u64) -> Self {
19510        self.inner.time = value;
19511        self
19512    }
19513}
19514impl core::ops::Deref for PresentStageTimeEXTBuilder {
19515    type Target = PresentStageTimeEXT;
19516    #[inline]
19517    fn deref(&self) -> &Self::Target {
19518        &self.inner
19519    }
19520}
19521impl core::ops::DerefMut for PresentStageTimeEXTBuilder {
19522    #[inline]
19523    fn deref_mut(&mut self) -> &mut Self::Target {
19524        &mut self.inner
19525    }
19526}
19527///Builder for [`PastPresentationTimingInfoEXT`] with lifetime-tied pNext safety.
19528pub struct PastPresentationTimingInfoEXTBuilder<'a> {
19529    inner: PastPresentationTimingInfoEXT,
19530    _marker: core::marker::PhantomData<&'a ()>,
19531}
19532impl PastPresentationTimingInfoEXT {
19533    /// Start building this struct; `s_type` is already set to the correct variant.
19534    #[inline]
19535    pub fn builder<'a>() -> PastPresentationTimingInfoEXTBuilder<'a> {
19536        PastPresentationTimingInfoEXTBuilder {
19537            inner: PastPresentationTimingInfoEXT {
19538                s_type: StructureType::from_raw(1000208005i32),
19539                ..Default::default()
19540            },
19541            _marker: core::marker::PhantomData,
19542        }
19543    }
19544}
19545impl<'a> PastPresentationTimingInfoEXTBuilder<'a> {
19546    #[inline]
19547    pub fn flags(mut self, value: PastPresentationTimingFlagsEXT) -> Self {
19548        self.inner.flags = value;
19549        self
19550    }
19551    #[inline]
19552    pub fn swapchain(mut self, value: SwapchainKHR) -> Self {
19553        self.inner.swapchain = value;
19554        self
19555    }
19556    ///Prepend a struct to the pNext chain. See [`PastPresentationTimingInfoEXT`]'s **Extended By** section for valid types.
19557    #[inline]
19558    pub fn push_next<T: ExtendsPastPresentationTimingInfoEXT>(
19559        mut self,
19560        next: &'a mut T,
19561    ) -> Self {
19562        unsafe {
19563            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
19564            (*next_ptr).p_next = self.inner.p_next as *mut _;
19565            self.inner.p_next = <*mut BaseOutStructure>::cast::<
19566                core::ffi::c_void,
19567            >(next_ptr) as *const _;
19568        }
19569        self
19570    }
19571}
19572impl<'a> core::ops::Deref for PastPresentationTimingInfoEXTBuilder<'a> {
19573    type Target = PastPresentationTimingInfoEXT;
19574    #[inline]
19575    fn deref(&self) -> &Self::Target {
19576        &self.inner
19577    }
19578}
19579impl<'a> core::ops::DerefMut for PastPresentationTimingInfoEXTBuilder<'a> {
19580    #[inline]
19581    fn deref_mut(&mut self) -> &mut Self::Target {
19582        &mut self.inner
19583    }
19584}
19585///Builder for [`PastPresentationTimingPropertiesEXT`] with lifetime-tied pNext safety.
19586pub struct PastPresentationTimingPropertiesEXTBuilder<'a> {
19587    inner: PastPresentationTimingPropertiesEXT,
19588    _marker: core::marker::PhantomData<&'a ()>,
19589}
19590impl PastPresentationTimingPropertiesEXT {
19591    /// Start building this struct; `s_type` is already set to the correct variant.
19592    #[inline]
19593    pub fn builder<'a>() -> PastPresentationTimingPropertiesEXTBuilder<'a> {
19594        PastPresentationTimingPropertiesEXTBuilder {
19595            inner: PastPresentationTimingPropertiesEXT {
19596                s_type: StructureType::from_raw(1000208006i32),
19597                ..Default::default()
19598            },
19599            _marker: core::marker::PhantomData,
19600        }
19601    }
19602}
19603impl<'a> PastPresentationTimingPropertiesEXTBuilder<'a> {
19604    #[inline]
19605    pub fn timing_properties_counter(mut self, value: u64) -> Self {
19606        self.inner.timing_properties_counter = value;
19607        self
19608    }
19609    #[inline]
19610    pub fn time_domains_counter(mut self, value: u64) -> Self {
19611        self.inner.time_domains_counter = value;
19612        self
19613    }
19614    #[inline]
19615    pub fn presentation_timings(
19616        mut self,
19617        slice: &'a mut [PastPresentationTimingEXT],
19618    ) -> Self {
19619        self.inner.presentation_timing_count = slice.len() as u32;
19620        self.inner.p_presentation_timings = slice.as_mut_ptr();
19621        self
19622    }
19623}
19624impl<'a> core::ops::Deref for PastPresentationTimingPropertiesEXTBuilder<'a> {
19625    type Target = PastPresentationTimingPropertiesEXT;
19626    #[inline]
19627    fn deref(&self) -> &Self::Target {
19628        &self.inner
19629    }
19630}
19631impl<'a> core::ops::DerefMut for PastPresentationTimingPropertiesEXTBuilder<'a> {
19632    #[inline]
19633    fn deref_mut(&mut self) -> &mut Self::Target {
19634        &mut self.inner
19635    }
19636}
19637///Builder for [`PastPresentationTimingEXT`] with lifetime-tied pNext safety.
19638pub struct PastPresentationTimingEXTBuilder<'a> {
19639    inner: PastPresentationTimingEXT,
19640    _marker: core::marker::PhantomData<&'a ()>,
19641}
19642impl PastPresentationTimingEXT {
19643    /// Start building this struct; `s_type` is already set to the correct variant.
19644    #[inline]
19645    pub fn builder<'a>() -> PastPresentationTimingEXTBuilder<'a> {
19646        PastPresentationTimingEXTBuilder {
19647            inner: PastPresentationTimingEXT {
19648                s_type: StructureType::from_raw(1000208007i32),
19649                ..Default::default()
19650            },
19651            _marker: core::marker::PhantomData,
19652        }
19653    }
19654}
19655impl<'a> PastPresentationTimingEXTBuilder<'a> {
19656    #[inline]
19657    pub fn present_id(mut self, value: u64) -> Self {
19658        self.inner.present_id = value;
19659        self
19660    }
19661    #[inline]
19662    pub fn target_time(mut self, value: u64) -> Self {
19663        self.inner.target_time = value;
19664        self
19665    }
19666    #[inline]
19667    pub fn present_stages(mut self, slice: &'a mut [PresentStageTimeEXT]) -> Self {
19668        self.inner.present_stage_count = slice.len() as u32;
19669        self.inner.p_present_stages = slice.as_mut_ptr();
19670        self
19671    }
19672    #[inline]
19673    pub fn time_domain(mut self, value: TimeDomainKHR) -> Self {
19674        self.inner.time_domain = value;
19675        self
19676    }
19677    #[inline]
19678    pub fn time_domain_id(mut self, value: u64) -> Self {
19679        self.inner.time_domain_id = value;
19680        self
19681    }
19682    #[inline]
19683    pub fn report_complete(mut self, value: bool) -> Self {
19684        self.inner.report_complete = value as u32;
19685        self
19686    }
19687}
19688impl<'a> core::ops::Deref for PastPresentationTimingEXTBuilder<'a> {
19689    type Target = PastPresentationTimingEXT;
19690    #[inline]
19691    fn deref(&self) -> &Self::Target {
19692        &self.inner
19693    }
19694}
19695impl<'a> core::ops::DerefMut for PastPresentationTimingEXTBuilder<'a> {
19696    #[inline]
19697    fn deref_mut(&mut self) -> &mut Self::Target {
19698        &mut self.inner
19699    }
19700}
19701///Builder for [`PresentTimingsInfoEXT`] with lifetime-tied pNext safety.
19702pub struct PresentTimingsInfoEXTBuilder<'a> {
19703    inner: PresentTimingsInfoEXT,
19704    _marker: core::marker::PhantomData<&'a ()>,
19705}
19706impl PresentTimingsInfoEXT {
19707    /// Start building this struct; `s_type` is already set to the correct variant.
19708    #[inline]
19709    pub fn builder<'a>() -> PresentTimingsInfoEXTBuilder<'a> {
19710        PresentTimingsInfoEXTBuilder {
19711            inner: PresentTimingsInfoEXT {
19712                s_type: StructureType::from_raw(1000208003i32),
19713                ..Default::default()
19714            },
19715            _marker: core::marker::PhantomData,
19716        }
19717    }
19718}
19719impl<'a> PresentTimingsInfoEXTBuilder<'a> {
19720    #[inline]
19721    pub fn swapchain_count(mut self, value: u32) -> Self {
19722        self.inner.swapchain_count = value;
19723        self
19724    }
19725    #[inline]
19726    pub fn timing_infos(mut self, slice: &'a [PresentTimingInfoEXT]) -> Self {
19727        self.inner.swapchain_count = slice.len() as u32;
19728        self.inner.p_timing_infos = slice.as_ptr();
19729        self
19730    }
19731    ///Prepend a struct to the pNext chain. See [`PresentTimingsInfoEXT`]'s **Extended By** section for valid types.
19732    #[inline]
19733    pub fn push_next<T: ExtendsPresentTimingsInfoEXT>(
19734        mut self,
19735        next: &'a mut T,
19736    ) -> Self {
19737        unsafe {
19738            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
19739            (*next_ptr).p_next = self.inner.p_next as *mut _;
19740            self.inner.p_next = <*mut BaseOutStructure>::cast::<
19741                core::ffi::c_void,
19742            >(next_ptr) as *const _;
19743        }
19744        self
19745    }
19746}
19747impl<'a> core::ops::Deref for PresentTimingsInfoEXTBuilder<'a> {
19748    type Target = PresentTimingsInfoEXT;
19749    #[inline]
19750    fn deref(&self) -> &Self::Target {
19751        &self.inner
19752    }
19753}
19754impl<'a> core::ops::DerefMut for PresentTimingsInfoEXTBuilder<'a> {
19755    #[inline]
19756    fn deref_mut(&mut self) -> &mut Self::Target {
19757        &mut self.inner
19758    }
19759}
19760///Builder for [`PresentTimingInfoEXT`] with lifetime-tied pNext safety.
19761pub struct PresentTimingInfoEXTBuilder<'a> {
19762    inner: PresentTimingInfoEXT,
19763    _marker: core::marker::PhantomData<&'a ()>,
19764}
19765impl PresentTimingInfoEXT {
19766    /// Start building this struct; `s_type` is already set to the correct variant.
19767    #[inline]
19768    pub fn builder<'a>() -> PresentTimingInfoEXTBuilder<'a> {
19769        PresentTimingInfoEXTBuilder {
19770            inner: PresentTimingInfoEXT {
19771                s_type: StructureType::from_raw(1000208004i32),
19772                ..Default::default()
19773            },
19774            _marker: core::marker::PhantomData,
19775        }
19776    }
19777}
19778impl<'a> PresentTimingInfoEXTBuilder<'a> {
19779    #[inline]
19780    pub fn flags(mut self, value: PresentTimingInfoFlagsEXT) -> Self {
19781        self.inner.flags = value;
19782        self
19783    }
19784    #[inline]
19785    pub fn target_time(mut self, value: u64) -> Self {
19786        self.inner.target_time = value;
19787        self
19788    }
19789    #[inline]
19790    pub fn time_domain_id(mut self, value: u64) -> Self {
19791        self.inner.time_domain_id = value;
19792        self
19793    }
19794    #[inline]
19795    pub fn present_stage_queries(mut self, value: PresentStageFlagsEXT) -> Self {
19796        self.inner.present_stage_queries = value;
19797        self
19798    }
19799    #[inline]
19800    pub fn target_time_domain_present_stage(
19801        mut self,
19802        value: PresentStageFlagsEXT,
19803    ) -> Self {
19804        self.inner.target_time_domain_present_stage = value;
19805        self
19806    }
19807    ///Prepend a struct to the pNext chain. See [`PresentTimingInfoEXT`]'s **Extended By** section for valid types.
19808    #[inline]
19809    pub fn push_next<T: ExtendsPresentTimingInfoEXT>(mut self, next: &'a mut T) -> Self {
19810        unsafe {
19811            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
19812            (*next_ptr).p_next = self.inner.p_next as *mut _;
19813            self.inner.p_next = <*mut BaseOutStructure>::cast::<
19814                core::ffi::c_void,
19815            >(next_ptr) as *const _;
19816        }
19817        self
19818    }
19819}
19820impl<'a> core::ops::Deref for PresentTimingInfoEXTBuilder<'a> {
19821    type Target = PresentTimingInfoEXT;
19822    #[inline]
19823    fn deref(&self) -> &Self::Target {
19824        &self.inner
19825    }
19826}
19827impl<'a> core::ops::DerefMut for PresentTimingInfoEXTBuilder<'a> {
19828    #[inline]
19829    fn deref_mut(&mut self) -> &mut Self::Target {
19830        &mut self.inner
19831    }
19832}
19833///Builder for [`SwapchainCalibratedTimestampInfoEXT`] with lifetime-tied pNext safety.
19834pub struct SwapchainCalibratedTimestampInfoEXTBuilder<'a> {
19835    inner: SwapchainCalibratedTimestampInfoEXT,
19836    _marker: core::marker::PhantomData<&'a ()>,
19837}
19838impl SwapchainCalibratedTimestampInfoEXT {
19839    /// Start building this struct; `s_type` is already set to the correct variant.
19840    #[inline]
19841    pub fn builder<'a>() -> SwapchainCalibratedTimestampInfoEXTBuilder<'a> {
19842        SwapchainCalibratedTimestampInfoEXTBuilder {
19843            inner: SwapchainCalibratedTimestampInfoEXT {
19844                s_type: StructureType::from_raw(1000208009i32),
19845                ..Default::default()
19846            },
19847            _marker: core::marker::PhantomData,
19848        }
19849    }
19850}
19851impl<'a> SwapchainCalibratedTimestampInfoEXTBuilder<'a> {
19852    #[inline]
19853    pub fn swapchain(mut self, value: SwapchainKHR) -> Self {
19854        self.inner.swapchain = value;
19855        self
19856    }
19857    #[inline]
19858    pub fn present_stage(mut self, value: PresentStageFlagsEXT) -> Self {
19859        self.inner.present_stage = value;
19860        self
19861    }
19862    #[inline]
19863    pub fn time_domain_id(mut self, value: u64) -> Self {
19864        self.inner.time_domain_id = value;
19865        self
19866    }
19867    ///Prepend a struct to the pNext chain. See [`SwapchainCalibratedTimestampInfoEXT`]'s **Extended By** section for valid types.
19868    #[inline]
19869    pub fn push_next<T: ExtendsSwapchainCalibratedTimestampInfoEXT>(
19870        mut self,
19871        next: &'a mut T,
19872    ) -> Self {
19873        unsafe {
19874            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
19875            (*next_ptr).p_next = self.inner.p_next as *mut _;
19876            self.inner.p_next = <*mut BaseOutStructure>::cast::<
19877                core::ffi::c_void,
19878            >(next_ptr) as *const _;
19879        }
19880        self
19881    }
19882}
19883impl<'a> core::ops::Deref for SwapchainCalibratedTimestampInfoEXTBuilder<'a> {
19884    type Target = SwapchainCalibratedTimestampInfoEXT;
19885    #[inline]
19886    fn deref(&self) -> &Self::Target {
19887        &self.inner
19888    }
19889}
19890impl<'a> core::ops::DerefMut for SwapchainCalibratedTimestampInfoEXTBuilder<'a> {
19891    #[inline]
19892    fn deref_mut(&mut self) -> &mut Self::Target {
19893        &mut self.inner
19894    }
19895}
19896///Builder for [`HdrMetadataEXT`] with lifetime-tied pNext safety.
19897pub struct HdrMetadataEXTBuilder<'a> {
19898    inner: HdrMetadataEXT,
19899    _marker: core::marker::PhantomData<&'a ()>,
19900}
19901impl HdrMetadataEXT {
19902    /// Start building this struct; `s_type` is already set to the correct variant.
19903    #[inline]
19904    pub fn builder<'a>() -> HdrMetadataEXTBuilder<'a> {
19905        HdrMetadataEXTBuilder {
19906            inner: HdrMetadataEXT {
19907                s_type: StructureType::from_raw(1000105000i32),
19908                ..Default::default()
19909            },
19910            _marker: core::marker::PhantomData,
19911        }
19912    }
19913}
19914impl<'a> HdrMetadataEXTBuilder<'a> {
19915    #[inline]
19916    pub fn display_primary_red(mut self, value: XYColorEXT) -> Self {
19917        self.inner.display_primary_red = value;
19918        self
19919    }
19920    #[inline]
19921    pub fn display_primary_green(mut self, value: XYColorEXT) -> Self {
19922        self.inner.display_primary_green = value;
19923        self
19924    }
19925    #[inline]
19926    pub fn display_primary_blue(mut self, value: XYColorEXT) -> Self {
19927        self.inner.display_primary_blue = value;
19928        self
19929    }
19930    #[inline]
19931    pub fn white_point(mut self, value: XYColorEXT) -> Self {
19932        self.inner.white_point = value;
19933        self
19934    }
19935    #[inline]
19936    pub fn max_luminance(mut self, value: f32) -> Self {
19937        self.inner.max_luminance = value;
19938        self
19939    }
19940    #[inline]
19941    pub fn min_luminance(mut self, value: f32) -> Self {
19942        self.inner.min_luminance = value;
19943        self
19944    }
19945    #[inline]
19946    pub fn max_content_light_level(mut self, value: f32) -> Self {
19947        self.inner.max_content_light_level = value;
19948        self
19949    }
19950    #[inline]
19951    pub fn max_frame_average_light_level(mut self, value: f32) -> Self {
19952        self.inner.max_frame_average_light_level = value;
19953        self
19954    }
19955    ///Prepend a struct to the pNext chain. See [`HdrMetadataEXT`]'s **Extended By** section for valid types.
19956    #[inline]
19957    pub fn push_next<T: ExtendsHdrMetadataEXT>(mut self, next: &'a mut T) -> Self {
19958        unsafe {
19959            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
19960            (*next_ptr).p_next = self.inner.p_next as *mut _;
19961            self.inner.p_next = <*mut BaseOutStructure>::cast::<
19962                core::ffi::c_void,
19963            >(next_ptr) as *const _;
19964        }
19965        self
19966    }
19967}
19968impl<'a> core::ops::Deref for HdrMetadataEXTBuilder<'a> {
19969    type Target = HdrMetadataEXT;
19970    #[inline]
19971    fn deref(&self) -> &Self::Target {
19972        &self.inner
19973    }
19974}
19975impl<'a> core::ops::DerefMut for HdrMetadataEXTBuilder<'a> {
19976    #[inline]
19977    fn deref_mut(&mut self) -> &mut Self::Target {
19978        &mut self.inner
19979    }
19980}
19981///Builder for [`HdrVividDynamicMetadataHUAWEI`] with lifetime-tied pNext safety.
19982pub struct HdrVividDynamicMetadataHUAWEIBuilder<'a> {
19983    inner: HdrVividDynamicMetadataHUAWEI,
19984    _marker: core::marker::PhantomData<&'a ()>,
19985}
19986impl HdrVividDynamicMetadataHUAWEI {
19987    /// Start building this struct; `s_type` is already set to the correct variant.
19988    #[inline]
19989    pub fn builder<'a>() -> HdrVividDynamicMetadataHUAWEIBuilder<'a> {
19990        HdrVividDynamicMetadataHUAWEIBuilder {
19991            inner: HdrVividDynamicMetadataHUAWEI {
19992                s_type: StructureType::from_raw(1000590001i32),
19993                ..Default::default()
19994            },
19995            _marker: core::marker::PhantomData,
19996        }
19997    }
19998}
19999impl<'a> HdrVividDynamicMetadataHUAWEIBuilder<'a> {
20000    #[inline]
20001    pub fn dynamic_metadata(mut self, slice: &'a [core::ffi::c_void]) -> Self {
20002        self.inner.dynamic_metadata_size = slice.len();
20003        self.inner.p_dynamic_metadata = slice.as_ptr();
20004        self
20005    }
20006    ///Prepend a struct to the pNext chain. See [`HdrVividDynamicMetadataHUAWEI`]'s **Extended By** section for valid types.
20007    #[inline]
20008    pub fn push_next<T: ExtendsHdrVividDynamicMetadataHUAWEI>(
20009        mut self,
20010        next: &'a mut T,
20011    ) -> Self {
20012        unsafe {
20013            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
20014            (*next_ptr).p_next = self.inner.p_next as *mut _;
20015            self.inner.p_next = <*mut BaseOutStructure>::cast::<
20016                core::ffi::c_void,
20017            >(next_ptr) as *const _;
20018        }
20019        self
20020    }
20021}
20022impl<'a> core::ops::Deref for HdrVividDynamicMetadataHUAWEIBuilder<'a> {
20023    type Target = HdrVividDynamicMetadataHUAWEI;
20024    #[inline]
20025    fn deref(&self) -> &Self::Target {
20026        &self.inner
20027    }
20028}
20029impl<'a> core::ops::DerefMut for HdrVividDynamicMetadataHUAWEIBuilder<'a> {
20030    #[inline]
20031    fn deref_mut(&mut self) -> &mut Self::Target {
20032        &mut self.inner
20033    }
20034}
20035///Builder for [`DisplayNativeHdrSurfaceCapabilitiesAMD`] with lifetime-tied pNext safety.
20036pub struct DisplayNativeHdrSurfaceCapabilitiesAMDBuilder<'a> {
20037    inner: DisplayNativeHdrSurfaceCapabilitiesAMD,
20038    _marker: core::marker::PhantomData<&'a ()>,
20039}
20040impl DisplayNativeHdrSurfaceCapabilitiesAMD {
20041    /// Start building this struct; `s_type` is already set to the correct variant.
20042    #[inline]
20043    pub fn builder<'a>() -> DisplayNativeHdrSurfaceCapabilitiesAMDBuilder<'a> {
20044        DisplayNativeHdrSurfaceCapabilitiesAMDBuilder {
20045            inner: DisplayNativeHdrSurfaceCapabilitiesAMD {
20046                s_type: StructureType::from_raw(1000213000i32),
20047                ..Default::default()
20048            },
20049            _marker: core::marker::PhantomData,
20050        }
20051    }
20052}
20053impl<'a> DisplayNativeHdrSurfaceCapabilitiesAMDBuilder<'a> {
20054    #[inline]
20055    pub fn local_dimming_support(mut self, value: bool) -> Self {
20056        self.inner.local_dimming_support = value as u32;
20057        self
20058    }
20059}
20060impl<'a> core::ops::Deref for DisplayNativeHdrSurfaceCapabilitiesAMDBuilder<'a> {
20061    type Target = DisplayNativeHdrSurfaceCapabilitiesAMD;
20062    #[inline]
20063    fn deref(&self) -> &Self::Target {
20064        &self.inner
20065    }
20066}
20067impl<'a> core::ops::DerefMut for DisplayNativeHdrSurfaceCapabilitiesAMDBuilder<'a> {
20068    #[inline]
20069    fn deref_mut(&mut self) -> &mut Self::Target {
20070        &mut self.inner
20071    }
20072}
20073///Builder for [`SwapchainDisplayNativeHdrCreateInfoAMD`] with lifetime-tied pNext safety.
20074pub struct SwapchainDisplayNativeHdrCreateInfoAMDBuilder<'a> {
20075    inner: SwapchainDisplayNativeHdrCreateInfoAMD,
20076    _marker: core::marker::PhantomData<&'a ()>,
20077}
20078impl SwapchainDisplayNativeHdrCreateInfoAMD {
20079    /// Start building this struct; `s_type` is already set to the correct variant.
20080    #[inline]
20081    pub fn builder<'a>() -> SwapchainDisplayNativeHdrCreateInfoAMDBuilder<'a> {
20082        SwapchainDisplayNativeHdrCreateInfoAMDBuilder {
20083            inner: SwapchainDisplayNativeHdrCreateInfoAMD {
20084                s_type: StructureType::from_raw(1000213001i32),
20085                ..Default::default()
20086            },
20087            _marker: core::marker::PhantomData,
20088        }
20089    }
20090}
20091impl<'a> SwapchainDisplayNativeHdrCreateInfoAMDBuilder<'a> {
20092    #[inline]
20093    pub fn local_dimming_enable(mut self, value: bool) -> Self {
20094        self.inner.local_dimming_enable = value as u32;
20095        self
20096    }
20097    ///Prepend a struct to the pNext chain. See [`SwapchainDisplayNativeHdrCreateInfoAMD`]'s **Extended By** section for valid types.
20098    #[inline]
20099    pub fn push_next<T: ExtendsSwapchainDisplayNativeHdrCreateInfoAMD>(
20100        mut self,
20101        next: &'a mut T,
20102    ) -> Self {
20103        unsafe {
20104            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
20105            (*next_ptr).p_next = self.inner.p_next as *mut _;
20106            self.inner.p_next = <*mut BaseOutStructure>::cast::<
20107                core::ffi::c_void,
20108            >(next_ptr) as *const _;
20109        }
20110        self
20111    }
20112}
20113impl<'a> core::ops::Deref for SwapchainDisplayNativeHdrCreateInfoAMDBuilder<'a> {
20114    type Target = SwapchainDisplayNativeHdrCreateInfoAMD;
20115    #[inline]
20116    fn deref(&self) -> &Self::Target {
20117        &self.inner
20118    }
20119}
20120impl<'a> core::ops::DerefMut for SwapchainDisplayNativeHdrCreateInfoAMDBuilder<'a> {
20121    #[inline]
20122    fn deref_mut(&mut self) -> &mut Self::Target {
20123        &mut self.inner
20124    }
20125}
20126///Builder for [`RefreshCycleDurationGOOGLE`].
20127pub struct RefreshCycleDurationGOOGLEBuilder {
20128    inner: RefreshCycleDurationGOOGLE,
20129}
20130impl RefreshCycleDurationGOOGLE {
20131    /// Start building this struct.
20132    #[inline]
20133    pub fn builder() -> RefreshCycleDurationGOOGLEBuilder {
20134        RefreshCycleDurationGOOGLEBuilder {
20135            inner: RefreshCycleDurationGOOGLE {
20136                ..Default::default()
20137            },
20138        }
20139    }
20140}
20141impl RefreshCycleDurationGOOGLEBuilder {
20142    #[inline]
20143    pub fn refresh_duration(mut self, value: u64) -> Self {
20144        self.inner.refresh_duration = value;
20145        self
20146    }
20147}
20148impl core::ops::Deref for RefreshCycleDurationGOOGLEBuilder {
20149    type Target = RefreshCycleDurationGOOGLE;
20150    #[inline]
20151    fn deref(&self) -> &Self::Target {
20152        &self.inner
20153    }
20154}
20155impl core::ops::DerefMut for RefreshCycleDurationGOOGLEBuilder {
20156    #[inline]
20157    fn deref_mut(&mut self) -> &mut Self::Target {
20158        &mut self.inner
20159    }
20160}
20161///Builder for [`PastPresentationTimingGOOGLE`].
20162pub struct PastPresentationTimingGOOGLEBuilder {
20163    inner: PastPresentationTimingGOOGLE,
20164}
20165impl PastPresentationTimingGOOGLE {
20166    /// Start building this struct.
20167    #[inline]
20168    pub fn builder() -> PastPresentationTimingGOOGLEBuilder {
20169        PastPresentationTimingGOOGLEBuilder {
20170            inner: PastPresentationTimingGOOGLE {
20171                ..Default::default()
20172            },
20173        }
20174    }
20175}
20176impl PastPresentationTimingGOOGLEBuilder {
20177    #[inline]
20178    pub fn present_id(mut self, value: u32) -> Self {
20179        self.inner.present_id = value;
20180        self
20181    }
20182    #[inline]
20183    pub fn desired_present_time(mut self, value: u64) -> Self {
20184        self.inner.desired_present_time = value;
20185        self
20186    }
20187    #[inline]
20188    pub fn actual_present_time(mut self, value: u64) -> Self {
20189        self.inner.actual_present_time = value;
20190        self
20191    }
20192    #[inline]
20193    pub fn earliest_present_time(mut self, value: u64) -> Self {
20194        self.inner.earliest_present_time = value;
20195        self
20196    }
20197    #[inline]
20198    pub fn present_margin(mut self, value: u64) -> Self {
20199        self.inner.present_margin = value;
20200        self
20201    }
20202}
20203impl core::ops::Deref for PastPresentationTimingGOOGLEBuilder {
20204    type Target = PastPresentationTimingGOOGLE;
20205    #[inline]
20206    fn deref(&self) -> &Self::Target {
20207        &self.inner
20208    }
20209}
20210impl core::ops::DerefMut for PastPresentationTimingGOOGLEBuilder {
20211    #[inline]
20212    fn deref_mut(&mut self) -> &mut Self::Target {
20213        &mut self.inner
20214    }
20215}
20216///Builder for [`PresentTimesInfoGOOGLE`] with lifetime-tied pNext safety.
20217pub struct PresentTimesInfoGOOGLEBuilder<'a> {
20218    inner: PresentTimesInfoGOOGLE,
20219    _marker: core::marker::PhantomData<&'a ()>,
20220}
20221impl PresentTimesInfoGOOGLE {
20222    /// Start building this struct; `s_type` is already set to the correct variant.
20223    #[inline]
20224    pub fn builder<'a>() -> PresentTimesInfoGOOGLEBuilder<'a> {
20225        PresentTimesInfoGOOGLEBuilder {
20226            inner: PresentTimesInfoGOOGLE {
20227                s_type: StructureType::from_raw(1000092000i32),
20228                ..Default::default()
20229            },
20230            _marker: core::marker::PhantomData,
20231        }
20232    }
20233}
20234impl<'a> PresentTimesInfoGOOGLEBuilder<'a> {
20235    #[inline]
20236    pub fn swapchain_count(mut self, value: u32) -> Self {
20237        self.inner.swapchain_count = value;
20238        self
20239    }
20240    #[inline]
20241    pub fn times(mut self, slice: &'a [PresentTimeGOOGLE]) -> Self {
20242        self.inner.swapchain_count = slice.len() as u32;
20243        self.inner.p_times = slice.as_ptr();
20244        self
20245    }
20246    ///Prepend a struct to the pNext chain. See [`PresentTimesInfoGOOGLE`]'s **Extended By** section for valid types.
20247    #[inline]
20248    pub fn push_next<T: ExtendsPresentTimesInfoGOOGLE>(
20249        mut self,
20250        next: &'a mut T,
20251    ) -> Self {
20252        unsafe {
20253            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
20254            (*next_ptr).p_next = self.inner.p_next as *mut _;
20255            self.inner.p_next = <*mut BaseOutStructure>::cast::<
20256                core::ffi::c_void,
20257            >(next_ptr) as *const _;
20258        }
20259        self
20260    }
20261}
20262impl<'a> core::ops::Deref for PresentTimesInfoGOOGLEBuilder<'a> {
20263    type Target = PresentTimesInfoGOOGLE;
20264    #[inline]
20265    fn deref(&self) -> &Self::Target {
20266        &self.inner
20267    }
20268}
20269impl<'a> core::ops::DerefMut for PresentTimesInfoGOOGLEBuilder<'a> {
20270    #[inline]
20271    fn deref_mut(&mut self) -> &mut Self::Target {
20272        &mut self.inner
20273    }
20274}
20275///Builder for [`PresentTimeGOOGLE`].
20276pub struct PresentTimeGOOGLEBuilder {
20277    inner: PresentTimeGOOGLE,
20278}
20279impl PresentTimeGOOGLE {
20280    /// Start building this struct.
20281    #[inline]
20282    pub fn builder() -> PresentTimeGOOGLEBuilder {
20283        PresentTimeGOOGLEBuilder {
20284            inner: PresentTimeGOOGLE {
20285                ..Default::default()
20286            },
20287        }
20288    }
20289}
20290impl PresentTimeGOOGLEBuilder {
20291    #[inline]
20292    pub fn present_id(mut self, value: u32) -> Self {
20293        self.inner.present_id = value;
20294        self
20295    }
20296    #[inline]
20297    pub fn desired_present_time(mut self, value: u64) -> Self {
20298        self.inner.desired_present_time = value;
20299        self
20300    }
20301}
20302impl core::ops::Deref for PresentTimeGOOGLEBuilder {
20303    type Target = PresentTimeGOOGLE;
20304    #[inline]
20305    fn deref(&self) -> &Self::Target {
20306        &self.inner
20307    }
20308}
20309impl core::ops::DerefMut for PresentTimeGOOGLEBuilder {
20310    #[inline]
20311    fn deref_mut(&mut self) -> &mut Self::Target {
20312        &mut self.inner
20313    }
20314}
20315///Builder for [`IOSSurfaceCreateInfoMVK`] with lifetime-tied pNext safety.
20316pub struct IOSSurfaceCreateInfoMVKBuilder<'a> {
20317    inner: IOSSurfaceCreateInfoMVK,
20318    _marker: core::marker::PhantomData<&'a ()>,
20319}
20320impl IOSSurfaceCreateInfoMVK {
20321    /// Start building this struct; `s_type` is already set to the correct variant.
20322    #[inline]
20323    pub fn builder<'a>() -> IOSSurfaceCreateInfoMVKBuilder<'a> {
20324        IOSSurfaceCreateInfoMVKBuilder {
20325            inner: IOSSurfaceCreateInfoMVK {
20326                s_type: StructureType::from_raw(1000122000i32),
20327                ..Default::default()
20328            },
20329            _marker: core::marker::PhantomData,
20330        }
20331    }
20332}
20333impl<'a> IOSSurfaceCreateInfoMVKBuilder<'a> {
20334    #[inline]
20335    pub fn flags(mut self, value: IOSSurfaceCreateFlagsMVK) -> Self {
20336        self.inner.flags = value;
20337        self
20338    }
20339    #[inline]
20340    pub fn view(mut self, value: *const core::ffi::c_void) -> Self {
20341        self.inner.p_view = value;
20342        self
20343    }
20344    ///Prepend a struct to the pNext chain. See [`IOSSurfaceCreateInfoMVK`]'s **Extended By** section for valid types.
20345    #[inline]
20346    pub fn push_next<T: ExtendsIOSSurfaceCreateInfoMVK>(
20347        mut self,
20348        next: &'a mut T,
20349    ) -> Self {
20350        unsafe {
20351            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
20352            (*next_ptr).p_next = self.inner.p_next as *mut _;
20353            self.inner.p_next = <*mut BaseOutStructure>::cast::<
20354                core::ffi::c_void,
20355            >(next_ptr) as *const _;
20356        }
20357        self
20358    }
20359}
20360impl<'a> core::ops::Deref for IOSSurfaceCreateInfoMVKBuilder<'a> {
20361    type Target = IOSSurfaceCreateInfoMVK;
20362    #[inline]
20363    fn deref(&self) -> &Self::Target {
20364        &self.inner
20365    }
20366}
20367impl<'a> core::ops::DerefMut for IOSSurfaceCreateInfoMVKBuilder<'a> {
20368    #[inline]
20369    fn deref_mut(&mut self) -> &mut Self::Target {
20370        &mut self.inner
20371    }
20372}
20373///Builder for [`MacOSSurfaceCreateInfoMVK`] with lifetime-tied pNext safety.
20374pub struct MacOSSurfaceCreateInfoMVKBuilder<'a> {
20375    inner: MacOSSurfaceCreateInfoMVK,
20376    _marker: core::marker::PhantomData<&'a ()>,
20377}
20378impl MacOSSurfaceCreateInfoMVK {
20379    /// Start building this struct; `s_type` is already set to the correct variant.
20380    #[inline]
20381    pub fn builder<'a>() -> MacOSSurfaceCreateInfoMVKBuilder<'a> {
20382        MacOSSurfaceCreateInfoMVKBuilder {
20383            inner: MacOSSurfaceCreateInfoMVK {
20384                s_type: StructureType::from_raw(1000123000i32),
20385                ..Default::default()
20386            },
20387            _marker: core::marker::PhantomData,
20388        }
20389    }
20390}
20391impl<'a> MacOSSurfaceCreateInfoMVKBuilder<'a> {
20392    #[inline]
20393    pub fn flags(mut self, value: MacOSSurfaceCreateFlagsMVK) -> Self {
20394        self.inner.flags = value;
20395        self
20396    }
20397    #[inline]
20398    pub fn view(mut self, value: *const core::ffi::c_void) -> Self {
20399        self.inner.p_view = value;
20400        self
20401    }
20402    ///Prepend a struct to the pNext chain. See [`MacOSSurfaceCreateInfoMVK`]'s **Extended By** section for valid types.
20403    #[inline]
20404    pub fn push_next<T: ExtendsMacOSSurfaceCreateInfoMVK>(
20405        mut self,
20406        next: &'a mut T,
20407    ) -> Self {
20408        unsafe {
20409            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
20410            (*next_ptr).p_next = self.inner.p_next as *mut _;
20411            self.inner.p_next = <*mut BaseOutStructure>::cast::<
20412                core::ffi::c_void,
20413            >(next_ptr) as *const _;
20414        }
20415        self
20416    }
20417}
20418impl<'a> core::ops::Deref for MacOSSurfaceCreateInfoMVKBuilder<'a> {
20419    type Target = MacOSSurfaceCreateInfoMVK;
20420    #[inline]
20421    fn deref(&self) -> &Self::Target {
20422        &self.inner
20423    }
20424}
20425impl<'a> core::ops::DerefMut for MacOSSurfaceCreateInfoMVKBuilder<'a> {
20426    #[inline]
20427    fn deref_mut(&mut self) -> &mut Self::Target {
20428        &mut self.inner
20429    }
20430}
20431///Builder for [`MetalSurfaceCreateInfoEXT`] with lifetime-tied pNext safety.
20432pub struct MetalSurfaceCreateInfoEXTBuilder<'a> {
20433    inner: MetalSurfaceCreateInfoEXT,
20434    _marker: core::marker::PhantomData<&'a ()>,
20435}
20436impl MetalSurfaceCreateInfoEXT {
20437    /// Start building this struct; `s_type` is already set to the correct variant.
20438    #[inline]
20439    pub fn builder<'a>() -> MetalSurfaceCreateInfoEXTBuilder<'a> {
20440        MetalSurfaceCreateInfoEXTBuilder {
20441            inner: MetalSurfaceCreateInfoEXT {
20442                s_type: StructureType::from_raw(1000217000i32),
20443                ..Default::default()
20444            },
20445            _marker: core::marker::PhantomData,
20446        }
20447    }
20448}
20449impl<'a> MetalSurfaceCreateInfoEXTBuilder<'a> {
20450    #[inline]
20451    pub fn flags(mut self, value: MetalSurfaceCreateFlagsEXT) -> Self {
20452        self.inner.flags = value;
20453        self
20454    }
20455    #[inline]
20456    pub fn layer(mut self, value: *const core::ffi::c_void) -> Self {
20457        self.inner.p_layer = value;
20458        self
20459    }
20460    ///Prepend a struct to the pNext chain. See [`MetalSurfaceCreateInfoEXT`]'s **Extended By** section for valid types.
20461    #[inline]
20462    pub fn push_next<T: ExtendsMetalSurfaceCreateInfoEXT>(
20463        mut self,
20464        next: &'a mut T,
20465    ) -> Self {
20466        unsafe {
20467            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
20468            (*next_ptr).p_next = self.inner.p_next as *mut _;
20469            self.inner.p_next = <*mut BaseOutStructure>::cast::<
20470                core::ffi::c_void,
20471            >(next_ptr) as *const _;
20472        }
20473        self
20474    }
20475}
20476impl<'a> core::ops::Deref for MetalSurfaceCreateInfoEXTBuilder<'a> {
20477    type Target = MetalSurfaceCreateInfoEXT;
20478    #[inline]
20479    fn deref(&self) -> &Self::Target {
20480        &self.inner
20481    }
20482}
20483impl<'a> core::ops::DerefMut for MetalSurfaceCreateInfoEXTBuilder<'a> {
20484    #[inline]
20485    fn deref_mut(&mut self) -> &mut Self::Target {
20486        &mut self.inner
20487    }
20488}
20489///Builder for [`ViewportWScalingNV`].
20490pub struct ViewportWScalingNVBuilder {
20491    inner: ViewportWScalingNV,
20492}
20493impl ViewportWScalingNV {
20494    /// Start building this struct.
20495    #[inline]
20496    pub fn builder() -> ViewportWScalingNVBuilder {
20497        ViewportWScalingNVBuilder {
20498            inner: ViewportWScalingNV {
20499                ..Default::default()
20500            },
20501        }
20502    }
20503}
20504impl ViewportWScalingNVBuilder {
20505    #[inline]
20506    pub fn xcoeff(mut self, value: f32) -> Self {
20507        self.inner.xcoeff = value;
20508        self
20509    }
20510    #[inline]
20511    pub fn ycoeff(mut self, value: f32) -> Self {
20512        self.inner.ycoeff = value;
20513        self
20514    }
20515}
20516impl core::ops::Deref for ViewportWScalingNVBuilder {
20517    type Target = ViewportWScalingNV;
20518    #[inline]
20519    fn deref(&self) -> &Self::Target {
20520        &self.inner
20521    }
20522}
20523impl core::ops::DerefMut for ViewportWScalingNVBuilder {
20524    #[inline]
20525    fn deref_mut(&mut self) -> &mut Self::Target {
20526        &mut self.inner
20527    }
20528}
20529///Builder for [`PipelineViewportWScalingStateCreateInfoNV`] with lifetime-tied pNext safety.
20530pub struct PipelineViewportWScalingStateCreateInfoNVBuilder<'a> {
20531    inner: PipelineViewportWScalingStateCreateInfoNV,
20532    _marker: core::marker::PhantomData<&'a ()>,
20533}
20534impl PipelineViewportWScalingStateCreateInfoNV {
20535    /// Start building this struct; `s_type` is already set to the correct variant.
20536    #[inline]
20537    pub fn builder<'a>() -> PipelineViewportWScalingStateCreateInfoNVBuilder<'a> {
20538        PipelineViewportWScalingStateCreateInfoNVBuilder {
20539            inner: PipelineViewportWScalingStateCreateInfoNV {
20540                s_type: StructureType::from_raw(1000087000i32),
20541                ..Default::default()
20542            },
20543            _marker: core::marker::PhantomData,
20544        }
20545    }
20546}
20547impl<'a> PipelineViewportWScalingStateCreateInfoNVBuilder<'a> {
20548    #[inline]
20549    pub fn viewport_w_scaling_enable(mut self, value: bool) -> Self {
20550        self.inner.viewport_w_scaling_enable = value as u32;
20551        self
20552    }
20553    #[inline]
20554    pub fn viewport_count(mut self, value: u32) -> Self {
20555        self.inner.viewport_count = value;
20556        self
20557    }
20558    #[inline]
20559    pub fn viewport_w_scalings(mut self, slice: &'a [ViewportWScalingNV]) -> Self {
20560        self.inner.viewport_count = slice.len() as u32;
20561        self.inner.p_viewport_w_scalings = slice.as_ptr();
20562        self
20563    }
20564    ///Prepend a struct to the pNext chain. See [`PipelineViewportWScalingStateCreateInfoNV`]'s **Extended By** section for valid types.
20565    #[inline]
20566    pub fn push_next<T: ExtendsPipelineViewportWScalingStateCreateInfoNV>(
20567        mut self,
20568        next: &'a mut T,
20569    ) -> Self {
20570        unsafe {
20571            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
20572            (*next_ptr).p_next = self.inner.p_next as *mut _;
20573            self.inner.p_next = <*mut BaseOutStructure>::cast::<
20574                core::ffi::c_void,
20575            >(next_ptr) as *const _;
20576        }
20577        self
20578    }
20579}
20580impl<'a> core::ops::Deref for PipelineViewportWScalingStateCreateInfoNVBuilder<'a> {
20581    type Target = PipelineViewportWScalingStateCreateInfoNV;
20582    #[inline]
20583    fn deref(&self) -> &Self::Target {
20584        &self.inner
20585    }
20586}
20587impl<'a> core::ops::DerefMut for PipelineViewportWScalingStateCreateInfoNVBuilder<'a> {
20588    #[inline]
20589    fn deref_mut(&mut self) -> &mut Self::Target {
20590        &mut self.inner
20591    }
20592}
20593///Builder for [`ViewportSwizzleNV`].
20594pub struct ViewportSwizzleNVBuilder {
20595    inner: ViewportSwizzleNV,
20596}
20597impl ViewportSwizzleNV {
20598    /// Start building this struct.
20599    #[inline]
20600    pub fn builder() -> ViewportSwizzleNVBuilder {
20601        ViewportSwizzleNVBuilder {
20602            inner: ViewportSwizzleNV {
20603                ..Default::default()
20604            },
20605        }
20606    }
20607}
20608impl ViewportSwizzleNVBuilder {
20609    #[inline]
20610    pub fn x(mut self, value: ViewportCoordinateSwizzleNV) -> Self {
20611        self.inner.x = value;
20612        self
20613    }
20614    #[inline]
20615    pub fn y(mut self, value: ViewportCoordinateSwizzleNV) -> Self {
20616        self.inner.y = value;
20617        self
20618    }
20619    #[inline]
20620    pub fn z(mut self, value: ViewportCoordinateSwizzleNV) -> Self {
20621        self.inner.z = value;
20622        self
20623    }
20624    #[inline]
20625    pub fn w(mut self, value: ViewportCoordinateSwizzleNV) -> Self {
20626        self.inner.w = value;
20627        self
20628    }
20629}
20630impl core::ops::Deref for ViewportSwizzleNVBuilder {
20631    type Target = ViewportSwizzleNV;
20632    #[inline]
20633    fn deref(&self) -> &Self::Target {
20634        &self.inner
20635    }
20636}
20637impl core::ops::DerefMut for ViewportSwizzleNVBuilder {
20638    #[inline]
20639    fn deref_mut(&mut self) -> &mut Self::Target {
20640        &mut self.inner
20641    }
20642}
20643///Builder for [`PipelineViewportSwizzleStateCreateInfoNV`] with lifetime-tied pNext safety.
20644pub struct PipelineViewportSwizzleStateCreateInfoNVBuilder<'a> {
20645    inner: PipelineViewportSwizzleStateCreateInfoNV,
20646    _marker: core::marker::PhantomData<&'a ()>,
20647}
20648impl PipelineViewportSwizzleStateCreateInfoNV {
20649    /// Start building this struct; `s_type` is already set to the correct variant.
20650    #[inline]
20651    pub fn builder<'a>() -> PipelineViewportSwizzleStateCreateInfoNVBuilder<'a> {
20652        PipelineViewportSwizzleStateCreateInfoNVBuilder {
20653            inner: PipelineViewportSwizzleStateCreateInfoNV {
20654                s_type: StructureType::from_raw(1000098000i32),
20655                ..Default::default()
20656            },
20657            _marker: core::marker::PhantomData,
20658        }
20659    }
20660}
20661impl<'a> PipelineViewportSwizzleStateCreateInfoNVBuilder<'a> {
20662    #[inline]
20663    pub fn flags(mut self, value: PipelineViewportSwizzleStateCreateFlagsNV) -> Self {
20664        self.inner.flags = value;
20665        self
20666    }
20667    #[inline]
20668    pub fn viewport_swizzles(mut self, slice: &'a [ViewportSwizzleNV]) -> Self {
20669        self.inner.viewport_count = slice.len() as u32;
20670        self.inner.p_viewport_swizzles = slice.as_ptr();
20671        self
20672    }
20673    ///Prepend a struct to the pNext chain. See [`PipelineViewportSwizzleStateCreateInfoNV`]'s **Extended By** section for valid types.
20674    #[inline]
20675    pub fn push_next<T: ExtendsPipelineViewportSwizzleStateCreateInfoNV>(
20676        mut self,
20677        next: &'a mut T,
20678    ) -> Self {
20679        unsafe {
20680            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
20681            (*next_ptr).p_next = self.inner.p_next as *mut _;
20682            self.inner.p_next = <*mut BaseOutStructure>::cast::<
20683                core::ffi::c_void,
20684            >(next_ptr) as *const _;
20685        }
20686        self
20687    }
20688}
20689impl<'a> core::ops::Deref for PipelineViewportSwizzleStateCreateInfoNVBuilder<'a> {
20690    type Target = PipelineViewportSwizzleStateCreateInfoNV;
20691    #[inline]
20692    fn deref(&self) -> &Self::Target {
20693        &self.inner
20694    }
20695}
20696impl<'a> core::ops::DerefMut for PipelineViewportSwizzleStateCreateInfoNVBuilder<'a> {
20697    #[inline]
20698    fn deref_mut(&mut self) -> &mut Self::Target {
20699        &mut self.inner
20700    }
20701}
20702///Builder for [`PhysicalDeviceDiscardRectanglePropertiesEXT`] with lifetime-tied pNext safety.
20703pub struct PhysicalDeviceDiscardRectanglePropertiesEXTBuilder<'a> {
20704    inner: PhysicalDeviceDiscardRectanglePropertiesEXT,
20705    _marker: core::marker::PhantomData<&'a ()>,
20706}
20707impl PhysicalDeviceDiscardRectanglePropertiesEXT {
20708    /// Start building this struct; `s_type` is already set to the correct variant.
20709    #[inline]
20710    pub fn builder<'a>() -> PhysicalDeviceDiscardRectanglePropertiesEXTBuilder<'a> {
20711        PhysicalDeviceDiscardRectanglePropertiesEXTBuilder {
20712            inner: PhysicalDeviceDiscardRectanglePropertiesEXT {
20713                s_type: StructureType::from_raw(1000099000i32),
20714                ..Default::default()
20715            },
20716            _marker: core::marker::PhantomData,
20717        }
20718    }
20719}
20720impl<'a> PhysicalDeviceDiscardRectanglePropertiesEXTBuilder<'a> {
20721    #[inline]
20722    pub fn max_discard_rectangles(mut self, value: u32) -> Self {
20723        self.inner.max_discard_rectangles = value;
20724        self
20725    }
20726}
20727impl<'a> core::ops::Deref for PhysicalDeviceDiscardRectanglePropertiesEXTBuilder<'a> {
20728    type Target = PhysicalDeviceDiscardRectanglePropertiesEXT;
20729    #[inline]
20730    fn deref(&self) -> &Self::Target {
20731        &self.inner
20732    }
20733}
20734impl<'a> core::ops::DerefMut for PhysicalDeviceDiscardRectanglePropertiesEXTBuilder<'a> {
20735    #[inline]
20736    fn deref_mut(&mut self) -> &mut Self::Target {
20737        &mut self.inner
20738    }
20739}
20740///Builder for [`PipelineDiscardRectangleStateCreateInfoEXT`] with lifetime-tied pNext safety.
20741pub struct PipelineDiscardRectangleStateCreateInfoEXTBuilder<'a> {
20742    inner: PipelineDiscardRectangleStateCreateInfoEXT,
20743    _marker: core::marker::PhantomData<&'a ()>,
20744}
20745impl PipelineDiscardRectangleStateCreateInfoEXT {
20746    /// Start building this struct; `s_type` is already set to the correct variant.
20747    #[inline]
20748    pub fn builder<'a>() -> PipelineDiscardRectangleStateCreateInfoEXTBuilder<'a> {
20749        PipelineDiscardRectangleStateCreateInfoEXTBuilder {
20750            inner: PipelineDiscardRectangleStateCreateInfoEXT {
20751                s_type: StructureType::from_raw(1000099001i32),
20752                ..Default::default()
20753            },
20754            _marker: core::marker::PhantomData,
20755        }
20756    }
20757}
20758impl<'a> PipelineDiscardRectangleStateCreateInfoEXTBuilder<'a> {
20759    #[inline]
20760    pub fn flags(mut self, value: PipelineDiscardRectangleStateCreateFlagsEXT) -> Self {
20761        self.inner.flags = value;
20762        self
20763    }
20764    #[inline]
20765    pub fn discard_rectangle_mode(mut self, value: DiscardRectangleModeEXT) -> Self {
20766        self.inner.discard_rectangle_mode = value;
20767        self
20768    }
20769    #[inline]
20770    pub fn discard_rectangles(mut self, slice: &'a [Rect2D]) -> Self {
20771        self.inner.discard_rectangle_count = slice.len() as u32;
20772        self.inner.p_discard_rectangles = slice.as_ptr();
20773        self
20774    }
20775    ///Prepend a struct to the pNext chain. See [`PipelineDiscardRectangleStateCreateInfoEXT`]'s **Extended By** section for valid types.
20776    #[inline]
20777    pub fn push_next<T: ExtendsPipelineDiscardRectangleStateCreateInfoEXT>(
20778        mut self,
20779        next: &'a mut T,
20780    ) -> Self {
20781        unsafe {
20782            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
20783            (*next_ptr).p_next = self.inner.p_next as *mut _;
20784            self.inner.p_next = <*mut BaseOutStructure>::cast::<
20785                core::ffi::c_void,
20786            >(next_ptr) as *const _;
20787        }
20788        self
20789    }
20790}
20791impl<'a> core::ops::Deref for PipelineDiscardRectangleStateCreateInfoEXTBuilder<'a> {
20792    type Target = PipelineDiscardRectangleStateCreateInfoEXT;
20793    #[inline]
20794    fn deref(&self) -> &Self::Target {
20795        &self.inner
20796    }
20797}
20798impl<'a> core::ops::DerefMut for PipelineDiscardRectangleStateCreateInfoEXTBuilder<'a> {
20799    #[inline]
20800    fn deref_mut(&mut self) -> &mut Self::Target {
20801        &mut self.inner
20802    }
20803}
20804///Builder for [`PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX`] with lifetime-tied pNext safety.
20805pub struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder<'a> {
20806    inner: PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX,
20807    _marker: core::marker::PhantomData<&'a ()>,
20808}
20809impl PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
20810    /// Start building this struct; `s_type` is already set to the correct variant.
20811    #[inline]
20812    pub fn builder<'a>() -> PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder<
20813        'a,
20814    > {
20815        PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder {
20816            inner: PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
20817                s_type: StructureType::from_raw(1000097000i32),
20818                ..Default::default()
20819            },
20820            _marker: core::marker::PhantomData,
20821        }
20822    }
20823}
20824impl<'a> PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder<'a> {
20825    #[inline]
20826    pub fn per_view_position_all_components(mut self, value: bool) -> Self {
20827        self.inner.per_view_position_all_components = value as u32;
20828        self
20829    }
20830}
20831impl<'a> core::ops::Deref
20832for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder<'a> {
20833    type Target = PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
20834    #[inline]
20835    fn deref(&self) -> &Self::Target {
20836        &self.inner
20837    }
20838}
20839impl<'a> core::ops::DerefMut
20840for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder<'a> {
20841    #[inline]
20842    fn deref_mut(&mut self) -> &mut Self::Target {
20843        &mut self.inner
20844    }
20845}
20846///Builder for [`InputAttachmentAspectReference`].
20847pub struct InputAttachmentAspectReferenceBuilder {
20848    inner: InputAttachmentAspectReference,
20849}
20850impl InputAttachmentAspectReference {
20851    /// Start building this struct.
20852    #[inline]
20853    pub fn builder() -> InputAttachmentAspectReferenceBuilder {
20854        InputAttachmentAspectReferenceBuilder {
20855            inner: InputAttachmentAspectReference {
20856                ..Default::default()
20857            },
20858        }
20859    }
20860}
20861impl InputAttachmentAspectReferenceBuilder {
20862    #[inline]
20863    pub fn subpass(mut self, value: u32) -> Self {
20864        self.inner.subpass = value;
20865        self
20866    }
20867    #[inline]
20868    pub fn input_attachment_index(mut self, value: u32) -> Self {
20869        self.inner.input_attachment_index = value;
20870        self
20871    }
20872    #[inline]
20873    pub fn aspect_mask(mut self, value: ImageAspectFlags) -> Self {
20874        self.inner.aspect_mask = value;
20875        self
20876    }
20877}
20878impl core::ops::Deref for InputAttachmentAspectReferenceBuilder {
20879    type Target = InputAttachmentAspectReference;
20880    #[inline]
20881    fn deref(&self) -> &Self::Target {
20882        &self.inner
20883    }
20884}
20885impl core::ops::DerefMut for InputAttachmentAspectReferenceBuilder {
20886    #[inline]
20887    fn deref_mut(&mut self) -> &mut Self::Target {
20888        &mut self.inner
20889    }
20890}
20891///Builder for [`RenderPassInputAttachmentAspectCreateInfo`] with lifetime-tied pNext safety.
20892pub struct RenderPassInputAttachmentAspectCreateInfoBuilder<'a> {
20893    inner: RenderPassInputAttachmentAspectCreateInfo,
20894    _marker: core::marker::PhantomData<&'a ()>,
20895}
20896impl RenderPassInputAttachmentAspectCreateInfo {
20897    /// Start building this struct; `s_type` is already set to the correct variant.
20898    #[inline]
20899    pub fn builder<'a>() -> RenderPassInputAttachmentAspectCreateInfoBuilder<'a> {
20900        RenderPassInputAttachmentAspectCreateInfoBuilder {
20901            inner: RenderPassInputAttachmentAspectCreateInfo {
20902                s_type: StructureType::from_raw(1000117001i32),
20903                ..Default::default()
20904            },
20905            _marker: core::marker::PhantomData,
20906        }
20907    }
20908}
20909impl<'a> RenderPassInputAttachmentAspectCreateInfoBuilder<'a> {
20910    #[inline]
20911    pub fn aspect_references(
20912        mut self,
20913        slice: &'a [InputAttachmentAspectReference],
20914    ) -> Self {
20915        self.inner.aspect_reference_count = slice.len() as u32;
20916        self.inner.p_aspect_references = slice.as_ptr();
20917        self
20918    }
20919    ///Prepend a struct to the pNext chain. See [`RenderPassInputAttachmentAspectCreateInfo`]'s **Extended By** section for valid types.
20920    #[inline]
20921    pub fn push_next<T: ExtendsRenderPassInputAttachmentAspectCreateInfo>(
20922        mut self,
20923        next: &'a mut T,
20924    ) -> Self {
20925        unsafe {
20926            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
20927            (*next_ptr).p_next = self.inner.p_next as *mut _;
20928            self.inner.p_next = <*mut BaseOutStructure>::cast::<
20929                core::ffi::c_void,
20930            >(next_ptr) as *const _;
20931        }
20932        self
20933    }
20934}
20935impl<'a> core::ops::Deref for RenderPassInputAttachmentAspectCreateInfoBuilder<'a> {
20936    type Target = RenderPassInputAttachmentAspectCreateInfo;
20937    #[inline]
20938    fn deref(&self) -> &Self::Target {
20939        &self.inner
20940    }
20941}
20942impl<'a> core::ops::DerefMut for RenderPassInputAttachmentAspectCreateInfoBuilder<'a> {
20943    #[inline]
20944    fn deref_mut(&mut self) -> &mut Self::Target {
20945        &mut self.inner
20946    }
20947}
20948///Builder for [`PhysicalDeviceSurfaceInfo2KHR`] with lifetime-tied pNext safety.
20949pub struct PhysicalDeviceSurfaceInfo2KHRBuilder<'a> {
20950    inner: PhysicalDeviceSurfaceInfo2KHR,
20951    _marker: core::marker::PhantomData<&'a ()>,
20952}
20953impl PhysicalDeviceSurfaceInfo2KHR {
20954    /// Start building this struct; `s_type` is already set to the correct variant.
20955    #[inline]
20956    pub fn builder<'a>() -> PhysicalDeviceSurfaceInfo2KHRBuilder<'a> {
20957        PhysicalDeviceSurfaceInfo2KHRBuilder {
20958            inner: PhysicalDeviceSurfaceInfo2KHR {
20959                s_type: StructureType::from_raw(1000119000i32),
20960                ..Default::default()
20961            },
20962            _marker: core::marker::PhantomData,
20963        }
20964    }
20965}
20966impl<'a> PhysicalDeviceSurfaceInfo2KHRBuilder<'a> {
20967    #[inline]
20968    pub fn surface(mut self, value: SurfaceKHR) -> Self {
20969        self.inner.surface = value;
20970        self
20971    }
20972    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceSurfaceInfo2KHR`]'s **Extended By** section for valid types.
20973    #[inline]
20974    pub fn push_next<T: ExtendsPhysicalDeviceSurfaceInfo2KHR>(
20975        mut self,
20976        next: &'a mut T,
20977    ) -> Self {
20978        unsafe {
20979            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
20980            (*next_ptr).p_next = self.inner.p_next as *mut _;
20981            self.inner.p_next = <*mut BaseOutStructure>::cast::<
20982                core::ffi::c_void,
20983            >(next_ptr) as *const _;
20984        }
20985        self
20986    }
20987}
20988impl<'a> core::ops::Deref for PhysicalDeviceSurfaceInfo2KHRBuilder<'a> {
20989    type Target = PhysicalDeviceSurfaceInfo2KHR;
20990    #[inline]
20991    fn deref(&self) -> &Self::Target {
20992        &self.inner
20993    }
20994}
20995impl<'a> core::ops::DerefMut for PhysicalDeviceSurfaceInfo2KHRBuilder<'a> {
20996    #[inline]
20997    fn deref_mut(&mut self) -> &mut Self::Target {
20998        &mut self.inner
20999    }
21000}
21001///Builder for [`SurfaceCapabilities2KHR`] with lifetime-tied pNext safety.
21002pub struct SurfaceCapabilities2KHRBuilder<'a> {
21003    inner: SurfaceCapabilities2KHR,
21004    _marker: core::marker::PhantomData<&'a ()>,
21005}
21006impl SurfaceCapabilities2KHR {
21007    /// Start building this struct; `s_type` is already set to the correct variant.
21008    #[inline]
21009    pub fn builder<'a>() -> SurfaceCapabilities2KHRBuilder<'a> {
21010        SurfaceCapabilities2KHRBuilder {
21011            inner: SurfaceCapabilities2KHR {
21012                s_type: StructureType::from_raw(1000119001i32),
21013                ..Default::default()
21014            },
21015            _marker: core::marker::PhantomData,
21016        }
21017    }
21018}
21019impl<'a> SurfaceCapabilities2KHRBuilder<'a> {
21020    #[inline]
21021    pub fn surface_capabilities(mut self, value: SurfaceCapabilitiesKHR) -> Self {
21022        self.inner.surface_capabilities = value;
21023        self
21024    }
21025}
21026impl<'a> core::ops::Deref for SurfaceCapabilities2KHRBuilder<'a> {
21027    type Target = SurfaceCapabilities2KHR;
21028    #[inline]
21029    fn deref(&self) -> &Self::Target {
21030        &self.inner
21031    }
21032}
21033impl<'a> core::ops::DerefMut for SurfaceCapabilities2KHRBuilder<'a> {
21034    #[inline]
21035    fn deref_mut(&mut self) -> &mut Self::Target {
21036        &mut self.inner
21037    }
21038}
21039///Builder for [`SurfaceFormat2KHR`] with lifetime-tied pNext safety.
21040pub struct SurfaceFormat2KHRBuilder<'a> {
21041    inner: SurfaceFormat2KHR,
21042    _marker: core::marker::PhantomData<&'a ()>,
21043}
21044impl SurfaceFormat2KHR {
21045    /// Start building this struct; `s_type` is already set to the correct variant.
21046    #[inline]
21047    pub fn builder<'a>() -> SurfaceFormat2KHRBuilder<'a> {
21048        SurfaceFormat2KHRBuilder {
21049            inner: SurfaceFormat2KHR {
21050                s_type: StructureType::from_raw(1000119002i32),
21051                ..Default::default()
21052            },
21053            _marker: core::marker::PhantomData,
21054        }
21055    }
21056}
21057impl<'a> SurfaceFormat2KHRBuilder<'a> {
21058    #[inline]
21059    pub fn surface_format(mut self, value: SurfaceFormatKHR) -> Self {
21060        self.inner.surface_format = value;
21061        self
21062    }
21063}
21064impl<'a> core::ops::Deref for SurfaceFormat2KHRBuilder<'a> {
21065    type Target = SurfaceFormat2KHR;
21066    #[inline]
21067    fn deref(&self) -> &Self::Target {
21068        &self.inner
21069    }
21070}
21071impl<'a> core::ops::DerefMut for SurfaceFormat2KHRBuilder<'a> {
21072    #[inline]
21073    fn deref_mut(&mut self) -> &mut Self::Target {
21074        &mut self.inner
21075    }
21076}
21077///Builder for [`DisplayProperties2KHR`] with lifetime-tied pNext safety.
21078pub struct DisplayProperties2KHRBuilder<'a> {
21079    inner: DisplayProperties2KHR,
21080    _marker: core::marker::PhantomData<&'a ()>,
21081}
21082impl DisplayProperties2KHR {
21083    /// Start building this struct; `s_type` is already set to the correct variant.
21084    #[inline]
21085    pub fn builder<'a>() -> DisplayProperties2KHRBuilder<'a> {
21086        DisplayProperties2KHRBuilder {
21087            inner: DisplayProperties2KHR {
21088                s_type: StructureType::from_raw(1000121000i32),
21089                ..Default::default()
21090            },
21091            _marker: core::marker::PhantomData,
21092        }
21093    }
21094}
21095impl<'a> DisplayProperties2KHRBuilder<'a> {
21096    #[inline]
21097    pub fn display_properties(mut self, value: DisplayPropertiesKHR) -> Self {
21098        self.inner.display_properties = value;
21099        self
21100    }
21101}
21102impl<'a> core::ops::Deref for DisplayProperties2KHRBuilder<'a> {
21103    type Target = DisplayProperties2KHR;
21104    #[inline]
21105    fn deref(&self) -> &Self::Target {
21106        &self.inner
21107    }
21108}
21109impl<'a> core::ops::DerefMut for DisplayProperties2KHRBuilder<'a> {
21110    #[inline]
21111    fn deref_mut(&mut self) -> &mut Self::Target {
21112        &mut self.inner
21113    }
21114}
21115///Builder for [`DisplayPlaneProperties2KHR`] with lifetime-tied pNext safety.
21116pub struct DisplayPlaneProperties2KHRBuilder<'a> {
21117    inner: DisplayPlaneProperties2KHR,
21118    _marker: core::marker::PhantomData<&'a ()>,
21119}
21120impl DisplayPlaneProperties2KHR {
21121    /// Start building this struct; `s_type` is already set to the correct variant.
21122    #[inline]
21123    pub fn builder<'a>() -> DisplayPlaneProperties2KHRBuilder<'a> {
21124        DisplayPlaneProperties2KHRBuilder {
21125            inner: DisplayPlaneProperties2KHR {
21126                s_type: StructureType::from_raw(1000121001i32),
21127                ..Default::default()
21128            },
21129            _marker: core::marker::PhantomData,
21130        }
21131    }
21132}
21133impl<'a> DisplayPlaneProperties2KHRBuilder<'a> {
21134    #[inline]
21135    pub fn display_plane_properties(mut self, value: DisplayPlanePropertiesKHR) -> Self {
21136        self.inner.display_plane_properties = value;
21137        self
21138    }
21139}
21140impl<'a> core::ops::Deref for DisplayPlaneProperties2KHRBuilder<'a> {
21141    type Target = DisplayPlaneProperties2KHR;
21142    #[inline]
21143    fn deref(&self) -> &Self::Target {
21144        &self.inner
21145    }
21146}
21147impl<'a> core::ops::DerefMut for DisplayPlaneProperties2KHRBuilder<'a> {
21148    #[inline]
21149    fn deref_mut(&mut self) -> &mut Self::Target {
21150        &mut self.inner
21151    }
21152}
21153///Builder for [`DisplayModeProperties2KHR`] with lifetime-tied pNext safety.
21154pub struct DisplayModeProperties2KHRBuilder<'a> {
21155    inner: DisplayModeProperties2KHR,
21156    _marker: core::marker::PhantomData<&'a ()>,
21157}
21158impl DisplayModeProperties2KHR {
21159    /// Start building this struct; `s_type` is already set to the correct variant.
21160    #[inline]
21161    pub fn builder<'a>() -> DisplayModeProperties2KHRBuilder<'a> {
21162        DisplayModeProperties2KHRBuilder {
21163            inner: DisplayModeProperties2KHR {
21164                s_type: StructureType::from_raw(1000121002i32),
21165                ..Default::default()
21166            },
21167            _marker: core::marker::PhantomData,
21168        }
21169    }
21170}
21171impl<'a> DisplayModeProperties2KHRBuilder<'a> {
21172    #[inline]
21173    pub fn display_mode_properties(mut self, value: DisplayModePropertiesKHR) -> Self {
21174        self.inner.display_mode_properties = value;
21175        self
21176    }
21177}
21178impl<'a> core::ops::Deref for DisplayModeProperties2KHRBuilder<'a> {
21179    type Target = DisplayModeProperties2KHR;
21180    #[inline]
21181    fn deref(&self) -> &Self::Target {
21182        &self.inner
21183    }
21184}
21185impl<'a> core::ops::DerefMut for DisplayModeProperties2KHRBuilder<'a> {
21186    #[inline]
21187    fn deref_mut(&mut self) -> &mut Self::Target {
21188        &mut self.inner
21189    }
21190}
21191///Builder for [`DisplayModeStereoPropertiesNV`] with lifetime-tied pNext safety.
21192pub struct DisplayModeStereoPropertiesNVBuilder<'a> {
21193    inner: DisplayModeStereoPropertiesNV,
21194    _marker: core::marker::PhantomData<&'a ()>,
21195}
21196impl DisplayModeStereoPropertiesNV {
21197    /// Start building this struct; `s_type` is already set to the correct variant.
21198    #[inline]
21199    pub fn builder<'a>() -> DisplayModeStereoPropertiesNVBuilder<'a> {
21200        DisplayModeStereoPropertiesNVBuilder {
21201            inner: DisplayModeStereoPropertiesNV {
21202                s_type: StructureType::from_raw(1000551001i32),
21203                ..Default::default()
21204            },
21205            _marker: core::marker::PhantomData,
21206        }
21207    }
21208}
21209impl<'a> DisplayModeStereoPropertiesNVBuilder<'a> {
21210    #[inline]
21211    pub fn hdmi3_d_supported(mut self, value: bool) -> Self {
21212        self.inner.hdmi3_d_supported = value as u32;
21213        self
21214    }
21215}
21216impl<'a> core::ops::Deref for DisplayModeStereoPropertiesNVBuilder<'a> {
21217    type Target = DisplayModeStereoPropertiesNV;
21218    #[inline]
21219    fn deref(&self) -> &Self::Target {
21220        &self.inner
21221    }
21222}
21223impl<'a> core::ops::DerefMut for DisplayModeStereoPropertiesNVBuilder<'a> {
21224    #[inline]
21225    fn deref_mut(&mut self) -> &mut Self::Target {
21226        &mut self.inner
21227    }
21228}
21229///Builder for [`DisplayPlaneInfo2KHR`] with lifetime-tied pNext safety.
21230pub struct DisplayPlaneInfo2KHRBuilder<'a> {
21231    inner: DisplayPlaneInfo2KHR,
21232    _marker: core::marker::PhantomData<&'a ()>,
21233}
21234impl DisplayPlaneInfo2KHR {
21235    /// Start building this struct; `s_type` is already set to the correct variant.
21236    #[inline]
21237    pub fn builder<'a>() -> DisplayPlaneInfo2KHRBuilder<'a> {
21238        DisplayPlaneInfo2KHRBuilder {
21239            inner: DisplayPlaneInfo2KHR {
21240                s_type: StructureType::from_raw(1000121003i32),
21241                ..Default::default()
21242            },
21243            _marker: core::marker::PhantomData,
21244        }
21245    }
21246}
21247impl<'a> DisplayPlaneInfo2KHRBuilder<'a> {
21248    #[inline]
21249    pub fn mode(mut self, value: DisplayModeKHR) -> Self {
21250        self.inner.mode = value;
21251        self
21252    }
21253    #[inline]
21254    pub fn plane_index(mut self, value: u32) -> Self {
21255        self.inner.plane_index = value;
21256        self
21257    }
21258    ///Prepend a struct to the pNext chain. See [`DisplayPlaneInfo2KHR`]'s **Extended By** section for valid types.
21259    #[inline]
21260    pub fn push_next<T: ExtendsDisplayPlaneInfo2KHR>(mut self, next: &'a mut T) -> Self {
21261        unsafe {
21262            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
21263            (*next_ptr).p_next = self.inner.p_next as *mut _;
21264            self.inner.p_next = <*mut BaseOutStructure>::cast::<
21265                core::ffi::c_void,
21266            >(next_ptr) as *const _;
21267        }
21268        self
21269    }
21270}
21271impl<'a> core::ops::Deref for DisplayPlaneInfo2KHRBuilder<'a> {
21272    type Target = DisplayPlaneInfo2KHR;
21273    #[inline]
21274    fn deref(&self) -> &Self::Target {
21275        &self.inner
21276    }
21277}
21278impl<'a> core::ops::DerefMut for DisplayPlaneInfo2KHRBuilder<'a> {
21279    #[inline]
21280    fn deref_mut(&mut self) -> &mut Self::Target {
21281        &mut self.inner
21282    }
21283}
21284///Builder for [`DisplayPlaneCapabilities2KHR`] with lifetime-tied pNext safety.
21285pub struct DisplayPlaneCapabilities2KHRBuilder<'a> {
21286    inner: DisplayPlaneCapabilities2KHR,
21287    _marker: core::marker::PhantomData<&'a ()>,
21288}
21289impl DisplayPlaneCapabilities2KHR {
21290    /// Start building this struct; `s_type` is already set to the correct variant.
21291    #[inline]
21292    pub fn builder<'a>() -> DisplayPlaneCapabilities2KHRBuilder<'a> {
21293        DisplayPlaneCapabilities2KHRBuilder {
21294            inner: DisplayPlaneCapabilities2KHR {
21295                s_type: StructureType::from_raw(1000121004i32),
21296                ..Default::default()
21297            },
21298            _marker: core::marker::PhantomData,
21299        }
21300    }
21301}
21302impl<'a> DisplayPlaneCapabilities2KHRBuilder<'a> {
21303    #[inline]
21304    pub fn capabilities(mut self, value: DisplayPlaneCapabilitiesKHR) -> Self {
21305        self.inner.capabilities = value;
21306        self
21307    }
21308}
21309impl<'a> core::ops::Deref for DisplayPlaneCapabilities2KHRBuilder<'a> {
21310    type Target = DisplayPlaneCapabilities2KHR;
21311    #[inline]
21312    fn deref(&self) -> &Self::Target {
21313        &self.inner
21314    }
21315}
21316impl<'a> core::ops::DerefMut for DisplayPlaneCapabilities2KHRBuilder<'a> {
21317    #[inline]
21318    fn deref_mut(&mut self) -> &mut Self::Target {
21319        &mut self.inner
21320    }
21321}
21322///Builder for [`SharedPresentSurfaceCapabilitiesKHR`] with lifetime-tied pNext safety.
21323pub struct SharedPresentSurfaceCapabilitiesKHRBuilder<'a> {
21324    inner: SharedPresentSurfaceCapabilitiesKHR,
21325    _marker: core::marker::PhantomData<&'a ()>,
21326}
21327impl SharedPresentSurfaceCapabilitiesKHR {
21328    /// Start building this struct; `s_type` is already set to the correct variant.
21329    #[inline]
21330    pub fn builder<'a>() -> SharedPresentSurfaceCapabilitiesKHRBuilder<'a> {
21331        SharedPresentSurfaceCapabilitiesKHRBuilder {
21332            inner: SharedPresentSurfaceCapabilitiesKHR {
21333                s_type: StructureType::from_raw(1000111000i32),
21334                ..Default::default()
21335            },
21336            _marker: core::marker::PhantomData,
21337        }
21338    }
21339}
21340impl<'a> SharedPresentSurfaceCapabilitiesKHRBuilder<'a> {
21341    #[inline]
21342    pub fn shared_present_supported_usage_flags(
21343        mut self,
21344        value: ImageUsageFlags,
21345    ) -> Self {
21346        self.inner.shared_present_supported_usage_flags = value;
21347        self
21348    }
21349}
21350impl<'a> core::ops::Deref for SharedPresentSurfaceCapabilitiesKHRBuilder<'a> {
21351    type Target = SharedPresentSurfaceCapabilitiesKHR;
21352    #[inline]
21353    fn deref(&self) -> &Self::Target {
21354        &self.inner
21355    }
21356}
21357impl<'a> core::ops::DerefMut for SharedPresentSurfaceCapabilitiesKHRBuilder<'a> {
21358    #[inline]
21359    fn deref_mut(&mut self) -> &mut Self::Target {
21360        &mut self.inner
21361    }
21362}
21363///Builder for [`PhysicalDevice16BitStorageFeatures`] with lifetime-tied pNext safety.
21364pub struct PhysicalDevice16BitStorageFeaturesBuilder<'a> {
21365    inner: PhysicalDevice16BitStorageFeatures,
21366    _marker: core::marker::PhantomData<&'a ()>,
21367}
21368impl PhysicalDevice16BitStorageFeatures {
21369    /// Start building this struct; `s_type` is already set to the correct variant.
21370    #[inline]
21371    pub fn builder<'a>() -> PhysicalDevice16BitStorageFeaturesBuilder<'a> {
21372        PhysicalDevice16BitStorageFeaturesBuilder {
21373            inner: PhysicalDevice16BitStorageFeatures {
21374                s_type: StructureType::from_raw(1000083000i32),
21375                ..Default::default()
21376            },
21377            _marker: core::marker::PhantomData,
21378        }
21379    }
21380}
21381impl<'a> PhysicalDevice16BitStorageFeaturesBuilder<'a> {
21382    #[inline]
21383    pub fn storage_buffer16_bit_access(mut self, value: bool) -> Self {
21384        self.inner.storage_buffer16_bit_access = value as u32;
21385        self
21386    }
21387    #[inline]
21388    pub fn uniform_and_storage_buffer16_bit_access(mut self, value: bool) -> Self {
21389        self.inner.uniform_and_storage_buffer16_bit_access = value as u32;
21390        self
21391    }
21392    #[inline]
21393    pub fn storage_push_constant16(mut self, value: bool) -> Self {
21394        self.inner.storage_push_constant16 = value as u32;
21395        self
21396    }
21397    #[inline]
21398    pub fn storage_input_output16(mut self, value: bool) -> Self {
21399        self.inner.storage_input_output16 = value as u32;
21400        self
21401    }
21402    ///Prepend a struct to the pNext chain. See [`PhysicalDevice16BitStorageFeatures`]'s **Extended By** section for valid types.
21403    #[inline]
21404    pub fn push_next<T: ExtendsPhysicalDevice16BitStorageFeatures>(
21405        mut self,
21406        next: &'a mut T,
21407    ) -> Self {
21408        unsafe {
21409            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
21410            (*next_ptr).p_next = self.inner.p_next as *mut _;
21411            self.inner.p_next = <*mut BaseOutStructure>::cast::<
21412                core::ffi::c_void,
21413            >(next_ptr);
21414        }
21415        self
21416    }
21417}
21418impl<'a> core::ops::Deref for PhysicalDevice16BitStorageFeaturesBuilder<'a> {
21419    type Target = PhysicalDevice16BitStorageFeatures;
21420    #[inline]
21421    fn deref(&self) -> &Self::Target {
21422        &self.inner
21423    }
21424}
21425impl<'a> core::ops::DerefMut for PhysicalDevice16BitStorageFeaturesBuilder<'a> {
21426    #[inline]
21427    fn deref_mut(&mut self) -> &mut Self::Target {
21428        &mut self.inner
21429    }
21430}
21431///Builder for [`PhysicalDeviceSubgroupProperties`] with lifetime-tied pNext safety.
21432pub struct PhysicalDeviceSubgroupPropertiesBuilder<'a> {
21433    inner: PhysicalDeviceSubgroupProperties,
21434    _marker: core::marker::PhantomData<&'a ()>,
21435}
21436impl PhysicalDeviceSubgroupProperties {
21437    /// Start building this struct; `s_type` is already set to the correct variant.
21438    #[inline]
21439    pub fn builder<'a>() -> PhysicalDeviceSubgroupPropertiesBuilder<'a> {
21440        PhysicalDeviceSubgroupPropertiesBuilder {
21441            inner: PhysicalDeviceSubgroupProperties {
21442                s_type: StructureType::from_raw(1000094000i32),
21443                ..Default::default()
21444            },
21445            _marker: core::marker::PhantomData,
21446        }
21447    }
21448}
21449impl<'a> PhysicalDeviceSubgroupPropertiesBuilder<'a> {
21450    #[inline]
21451    pub fn subgroup_size(mut self, value: u32) -> Self {
21452        self.inner.subgroup_size = value;
21453        self
21454    }
21455    #[inline]
21456    pub fn supported_stages(mut self, value: ShaderStageFlags) -> Self {
21457        self.inner.supported_stages = value;
21458        self
21459    }
21460    #[inline]
21461    pub fn supported_operations(mut self, value: SubgroupFeatureFlags) -> Self {
21462        self.inner.supported_operations = value;
21463        self
21464    }
21465    #[inline]
21466    pub fn quad_operations_in_all_stages(mut self, value: bool) -> Self {
21467        self.inner.quad_operations_in_all_stages = value as u32;
21468        self
21469    }
21470}
21471impl<'a> core::ops::Deref for PhysicalDeviceSubgroupPropertiesBuilder<'a> {
21472    type Target = PhysicalDeviceSubgroupProperties;
21473    #[inline]
21474    fn deref(&self) -> &Self::Target {
21475        &self.inner
21476    }
21477}
21478impl<'a> core::ops::DerefMut for PhysicalDeviceSubgroupPropertiesBuilder<'a> {
21479    #[inline]
21480    fn deref_mut(&mut self) -> &mut Self::Target {
21481        &mut self.inner
21482    }
21483}
21484///Builder for [`PhysicalDeviceShaderSubgroupExtendedTypesFeatures`] with lifetime-tied pNext safety.
21485pub struct PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder<'a> {
21486    inner: PhysicalDeviceShaderSubgroupExtendedTypesFeatures,
21487    _marker: core::marker::PhantomData<&'a ()>,
21488}
21489impl PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
21490    /// Start building this struct; `s_type` is already set to the correct variant.
21491    #[inline]
21492    pub fn builder<'a>() -> PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder<
21493        'a,
21494    > {
21495        PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder {
21496            inner: PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
21497                s_type: StructureType::from_raw(1000175000i32),
21498                ..Default::default()
21499            },
21500            _marker: core::marker::PhantomData,
21501        }
21502    }
21503}
21504impl<'a> PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder<'a> {
21505    #[inline]
21506    pub fn shader_subgroup_extended_types(mut self, value: bool) -> Self {
21507        self.inner.shader_subgroup_extended_types = value as u32;
21508        self
21509    }
21510    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderSubgroupExtendedTypesFeatures`]'s **Extended By** section for valid types.
21511    #[inline]
21512    pub fn push_next<T: ExtendsPhysicalDeviceShaderSubgroupExtendedTypesFeatures>(
21513        mut self,
21514        next: &'a mut T,
21515    ) -> Self {
21516        unsafe {
21517            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
21518            (*next_ptr).p_next = self.inner.p_next as *mut _;
21519            self.inner.p_next = <*mut BaseOutStructure>::cast::<
21520                core::ffi::c_void,
21521            >(next_ptr);
21522        }
21523        self
21524    }
21525}
21526impl<'a> core::ops::Deref
21527for PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder<'a> {
21528    type Target = PhysicalDeviceShaderSubgroupExtendedTypesFeatures;
21529    #[inline]
21530    fn deref(&self) -> &Self::Target {
21531        &self.inner
21532    }
21533}
21534impl<'a> core::ops::DerefMut
21535for PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder<'a> {
21536    #[inline]
21537    fn deref_mut(&mut self) -> &mut Self::Target {
21538        &mut self.inner
21539    }
21540}
21541///Builder for [`BufferMemoryRequirementsInfo2`] with lifetime-tied pNext safety.
21542pub struct BufferMemoryRequirementsInfo2Builder<'a> {
21543    inner: BufferMemoryRequirementsInfo2,
21544    _marker: core::marker::PhantomData<&'a ()>,
21545}
21546impl BufferMemoryRequirementsInfo2 {
21547    /// Start building this struct; `s_type` is already set to the correct variant.
21548    #[inline]
21549    pub fn builder<'a>() -> BufferMemoryRequirementsInfo2Builder<'a> {
21550        BufferMemoryRequirementsInfo2Builder {
21551            inner: BufferMemoryRequirementsInfo2 {
21552                s_type: StructureType::from_raw(1000146000i32),
21553                ..Default::default()
21554            },
21555            _marker: core::marker::PhantomData,
21556        }
21557    }
21558}
21559impl<'a> BufferMemoryRequirementsInfo2Builder<'a> {
21560    #[inline]
21561    pub fn buffer(mut self, value: Buffer) -> Self {
21562        self.inner.buffer = value;
21563        self
21564    }
21565    ///Prepend a struct to the pNext chain. See [`BufferMemoryRequirementsInfo2`]'s **Extended By** section for valid types.
21566    #[inline]
21567    pub fn push_next<T: ExtendsBufferMemoryRequirementsInfo2>(
21568        mut self,
21569        next: &'a mut T,
21570    ) -> Self {
21571        unsafe {
21572            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
21573            (*next_ptr).p_next = self.inner.p_next as *mut _;
21574            self.inner.p_next = <*mut BaseOutStructure>::cast::<
21575                core::ffi::c_void,
21576            >(next_ptr) as *const _;
21577        }
21578        self
21579    }
21580}
21581impl<'a> core::ops::Deref for BufferMemoryRequirementsInfo2Builder<'a> {
21582    type Target = BufferMemoryRequirementsInfo2;
21583    #[inline]
21584    fn deref(&self) -> &Self::Target {
21585        &self.inner
21586    }
21587}
21588impl<'a> core::ops::DerefMut for BufferMemoryRequirementsInfo2Builder<'a> {
21589    #[inline]
21590    fn deref_mut(&mut self) -> &mut Self::Target {
21591        &mut self.inner
21592    }
21593}
21594///Builder for [`DeviceBufferMemoryRequirements`] with lifetime-tied pNext safety.
21595pub struct DeviceBufferMemoryRequirementsBuilder<'a> {
21596    inner: DeviceBufferMemoryRequirements,
21597    _marker: core::marker::PhantomData<&'a ()>,
21598}
21599impl DeviceBufferMemoryRequirements {
21600    /// Start building this struct; `s_type` is already set to the correct variant.
21601    #[inline]
21602    pub fn builder<'a>() -> DeviceBufferMemoryRequirementsBuilder<'a> {
21603        DeviceBufferMemoryRequirementsBuilder {
21604            inner: DeviceBufferMemoryRequirements {
21605                s_type: StructureType::from_raw(1000413002i32),
21606                ..Default::default()
21607            },
21608            _marker: core::marker::PhantomData,
21609        }
21610    }
21611}
21612impl<'a> DeviceBufferMemoryRequirementsBuilder<'a> {
21613    #[inline]
21614    pub fn create_info(mut self, value: &'a BufferCreateInfo) -> Self {
21615        self.inner.p_create_info = value;
21616        self
21617    }
21618    ///Prepend a struct to the pNext chain. See [`DeviceBufferMemoryRequirements`]'s **Extended By** section for valid types.
21619    #[inline]
21620    pub fn push_next<T: ExtendsDeviceBufferMemoryRequirements>(
21621        mut self,
21622        next: &'a mut T,
21623    ) -> Self {
21624        unsafe {
21625            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
21626            (*next_ptr).p_next = self.inner.p_next as *mut _;
21627            self.inner.p_next = <*mut BaseOutStructure>::cast::<
21628                core::ffi::c_void,
21629            >(next_ptr) as *const _;
21630        }
21631        self
21632    }
21633}
21634impl<'a> core::ops::Deref for DeviceBufferMemoryRequirementsBuilder<'a> {
21635    type Target = DeviceBufferMemoryRequirements;
21636    #[inline]
21637    fn deref(&self) -> &Self::Target {
21638        &self.inner
21639    }
21640}
21641impl<'a> core::ops::DerefMut for DeviceBufferMemoryRequirementsBuilder<'a> {
21642    #[inline]
21643    fn deref_mut(&mut self) -> &mut Self::Target {
21644        &mut self.inner
21645    }
21646}
21647///Builder for [`ImageMemoryRequirementsInfo2`] with lifetime-tied pNext safety.
21648pub struct ImageMemoryRequirementsInfo2Builder<'a> {
21649    inner: ImageMemoryRequirementsInfo2,
21650    _marker: core::marker::PhantomData<&'a ()>,
21651}
21652impl ImageMemoryRequirementsInfo2 {
21653    /// Start building this struct; `s_type` is already set to the correct variant.
21654    #[inline]
21655    pub fn builder<'a>() -> ImageMemoryRequirementsInfo2Builder<'a> {
21656        ImageMemoryRequirementsInfo2Builder {
21657            inner: ImageMemoryRequirementsInfo2 {
21658                s_type: StructureType::from_raw(1000146001i32),
21659                ..Default::default()
21660            },
21661            _marker: core::marker::PhantomData,
21662        }
21663    }
21664}
21665impl<'a> ImageMemoryRequirementsInfo2Builder<'a> {
21666    #[inline]
21667    pub fn image(mut self, value: Image) -> Self {
21668        self.inner.image = value;
21669        self
21670    }
21671    ///Prepend a struct to the pNext chain. See [`ImageMemoryRequirementsInfo2`]'s **Extended By** section for valid types.
21672    #[inline]
21673    pub fn push_next<T: ExtendsImageMemoryRequirementsInfo2>(
21674        mut self,
21675        next: &'a mut T,
21676    ) -> Self {
21677        unsafe {
21678            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
21679            (*next_ptr).p_next = self.inner.p_next as *mut _;
21680            self.inner.p_next = <*mut BaseOutStructure>::cast::<
21681                core::ffi::c_void,
21682            >(next_ptr) as *const _;
21683        }
21684        self
21685    }
21686}
21687impl<'a> core::ops::Deref for ImageMemoryRequirementsInfo2Builder<'a> {
21688    type Target = ImageMemoryRequirementsInfo2;
21689    #[inline]
21690    fn deref(&self) -> &Self::Target {
21691        &self.inner
21692    }
21693}
21694impl<'a> core::ops::DerefMut for ImageMemoryRequirementsInfo2Builder<'a> {
21695    #[inline]
21696    fn deref_mut(&mut self) -> &mut Self::Target {
21697        &mut self.inner
21698    }
21699}
21700///Builder for [`ImageSparseMemoryRequirementsInfo2`] with lifetime-tied pNext safety.
21701pub struct ImageSparseMemoryRequirementsInfo2Builder<'a> {
21702    inner: ImageSparseMemoryRequirementsInfo2,
21703    _marker: core::marker::PhantomData<&'a ()>,
21704}
21705impl ImageSparseMemoryRequirementsInfo2 {
21706    /// Start building this struct; `s_type` is already set to the correct variant.
21707    #[inline]
21708    pub fn builder<'a>() -> ImageSparseMemoryRequirementsInfo2Builder<'a> {
21709        ImageSparseMemoryRequirementsInfo2Builder {
21710            inner: ImageSparseMemoryRequirementsInfo2 {
21711                s_type: StructureType::from_raw(1000146002i32),
21712                ..Default::default()
21713            },
21714            _marker: core::marker::PhantomData,
21715        }
21716    }
21717}
21718impl<'a> ImageSparseMemoryRequirementsInfo2Builder<'a> {
21719    #[inline]
21720    pub fn image(mut self, value: Image) -> Self {
21721        self.inner.image = value;
21722        self
21723    }
21724    ///Prepend a struct to the pNext chain. See [`ImageSparseMemoryRequirementsInfo2`]'s **Extended By** section for valid types.
21725    #[inline]
21726    pub fn push_next<T: ExtendsImageSparseMemoryRequirementsInfo2>(
21727        mut self,
21728        next: &'a mut T,
21729    ) -> Self {
21730        unsafe {
21731            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
21732            (*next_ptr).p_next = self.inner.p_next as *mut _;
21733            self.inner.p_next = <*mut BaseOutStructure>::cast::<
21734                core::ffi::c_void,
21735            >(next_ptr) as *const _;
21736        }
21737        self
21738    }
21739}
21740impl<'a> core::ops::Deref for ImageSparseMemoryRequirementsInfo2Builder<'a> {
21741    type Target = ImageSparseMemoryRequirementsInfo2;
21742    #[inline]
21743    fn deref(&self) -> &Self::Target {
21744        &self.inner
21745    }
21746}
21747impl<'a> core::ops::DerefMut for ImageSparseMemoryRequirementsInfo2Builder<'a> {
21748    #[inline]
21749    fn deref_mut(&mut self) -> &mut Self::Target {
21750        &mut self.inner
21751    }
21752}
21753///Builder for [`DeviceImageMemoryRequirements`] with lifetime-tied pNext safety.
21754pub struct DeviceImageMemoryRequirementsBuilder<'a> {
21755    inner: DeviceImageMemoryRequirements,
21756    _marker: core::marker::PhantomData<&'a ()>,
21757}
21758impl DeviceImageMemoryRequirements {
21759    /// Start building this struct; `s_type` is already set to the correct variant.
21760    #[inline]
21761    pub fn builder<'a>() -> DeviceImageMemoryRequirementsBuilder<'a> {
21762        DeviceImageMemoryRequirementsBuilder {
21763            inner: DeviceImageMemoryRequirements {
21764                s_type: StructureType::from_raw(1000413003i32),
21765                ..Default::default()
21766            },
21767            _marker: core::marker::PhantomData,
21768        }
21769    }
21770}
21771impl<'a> DeviceImageMemoryRequirementsBuilder<'a> {
21772    #[inline]
21773    pub fn create_info(mut self, value: &'a ImageCreateInfo) -> Self {
21774        self.inner.p_create_info = value;
21775        self
21776    }
21777    #[inline]
21778    pub fn plane_aspect(mut self, value: ImageAspectFlagBits) -> Self {
21779        self.inner.plane_aspect = value;
21780        self
21781    }
21782    ///Prepend a struct to the pNext chain. See [`DeviceImageMemoryRequirements`]'s **Extended By** section for valid types.
21783    #[inline]
21784    pub fn push_next<T: ExtendsDeviceImageMemoryRequirements>(
21785        mut self,
21786        next: &'a mut T,
21787    ) -> Self {
21788        unsafe {
21789            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
21790            (*next_ptr).p_next = self.inner.p_next as *mut _;
21791            self.inner.p_next = <*mut BaseOutStructure>::cast::<
21792                core::ffi::c_void,
21793            >(next_ptr) as *const _;
21794        }
21795        self
21796    }
21797}
21798impl<'a> core::ops::Deref for DeviceImageMemoryRequirementsBuilder<'a> {
21799    type Target = DeviceImageMemoryRequirements;
21800    #[inline]
21801    fn deref(&self) -> &Self::Target {
21802        &self.inner
21803    }
21804}
21805impl<'a> core::ops::DerefMut for DeviceImageMemoryRequirementsBuilder<'a> {
21806    #[inline]
21807    fn deref_mut(&mut self) -> &mut Self::Target {
21808        &mut self.inner
21809    }
21810}
21811///Builder for [`MemoryRequirements2`] with lifetime-tied pNext safety.
21812pub struct MemoryRequirements2Builder<'a> {
21813    inner: MemoryRequirements2,
21814    _marker: core::marker::PhantomData<&'a ()>,
21815}
21816impl MemoryRequirements2 {
21817    /// Start building this struct; `s_type` is already set to the correct variant.
21818    #[inline]
21819    pub fn builder<'a>() -> MemoryRequirements2Builder<'a> {
21820        MemoryRequirements2Builder {
21821            inner: MemoryRequirements2 {
21822                s_type: StructureType::from_raw(1000146003i32),
21823                ..Default::default()
21824            },
21825            _marker: core::marker::PhantomData,
21826        }
21827    }
21828}
21829impl<'a> MemoryRequirements2Builder<'a> {
21830    #[inline]
21831    pub fn memory_requirements(mut self, value: MemoryRequirements) -> Self {
21832        self.inner.memory_requirements = value;
21833        self
21834    }
21835}
21836impl<'a> core::ops::Deref for MemoryRequirements2Builder<'a> {
21837    type Target = MemoryRequirements2;
21838    #[inline]
21839    fn deref(&self) -> &Self::Target {
21840        &self.inner
21841    }
21842}
21843impl<'a> core::ops::DerefMut for MemoryRequirements2Builder<'a> {
21844    #[inline]
21845    fn deref_mut(&mut self) -> &mut Self::Target {
21846        &mut self.inner
21847    }
21848}
21849///Builder for [`SparseImageMemoryRequirements2`] with lifetime-tied pNext safety.
21850pub struct SparseImageMemoryRequirements2Builder<'a> {
21851    inner: SparseImageMemoryRequirements2,
21852    _marker: core::marker::PhantomData<&'a ()>,
21853}
21854impl SparseImageMemoryRequirements2 {
21855    /// Start building this struct; `s_type` is already set to the correct variant.
21856    #[inline]
21857    pub fn builder<'a>() -> SparseImageMemoryRequirements2Builder<'a> {
21858        SparseImageMemoryRequirements2Builder {
21859            inner: SparseImageMemoryRequirements2 {
21860                s_type: StructureType::from_raw(1000146004i32),
21861                ..Default::default()
21862            },
21863            _marker: core::marker::PhantomData,
21864        }
21865    }
21866}
21867impl<'a> SparseImageMemoryRequirements2Builder<'a> {
21868    #[inline]
21869    pub fn memory_requirements(mut self, value: SparseImageMemoryRequirements) -> Self {
21870        self.inner.memory_requirements = value;
21871        self
21872    }
21873}
21874impl<'a> core::ops::Deref for SparseImageMemoryRequirements2Builder<'a> {
21875    type Target = SparseImageMemoryRequirements2;
21876    #[inline]
21877    fn deref(&self) -> &Self::Target {
21878        &self.inner
21879    }
21880}
21881impl<'a> core::ops::DerefMut for SparseImageMemoryRequirements2Builder<'a> {
21882    #[inline]
21883    fn deref_mut(&mut self) -> &mut Self::Target {
21884        &mut self.inner
21885    }
21886}
21887///Builder for [`PhysicalDevicePointClippingProperties`] with lifetime-tied pNext safety.
21888pub struct PhysicalDevicePointClippingPropertiesBuilder<'a> {
21889    inner: PhysicalDevicePointClippingProperties,
21890    _marker: core::marker::PhantomData<&'a ()>,
21891}
21892impl PhysicalDevicePointClippingProperties {
21893    /// Start building this struct; `s_type` is already set to the correct variant.
21894    #[inline]
21895    pub fn builder<'a>() -> PhysicalDevicePointClippingPropertiesBuilder<'a> {
21896        PhysicalDevicePointClippingPropertiesBuilder {
21897            inner: PhysicalDevicePointClippingProperties {
21898                s_type: StructureType::from_raw(1000117000i32),
21899                ..Default::default()
21900            },
21901            _marker: core::marker::PhantomData,
21902        }
21903    }
21904}
21905impl<'a> PhysicalDevicePointClippingPropertiesBuilder<'a> {
21906    #[inline]
21907    pub fn point_clipping_behavior(mut self, value: PointClippingBehavior) -> Self {
21908        self.inner.point_clipping_behavior = value;
21909        self
21910    }
21911}
21912impl<'a> core::ops::Deref for PhysicalDevicePointClippingPropertiesBuilder<'a> {
21913    type Target = PhysicalDevicePointClippingProperties;
21914    #[inline]
21915    fn deref(&self) -> &Self::Target {
21916        &self.inner
21917    }
21918}
21919impl<'a> core::ops::DerefMut for PhysicalDevicePointClippingPropertiesBuilder<'a> {
21920    #[inline]
21921    fn deref_mut(&mut self) -> &mut Self::Target {
21922        &mut self.inner
21923    }
21924}
21925///Builder for [`MemoryDedicatedRequirements`] with lifetime-tied pNext safety.
21926pub struct MemoryDedicatedRequirementsBuilder<'a> {
21927    inner: MemoryDedicatedRequirements,
21928    _marker: core::marker::PhantomData<&'a ()>,
21929}
21930impl MemoryDedicatedRequirements {
21931    /// Start building this struct; `s_type` is already set to the correct variant.
21932    #[inline]
21933    pub fn builder<'a>() -> MemoryDedicatedRequirementsBuilder<'a> {
21934        MemoryDedicatedRequirementsBuilder {
21935            inner: MemoryDedicatedRequirements {
21936                s_type: StructureType::from_raw(1000127000i32),
21937                ..Default::default()
21938            },
21939            _marker: core::marker::PhantomData,
21940        }
21941    }
21942}
21943impl<'a> MemoryDedicatedRequirementsBuilder<'a> {
21944    #[inline]
21945    pub fn prefers_dedicated_allocation(mut self, value: bool) -> Self {
21946        self.inner.prefers_dedicated_allocation = value as u32;
21947        self
21948    }
21949    #[inline]
21950    pub fn requires_dedicated_allocation(mut self, value: bool) -> Self {
21951        self.inner.requires_dedicated_allocation = value as u32;
21952        self
21953    }
21954}
21955impl<'a> core::ops::Deref for MemoryDedicatedRequirementsBuilder<'a> {
21956    type Target = MemoryDedicatedRequirements;
21957    #[inline]
21958    fn deref(&self) -> &Self::Target {
21959        &self.inner
21960    }
21961}
21962impl<'a> core::ops::DerefMut for MemoryDedicatedRequirementsBuilder<'a> {
21963    #[inline]
21964    fn deref_mut(&mut self) -> &mut Self::Target {
21965        &mut self.inner
21966    }
21967}
21968///Builder for [`MemoryDedicatedAllocateInfo`] with lifetime-tied pNext safety.
21969pub struct MemoryDedicatedAllocateInfoBuilder<'a> {
21970    inner: MemoryDedicatedAllocateInfo,
21971    _marker: core::marker::PhantomData<&'a ()>,
21972}
21973impl MemoryDedicatedAllocateInfo {
21974    /// Start building this struct; `s_type` is already set to the correct variant.
21975    #[inline]
21976    pub fn builder<'a>() -> MemoryDedicatedAllocateInfoBuilder<'a> {
21977        MemoryDedicatedAllocateInfoBuilder {
21978            inner: MemoryDedicatedAllocateInfo {
21979                s_type: StructureType::from_raw(1000127001i32),
21980                ..Default::default()
21981            },
21982            _marker: core::marker::PhantomData,
21983        }
21984    }
21985}
21986impl<'a> MemoryDedicatedAllocateInfoBuilder<'a> {
21987    #[inline]
21988    pub fn image(mut self, value: Image) -> Self {
21989        self.inner.image = value;
21990        self
21991    }
21992    #[inline]
21993    pub fn buffer(mut self, value: Buffer) -> Self {
21994        self.inner.buffer = value;
21995        self
21996    }
21997    ///Prepend a struct to the pNext chain. See [`MemoryDedicatedAllocateInfo`]'s **Extended By** section for valid types.
21998    #[inline]
21999    pub fn push_next<T: ExtendsMemoryDedicatedAllocateInfo>(
22000        mut self,
22001        next: &'a mut T,
22002    ) -> Self {
22003        unsafe {
22004            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
22005            (*next_ptr).p_next = self.inner.p_next as *mut _;
22006            self.inner.p_next = <*mut BaseOutStructure>::cast::<
22007                core::ffi::c_void,
22008            >(next_ptr) as *const _;
22009        }
22010        self
22011    }
22012}
22013impl<'a> core::ops::Deref for MemoryDedicatedAllocateInfoBuilder<'a> {
22014    type Target = MemoryDedicatedAllocateInfo;
22015    #[inline]
22016    fn deref(&self) -> &Self::Target {
22017        &self.inner
22018    }
22019}
22020impl<'a> core::ops::DerefMut for MemoryDedicatedAllocateInfoBuilder<'a> {
22021    #[inline]
22022    fn deref_mut(&mut self) -> &mut Self::Target {
22023        &mut self.inner
22024    }
22025}
22026///Builder for [`ImageViewUsageCreateInfo`] with lifetime-tied pNext safety.
22027pub struct ImageViewUsageCreateInfoBuilder<'a> {
22028    inner: ImageViewUsageCreateInfo,
22029    _marker: core::marker::PhantomData<&'a ()>,
22030}
22031impl ImageViewUsageCreateInfo {
22032    /// Start building this struct; `s_type` is already set to the correct variant.
22033    #[inline]
22034    pub fn builder<'a>() -> ImageViewUsageCreateInfoBuilder<'a> {
22035        ImageViewUsageCreateInfoBuilder {
22036            inner: ImageViewUsageCreateInfo {
22037                s_type: StructureType::from_raw(1000117002i32),
22038                ..Default::default()
22039            },
22040            _marker: core::marker::PhantomData,
22041        }
22042    }
22043}
22044impl<'a> ImageViewUsageCreateInfoBuilder<'a> {
22045    #[inline]
22046    pub fn usage(mut self, value: ImageUsageFlags) -> Self {
22047        self.inner.usage = value;
22048        self
22049    }
22050    ///Prepend a struct to the pNext chain. See [`ImageViewUsageCreateInfo`]'s **Extended By** section for valid types.
22051    #[inline]
22052    pub fn push_next<T: ExtendsImageViewUsageCreateInfo>(
22053        mut self,
22054        next: &'a mut T,
22055    ) -> Self {
22056        unsafe {
22057            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
22058            (*next_ptr).p_next = self.inner.p_next as *mut _;
22059            self.inner.p_next = <*mut BaseOutStructure>::cast::<
22060                core::ffi::c_void,
22061            >(next_ptr) as *const _;
22062        }
22063        self
22064    }
22065}
22066impl<'a> core::ops::Deref for ImageViewUsageCreateInfoBuilder<'a> {
22067    type Target = ImageViewUsageCreateInfo;
22068    #[inline]
22069    fn deref(&self) -> &Self::Target {
22070        &self.inner
22071    }
22072}
22073impl<'a> core::ops::DerefMut for ImageViewUsageCreateInfoBuilder<'a> {
22074    #[inline]
22075    fn deref_mut(&mut self) -> &mut Self::Target {
22076        &mut self.inner
22077    }
22078}
22079///Builder for [`ImageViewSlicedCreateInfoEXT`] with lifetime-tied pNext safety.
22080pub struct ImageViewSlicedCreateInfoEXTBuilder<'a> {
22081    inner: ImageViewSlicedCreateInfoEXT,
22082    _marker: core::marker::PhantomData<&'a ()>,
22083}
22084impl ImageViewSlicedCreateInfoEXT {
22085    /// Start building this struct; `s_type` is already set to the correct variant.
22086    #[inline]
22087    pub fn builder<'a>() -> ImageViewSlicedCreateInfoEXTBuilder<'a> {
22088        ImageViewSlicedCreateInfoEXTBuilder {
22089            inner: ImageViewSlicedCreateInfoEXT {
22090                s_type: StructureType::from_raw(1000418001i32),
22091                ..Default::default()
22092            },
22093            _marker: core::marker::PhantomData,
22094        }
22095    }
22096}
22097impl<'a> ImageViewSlicedCreateInfoEXTBuilder<'a> {
22098    #[inline]
22099    pub fn slice_offset(mut self, value: u32) -> Self {
22100        self.inner.slice_offset = value;
22101        self
22102    }
22103    #[inline]
22104    pub fn slice_count(mut self, value: u32) -> Self {
22105        self.inner.slice_count = value;
22106        self
22107    }
22108    ///Prepend a struct to the pNext chain. See [`ImageViewSlicedCreateInfoEXT`]'s **Extended By** section for valid types.
22109    #[inline]
22110    pub fn push_next<T: ExtendsImageViewSlicedCreateInfoEXT>(
22111        mut self,
22112        next: &'a mut T,
22113    ) -> Self {
22114        unsafe {
22115            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
22116            (*next_ptr).p_next = self.inner.p_next as *mut _;
22117            self.inner.p_next = <*mut BaseOutStructure>::cast::<
22118                core::ffi::c_void,
22119            >(next_ptr) as *const _;
22120        }
22121        self
22122    }
22123}
22124impl<'a> core::ops::Deref for ImageViewSlicedCreateInfoEXTBuilder<'a> {
22125    type Target = ImageViewSlicedCreateInfoEXT;
22126    #[inline]
22127    fn deref(&self) -> &Self::Target {
22128        &self.inner
22129    }
22130}
22131impl<'a> core::ops::DerefMut for ImageViewSlicedCreateInfoEXTBuilder<'a> {
22132    #[inline]
22133    fn deref_mut(&mut self) -> &mut Self::Target {
22134        &mut self.inner
22135    }
22136}
22137///Builder for [`PipelineTessellationDomainOriginStateCreateInfo`] with lifetime-tied pNext safety.
22138pub struct PipelineTessellationDomainOriginStateCreateInfoBuilder<'a> {
22139    inner: PipelineTessellationDomainOriginStateCreateInfo,
22140    _marker: core::marker::PhantomData<&'a ()>,
22141}
22142impl PipelineTessellationDomainOriginStateCreateInfo {
22143    /// Start building this struct; `s_type` is already set to the correct variant.
22144    #[inline]
22145    pub fn builder<'a>() -> PipelineTessellationDomainOriginStateCreateInfoBuilder<'a> {
22146        PipelineTessellationDomainOriginStateCreateInfoBuilder {
22147            inner: PipelineTessellationDomainOriginStateCreateInfo {
22148                s_type: StructureType::from_raw(1000117003i32),
22149                ..Default::default()
22150            },
22151            _marker: core::marker::PhantomData,
22152        }
22153    }
22154}
22155impl<'a> PipelineTessellationDomainOriginStateCreateInfoBuilder<'a> {
22156    #[inline]
22157    pub fn domain_origin(mut self, value: TessellationDomainOrigin) -> Self {
22158        self.inner.domain_origin = value;
22159        self
22160    }
22161    ///Prepend a struct to the pNext chain. See [`PipelineTessellationDomainOriginStateCreateInfo`]'s **Extended By** section for valid types.
22162    #[inline]
22163    pub fn push_next<T: ExtendsPipelineTessellationDomainOriginStateCreateInfo>(
22164        mut self,
22165        next: &'a mut T,
22166    ) -> Self {
22167        unsafe {
22168            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
22169            (*next_ptr).p_next = self.inner.p_next as *mut _;
22170            self.inner.p_next = <*mut BaseOutStructure>::cast::<
22171                core::ffi::c_void,
22172            >(next_ptr) as *const _;
22173        }
22174        self
22175    }
22176}
22177impl<'a> core::ops::Deref
22178for PipelineTessellationDomainOriginStateCreateInfoBuilder<'a> {
22179    type Target = PipelineTessellationDomainOriginStateCreateInfo;
22180    #[inline]
22181    fn deref(&self) -> &Self::Target {
22182        &self.inner
22183    }
22184}
22185impl<'a> core::ops::DerefMut
22186for PipelineTessellationDomainOriginStateCreateInfoBuilder<'a> {
22187    #[inline]
22188    fn deref_mut(&mut self) -> &mut Self::Target {
22189        &mut self.inner
22190    }
22191}
22192///Builder for [`SamplerYcbcrConversionInfo`] with lifetime-tied pNext safety.
22193pub struct SamplerYcbcrConversionInfoBuilder<'a> {
22194    inner: SamplerYcbcrConversionInfo,
22195    _marker: core::marker::PhantomData<&'a ()>,
22196}
22197impl SamplerYcbcrConversionInfo {
22198    /// Start building this struct; `s_type` is already set to the correct variant.
22199    #[inline]
22200    pub fn builder<'a>() -> SamplerYcbcrConversionInfoBuilder<'a> {
22201        SamplerYcbcrConversionInfoBuilder {
22202            inner: SamplerYcbcrConversionInfo {
22203                s_type: StructureType::from_raw(1000156001i32),
22204                ..Default::default()
22205            },
22206            _marker: core::marker::PhantomData,
22207        }
22208    }
22209}
22210impl<'a> SamplerYcbcrConversionInfoBuilder<'a> {
22211    #[inline]
22212    pub fn conversion(mut self, value: SamplerYcbcrConversion) -> Self {
22213        self.inner.conversion = value;
22214        self
22215    }
22216    ///Prepend a struct to the pNext chain. See [`SamplerYcbcrConversionInfo`]'s **Extended By** section for valid types.
22217    #[inline]
22218    pub fn push_next<T: ExtendsSamplerYcbcrConversionInfo>(
22219        mut self,
22220        next: &'a mut T,
22221    ) -> Self {
22222        unsafe {
22223            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
22224            (*next_ptr).p_next = self.inner.p_next as *mut _;
22225            self.inner.p_next = <*mut BaseOutStructure>::cast::<
22226                core::ffi::c_void,
22227            >(next_ptr) as *const _;
22228        }
22229        self
22230    }
22231}
22232impl<'a> core::ops::Deref for SamplerYcbcrConversionInfoBuilder<'a> {
22233    type Target = SamplerYcbcrConversionInfo;
22234    #[inline]
22235    fn deref(&self) -> &Self::Target {
22236        &self.inner
22237    }
22238}
22239impl<'a> core::ops::DerefMut for SamplerYcbcrConversionInfoBuilder<'a> {
22240    #[inline]
22241    fn deref_mut(&mut self) -> &mut Self::Target {
22242        &mut self.inner
22243    }
22244}
22245///Builder for [`SamplerYcbcrConversionCreateInfo`] with lifetime-tied pNext safety.
22246pub struct SamplerYcbcrConversionCreateInfoBuilder<'a> {
22247    inner: SamplerYcbcrConversionCreateInfo,
22248    _marker: core::marker::PhantomData<&'a ()>,
22249}
22250impl SamplerYcbcrConversionCreateInfo {
22251    /// Start building this struct; `s_type` is already set to the correct variant.
22252    #[inline]
22253    pub fn builder<'a>() -> SamplerYcbcrConversionCreateInfoBuilder<'a> {
22254        SamplerYcbcrConversionCreateInfoBuilder {
22255            inner: SamplerYcbcrConversionCreateInfo {
22256                s_type: StructureType::from_raw(1000156000i32),
22257                ..Default::default()
22258            },
22259            _marker: core::marker::PhantomData,
22260        }
22261    }
22262}
22263impl<'a> SamplerYcbcrConversionCreateInfoBuilder<'a> {
22264    #[inline]
22265    pub fn format(mut self, value: Format) -> Self {
22266        self.inner.format = value;
22267        self
22268    }
22269    #[inline]
22270    pub fn ycbcr_model(mut self, value: SamplerYcbcrModelConversion) -> Self {
22271        self.inner.ycbcr_model = value;
22272        self
22273    }
22274    #[inline]
22275    pub fn ycbcr_range(mut self, value: SamplerYcbcrRange) -> Self {
22276        self.inner.ycbcr_range = value;
22277        self
22278    }
22279    #[inline]
22280    pub fn components(mut self, value: ComponentMapping) -> Self {
22281        self.inner.components = value;
22282        self
22283    }
22284    #[inline]
22285    pub fn x_chroma_offset(mut self, value: ChromaLocation) -> Self {
22286        self.inner.x_chroma_offset = value;
22287        self
22288    }
22289    #[inline]
22290    pub fn y_chroma_offset(mut self, value: ChromaLocation) -> Self {
22291        self.inner.y_chroma_offset = value;
22292        self
22293    }
22294    #[inline]
22295    pub fn chroma_filter(mut self, value: Filter) -> Self {
22296        self.inner.chroma_filter = value;
22297        self
22298    }
22299    #[inline]
22300    pub fn force_explicit_reconstruction(mut self, value: bool) -> Self {
22301        self.inner.force_explicit_reconstruction = value as u32;
22302        self
22303    }
22304    ///Prepend a struct to the pNext chain. See [`SamplerYcbcrConversionCreateInfo`]'s **Extended By** section for valid types.
22305    #[inline]
22306    pub fn push_next<T: ExtendsSamplerYcbcrConversionCreateInfo>(
22307        mut self,
22308        next: &'a mut T,
22309    ) -> Self {
22310        unsafe {
22311            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
22312            (*next_ptr).p_next = self.inner.p_next as *mut _;
22313            self.inner.p_next = <*mut BaseOutStructure>::cast::<
22314                core::ffi::c_void,
22315            >(next_ptr) as *const _;
22316        }
22317        self
22318    }
22319}
22320impl<'a> core::ops::Deref for SamplerYcbcrConversionCreateInfoBuilder<'a> {
22321    type Target = SamplerYcbcrConversionCreateInfo;
22322    #[inline]
22323    fn deref(&self) -> &Self::Target {
22324        &self.inner
22325    }
22326}
22327impl<'a> core::ops::DerefMut for SamplerYcbcrConversionCreateInfoBuilder<'a> {
22328    #[inline]
22329    fn deref_mut(&mut self) -> &mut Self::Target {
22330        &mut self.inner
22331    }
22332}
22333///Builder for [`BindImagePlaneMemoryInfo`] with lifetime-tied pNext safety.
22334pub struct BindImagePlaneMemoryInfoBuilder<'a> {
22335    inner: BindImagePlaneMemoryInfo,
22336    _marker: core::marker::PhantomData<&'a ()>,
22337}
22338impl BindImagePlaneMemoryInfo {
22339    /// Start building this struct; `s_type` is already set to the correct variant.
22340    #[inline]
22341    pub fn builder<'a>() -> BindImagePlaneMemoryInfoBuilder<'a> {
22342        BindImagePlaneMemoryInfoBuilder {
22343            inner: BindImagePlaneMemoryInfo {
22344                s_type: StructureType::from_raw(1000156002i32),
22345                ..Default::default()
22346            },
22347            _marker: core::marker::PhantomData,
22348        }
22349    }
22350}
22351impl<'a> BindImagePlaneMemoryInfoBuilder<'a> {
22352    #[inline]
22353    pub fn plane_aspect(mut self, value: ImageAspectFlagBits) -> Self {
22354        self.inner.plane_aspect = value;
22355        self
22356    }
22357    ///Prepend a struct to the pNext chain. See [`BindImagePlaneMemoryInfo`]'s **Extended By** section for valid types.
22358    #[inline]
22359    pub fn push_next<T: ExtendsBindImagePlaneMemoryInfo>(
22360        mut self,
22361        next: &'a mut T,
22362    ) -> Self {
22363        unsafe {
22364            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
22365            (*next_ptr).p_next = self.inner.p_next as *mut _;
22366            self.inner.p_next = <*mut BaseOutStructure>::cast::<
22367                core::ffi::c_void,
22368            >(next_ptr) as *const _;
22369        }
22370        self
22371    }
22372}
22373impl<'a> core::ops::Deref for BindImagePlaneMemoryInfoBuilder<'a> {
22374    type Target = BindImagePlaneMemoryInfo;
22375    #[inline]
22376    fn deref(&self) -> &Self::Target {
22377        &self.inner
22378    }
22379}
22380impl<'a> core::ops::DerefMut for BindImagePlaneMemoryInfoBuilder<'a> {
22381    #[inline]
22382    fn deref_mut(&mut self) -> &mut Self::Target {
22383        &mut self.inner
22384    }
22385}
22386///Builder for [`ImagePlaneMemoryRequirementsInfo`] with lifetime-tied pNext safety.
22387pub struct ImagePlaneMemoryRequirementsInfoBuilder<'a> {
22388    inner: ImagePlaneMemoryRequirementsInfo,
22389    _marker: core::marker::PhantomData<&'a ()>,
22390}
22391impl ImagePlaneMemoryRequirementsInfo {
22392    /// Start building this struct; `s_type` is already set to the correct variant.
22393    #[inline]
22394    pub fn builder<'a>() -> ImagePlaneMemoryRequirementsInfoBuilder<'a> {
22395        ImagePlaneMemoryRequirementsInfoBuilder {
22396            inner: ImagePlaneMemoryRequirementsInfo {
22397                s_type: StructureType::from_raw(1000156003i32),
22398                ..Default::default()
22399            },
22400            _marker: core::marker::PhantomData,
22401        }
22402    }
22403}
22404impl<'a> ImagePlaneMemoryRequirementsInfoBuilder<'a> {
22405    #[inline]
22406    pub fn plane_aspect(mut self, value: ImageAspectFlagBits) -> Self {
22407        self.inner.plane_aspect = value;
22408        self
22409    }
22410    ///Prepend a struct to the pNext chain. See [`ImagePlaneMemoryRequirementsInfo`]'s **Extended By** section for valid types.
22411    #[inline]
22412    pub fn push_next<T: ExtendsImagePlaneMemoryRequirementsInfo>(
22413        mut self,
22414        next: &'a mut T,
22415    ) -> Self {
22416        unsafe {
22417            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
22418            (*next_ptr).p_next = self.inner.p_next as *mut _;
22419            self.inner.p_next = <*mut BaseOutStructure>::cast::<
22420                core::ffi::c_void,
22421            >(next_ptr) as *const _;
22422        }
22423        self
22424    }
22425}
22426impl<'a> core::ops::Deref for ImagePlaneMemoryRequirementsInfoBuilder<'a> {
22427    type Target = ImagePlaneMemoryRequirementsInfo;
22428    #[inline]
22429    fn deref(&self) -> &Self::Target {
22430        &self.inner
22431    }
22432}
22433impl<'a> core::ops::DerefMut for ImagePlaneMemoryRequirementsInfoBuilder<'a> {
22434    #[inline]
22435    fn deref_mut(&mut self) -> &mut Self::Target {
22436        &mut self.inner
22437    }
22438}
22439///Builder for [`PhysicalDeviceSamplerYcbcrConversionFeatures`] with lifetime-tied pNext safety.
22440pub struct PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder<'a> {
22441    inner: PhysicalDeviceSamplerYcbcrConversionFeatures,
22442    _marker: core::marker::PhantomData<&'a ()>,
22443}
22444impl PhysicalDeviceSamplerYcbcrConversionFeatures {
22445    /// Start building this struct; `s_type` is already set to the correct variant.
22446    #[inline]
22447    pub fn builder<'a>() -> PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder<'a> {
22448        PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder {
22449            inner: PhysicalDeviceSamplerYcbcrConversionFeatures {
22450                s_type: StructureType::from_raw(1000156004i32),
22451                ..Default::default()
22452            },
22453            _marker: core::marker::PhantomData,
22454        }
22455    }
22456}
22457impl<'a> PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder<'a> {
22458    #[inline]
22459    pub fn sampler_ycbcr_conversion(mut self, value: bool) -> Self {
22460        self.inner.sampler_ycbcr_conversion = value as u32;
22461        self
22462    }
22463    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceSamplerYcbcrConversionFeatures`]'s **Extended By** section for valid types.
22464    #[inline]
22465    pub fn push_next<T: ExtendsPhysicalDeviceSamplerYcbcrConversionFeatures>(
22466        mut self,
22467        next: &'a mut T,
22468    ) -> Self {
22469        unsafe {
22470            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
22471            (*next_ptr).p_next = self.inner.p_next as *mut _;
22472            self.inner.p_next = <*mut BaseOutStructure>::cast::<
22473                core::ffi::c_void,
22474            >(next_ptr);
22475        }
22476        self
22477    }
22478}
22479impl<'a> core::ops::Deref for PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder<'a> {
22480    type Target = PhysicalDeviceSamplerYcbcrConversionFeatures;
22481    #[inline]
22482    fn deref(&self) -> &Self::Target {
22483        &self.inner
22484    }
22485}
22486impl<'a> core::ops::DerefMut
22487for PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder<'a> {
22488    #[inline]
22489    fn deref_mut(&mut self) -> &mut Self::Target {
22490        &mut self.inner
22491    }
22492}
22493///Builder for [`SamplerYcbcrConversionImageFormatProperties`] with lifetime-tied pNext safety.
22494pub struct SamplerYcbcrConversionImageFormatPropertiesBuilder<'a> {
22495    inner: SamplerYcbcrConversionImageFormatProperties,
22496    _marker: core::marker::PhantomData<&'a ()>,
22497}
22498impl SamplerYcbcrConversionImageFormatProperties {
22499    /// Start building this struct; `s_type` is already set to the correct variant.
22500    #[inline]
22501    pub fn builder<'a>() -> SamplerYcbcrConversionImageFormatPropertiesBuilder<'a> {
22502        SamplerYcbcrConversionImageFormatPropertiesBuilder {
22503            inner: SamplerYcbcrConversionImageFormatProperties {
22504                s_type: StructureType::from_raw(1000156005i32),
22505                ..Default::default()
22506            },
22507            _marker: core::marker::PhantomData,
22508        }
22509    }
22510}
22511impl<'a> SamplerYcbcrConversionImageFormatPropertiesBuilder<'a> {
22512    #[inline]
22513    pub fn combined_image_sampler_descriptor_count(mut self, value: u32) -> Self {
22514        self.inner.combined_image_sampler_descriptor_count = value;
22515        self
22516    }
22517}
22518impl<'a> core::ops::Deref for SamplerYcbcrConversionImageFormatPropertiesBuilder<'a> {
22519    type Target = SamplerYcbcrConversionImageFormatProperties;
22520    #[inline]
22521    fn deref(&self) -> &Self::Target {
22522        &self.inner
22523    }
22524}
22525impl<'a> core::ops::DerefMut for SamplerYcbcrConversionImageFormatPropertiesBuilder<'a> {
22526    #[inline]
22527    fn deref_mut(&mut self) -> &mut Self::Target {
22528        &mut self.inner
22529    }
22530}
22531///Builder for [`TextureLODGatherFormatPropertiesAMD`] with lifetime-tied pNext safety.
22532pub struct TextureLODGatherFormatPropertiesAMDBuilder<'a> {
22533    inner: TextureLODGatherFormatPropertiesAMD,
22534    _marker: core::marker::PhantomData<&'a ()>,
22535}
22536impl TextureLODGatherFormatPropertiesAMD {
22537    /// Start building this struct; `s_type` is already set to the correct variant.
22538    #[inline]
22539    pub fn builder<'a>() -> TextureLODGatherFormatPropertiesAMDBuilder<'a> {
22540        TextureLODGatherFormatPropertiesAMDBuilder {
22541            inner: TextureLODGatherFormatPropertiesAMD {
22542                s_type: StructureType::from_raw(1000041000i32),
22543                ..Default::default()
22544            },
22545            _marker: core::marker::PhantomData,
22546        }
22547    }
22548}
22549impl<'a> TextureLODGatherFormatPropertiesAMDBuilder<'a> {
22550    #[inline]
22551    pub fn supports_texture_gather_lod_bias_amd(mut self, value: bool) -> Self {
22552        self.inner.supports_texture_gather_lod_bias_amd = value as u32;
22553        self
22554    }
22555}
22556impl<'a> core::ops::Deref for TextureLODGatherFormatPropertiesAMDBuilder<'a> {
22557    type Target = TextureLODGatherFormatPropertiesAMD;
22558    #[inline]
22559    fn deref(&self) -> &Self::Target {
22560        &self.inner
22561    }
22562}
22563impl<'a> core::ops::DerefMut for TextureLODGatherFormatPropertiesAMDBuilder<'a> {
22564    #[inline]
22565    fn deref_mut(&mut self) -> &mut Self::Target {
22566        &mut self.inner
22567    }
22568}
22569///Builder for [`ConditionalRenderingBeginInfoEXT`] with lifetime-tied pNext safety.
22570pub struct ConditionalRenderingBeginInfoEXTBuilder<'a> {
22571    inner: ConditionalRenderingBeginInfoEXT,
22572    _marker: core::marker::PhantomData<&'a ()>,
22573}
22574impl ConditionalRenderingBeginInfoEXT {
22575    /// Start building this struct; `s_type` is already set to the correct variant.
22576    #[inline]
22577    pub fn builder<'a>() -> ConditionalRenderingBeginInfoEXTBuilder<'a> {
22578        ConditionalRenderingBeginInfoEXTBuilder {
22579            inner: ConditionalRenderingBeginInfoEXT {
22580                s_type: StructureType::from_raw(1000081002i32),
22581                ..Default::default()
22582            },
22583            _marker: core::marker::PhantomData,
22584        }
22585    }
22586}
22587impl<'a> ConditionalRenderingBeginInfoEXTBuilder<'a> {
22588    #[inline]
22589    pub fn buffer(mut self, value: Buffer) -> Self {
22590        self.inner.buffer = value;
22591        self
22592    }
22593    #[inline]
22594    pub fn offset(mut self, value: u64) -> Self {
22595        self.inner.offset = value;
22596        self
22597    }
22598    #[inline]
22599    pub fn flags(mut self, value: ConditionalRenderingFlagsEXT) -> Self {
22600        self.inner.flags = value;
22601        self
22602    }
22603    ///Prepend a struct to the pNext chain. See [`ConditionalRenderingBeginInfoEXT`]'s **Extended By** section for valid types.
22604    #[inline]
22605    pub fn push_next<T: ExtendsConditionalRenderingBeginInfoEXT>(
22606        mut self,
22607        next: &'a mut T,
22608    ) -> Self {
22609        unsafe {
22610            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
22611            (*next_ptr).p_next = self.inner.p_next as *mut _;
22612            self.inner.p_next = <*mut BaseOutStructure>::cast::<
22613                core::ffi::c_void,
22614            >(next_ptr) as *const _;
22615        }
22616        self
22617    }
22618}
22619impl<'a> core::ops::Deref for ConditionalRenderingBeginInfoEXTBuilder<'a> {
22620    type Target = ConditionalRenderingBeginInfoEXT;
22621    #[inline]
22622    fn deref(&self) -> &Self::Target {
22623        &self.inner
22624    }
22625}
22626impl<'a> core::ops::DerefMut for ConditionalRenderingBeginInfoEXTBuilder<'a> {
22627    #[inline]
22628    fn deref_mut(&mut self) -> &mut Self::Target {
22629        &mut self.inner
22630    }
22631}
22632///Builder for [`ProtectedSubmitInfo`] with lifetime-tied pNext safety.
22633pub struct ProtectedSubmitInfoBuilder<'a> {
22634    inner: ProtectedSubmitInfo,
22635    _marker: core::marker::PhantomData<&'a ()>,
22636}
22637impl ProtectedSubmitInfo {
22638    /// Start building this struct; `s_type` is already set to the correct variant.
22639    #[inline]
22640    pub fn builder<'a>() -> ProtectedSubmitInfoBuilder<'a> {
22641        ProtectedSubmitInfoBuilder {
22642            inner: ProtectedSubmitInfo {
22643                s_type: StructureType::from_raw(1000145000i32),
22644                ..Default::default()
22645            },
22646            _marker: core::marker::PhantomData,
22647        }
22648    }
22649}
22650impl<'a> ProtectedSubmitInfoBuilder<'a> {
22651    #[inline]
22652    pub fn protected_submit(mut self, value: bool) -> Self {
22653        self.inner.protected_submit = value as u32;
22654        self
22655    }
22656    ///Prepend a struct to the pNext chain. See [`ProtectedSubmitInfo`]'s **Extended By** section for valid types.
22657    #[inline]
22658    pub fn push_next<T: ExtendsProtectedSubmitInfo>(mut self, next: &'a mut T) -> Self {
22659        unsafe {
22660            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
22661            (*next_ptr).p_next = self.inner.p_next as *mut _;
22662            self.inner.p_next = <*mut BaseOutStructure>::cast::<
22663                core::ffi::c_void,
22664            >(next_ptr) as *const _;
22665        }
22666        self
22667    }
22668}
22669impl<'a> core::ops::Deref for ProtectedSubmitInfoBuilder<'a> {
22670    type Target = ProtectedSubmitInfo;
22671    #[inline]
22672    fn deref(&self) -> &Self::Target {
22673        &self.inner
22674    }
22675}
22676impl<'a> core::ops::DerefMut for ProtectedSubmitInfoBuilder<'a> {
22677    #[inline]
22678    fn deref_mut(&mut self) -> &mut Self::Target {
22679        &mut self.inner
22680    }
22681}
22682///Builder for [`PhysicalDeviceProtectedMemoryFeatures`] with lifetime-tied pNext safety.
22683pub struct PhysicalDeviceProtectedMemoryFeaturesBuilder<'a> {
22684    inner: PhysicalDeviceProtectedMemoryFeatures,
22685    _marker: core::marker::PhantomData<&'a ()>,
22686}
22687impl PhysicalDeviceProtectedMemoryFeatures {
22688    /// Start building this struct; `s_type` is already set to the correct variant.
22689    #[inline]
22690    pub fn builder<'a>() -> PhysicalDeviceProtectedMemoryFeaturesBuilder<'a> {
22691        PhysicalDeviceProtectedMemoryFeaturesBuilder {
22692            inner: PhysicalDeviceProtectedMemoryFeatures {
22693                s_type: StructureType::from_raw(1000145001i32),
22694                ..Default::default()
22695            },
22696            _marker: core::marker::PhantomData,
22697        }
22698    }
22699}
22700impl<'a> PhysicalDeviceProtectedMemoryFeaturesBuilder<'a> {
22701    #[inline]
22702    pub fn protected_memory(mut self, value: bool) -> Self {
22703        self.inner.protected_memory = value as u32;
22704        self
22705    }
22706    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceProtectedMemoryFeatures`]'s **Extended By** section for valid types.
22707    #[inline]
22708    pub fn push_next<T: ExtendsPhysicalDeviceProtectedMemoryFeatures>(
22709        mut self,
22710        next: &'a mut T,
22711    ) -> Self {
22712        unsafe {
22713            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
22714            (*next_ptr).p_next = self.inner.p_next as *mut _;
22715            self.inner.p_next = <*mut BaseOutStructure>::cast::<
22716                core::ffi::c_void,
22717            >(next_ptr);
22718        }
22719        self
22720    }
22721}
22722impl<'a> core::ops::Deref for PhysicalDeviceProtectedMemoryFeaturesBuilder<'a> {
22723    type Target = PhysicalDeviceProtectedMemoryFeatures;
22724    #[inline]
22725    fn deref(&self) -> &Self::Target {
22726        &self.inner
22727    }
22728}
22729impl<'a> core::ops::DerefMut for PhysicalDeviceProtectedMemoryFeaturesBuilder<'a> {
22730    #[inline]
22731    fn deref_mut(&mut self) -> &mut Self::Target {
22732        &mut self.inner
22733    }
22734}
22735///Builder for [`PhysicalDeviceProtectedMemoryProperties`] with lifetime-tied pNext safety.
22736pub struct PhysicalDeviceProtectedMemoryPropertiesBuilder<'a> {
22737    inner: PhysicalDeviceProtectedMemoryProperties,
22738    _marker: core::marker::PhantomData<&'a ()>,
22739}
22740impl PhysicalDeviceProtectedMemoryProperties {
22741    /// Start building this struct; `s_type` is already set to the correct variant.
22742    #[inline]
22743    pub fn builder<'a>() -> PhysicalDeviceProtectedMemoryPropertiesBuilder<'a> {
22744        PhysicalDeviceProtectedMemoryPropertiesBuilder {
22745            inner: PhysicalDeviceProtectedMemoryProperties {
22746                s_type: StructureType::from_raw(1000145002i32),
22747                ..Default::default()
22748            },
22749            _marker: core::marker::PhantomData,
22750        }
22751    }
22752}
22753impl<'a> PhysicalDeviceProtectedMemoryPropertiesBuilder<'a> {
22754    #[inline]
22755    pub fn protected_no_fault(mut self, value: bool) -> Self {
22756        self.inner.protected_no_fault = value as u32;
22757        self
22758    }
22759}
22760impl<'a> core::ops::Deref for PhysicalDeviceProtectedMemoryPropertiesBuilder<'a> {
22761    type Target = PhysicalDeviceProtectedMemoryProperties;
22762    #[inline]
22763    fn deref(&self) -> &Self::Target {
22764        &self.inner
22765    }
22766}
22767impl<'a> core::ops::DerefMut for PhysicalDeviceProtectedMemoryPropertiesBuilder<'a> {
22768    #[inline]
22769    fn deref_mut(&mut self) -> &mut Self::Target {
22770        &mut self.inner
22771    }
22772}
22773///Builder for [`DeviceQueueInfo2`] with lifetime-tied pNext safety.
22774pub struct DeviceQueueInfo2Builder<'a> {
22775    inner: DeviceQueueInfo2,
22776    _marker: core::marker::PhantomData<&'a ()>,
22777}
22778impl DeviceQueueInfo2 {
22779    /// Start building this struct; `s_type` is already set to the correct variant.
22780    #[inline]
22781    pub fn builder<'a>() -> DeviceQueueInfo2Builder<'a> {
22782        DeviceQueueInfo2Builder {
22783            inner: DeviceQueueInfo2 {
22784                s_type: StructureType::from_raw(1000145003i32),
22785                ..Default::default()
22786            },
22787            _marker: core::marker::PhantomData,
22788        }
22789    }
22790}
22791impl<'a> DeviceQueueInfo2Builder<'a> {
22792    #[inline]
22793    pub fn flags(mut self, value: DeviceQueueCreateFlags) -> Self {
22794        self.inner.flags = value;
22795        self
22796    }
22797    #[inline]
22798    pub fn queue_family_index(mut self, value: u32) -> Self {
22799        self.inner.queue_family_index = value;
22800        self
22801    }
22802    #[inline]
22803    pub fn queue_index(mut self, value: u32) -> Self {
22804        self.inner.queue_index = value;
22805        self
22806    }
22807    ///Prepend a struct to the pNext chain. See [`DeviceQueueInfo2`]'s **Extended By** section for valid types.
22808    #[inline]
22809    pub fn push_next<T: ExtendsDeviceQueueInfo2>(mut self, next: &'a mut T) -> Self {
22810        unsafe {
22811            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
22812            (*next_ptr).p_next = self.inner.p_next as *mut _;
22813            self.inner.p_next = <*mut BaseOutStructure>::cast::<
22814                core::ffi::c_void,
22815            >(next_ptr) as *const _;
22816        }
22817        self
22818    }
22819}
22820impl<'a> core::ops::Deref for DeviceQueueInfo2Builder<'a> {
22821    type Target = DeviceQueueInfo2;
22822    #[inline]
22823    fn deref(&self) -> &Self::Target {
22824        &self.inner
22825    }
22826}
22827impl<'a> core::ops::DerefMut for DeviceQueueInfo2Builder<'a> {
22828    #[inline]
22829    fn deref_mut(&mut self) -> &mut Self::Target {
22830        &mut self.inner
22831    }
22832}
22833///Builder for [`PipelineCoverageToColorStateCreateInfoNV`] with lifetime-tied pNext safety.
22834pub struct PipelineCoverageToColorStateCreateInfoNVBuilder<'a> {
22835    inner: PipelineCoverageToColorStateCreateInfoNV,
22836    _marker: core::marker::PhantomData<&'a ()>,
22837}
22838impl PipelineCoverageToColorStateCreateInfoNV {
22839    /// Start building this struct; `s_type` is already set to the correct variant.
22840    #[inline]
22841    pub fn builder<'a>() -> PipelineCoverageToColorStateCreateInfoNVBuilder<'a> {
22842        PipelineCoverageToColorStateCreateInfoNVBuilder {
22843            inner: PipelineCoverageToColorStateCreateInfoNV {
22844                s_type: StructureType::from_raw(1000149000i32),
22845                ..Default::default()
22846            },
22847            _marker: core::marker::PhantomData,
22848        }
22849    }
22850}
22851impl<'a> PipelineCoverageToColorStateCreateInfoNVBuilder<'a> {
22852    #[inline]
22853    pub fn flags(mut self, value: PipelineCoverageToColorStateCreateFlagsNV) -> Self {
22854        self.inner.flags = value;
22855        self
22856    }
22857    #[inline]
22858    pub fn coverage_to_color_enable(mut self, value: bool) -> Self {
22859        self.inner.coverage_to_color_enable = value as u32;
22860        self
22861    }
22862    #[inline]
22863    pub fn coverage_to_color_location(mut self, value: u32) -> Self {
22864        self.inner.coverage_to_color_location = value;
22865        self
22866    }
22867    ///Prepend a struct to the pNext chain. See [`PipelineCoverageToColorStateCreateInfoNV`]'s **Extended By** section for valid types.
22868    #[inline]
22869    pub fn push_next<T: ExtendsPipelineCoverageToColorStateCreateInfoNV>(
22870        mut self,
22871        next: &'a mut T,
22872    ) -> Self {
22873        unsafe {
22874            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
22875            (*next_ptr).p_next = self.inner.p_next as *mut _;
22876            self.inner.p_next = <*mut BaseOutStructure>::cast::<
22877                core::ffi::c_void,
22878            >(next_ptr) as *const _;
22879        }
22880        self
22881    }
22882}
22883impl<'a> core::ops::Deref for PipelineCoverageToColorStateCreateInfoNVBuilder<'a> {
22884    type Target = PipelineCoverageToColorStateCreateInfoNV;
22885    #[inline]
22886    fn deref(&self) -> &Self::Target {
22887        &self.inner
22888    }
22889}
22890impl<'a> core::ops::DerefMut for PipelineCoverageToColorStateCreateInfoNVBuilder<'a> {
22891    #[inline]
22892    fn deref_mut(&mut self) -> &mut Self::Target {
22893        &mut self.inner
22894    }
22895}
22896///Builder for [`PhysicalDeviceSamplerFilterMinmaxProperties`] with lifetime-tied pNext safety.
22897pub struct PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder<'a> {
22898    inner: PhysicalDeviceSamplerFilterMinmaxProperties,
22899    _marker: core::marker::PhantomData<&'a ()>,
22900}
22901impl PhysicalDeviceSamplerFilterMinmaxProperties {
22902    /// Start building this struct; `s_type` is already set to the correct variant.
22903    #[inline]
22904    pub fn builder<'a>() -> PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder<'a> {
22905        PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder {
22906            inner: PhysicalDeviceSamplerFilterMinmaxProperties {
22907                s_type: StructureType::from_raw(1000130000i32),
22908                ..Default::default()
22909            },
22910            _marker: core::marker::PhantomData,
22911        }
22912    }
22913}
22914impl<'a> PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder<'a> {
22915    #[inline]
22916    pub fn filter_minmax_single_component_formats(mut self, value: bool) -> Self {
22917        self.inner.filter_minmax_single_component_formats = value as u32;
22918        self
22919    }
22920    #[inline]
22921    pub fn filter_minmax_image_component_mapping(mut self, value: bool) -> Self {
22922        self.inner.filter_minmax_image_component_mapping = value as u32;
22923        self
22924    }
22925}
22926impl<'a> core::ops::Deref for PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder<'a> {
22927    type Target = PhysicalDeviceSamplerFilterMinmaxProperties;
22928    #[inline]
22929    fn deref(&self) -> &Self::Target {
22930        &self.inner
22931    }
22932}
22933impl<'a> core::ops::DerefMut for PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder<'a> {
22934    #[inline]
22935    fn deref_mut(&mut self) -> &mut Self::Target {
22936        &mut self.inner
22937    }
22938}
22939///Builder for [`SampleLocationEXT`].
22940pub struct SampleLocationEXTBuilder {
22941    inner: SampleLocationEXT,
22942}
22943impl SampleLocationEXT {
22944    /// Start building this struct.
22945    #[inline]
22946    pub fn builder() -> SampleLocationEXTBuilder {
22947        SampleLocationEXTBuilder {
22948            inner: SampleLocationEXT {
22949                ..Default::default()
22950            },
22951        }
22952    }
22953}
22954impl SampleLocationEXTBuilder {
22955    #[inline]
22956    pub fn x(mut self, value: f32) -> Self {
22957        self.inner.x = value;
22958        self
22959    }
22960    #[inline]
22961    pub fn y(mut self, value: f32) -> Self {
22962        self.inner.y = value;
22963        self
22964    }
22965}
22966impl core::ops::Deref for SampleLocationEXTBuilder {
22967    type Target = SampleLocationEXT;
22968    #[inline]
22969    fn deref(&self) -> &Self::Target {
22970        &self.inner
22971    }
22972}
22973impl core::ops::DerefMut for SampleLocationEXTBuilder {
22974    #[inline]
22975    fn deref_mut(&mut self) -> &mut Self::Target {
22976        &mut self.inner
22977    }
22978}
22979///Builder for [`SampleLocationsInfoEXT`] with lifetime-tied pNext safety.
22980pub struct SampleLocationsInfoEXTBuilder<'a> {
22981    inner: SampleLocationsInfoEXT,
22982    _marker: core::marker::PhantomData<&'a ()>,
22983}
22984impl SampleLocationsInfoEXT {
22985    /// Start building this struct; `s_type` is already set to the correct variant.
22986    #[inline]
22987    pub fn builder<'a>() -> SampleLocationsInfoEXTBuilder<'a> {
22988        SampleLocationsInfoEXTBuilder {
22989            inner: SampleLocationsInfoEXT {
22990                s_type: StructureType::from_raw(1000143000i32),
22991                ..Default::default()
22992            },
22993            _marker: core::marker::PhantomData,
22994        }
22995    }
22996}
22997impl<'a> SampleLocationsInfoEXTBuilder<'a> {
22998    #[inline]
22999    pub fn sample_locations_per_pixel(mut self, value: SampleCountFlagBits) -> Self {
23000        self.inner.sample_locations_per_pixel = value;
23001        self
23002    }
23003    #[inline]
23004    pub fn sample_location_grid_size(mut self, value: Extent2D) -> Self {
23005        self.inner.sample_location_grid_size = value;
23006        self
23007    }
23008    #[inline]
23009    pub fn sample_locations(mut self, slice: &'a [SampleLocationEXT]) -> Self {
23010        self.inner.sample_locations_count = slice.len() as u32;
23011        self.inner.p_sample_locations = slice.as_ptr();
23012        self
23013    }
23014    ///Prepend a struct to the pNext chain. See [`SampleLocationsInfoEXT`]'s **Extended By** section for valid types.
23015    #[inline]
23016    pub fn push_next<T: ExtendsSampleLocationsInfoEXT>(
23017        mut self,
23018        next: &'a mut T,
23019    ) -> Self {
23020        unsafe {
23021            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
23022            (*next_ptr).p_next = self.inner.p_next as *mut _;
23023            self.inner.p_next = <*mut BaseOutStructure>::cast::<
23024                core::ffi::c_void,
23025            >(next_ptr) as *const _;
23026        }
23027        self
23028    }
23029}
23030impl<'a> core::ops::Deref for SampleLocationsInfoEXTBuilder<'a> {
23031    type Target = SampleLocationsInfoEXT;
23032    #[inline]
23033    fn deref(&self) -> &Self::Target {
23034        &self.inner
23035    }
23036}
23037impl<'a> core::ops::DerefMut for SampleLocationsInfoEXTBuilder<'a> {
23038    #[inline]
23039    fn deref_mut(&mut self) -> &mut Self::Target {
23040        &mut self.inner
23041    }
23042}
23043///Builder for [`AttachmentSampleLocationsEXT`].
23044pub struct AttachmentSampleLocationsEXTBuilder {
23045    inner: AttachmentSampleLocationsEXT,
23046}
23047impl AttachmentSampleLocationsEXT {
23048    /// Start building this struct.
23049    #[inline]
23050    pub fn builder() -> AttachmentSampleLocationsEXTBuilder {
23051        AttachmentSampleLocationsEXTBuilder {
23052            inner: AttachmentSampleLocationsEXT {
23053                ..Default::default()
23054            },
23055        }
23056    }
23057}
23058impl AttachmentSampleLocationsEXTBuilder {
23059    #[inline]
23060    pub fn attachment_index(mut self, value: u32) -> Self {
23061        self.inner.attachment_index = value;
23062        self
23063    }
23064    #[inline]
23065    pub fn sample_locations_info(mut self, value: SampleLocationsInfoEXT) -> Self {
23066        self.inner.sample_locations_info = value;
23067        self
23068    }
23069}
23070impl core::ops::Deref for AttachmentSampleLocationsEXTBuilder {
23071    type Target = AttachmentSampleLocationsEXT;
23072    #[inline]
23073    fn deref(&self) -> &Self::Target {
23074        &self.inner
23075    }
23076}
23077impl core::ops::DerefMut for AttachmentSampleLocationsEXTBuilder {
23078    #[inline]
23079    fn deref_mut(&mut self) -> &mut Self::Target {
23080        &mut self.inner
23081    }
23082}
23083///Builder for [`SubpassSampleLocationsEXT`].
23084pub struct SubpassSampleLocationsEXTBuilder {
23085    inner: SubpassSampleLocationsEXT,
23086}
23087impl SubpassSampleLocationsEXT {
23088    /// Start building this struct.
23089    #[inline]
23090    pub fn builder() -> SubpassSampleLocationsEXTBuilder {
23091        SubpassSampleLocationsEXTBuilder {
23092            inner: SubpassSampleLocationsEXT {
23093                ..Default::default()
23094            },
23095        }
23096    }
23097}
23098impl SubpassSampleLocationsEXTBuilder {
23099    #[inline]
23100    pub fn subpass_index(mut self, value: u32) -> Self {
23101        self.inner.subpass_index = value;
23102        self
23103    }
23104    #[inline]
23105    pub fn sample_locations_info(mut self, value: SampleLocationsInfoEXT) -> Self {
23106        self.inner.sample_locations_info = value;
23107        self
23108    }
23109}
23110impl core::ops::Deref for SubpassSampleLocationsEXTBuilder {
23111    type Target = SubpassSampleLocationsEXT;
23112    #[inline]
23113    fn deref(&self) -> &Self::Target {
23114        &self.inner
23115    }
23116}
23117impl core::ops::DerefMut for SubpassSampleLocationsEXTBuilder {
23118    #[inline]
23119    fn deref_mut(&mut self) -> &mut Self::Target {
23120        &mut self.inner
23121    }
23122}
23123///Builder for [`RenderPassSampleLocationsBeginInfoEXT`] with lifetime-tied pNext safety.
23124pub struct RenderPassSampleLocationsBeginInfoEXTBuilder<'a> {
23125    inner: RenderPassSampleLocationsBeginInfoEXT,
23126    _marker: core::marker::PhantomData<&'a ()>,
23127}
23128impl RenderPassSampleLocationsBeginInfoEXT {
23129    /// Start building this struct; `s_type` is already set to the correct variant.
23130    #[inline]
23131    pub fn builder<'a>() -> RenderPassSampleLocationsBeginInfoEXTBuilder<'a> {
23132        RenderPassSampleLocationsBeginInfoEXTBuilder {
23133            inner: RenderPassSampleLocationsBeginInfoEXT {
23134                s_type: StructureType::from_raw(1000143001i32),
23135                ..Default::default()
23136            },
23137            _marker: core::marker::PhantomData,
23138        }
23139    }
23140}
23141impl<'a> RenderPassSampleLocationsBeginInfoEXTBuilder<'a> {
23142    #[inline]
23143    pub fn attachment_initial_sample_locations(
23144        mut self,
23145        slice: &'a [AttachmentSampleLocationsEXT],
23146    ) -> Self {
23147        self.inner.attachment_initial_sample_locations_count = slice.len() as u32;
23148        self.inner.p_attachment_initial_sample_locations = slice.as_ptr();
23149        self
23150    }
23151    #[inline]
23152    pub fn post_subpass_sample_locations(
23153        mut self,
23154        slice: &'a [SubpassSampleLocationsEXT],
23155    ) -> Self {
23156        self.inner.post_subpass_sample_locations_count = slice.len() as u32;
23157        self.inner.p_post_subpass_sample_locations = slice.as_ptr();
23158        self
23159    }
23160    ///Prepend a struct to the pNext chain. See [`RenderPassSampleLocationsBeginInfoEXT`]'s **Extended By** section for valid types.
23161    #[inline]
23162    pub fn push_next<T: ExtendsRenderPassSampleLocationsBeginInfoEXT>(
23163        mut self,
23164        next: &'a mut T,
23165    ) -> Self {
23166        unsafe {
23167            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
23168            (*next_ptr).p_next = self.inner.p_next as *mut _;
23169            self.inner.p_next = <*mut BaseOutStructure>::cast::<
23170                core::ffi::c_void,
23171            >(next_ptr) as *const _;
23172        }
23173        self
23174    }
23175}
23176impl<'a> core::ops::Deref for RenderPassSampleLocationsBeginInfoEXTBuilder<'a> {
23177    type Target = RenderPassSampleLocationsBeginInfoEXT;
23178    #[inline]
23179    fn deref(&self) -> &Self::Target {
23180        &self.inner
23181    }
23182}
23183impl<'a> core::ops::DerefMut for RenderPassSampleLocationsBeginInfoEXTBuilder<'a> {
23184    #[inline]
23185    fn deref_mut(&mut self) -> &mut Self::Target {
23186        &mut self.inner
23187    }
23188}
23189///Builder for [`PipelineSampleLocationsStateCreateInfoEXT`] with lifetime-tied pNext safety.
23190pub struct PipelineSampleLocationsStateCreateInfoEXTBuilder<'a> {
23191    inner: PipelineSampleLocationsStateCreateInfoEXT,
23192    _marker: core::marker::PhantomData<&'a ()>,
23193}
23194impl PipelineSampleLocationsStateCreateInfoEXT {
23195    /// Start building this struct; `s_type` is already set to the correct variant.
23196    #[inline]
23197    pub fn builder<'a>() -> PipelineSampleLocationsStateCreateInfoEXTBuilder<'a> {
23198        PipelineSampleLocationsStateCreateInfoEXTBuilder {
23199            inner: PipelineSampleLocationsStateCreateInfoEXT {
23200                s_type: StructureType::from_raw(1000143002i32),
23201                ..Default::default()
23202            },
23203            _marker: core::marker::PhantomData,
23204        }
23205    }
23206}
23207impl<'a> PipelineSampleLocationsStateCreateInfoEXTBuilder<'a> {
23208    #[inline]
23209    pub fn sample_locations_enable(mut self, value: bool) -> Self {
23210        self.inner.sample_locations_enable = value as u32;
23211        self
23212    }
23213    #[inline]
23214    pub fn sample_locations_info(mut self, value: SampleLocationsInfoEXT) -> Self {
23215        self.inner.sample_locations_info = value;
23216        self
23217    }
23218    ///Prepend a struct to the pNext chain. See [`PipelineSampleLocationsStateCreateInfoEXT`]'s **Extended By** section for valid types.
23219    #[inline]
23220    pub fn push_next<T: ExtendsPipelineSampleLocationsStateCreateInfoEXT>(
23221        mut self,
23222        next: &'a mut T,
23223    ) -> Self {
23224        unsafe {
23225            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
23226            (*next_ptr).p_next = self.inner.p_next as *mut _;
23227            self.inner.p_next = <*mut BaseOutStructure>::cast::<
23228                core::ffi::c_void,
23229            >(next_ptr) as *const _;
23230        }
23231        self
23232    }
23233}
23234impl<'a> core::ops::Deref for PipelineSampleLocationsStateCreateInfoEXTBuilder<'a> {
23235    type Target = PipelineSampleLocationsStateCreateInfoEXT;
23236    #[inline]
23237    fn deref(&self) -> &Self::Target {
23238        &self.inner
23239    }
23240}
23241impl<'a> core::ops::DerefMut for PipelineSampleLocationsStateCreateInfoEXTBuilder<'a> {
23242    #[inline]
23243    fn deref_mut(&mut self) -> &mut Self::Target {
23244        &mut self.inner
23245    }
23246}
23247///Builder for [`PhysicalDeviceSampleLocationsPropertiesEXT`] with lifetime-tied pNext safety.
23248pub struct PhysicalDeviceSampleLocationsPropertiesEXTBuilder<'a> {
23249    inner: PhysicalDeviceSampleLocationsPropertiesEXT,
23250    _marker: core::marker::PhantomData<&'a ()>,
23251}
23252impl PhysicalDeviceSampleLocationsPropertiesEXT {
23253    /// Start building this struct; `s_type` is already set to the correct variant.
23254    #[inline]
23255    pub fn builder<'a>() -> PhysicalDeviceSampleLocationsPropertiesEXTBuilder<'a> {
23256        PhysicalDeviceSampleLocationsPropertiesEXTBuilder {
23257            inner: PhysicalDeviceSampleLocationsPropertiesEXT {
23258                s_type: StructureType::from_raw(1000143003i32),
23259                ..Default::default()
23260            },
23261            _marker: core::marker::PhantomData,
23262        }
23263    }
23264}
23265impl<'a> PhysicalDeviceSampleLocationsPropertiesEXTBuilder<'a> {
23266    #[inline]
23267    pub fn sample_location_sample_counts(mut self, value: SampleCountFlags) -> Self {
23268        self.inner.sample_location_sample_counts = value;
23269        self
23270    }
23271    #[inline]
23272    pub fn max_sample_location_grid_size(mut self, value: Extent2D) -> Self {
23273        self.inner.max_sample_location_grid_size = value;
23274        self
23275    }
23276    #[inline]
23277    pub fn sample_location_coordinate_range(mut self, value: [f32; 2usize]) -> Self {
23278        self.inner.sample_location_coordinate_range = value;
23279        self
23280    }
23281    #[inline]
23282    pub fn sample_location_sub_pixel_bits(mut self, value: u32) -> Self {
23283        self.inner.sample_location_sub_pixel_bits = value;
23284        self
23285    }
23286    #[inline]
23287    pub fn variable_sample_locations(mut self, value: bool) -> Self {
23288        self.inner.variable_sample_locations = value as u32;
23289        self
23290    }
23291}
23292impl<'a> core::ops::Deref for PhysicalDeviceSampleLocationsPropertiesEXTBuilder<'a> {
23293    type Target = PhysicalDeviceSampleLocationsPropertiesEXT;
23294    #[inline]
23295    fn deref(&self) -> &Self::Target {
23296        &self.inner
23297    }
23298}
23299impl<'a> core::ops::DerefMut for PhysicalDeviceSampleLocationsPropertiesEXTBuilder<'a> {
23300    #[inline]
23301    fn deref_mut(&mut self) -> &mut Self::Target {
23302        &mut self.inner
23303    }
23304}
23305///Builder for [`MultisamplePropertiesEXT`] with lifetime-tied pNext safety.
23306pub struct MultisamplePropertiesEXTBuilder<'a> {
23307    inner: MultisamplePropertiesEXT,
23308    _marker: core::marker::PhantomData<&'a ()>,
23309}
23310impl MultisamplePropertiesEXT {
23311    /// Start building this struct; `s_type` is already set to the correct variant.
23312    #[inline]
23313    pub fn builder<'a>() -> MultisamplePropertiesEXTBuilder<'a> {
23314        MultisamplePropertiesEXTBuilder {
23315            inner: MultisamplePropertiesEXT {
23316                s_type: StructureType::from_raw(1000143004i32),
23317                ..Default::default()
23318            },
23319            _marker: core::marker::PhantomData,
23320        }
23321    }
23322}
23323impl<'a> MultisamplePropertiesEXTBuilder<'a> {
23324    #[inline]
23325    pub fn max_sample_location_grid_size(mut self, value: Extent2D) -> Self {
23326        self.inner.max_sample_location_grid_size = value;
23327        self
23328    }
23329}
23330impl<'a> core::ops::Deref for MultisamplePropertiesEXTBuilder<'a> {
23331    type Target = MultisamplePropertiesEXT;
23332    #[inline]
23333    fn deref(&self) -> &Self::Target {
23334        &self.inner
23335    }
23336}
23337impl<'a> core::ops::DerefMut for MultisamplePropertiesEXTBuilder<'a> {
23338    #[inline]
23339    fn deref_mut(&mut self) -> &mut Self::Target {
23340        &mut self.inner
23341    }
23342}
23343///Builder for [`SamplerReductionModeCreateInfo`] with lifetime-tied pNext safety.
23344pub struct SamplerReductionModeCreateInfoBuilder<'a> {
23345    inner: SamplerReductionModeCreateInfo,
23346    _marker: core::marker::PhantomData<&'a ()>,
23347}
23348impl SamplerReductionModeCreateInfo {
23349    /// Start building this struct; `s_type` is already set to the correct variant.
23350    #[inline]
23351    pub fn builder<'a>() -> SamplerReductionModeCreateInfoBuilder<'a> {
23352        SamplerReductionModeCreateInfoBuilder {
23353            inner: SamplerReductionModeCreateInfo {
23354                s_type: StructureType::from_raw(1000130001i32),
23355                ..Default::default()
23356            },
23357            _marker: core::marker::PhantomData,
23358        }
23359    }
23360}
23361impl<'a> SamplerReductionModeCreateInfoBuilder<'a> {
23362    #[inline]
23363    pub fn reduction_mode(mut self, value: SamplerReductionMode) -> Self {
23364        self.inner.reduction_mode = value;
23365        self
23366    }
23367    ///Prepend a struct to the pNext chain. See [`SamplerReductionModeCreateInfo`]'s **Extended By** section for valid types.
23368    #[inline]
23369    pub fn push_next<T: ExtendsSamplerReductionModeCreateInfo>(
23370        mut self,
23371        next: &'a mut T,
23372    ) -> Self {
23373        unsafe {
23374            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
23375            (*next_ptr).p_next = self.inner.p_next as *mut _;
23376            self.inner.p_next = <*mut BaseOutStructure>::cast::<
23377                core::ffi::c_void,
23378            >(next_ptr) as *const _;
23379        }
23380        self
23381    }
23382}
23383impl<'a> core::ops::Deref for SamplerReductionModeCreateInfoBuilder<'a> {
23384    type Target = SamplerReductionModeCreateInfo;
23385    #[inline]
23386    fn deref(&self) -> &Self::Target {
23387        &self.inner
23388    }
23389}
23390impl<'a> core::ops::DerefMut for SamplerReductionModeCreateInfoBuilder<'a> {
23391    #[inline]
23392    fn deref_mut(&mut self) -> &mut Self::Target {
23393        &mut self.inner
23394    }
23395}
23396///Builder for [`PhysicalDeviceBlendOperationAdvancedFeaturesEXT`] with lifetime-tied pNext safety.
23397pub struct PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder<'a> {
23398    inner: PhysicalDeviceBlendOperationAdvancedFeaturesEXT,
23399    _marker: core::marker::PhantomData<&'a ()>,
23400}
23401impl PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
23402    /// Start building this struct; `s_type` is already set to the correct variant.
23403    #[inline]
23404    pub fn builder<'a>() -> PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder<'a> {
23405        PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder {
23406            inner: PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
23407                s_type: StructureType::from_raw(1000148000i32),
23408                ..Default::default()
23409            },
23410            _marker: core::marker::PhantomData,
23411        }
23412    }
23413}
23414impl<'a> PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder<'a> {
23415    #[inline]
23416    pub fn advanced_blend_coherent_operations(mut self, value: bool) -> Self {
23417        self.inner.advanced_blend_coherent_operations = value as u32;
23418        self
23419    }
23420    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceBlendOperationAdvancedFeaturesEXT`]'s **Extended By** section for valid types.
23421    #[inline]
23422    pub fn push_next<T: ExtendsPhysicalDeviceBlendOperationAdvancedFeaturesEXT>(
23423        mut self,
23424        next: &'a mut T,
23425    ) -> Self {
23426        unsafe {
23427            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
23428            (*next_ptr).p_next = self.inner.p_next as *mut _;
23429            self.inner.p_next = <*mut BaseOutStructure>::cast::<
23430                core::ffi::c_void,
23431            >(next_ptr);
23432        }
23433        self
23434    }
23435}
23436impl<'a> core::ops::Deref
23437for PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder<'a> {
23438    type Target = PhysicalDeviceBlendOperationAdvancedFeaturesEXT;
23439    #[inline]
23440    fn deref(&self) -> &Self::Target {
23441        &self.inner
23442    }
23443}
23444impl<'a> core::ops::DerefMut
23445for PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder<'a> {
23446    #[inline]
23447    fn deref_mut(&mut self) -> &mut Self::Target {
23448        &mut self.inner
23449    }
23450}
23451///Builder for [`PhysicalDeviceMultiDrawFeaturesEXT`] with lifetime-tied pNext safety.
23452pub struct PhysicalDeviceMultiDrawFeaturesEXTBuilder<'a> {
23453    inner: PhysicalDeviceMultiDrawFeaturesEXT,
23454    _marker: core::marker::PhantomData<&'a ()>,
23455}
23456impl PhysicalDeviceMultiDrawFeaturesEXT {
23457    /// Start building this struct; `s_type` is already set to the correct variant.
23458    #[inline]
23459    pub fn builder<'a>() -> PhysicalDeviceMultiDrawFeaturesEXTBuilder<'a> {
23460        PhysicalDeviceMultiDrawFeaturesEXTBuilder {
23461            inner: PhysicalDeviceMultiDrawFeaturesEXT {
23462                s_type: StructureType::from_raw(1000392000i32),
23463                ..Default::default()
23464            },
23465            _marker: core::marker::PhantomData,
23466        }
23467    }
23468}
23469impl<'a> PhysicalDeviceMultiDrawFeaturesEXTBuilder<'a> {
23470    #[inline]
23471    pub fn multi_draw(mut self, value: bool) -> Self {
23472        self.inner.multi_draw = value as u32;
23473        self
23474    }
23475    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceMultiDrawFeaturesEXT`]'s **Extended By** section for valid types.
23476    #[inline]
23477    pub fn push_next<T: ExtendsPhysicalDeviceMultiDrawFeaturesEXT>(
23478        mut self,
23479        next: &'a mut T,
23480    ) -> Self {
23481        unsafe {
23482            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
23483            (*next_ptr).p_next = self.inner.p_next as *mut _;
23484            self.inner.p_next = <*mut BaseOutStructure>::cast::<
23485                core::ffi::c_void,
23486            >(next_ptr);
23487        }
23488        self
23489    }
23490}
23491impl<'a> core::ops::Deref for PhysicalDeviceMultiDrawFeaturesEXTBuilder<'a> {
23492    type Target = PhysicalDeviceMultiDrawFeaturesEXT;
23493    #[inline]
23494    fn deref(&self) -> &Self::Target {
23495        &self.inner
23496    }
23497}
23498impl<'a> core::ops::DerefMut for PhysicalDeviceMultiDrawFeaturesEXTBuilder<'a> {
23499    #[inline]
23500    fn deref_mut(&mut self) -> &mut Self::Target {
23501        &mut self.inner
23502    }
23503}
23504///Builder for [`PhysicalDeviceBlendOperationAdvancedPropertiesEXT`] with lifetime-tied pNext safety.
23505pub struct PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder<'a> {
23506    inner: PhysicalDeviceBlendOperationAdvancedPropertiesEXT,
23507    _marker: core::marker::PhantomData<&'a ()>,
23508}
23509impl PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
23510    /// Start building this struct; `s_type` is already set to the correct variant.
23511    #[inline]
23512    pub fn builder<'a>() -> PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder<
23513        'a,
23514    > {
23515        PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder {
23516            inner: PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
23517                s_type: StructureType::from_raw(1000148001i32),
23518                ..Default::default()
23519            },
23520            _marker: core::marker::PhantomData,
23521        }
23522    }
23523}
23524impl<'a> PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder<'a> {
23525    #[inline]
23526    pub fn advanced_blend_max_color_attachments(mut self, value: u32) -> Self {
23527        self.inner.advanced_blend_max_color_attachments = value;
23528        self
23529    }
23530    #[inline]
23531    pub fn advanced_blend_independent_blend(mut self, value: bool) -> Self {
23532        self.inner.advanced_blend_independent_blend = value as u32;
23533        self
23534    }
23535    #[inline]
23536    pub fn advanced_blend_non_premultiplied_src_color(mut self, value: bool) -> Self {
23537        self.inner.advanced_blend_non_premultiplied_src_color = value as u32;
23538        self
23539    }
23540    #[inline]
23541    pub fn advanced_blend_non_premultiplied_dst_color(mut self, value: bool) -> Self {
23542        self.inner.advanced_blend_non_premultiplied_dst_color = value as u32;
23543        self
23544    }
23545    #[inline]
23546    pub fn advanced_blend_correlated_overlap(mut self, value: bool) -> Self {
23547        self.inner.advanced_blend_correlated_overlap = value as u32;
23548        self
23549    }
23550    #[inline]
23551    pub fn advanced_blend_all_operations(mut self, value: bool) -> Self {
23552        self.inner.advanced_blend_all_operations = value as u32;
23553        self
23554    }
23555}
23556impl<'a> core::ops::Deref
23557for PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder<'a> {
23558    type Target = PhysicalDeviceBlendOperationAdvancedPropertiesEXT;
23559    #[inline]
23560    fn deref(&self) -> &Self::Target {
23561        &self.inner
23562    }
23563}
23564impl<'a> core::ops::DerefMut
23565for PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder<'a> {
23566    #[inline]
23567    fn deref_mut(&mut self) -> &mut Self::Target {
23568        &mut self.inner
23569    }
23570}
23571///Builder for [`PipelineColorBlendAdvancedStateCreateInfoEXT`] with lifetime-tied pNext safety.
23572pub struct PipelineColorBlendAdvancedStateCreateInfoEXTBuilder<'a> {
23573    inner: PipelineColorBlendAdvancedStateCreateInfoEXT,
23574    _marker: core::marker::PhantomData<&'a ()>,
23575}
23576impl PipelineColorBlendAdvancedStateCreateInfoEXT {
23577    /// Start building this struct; `s_type` is already set to the correct variant.
23578    #[inline]
23579    pub fn builder<'a>() -> PipelineColorBlendAdvancedStateCreateInfoEXTBuilder<'a> {
23580        PipelineColorBlendAdvancedStateCreateInfoEXTBuilder {
23581            inner: PipelineColorBlendAdvancedStateCreateInfoEXT {
23582                s_type: StructureType::from_raw(1000148002i32),
23583                ..Default::default()
23584            },
23585            _marker: core::marker::PhantomData,
23586        }
23587    }
23588}
23589impl<'a> PipelineColorBlendAdvancedStateCreateInfoEXTBuilder<'a> {
23590    #[inline]
23591    pub fn src_premultiplied(mut self, value: bool) -> Self {
23592        self.inner.src_premultiplied = value as u32;
23593        self
23594    }
23595    #[inline]
23596    pub fn dst_premultiplied(mut self, value: bool) -> Self {
23597        self.inner.dst_premultiplied = value as u32;
23598        self
23599    }
23600    #[inline]
23601    pub fn blend_overlap(mut self, value: BlendOverlapEXT) -> Self {
23602        self.inner.blend_overlap = value;
23603        self
23604    }
23605    ///Prepend a struct to the pNext chain. See [`PipelineColorBlendAdvancedStateCreateInfoEXT`]'s **Extended By** section for valid types.
23606    #[inline]
23607    pub fn push_next<T: ExtendsPipelineColorBlendAdvancedStateCreateInfoEXT>(
23608        mut self,
23609        next: &'a mut T,
23610    ) -> Self {
23611        unsafe {
23612            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
23613            (*next_ptr).p_next = self.inner.p_next as *mut _;
23614            self.inner.p_next = <*mut BaseOutStructure>::cast::<
23615                core::ffi::c_void,
23616            >(next_ptr) as *const _;
23617        }
23618        self
23619    }
23620}
23621impl<'a> core::ops::Deref for PipelineColorBlendAdvancedStateCreateInfoEXTBuilder<'a> {
23622    type Target = PipelineColorBlendAdvancedStateCreateInfoEXT;
23623    #[inline]
23624    fn deref(&self) -> &Self::Target {
23625        &self.inner
23626    }
23627}
23628impl<'a> core::ops::DerefMut
23629for PipelineColorBlendAdvancedStateCreateInfoEXTBuilder<'a> {
23630    #[inline]
23631    fn deref_mut(&mut self) -> &mut Self::Target {
23632        &mut self.inner
23633    }
23634}
23635///Builder for [`PhysicalDeviceInlineUniformBlockFeatures`] with lifetime-tied pNext safety.
23636pub struct PhysicalDeviceInlineUniformBlockFeaturesBuilder<'a> {
23637    inner: PhysicalDeviceInlineUniformBlockFeatures,
23638    _marker: core::marker::PhantomData<&'a ()>,
23639}
23640impl PhysicalDeviceInlineUniformBlockFeatures {
23641    /// Start building this struct; `s_type` is already set to the correct variant.
23642    #[inline]
23643    pub fn builder<'a>() -> PhysicalDeviceInlineUniformBlockFeaturesBuilder<'a> {
23644        PhysicalDeviceInlineUniformBlockFeaturesBuilder {
23645            inner: PhysicalDeviceInlineUniformBlockFeatures {
23646                s_type: StructureType::from_raw(1000138000i32),
23647                ..Default::default()
23648            },
23649            _marker: core::marker::PhantomData,
23650        }
23651    }
23652}
23653impl<'a> PhysicalDeviceInlineUniformBlockFeaturesBuilder<'a> {
23654    #[inline]
23655    pub fn inline_uniform_block(mut self, value: bool) -> Self {
23656        self.inner.inline_uniform_block = value as u32;
23657        self
23658    }
23659    #[inline]
23660    pub fn descriptor_binding_inline_uniform_block_update_after_bind(
23661        mut self,
23662        value: bool,
23663    ) -> Self {
23664        self.inner.descriptor_binding_inline_uniform_block_update_after_bind = value
23665            as u32;
23666        self
23667    }
23668    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceInlineUniformBlockFeatures`]'s **Extended By** section for valid types.
23669    #[inline]
23670    pub fn push_next<T: ExtendsPhysicalDeviceInlineUniformBlockFeatures>(
23671        mut self,
23672        next: &'a mut T,
23673    ) -> Self {
23674        unsafe {
23675            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
23676            (*next_ptr).p_next = self.inner.p_next as *mut _;
23677            self.inner.p_next = <*mut BaseOutStructure>::cast::<
23678                core::ffi::c_void,
23679            >(next_ptr);
23680        }
23681        self
23682    }
23683}
23684impl<'a> core::ops::Deref for PhysicalDeviceInlineUniformBlockFeaturesBuilder<'a> {
23685    type Target = PhysicalDeviceInlineUniformBlockFeatures;
23686    #[inline]
23687    fn deref(&self) -> &Self::Target {
23688        &self.inner
23689    }
23690}
23691impl<'a> core::ops::DerefMut for PhysicalDeviceInlineUniformBlockFeaturesBuilder<'a> {
23692    #[inline]
23693    fn deref_mut(&mut self) -> &mut Self::Target {
23694        &mut self.inner
23695    }
23696}
23697///Builder for [`PhysicalDeviceInlineUniformBlockProperties`] with lifetime-tied pNext safety.
23698pub struct PhysicalDeviceInlineUniformBlockPropertiesBuilder<'a> {
23699    inner: PhysicalDeviceInlineUniformBlockProperties,
23700    _marker: core::marker::PhantomData<&'a ()>,
23701}
23702impl PhysicalDeviceInlineUniformBlockProperties {
23703    /// Start building this struct; `s_type` is already set to the correct variant.
23704    #[inline]
23705    pub fn builder<'a>() -> PhysicalDeviceInlineUniformBlockPropertiesBuilder<'a> {
23706        PhysicalDeviceInlineUniformBlockPropertiesBuilder {
23707            inner: PhysicalDeviceInlineUniformBlockProperties {
23708                s_type: StructureType::from_raw(1000138001i32),
23709                ..Default::default()
23710            },
23711            _marker: core::marker::PhantomData,
23712        }
23713    }
23714}
23715impl<'a> PhysicalDeviceInlineUniformBlockPropertiesBuilder<'a> {
23716    #[inline]
23717    pub fn max_inline_uniform_block_size(mut self, value: u32) -> Self {
23718        self.inner.max_inline_uniform_block_size = value;
23719        self
23720    }
23721    #[inline]
23722    pub fn max_per_stage_descriptor_inline_uniform_blocks(mut self, value: u32) -> Self {
23723        self.inner.max_per_stage_descriptor_inline_uniform_blocks = value;
23724        self
23725    }
23726    #[inline]
23727    pub fn max_per_stage_descriptor_update_after_bind_inline_uniform_blocks(
23728        mut self,
23729        value: u32,
23730    ) -> Self {
23731        self.inner.max_per_stage_descriptor_update_after_bind_inline_uniform_blocks = value;
23732        self
23733    }
23734    #[inline]
23735    pub fn max_descriptor_set_inline_uniform_blocks(mut self, value: u32) -> Self {
23736        self.inner.max_descriptor_set_inline_uniform_blocks = value;
23737        self
23738    }
23739    #[inline]
23740    pub fn max_descriptor_set_update_after_bind_inline_uniform_blocks(
23741        mut self,
23742        value: u32,
23743    ) -> Self {
23744        self.inner.max_descriptor_set_update_after_bind_inline_uniform_blocks = value;
23745        self
23746    }
23747}
23748impl<'a> core::ops::Deref for PhysicalDeviceInlineUniformBlockPropertiesBuilder<'a> {
23749    type Target = PhysicalDeviceInlineUniformBlockProperties;
23750    #[inline]
23751    fn deref(&self) -> &Self::Target {
23752        &self.inner
23753    }
23754}
23755impl<'a> core::ops::DerefMut for PhysicalDeviceInlineUniformBlockPropertiesBuilder<'a> {
23756    #[inline]
23757    fn deref_mut(&mut self) -> &mut Self::Target {
23758        &mut self.inner
23759    }
23760}
23761///Builder for [`WriteDescriptorSetInlineUniformBlock`] with lifetime-tied pNext safety.
23762pub struct WriteDescriptorSetInlineUniformBlockBuilder<'a> {
23763    inner: WriteDescriptorSetInlineUniformBlock,
23764    _marker: core::marker::PhantomData<&'a ()>,
23765}
23766impl WriteDescriptorSetInlineUniformBlock {
23767    /// Start building this struct; `s_type` is already set to the correct variant.
23768    #[inline]
23769    pub fn builder<'a>() -> WriteDescriptorSetInlineUniformBlockBuilder<'a> {
23770        WriteDescriptorSetInlineUniformBlockBuilder {
23771            inner: WriteDescriptorSetInlineUniformBlock {
23772                s_type: StructureType::from_raw(1000138002i32),
23773                ..Default::default()
23774            },
23775            _marker: core::marker::PhantomData,
23776        }
23777    }
23778}
23779impl<'a> WriteDescriptorSetInlineUniformBlockBuilder<'a> {
23780    #[inline]
23781    pub fn data(mut self, slice: &'a [core::ffi::c_void]) -> Self {
23782        self.inner.data_size = slice.len() as u32;
23783        self.inner.p_data = slice.as_ptr();
23784        self
23785    }
23786    ///Prepend a struct to the pNext chain. See [`WriteDescriptorSetInlineUniformBlock`]'s **Extended By** section for valid types.
23787    #[inline]
23788    pub fn push_next<T: ExtendsWriteDescriptorSetInlineUniformBlock>(
23789        mut self,
23790        next: &'a mut T,
23791    ) -> Self {
23792        unsafe {
23793            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
23794            (*next_ptr).p_next = self.inner.p_next as *mut _;
23795            self.inner.p_next = <*mut BaseOutStructure>::cast::<
23796                core::ffi::c_void,
23797            >(next_ptr) as *const _;
23798        }
23799        self
23800    }
23801}
23802impl<'a> core::ops::Deref for WriteDescriptorSetInlineUniformBlockBuilder<'a> {
23803    type Target = WriteDescriptorSetInlineUniformBlock;
23804    #[inline]
23805    fn deref(&self) -> &Self::Target {
23806        &self.inner
23807    }
23808}
23809impl<'a> core::ops::DerefMut for WriteDescriptorSetInlineUniformBlockBuilder<'a> {
23810    #[inline]
23811    fn deref_mut(&mut self) -> &mut Self::Target {
23812        &mut self.inner
23813    }
23814}
23815///Builder for [`DescriptorPoolInlineUniformBlockCreateInfo`] with lifetime-tied pNext safety.
23816pub struct DescriptorPoolInlineUniformBlockCreateInfoBuilder<'a> {
23817    inner: DescriptorPoolInlineUniformBlockCreateInfo,
23818    _marker: core::marker::PhantomData<&'a ()>,
23819}
23820impl DescriptorPoolInlineUniformBlockCreateInfo {
23821    /// Start building this struct; `s_type` is already set to the correct variant.
23822    #[inline]
23823    pub fn builder<'a>() -> DescriptorPoolInlineUniformBlockCreateInfoBuilder<'a> {
23824        DescriptorPoolInlineUniformBlockCreateInfoBuilder {
23825            inner: DescriptorPoolInlineUniformBlockCreateInfo {
23826                s_type: StructureType::from_raw(1000138003i32),
23827                ..Default::default()
23828            },
23829            _marker: core::marker::PhantomData,
23830        }
23831    }
23832}
23833impl<'a> DescriptorPoolInlineUniformBlockCreateInfoBuilder<'a> {
23834    #[inline]
23835    pub fn max_inline_uniform_block_bindings(mut self, value: u32) -> Self {
23836        self.inner.max_inline_uniform_block_bindings = value;
23837        self
23838    }
23839    ///Prepend a struct to the pNext chain. See [`DescriptorPoolInlineUniformBlockCreateInfo`]'s **Extended By** section for valid types.
23840    #[inline]
23841    pub fn push_next<T: ExtendsDescriptorPoolInlineUniformBlockCreateInfo>(
23842        mut self,
23843        next: &'a mut T,
23844    ) -> Self {
23845        unsafe {
23846            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
23847            (*next_ptr).p_next = self.inner.p_next as *mut _;
23848            self.inner.p_next = <*mut BaseOutStructure>::cast::<
23849                core::ffi::c_void,
23850            >(next_ptr) as *const _;
23851        }
23852        self
23853    }
23854}
23855impl<'a> core::ops::Deref for DescriptorPoolInlineUniformBlockCreateInfoBuilder<'a> {
23856    type Target = DescriptorPoolInlineUniformBlockCreateInfo;
23857    #[inline]
23858    fn deref(&self) -> &Self::Target {
23859        &self.inner
23860    }
23861}
23862impl<'a> core::ops::DerefMut for DescriptorPoolInlineUniformBlockCreateInfoBuilder<'a> {
23863    #[inline]
23864    fn deref_mut(&mut self) -> &mut Self::Target {
23865        &mut self.inner
23866    }
23867}
23868///Builder for [`PipelineCoverageModulationStateCreateInfoNV`] with lifetime-tied pNext safety.
23869pub struct PipelineCoverageModulationStateCreateInfoNVBuilder<'a> {
23870    inner: PipelineCoverageModulationStateCreateInfoNV,
23871    _marker: core::marker::PhantomData<&'a ()>,
23872}
23873impl PipelineCoverageModulationStateCreateInfoNV {
23874    /// Start building this struct; `s_type` is already set to the correct variant.
23875    #[inline]
23876    pub fn builder<'a>() -> PipelineCoverageModulationStateCreateInfoNVBuilder<'a> {
23877        PipelineCoverageModulationStateCreateInfoNVBuilder {
23878            inner: PipelineCoverageModulationStateCreateInfoNV {
23879                s_type: StructureType::from_raw(1000152000i32),
23880                ..Default::default()
23881            },
23882            _marker: core::marker::PhantomData,
23883        }
23884    }
23885}
23886impl<'a> PipelineCoverageModulationStateCreateInfoNVBuilder<'a> {
23887    #[inline]
23888    pub fn flags(mut self, value: PipelineCoverageModulationStateCreateFlagsNV) -> Self {
23889        self.inner.flags = value;
23890        self
23891    }
23892    #[inline]
23893    pub fn coverage_modulation_mode(mut self, value: CoverageModulationModeNV) -> Self {
23894        self.inner.coverage_modulation_mode = value;
23895        self
23896    }
23897    #[inline]
23898    pub fn coverage_modulation_table_enable(mut self, value: bool) -> Self {
23899        self.inner.coverage_modulation_table_enable = value as u32;
23900        self
23901    }
23902    #[inline]
23903    pub fn coverage_modulation_table_count(mut self, value: u32) -> Self {
23904        self.inner.coverage_modulation_table_count = value;
23905        self
23906    }
23907    #[inline]
23908    pub fn coverage_modulation_table(mut self, slice: &'a [f32]) -> Self {
23909        self.inner.coverage_modulation_table_count = slice.len() as u32;
23910        self.inner.p_coverage_modulation_table = slice.as_ptr();
23911        self
23912    }
23913    ///Prepend a struct to the pNext chain. See [`PipelineCoverageModulationStateCreateInfoNV`]'s **Extended By** section for valid types.
23914    #[inline]
23915    pub fn push_next<T: ExtendsPipelineCoverageModulationStateCreateInfoNV>(
23916        mut self,
23917        next: &'a mut T,
23918    ) -> Self {
23919        unsafe {
23920            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
23921            (*next_ptr).p_next = self.inner.p_next as *mut _;
23922            self.inner.p_next = <*mut BaseOutStructure>::cast::<
23923                core::ffi::c_void,
23924            >(next_ptr) as *const _;
23925        }
23926        self
23927    }
23928}
23929impl<'a> core::ops::Deref for PipelineCoverageModulationStateCreateInfoNVBuilder<'a> {
23930    type Target = PipelineCoverageModulationStateCreateInfoNV;
23931    #[inline]
23932    fn deref(&self) -> &Self::Target {
23933        &self.inner
23934    }
23935}
23936impl<'a> core::ops::DerefMut for PipelineCoverageModulationStateCreateInfoNVBuilder<'a> {
23937    #[inline]
23938    fn deref_mut(&mut self) -> &mut Self::Target {
23939        &mut self.inner
23940    }
23941}
23942///Builder for [`ImageFormatListCreateInfo`] with lifetime-tied pNext safety.
23943pub struct ImageFormatListCreateInfoBuilder<'a> {
23944    inner: ImageFormatListCreateInfo,
23945    _marker: core::marker::PhantomData<&'a ()>,
23946}
23947impl ImageFormatListCreateInfo {
23948    /// Start building this struct; `s_type` is already set to the correct variant.
23949    #[inline]
23950    pub fn builder<'a>() -> ImageFormatListCreateInfoBuilder<'a> {
23951        ImageFormatListCreateInfoBuilder {
23952            inner: ImageFormatListCreateInfo {
23953                s_type: StructureType::from_raw(1000147000i32),
23954                ..Default::default()
23955            },
23956            _marker: core::marker::PhantomData,
23957        }
23958    }
23959}
23960impl<'a> ImageFormatListCreateInfoBuilder<'a> {
23961    #[inline]
23962    pub fn view_formats(mut self, slice: &'a [Format]) -> Self {
23963        self.inner.view_format_count = slice.len() as u32;
23964        self.inner.p_view_formats = slice.as_ptr();
23965        self
23966    }
23967    ///Prepend a struct to the pNext chain. See [`ImageFormatListCreateInfo`]'s **Extended By** section for valid types.
23968    #[inline]
23969    pub fn push_next<T: ExtendsImageFormatListCreateInfo>(
23970        mut self,
23971        next: &'a mut T,
23972    ) -> Self {
23973        unsafe {
23974            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
23975            (*next_ptr).p_next = self.inner.p_next as *mut _;
23976            self.inner.p_next = <*mut BaseOutStructure>::cast::<
23977                core::ffi::c_void,
23978            >(next_ptr) as *const _;
23979        }
23980        self
23981    }
23982}
23983impl<'a> core::ops::Deref for ImageFormatListCreateInfoBuilder<'a> {
23984    type Target = ImageFormatListCreateInfo;
23985    #[inline]
23986    fn deref(&self) -> &Self::Target {
23987        &self.inner
23988    }
23989}
23990impl<'a> core::ops::DerefMut for ImageFormatListCreateInfoBuilder<'a> {
23991    #[inline]
23992    fn deref_mut(&mut self) -> &mut Self::Target {
23993        &mut self.inner
23994    }
23995}
23996///Builder for [`ValidationCacheCreateInfoEXT`] with lifetime-tied pNext safety.
23997pub struct ValidationCacheCreateInfoEXTBuilder<'a> {
23998    inner: ValidationCacheCreateInfoEXT,
23999    _marker: core::marker::PhantomData<&'a ()>,
24000}
24001impl ValidationCacheCreateInfoEXT {
24002    /// Start building this struct; `s_type` is already set to the correct variant.
24003    #[inline]
24004    pub fn builder<'a>() -> ValidationCacheCreateInfoEXTBuilder<'a> {
24005        ValidationCacheCreateInfoEXTBuilder {
24006            inner: ValidationCacheCreateInfoEXT {
24007                s_type: StructureType::from_raw(1000160000i32),
24008                ..Default::default()
24009            },
24010            _marker: core::marker::PhantomData,
24011        }
24012    }
24013}
24014impl<'a> ValidationCacheCreateInfoEXTBuilder<'a> {
24015    #[inline]
24016    pub fn flags(mut self, value: ValidationCacheCreateFlagsEXT) -> Self {
24017        self.inner.flags = value;
24018        self
24019    }
24020    #[inline]
24021    pub fn initial_data(mut self, slice: &'a [core::ffi::c_void]) -> Self {
24022        self.inner.initial_data_size = slice.len();
24023        self.inner.p_initial_data = slice.as_ptr();
24024        self
24025    }
24026    ///Prepend a struct to the pNext chain. See [`ValidationCacheCreateInfoEXT`]'s **Extended By** section for valid types.
24027    #[inline]
24028    pub fn push_next<T: ExtendsValidationCacheCreateInfoEXT>(
24029        mut self,
24030        next: &'a mut T,
24031    ) -> Self {
24032        unsafe {
24033            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
24034            (*next_ptr).p_next = self.inner.p_next as *mut _;
24035            self.inner.p_next = <*mut BaseOutStructure>::cast::<
24036                core::ffi::c_void,
24037            >(next_ptr) as *const _;
24038        }
24039        self
24040    }
24041}
24042impl<'a> core::ops::Deref for ValidationCacheCreateInfoEXTBuilder<'a> {
24043    type Target = ValidationCacheCreateInfoEXT;
24044    #[inline]
24045    fn deref(&self) -> &Self::Target {
24046        &self.inner
24047    }
24048}
24049impl<'a> core::ops::DerefMut for ValidationCacheCreateInfoEXTBuilder<'a> {
24050    #[inline]
24051    fn deref_mut(&mut self) -> &mut Self::Target {
24052        &mut self.inner
24053    }
24054}
24055///Builder for [`ShaderModuleValidationCacheCreateInfoEXT`] with lifetime-tied pNext safety.
24056pub struct ShaderModuleValidationCacheCreateInfoEXTBuilder<'a> {
24057    inner: ShaderModuleValidationCacheCreateInfoEXT,
24058    _marker: core::marker::PhantomData<&'a ()>,
24059}
24060impl ShaderModuleValidationCacheCreateInfoEXT {
24061    /// Start building this struct; `s_type` is already set to the correct variant.
24062    #[inline]
24063    pub fn builder<'a>() -> ShaderModuleValidationCacheCreateInfoEXTBuilder<'a> {
24064        ShaderModuleValidationCacheCreateInfoEXTBuilder {
24065            inner: ShaderModuleValidationCacheCreateInfoEXT {
24066                s_type: StructureType::from_raw(1000160001i32),
24067                ..Default::default()
24068            },
24069            _marker: core::marker::PhantomData,
24070        }
24071    }
24072}
24073impl<'a> ShaderModuleValidationCacheCreateInfoEXTBuilder<'a> {
24074    #[inline]
24075    pub fn validation_cache(mut self, value: ValidationCacheEXT) -> Self {
24076        self.inner.validation_cache = value;
24077        self
24078    }
24079    ///Prepend a struct to the pNext chain. See [`ShaderModuleValidationCacheCreateInfoEXT`]'s **Extended By** section for valid types.
24080    #[inline]
24081    pub fn push_next<T: ExtendsShaderModuleValidationCacheCreateInfoEXT>(
24082        mut self,
24083        next: &'a mut T,
24084    ) -> Self {
24085        unsafe {
24086            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
24087            (*next_ptr).p_next = self.inner.p_next as *mut _;
24088            self.inner.p_next = <*mut BaseOutStructure>::cast::<
24089                core::ffi::c_void,
24090            >(next_ptr) as *const _;
24091        }
24092        self
24093    }
24094}
24095impl<'a> core::ops::Deref for ShaderModuleValidationCacheCreateInfoEXTBuilder<'a> {
24096    type Target = ShaderModuleValidationCacheCreateInfoEXT;
24097    #[inline]
24098    fn deref(&self) -> &Self::Target {
24099        &self.inner
24100    }
24101}
24102impl<'a> core::ops::DerefMut for ShaderModuleValidationCacheCreateInfoEXTBuilder<'a> {
24103    #[inline]
24104    fn deref_mut(&mut self) -> &mut Self::Target {
24105        &mut self.inner
24106    }
24107}
24108///Builder for [`PhysicalDeviceMaintenance3Properties`] with lifetime-tied pNext safety.
24109pub struct PhysicalDeviceMaintenance3PropertiesBuilder<'a> {
24110    inner: PhysicalDeviceMaintenance3Properties,
24111    _marker: core::marker::PhantomData<&'a ()>,
24112}
24113impl PhysicalDeviceMaintenance3Properties {
24114    /// Start building this struct; `s_type` is already set to the correct variant.
24115    #[inline]
24116    pub fn builder<'a>() -> PhysicalDeviceMaintenance3PropertiesBuilder<'a> {
24117        PhysicalDeviceMaintenance3PropertiesBuilder {
24118            inner: PhysicalDeviceMaintenance3Properties {
24119                s_type: StructureType::from_raw(1000168000i32),
24120                ..Default::default()
24121            },
24122            _marker: core::marker::PhantomData,
24123        }
24124    }
24125}
24126impl<'a> PhysicalDeviceMaintenance3PropertiesBuilder<'a> {
24127    #[inline]
24128    pub fn max_per_set_descriptors(mut self, value: u32) -> Self {
24129        self.inner.max_per_set_descriptors = value;
24130        self
24131    }
24132    #[inline]
24133    pub fn max_memory_allocation_size(mut self, value: u64) -> Self {
24134        self.inner.max_memory_allocation_size = value;
24135        self
24136    }
24137}
24138impl<'a> core::ops::Deref for PhysicalDeviceMaintenance3PropertiesBuilder<'a> {
24139    type Target = PhysicalDeviceMaintenance3Properties;
24140    #[inline]
24141    fn deref(&self) -> &Self::Target {
24142        &self.inner
24143    }
24144}
24145impl<'a> core::ops::DerefMut for PhysicalDeviceMaintenance3PropertiesBuilder<'a> {
24146    #[inline]
24147    fn deref_mut(&mut self) -> &mut Self::Target {
24148        &mut self.inner
24149    }
24150}
24151///Builder for [`PhysicalDeviceMaintenance4Features`] with lifetime-tied pNext safety.
24152pub struct PhysicalDeviceMaintenance4FeaturesBuilder<'a> {
24153    inner: PhysicalDeviceMaintenance4Features,
24154    _marker: core::marker::PhantomData<&'a ()>,
24155}
24156impl PhysicalDeviceMaintenance4Features {
24157    /// Start building this struct; `s_type` is already set to the correct variant.
24158    #[inline]
24159    pub fn builder<'a>() -> PhysicalDeviceMaintenance4FeaturesBuilder<'a> {
24160        PhysicalDeviceMaintenance4FeaturesBuilder {
24161            inner: PhysicalDeviceMaintenance4Features {
24162                s_type: StructureType::from_raw(1000413000i32),
24163                ..Default::default()
24164            },
24165            _marker: core::marker::PhantomData,
24166        }
24167    }
24168}
24169impl<'a> PhysicalDeviceMaintenance4FeaturesBuilder<'a> {
24170    #[inline]
24171    pub fn maintenance4(mut self, value: bool) -> Self {
24172        self.inner.maintenance4 = value as u32;
24173        self
24174    }
24175    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceMaintenance4Features`]'s **Extended By** section for valid types.
24176    #[inline]
24177    pub fn push_next<T: ExtendsPhysicalDeviceMaintenance4Features>(
24178        mut self,
24179        next: &'a mut T,
24180    ) -> Self {
24181        unsafe {
24182            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
24183            (*next_ptr).p_next = self.inner.p_next as *mut _;
24184            self.inner.p_next = <*mut BaseOutStructure>::cast::<
24185                core::ffi::c_void,
24186            >(next_ptr);
24187        }
24188        self
24189    }
24190}
24191impl<'a> core::ops::Deref for PhysicalDeviceMaintenance4FeaturesBuilder<'a> {
24192    type Target = PhysicalDeviceMaintenance4Features;
24193    #[inline]
24194    fn deref(&self) -> &Self::Target {
24195        &self.inner
24196    }
24197}
24198impl<'a> core::ops::DerefMut for PhysicalDeviceMaintenance4FeaturesBuilder<'a> {
24199    #[inline]
24200    fn deref_mut(&mut self) -> &mut Self::Target {
24201        &mut self.inner
24202    }
24203}
24204///Builder for [`PhysicalDeviceMaintenance4Properties`] with lifetime-tied pNext safety.
24205pub struct PhysicalDeviceMaintenance4PropertiesBuilder<'a> {
24206    inner: PhysicalDeviceMaintenance4Properties,
24207    _marker: core::marker::PhantomData<&'a ()>,
24208}
24209impl PhysicalDeviceMaintenance4Properties {
24210    /// Start building this struct; `s_type` is already set to the correct variant.
24211    #[inline]
24212    pub fn builder<'a>() -> PhysicalDeviceMaintenance4PropertiesBuilder<'a> {
24213        PhysicalDeviceMaintenance4PropertiesBuilder {
24214            inner: PhysicalDeviceMaintenance4Properties {
24215                s_type: StructureType::from_raw(1000413001i32),
24216                ..Default::default()
24217            },
24218            _marker: core::marker::PhantomData,
24219        }
24220    }
24221}
24222impl<'a> PhysicalDeviceMaintenance4PropertiesBuilder<'a> {
24223    #[inline]
24224    pub fn max_buffer_size(mut self, value: u64) -> Self {
24225        self.inner.max_buffer_size = value;
24226        self
24227    }
24228}
24229impl<'a> core::ops::Deref for PhysicalDeviceMaintenance4PropertiesBuilder<'a> {
24230    type Target = PhysicalDeviceMaintenance4Properties;
24231    #[inline]
24232    fn deref(&self) -> &Self::Target {
24233        &self.inner
24234    }
24235}
24236impl<'a> core::ops::DerefMut for PhysicalDeviceMaintenance4PropertiesBuilder<'a> {
24237    #[inline]
24238    fn deref_mut(&mut self) -> &mut Self::Target {
24239        &mut self.inner
24240    }
24241}
24242///Builder for [`PhysicalDeviceMaintenance5Features`] with lifetime-tied pNext safety.
24243pub struct PhysicalDeviceMaintenance5FeaturesBuilder<'a> {
24244    inner: PhysicalDeviceMaintenance5Features,
24245    _marker: core::marker::PhantomData<&'a ()>,
24246}
24247impl PhysicalDeviceMaintenance5Features {
24248    /// Start building this struct; `s_type` is already set to the correct variant.
24249    #[inline]
24250    pub fn builder<'a>() -> PhysicalDeviceMaintenance5FeaturesBuilder<'a> {
24251        PhysicalDeviceMaintenance5FeaturesBuilder {
24252            inner: PhysicalDeviceMaintenance5Features {
24253                s_type: StructureType::from_raw(1000470000i32),
24254                ..Default::default()
24255            },
24256            _marker: core::marker::PhantomData,
24257        }
24258    }
24259}
24260impl<'a> PhysicalDeviceMaintenance5FeaturesBuilder<'a> {
24261    #[inline]
24262    pub fn maintenance5(mut self, value: bool) -> Self {
24263        self.inner.maintenance5 = value as u32;
24264        self
24265    }
24266    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceMaintenance5Features`]'s **Extended By** section for valid types.
24267    #[inline]
24268    pub fn push_next<T: ExtendsPhysicalDeviceMaintenance5Features>(
24269        mut self,
24270        next: &'a mut T,
24271    ) -> Self {
24272        unsafe {
24273            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
24274            (*next_ptr).p_next = self.inner.p_next as *mut _;
24275            self.inner.p_next = <*mut BaseOutStructure>::cast::<
24276                core::ffi::c_void,
24277            >(next_ptr);
24278        }
24279        self
24280    }
24281}
24282impl<'a> core::ops::Deref for PhysicalDeviceMaintenance5FeaturesBuilder<'a> {
24283    type Target = PhysicalDeviceMaintenance5Features;
24284    #[inline]
24285    fn deref(&self) -> &Self::Target {
24286        &self.inner
24287    }
24288}
24289impl<'a> core::ops::DerefMut for PhysicalDeviceMaintenance5FeaturesBuilder<'a> {
24290    #[inline]
24291    fn deref_mut(&mut self) -> &mut Self::Target {
24292        &mut self.inner
24293    }
24294}
24295///Builder for [`PhysicalDeviceMaintenance5Properties`] with lifetime-tied pNext safety.
24296pub struct PhysicalDeviceMaintenance5PropertiesBuilder<'a> {
24297    inner: PhysicalDeviceMaintenance5Properties,
24298    _marker: core::marker::PhantomData<&'a ()>,
24299}
24300impl PhysicalDeviceMaintenance5Properties {
24301    /// Start building this struct; `s_type` is already set to the correct variant.
24302    #[inline]
24303    pub fn builder<'a>() -> PhysicalDeviceMaintenance5PropertiesBuilder<'a> {
24304        PhysicalDeviceMaintenance5PropertiesBuilder {
24305            inner: PhysicalDeviceMaintenance5Properties {
24306                s_type: StructureType::from_raw(1000470001i32),
24307                ..Default::default()
24308            },
24309            _marker: core::marker::PhantomData,
24310        }
24311    }
24312}
24313impl<'a> PhysicalDeviceMaintenance5PropertiesBuilder<'a> {
24314    #[inline]
24315    pub fn early_fragment_multisample_coverage_after_sample_counting(
24316        mut self,
24317        value: bool,
24318    ) -> Self {
24319        self.inner.early_fragment_multisample_coverage_after_sample_counting = value
24320            as u32;
24321        self
24322    }
24323    #[inline]
24324    pub fn early_fragment_sample_mask_test_before_sample_counting(
24325        mut self,
24326        value: bool,
24327    ) -> Self {
24328        self.inner.early_fragment_sample_mask_test_before_sample_counting = value as u32;
24329        self
24330    }
24331    #[inline]
24332    pub fn depth_stencil_swizzle_one_support(mut self, value: bool) -> Self {
24333        self.inner.depth_stencil_swizzle_one_support = value as u32;
24334        self
24335    }
24336    #[inline]
24337    pub fn polygon_mode_point_size(mut self, value: bool) -> Self {
24338        self.inner.polygon_mode_point_size = value as u32;
24339        self
24340    }
24341    #[inline]
24342    pub fn non_strict_single_pixel_wide_lines_use_parallelogram(
24343        mut self,
24344        value: bool,
24345    ) -> Self {
24346        self.inner.non_strict_single_pixel_wide_lines_use_parallelogram = value as u32;
24347        self
24348    }
24349    #[inline]
24350    pub fn non_strict_wide_lines_use_parallelogram(mut self, value: bool) -> Self {
24351        self.inner.non_strict_wide_lines_use_parallelogram = value as u32;
24352        self
24353    }
24354}
24355impl<'a> core::ops::Deref for PhysicalDeviceMaintenance5PropertiesBuilder<'a> {
24356    type Target = PhysicalDeviceMaintenance5Properties;
24357    #[inline]
24358    fn deref(&self) -> &Self::Target {
24359        &self.inner
24360    }
24361}
24362impl<'a> core::ops::DerefMut for PhysicalDeviceMaintenance5PropertiesBuilder<'a> {
24363    #[inline]
24364    fn deref_mut(&mut self) -> &mut Self::Target {
24365        &mut self.inner
24366    }
24367}
24368///Builder for [`PhysicalDeviceMaintenance6Features`] with lifetime-tied pNext safety.
24369pub struct PhysicalDeviceMaintenance6FeaturesBuilder<'a> {
24370    inner: PhysicalDeviceMaintenance6Features,
24371    _marker: core::marker::PhantomData<&'a ()>,
24372}
24373impl PhysicalDeviceMaintenance6Features {
24374    /// Start building this struct; `s_type` is already set to the correct variant.
24375    #[inline]
24376    pub fn builder<'a>() -> PhysicalDeviceMaintenance6FeaturesBuilder<'a> {
24377        PhysicalDeviceMaintenance6FeaturesBuilder {
24378            inner: PhysicalDeviceMaintenance6Features {
24379                s_type: StructureType::from_raw(1000545000i32),
24380                ..Default::default()
24381            },
24382            _marker: core::marker::PhantomData,
24383        }
24384    }
24385}
24386impl<'a> PhysicalDeviceMaintenance6FeaturesBuilder<'a> {
24387    #[inline]
24388    pub fn maintenance6(mut self, value: bool) -> Self {
24389        self.inner.maintenance6 = value as u32;
24390        self
24391    }
24392    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceMaintenance6Features`]'s **Extended By** section for valid types.
24393    #[inline]
24394    pub fn push_next<T: ExtendsPhysicalDeviceMaintenance6Features>(
24395        mut self,
24396        next: &'a mut T,
24397    ) -> Self {
24398        unsafe {
24399            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
24400            (*next_ptr).p_next = self.inner.p_next as *mut _;
24401            self.inner.p_next = <*mut BaseOutStructure>::cast::<
24402                core::ffi::c_void,
24403            >(next_ptr);
24404        }
24405        self
24406    }
24407}
24408impl<'a> core::ops::Deref for PhysicalDeviceMaintenance6FeaturesBuilder<'a> {
24409    type Target = PhysicalDeviceMaintenance6Features;
24410    #[inline]
24411    fn deref(&self) -> &Self::Target {
24412        &self.inner
24413    }
24414}
24415impl<'a> core::ops::DerefMut for PhysicalDeviceMaintenance6FeaturesBuilder<'a> {
24416    #[inline]
24417    fn deref_mut(&mut self) -> &mut Self::Target {
24418        &mut self.inner
24419    }
24420}
24421///Builder for [`PhysicalDeviceMaintenance6Properties`] with lifetime-tied pNext safety.
24422pub struct PhysicalDeviceMaintenance6PropertiesBuilder<'a> {
24423    inner: PhysicalDeviceMaintenance6Properties,
24424    _marker: core::marker::PhantomData<&'a ()>,
24425}
24426impl PhysicalDeviceMaintenance6Properties {
24427    /// Start building this struct; `s_type` is already set to the correct variant.
24428    #[inline]
24429    pub fn builder<'a>() -> PhysicalDeviceMaintenance6PropertiesBuilder<'a> {
24430        PhysicalDeviceMaintenance6PropertiesBuilder {
24431            inner: PhysicalDeviceMaintenance6Properties {
24432                s_type: StructureType::from_raw(1000545001i32),
24433                ..Default::default()
24434            },
24435            _marker: core::marker::PhantomData,
24436        }
24437    }
24438}
24439impl<'a> PhysicalDeviceMaintenance6PropertiesBuilder<'a> {
24440    #[inline]
24441    pub fn block_texel_view_compatible_multiple_layers(mut self, value: bool) -> Self {
24442        self.inner.block_texel_view_compatible_multiple_layers = value as u32;
24443        self
24444    }
24445    #[inline]
24446    pub fn max_combined_image_sampler_descriptor_count(mut self, value: u32) -> Self {
24447        self.inner.max_combined_image_sampler_descriptor_count = value;
24448        self
24449    }
24450    #[inline]
24451    pub fn fragment_shading_rate_clamp_combiner_inputs(mut self, value: bool) -> Self {
24452        self.inner.fragment_shading_rate_clamp_combiner_inputs = value as u32;
24453        self
24454    }
24455}
24456impl<'a> core::ops::Deref for PhysicalDeviceMaintenance6PropertiesBuilder<'a> {
24457    type Target = PhysicalDeviceMaintenance6Properties;
24458    #[inline]
24459    fn deref(&self) -> &Self::Target {
24460        &self.inner
24461    }
24462}
24463impl<'a> core::ops::DerefMut for PhysicalDeviceMaintenance6PropertiesBuilder<'a> {
24464    #[inline]
24465    fn deref_mut(&mut self) -> &mut Self::Target {
24466        &mut self.inner
24467    }
24468}
24469///Builder for [`PhysicalDeviceMaintenance7FeaturesKHR`] with lifetime-tied pNext safety.
24470pub struct PhysicalDeviceMaintenance7FeaturesKHRBuilder<'a> {
24471    inner: PhysicalDeviceMaintenance7FeaturesKHR,
24472    _marker: core::marker::PhantomData<&'a ()>,
24473}
24474impl PhysicalDeviceMaintenance7FeaturesKHR {
24475    /// Start building this struct; `s_type` is already set to the correct variant.
24476    #[inline]
24477    pub fn builder<'a>() -> PhysicalDeviceMaintenance7FeaturesKHRBuilder<'a> {
24478        PhysicalDeviceMaintenance7FeaturesKHRBuilder {
24479            inner: PhysicalDeviceMaintenance7FeaturesKHR {
24480                s_type: StructureType::from_raw(1000562000i32),
24481                ..Default::default()
24482            },
24483            _marker: core::marker::PhantomData,
24484        }
24485    }
24486}
24487impl<'a> PhysicalDeviceMaintenance7FeaturesKHRBuilder<'a> {
24488    #[inline]
24489    pub fn maintenance7(mut self, value: bool) -> Self {
24490        self.inner.maintenance7 = value as u32;
24491        self
24492    }
24493    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceMaintenance7FeaturesKHR`]'s **Extended By** section for valid types.
24494    #[inline]
24495    pub fn push_next<T: ExtendsPhysicalDeviceMaintenance7FeaturesKHR>(
24496        mut self,
24497        next: &'a mut T,
24498    ) -> Self {
24499        unsafe {
24500            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
24501            (*next_ptr).p_next = self.inner.p_next as *mut _;
24502            self.inner.p_next = <*mut BaseOutStructure>::cast::<
24503                core::ffi::c_void,
24504            >(next_ptr);
24505        }
24506        self
24507    }
24508}
24509impl<'a> core::ops::Deref for PhysicalDeviceMaintenance7FeaturesKHRBuilder<'a> {
24510    type Target = PhysicalDeviceMaintenance7FeaturesKHR;
24511    #[inline]
24512    fn deref(&self) -> &Self::Target {
24513        &self.inner
24514    }
24515}
24516impl<'a> core::ops::DerefMut for PhysicalDeviceMaintenance7FeaturesKHRBuilder<'a> {
24517    #[inline]
24518    fn deref_mut(&mut self) -> &mut Self::Target {
24519        &mut self.inner
24520    }
24521}
24522///Builder for [`PhysicalDeviceMaintenance7PropertiesKHR`] with lifetime-tied pNext safety.
24523pub struct PhysicalDeviceMaintenance7PropertiesKHRBuilder<'a> {
24524    inner: PhysicalDeviceMaintenance7PropertiesKHR,
24525    _marker: core::marker::PhantomData<&'a ()>,
24526}
24527impl PhysicalDeviceMaintenance7PropertiesKHR {
24528    /// Start building this struct; `s_type` is already set to the correct variant.
24529    #[inline]
24530    pub fn builder<'a>() -> PhysicalDeviceMaintenance7PropertiesKHRBuilder<'a> {
24531        PhysicalDeviceMaintenance7PropertiesKHRBuilder {
24532            inner: PhysicalDeviceMaintenance7PropertiesKHR {
24533                s_type: StructureType::from_raw(1000562001i32),
24534                ..Default::default()
24535            },
24536            _marker: core::marker::PhantomData,
24537        }
24538    }
24539}
24540impl<'a> PhysicalDeviceMaintenance7PropertiesKHRBuilder<'a> {
24541    #[inline]
24542    pub fn robust_fragment_shading_rate_attachment_access(
24543        mut self,
24544        value: bool,
24545    ) -> Self {
24546        self.inner.robust_fragment_shading_rate_attachment_access = value as u32;
24547        self
24548    }
24549    #[inline]
24550    pub fn separate_depth_stencil_attachment_access(mut self, value: bool) -> Self {
24551        self.inner.separate_depth_stencil_attachment_access = value as u32;
24552        self
24553    }
24554    #[inline]
24555    pub fn max_descriptor_set_total_uniform_buffers_dynamic(
24556        mut self,
24557        value: u32,
24558    ) -> Self {
24559        self.inner.max_descriptor_set_total_uniform_buffers_dynamic = value;
24560        self
24561    }
24562    #[inline]
24563    pub fn max_descriptor_set_total_storage_buffers_dynamic(
24564        mut self,
24565        value: u32,
24566    ) -> Self {
24567        self.inner.max_descriptor_set_total_storage_buffers_dynamic = value;
24568        self
24569    }
24570    #[inline]
24571    pub fn max_descriptor_set_total_buffers_dynamic(mut self, value: u32) -> Self {
24572        self.inner.max_descriptor_set_total_buffers_dynamic = value;
24573        self
24574    }
24575    #[inline]
24576    pub fn max_descriptor_set_update_after_bind_total_uniform_buffers_dynamic(
24577        mut self,
24578        value: u32,
24579    ) -> Self {
24580        self.inner.max_descriptor_set_update_after_bind_total_uniform_buffers_dynamic = value;
24581        self
24582    }
24583    #[inline]
24584    pub fn max_descriptor_set_update_after_bind_total_storage_buffers_dynamic(
24585        mut self,
24586        value: u32,
24587    ) -> Self {
24588        self.inner.max_descriptor_set_update_after_bind_total_storage_buffers_dynamic = value;
24589        self
24590    }
24591    #[inline]
24592    pub fn max_descriptor_set_update_after_bind_total_buffers_dynamic(
24593        mut self,
24594        value: u32,
24595    ) -> Self {
24596        self.inner.max_descriptor_set_update_after_bind_total_buffers_dynamic = value;
24597        self
24598    }
24599}
24600impl<'a> core::ops::Deref for PhysicalDeviceMaintenance7PropertiesKHRBuilder<'a> {
24601    type Target = PhysicalDeviceMaintenance7PropertiesKHR;
24602    #[inline]
24603    fn deref(&self) -> &Self::Target {
24604        &self.inner
24605    }
24606}
24607impl<'a> core::ops::DerefMut for PhysicalDeviceMaintenance7PropertiesKHRBuilder<'a> {
24608    #[inline]
24609    fn deref_mut(&mut self) -> &mut Self::Target {
24610        &mut self.inner
24611    }
24612}
24613///Builder for [`PhysicalDeviceLayeredApiPropertiesListKHR`] with lifetime-tied pNext safety.
24614pub struct PhysicalDeviceLayeredApiPropertiesListKHRBuilder<'a> {
24615    inner: PhysicalDeviceLayeredApiPropertiesListKHR,
24616    _marker: core::marker::PhantomData<&'a ()>,
24617}
24618impl PhysicalDeviceLayeredApiPropertiesListKHR {
24619    /// Start building this struct; `s_type` is already set to the correct variant.
24620    #[inline]
24621    pub fn builder<'a>() -> PhysicalDeviceLayeredApiPropertiesListKHRBuilder<'a> {
24622        PhysicalDeviceLayeredApiPropertiesListKHRBuilder {
24623            inner: PhysicalDeviceLayeredApiPropertiesListKHR {
24624                s_type: StructureType::from_raw(1000562002i32),
24625                ..Default::default()
24626            },
24627            _marker: core::marker::PhantomData,
24628        }
24629    }
24630}
24631impl<'a> PhysicalDeviceLayeredApiPropertiesListKHRBuilder<'a> {
24632    #[inline]
24633    pub fn layered_api_count(mut self, value: u32) -> Self {
24634        self.inner.layered_api_count = value;
24635        self
24636    }
24637    #[inline]
24638    pub fn layered_apis(
24639        mut self,
24640        slice: &'a mut [PhysicalDeviceLayeredApiPropertiesKHR],
24641    ) -> Self {
24642        self.inner.layered_api_count = slice.len() as u32;
24643        self.inner.p_layered_apis = slice.as_mut_ptr();
24644        self
24645    }
24646    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceLayeredApiPropertiesListKHR`]'s **Extended By** section for valid types.
24647    #[inline]
24648    pub fn push_next<T: ExtendsPhysicalDeviceLayeredApiPropertiesListKHR>(
24649        mut self,
24650        next: &'a mut T,
24651    ) -> Self {
24652        unsafe {
24653            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
24654            (*next_ptr).p_next = self.inner.p_next as *mut _;
24655            self.inner.p_next = <*mut BaseOutStructure>::cast::<
24656                core::ffi::c_void,
24657            >(next_ptr);
24658        }
24659        self
24660    }
24661}
24662impl<'a> core::ops::Deref for PhysicalDeviceLayeredApiPropertiesListKHRBuilder<'a> {
24663    type Target = PhysicalDeviceLayeredApiPropertiesListKHR;
24664    #[inline]
24665    fn deref(&self) -> &Self::Target {
24666        &self.inner
24667    }
24668}
24669impl<'a> core::ops::DerefMut for PhysicalDeviceLayeredApiPropertiesListKHRBuilder<'a> {
24670    #[inline]
24671    fn deref_mut(&mut self) -> &mut Self::Target {
24672        &mut self.inner
24673    }
24674}
24675///Builder for [`PhysicalDeviceLayeredApiPropertiesKHR`] with lifetime-tied pNext safety.
24676pub struct PhysicalDeviceLayeredApiPropertiesKHRBuilder<'a> {
24677    inner: PhysicalDeviceLayeredApiPropertiesKHR,
24678    _marker: core::marker::PhantomData<&'a ()>,
24679}
24680impl PhysicalDeviceLayeredApiPropertiesKHR {
24681    /// Start building this struct; `s_type` is already set to the correct variant.
24682    #[inline]
24683    pub fn builder<'a>() -> PhysicalDeviceLayeredApiPropertiesKHRBuilder<'a> {
24684        PhysicalDeviceLayeredApiPropertiesKHRBuilder {
24685            inner: PhysicalDeviceLayeredApiPropertiesKHR {
24686                s_type: StructureType::from_raw(1000562003i32),
24687                ..Default::default()
24688            },
24689            _marker: core::marker::PhantomData,
24690        }
24691    }
24692}
24693impl<'a> PhysicalDeviceLayeredApiPropertiesKHRBuilder<'a> {
24694    #[inline]
24695    pub fn vendor_id(mut self, value: u32) -> Self {
24696        self.inner.vendor_id = value;
24697        self
24698    }
24699    #[inline]
24700    pub fn device_id(mut self, value: u32) -> Self {
24701        self.inner.device_id = value;
24702        self
24703    }
24704    #[inline]
24705    pub fn layered_api(mut self, value: PhysicalDeviceLayeredApiKHR) -> Self {
24706        self.inner.layered_api = value;
24707        self
24708    }
24709    #[inline]
24710    pub fn device_name(
24711        mut self,
24712        value: crate::StringArray<{ MAX_PHYSICAL_DEVICE_NAME_SIZE as usize }>,
24713    ) -> Self {
24714        self.inner.device_name = value;
24715        self
24716    }
24717}
24718impl<'a> core::ops::Deref for PhysicalDeviceLayeredApiPropertiesKHRBuilder<'a> {
24719    type Target = PhysicalDeviceLayeredApiPropertiesKHR;
24720    #[inline]
24721    fn deref(&self) -> &Self::Target {
24722        &self.inner
24723    }
24724}
24725impl<'a> core::ops::DerefMut for PhysicalDeviceLayeredApiPropertiesKHRBuilder<'a> {
24726    #[inline]
24727    fn deref_mut(&mut self) -> &mut Self::Target {
24728        &mut self.inner
24729    }
24730}
24731///Builder for [`PhysicalDeviceLayeredApiVulkanPropertiesKHR`] with lifetime-tied pNext safety.
24732pub struct PhysicalDeviceLayeredApiVulkanPropertiesKHRBuilder<'a> {
24733    inner: PhysicalDeviceLayeredApiVulkanPropertiesKHR,
24734    _marker: core::marker::PhantomData<&'a ()>,
24735}
24736impl PhysicalDeviceLayeredApiVulkanPropertiesKHR {
24737    /// Start building this struct; `s_type` is already set to the correct variant.
24738    #[inline]
24739    pub fn builder<'a>() -> PhysicalDeviceLayeredApiVulkanPropertiesKHRBuilder<'a> {
24740        PhysicalDeviceLayeredApiVulkanPropertiesKHRBuilder {
24741            inner: PhysicalDeviceLayeredApiVulkanPropertiesKHR {
24742                s_type: StructureType::from_raw(1000562004i32),
24743                ..Default::default()
24744            },
24745            _marker: core::marker::PhantomData,
24746        }
24747    }
24748}
24749impl<'a> PhysicalDeviceLayeredApiVulkanPropertiesKHRBuilder<'a> {
24750    #[inline]
24751    pub fn properties(mut self, value: PhysicalDeviceProperties2) -> Self {
24752        self.inner.properties = value;
24753        self
24754    }
24755}
24756impl<'a> core::ops::Deref for PhysicalDeviceLayeredApiVulkanPropertiesKHRBuilder<'a> {
24757    type Target = PhysicalDeviceLayeredApiVulkanPropertiesKHR;
24758    #[inline]
24759    fn deref(&self) -> &Self::Target {
24760        &self.inner
24761    }
24762}
24763impl<'a> core::ops::DerefMut for PhysicalDeviceLayeredApiVulkanPropertiesKHRBuilder<'a> {
24764    #[inline]
24765    fn deref_mut(&mut self) -> &mut Self::Target {
24766        &mut self.inner
24767    }
24768}
24769///Builder for [`PhysicalDeviceMaintenance8FeaturesKHR`] with lifetime-tied pNext safety.
24770pub struct PhysicalDeviceMaintenance8FeaturesKHRBuilder<'a> {
24771    inner: PhysicalDeviceMaintenance8FeaturesKHR,
24772    _marker: core::marker::PhantomData<&'a ()>,
24773}
24774impl PhysicalDeviceMaintenance8FeaturesKHR {
24775    /// Start building this struct; `s_type` is already set to the correct variant.
24776    #[inline]
24777    pub fn builder<'a>() -> PhysicalDeviceMaintenance8FeaturesKHRBuilder<'a> {
24778        PhysicalDeviceMaintenance8FeaturesKHRBuilder {
24779            inner: PhysicalDeviceMaintenance8FeaturesKHR {
24780                s_type: StructureType::from_raw(1000574000i32),
24781                ..Default::default()
24782            },
24783            _marker: core::marker::PhantomData,
24784        }
24785    }
24786}
24787impl<'a> PhysicalDeviceMaintenance8FeaturesKHRBuilder<'a> {
24788    #[inline]
24789    pub fn maintenance8(mut self, value: bool) -> Self {
24790        self.inner.maintenance8 = value as u32;
24791        self
24792    }
24793    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceMaintenance8FeaturesKHR`]'s **Extended By** section for valid types.
24794    #[inline]
24795    pub fn push_next<T: ExtendsPhysicalDeviceMaintenance8FeaturesKHR>(
24796        mut self,
24797        next: &'a mut T,
24798    ) -> Self {
24799        unsafe {
24800            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
24801            (*next_ptr).p_next = self.inner.p_next as *mut _;
24802            self.inner.p_next = <*mut BaseOutStructure>::cast::<
24803                core::ffi::c_void,
24804            >(next_ptr);
24805        }
24806        self
24807    }
24808}
24809impl<'a> core::ops::Deref for PhysicalDeviceMaintenance8FeaturesKHRBuilder<'a> {
24810    type Target = PhysicalDeviceMaintenance8FeaturesKHR;
24811    #[inline]
24812    fn deref(&self) -> &Self::Target {
24813        &self.inner
24814    }
24815}
24816impl<'a> core::ops::DerefMut for PhysicalDeviceMaintenance8FeaturesKHRBuilder<'a> {
24817    #[inline]
24818    fn deref_mut(&mut self) -> &mut Self::Target {
24819        &mut self.inner
24820    }
24821}
24822///Builder for [`PhysicalDeviceMaintenance9FeaturesKHR`] with lifetime-tied pNext safety.
24823pub struct PhysicalDeviceMaintenance9FeaturesKHRBuilder<'a> {
24824    inner: PhysicalDeviceMaintenance9FeaturesKHR,
24825    _marker: core::marker::PhantomData<&'a ()>,
24826}
24827impl PhysicalDeviceMaintenance9FeaturesKHR {
24828    /// Start building this struct; `s_type` is already set to the correct variant.
24829    #[inline]
24830    pub fn builder<'a>() -> PhysicalDeviceMaintenance9FeaturesKHRBuilder<'a> {
24831        PhysicalDeviceMaintenance9FeaturesKHRBuilder {
24832            inner: PhysicalDeviceMaintenance9FeaturesKHR {
24833                s_type: StructureType::from_raw(1000584000i32),
24834                ..Default::default()
24835            },
24836            _marker: core::marker::PhantomData,
24837        }
24838    }
24839}
24840impl<'a> PhysicalDeviceMaintenance9FeaturesKHRBuilder<'a> {
24841    #[inline]
24842    pub fn maintenance9(mut self, value: bool) -> Self {
24843        self.inner.maintenance9 = value as u32;
24844        self
24845    }
24846    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceMaintenance9FeaturesKHR`]'s **Extended By** section for valid types.
24847    #[inline]
24848    pub fn push_next<T: ExtendsPhysicalDeviceMaintenance9FeaturesKHR>(
24849        mut self,
24850        next: &'a mut T,
24851    ) -> Self {
24852        unsafe {
24853            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
24854            (*next_ptr).p_next = self.inner.p_next as *mut _;
24855            self.inner.p_next = <*mut BaseOutStructure>::cast::<
24856                core::ffi::c_void,
24857            >(next_ptr);
24858        }
24859        self
24860    }
24861}
24862impl<'a> core::ops::Deref for PhysicalDeviceMaintenance9FeaturesKHRBuilder<'a> {
24863    type Target = PhysicalDeviceMaintenance9FeaturesKHR;
24864    #[inline]
24865    fn deref(&self) -> &Self::Target {
24866        &self.inner
24867    }
24868}
24869impl<'a> core::ops::DerefMut for PhysicalDeviceMaintenance9FeaturesKHRBuilder<'a> {
24870    #[inline]
24871    fn deref_mut(&mut self) -> &mut Self::Target {
24872        &mut self.inner
24873    }
24874}
24875///Builder for [`PhysicalDeviceMaintenance9PropertiesKHR`] with lifetime-tied pNext safety.
24876pub struct PhysicalDeviceMaintenance9PropertiesKHRBuilder<'a> {
24877    inner: PhysicalDeviceMaintenance9PropertiesKHR,
24878    _marker: core::marker::PhantomData<&'a ()>,
24879}
24880impl PhysicalDeviceMaintenance9PropertiesKHR {
24881    /// Start building this struct; `s_type` is already set to the correct variant.
24882    #[inline]
24883    pub fn builder<'a>() -> PhysicalDeviceMaintenance9PropertiesKHRBuilder<'a> {
24884        PhysicalDeviceMaintenance9PropertiesKHRBuilder {
24885            inner: PhysicalDeviceMaintenance9PropertiesKHR {
24886                s_type: StructureType::from_raw(1000584001i32),
24887                ..Default::default()
24888            },
24889            _marker: core::marker::PhantomData,
24890        }
24891    }
24892}
24893impl<'a> PhysicalDeviceMaintenance9PropertiesKHRBuilder<'a> {
24894    #[inline]
24895    pub fn image2_d_view_of3_d_sparse(mut self, value: bool) -> Self {
24896        self.inner.image2_d_view_of3_d_sparse = value as u32;
24897        self
24898    }
24899    #[inline]
24900    pub fn default_vertex_attribute_value(
24901        mut self,
24902        value: DefaultVertexAttributeValueKHR,
24903    ) -> Self {
24904        self.inner.default_vertex_attribute_value = value;
24905        self
24906    }
24907}
24908impl<'a> core::ops::Deref for PhysicalDeviceMaintenance9PropertiesKHRBuilder<'a> {
24909    type Target = PhysicalDeviceMaintenance9PropertiesKHR;
24910    #[inline]
24911    fn deref(&self) -> &Self::Target {
24912        &self.inner
24913    }
24914}
24915impl<'a> core::ops::DerefMut for PhysicalDeviceMaintenance9PropertiesKHRBuilder<'a> {
24916    #[inline]
24917    fn deref_mut(&mut self) -> &mut Self::Target {
24918        &mut self.inner
24919    }
24920}
24921///Builder for [`PhysicalDeviceMaintenance10PropertiesKHR`] with lifetime-tied pNext safety.
24922pub struct PhysicalDeviceMaintenance10PropertiesKHRBuilder<'a> {
24923    inner: PhysicalDeviceMaintenance10PropertiesKHR,
24924    _marker: core::marker::PhantomData<&'a ()>,
24925}
24926impl PhysicalDeviceMaintenance10PropertiesKHR {
24927    /// Start building this struct; `s_type` is already set to the correct variant.
24928    #[inline]
24929    pub fn builder<'a>() -> PhysicalDeviceMaintenance10PropertiesKHRBuilder<'a> {
24930        PhysicalDeviceMaintenance10PropertiesKHRBuilder {
24931            inner: PhysicalDeviceMaintenance10PropertiesKHR {
24932                s_type: StructureType::from_raw(1000630001i32),
24933                ..Default::default()
24934            },
24935            _marker: core::marker::PhantomData,
24936        }
24937    }
24938}
24939impl<'a> PhysicalDeviceMaintenance10PropertiesKHRBuilder<'a> {
24940    #[inline]
24941    pub fn rgba4_opaque_black_swizzled(mut self, value: bool) -> Self {
24942        self.inner.rgba4_opaque_black_swizzled = value as u32;
24943        self
24944    }
24945    #[inline]
24946    pub fn resolve_srgb_format_applies_transfer_function(mut self, value: bool) -> Self {
24947        self.inner.resolve_srgb_format_applies_transfer_function = value as u32;
24948        self
24949    }
24950    #[inline]
24951    pub fn resolve_srgb_format_supports_transfer_function_control(
24952        mut self,
24953        value: bool,
24954    ) -> Self {
24955        self.inner.resolve_srgb_format_supports_transfer_function_control = value as u32;
24956        self
24957    }
24958}
24959impl<'a> core::ops::Deref for PhysicalDeviceMaintenance10PropertiesKHRBuilder<'a> {
24960    type Target = PhysicalDeviceMaintenance10PropertiesKHR;
24961    #[inline]
24962    fn deref(&self) -> &Self::Target {
24963        &self.inner
24964    }
24965}
24966impl<'a> core::ops::DerefMut for PhysicalDeviceMaintenance10PropertiesKHRBuilder<'a> {
24967    #[inline]
24968    fn deref_mut(&mut self) -> &mut Self::Target {
24969        &mut self.inner
24970    }
24971}
24972///Builder for [`PhysicalDeviceMaintenance10FeaturesKHR`] with lifetime-tied pNext safety.
24973pub struct PhysicalDeviceMaintenance10FeaturesKHRBuilder<'a> {
24974    inner: PhysicalDeviceMaintenance10FeaturesKHR,
24975    _marker: core::marker::PhantomData<&'a ()>,
24976}
24977impl PhysicalDeviceMaintenance10FeaturesKHR {
24978    /// Start building this struct; `s_type` is already set to the correct variant.
24979    #[inline]
24980    pub fn builder<'a>() -> PhysicalDeviceMaintenance10FeaturesKHRBuilder<'a> {
24981        PhysicalDeviceMaintenance10FeaturesKHRBuilder {
24982            inner: PhysicalDeviceMaintenance10FeaturesKHR {
24983                s_type: StructureType::from_raw(1000630000i32),
24984                ..Default::default()
24985            },
24986            _marker: core::marker::PhantomData,
24987        }
24988    }
24989}
24990impl<'a> PhysicalDeviceMaintenance10FeaturesKHRBuilder<'a> {
24991    #[inline]
24992    pub fn maintenance10(mut self, value: bool) -> Self {
24993        self.inner.maintenance10 = value as u32;
24994        self
24995    }
24996    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceMaintenance10FeaturesKHR`]'s **Extended By** section for valid types.
24997    #[inline]
24998    pub fn push_next<T: ExtendsPhysicalDeviceMaintenance10FeaturesKHR>(
24999        mut self,
25000        next: &'a mut T,
25001    ) -> Self {
25002        unsafe {
25003            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
25004            (*next_ptr).p_next = self.inner.p_next as *mut _;
25005            self.inner.p_next = <*mut BaseOutStructure>::cast::<
25006                core::ffi::c_void,
25007            >(next_ptr);
25008        }
25009        self
25010    }
25011}
25012impl<'a> core::ops::Deref for PhysicalDeviceMaintenance10FeaturesKHRBuilder<'a> {
25013    type Target = PhysicalDeviceMaintenance10FeaturesKHR;
25014    #[inline]
25015    fn deref(&self) -> &Self::Target {
25016        &self.inner
25017    }
25018}
25019impl<'a> core::ops::DerefMut for PhysicalDeviceMaintenance10FeaturesKHRBuilder<'a> {
25020    #[inline]
25021    fn deref_mut(&mut self) -> &mut Self::Target {
25022        &mut self.inner
25023    }
25024}
25025///Builder for [`QueueFamilyOwnershipTransferPropertiesKHR`] with lifetime-tied pNext safety.
25026pub struct QueueFamilyOwnershipTransferPropertiesKHRBuilder<'a> {
25027    inner: QueueFamilyOwnershipTransferPropertiesKHR,
25028    _marker: core::marker::PhantomData<&'a ()>,
25029}
25030impl QueueFamilyOwnershipTransferPropertiesKHR {
25031    /// Start building this struct; `s_type` is already set to the correct variant.
25032    #[inline]
25033    pub fn builder<'a>() -> QueueFamilyOwnershipTransferPropertiesKHRBuilder<'a> {
25034        QueueFamilyOwnershipTransferPropertiesKHRBuilder {
25035            inner: QueueFamilyOwnershipTransferPropertiesKHR {
25036                s_type: StructureType::from_raw(1000584002i32),
25037                ..Default::default()
25038            },
25039            _marker: core::marker::PhantomData,
25040        }
25041    }
25042}
25043impl<'a> QueueFamilyOwnershipTransferPropertiesKHRBuilder<'a> {
25044    #[inline]
25045    pub fn optimal_image_transfer_to_queue_families(mut self, value: u32) -> Self {
25046        self.inner.optimal_image_transfer_to_queue_families = value;
25047        self
25048    }
25049}
25050impl<'a> core::ops::Deref for QueueFamilyOwnershipTransferPropertiesKHRBuilder<'a> {
25051    type Target = QueueFamilyOwnershipTransferPropertiesKHR;
25052    #[inline]
25053    fn deref(&self) -> &Self::Target {
25054        &self.inner
25055    }
25056}
25057impl<'a> core::ops::DerefMut for QueueFamilyOwnershipTransferPropertiesKHRBuilder<'a> {
25058    #[inline]
25059    fn deref_mut(&mut self) -> &mut Self::Target {
25060        &mut self.inner
25061    }
25062}
25063///Builder for [`RenderingAreaInfo`] with lifetime-tied pNext safety.
25064pub struct RenderingAreaInfoBuilder<'a> {
25065    inner: RenderingAreaInfo,
25066    _marker: core::marker::PhantomData<&'a ()>,
25067}
25068impl RenderingAreaInfo {
25069    /// Start building this struct; `s_type` is already set to the correct variant.
25070    #[inline]
25071    pub fn builder<'a>() -> RenderingAreaInfoBuilder<'a> {
25072        RenderingAreaInfoBuilder {
25073            inner: RenderingAreaInfo {
25074                s_type: StructureType::from_raw(1000470003i32),
25075                ..Default::default()
25076            },
25077            _marker: core::marker::PhantomData,
25078        }
25079    }
25080}
25081impl<'a> RenderingAreaInfoBuilder<'a> {
25082    #[inline]
25083    pub fn view_mask(mut self, value: u32) -> Self {
25084        self.inner.view_mask = value;
25085        self
25086    }
25087    #[inline]
25088    pub fn color_attachment_formats(mut self, slice: &'a [Format]) -> Self {
25089        self.inner.color_attachment_count = slice.len() as u32;
25090        self.inner.p_color_attachment_formats = slice.as_ptr();
25091        self
25092    }
25093    #[inline]
25094    pub fn depth_attachment_format(mut self, value: Format) -> Self {
25095        self.inner.depth_attachment_format = value;
25096        self
25097    }
25098    #[inline]
25099    pub fn stencil_attachment_format(mut self, value: Format) -> Self {
25100        self.inner.stencil_attachment_format = value;
25101        self
25102    }
25103    ///Prepend a struct to the pNext chain. See [`RenderingAreaInfo`]'s **Extended By** section for valid types.
25104    #[inline]
25105    pub fn push_next<T: ExtendsRenderingAreaInfo>(mut self, next: &'a mut T) -> Self {
25106        unsafe {
25107            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
25108            (*next_ptr).p_next = self.inner.p_next as *mut _;
25109            self.inner.p_next = <*mut BaseOutStructure>::cast::<
25110                core::ffi::c_void,
25111            >(next_ptr) as *const _;
25112        }
25113        self
25114    }
25115}
25116impl<'a> core::ops::Deref for RenderingAreaInfoBuilder<'a> {
25117    type Target = RenderingAreaInfo;
25118    #[inline]
25119    fn deref(&self) -> &Self::Target {
25120        &self.inner
25121    }
25122}
25123impl<'a> core::ops::DerefMut for RenderingAreaInfoBuilder<'a> {
25124    #[inline]
25125    fn deref_mut(&mut self) -> &mut Self::Target {
25126        &mut self.inner
25127    }
25128}
25129///Builder for [`DescriptorSetLayoutSupport`] with lifetime-tied pNext safety.
25130pub struct DescriptorSetLayoutSupportBuilder<'a> {
25131    inner: DescriptorSetLayoutSupport,
25132    _marker: core::marker::PhantomData<&'a ()>,
25133}
25134impl DescriptorSetLayoutSupport {
25135    /// Start building this struct; `s_type` is already set to the correct variant.
25136    #[inline]
25137    pub fn builder<'a>() -> DescriptorSetLayoutSupportBuilder<'a> {
25138        DescriptorSetLayoutSupportBuilder {
25139            inner: DescriptorSetLayoutSupport {
25140                s_type: StructureType::from_raw(1000168001i32),
25141                ..Default::default()
25142            },
25143            _marker: core::marker::PhantomData,
25144        }
25145    }
25146}
25147impl<'a> DescriptorSetLayoutSupportBuilder<'a> {
25148    #[inline]
25149    pub fn supported(mut self, value: bool) -> Self {
25150        self.inner.supported = value as u32;
25151        self
25152    }
25153}
25154impl<'a> core::ops::Deref for DescriptorSetLayoutSupportBuilder<'a> {
25155    type Target = DescriptorSetLayoutSupport;
25156    #[inline]
25157    fn deref(&self) -> &Self::Target {
25158        &self.inner
25159    }
25160}
25161impl<'a> core::ops::DerefMut for DescriptorSetLayoutSupportBuilder<'a> {
25162    #[inline]
25163    fn deref_mut(&mut self) -> &mut Self::Target {
25164        &mut self.inner
25165    }
25166}
25167///Builder for [`PhysicalDeviceShaderDrawParametersFeatures`] with lifetime-tied pNext safety.
25168pub struct PhysicalDeviceShaderDrawParametersFeaturesBuilder<'a> {
25169    inner: PhysicalDeviceShaderDrawParametersFeatures,
25170    _marker: core::marker::PhantomData<&'a ()>,
25171}
25172impl PhysicalDeviceShaderDrawParametersFeatures {
25173    /// Start building this struct; `s_type` is already set to the correct variant.
25174    #[inline]
25175    pub fn builder<'a>() -> PhysicalDeviceShaderDrawParametersFeaturesBuilder<'a> {
25176        PhysicalDeviceShaderDrawParametersFeaturesBuilder {
25177            inner: PhysicalDeviceShaderDrawParametersFeatures {
25178                s_type: StructureType::from_raw(1000063000i32),
25179                ..Default::default()
25180            },
25181            _marker: core::marker::PhantomData,
25182        }
25183    }
25184}
25185impl<'a> PhysicalDeviceShaderDrawParametersFeaturesBuilder<'a> {
25186    #[inline]
25187    pub fn shader_draw_parameters(mut self, value: bool) -> Self {
25188        self.inner.shader_draw_parameters = value as u32;
25189        self
25190    }
25191    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderDrawParametersFeatures`]'s **Extended By** section for valid types.
25192    #[inline]
25193    pub fn push_next<T: ExtendsPhysicalDeviceShaderDrawParametersFeatures>(
25194        mut self,
25195        next: &'a mut T,
25196    ) -> Self {
25197        unsafe {
25198            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
25199            (*next_ptr).p_next = self.inner.p_next as *mut _;
25200            self.inner.p_next = <*mut BaseOutStructure>::cast::<
25201                core::ffi::c_void,
25202            >(next_ptr);
25203        }
25204        self
25205    }
25206}
25207impl<'a> core::ops::Deref for PhysicalDeviceShaderDrawParametersFeaturesBuilder<'a> {
25208    type Target = PhysicalDeviceShaderDrawParametersFeatures;
25209    #[inline]
25210    fn deref(&self) -> &Self::Target {
25211        &self.inner
25212    }
25213}
25214impl<'a> core::ops::DerefMut for PhysicalDeviceShaderDrawParametersFeaturesBuilder<'a> {
25215    #[inline]
25216    fn deref_mut(&mut self) -> &mut Self::Target {
25217        &mut self.inner
25218    }
25219}
25220///Builder for [`PhysicalDeviceShaderFloat16Int8Features`] with lifetime-tied pNext safety.
25221pub struct PhysicalDeviceShaderFloat16Int8FeaturesBuilder<'a> {
25222    inner: PhysicalDeviceShaderFloat16Int8Features,
25223    _marker: core::marker::PhantomData<&'a ()>,
25224}
25225impl PhysicalDeviceShaderFloat16Int8Features {
25226    /// Start building this struct; `s_type` is already set to the correct variant.
25227    #[inline]
25228    pub fn builder<'a>() -> PhysicalDeviceShaderFloat16Int8FeaturesBuilder<'a> {
25229        PhysicalDeviceShaderFloat16Int8FeaturesBuilder {
25230            inner: PhysicalDeviceShaderFloat16Int8Features {
25231                s_type: StructureType::from_raw(1000082000i32),
25232                ..Default::default()
25233            },
25234            _marker: core::marker::PhantomData,
25235        }
25236    }
25237}
25238impl<'a> PhysicalDeviceShaderFloat16Int8FeaturesBuilder<'a> {
25239    #[inline]
25240    pub fn shader_float16(mut self, value: bool) -> Self {
25241        self.inner.shader_float16 = value as u32;
25242        self
25243    }
25244    #[inline]
25245    pub fn shader_int8(mut self, value: bool) -> Self {
25246        self.inner.shader_int8 = value as u32;
25247        self
25248    }
25249    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderFloat16Int8Features`]'s **Extended By** section for valid types.
25250    #[inline]
25251    pub fn push_next<T: ExtendsPhysicalDeviceShaderFloat16Int8Features>(
25252        mut self,
25253        next: &'a mut T,
25254    ) -> Self {
25255        unsafe {
25256            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
25257            (*next_ptr).p_next = self.inner.p_next as *mut _;
25258            self.inner.p_next = <*mut BaseOutStructure>::cast::<
25259                core::ffi::c_void,
25260            >(next_ptr);
25261        }
25262        self
25263    }
25264}
25265impl<'a> core::ops::Deref for PhysicalDeviceShaderFloat16Int8FeaturesBuilder<'a> {
25266    type Target = PhysicalDeviceShaderFloat16Int8Features;
25267    #[inline]
25268    fn deref(&self) -> &Self::Target {
25269        &self.inner
25270    }
25271}
25272impl<'a> core::ops::DerefMut for PhysicalDeviceShaderFloat16Int8FeaturesBuilder<'a> {
25273    #[inline]
25274    fn deref_mut(&mut self) -> &mut Self::Target {
25275        &mut self.inner
25276    }
25277}
25278///Builder for [`PhysicalDeviceFloatControlsProperties`] with lifetime-tied pNext safety.
25279pub struct PhysicalDeviceFloatControlsPropertiesBuilder<'a> {
25280    inner: PhysicalDeviceFloatControlsProperties,
25281    _marker: core::marker::PhantomData<&'a ()>,
25282}
25283impl PhysicalDeviceFloatControlsProperties {
25284    /// Start building this struct; `s_type` is already set to the correct variant.
25285    #[inline]
25286    pub fn builder<'a>() -> PhysicalDeviceFloatControlsPropertiesBuilder<'a> {
25287        PhysicalDeviceFloatControlsPropertiesBuilder {
25288            inner: PhysicalDeviceFloatControlsProperties {
25289                s_type: StructureType::from_raw(1000197000i32),
25290                ..Default::default()
25291            },
25292            _marker: core::marker::PhantomData,
25293        }
25294    }
25295}
25296impl<'a> PhysicalDeviceFloatControlsPropertiesBuilder<'a> {
25297    #[inline]
25298    pub fn denorm_behavior_independence(
25299        mut self,
25300        value: ShaderFloatControlsIndependence,
25301    ) -> Self {
25302        self.inner.denorm_behavior_independence = value;
25303        self
25304    }
25305    #[inline]
25306    pub fn rounding_mode_independence(
25307        mut self,
25308        value: ShaderFloatControlsIndependence,
25309    ) -> Self {
25310        self.inner.rounding_mode_independence = value;
25311        self
25312    }
25313    #[inline]
25314    pub fn shader_signed_zero_inf_nan_preserve_float16(mut self, value: bool) -> Self {
25315        self.inner.shader_signed_zero_inf_nan_preserve_float16 = value as u32;
25316        self
25317    }
25318    #[inline]
25319    pub fn shader_signed_zero_inf_nan_preserve_float32(mut self, value: bool) -> Self {
25320        self.inner.shader_signed_zero_inf_nan_preserve_float32 = value as u32;
25321        self
25322    }
25323    #[inline]
25324    pub fn shader_signed_zero_inf_nan_preserve_float64(mut self, value: bool) -> Self {
25325        self.inner.shader_signed_zero_inf_nan_preserve_float64 = value as u32;
25326        self
25327    }
25328    #[inline]
25329    pub fn shader_denorm_preserve_float16(mut self, value: bool) -> Self {
25330        self.inner.shader_denorm_preserve_float16 = value as u32;
25331        self
25332    }
25333    #[inline]
25334    pub fn shader_denorm_preserve_float32(mut self, value: bool) -> Self {
25335        self.inner.shader_denorm_preserve_float32 = value as u32;
25336        self
25337    }
25338    #[inline]
25339    pub fn shader_denorm_preserve_float64(mut self, value: bool) -> Self {
25340        self.inner.shader_denorm_preserve_float64 = value as u32;
25341        self
25342    }
25343    #[inline]
25344    pub fn shader_denorm_flush_to_zero_float16(mut self, value: bool) -> Self {
25345        self.inner.shader_denorm_flush_to_zero_float16 = value as u32;
25346        self
25347    }
25348    #[inline]
25349    pub fn shader_denorm_flush_to_zero_float32(mut self, value: bool) -> Self {
25350        self.inner.shader_denorm_flush_to_zero_float32 = value as u32;
25351        self
25352    }
25353    #[inline]
25354    pub fn shader_denorm_flush_to_zero_float64(mut self, value: bool) -> Self {
25355        self.inner.shader_denorm_flush_to_zero_float64 = value as u32;
25356        self
25357    }
25358    #[inline]
25359    pub fn shader_rounding_mode_rte_float16(mut self, value: bool) -> Self {
25360        self.inner.shader_rounding_mode_rte_float16 = value as u32;
25361        self
25362    }
25363    #[inline]
25364    pub fn shader_rounding_mode_rte_float32(mut self, value: bool) -> Self {
25365        self.inner.shader_rounding_mode_rte_float32 = value as u32;
25366        self
25367    }
25368    #[inline]
25369    pub fn shader_rounding_mode_rte_float64(mut self, value: bool) -> Self {
25370        self.inner.shader_rounding_mode_rte_float64 = value as u32;
25371        self
25372    }
25373    #[inline]
25374    pub fn shader_rounding_mode_rtz_float16(mut self, value: bool) -> Self {
25375        self.inner.shader_rounding_mode_rtz_float16 = value as u32;
25376        self
25377    }
25378    #[inline]
25379    pub fn shader_rounding_mode_rtz_float32(mut self, value: bool) -> Self {
25380        self.inner.shader_rounding_mode_rtz_float32 = value as u32;
25381        self
25382    }
25383    #[inline]
25384    pub fn shader_rounding_mode_rtz_float64(mut self, value: bool) -> Self {
25385        self.inner.shader_rounding_mode_rtz_float64 = value as u32;
25386        self
25387    }
25388}
25389impl<'a> core::ops::Deref for PhysicalDeviceFloatControlsPropertiesBuilder<'a> {
25390    type Target = PhysicalDeviceFloatControlsProperties;
25391    #[inline]
25392    fn deref(&self) -> &Self::Target {
25393        &self.inner
25394    }
25395}
25396impl<'a> core::ops::DerefMut for PhysicalDeviceFloatControlsPropertiesBuilder<'a> {
25397    #[inline]
25398    fn deref_mut(&mut self) -> &mut Self::Target {
25399        &mut self.inner
25400    }
25401}
25402///Builder for [`PhysicalDeviceHostQueryResetFeatures`] with lifetime-tied pNext safety.
25403pub struct PhysicalDeviceHostQueryResetFeaturesBuilder<'a> {
25404    inner: PhysicalDeviceHostQueryResetFeatures,
25405    _marker: core::marker::PhantomData<&'a ()>,
25406}
25407impl PhysicalDeviceHostQueryResetFeatures {
25408    /// Start building this struct; `s_type` is already set to the correct variant.
25409    #[inline]
25410    pub fn builder<'a>() -> PhysicalDeviceHostQueryResetFeaturesBuilder<'a> {
25411        PhysicalDeviceHostQueryResetFeaturesBuilder {
25412            inner: PhysicalDeviceHostQueryResetFeatures {
25413                s_type: StructureType::from_raw(1000261000i32),
25414                ..Default::default()
25415            },
25416            _marker: core::marker::PhantomData,
25417        }
25418    }
25419}
25420impl<'a> PhysicalDeviceHostQueryResetFeaturesBuilder<'a> {
25421    #[inline]
25422    pub fn host_query_reset(mut self, value: bool) -> Self {
25423        self.inner.host_query_reset = value as u32;
25424        self
25425    }
25426    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceHostQueryResetFeatures`]'s **Extended By** section for valid types.
25427    #[inline]
25428    pub fn push_next<T: ExtendsPhysicalDeviceHostQueryResetFeatures>(
25429        mut self,
25430        next: &'a mut T,
25431    ) -> Self {
25432        unsafe {
25433            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
25434            (*next_ptr).p_next = self.inner.p_next as *mut _;
25435            self.inner.p_next = <*mut BaseOutStructure>::cast::<
25436                core::ffi::c_void,
25437            >(next_ptr);
25438        }
25439        self
25440    }
25441}
25442impl<'a> core::ops::Deref for PhysicalDeviceHostQueryResetFeaturesBuilder<'a> {
25443    type Target = PhysicalDeviceHostQueryResetFeatures;
25444    #[inline]
25445    fn deref(&self) -> &Self::Target {
25446        &self.inner
25447    }
25448}
25449impl<'a> core::ops::DerefMut for PhysicalDeviceHostQueryResetFeaturesBuilder<'a> {
25450    #[inline]
25451    fn deref_mut(&mut self) -> &mut Self::Target {
25452        &mut self.inner
25453    }
25454}
25455///Builder for [`NativeBufferUsage2ANDROID`].
25456pub struct NativeBufferUsage2ANDROIDBuilder {
25457    inner: NativeBufferUsage2ANDROID,
25458}
25459impl NativeBufferUsage2ANDROID {
25460    /// Start building this struct.
25461    #[inline]
25462    pub fn builder() -> NativeBufferUsage2ANDROIDBuilder {
25463        NativeBufferUsage2ANDROIDBuilder {
25464            inner: NativeBufferUsage2ANDROID {
25465                ..Default::default()
25466            },
25467        }
25468    }
25469}
25470impl NativeBufferUsage2ANDROIDBuilder {
25471    #[inline]
25472    pub fn consumer(mut self, value: u64) -> Self {
25473        self.inner.consumer = value;
25474        self
25475    }
25476    #[inline]
25477    pub fn producer(mut self, value: u64) -> Self {
25478        self.inner.producer = value;
25479        self
25480    }
25481}
25482impl core::ops::Deref for NativeBufferUsage2ANDROIDBuilder {
25483    type Target = NativeBufferUsage2ANDROID;
25484    #[inline]
25485    fn deref(&self) -> &Self::Target {
25486        &self.inner
25487    }
25488}
25489impl core::ops::DerefMut for NativeBufferUsage2ANDROIDBuilder {
25490    #[inline]
25491    fn deref_mut(&mut self) -> &mut Self::Target {
25492        &mut self.inner
25493    }
25494}
25495///Builder for [`NativeBufferANDROID`] with lifetime-tied pNext safety.
25496pub struct NativeBufferANDROIDBuilder<'a> {
25497    inner: NativeBufferANDROID,
25498    _marker: core::marker::PhantomData<&'a ()>,
25499}
25500impl NativeBufferANDROID {
25501    /// Start building this struct; `s_type` is already set to the correct variant.
25502    #[inline]
25503    pub fn builder<'a>() -> NativeBufferANDROIDBuilder<'a> {
25504        NativeBufferANDROIDBuilder {
25505            inner: NativeBufferANDROID {
25506                s_type: Default::default(),
25507                ..Default::default()
25508            },
25509            _marker: core::marker::PhantomData,
25510        }
25511    }
25512}
25513impl<'a> NativeBufferANDROIDBuilder<'a> {
25514    #[inline]
25515    pub fn handle(mut self, value: *const core::ffi::c_void) -> Self {
25516        self.inner.handle = value;
25517        self
25518    }
25519    #[inline]
25520    pub fn stride(mut self, value: core::ffi::c_int) -> Self {
25521        self.inner.stride = value;
25522        self
25523    }
25524    #[inline]
25525    pub fn format(mut self, value: core::ffi::c_int) -> Self {
25526        self.inner.format = value;
25527        self
25528    }
25529    #[inline]
25530    pub fn usage(mut self, value: core::ffi::c_int) -> Self {
25531        self.inner.usage = value;
25532        self
25533    }
25534    #[inline]
25535    pub fn usage2(mut self, value: NativeBufferUsage2ANDROID) -> Self {
25536        self.inner.usage2 = value;
25537        self
25538    }
25539    ///Prepend a struct to the pNext chain. See [`NativeBufferANDROID`]'s **Extended By** section for valid types.
25540    #[inline]
25541    pub fn push_next<T: ExtendsNativeBufferANDROID>(mut self, next: &'a mut T) -> Self {
25542        unsafe {
25543            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
25544            (*next_ptr).p_next = self.inner.p_next as *mut _;
25545            self.inner.p_next = <*mut BaseOutStructure>::cast::<
25546                core::ffi::c_void,
25547            >(next_ptr) as *const _;
25548        }
25549        self
25550    }
25551}
25552impl<'a> core::ops::Deref for NativeBufferANDROIDBuilder<'a> {
25553    type Target = NativeBufferANDROID;
25554    #[inline]
25555    fn deref(&self) -> &Self::Target {
25556        &self.inner
25557    }
25558}
25559impl<'a> core::ops::DerefMut for NativeBufferANDROIDBuilder<'a> {
25560    #[inline]
25561    fn deref_mut(&mut self) -> &mut Self::Target {
25562        &mut self.inner
25563    }
25564}
25565///Builder for [`SwapchainImageCreateInfoANDROID`] with lifetime-tied pNext safety.
25566pub struct SwapchainImageCreateInfoANDROIDBuilder<'a> {
25567    inner: SwapchainImageCreateInfoANDROID,
25568    _marker: core::marker::PhantomData<&'a ()>,
25569}
25570impl SwapchainImageCreateInfoANDROID {
25571    /// Start building this struct; `s_type` is already set to the correct variant.
25572    #[inline]
25573    pub fn builder<'a>() -> SwapchainImageCreateInfoANDROIDBuilder<'a> {
25574        SwapchainImageCreateInfoANDROIDBuilder {
25575            inner: SwapchainImageCreateInfoANDROID {
25576                s_type: Default::default(),
25577                ..Default::default()
25578            },
25579            _marker: core::marker::PhantomData,
25580        }
25581    }
25582}
25583impl<'a> SwapchainImageCreateInfoANDROIDBuilder<'a> {
25584    #[inline]
25585    pub fn usage(mut self, value: SwapchainImageUsageFlagsANDROID) -> Self {
25586        self.inner.usage = value;
25587        self
25588    }
25589    ///Prepend a struct to the pNext chain. See [`SwapchainImageCreateInfoANDROID`]'s **Extended By** section for valid types.
25590    #[inline]
25591    pub fn push_next<T: ExtendsSwapchainImageCreateInfoANDROID>(
25592        mut self,
25593        next: &'a mut T,
25594    ) -> Self {
25595        unsafe {
25596            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
25597            (*next_ptr).p_next = self.inner.p_next as *mut _;
25598            self.inner.p_next = <*mut BaseOutStructure>::cast::<
25599                core::ffi::c_void,
25600            >(next_ptr) as *const _;
25601        }
25602        self
25603    }
25604}
25605impl<'a> core::ops::Deref for SwapchainImageCreateInfoANDROIDBuilder<'a> {
25606    type Target = SwapchainImageCreateInfoANDROID;
25607    #[inline]
25608    fn deref(&self) -> &Self::Target {
25609        &self.inner
25610    }
25611}
25612impl<'a> core::ops::DerefMut for SwapchainImageCreateInfoANDROIDBuilder<'a> {
25613    #[inline]
25614    fn deref_mut(&mut self) -> &mut Self::Target {
25615        &mut self.inner
25616    }
25617}
25618///Builder for [`PhysicalDevicePresentationPropertiesANDROID`] with lifetime-tied pNext safety.
25619pub struct PhysicalDevicePresentationPropertiesANDROIDBuilder<'a> {
25620    inner: PhysicalDevicePresentationPropertiesANDROID,
25621    _marker: core::marker::PhantomData<&'a ()>,
25622}
25623impl PhysicalDevicePresentationPropertiesANDROID {
25624    /// Start building this struct; `s_type` is already set to the correct variant.
25625    #[inline]
25626    pub fn builder<'a>() -> PhysicalDevicePresentationPropertiesANDROIDBuilder<'a> {
25627        PhysicalDevicePresentationPropertiesANDROIDBuilder {
25628            inner: PhysicalDevicePresentationPropertiesANDROID {
25629                s_type: Default::default(),
25630                ..Default::default()
25631            },
25632            _marker: core::marker::PhantomData,
25633        }
25634    }
25635}
25636impl<'a> PhysicalDevicePresentationPropertiesANDROIDBuilder<'a> {
25637    #[inline]
25638    pub fn shared_image(mut self, value: bool) -> Self {
25639        self.inner.shared_image = value as u32;
25640        self
25641    }
25642}
25643impl<'a> core::ops::Deref for PhysicalDevicePresentationPropertiesANDROIDBuilder<'a> {
25644    type Target = PhysicalDevicePresentationPropertiesANDROID;
25645    #[inline]
25646    fn deref(&self) -> &Self::Target {
25647        &self.inner
25648    }
25649}
25650impl<'a> core::ops::DerefMut for PhysicalDevicePresentationPropertiesANDROIDBuilder<'a> {
25651    #[inline]
25652    fn deref_mut(&mut self) -> &mut Self::Target {
25653        &mut self.inner
25654    }
25655}
25656///Builder for [`ShaderResourceUsageAMD`].
25657pub struct ShaderResourceUsageAMDBuilder {
25658    inner: ShaderResourceUsageAMD,
25659}
25660impl ShaderResourceUsageAMD {
25661    /// Start building this struct.
25662    #[inline]
25663    pub fn builder() -> ShaderResourceUsageAMDBuilder {
25664        ShaderResourceUsageAMDBuilder {
25665            inner: ShaderResourceUsageAMD {
25666                ..Default::default()
25667            },
25668        }
25669    }
25670}
25671impl ShaderResourceUsageAMDBuilder {
25672    #[inline]
25673    pub fn num_used_vgprs(mut self, value: u32) -> Self {
25674        self.inner.num_used_vgprs = value;
25675        self
25676    }
25677    #[inline]
25678    pub fn num_used_sgprs(mut self, value: u32) -> Self {
25679        self.inner.num_used_sgprs = value;
25680        self
25681    }
25682    #[inline]
25683    pub fn lds_size_per_local_work_group(mut self, value: u32) -> Self {
25684        self.inner.lds_size_per_local_work_group = value;
25685        self
25686    }
25687    #[inline]
25688    pub fn lds_usage_size_in_bytes(mut self, value: usize) -> Self {
25689        self.inner.lds_usage_size_in_bytes = value;
25690        self
25691    }
25692    #[inline]
25693    pub fn scratch_mem_usage_in_bytes(mut self, value: usize) -> Self {
25694        self.inner.scratch_mem_usage_in_bytes = value;
25695        self
25696    }
25697}
25698impl core::ops::Deref for ShaderResourceUsageAMDBuilder {
25699    type Target = ShaderResourceUsageAMD;
25700    #[inline]
25701    fn deref(&self) -> &Self::Target {
25702        &self.inner
25703    }
25704}
25705impl core::ops::DerefMut for ShaderResourceUsageAMDBuilder {
25706    #[inline]
25707    fn deref_mut(&mut self) -> &mut Self::Target {
25708        &mut self.inner
25709    }
25710}
25711///Builder for [`ShaderStatisticsInfoAMD`].
25712pub struct ShaderStatisticsInfoAMDBuilder {
25713    inner: ShaderStatisticsInfoAMD,
25714}
25715impl ShaderStatisticsInfoAMD {
25716    /// Start building this struct.
25717    #[inline]
25718    pub fn builder() -> ShaderStatisticsInfoAMDBuilder {
25719        ShaderStatisticsInfoAMDBuilder {
25720            inner: ShaderStatisticsInfoAMD {
25721                ..Default::default()
25722            },
25723        }
25724    }
25725}
25726impl ShaderStatisticsInfoAMDBuilder {
25727    #[inline]
25728    pub fn shader_stage_mask(mut self, value: ShaderStageFlags) -> Self {
25729        self.inner.shader_stage_mask = value;
25730        self
25731    }
25732    #[inline]
25733    pub fn resource_usage(mut self, value: ShaderResourceUsageAMD) -> Self {
25734        self.inner.resource_usage = value;
25735        self
25736    }
25737    #[inline]
25738    pub fn num_physical_vgprs(mut self, value: u32) -> Self {
25739        self.inner.num_physical_vgprs = value;
25740        self
25741    }
25742    #[inline]
25743    pub fn num_physical_sgprs(mut self, value: u32) -> Self {
25744        self.inner.num_physical_sgprs = value;
25745        self
25746    }
25747    #[inline]
25748    pub fn num_available_vgprs(mut self, value: u32) -> Self {
25749        self.inner.num_available_vgprs = value;
25750        self
25751    }
25752    #[inline]
25753    pub fn num_available_sgprs(mut self, value: u32) -> Self {
25754        self.inner.num_available_sgprs = value;
25755        self
25756    }
25757    #[inline]
25758    pub fn compute_work_group_size(mut self, value: [u32; 3usize]) -> Self {
25759        self.inner.compute_work_group_size = value;
25760        self
25761    }
25762}
25763impl core::ops::Deref for ShaderStatisticsInfoAMDBuilder {
25764    type Target = ShaderStatisticsInfoAMD;
25765    #[inline]
25766    fn deref(&self) -> &Self::Target {
25767        &self.inner
25768    }
25769}
25770impl core::ops::DerefMut for ShaderStatisticsInfoAMDBuilder {
25771    #[inline]
25772    fn deref_mut(&mut self) -> &mut Self::Target {
25773        &mut self.inner
25774    }
25775}
25776///Builder for [`DeviceQueueGlobalPriorityCreateInfo`] with lifetime-tied pNext safety.
25777pub struct DeviceQueueGlobalPriorityCreateInfoBuilder<'a> {
25778    inner: DeviceQueueGlobalPriorityCreateInfo,
25779    _marker: core::marker::PhantomData<&'a ()>,
25780}
25781impl DeviceQueueGlobalPriorityCreateInfo {
25782    /// Start building this struct; `s_type` is already set to the correct variant.
25783    #[inline]
25784    pub fn builder<'a>() -> DeviceQueueGlobalPriorityCreateInfoBuilder<'a> {
25785        DeviceQueueGlobalPriorityCreateInfoBuilder {
25786            inner: DeviceQueueGlobalPriorityCreateInfo {
25787                s_type: StructureType::from_raw(1000174000i32),
25788                ..Default::default()
25789            },
25790            _marker: core::marker::PhantomData,
25791        }
25792    }
25793}
25794impl<'a> DeviceQueueGlobalPriorityCreateInfoBuilder<'a> {
25795    #[inline]
25796    pub fn global_priority(mut self, value: QueueGlobalPriority) -> Self {
25797        self.inner.global_priority = value;
25798        self
25799    }
25800    ///Prepend a struct to the pNext chain. See [`DeviceQueueGlobalPriorityCreateInfo`]'s **Extended By** section for valid types.
25801    #[inline]
25802    pub fn push_next<T: ExtendsDeviceQueueGlobalPriorityCreateInfo>(
25803        mut self,
25804        next: &'a mut T,
25805    ) -> Self {
25806        unsafe {
25807            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
25808            (*next_ptr).p_next = self.inner.p_next as *mut _;
25809            self.inner.p_next = <*mut BaseOutStructure>::cast::<
25810                core::ffi::c_void,
25811            >(next_ptr) as *const _;
25812        }
25813        self
25814    }
25815}
25816impl<'a> core::ops::Deref for DeviceQueueGlobalPriorityCreateInfoBuilder<'a> {
25817    type Target = DeviceQueueGlobalPriorityCreateInfo;
25818    #[inline]
25819    fn deref(&self) -> &Self::Target {
25820        &self.inner
25821    }
25822}
25823impl<'a> core::ops::DerefMut for DeviceQueueGlobalPriorityCreateInfoBuilder<'a> {
25824    #[inline]
25825    fn deref_mut(&mut self) -> &mut Self::Target {
25826        &mut self.inner
25827    }
25828}
25829///Builder for [`PhysicalDeviceGlobalPriorityQueryFeatures`] with lifetime-tied pNext safety.
25830pub struct PhysicalDeviceGlobalPriorityQueryFeaturesBuilder<'a> {
25831    inner: PhysicalDeviceGlobalPriorityQueryFeatures,
25832    _marker: core::marker::PhantomData<&'a ()>,
25833}
25834impl PhysicalDeviceGlobalPriorityQueryFeatures {
25835    /// Start building this struct; `s_type` is already set to the correct variant.
25836    #[inline]
25837    pub fn builder<'a>() -> PhysicalDeviceGlobalPriorityQueryFeaturesBuilder<'a> {
25838        PhysicalDeviceGlobalPriorityQueryFeaturesBuilder {
25839            inner: PhysicalDeviceGlobalPriorityQueryFeatures {
25840                s_type: StructureType::from_raw(1000388000i32),
25841                ..Default::default()
25842            },
25843            _marker: core::marker::PhantomData,
25844        }
25845    }
25846}
25847impl<'a> PhysicalDeviceGlobalPriorityQueryFeaturesBuilder<'a> {
25848    #[inline]
25849    pub fn global_priority_query(mut self, value: bool) -> Self {
25850        self.inner.global_priority_query = value as u32;
25851        self
25852    }
25853    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceGlobalPriorityQueryFeatures`]'s **Extended By** section for valid types.
25854    #[inline]
25855    pub fn push_next<T: ExtendsPhysicalDeviceGlobalPriorityQueryFeatures>(
25856        mut self,
25857        next: &'a mut T,
25858    ) -> Self {
25859        unsafe {
25860            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
25861            (*next_ptr).p_next = self.inner.p_next as *mut _;
25862            self.inner.p_next = <*mut BaseOutStructure>::cast::<
25863                core::ffi::c_void,
25864            >(next_ptr);
25865        }
25866        self
25867    }
25868}
25869impl<'a> core::ops::Deref for PhysicalDeviceGlobalPriorityQueryFeaturesBuilder<'a> {
25870    type Target = PhysicalDeviceGlobalPriorityQueryFeatures;
25871    #[inline]
25872    fn deref(&self) -> &Self::Target {
25873        &self.inner
25874    }
25875}
25876impl<'a> core::ops::DerefMut for PhysicalDeviceGlobalPriorityQueryFeaturesBuilder<'a> {
25877    #[inline]
25878    fn deref_mut(&mut self) -> &mut Self::Target {
25879        &mut self.inner
25880    }
25881}
25882///Builder for [`QueueFamilyGlobalPriorityProperties`] with lifetime-tied pNext safety.
25883pub struct QueueFamilyGlobalPriorityPropertiesBuilder<'a> {
25884    inner: QueueFamilyGlobalPriorityProperties,
25885    _marker: core::marker::PhantomData<&'a ()>,
25886}
25887impl QueueFamilyGlobalPriorityProperties {
25888    /// Start building this struct; `s_type` is already set to the correct variant.
25889    #[inline]
25890    pub fn builder<'a>() -> QueueFamilyGlobalPriorityPropertiesBuilder<'a> {
25891        QueueFamilyGlobalPriorityPropertiesBuilder {
25892            inner: QueueFamilyGlobalPriorityProperties {
25893                s_type: StructureType::from_raw(1000388001i32),
25894                ..Default::default()
25895            },
25896            _marker: core::marker::PhantomData,
25897        }
25898    }
25899}
25900impl<'a> QueueFamilyGlobalPriorityPropertiesBuilder<'a> {
25901    #[inline]
25902    pub fn priority_count(mut self, value: u32) -> Self {
25903        self.inner.priority_count = value;
25904        self
25905    }
25906    #[inline]
25907    pub fn priorities(
25908        mut self,
25909        value: [QueueGlobalPriority; MAX_GLOBAL_PRIORITY_SIZE as usize],
25910    ) -> Self {
25911        self.inner.priorities = value;
25912        self
25913    }
25914}
25915impl<'a> core::ops::Deref for QueueFamilyGlobalPriorityPropertiesBuilder<'a> {
25916    type Target = QueueFamilyGlobalPriorityProperties;
25917    #[inline]
25918    fn deref(&self) -> &Self::Target {
25919        &self.inner
25920    }
25921}
25922impl<'a> core::ops::DerefMut for QueueFamilyGlobalPriorityPropertiesBuilder<'a> {
25923    #[inline]
25924    fn deref_mut(&mut self) -> &mut Self::Target {
25925        &mut self.inner
25926    }
25927}
25928///Builder for [`DebugUtilsObjectNameInfoEXT`] with lifetime-tied pNext safety.
25929pub struct DebugUtilsObjectNameInfoEXTBuilder<'a> {
25930    inner: DebugUtilsObjectNameInfoEXT,
25931    _marker: core::marker::PhantomData<&'a ()>,
25932}
25933impl DebugUtilsObjectNameInfoEXT {
25934    /// Start building this struct; `s_type` is already set to the correct variant.
25935    #[inline]
25936    pub fn builder<'a>() -> DebugUtilsObjectNameInfoEXTBuilder<'a> {
25937        DebugUtilsObjectNameInfoEXTBuilder {
25938            inner: DebugUtilsObjectNameInfoEXT {
25939                s_type: StructureType::from_raw(1000128000i32),
25940                ..Default::default()
25941            },
25942            _marker: core::marker::PhantomData,
25943        }
25944    }
25945}
25946impl<'a> DebugUtilsObjectNameInfoEXTBuilder<'a> {
25947    #[inline]
25948    pub fn object_type(mut self, value: ObjectType) -> Self {
25949        self.inner.object_type = value;
25950        self
25951    }
25952    #[inline]
25953    pub fn object_handle(mut self, value: u64) -> Self {
25954        self.inner.object_handle = value;
25955        self
25956    }
25957    #[inline]
25958    pub fn object_name(mut self, value: &'a core::ffi::CStr) -> Self {
25959        self.inner.p_object_name = value.as_ptr();
25960        self
25961    }
25962    ///Prepend a struct to the pNext chain. See [`DebugUtilsObjectNameInfoEXT`]'s **Extended By** section for valid types.
25963    #[inline]
25964    pub fn push_next<T: ExtendsDebugUtilsObjectNameInfoEXT>(
25965        mut self,
25966        next: &'a mut T,
25967    ) -> Self {
25968        unsafe {
25969            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
25970            (*next_ptr).p_next = self.inner.p_next as *mut _;
25971            self.inner.p_next = <*mut BaseOutStructure>::cast::<
25972                core::ffi::c_void,
25973            >(next_ptr) as *const _;
25974        }
25975        self
25976    }
25977}
25978impl<'a> core::ops::Deref for DebugUtilsObjectNameInfoEXTBuilder<'a> {
25979    type Target = DebugUtilsObjectNameInfoEXT;
25980    #[inline]
25981    fn deref(&self) -> &Self::Target {
25982        &self.inner
25983    }
25984}
25985impl<'a> core::ops::DerefMut for DebugUtilsObjectNameInfoEXTBuilder<'a> {
25986    #[inline]
25987    fn deref_mut(&mut self) -> &mut Self::Target {
25988        &mut self.inner
25989    }
25990}
25991///Builder for [`DebugUtilsObjectTagInfoEXT`] with lifetime-tied pNext safety.
25992pub struct DebugUtilsObjectTagInfoEXTBuilder<'a> {
25993    inner: DebugUtilsObjectTagInfoEXT,
25994    _marker: core::marker::PhantomData<&'a ()>,
25995}
25996impl DebugUtilsObjectTagInfoEXT {
25997    /// Start building this struct; `s_type` is already set to the correct variant.
25998    #[inline]
25999    pub fn builder<'a>() -> DebugUtilsObjectTagInfoEXTBuilder<'a> {
26000        DebugUtilsObjectTagInfoEXTBuilder {
26001            inner: DebugUtilsObjectTagInfoEXT {
26002                s_type: StructureType::from_raw(1000128001i32),
26003                ..Default::default()
26004            },
26005            _marker: core::marker::PhantomData,
26006        }
26007    }
26008}
26009impl<'a> DebugUtilsObjectTagInfoEXTBuilder<'a> {
26010    #[inline]
26011    pub fn object_type(mut self, value: ObjectType) -> Self {
26012        self.inner.object_type = value;
26013        self
26014    }
26015    #[inline]
26016    pub fn object_handle(mut self, value: u64) -> Self {
26017        self.inner.object_handle = value;
26018        self
26019    }
26020    #[inline]
26021    pub fn tag_name(mut self, value: u64) -> Self {
26022        self.inner.tag_name = value;
26023        self
26024    }
26025    #[inline]
26026    pub fn tag(mut self, slice: &'a [core::ffi::c_void]) -> Self {
26027        self.inner.tag_size = slice.len();
26028        self.inner.p_tag = slice.as_ptr();
26029        self
26030    }
26031    ///Prepend a struct to the pNext chain. See [`DebugUtilsObjectTagInfoEXT`]'s **Extended By** section for valid types.
26032    #[inline]
26033    pub fn push_next<T: ExtendsDebugUtilsObjectTagInfoEXT>(
26034        mut self,
26035        next: &'a mut T,
26036    ) -> Self {
26037        unsafe {
26038            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
26039            (*next_ptr).p_next = self.inner.p_next as *mut _;
26040            self.inner.p_next = <*mut BaseOutStructure>::cast::<
26041                core::ffi::c_void,
26042            >(next_ptr) as *const _;
26043        }
26044        self
26045    }
26046}
26047impl<'a> core::ops::Deref for DebugUtilsObjectTagInfoEXTBuilder<'a> {
26048    type Target = DebugUtilsObjectTagInfoEXT;
26049    #[inline]
26050    fn deref(&self) -> &Self::Target {
26051        &self.inner
26052    }
26053}
26054impl<'a> core::ops::DerefMut for DebugUtilsObjectTagInfoEXTBuilder<'a> {
26055    #[inline]
26056    fn deref_mut(&mut self) -> &mut Self::Target {
26057        &mut self.inner
26058    }
26059}
26060///Builder for [`DebugUtilsLabelEXT`] with lifetime-tied pNext safety.
26061pub struct DebugUtilsLabelEXTBuilder<'a> {
26062    inner: DebugUtilsLabelEXT,
26063    _marker: core::marker::PhantomData<&'a ()>,
26064}
26065impl DebugUtilsLabelEXT {
26066    /// Start building this struct; `s_type` is already set to the correct variant.
26067    #[inline]
26068    pub fn builder<'a>() -> DebugUtilsLabelEXTBuilder<'a> {
26069        DebugUtilsLabelEXTBuilder {
26070            inner: DebugUtilsLabelEXT {
26071                s_type: StructureType::from_raw(1000128002i32),
26072                ..Default::default()
26073            },
26074            _marker: core::marker::PhantomData,
26075        }
26076    }
26077}
26078impl<'a> DebugUtilsLabelEXTBuilder<'a> {
26079    #[inline]
26080    pub fn label_name(mut self, value: &'a core::ffi::CStr) -> Self {
26081        self.inner.p_label_name = value.as_ptr();
26082        self
26083    }
26084    #[inline]
26085    pub fn color(mut self, value: [f32; 4usize]) -> Self {
26086        self.inner.color = value;
26087        self
26088    }
26089    ///Prepend a struct to the pNext chain. See [`DebugUtilsLabelEXT`]'s **Extended By** section for valid types.
26090    #[inline]
26091    pub fn push_next<T: ExtendsDebugUtilsLabelEXT>(mut self, next: &'a mut T) -> Self {
26092        unsafe {
26093            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
26094            (*next_ptr).p_next = self.inner.p_next as *mut _;
26095            self.inner.p_next = <*mut BaseOutStructure>::cast::<
26096                core::ffi::c_void,
26097            >(next_ptr) as *const _;
26098        }
26099        self
26100    }
26101}
26102impl<'a> core::ops::Deref for DebugUtilsLabelEXTBuilder<'a> {
26103    type Target = DebugUtilsLabelEXT;
26104    #[inline]
26105    fn deref(&self) -> &Self::Target {
26106        &self.inner
26107    }
26108}
26109impl<'a> core::ops::DerefMut for DebugUtilsLabelEXTBuilder<'a> {
26110    #[inline]
26111    fn deref_mut(&mut self) -> &mut Self::Target {
26112        &mut self.inner
26113    }
26114}
26115///Builder for [`DebugUtilsMessengerCreateInfoEXT`] with lifetime-tied pNext safety.
26116pub struct DebugUtilsMessengerCreateInfoEXTBuilder<'a> {
26117    inner: DebugUtilsMessengerCreateInfoEXT,
26118    _marker: core::marker::PhantomData<&'a ()>,
26119}
26120impl DebugUtilsMessengerCreateInfoEXT {
26121    /// Start building this struct; `s_type` is already set to the correct variant.
26122    #[inline]
26123    pub fn builder<'a>() -> DebugUtilsMessengerCreateInfoEXTBuilder<'a> {
26124        DebugUtilsMessengerCreateInfoEXTBuilder {
26125            inner: DebugUtilsMessengerCreateInfoEXT {
26126                s_type: StructureType::from_raw(1000128004i32),
26127                ..Default::default()
26128            },
26129            _marker: core::marker::PhantomData,
26130        }
26131    }
26132}
26133impl<'a> DebugUtilsMessengerCreateInfoEXTBuilder<'a> {
26134    #[inline]
26135    pub fn flags(mut self, value: DebugUtilsMessengerCreateFlagsEXT) -> Self {
26136        self.inner.flags = value;
26137        self
26138    }
26139    #[inline]
26140    pub fn message_severity(mut self, value: DebugUtilsMessageSeverityFlagsEXT) -> Self {
26141        self.inner.message_severity = value;
26142        self
26143    }
26144    #[inline]
26145    pub fn message_type(mut self, value: DebugUtilsMessageTypeFlagsEXT) -> Self {
26146        self.inner.message_type = value;
26147        self
26148    }
26149    #[inline]
26150    pub fn pfn_user_callback(
26151        mut self,
26152        value: PFN_vkDebugUtilsMessengerCallbackEXT,
26153    ) -> Self {
26154        self.inner.pfn_user_callback = value;
26155        self
26156    }
26157    #[inline]
26158    pub fn user_data(mut self, value: *mut core::ffi::c_void) -> Self {
26159        self.inner.p_user_data = value;
26160        self
26161    }
26162    ///Prepend a struct to the pNext chain. See [`DebugUtilsMessengerCreateInfoEXT`]'s **Extended By** section for valid types.
26163    #[inline]
26164    pub fn push_next<T: ExtendsDebugUtilsMessengerCreateInfoEXT>(
26165        mut self,
26166        next: &'a mut T,
26167    ) -> Self {
26168        unsafe {
26169            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
26170            (*next_ptr).p_next = self.inner.p_next as *mut _;
26171            self.inner.p_next = <*mut BaseOutStructure>::cast::<
26172                core::ffi::c_void,
26173            >(next_ptr) as *const _;
26174        }
26175        self
26176    }
26177}
26178impl<'a> core::ops::Deref for DebugUtilsMessengerCreateInfoEXTBuilder<'a> {
26179    type Target = DebugUtilsMessengerCreateInfoEXT;
26180    #[inline]
26181    fn deref(&self) -> &Self::Target {
26182        &self.inner
26183    }
26184}
26185impl<'a> core::ops::DerefMut for DebugUtilsMessengerCreateInfoEXTBuilder<'a> {
26186    #[inline]
26187    fn deref_mut(&mut self) -> &mut Self::Target {
26188        &mut self.inner
26189    }
26190}
26191///Builder for [`DebugUtilsMessengerCallbackDataEXT`] with lifetime-tied pNext safety.
26192pub struct DebugUtilsMessengerCallbackDataEXTBuilder<'a> {
26193    inner: DebugUtilsMessengerCallbackDataEXT,
26194    _marker: core::marker::PhantomData<&'a ()>,
26195}
26196impl DebugUtilsMessengerCallbackDataEXT {
26197    /// Start building this struct; `s_type` is already set to the correct variant.
26198    #[inline]
26199    pub fn builder<'a>() -> DebugUtilsMessengerCallbackDataEXTBuilder<'a> {
26200        DebugUtilsMessengerCallbackDataEXTBuilder {
26201            inner: DebugUtilsMessengerCallbackDataEXT {
26202                s_type: StructureType::from_raw(1000128003i32),
26203                ..Default::default()
26204            },
26205            _marker: core::marker::PhantomData,
26206        }
26207    }
26208}
26209impl<'a> DebugUtilsMessengerCallbackDataEXTBuilder<'a> {
26210    #[inline]
26211    pub fn flags(mut self, value: DebugUtilsMessengerCallbackDataFlagsEXT) -> Self {
26212        self.inner.flags = value;
26213        self
26214    }
26215    #[inline]
26216    pub fn message_id_name(mut self, value: &'a core::ffi::CStr) -> Self {
26217        self.inner.p_message_id_name = value.as_ptr();
26218        self
26219    }
26220    #[inline]
26221    pub fn message_id_number(mut self, value: i32) -> Self {
26222        self.inner.message_id_number = value;
26223        self
26224    }
26225    #[inline]
26226    pub fn message(mut self, value: &'a core::ffi::CStr) -> Self {
26227        self.inner.p_message = value.as_ptr();
26228        self
26229    }
26230    #[inline]
26231    pub fn queue_labels(mut self, slice: &'a [DebugUtilsLabelEXT]) -> Self {
26232        self.inner.queue_label_count = slice.len() as u32;
26233        self.inner.p_queue_labels = slice.as_ptr();
26234        self
26235    }
26236    #[inline]
26237    pub fn cmd_buf_labels(mut self, slice: &'a [DebugUtilsLabelEXT]) -> Self {
26238        self.inner.cmd_buf_label_count = slice.len() as u32;
26239        self.inner.p_cmd_buf_labels = slice.as_ptr();
26240        self
26241    }
26242    #[inline]
26243    pub fn objects(mut self, slice: &'a [DebugUtilsObjectNameInfoEXT]) -> Self {
26244        self.inner.object_count = slice.len() as u32;
26245        self.inner.p_objects = slice.as_ptr();
26246        self
26247    }
26248    ///Prepend a struct to the pNext chain. See [`DebugUtilsMessengerCallbackDataEXT`]'s **Extended By** section for valid types.
26249    #[inline]
26250    pub fn push_next<T: ExtendsDebugUtilsMessengerCallbackDataEXT>(
26251        mut self,
26252        next: &'a mut T,
26253    ) -> Self {
26254        unsafe {
26255            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
26256            (*next_ptr).p_next = self.inner.p_next as *mut _;
26257            self.inner.p_next = <*mut BaseOutStructure>::cast::<
26258                core::ffi::c_void,
26259            >(next_ptr) as *const _;
26260        }
26261        self
26262    }
26263}
26264impl<'a> core::ops::Deref for DebugUtilsMessengerCallbackDataEXTBuilder<'a> {
26265    type Target = DebugUtilsMessengerCallbackDataEXT;
26266    #[inline]
26267    fn deref(&self) -> &Self::Target {
26268        &self.inner
26269    }
26270}
26271impl<'a> core::ops::DerefMut for DebugUtilsMessengerCallbackDataEXTBuilder<'a> {
26272    #[inline]
26273    fn deref_mut(&mut self) -> &mut Self::Target {
26274        &mut self.inner
26275    }
26276}
26277///Builder for [`PhysicalDeviceDeviceMemoryReportFeaturesEXT`] with lifetime-tied pNext safety.
26278pub struct PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder<'a> {
26279    inner: PhysicalDeviceDeviceMemoryReportFeaturesEXT,
26280    _marker: core::marker::PhantomData<&'a ()>,
26281}
26282impl PhysicalDeviceDeviceMemoryReportFeaturesEXT {
26283    /// Start building this struct; `s_type` is already set to the correct variant.
26284    #[inline]
26285    pub fn builder<'a>() -> PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder<'a> {
26286        PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder {
26287            inner: PhysicalDeviceDeviceMemoryReportFeaturesEXT {
26288                s_type: StructureType::from_raw(1000284000i32),
26289                ..Default::default()
26290            },
26291            _marker: core::marker::PhantomData,
26292        }
26293    }
26294}
26295impl<'a> PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder<'a> {
26296    #[inline]
26297    pub fn device_memory_report(mut self, value: bool) -> Self {
26298        self.inner.device_memory_report = value as u32;
26299        self
26300    }
26301    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDeviceMemoryReportFeaturesEXT`]'s **Extended By** section for valid types.
26302    #[inline]
26303    pub fn push_next<T: ExtendsPhysicalDeviceDeviceMemoryReportFeaturesEXT>(
26304        mut self,
26305        next: &'a mut T,
26306    ) -> Self {
26307        unsafe {
26308            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
26309            (*next_ptr).p_next = self.inner.p_next as *mut _;
26310            self.inner.p_next = <*mut BaseOutStructure>::cast::<
26311                core::ffi::c_void,
26312            >(next_ptr);
26313        }
26314        self
26315    }
26316}
26317impl<'a> core::ops::Deref for PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder<'a> {
26318    type Target = PhysicalDeviceDeviceMemoryReportFeaturesEXT;
26319    #[inline]
26320    fn deref(&self) -> &Self::Target {
26321        &self.inner
26322    }
26323}
26324impl<'a> core::ops::DerefMut for PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder<'a> {
26325    #[inline]
26326    fn deref_mut(&mut self) -> &mut Self::Target {
26327        &mut self.inner
26328    }
26329}
26330///Builder for [`DeviceDeviceMemoryReportCreateInfoEXT`] with lifetime-tied pNext safety.
26331pub struct DeviceDeviceMemoryReportCreateInfoEXTBuilder<'a> {
26332    inner: DeviceDeviceMemoryReportCreateInfoEXT,
26333    _marker: core::marker::PhantomData<&'a ()>,
26334}
26335impl DeviceDeviceMemoryReportCreateInfoEXT {
26336    /// Start building this struct; `s_type` is already set to the correct variant.
26337    #[inline]
26338    pub fn builder<'a>() -> DeviceDeviceMemoryReportCreateInfoEXTBuilder<'a> {
26339        DeviceDeviceMemoryReportCreateInfoEXTBuilder {
26340            inner: DeviceDeviceMemoryReportCreateInfoEXT {
26341                s_type: StructureType::from_raw(1000284001i32),
26342                ..Default::default()
26343            },
26344            _marker: core::marker::PhantomData,
26345        }
26346    }
26347}
26348impl<'a> DeviceDeviceMemoryReportCreateInfoEXTBuilder<'a> {
26349    #[inline]
26350    pub fn flags(mut self, value: DeviceMemoryReportFlagsEXT) -> Self {
26351        self.inner.flags = value;
26352        self
26353    }
26354    #[inline]
26355    pub fn pfn_user_callback(
26356        mut self,
26357        value: PFN_vkDeviceMemoryReportCallbackEXT,
26358    ) -> Self {
26359        self.inner.pfn_user_callback = value;
26360        self
26361    }
26362    #[inline]
26363    pub fn user_data(mut self, value: *mut core::ffi::c_void) -> Self {
26364        self.inner.p_user_data = value;
26365        self
26366    }
26367    ///Prepend a struct to the pNext chain. See [`DeviceDeviceMemoryReportCreateInfoEXT`]'s **Extended By** section for valid types.
26368    #[inline]
26369    pub fn push_next<T: ExtendsDeviceDeviceMemoryReportCreateInfoEXT>(
26370        mut self,
26371        next: &'a mut T,
26372    ) -> Self {
26373        unsafe {
26374            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
26375            (*next_ptr).p_next = self.inner.p_next as *mut _;
26376            self.inner.p_next = <*mut BaseOutStructure>::cast::<
26377                core::ffi::c_void,
26378            >(next_ptr) as *const _;
26379        }
26380        self
26381    }
26382}
26383impl<'a> core::ops::Deref for DeviceDeviceMemoryReportCreateInfoEXTBuilder<'a> {
26384    type Target = DeviceDeviceMemoryReportCreateInfoEXT;
26385    #[inline]
26386    fn deref(&self) -> &Self::Target {
26387        &self.inner
26388    }
26389}
26390impl<'a> core::ops::DerefMut for DeviceDeviceMemoryReportCreateInfoEXTBuilder<'a> {
26391    #[inline]
26392    fn deref_mut(&mut self) -> &mut Self::Target {
26393        &mut self.inner
26394    }
26395}
26396///Builder for [`DeviceMemoryReportCallbackDataEXT`] with lifetime-tied pNext safety.
26397pub struct DeviceMemoryReportCallbackDataEXTBuilder<'a> {
26398    inner: DeviceMemoryReportCallbackDataEXT,
26399    _marker: core::marker::PhantomData<&'a ()>,
26400}
26401impl DeviceMemoryReportCallbackDataEXT {
26402    /// Start building this struct; `s_type` is already set to the correct variant.
26403    #[inline]
26404    pub fn builder<'a>() -> DeviceMemoryReportCallbackDataEXTBuilder<'a> {
26405        DeviceMemoryReportCallbackDataEXTBuilder {
26406            inner: DeviceMemoryReportCallbackDataEXT {
26407                s_type: StructureType::from_raw(1000284002i32),
26408                ..Default::default()
26409            },
26410            _marker: core::marker::PhantomData,
26411        }
26412    }
26413}
26414impl<'a> DeviceMemoryReportCallbackDataEXTBuilder<'a> {
26415    #[inline]
26416    pub fn flags(mut self, value: DeviceMemoryReportFlagsEXT) -> Self {
26417        self.inner.flags = value;
26418        self
26419    }
26420    #[inline]
26421    pub fn r#type(mut self, value: DeviceMemoryReportEventTypeEXT) -> Self {
26422        self.inner.r#type = value;
26423        self
26424    }
26425    #[inline]
26426    pub fn memory_object_id(mut self, value: u64) -> Self {
26427        self.inner.memory_object_id = value;
26428        self
26429    }
26430    #[inline]
26431    pub fn size(mut self, value: u64) -> Self {
26432        self.inner.size = value;
26433        self
26434    }
26435    #[inline]
26436    pub fn object_type(mut self, value: ObjectType) -> Self {
26437        self.inner.object_type = value;
26438        self
26439    }
26440    #[inline]
26441    pub fn object_handle(mut self, value: u64) -> Self {
26442        self.inner.object_handle = value;
26443        self
26444    }
26445    #[inline]
26446    pub fn heap_index(mut self, value: u32) -> Self {
26447        self.inner.heap_index = value;
26448        self
26449    }
26450}
26451impl<'a> core::ops::Deref for DeviceMemoryReportCallbackDataEXTBuilder<'a> {
26452    type Target = DeviceMemoryReportCallbackDataEXT;
26453    #[inline]
26454    fn deref(&self) -> &Self::Target {
26455        &self.inner
26456    }
26457}
26458impl<'a> core::ops::DerefMut for DeviceMemoryReportCallbackDataEXTBuilder<'a> {
26459    #[inline]
26460    fn deref_mut(&mut self) -> &mut Self::Target {
26461        &mut self.inner
26462    }
26463}
26464///Builder for [`ImportMemoryHostPointerInfoEXT`] with lifetime-tied pNext safety.
26465pub struct ImportMemoryHostPointerInfoEXTBuilder<'a> {
26466    inner: ImportMemoryHostPointerInfoEXT,
26467    _marker: core::marker::PhantomData<&'a ()>,
26468}
26469impl ImportMemoryHostPointerInfoEXT {
26470    /// Start building this struct; `s_type` is already set to the correct variant.
26471    #[inline]
26472    pub fn builder<'a>() -> ImportMemoryHostPointerInfoEXTBuilder<'a> {
26473        ImportMemoryHostPointerInfoEXTBuilder {
26474            inner: ImportMemoryHostPointerInfoEXT {
26475                s_type: StructureType::from_raw(1000178000i32),
26476                ..Default::default()
26477            },
26478            _marker: core::marker::PhantomData,
26479        }
26480    }
26481}
26482impl<'a> ImportMemoryHostPointerInfoEXTBuilder<'a> {
26483    #[inline]
26484    pub fn handle_type(mut self, value: ExternalMemoryHandleTypeFlagBits) -> Self {
26485        self.inner.handle_type = value;
26486        self
26487    }
26488    #[inline]
26489    pub fn host_pointer(mut self, value: *mut core::ffi::c_void) -> Self {
26490        self.inner.p_host_pointer = value;
26491        self
26492    }
26493    ///Prepend a struct to the pNext chain. See [`ImportMemoryHostPointerInfoEXT`]'s **Extended By** section for valid types.
26494    #[inline]
26495    pub fn push_next<T: ExtendsImportMemoryHostPointerInfoEXT>(
26496        mut self,
26497        next: &'a mut T,
26498    ) -> Self {
26499        unsafe {
26500            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
26501            (*next_ptr).p_next = self.inner.p_next as *mut _;
26502            self.inner.p_next = <*mut BaseOutStructure>::cast::<
26503                core::ffi::c_void,
26504            >(next_ptr) as *const _;
26505        }
26506        self
26507    }
26508}
26509impl<'a> core::ops::Deref for ImportMemoryHostPointerInfoEXTBuilder<'a> {
26510    type Target = ImportMemoryHostPointerInfoEXT;
26511    #[inline]
26512    fn deref(&self) -> &Self::Target {
26513        &self.inner
26514    }
26515}
26516impl<'a> core::ops::DerefMut for ImportMemoryHostPointerInfoEXTBuilder<'a> {
26517    #[inline]
26518    fn deref_mut(&mut self) -> &mut Self::Target {
26519        &mut self.inner
26520    }
26521}
26522///Builder for [`MemoryHostPointerPropertiesEXT`] with lifetime-tied pNext safety.
26523pub struct MemoryHostPointerPropertiesEXTBuilder<'a> {
26524    inner: MemoryHostPointerPropertiesEXT,
26525    _marker: core::marker::PhantomData<&'a ()>,
26526}
26527impl MemoryHostPointerPropertiesEXT {
26528    /// Start building this struct; `s_type` is already set to the correct variant.
26529    #[inline]
26530    pub fn builder<'a>() -> MemoryHostPointerPropertiesEXTBuilder<'a> {
26531        MemoryHostPointerPropertiesEXTBuilder {
26532            inner: MemoryHostPointerPropertiesEXT {
26533                s_type: StructureType::from_raw(1000178001i32),
26534                ..Default::default()
26535            },
26536            _marker: core::marker::PhantomData,
26537        }
26538    }
26539}
26540impl<'a> MemoryHostPointerPropertiesEXTBuilder<'a> {
26541    #[inline]
26542    pub fn memory_type_bits(mut self, value: u32) -> Self {
26543        self.inner.memory_type_bits = value;
26544        self
26545    }
26546}
26547impl<'a> core::ops::Deref for MemoryHostPointerPropertiesEXTBuilder<'a> {
26548    type Target = MemoryHostPointerPropertiesEXT;
26549    #[inline]
26550    fn deref(&self) -> &Self::Target {
26551        &self.inner
26552    }
26553}
26554impl<'a> core::ops::DerefMut for MemoryHostPointerPropertiesEXTBuilder<'a> {
26555    #[inline]
26556    fn deref_mut(&mut self) -> &mut Self::Target {
26557        &mut self.inner
26558    }
26559}
26560///Builder for [`PhysicalDeviceExternalMemoryHostPropertiesEXT`] with lifetime-tied pNext safety.
26561pub struct PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder<'a> {
26562    inner: PhysicalDeviceExternalMemoryHostPropertiesEXT,
26563    _marker: core::marker::PhantomData<&'a ()>,
26564}
26565impl PhysicalDeviceExternalMemoryHostPropertiesEXT {
26566    /// Start building this struct; `s_type` is already set to the correct variant.
26567    #[inline]
26568    pub fn builder<'a>() -> PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder<'a> {
26569        PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder {
26570            inner: PhysicalDeviceExternalMemoryHostPropertiesEXT {
26571                s_type: StructureType::from_raw(1000178002i32),
26572                ..Default::default()
26573            },
26574            _marker: core::marker::PhantomData,
26575        }
26576    }
26577}
26578impl<'a> PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder<'a> {
26579    #[inline]
26580    pub fn min_imported_host_pointer_alignment(mut self, value: u64) -> Self {
26581        self.inner.min_imported_host_pointer_alignment = value;
26582        self
26583    }
26584}
26585impl<'a> core::ops::Deref for PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder<'a> {
26586    type Target = PhysicalDeviceExternalMemoryHostPropertiesEXT;
26587    #[inline]
26588    fn deref(&self) -> &Self::Target {
26589        &self.inner
26590    }
26591}
26592impl<'a> core::ops::DerefMut
26593for PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder<'a> {
26594    #[inline]
26595    fn deref_mut(&mut self) -> &mut Self::Target {
26596        &mut self.inner
26597    }
26598}
26599///Builder for [`PhysicalDeviceConservativeRasterizationPropertiesEXT`] with lifetime-tied pNext safety.
26600pub struct PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder<'a> {
26601    inner: PhysicalDeviceConservativeRasterizationPropertiesEXT,
26602    _marker: core::marker::PhantomData<&'a ()>,
26603}
26604impl PhysicalDeviceConservativeRasterizationPropertiesEXT {
26605    /// Start building this struct; `s_type` is already set to the correct variant.
26606    #[inline]
26607    pub fn builder<'a>() -> PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder<
26608        'a,
26609    > {
26610        PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder {
26611            inner: PhysicalDeviceConservativeRasterizationPropertiesEXT {
26612                s_type: StructureType::from_raw(1000101000i32),
26613                ..Default::default()
26614            },
26615            _marker: core::marker::PhantomData,
26616        }
26617    }
26618}
26619impl<'a> PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder<'a> {
26620    #[inline]
26621    pub fn primitive_overestimation_size(mut self, value: f32) -> Self {
26622        self.inner.primitive_overestimation_size = value;
26623        self
26624    }
26625    #[inline]
26626    pub fn max_extra_primitive_overestimation_size(mut self, value: f32) -> Self {
26627        self.inner.max_extra_primitive_overestimation_size = value;
26628        self
26629    }
26630    #[inline]
26631    pub fn extra_primitive_overestimation_size_granularity(
26632        mut self,
26633        value: f32,
26634    ) -> Self {
26635        self.inner.extra_primitive_overestimation_size_granularity = value;
26636        self
26637    }
26638    #[inline]
26639    pub fn primitive_underestimation(mut self, value: bool) -> Self {
26640        self.inner.primitive_underestimation = value as u32;
26641        self
26642    }
26643    #[inline]
26644    pub fn conservative_point_and_line_rasterization(mut self, value: bool) -> Self {
26645        self.inner.conservative_point_and_line_rasterization = value as u32;
26646        self
26647    }
26648    #[inline]
26649    pub fn degenerate_triangles_rasterized(mut self, value: bool) -> Self {
26650        self.inner.degenerate_triangles_rasterized = value as u32;
26651        self
26652    }
26653    #[inline]
26654    pub fn degenerate_lines_rasterized(mut self, value: bool) -> Self {
26655        self.inner.degenerate_lines_rasterized = value as u32;
26656        self
26657    }
26658    #[inline]
26659    pub fn fully_covered_fragment_shader_input_variable(mut self, value: bool) -> Self {
26660        self.inner.fully_covered_fragment_shader_input_variable = value as u32;
26661        self
26662    }
26663    #[inline]
26664    pub fn conservative_rasterization_post_depth_coverage(
26665        mut self,
26666        value: bool,
26667    ) -> Self {
26668        self.inner.conservative_rasterization_post_depth_coverage = value as u32;
26669        self
26670    }
26671}
26672impl<'a> core::ops::Deref
26673for PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder<'a> {
26674    type Target = PhysicalDeviceConservativeRasterizationPropertiesEXT;
26675    #[inline]
26676    fn deref(&self) -> &Self::Target {
26677        &self.inner
26678    }
26679}
26680impl<'a> core::ops::DerefMut
26681for PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder<'a> {
26682    #[inline]
26683    fn deref_mut(&mut self) -> &mut Self::Target {
26684        &mut self.inner
26685    }
26686}
26687///Builder for [`CalibratedTimestampInfoKHR`] with lifetime-tied pNext safety.
26688pub struct CalibratedTimestampInfoKHRBuilder<'a> {
26689    inner: CalibratedTimestampInfoKHR,
26690    _marker: core::marker::PhantomData<&'a ()>,
26691}
26692impl CalibratedTimestampInfoKHR {
26693    /// Start building this struct; `s_type` is already set to the correct variant.
26694    #[inline]
26695    pub fn builder<'a>() -> CalibratedTimestampInfoKHRBuilder<'a> {
26696        CalibratedTimestampInfoKHRBuilder {
26697            inner: CalibratedTimestampInfoKHR {
26698                s_type: StructureType::from_raw(1000184000i32),
26699                ..Default::default()
26700            },
26701            _marker: core::marker::PhantomData,
26702        }
26703    }
26704}
26705impl<'a> CalibratedTimestampInfoKHRBuilder<'a> {
26706    #[inline]
26707    pub fn time_domain(mut self, value: TimeDomainKHR) -> Self {
26708        self.inner.time_domain = value;
26709        self
26710    }
26711    ///Prepend a struct to the pNext chain. See [`CalibratedTimestampInfoKHR`]'s **Extended By** section for valid types.
26712    #[inline]
26713    pub fn push_next<T: ExtendsCalibratedTimestampInfoKHR>(
26714        mut self,
26715        next: &'a mut T,
26716    ) -> Self {
26717        unsafe {
26718            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
26719            (*next_ptr).p_next = self.inner.p_next as *mut _;
26720            self.inner.p_next = <*mut BaseOutStructure>::cast::<
26721                core::ffi::c_void,
26722            >(next_ptr) as *const _;
26723        }
26724        self
26725    }
26726}
26727impl<'a> core::ops::Deref for CalibratedTimestampInfoKHRBuilder<'a> {
26728    type Target = CalibratedTimestampInfoKHR;
26729    #[inline]
26730    fn deref(&self) -> &Self::Target {
26731        &self.inner
26732    }
26733}
26734impl<'a> core::ops::DerefMut for CalibratedTimestampInfoKHRBuilder<'a> {
26735    #[inline]
26736    fn deref_mut(&mut self) -> &mut Self::Target {
26737        &mut self.inner
26738    }
26739}
26740///Builder for [`PhysicalDeviceShaderCorePropertiesAMD`] with lifetime-tied pNext safety.
26741pub struct PhysicalDeviceShaderCorePropertiesAMDBuilder<'a> {
26742    inner: PhysicalDeviceShaderCorePropertiesAMD,
26743    _marker: core::marker::PhantomData<&'a ()>,
26744}
26745impl PhysicalDeviceShaderCorePropertiesAMD {
26746    /// Start building this struct; `s_type` is already set to the correct variant.
26747    #[inline]
26748    pub fn builder<'a>() -> PhysicalDeviceShaderCorePropertiesAMDBuilder<'a> {
26749        PhysicalDeviceShaderCorePropertiesAMDBuilder {
26750            inner: PhysicalDeviceShaderCorePropertiesAMD {
26751                s_type: StructureType::from_raw(1000185000i32),
26752                ..Default::default()
26753            },
26754            _marker: core::marker::PhantomData,
26755        }
26756    }
26757}
26758impl<'a> PhysicalDeviceShaderCorePropertiesAMDBuilder<'a> {
26759    #[inline]
26760    pub fn shader_engine_count(mut self, value: u32) -> Self {
26761        self.inner.shader_engine_count = value;
26762        self
26763    }
26764    #[inline]
26765    pub fn shader_arrays_per_engine_count(mut self, value: u32) -> Self {
26766        self.inner.shader_arrays_per_engine_count = value;
26767        self
26768    }
26769    #[inline]
26770    pub fn compute_units_per_shader_array(mut self, value: u32) -> Self {
26771        self.inner.compute_units_per_shader_array = value;
26772        self
26773    }
26774    #[inline]
26775    pub fn simd_per_compute_unit(mut self, value: u32) -> Self {
26776        self.inner.simd_per_compute_unit = value;
26777        self
26778    }
26779    #[inline]
26780    pub fn wavefronts_per_simd(mut self, value: u32) -> Self {
26781        self.inner.wavefronts_per_simd = value;
26782        self
26783    }
26784    #[inline]
26785    pub fn wavefront_size(mut self, value: u32) -> Self {
26786        self.inner.wavefront_size = value;
26787        self
26788    }
26789    #[inline]
26790    pub fn sgprs_per_simd(mut self, value: u32) -> Self {
26791        self.inner.sgprs_per_simd = value;
26792        self
26793    }
26794    #[inline]
26795    pub fn min_sgpr_allocation(mut self, value: u32) -> Self {
26796        self.inner.min_sgpr_allocation = value;
26797        self
26798    }
26799    #[inline]
26800    pub fn max_sgpr_allocation(mut self, value: u32) -> Self {
26801        self.inner.max_sgpr_allocation = value;
26802        self
26803    }
26804    #[inline]
26805    pub fn sgpr_allocation_granularity(mut self, value: u32) -> Self {
26806        self.inner.sgpr_allocation_granularity = value;
26807        self
26808    }
26809    #[inline]
26810    pub fn vgprs_per_simd(mut self, value: u32) -> Self {
26811        self.inner.vgprs_per_simd = value;
26812        self
26813    }
26814    #[inline]
26815    pub fn min_vgpr_allocation(mut self, value: u32) -> Self {
26816        self.inner.min_vgpr_allocation = value;
26817        self
26818    }
26819    #[inline]
26820    pub fn max_vgpr_allocation(mut self, value: u32) -> Self {
26821        self.inner.max_vgpr_allocation = value;
26822        self
26823    }
26824    #[inline]
26825    pub fn vgpr_allocation_granularity(mut self, value: u32) -> Self {
26826        self.inner.vgpr_allocation_granularity = value;
26827        self
26828    }
26829}
26830impl<'a> core::ops::Deref for PhysicalDeviceShaderCorePropertiesAMDBuilder<'a> {
26831    type Target = PhysicalDeviceShaderCorePropertiesAMD;
26832    #[inline]
26833    fn deref(&self) -> &Self::Target {
26834        &self.inner
26835    }
26836}
26837impl<'a> core::ops::DerefMut for PhysicalDeviceShaderCorePropertiesAMDBuilder<'a> {
26838    #[inline]
26839    fn deref_mut(&mut self) -> &mut Self::Target {
26840        &mut self.inner
26841    }
26842}
26843///Builder for [`PhysicalDeviceShaderCoreProperties2AMD`] with lifetime-tied pNext safety.
26844pub struct PhysicalDeviceShaderCoreProperties2AMDBuilder<'a> {
26845    inner: PhysicalDeviceShaderCoreProperties2AMD,
26846    _marker: core::marker::PhantomData<&'a ()>,
26847}
26848impl PhysicalDeviceShaderCoreProperties2AMD {
26849    /// Start building this struct; `s_type` is already set to the correct variant.
26850    #[inline]
26851    pub fn builder<'a>() -> PhysicalDeviceShaderCoreProperties2AMDBuilder<'a> {
26852        PhysicalDeviceShaderCoreProperties2AMDBuilder {
26853            inner: PhysicalDeviceShaderCoreProperties2AMD {
26854                s_type: StructureType::from_raw(1000227000i32),
26855                ..Default::default()
26856            },
26857            _marker: core::marker::PhantomData,
26858        }
26859    }
26860}
26861impl<'a> PhysicalDeviceShaderCoreProperties2AMDBuilder<'a> {
26862    #[inline]
26863    pub fn shader_core_features(mut self, value: ShaderCorePropertiesFlagsAMD) -> Self {
26864        self.inner.shader_core_features = value;
26865        self
26866    }
26867    #[inline]
26868    pub fn active_compute_unit_count(mut self, value: u32) -> Self {
26869        self.inner.active_compute_unit_count = value;
26870        self
26871    }
26872}
26873impl<'a> core::ops::Deref for PhysicalDeviceShaderCoreProperties2AMDBuilder<'a> {
26874    type Target = PhysicalDeviceShaderCoreProperties2AMD;
26875    #[inline]
26876    fn deref(&self) -> &Self::Target {
26877        &self.inner
26878    }
26879}
26880impl<'a> core::ops::DerefMut for PhysicalDeviceShaderCoreProperties2AMDBuilder<'a> {
26881    #[inline]
26882    fn deref_mut(&mut self) -> &mut Self::Target {
26883        &mut self.inner
26884    }
26885}
26886///Builder for [`PipelineRasterizationConservativeStateCreateInfoEXT`] with lifetime-tied pNext safety.
26887pub struct PipelineRasterizationConservativeStateCreateInfoEXTBuilder<'a> {
26888    inner: PipelineRasterizationConservativeStateCreateInfoEXT,
26889    _marker: core::marker::PhantomData<&'a ()>,
26890}
26891impl PipelineRasterizationConservativeStateCreateInfoEXT {
26892    /// Start building this struct; `s_type` is already set to the correct variant.
26893    #[inline]
26894    pub fn builder<'a>() -> PipelineRasterizationConservativeStateCreateInfoEXTBuilder<
26895        'a,
26896    > {
26897        PipelineRasterizationConservativeStateCreateInfoEXTBuilder {
26898            inner: PipelineRasterizationConservativeStateCreateInfoEXT {
26899                s_type: StructureType::from_raw(1000101001i32),
26900                ..Default::default()
26901            },
26902            _marker: core::marker::PhantomData,
26903        }
26904    }
26905}
26906impl<'a> PipelineRasterizationConservativeStateCreateInfoEXTBuilder<'a> {
26907    #[inline]
26908    pub fn flags(
26909        mut self,
26910        value: PipelineRasterizationConservativeStateCreateFlagsEXT,
26911    ) -> Self {
26912        self.inner.flags = value;
26913        self
26914    }
26915    #[inline]
26916    pub fn conservative_rasterization_mode(
26917        mut self,
26918        value: ConservativeRasterizationModeEXT,
26919    ) -> Self {
26920        self.inner.conservative_rasterization_mode = value;
26921        self
26922    }
26923    #[inline]
26924    pub fn extra_primitive_overestimation_size(mut self, value: f32) -> Self {
26925        self.inner.extra_primitive_overestimation_size = value;
26926        self
26927    }
26928    ///Prepend a struct to the pNext chain. See [`PipelineRasterizationConservativeStateCreateInfoEXT`]'s **Extended By** section for valid types.
26929    #[inline]
26930    pub fn push_next<T: ExtendsPipelineRasterizationConservativeStateCreateInfoEXT>(
26931        mut self,
26932        next: &'a mut T,
26933    ) -> Self {
26934        unsafe {
26935            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
26936            (*next_ptr).p_next = self.inner.p_next as *mut _;
26937            self.inner.p_next = <*mut BaseOutStructure>::cast::<
26938                core::ffi::c_void,
26939            >(next_ptr) as *const _;
26940        }
26941        self
26942    }
26943}
26944impl<'a> core::ops::Deref
26945for PipelineRasterizationConservativeStateCreateInfoEXTBuilder<'a> {
26946    type Target = PipelineRasterizationConservativeStateCreateInfoEXT;
26947    #[inline]
26948    fn deref(&self) -> &Self::Target {
26949        &self.inner
26950    }
26951}
26952impl<'a> core::ops::DerefMut
26953for PipelineRasterizationConservativeStateCreateInfoEXTBuilder<'a> {
26954    #[inline]
26955    fn deref_mut(&mut self) -> &mut Self::Target {
26956        &mut self.inner
26957    }
26958}
26959///Builder for [`PhysicalDeviceDescriptorIndexingFeatures`] with lifetime-tied pNext safety.
26960pub struct PhysicalDeviceDescriptorIndexingFeaturesBuilder<'a> {
26961    inner: PhysicalDeviceDescriptorIndexingFeatures,
26962    _marker: core::marker::PhantomData<&'a ()>,
26963}
26964impl PhysicalDeviceDescriptorIndexingFeatures {
26965    /// Start building this struct; `s_type` is already set to the correct variant.
26966    #[inline]
26967    pub fn builder<'a>() -> PhysicalDeviceDescriptorIndexingFeaturesBuilder<'a> {
26968        PhysicalDeviceDescriptorIndexingFeaturesBuilder {
26969            inner: PhysicalDeviceDescriptorIndexingFeatures {
26970                s_type: StructureType::from_raw(1000161001i32),
26971                ..Default::default()
26972            },
26973            _marker: core::marker::PhantomData,
26974        }
26975    }
26976}
26977impl<'a> PhysicalDeviceDescriptorIndexingFeaturesBuilder<'a> {
26978    #[inline]
26979    pub fn shader_input_attachment_array_dynamic_indexing(
26980        mut self,
26981        value: bool,
26982    ) -> Self {
26983        self.inner.shader_input_attachment_array_dynamic_indexing = value as u32;
26984        self
26985    }
26986    #[inline]
26987    pub fn shader_uniform_texel_buffer_array_dynamic_indexing(
26988        mut self,
26989        value: bool,
26990    ) -> Self {
26991        self.inner.shader_uniform_texel_buffer_array_dynamic_indexing = value as u32;
26992        self
26993    }
26994    #[inline]
26995    pub fn shader_storage_texel_buffer_array_dynamic_indexing(
26996        mut self,
26997        value: bool,
26998    ) -> Self {
26999        self.inner.shader_storage_texel_buffer_array_dynamic_indexing = value as u32;
27000        self
27001    }
27002    #[inline]
27003    pub fn shader_uniform_buffer_array_non_uniform_indexing(
27004        mut self,
27005        value: bool,
27006    ) -> Self {
27007        self.inner.shader_uniform_buffer_array_non_uniform_indexing = value as u32;
27008        self
27009    }
27010    #[inline]
27011    pub fn shader_sampled_image_array_non_uniform_indexing(
27012        mut self,
27013        value: bool,
27014    ) -> Self {
27015        self.inner.shader_sampled_image_array_non_uniform_indexing = value as u32;
27016        self
27017    }
27018    #[inline]
27019    pub fn shader_storage_buffer_array_non_uniform_indexing(
27020        mut self,
27021        value: bool,
27022    ) -> Self {
27023        self.inner.shader_storage_buffer_array_non_uniform_indexing = value as u32;
27024        self
27025    }
27026    #[inline]
27027    pub fn shader_storage_image_array_non_uniform_indexing(
27028        mut self,
27029        value: bool,
27030    ) -> Self {
27031        self.inner.shader_storage_image_array_non_uniform_indexing = value as u32;
27032        self
27033    }
27034    #[inline]
27035    pub fn shader_input_attachment_array_non_uniform_indexing(
27036        mut self,
27037        value: bool,
27038    ) -> Self {
27039        self.inner.shader_input_attachment_array_non_uniform_indexing = value as u32;
27040        self
27041    }
27042    #[inline]
27043    pub fn shader_uniform_texel_buffer_array_non_uniform_indexing(
27044        mut self,
27045        value: bool,
27046    ) -> Self {
27047        self.inner.shader_uniform_texel_buffer_array_non_uniform_indexing = value as u32;
27048        self
27049    }
27050    #[inline]
27051    pub fn shader_storage_texel_buffer_array_non_uniform_indexing(
27052        mut self,
27053        value: bool,
27054    ) -> Self {
27055        self.inner.shader_storage_texel_buffer_array_non_uniform_indexing = value as u32;
27056        self
27057    }
27058    #[inline]
27059    pub fn descriptor_binding_uniform_buffer_update_after_bind(
27060        mut self,
27061        value: bool,
27062    ) -> Self {
27063        self.inner.descriptor_binding_uniform_buffer_update_after_bind = value as u32;
27064        self
27065    }
27066    #[inline]
27067    pub fn descriptor_binding_sampled_image_update_after_bind(
27068        mut self,
27069        value: bool,
27070    ) -> Self {
27071        self.inner.descriptor_binding_sampled_image_update_after_bind = value as u32;
27072        self
27073    }
27074    #[inline]
27075    pub fn descriptor_binding_storage_image_update_after_bind(
27076        mut self,
27077        value: bool,
27078    ) -> Self {
27079        self.inner.descriptor_binding_storage_image_update_after_bind = value as u32;
27080        self
27081    }
27082    #[inline]
27083    pub fn descriptor_binding_storage_buffer_update_after_bind(
27084        mut self,
27085        value: bool,
27086    ) -> Self {
27087        self.inner.descriptor_binding_storage_buffer_update_after_bind = value as u32;
27088        self
27089    }
27090    #[inline]
27091    pub fn descriptor_binding_uniform_texel_buffer_update_after_bind(
27092        mut self,
27093        value: bool,
27094    ) -> Self {
27095        self.inner.descriptor_binding_uniform_texel_buffer_update_after_bind = value
27096            as u32;
27097        self
27098    }
27099    #[inline]
27100    pub fn descriptor_binding_storage_texel_buffer_update_after_bind(
27101        mut self,
27102        value: bool,
27103    ) -> Self {
27104        self.inner.descriptor_binding_storage_texel_buffer_update_after_bind = value
27105            as u32;
27106        self
27107    }
27108    #[inline]
27109    pub fn descriptor_binding_update_unused_while_pending(
27110        mut self,
27111        value: bool,
27112    ) -> Self {
27113        self.inner.descriptor_binding_update_unused_while_pending = value as u32;
27114        self
27115    }
27116    #[inline]
27117    pub fn descriptor_binding_partially_bound(mut self, value: bool) -> Self {
27118        self.inner.descriptor_binding_partially_bound = value as u32;
27119        self
27120    }
27121    #[inline]
27122    pub fn descriptor_binding_variable_descriptor_count(mut self, value: bool) -> Self {
27123        self.inner.descriptor_binding_variable_descriptor_count = value as u32;
27124        self
27125    }
27126    #[inline]
27127    pub fn runtime_descriptor_array(mut self, value: bool) -> Self {
27128        self.inner.runtime_descriptor_array = value as u32;
27129        self
27130    }
27131    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDescriptorIndexingFeatures`]'s **Extended By** section for valid types.
27132    #[inline]
27133    pub fn push_next<T: ExtendsPhysicalDeviceDescriptorIndexingFeatures>(
27134        mut self,
27135        next: &'a mut T,
27136    ) -> Self {
27137        unsafe {
27138            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
27139            (*next_ptr).p_next = self.inner.p_next as *mut _;
27140            self.inner.p_next = <*mut BaseOutStructure>::cast::<
27141                core::ffi::c_void,
27142            >(next_ptr);
27143        }
27144        self
27145    }
27146}
27147impl<'a> core::ops::Deref for PhysicalDeviceDescriptorIndexingFeaturesBuilder<'a> {
27148    type Target = PhysicalDeviceDescriptorIndexingFeatures;
27149    #[inline]
27150    fn deref(&self) -> &Self::Target {
27151        &self.inner
27152    }
27153}
27154impl<'a> core::ops::DerefMut for PhysicalDeviceDescriptorIndexingFeaturesBuilder<'a> {
27155    #[inline]
27156    fn deref_mut(&mut self) -> &mut Self::Target {
27157        &mut self.inner
27158    }
27159}
27160///Builder for [`PhysicalDeviceDescriptorIndexingProperties`] with lifetime-tied pNext safety.
27161pub struct PhysicalDeviceDescriptorIndexingPropertiesBuilder<'a> {
27162    inner: PhysicalDeviceDescriptorIndexingProperties,
27163    _marker: core::marker::PhantomData<&'a ()>,
27164}
27165impl PhysicalDeviceDescriptorIndexingProperties {
27166    /// Start building this struct; `s_type` is already set to the correct variant.
27167    #[inline]
27168    pub fn builder<'a>() -> PhysicalDeviceDescriptorIndexingPropertiesBuilder<'a> {
27169        PhysicalDeviceDescriptorIndexingPropertiesBuilder {
27170            inner: PhysicalDeviceDescriptorIndexingProperties {
27171                s_type: StructureType::from_raw(1000161002i32),
27172                ..Default::default()
27173            },
27174            _marker: core::marker::PhantomData,
27175        }
27176    }
27177}
27178impl<'a> PhysicalDeviceDescriptorIndexingPropertiesBuilder<'a> {
27179    #[inline]
27180    pub fn max_update_after_bind_descriptors_in_all_pools(mut self, value: u32) -> Self {
27181        self.inner.max_update_after_bind_descriptors_in_all_pools = value;
27182        self
27183    }
27184    #[inline]
27185    pub fn shader_uniform_buffer_array_non_uniform_indexing_native(
27186        mut self,
27187        value: bool,
27188    ) -> Self {
27189        self.inner.shader_uniform_buffer_array_non_uniform_indexing_native = value
27190            as u32;
27191        self
27192    }
27193    #[inline]
27194    pub fn shader_sampled_image_array_non_uniform_indexing_native(
27195        mut self,
27196        value: bool,
27197    ) -> Self {
27198        self.inner.shader_sampled_image_array_non_uniform_indexing_native = value as u32;
27199        self
27200    }
27201    #[inline]
27202    pub fn shader_storage_buffer_array_non_uniform_indexing_native(
27203        mut self,
27204        value: bool,
27205    ) -> Self {
27206        self.inner.shader_storage_buffer_array_non_uniform_indexing_native = value
27207            as u32;
27208        self
27209    }
27210    #[inline]
27211    pub fn shader_storage_image_array_non_uniform_indexing_native(
27212        mut self,
27213        value: bool,
27214    ) -> Self {
27215        self.inner.shader_storage_image_array_non_uniform_indexing_native = value as u32;
27216        self
27217    }
27218    #[inline]
27219    pub fn shader_input_attachment_array_non_uniform_indexing_native(
27220        mut self,
27221        value: bool,
27222    ) -> Self {
27223        self.inner.shader_input_attachment_array_non_uniform_indexing_native = value
27224            as u32;
27225        self
27226    }
27227    #[inline]
27228    pub fn robust_buffer_access_update_after_bind(mut self, value: bool) -> Self {
27229        self.inner.robust_buffer_access_update_after_bind = value as u32;
27230        self
27231    }
27232    #[inline]
27233    pub fn quad_divergent_implicit_lod(mut self, value: bool) -> Self {
27234        self.inner.quad_divergent_implicit_lod = value as u32;
27235        self
27236    }
27237    #[inline]
27238    pub fn max_per_stage_descriptor_update_after_bind_samplers(
27239        mut self,
27240        value: u32,
27241    ) -> Self {
27242        self.inner.max_per_stage_descriptor_update_after_bind_samplers = value;
27243        self
27244    }
27245    #[inline]
27246    pub fn max_per_stage_descriptor_update_after_bind_uniform_buffers(
27247        mut self,
27248        value: u32,
27249    ) -> Self {
27250        self.inner.max_per_stage_descriptor_update_after_bind_uniform_buffers = value;
27251        self
27252    }
27253    #[inline]
27254    pub fn max_per_stage_descriptor_update_after_bind_storage_buffers(
27255        mut self,
27256        value: u32,
27257    ) -> Self {
27258        self.inner.max_per_stage_descriptor_update_after_bind_storage_buffers = value;
27259        self
27260    }
27261    #[inline]
27262    pub fn max_per_stage_descriptor_update_after_bind_sampled_images(
27263        mut self,
27264        value: u32,
27265    ) -> Self {
27266        self.inner.max_per_stage_descriptor_update_after_bind_sampled_images = value;
27267        self
27268    }
27269    #[inline]
27270    pub fn max_per_stage_descriptor_update_after_bind_storage_images(
27271        mut self,
27272        value: u32,
27273    ) -> Self {
27274        self.inner.max_per_stage_descriptor_update_after_bind_storage_images = value;
27275        self
27276    }
27277    #[inline]
27278    pub fn max_per_stage_descriptor_update_after_bind_input_attachments(
27279        mut self,
27280        value: u32,
27281    ) -> Self {
27282        self.inner.max_per_stage_descriptor_update_after_bind_input_attachments = value;
27283        self
27284    }
27285    #[inline]
27286    pub fn max_per_stage_update_after_bind_resources(mut self, value: u32) -> Self {
27287        self.inner.max_per_stage_update_after_bind_resources = value;
27288        self
27289    }
27290    #[inline]
27291    pub fn max_descriptor_set_update_after_bind_samplers(mut self, value: u32) -> Self {
27292        self.inner.max_descriptor_set_update_after_bind_samplers = value;
27293        self
27294    }
27295    #[inline]
27296    pub fn max_descriptor_set_update_after_bind_uniform_buffers(
27297        mut self,
27298        value: u32,
27299    ) -> Self {
27300        self.inner.max_descriptor_set_update_after_bind_uniform_buffers = value;
27301        self
27302    }
27303    #[inline]
27304    pub fn max_descriptor_set_update_after_bind_uniform_buffers_dynamic(
27305        mut self,
27306        value: u32,
27307    ) -> Self {
27308        self.inner.max_descriptor_set_update_after_bind_uniform_buffers_dynamic = value;
27309        self
27310    }
27311    #[inline]
27312    pub fn max_descriptor_set_update_after_bind_storage_buffers(
27313        mut self,
27314        value: u32,
27315    ) -> Self {
27316        self.inner.max_descriptor_set_update_after_bind_storage_buffers = value;
27317        self
27318    }
27319    #[inline]
27320    pub fn max_descriptor_set_update_after_bind_storage_buffers_dynamic(
27321        mut self,
27322        value: u32,
27323    ) -> Self {
27324        self.inner.max_descriptor_set_update_after_bind_storage_buffers_dynamic = value;
27325        self
27326    }
27327    #[inline]
27328    pub fn max_descriptor_set_update_after_bind_sampled_images(
27329        mut self,
27330        value: u32,
27331    ) -> Self {
27332        self.inner.max_descriptor_set_update_after_bind_sampled_images = value;
27333        self
27334    }
27335    #[inline]
27336    pub fn max_descriptor_set_update_after_bind_storage_images(
27337        mut self,
27338        value: u32,
27339    ) -> Self {
27340        self.inner.max_descriptor_set_update_after_bind_storage_images = value;
27341        self
27342    }
27343    #[inline]
27344    pub fn max_descriptor_set_update_after_bind_input_attachments(
27345        mut self,
27346        value: u32,
27347    ) -> Self {
27348        self.inner.max_descriptor_set_update_after_bind_input_attachments = value;
27349        self
27350    }
27351}
27352impl<'a> core::ops::Deref for PhysicalDeviceDescriptorIndexingPropertiesBuilder<'a> {
27353    type Target = PhysicalDeviceDescriptorIndexingProperties;
27354    #[inline]
27355    fn deref(&self) -> &Self::Target {
27356        &self.inner
27357    }
27358}
27359impl<'a> core::ops::DerefMut for PhysicalDeviceDescriptorIndexingPropertiesBuilder<'a> {
27360    #[inline]
27361    fn deref_mut(&mut self) -> &mut Self::Target {
27362        &mut self.inner
27363    }
27364}
27365///Builder for [`DescriptorSetLayoutBindingFlagsCreateInfo`] with lifetime-tied pNext safety.
27366pub struct DescriptorSetLayoutBindingFlagsCreateInfoBuilder<'a> {
27367    inner: DescriptorSetLayoutBindingFlagsCreateInfo,
27368    _marker: core::marker::PhantomData<&'a ()>,
27369}
27370impl DescriptorSetLayoutBindingFlagsCreateInfo {
27371    /// Start building this struct; `s_type` is already set to the correct variant.
27372    #[inline]
27373    pub fn builder<'a>() -> DescriptorSetLayoutBindingFlagsCreateInfoBuilder<'a> {
27374        DescriptorSetLayoutBindingFlagsCreateInfoBuilder {
27375            inner: DescriptorSetLayoutBindingFlagsCreateInfo {
27376                s_type: StructureType::from_raw(1000161000i32),
27377                ..Default::default()
27378            },
27379            _marker: core::marker::PhantomData,
27380        }
27381    }
27382}
27383impl<'a> DescriptorSetLayoutBindingFlagsCreateInfoBuilder<'a> {
27384    #[inline]
27385    pub fn binding_count(mut self, value: u32) -> Self {
27386        self.inner.binding_count = value;
27387        self
27388    }
27389    #[inline]
27390    pub fn binding_flags(mut self, slice: &'a [DescriptorBindingFlags]) -> Self {
27391        self.inner.binding_count = slice.len() as u32;
27392        self.inner.p_binding_flags = slice.as_ptr();
27393        self
27394    }
27395    ///Prepend a struct to the pNext chain. See [`DescriptorSetLayoutBindingFlagsCreateInfo`]'s **Extended By** section for valid types.
27396    #[inline]
27397    pub fn push_next<T: ExtendsDescriptorSetLayoutBindingFlagsCreateInfo>(
27398        mut self,
27399        next: &'a mut T,
27400    ) -> Self {
27401        unsafe {
27402            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
27403            (*next_ptr).p_next = self.inner.p_next as *mut _;
27404            self.inner.p_next = <*mut BaseOutStructure>::cast::<
27405                core::ffi::c_void,
27406            >(next_ptr) as *const _;
27407        }
27408        self
27409    }
27410}
27411impl<'a> core::ops::Deref for DescriptorSetLayoutBindingFlagsCreateInfoBuilder<'a> {
27412    type Target = DescriptorSetLayoutBindingFlagsCreateInfo;
27413    #[inline]
27414    fn deref(&self) -> &Self::Target {
27415        &self.inner
27416    }
27417}
27418impl<'a> core::ops::DerefMut for DescriptorSetLayoutBindingFlagsCreateInfoBuilder<'a> {
27419    #[inline]
27420    fn deref_mut(&mut self) -> &mut Self::Target {
27421        &mut self.inner
27422    }
27423}
27424///Builder for [`DescriptorSetVariableDescriptorCountAllocateInfo`] with lifetime-tied pNext safety.
27425pub struct DescriptorSetVariableDescriptorCountAllocateInfoBuilder<'a> {
27426    inner: DescriptorSetVariableDescriptorCountAllocateInfo,
27427    _marker: core::marker::PhantomData<&'a ()>,
27428}
27429impl DescriptorSetVariableDescriptorCountAllocateInfo {
27430    /// Start building this struct; `s_type` is already set to the correct variant.
27431    #[inline]
27432    pub fn builder<'a>() -> DescriptorSetVariableDescriptorCountAllocateInfoBuilder<'a> {
27433        DescriptorSetVariableDescriptorCountAllocateInfoBuilder {
27434            inner: DescriptorSetVariableDescriptorCountAllocateInfo {
27435                s_type: StructureType::from_raw(1000161003i32),
27436                ..Default::default()
27437            },
27438            _marker: core::marker::PhantomData,
27439        }
27440    }
27441}
27442impl<'a> DescriptorSetVariableDescriptorCountAllocateInfoBuilder<'a> {
27443    #[inline]
27444    pub fn descriptor_counts(mut self, slice: &'a [u32]) -> Self {
27445        self.inner.descriptor_set_count = slice.len() as u32;
27446        self.inner.p_descriptor_counts = slice.as_ptr();
27447        self
27448    }
27449    ///Prepend a struct to the pNext chain. See [`DescriptorSetVariableDescriptorCountAllocateInfo`]'s **Extended By** section for valid types.
27450    #[inline]
27451    pub fn push_next<T: ExtendsDescriptorSetVariableDescriptorCountAllocateInfo>(
27452        mut self,
27453        next: &'a mut T,
27454    ) -> Self {
27455        unsafe {
27456            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
27457            (*next_ptr).p_next = self.inner.p_next as *mut _;
27458            self.inner.p_next = <*mut BaseOutStructure>::cast::<
27459                core::ffi::c_void,
27460            >(next_ptr) as *const _;
27461        }
27462        self
27463    }
27464}
27465impl<'a> core::ops::Deref
27466for DescriptorSetVariableDescriptorCountAllocateInfoBuilder<'a> {
27467    type Target = DescriptorSetVariableDescriptorCountAllocateInfo;
27468    #[inline]
27469    fn deref(&self) -> &Self::Target {
27470        &self.inner
27471    }
27472}
27473impl<'a> core::ops::DerefMut
27474for DescriptorSetVariableDescriptorCountAllocateInfoBuilder<'a> {
27475    #[inline]
27476    fn deref_mut(&mut self) -> &mut Self::Target {
27477        &mut self.inner
27478    }
27479}
27480///Builder for [`DescriptorSetVariableDescriptorCountLayoutSupport`] with lifetime-tied pNext safety.
27481pub struct DescriptorSetVariableDescriptorCountLayoutSupportBuilder<'a> {
27482    inner: DescriptorSetVariableDescriptorCountLayoutSupport,
27483    _marker: core::marker::PhantomData<&'a ()>,
27484}
27485impl DescriptorSetVariableDescriptorCountLayoutSupport {
27486    /// Start building this struct; `s_type` is already set to the correct variant.
27487    #[inline]
27488    pub fn builder<'a>() -> DescriptorSetVariableDescriptorCountLayoutSupportBuilder<
27489        'a,
27490    > {
27491        DescriptorSetVariableDescriptorCountLayoutSupportBuilder {
27492            inner: DescriptorSetVariableDescriptorCountLayoutSupport {
27493                s_type: StructureType::from_raw(1000161004i32),
27494                ..Default::default()
27495            },
27496            _marker: core::marker::PhantomData,
27497        }
27498    }
27499}
27500impl<'a> DescriptorSetVariableDescriptorCountLayoutSupportBuilder<'a> {
27501    #[inline]
27502    pub fn max_variable_descriptor_count(mut self, value: u32) -> Self {
27503        self.inner.max_variable_descriptor_count = value;
27504        self
27505    }
27506}
27507impl<'a> core::ops::Deref
27508for DescriptorSetVariableDescriptorCountLayoutSupportBuilder<'a> {
27509    type Target = DescriptorSetVariableDescriptorCountLayoutSupport;
27510    #[inline]
27511    fn deref(&self) -> &Self::Target {
27512        &self.inner
27513    }
27514}
27515impl<'a> core::ops::DerefMut
27516for DescriptorSetVariableDescriptorCountLayoutSupportBuilder<'a> {
27517    #[inline]
27518    fn deref_mut(&mut self) -> &mut Self::Target {
27519        &mut self.inner
27520    }
27521}
27522///Builder for [`AttachmentDescription2`] with lifetime-tied pNext safety.
27523pub struct AttachmentDescription2Builder<'a> {
27524    inner: AttachmentDescription2,
27525    _marker: core::marker::PhantomData<&'a ()>,
27526}
27527impl AttachmentDescription2 {
27528    /// Start building this struct; `s_type` is already set to the correct variant.
27529    #[inline]
27530    pub fn builder<'a>() -> AttachmentDescription2Builder<'a> {
27531        AttachmentDescription2Builder {
27532            inner: AttachmentDescription2 {
27533                s_type: StructureType::from_raw(1000109000i32),
27534                ..Default::default()
27535            },
27536            _marker: core::marker::PhantomData,
27537        }
27538    }
27539}
27540impl<'a> AttachmentDescription2Builder<'a> {
27541    #[inline]
27542    pub fn flags(mut self, value: AttachmentDescriptionFlags) -> Self {
27543        self.inner.flags = value;
27544        self
27545    }
27546    #[inline]
27547    pub fn format(mut self, value: Format) -> Self {
27548        self.inner.format = value;
27549        self
27550    }
27551    #[inline]
27552    pub fn samples(mut self, value: SampleCountFlagBits) -> Self {
27553        self.inner.samples = value;
27554        self
27555    }
27556    #[inline]
27557    pub fn load_op(mut self, value: AttachmentLoadOp) -> Self {
27558        self.inner.load_op = value;
27559        self
27560    }
27561    #[inline]
27562    pub fn store_op(mut self, value: AttachmentStoreOp) -> Self {
27563        self.inner.store_op = value;
27564        self
27565    }
27566    #[inline]
27567    pub fn stencil_load_op(mut self, value: AttachmentLoadOp) -> Self {
27568        self.inner.stencil_load_op = value;
27569        self
27570    }
27571    #[inline]
27572    pub fn stencil_store_op(mut self, value: AttachmentStoreOp) -> Self {
27573        self.inner.stencil_store_op = value;
27574        self
27575    }
27576    #[inline]
27577    pub fn initial_layout(mut self, value: ImageLayout) -> Self {
27578        self.inner.initial_layout = value;
27579        self
27580    }
27581    #[inline]
27582    pub fn final_layout(mut self, value: ImageLayout) -> Self {
27583        self.inner.final_layout = value;
27584        self
27585    }
27586    ///Prepend a struct to the pNext chain. See [`AttachmentDescription2`]'s **Extended By** section for valid types.
27587    #[inline]
27588    pub fn push_next<T: ExtendsAttachmentDescription2>(
27589        mut self,
27590        next: &'a mut T,
27591    ) -> Self {
27592        unsafe {
27593            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
27594            (*next_ptr).p_next = self.inner.p_next as *mut _;
27595            self.inner.p_next = <*mut BaseOutStructure>::cast::<
27596                core::ffi::c_void,
27597            >(next_ptr) as *const _;
27598        }
27599        self
27600    }
27601}
27602impl<'a> core::ops::Deref for AttachmentDescription2Builder<'a> {
27603    type Target = AttachmentDescription2;
27604    #[inline]
27605    fn deref(&self) -> &Self::Target {
27606        &self.inner
27607    }
27608}
27609impl<'a> core::ops::DerefMut for AttachmentDescription2Builder<'a> {
27610    #[inline]
27611    fn deref_mut(&mut self) -> &mut Self::Target {
27612        &mut self.inner
27613    }
27614}
27615///Builder for [`AttachmentReference2`] with lifetime-tied pNext safety.
27616pub struct AttachmentReference2Builder<'a> {
27617    inner: AttachmentReference2,
27618    _marker: core::marker::PhantomData<&'a ()>,
27619}
27620impl AttachmentReference2 {
27621    /// Start building this struct; `s_type` is already set to the correct variant.
27622    #[inline]
27623    pub fn builder<'a>() -> AttachmentReference2Builder<'a> {
27624        AttachmentReference2Builder {
27625            inner: AttachmentReference2 {
27626                s_type: StructureType::from_raw(1000109001i32),
27627                ..Default::default()
27628            },
27629            _marker: core::marker::PhantomData,
27630        }
27631    }
27632}
27633impl<'a> AttachmentReference2Builder<'a> {
27634    #[inline]
27635    pub fn attachment(mut self, value: u32) -> Self {
27636        self.inner.attachment = value;
27637        self
27638    }
27639    #[inline]
27640    pub fn layout(mut self, value: ImageLayout) -> Self {
27641        self.inner.layout = value;
27642        self
27643    }
27644    #[inline]
27645    pub fn aspect_mask(mut self, value: ImageAspectFlags) -> Self {
27646        self.inner.aspect_mask = value;
27647        self
27648    }
27649    ///Prepend a struct to the pNext chain. See [`AttachmentReference2`]'s **Extended By** section for valid types.
27650    #[inline]
27651    pub fn push_next<T: ExtendsAttachmentReference2>(mut self, next: &'a mut T) -> Self {
27652        unsafe {
27653            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
27654            (*next_ptr).p_next = self.inner.p_next as *mut _;
27655            self.inner.p_next = <*mut BaseOutStructure>::cast::<
27656                core::ffi::c_void,
27657            >(next_ptr) as *const _;
27658        }
27659        self
27660    }
27661}
27662impl<'a> core::ops::Deref for AttachmentReference2Builder<'a> {
27663    type Target = AttachmentReference2;
27664    #[inline]
27665    fn deref(&self) -> &Self::Target {
27666        &self.inner
27667    }
27668}
27669impl<'a> core::ops::DerefMut for AttachmentReference2Builder<'a> {
27670    #[inline]
27671    fn deref_mut(&mut self) -> &mut Self::Target {
27672        &mut self.inner
27673    }
27674}
27675///Builder for [`SubpassDescription2`] with lifetime-tied pNext safety.
27676pub struct SubpassDescription2Builder<'a> {
27677    inner: SubpassDescription2,
27678    _marker: core::marker::PhantomData<&'a ()>,
27679}
27680impl SubpassDescription2 {
27681    /// Start building this struct; `s_type` is already set to the correct variant.
27682    #[inline]
27683    pub fn builder<'a>() -> SubpassDescription2Builder<'a> {
27684        SubpassDescription2Builder {
27685            inner: SubpassDescription2 {
27686                s_type: StructureType::from_raw(1000109002i32),
27687                ..Default::default()
27688            },
27689            _marker: core::marker::PhantomData,
27690        }
27691    }
27692}
27693impl<'a> SubpassDescription2Builder<'a> {
27694    #[inline]
27695    pub fn flags(mut self, value: SubpassDescriptionFlags) -> Self {
27696        self.inner.flags = value;
27697        self
27698    }
27699    #[inline]
27700    pub fn pipeline_bind_point(mut self, value: PipelineBindPoint) -> Self {
27701        self.inner.pipeline_bind_point = value;
27702        self
27703    }
27704    #[inline]
27705    pub fn view_mask(mut self, value: u32) -> Self {
27706        self.inner.view_mask = value;
27707        self
27708    }
27709    #[inline]
27710    pub fn input_attachments(mut self, slice: &'a [AttachmentReference2]) -> Self {
27711        self.inner.input_attachment_count = slice.len() as u32;
27712        self.inner.p_input_attachments = slice.as_ptr();
27713        self
27714    }
27715    #[inline]
27716    pub fn color_attachments(mut self, slice: &'a [AttachmentReference2]) -> Self {
27717        self.inner.color_attachment_count = slice.len() as u32;
27718        self.inner.p_color_attachments = slice.as_ptr();
27719        self
27720    }
27721    #[inline]
27722    pub fn resolve_attachments(mut self, slice: &'a [AttachmentReference2]) -> Self {
27723        self.inner.color_attachment_count = slice.len() as u32;
27724        self.inner.p_resolve_attachments = slice.as_ptr();
27725        self
27726    }
27727    #[inline]
27728    pub fn depth_stencil_attachment(mut self, value: &'a AttachmentReference2) -> Self {
27729        self.inner.p_depth_stencil_attachment = value;
27730        self
27731    }
27732    #[inline]
27733    pub fn preserve_attachments(mut self, slice: &'a [u32]) -> Self {
27734        self.inner.preserve_attachment_count = slice.len() as u32;
27735        self.inner.p_preserve_attachments = slice.as_ptr();
27736        self
27737    }
27738    ///Prepend a struct to the pNext chain. See [`SubpassDescription2`]'s **Extended By** section for valid types.
27739    #[inline]
27740    pub fn push_next<T: ExtendsSubpassDescription2>(mut self, next: &'a mut T) -> Self {
27741        unsafe {
27742            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
27743            (*next_ptr).p_next = self.inner.p_next as *mut _;
27744            self.inner.p_next = <*mut BaseOutStructure>::cast::<
27745                core::ffi::c_void,
27746            >(next_ptr) as *const _;
27747        }
27748        self
27749    }
27750}
27751impl<'a> core::ops::Deref for SubpassDescription2Builder<'a> {
27752    type Target = SubpassDescription2;
27753    #[inline]
27754    fn deref(&self) -> &Self::Target {
27755        &self.inner
27756    }
27757}
27758impl<'a> core::ops::DerefMut for SubpassDescription2Builder<'a> {
27759    #[inline]
27760    fn deref_mut(&mut self) -> &mut Self::Target {
27761        &mut self.inner
27762    }
27763}
27764///Builder for [`SubpassDependency2`] with lifetime-tied pNext safety.
27765pub struct SubpassDependency2Builder<'a> {
27766    inner: SubpassDependency2,
27767    _marker: core::marker::PhantomData<&'a ()>,
27768}
27769impl SubpassDependency2 {
27770    /// Start building this struct; `s_type` is already set to the correct variant.
27771    #[inline]
27772    pub fn builder<'a>() -> SubpassDependency2Builder<'a> {
27773        SubpassDependency2Builder {
27774            inner: SubpassDependency2 {
27775                s_type: StructureType::from_raw(1000109003i32),
27776                ..Default::default()
27777            },
27778            _marker: core::marker::PhantomData,
27779        }
27780    }
27781}
27782impl<'a> SubpassDependency2Builder<'a> {
27783    #[inline]
27784    pub fn src_subpass(mut self, value: u32) -> Self {
27785        self.inner.src_subpass = value;
27786        self
27787    }
27788    #[inline]
27789    pub fn dst_subpass(mut self, value: u32) -> Self {
27790        self.inner.dst_subpass = value;
27791        self
27792    }
27793    #[inline]
27794    pub fn src_stage_mask(mut self, value: PipelineStageFlags) -> Self {
27795        self.inner.src_stage_mask = value;
27796        self
27797    }
27798    #[inline]
27799    pub fn dst_stage_mask(mut self, value: PipelineStageFlags) -> Self {
27800        self.inner.dst_stage_mask = value;
27801        self
27802    }
27803    #[inline]
27804    pub fn src_access_mask(mut self, value: AccessFlags) -> Self {
27805        self.inner.src_access_mask = value;
27806        self
27807    }
27808    #[inline]
27809    pub fn dst_access_mask(mut self, value: AccessFlags) -> Self {
27810        self.inner.dst_access_mask = value;
27811        self
27812    }
27813    #[inline]
27814    pub fn dependency_flags(mut self, value: DependencyFlags) -> Self {
27815        self.inner.dependency_flags = value;
27816        self
27817    }
27818    #[inline]
27819    pub fn view_offset(mut self, value: i32) -> Self {
27820        self.inner.view_offset = value;
27821        self
27822    }
27823    ///Prepend a struct to the pNext chain. See [`SubpassDependency2`]'s **Extended By** section for valid types.
27824    #[inline]
27825    pub fn push_next<T: ExtendsSubpassDependency2>(mut self, next: &'a mut T) -> Self {
27826        unsafe {
27827            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
27828            (*next_ptr).p_next = self.inner.p_next as *mut _;
27829            self.inner.p_next = <*mut BaseOutStructure>::cast::<
27830                core::ffi::c_void,
27831            >(next_ptr) as *const _;
27832        }
27833        self
27834    }
27835}
27836impl<'a> core::ops::Deref for SubpassDependency2Builder<'a> {
27837    type Target = SubpassDependency2;
27838    #[inline]
27839    fn deref(&self) -> &Self::Target {
27840        &self.inner
27841    }
27842}
27843impl<'a> core::ops::DerefMut for SubpassDependency2Builder<'a> {
27844    #[inline]
27845    fn deref_mut(&mut self) -> &mut Self::Target {
27846        &mut self.inner
27847    }
27848}
27849///Builder for [`RenderPassCreateInfo2`] with lifetime-tied pNext safety.
27850pub struct RenderPassCreateInfo2Builder<'a> {
27851    inner: RenderPassCreateInfo2,
27852    _marker: core::marker::PhantomData<&'a ()>,
27853}
27854impl RenderPassCreateInfo2 {
27855    /// Start building this struct; `s_type` is already set to the correct variant.
27856    #[inline]
27857    pub fn builder<'a>() -> RenderPassCreateInfo2Builder<'a> {
27858        RenderPassCreateInfo2Builder {
27859            inner: RenderPassCreateInfo2 {
27860                s_type: StructureType::from_raw(1000109004i32),
27861                ..Default::default()
27862            },
27863            _marker: core::marker::PhantomData,
27864        }
27865    }
27866}
27867impl<'a> RenderPassCreateInfo2Builder<'a> {
27868    #[inline]
27869    pub fn flags(mut self, value: RenderPassCreateFlags) -> Self {
27870        self.inner.flags = value;
27871        self
27872    }
27873    #[inline]
27874    pub fn attachments(mut self, slice: &'a [AttachmentDescription2]) -> Self {
27875        self.inner.attachment_count = slice.len() as u32;
27876        self.inner.p_attachments = slice.as_ptr();
27877        self
27878    }
27879    #[inline]
27880    pub fn subpasses(mut self, slice: &'a [SubpassDescription2]) -> Self {
27881        self.inner.subpass_count = slice.len() as u32;
27882        self.inner.p_subpasses = slice.as_ptr();
27883        self
27884    }
27885    #[inline]
27886    pub fn dependencies(mut self, slice: &'a [SubpassDependency2]) -> Self {
27887        self.inner.dependency_count = slice.len() as u32;
27888        self.inner.p_dependencies = slice.as_ptr();
27889        self
27890    }
27891    #[inline]
27892    pub fn correlated_view_masks(mut self, slice: &'a [u32]) -> Self {
27893        self.inner.correlated_view_mask_count = slice.len() as u32;
27894        self.inner.p_correlated_view_masks = slice.as_ptr();
27895        self
27896    }
27897    ///Prepend a struct to the pNext chain. See [`RenderPassCreateInfo2`]'s **Extended By** section for valid types.
27898    #[inline]
27899    pub fn push_next<T: ExtendsRenderPassCreateInfo2>(
27900        mut self,
27901        next: &'a mut T,
27902    ) -> Self {
27903        unsafe {
27904            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
27905            (*next_ptr).p_next = self.inner.p_next as *mut _;
27906            self.inner.p_next = <*mut BaseOutStructure>::cast::<
27907                core::ffi::c_void,
27908            >(next_ptr) as *const _;
27909        }
27910        self
27911    }
27912}
27913impl<'a> core::ops::Deref for RenderPassCreateInfo2Builder<'a> {
27914    type Target = RenderPassCreateInfo2;
27915    #[inline]
27916    fn deref(&self) -> &Self::Target {
27917        &self.inner
27918    }
27919}
27920impl<'a> core::ops::DerefMut for RenderPassCreateInfo2Builder<'a> {
27921    #[inline]
27922    fn deref_mut(&mut self) -> &mut Self::Target {
27923        &mut self.inner
27924    }
27925}
27926///Builder for [`SubpassBeginInfo`] with lifetime-tied pNext safety.
27927pub struct SubpassBeginInfoBuilder<'a> {
27928    inner: SubpassBeginInfo,
27929    _marker: core::marker::PhantomData<&'a ()>,
27930}
27931impl SubpassBeginInfo {
27932    /// Start building this struct; `s_type` is already set to the correct variant.
27933    #[inline]
27934    pub fn builder<'a>() -> SubpassBeginInfoBuilder<'a> {
27935        SubpassBeginInfoBuilder {
27936            inner: SubpassBeginInfo {
27937                s_type: StructureType::from_raw(1000109005i32),
27938                ..Default::default()
27939            },
27940            _marker: core::marker::PhantomData,
27941        }
27942    }
27943}
27944impl<'a> SubpassBeginInfoBuilder<'a> {
27945    #[inline]
27946    pub fn contents(mut self, value: SubpassContents) -> Self {
27947        self.inner.contents = value;
27948        self
27949    }
27950    ///Prepend a struct to the pNext chain. See [`SubpassBeginInfo`]'s **Extended By** section for valid types.
27951    #[inline]
27952    pub fn push_next<T: ExtendsSubpassBeginInfo>(mut self, next: &'a mut T) -> Self {
27953        unsafe {
27954            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
27955            (*next_ptr).p_next = self.inner.p_next as *mut _;
27956            self.inner.p_next = <*mut BaseOutStructure>::cast::<
27957                core::ffi::c_void,
27958            >(next_ptr) as *const _;
27959        }
27960        self
27961    }
27962}
27963impl<'a> core::ops::Deref for SubpassBeginInfoBuilder<'a> {
27964    type Target = SubpassBeginInfo;
27965    #[inline]
27966    fn deref(&self) -> &Self::Target {
27967        &self.inner
27968    }
27969}
27970impl<'a> core::ops::DerefMut for SubpassBeginInfoBuilder<'a> {
27971    #[inline]
27972    fn deref_mut(&mut self) -> &mut Self::Target {
27973        &mut self.inner
27974    }
27975}
27976///Builder for [`SubpassEndInfo`] with lifetime-tied pNext safety.
27977pub struct SubpassEndInfoBuilder<'a> {
27978    inner: SubpassEndInfo,
27979    _marker: core::marker::PhantomData<&'a ()>,
27980}
27981impl SubpassEndInfo {
27982    /// Start building this struct; `s_type` is already set to the correct variant.
27983    #[inline]
27984    pub fn builder<'a>() -> SubpassEndInfoBuilder<'a> {
27985        SubpassEndInfoBuilder {
27986            inner: SubpassEndInfo {
27987                s_type: StructureType::from_raw(1000109006i32),
27988                ..Default::default()
27989            },
27990            _marker: core::marker::PhantomData,
27991        }
27992    }
27993}
27994impl<'a> SubpassEndInfoBuilder<'a> {
27995    ///Prepend a struct to the pNext chain. See [`SubpassEndInfo`]'s **Extended By** section for valid types.
27996    #[inline]
27997    pub fn push_next<T: ExtendsSubpassEndInfo>(mut self, next: &'a mut T) -> Self {
27998        unsafe {
27999            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
28000            (*next_ptr).p_next = self.inner.p_next as *mut _;
28001            self.inner.p_next = <*mut BaseOutStructure>::cast::<
28002                core::ffi::c_void,
28003            >(next_ptr) as *const _;
28004        }
28005        self
28006    }
28007}
28008impl<'a> core::ops::Deref for SubpassEndInfoBuilder<'a> {
28009    type Target = SubpassEndInfo;
28010    #[inline]
28011    fn deref(&self) -> &Self::Target {
28012        &self.inner
28013    }
28014}
28015impl<'a> core::ops::DerefMut for SubpassEndInfoBuilder<'a> {
28016    #[inline]
28017    fn deref_mut(&mut self) -> &mut Self::Target {
28018        &mut self.inner
28019    }
28020}
28021///Builder for [`PhysicalDeviceTimelineSemaphoreFeatures`] with lifetime-tied pNext safety.
28022pub struct PhysicalDeviceTimelineSemaphoreFeaturesBuilder<'a> {
28023    inner: PhysicalDeviceTimelineSemaphoreFeatures,
28024    _marker: core::marker::PhantomData<&'a ()>,
28025}
28026impl PhysicalDeviceTimelineSemaphoreFeatures {
28027    /// Start building this struct; `s_type` is already set to the correct variant.
28028    #[inline]
28029    pub fn builder<'a>() -> PhysicalDeviceTimelineSemaphoreFeaturesBuilder<'a> {
28030        PhysicalDeviceTimelineSemaphoreFeaturesBuilder {
28031            inner: PhysicalDeviceTimelineSemaphoreFeatures {
28032                s_type: StructureType::from_raw(1000207000i32),
28033                ..Default::default()
28034            },
28035            _marker: core::marker::PhantomData,
28036        }
28037    }
28038}
28039impl<'a> PhysicalDeviceTimelineSemaphoreFeaturesBuilder<'a> {
28040    #[inline]
28041    pub fn timeline_semaphore(mut self, value: bool) -> Self {
28042        self.inner.timeline_semaphore = value as u32;
28043        self
28044    }
28045    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceTimelineSemaphoreFeatures`]'s **Extended By** section for valid types.
28046    #[inline]
28047    pub fn push_next<T: ExtendsPhysicalDeviceTimelineSemaphoreFeatures>(
28048        mut self,
28049        next: &'a mut T,
28050    ) -> Self {
28051        unsafe {
28052            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
28053            (*next_ptr).p_next = self.inner.p_next as *mut _;
28054            self.inner.p_next = <*mut BaseOutStructure>::cast::<
28055                core::ffi::c_void,
28056            >(next_ptr);
28057        }
28058        self
28059    }
28060}
28061impl<'a> core::ops::Deref for PhysicalDeviceTimelineSemaphoreFeaturesBuilder<'a> {
28062    type Target = PhysicalDeviceTimelineSemaphoreFeatures;
28063    #[inline]
28064    fn deref(&self) -> &Self::Target {
28065        &self.inner
28066    }
28067}
28068impl<'a> core::ops::DerefMut for PhysicalDeviceTimelineSemaphoreFeaturesBuilder<'a> {
28069    #[inline]
28070    fn deref_mut(&mut self) -> &mut Self::Target {
28071        &mut self.inner
28072    }
28073}
28074///Builder for [`PhysicalDeviceTimelineSemaphoreProperties`] with lifetime-tied pNext safety.
28075pub struct PhysicalDeviceTimelineSemaphorePropertiesBuilder<'a> {
28076    inner: PhysicalDeviceTimelineSemaphoreProperties,
28077    _marker: core::marker::PhantomData<&'a ()>,
28078}
28079impl PhysicalDeviceTimelineSemaphoreProperties {
28080    /// Start building this struct; `s_type` is already set to the correct variant.
28081    #[inline]
28082    pub fn builder<'a>() -> PhysicalDeviceTimelineSemaphorePropertiesBuilder<'a> {
28083        PhysicalDeviceTimelineSemaphorePropertiesBuilder {
28084            inner: PhysicalDeviceTimelineSemaphoreProperties {
28085                s_type: StructureType::from_raw(1000207001i32),
28086                ..Default::default()
28087            },
28088            _marker: core::marker::PhantomData,
28089        }
28090    }
28091}
28092impl<'a> PhysicalDeviceTimelineSemaphorePropertiesBuilder<'a> {
28093    #[inline]
28094    pub fn max_timeline_semaphore_value_difference(mut self, value: u64) -> Self {
28095        self.inner.max_timeline_semaphore_value_difference = value;
28096        self
28097    }
28098}
28099impl<'a> core::ops::Deref for PhysicalDeviceTimelineSemaphorePropertiesBuilder<'a> {
28100    type Target = PhysicalDeviceTimelineSemaphoreProperties;
28101    #[inline]
28102    fn deref(&self) -> &Self::Target {
28103        &self.inner
28104    }
28105}
28106impl<'a> core::ops::DerefMut for PhysicalDeviceTimelineSemaphorePropertiesBuilder<'a> {
28107    #[inline]
28108    fn deref_mut(&mut self) -> &mut Self::Target {
28109        &mut self.inner
28110    }
28111}
28112///Builder for [`SemaphoreTypeCreateInfo`] with lifetime-tied pNext safety.
28113pub struct SemaphoreTypeCreateInfoBuilder<'a> {
28114    inner: SemaphoreTypeCreateInfo,
28115    _marker: core::marker::PhantomData<&'a ()>,
28116}
28117impl SemaphoreTypeCreateInfo {
28118    /// Start building this struct; `s_type` is already set to the correct variant.
28119    #[inline]
28120    pub fn builder<'a>() -> SemaphoreTypeCreateInfoBuilder<'a> {
28121        SemaphoreTypeCreateInfoBuilder {
28122            inner: SemaphoreTypeCreateInfo {
28123                s_type: StructureType::from_raw(1000207002i32),
28124                ..Default::default()
28125            },
28126            _marker: core::marker::PhantomData,
28127        }
28128    }
28129}
28130impl<'a> SemaphoreTypeCreateInfoBuilder<'a> {
28131    #[inline]
28132    pub fn semaphore_type(mut self, value: SemaphoreType) -> Self {
28133        self.inner.semaphore_type = value;
28134        self
28135    }
28136    #[inline]
28137    pub fn initial_value(mut self, value: u64) -> Self {
28138        self.inner.initial_value = value;
28139        self
28140    }
28141    ///Prepend a struct to the pNext chain. See [`SemaphoreTypeCreateInfo`]'s **Extended By** section for valid types.
28142    #[inline]
28143    pub fn push_next<T: ExtendsSemaphoreTypeCreateInfo>(
28144        mut self,
28145        next: &'a mut T,
28146    ) -> Self {
28147        unsafe {
28148            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
28149            (*next_ptr).p_next = self.inner.p_next as *mut _;
28150            self.inner.p_next = <*mut BaseOutStructure>::cast::<
28151                core::ffi::c_void,
28152            >(next_ptr) as *const _;
28153        }
28154        self
28155    }
28156}
28157impl<'a> core::ops::Deref for SemaphoreTypeCreateInfoBuilder<'a> {
28158    type Target = SemaphoreTypeCreateInfo;
28159    #[inline]
28160    fn deref(&self) -> &Self::Target {
28161        &self.inner
28162    }
28163}
28164impl<'a> core::ops::DerefMut for SemaphoreTypeCreateInfoBuilder<'a> {
28165    #[inline]
28166    fn deref_mut(&mut self) -> &mut Self::Target {
28167        &mut self.inner
28168    }
28169}
28170///Builder for [`TimelineSemaphoreSubmitInfo`] with lifetime-tied pNext safety.
28171pub struct TimelineSemaphoreSubmitInfoBuilder<'a> {
28172    inner: TimelineSemaphoreSubmitInfo,
28173    _marker: core::marker::PhantomData<&'a ()>,
28174}
28175impl TimelineSemaphoreSubmitInfo {
28176    /// Start building this struct; `s_type` is already set to the correct variant.
28177    #[inline]
28178    pub fn builder<'a>() -> TimelineSemaphoreSubmitInfoBuilder<'a> {
28179        TimelineSemaphoreSubmitInfoBuilder {
28180            inner: TimelineSemaphoreSubmitInfo {
28181                s_type: StructureType::from_raw(1000207003i32),
28182                ..Default::default()
28183            },
28184            _marker: core::marker::PhantomData,
28185        }
28186    }
28187}
28188impl<'a> TimelineSemaphoreSubmitInfoBuilder<'a> {
28189    #[inline]
28190    pub fn wait_semaphore_value_count(mut self, value: u32) -> Self {
28191        self.inner.wait_semaphore_value_count = value;
28192        self
28193    }
28194    #[inline]
28195    pub fn wait_semaphore_values(mut self, slice: &'a [u64]) -> Self {
28196        self.inner.wait_semaphore_value_count = slice.len() as u32;
28197        self.inner.p_wait_semaphore_values = slice.as_ptr();
28198        self
28199    }
28200    #[inline]
28201    pub fn signal_semaphore_value_count(mut self, value: u32) -> Self {
28202        self.inner.signal_semaphore_value_count = value;
28203        self
28204    }
28205    #[inline]
28206    pub fn signal_semaphore_values(mut self, slice: &'a [u64]) -> Self {
28207        self.inner.signal_semaphore_value_count = slice.len() as u32;
28208        self.inner.p_signal_semaphore_values = slice.as_ptr();
28209        self
28210    }
28211    ///Prepend a struct to the pNext chain. See [`TimelineSemaphoreSubmitInfo`]'s **Extended By** section for valid types.
28212    #[inline]
28213    pub fn push_next<T: ExtendsTimelineSemaphoreSubmitInfo>(
28214        mut self,
28215        next: &'a mut T,
28216    ) -> Self {
28217        unsafe {
28218            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
28219            (*next_ptr).p_next = self.inner.p_next as *mut _;
28220            self.inner.p_next = <*mut BaseOutStructure>::cast::<
28221                core::ffi::c_void,
28222            >(next_ptr) as *const _;
28223        }
28224        self
28225    }
28226}
28227impl<'a> core::ops::Deref for TimelineSemaphoreSubmitInfoBuilder<'a> {
28228    type Target = TimelineSemaphoreSubmitInfo;
28229    #[inline]
28230    fn deref(&self) -> &Self::Target {
28231        &self.inner
28232    }
28233}
28234impl<'a> core::ops::DerefMut for TimelineSemaphoreSubmitInfoBuilder<'a> {
28235    #[inline]
28236    fn deref_mut(&mut self) -> &mut Self::Target {
28237        &mut self.inner
28238    }
28239}
28240///Builder for [`SemaphoreWaitInfo`] with lifetime-tied pNext safety.
28241pub struct SemaphoreWaitInfoBuilder<'a> {
28242    inner: SemaphoreWaitInfo,
28243    _marker: core::marker::PhantomData<&'a ()>,
28244}
28245impl SemaphoreWaitInfo {
28246    /// Start building this struct; `s_type` is already set to the correct variant.
28247    #[inline]
28248    pub fn builder<'a>() -> SemaphoreWaitInfoBuilder<'a> {
28249        SemaphoreWaitInfoBuilder {
28250            inner: SemaphoreWaitInfo {
28251                s_type: StructureType::from_raw(1000207004i32),
28252                ..Default::default()
28253            },
28254            _marker: core::marker::PhantomData,
28255        }
28256    }
28257}
28258impl<'a> SemaphoreWaitInfoBuilder<'a> {
28259    #[inline]
28260    pub fn flags(mut self, value: SemaphoreWaitFlags) -> Self {
28261        self.inner.flags = value;
28262        self
28263    }
28264    #[inline]
28265    pub fn semaphores(mut self, slice: &'a [Semaphore]) -> Self {
28266        self.inner.semaphore_count = slice.len() as u32;
28267        self.inner.p_semaphores = slice.as_ptr();
28268        self
28269    }
28270    #[inline]
28271    pub fn values(mut self, slice: &'a [u64]) -> Self {
28272        self.inner.semaphore_count = slice.len() as u32;
28273        self.inner.p_values = slice.as_ptr();
28274        self
28275    }
28276    ///Prepend a struct to the pNext chain. See [`SemaphoreWaitInfo`]'s **Extended By** section for valid types.
28277    #[inline]
28278    pub fn push_next<T: ExtendsSemaphoreWaitInfo>(mut self, next: &'a mut T) -> Self {
28279        unsafe {
28280            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
28281            (*next_ptr).p_next = self.inner.p_next as *mut _;
28282            self.inner.p_next = <*mut BaseOutStructure>::cast::<
28283                core::ffi::c_void,
28284            >(next_ptr) as *const _;
28285        }
28286        self
28287    }
28288}
28289impl<'a> core::ops::Deref for SemaphoreWaitInfoBuilder<'a> {
28290    type Target = SemaphoreWaitInfo;
28291    #[inline]
28292    fn deref(&self) -> &Self::Target {
28293        &self.inner
28294    }
28295}
28296impl<'a> core::ops::DerefMut for SemaphoreWaitInfoBuilder<'a> {
28297    #[inline]
28298    fn deref_mut(&mut self) -> &mut Self::Target {
28299        &mut self.inner
28300    }
28301}
28302///Builder for [`SemaphoreSignalInfo`] with lifetime-tied pNext safety.
28303pub struct SemaphoreSignalInfoBuilder<'a> {
28304    inner: SemaphoreSignalInfo,
28305    _marker: core::marker::PhantomData<&'a ()>,
28306}
28307impl SemaphoreSignalInfo {
28308    /// Start building this struct; `s_type` is already set to the correct variant.
28309    #[inline]
28310    pub fn builder<'a>() -> SemaphoreSignalInfoBuilder<'a> {
28311        SemaphoreSignalInfoBuilder {
28312            inner: SemaphoreSignalInfo {
28313                s_type: StructureType::from_raw(1000207005i32),
28314                ..Default::default()
28315            },
28316            _marker: core::marker::PhantomData,
28317        }
28318    }
28319}
28320impl<'a> SemaphoreSignalInfoBuilder<'a> {
28321    #[inline]
28322    pub fn semaphore(mut self, value: Semaphore) -> Self {
28323        self.inner.semaphore = value;
28324        self
28325    }
28326    #[inline]
28327    pub fn value(mut self, value: u64) -> Self {
28328        self.inner.value = value;
28329        self
28330    }
28331    ///Prepend a struct to the pNext chain. See [`SemaphoreSignalInfo`]'s **Extended By** section for valid types.
28332    #[inline]
28333    pub fn push_next<T: ExtendsSemaphoreSignalInfo>(mut self, next: &'a mut T) -> Self {
28334        unsafe {
28335            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
28336            (*next_ptr).p_next = self.inner.p_next as *mut _;
28337            self.inner.p_next = <*mut BaseOutStructure>::cast::<
28338                core::ffi::c_void,
28339            >(next_ptr) as *const _;
28340        }
28341        self
28342    }
28343}
28344impl<'a> core::ops::Deref for SemaphoreSignalInfoBuilder<'a> {
28345    type Target = SemaphoreSignalInfo;
28346    #[inline]
28347    fn deref(&self) -> &Self::Target {
28348        &self.inner
28349    }
28350}
28351impl<'a> core::ops::DerefMut for SemaphoreSignalInfoBuilder<'a> {
28352    #[inline]
28353    fn deref_mut(&mut self) -> &mut Self::Target {
28354        &mut self.inner
28355    }
28356}
28357///Builder for [`VertexInputBindingDivisorDescription`].
28358pub struct VertexInputBindingDivisorDescriptionBuilder {
28359    inner: VertexInputBindingDivisorDescription,
28360}
28361impl VertexInputBindingDivisorDescription {
28362    /// Start building this struct.
28363    #[inline]
28364    pub fn builder() -> VertexInputBindingDivisorDescriptionBuilder {
28365        VertexInputBindingDivisorDescriptionBuilder {
28366            inner: VertexInputBindingDivisorDescription {
28367                ..Default::default()
28368            },
28369        }
28370    }
28371}
28372impl VertexInputBindingDivisorDescriptionBuilder {
28373    #[inline]
28374    pub fn binding(mut self, value: u32) -> Self {
28375        self.inner.binding = value;
28376        self
28377    }
28378    #[inline]
28379    pub fn divisor(mut self, value: u32) -> Self {
28380        self.inner.divisor = value;
28381        self
28382    }
28383}
28384impl core::ops::Deref for VertexInputBindingDivisorDescriptionBuilder {
28385    type Target = VertexInputBindingDivisorDescription;
28386    #[inline]
28387    fn deref(&self) -> &Self::Target {
28388        &self.inner
28389    }
28390}
28391impl core::ops::DerefMut for VertexInputBindingDivisorDescriptionBuilder {
28392    #[inline]
28393    fn deref_mut(&mut self) -> &mut Self::Target {
28394        &mut self.inner
28395    }
28396}
28397///Builder for [`PipelineVertexInputDivisorStateCreateInfo`] with lifetime-tied pNext safety.
28398pub struct PipelineVertexInputDivisorStateCreateInfoBuilder<'a> {
28399    inner: PipelineVertexInputDivisorStateCreateInfo,
28400    _marker: core::marker::PhantomData<&'a ()>,
28401}
28402impl PipelineVertexInputDivisorStateCreateInfo {
28403    /// Start building this struct; `s_type` is already set to the correct variant.
28404    #[inline]
28405    pub fn builder<'a>() -> PipelineVertexInputDivisorStateCreateInfoBuilder<'a> {
28406        PipelineVertexInputDivisorStateCreateInfoBuilder {
28407            inner: PipelineVertexInputDivisorStateCreateInfo {
28408                s_type: StructureType::from_raw(1000190001i32),
28409                ..Default::default()
28410            },
28411            _marker: core::marker::PhantomData,
28412        }
28413    }
28414}
28415impl<'a> PipelineVertexInputDivisorStateCreateInfoBuilder<'a> {
28416    #[inline]
28417    pub fn vertex_binding_divisors(
28418        mut self,
28419        slice: &'a [VertexInputBindingDivisorDescription],
28420    ) -> Self {
28421        self.inner.vertex_binding_divisor_count = slice.len() as u32;
28422        self.inner.p_vertex_binding_divisors = slice.as_ptr();
28423        self
28424    }
28425    ///Prepend a struct to the pNext chain. See [`PipelineVertexInputDivisorStateCreateInfo`]'s **Extended By** section for valid types.
28426    #[inline]
28427    pub fn push_next<T: ExtendsPipelineVertexInputDivisorStateCreateInfo>(
28428        mut self,
28429        next: &'a mut T,
28430    ) -> Self {
28431        unsafe {
28432            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
28433            (*next_ptr).p_next = self.inner.p_next as *mut _;
28434            self.inner.p_next = <*mut BaseOutStructure>::cast::<
28435                core::ffi::c_void,
28436            >(next_ptr) as *const _;
28437        }
28438        self
28439    }
28440}
28441impl<'a> core::ops::Deref for PipelineVertexInputDivisorStateCreateInfoBuilder<'a> {
28442    type Target = PipelineVertexInputDivisorStateCreateInfo;
28443    #[inline]
28444    fn deref(&self) -> &Self::Target {
28445        &self.inner
28446    }
28447}
28448impl<'a> core::ops::DerefMut for PipelineVertexInputDivisorStateCreateInfoBuilder<'a> {
28449    #[inline]
28450    fn deref_mut(&mut self) -> &mut Self::Target {
28451        &mut self.inner
28452    }
28453}
28454///Builder for [`PhysicalDeviceVertexAttributeDivisorPropertiesEXT`] with lifetime-tied pNext safety.
28455pub struct PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder<'a> {
28456    inner: PhysicalDeviceVertexAttributeDivisorPropertiesEXT,
28457    _marker: core::marker::PhantomData<&'a ()>,
28458}
28459impl PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
28460    /// Start building this struct; `s_type` is already set to the correct variant.
28461    #[inline]
28462    pub fn builder<'a>() -> PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder<
28463        'a,
28464    > {
28465        PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder {
28466            inner: PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
28467                s_type: StructureType::from_raw(1000190000i32),
28468                ..Default::default()
28469            },
28470            _marker: core::marker::PhantomData,
28471        }
28472    }
28473}
28474impl<'a> PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder<'a> {
28475    #[inline]
28476    pub fn max_vertex_attrib_divisor(mut self, value: u32) -> Self {
28477        self.inner.max_vertex_attrib_divisor = value;
28478        self
28479    }
28480}
28481impl<'a> core::ops::Deref
28482for PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder<'a> {
28483    type Target = PhysicalDeviceVertexAttributeDivisorPropertiesEXT;
28484    #[inline]
28485    fn deref(&self) -> &Self::Target {
28486        &self.inner
28487    }
28488}
28489impl<'a> core::ops::DerefMut
28490for PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder<'a> {
28491    #[inline]
28492    fn deref_mut(&mut self) -> &mut Self::Target {
28493        &mut self.inner
28494    }
28495}
28496///Builder for [`PhysicalDeviceVertexAttributeDivisorProperties`] with lifetime-tied pNext safety.
28497pub struct PhysicalDeviceVertexAttributeDivisorPropertiesBuilder<'a> {
28498    inner: PhysicalDeviceVertexAttributeDivisorProperties,
28499    _marker: core::marker::PhantomData<&'a ()>,
28500}
28501impl PhysicalDeviceVertexAttributeDivisorProperties {
28502    /// Start building this struct; `s_type` is already set to the correct variant.
28503    #[inline]
28504    pub fn builder<'a>() -> PhysicalDeviceVertexAttributeDivisorPropertiesBuilder<'a> {
28505        PhysicalDeviceVertexAttributeDivisorPropertiesBuilder {
28506            inner: PhysicalDeviceVertexAttributeDivisorProperties {
28507                s_type: StructureType::from_raw(1000525000i32),
28508                ..Default::default()
28509            },
28510            _marker: core::marker::PhantomData,
28511        }
28512    }
28513}
28514impl<'a> PhysicalDeviceVertexAttributeDivisorPropertiesBuilder<'a> {
28515    #[inline]
28516    pub fn max_vertex_attrib_divisor(mut self, value: u32) -> Self {
28517        self.inner.max_vertex_attrib_divisor = value;
28518        self
28519    }
28520    #[inline]
28521    pub fn supports_non_zero_first_instance(mut self, value: bool) -> Self {
28522        self.inner.supports_non_zero_first_instance = value as u32;
28523        self
28524    }
28525}
28526impl<'a> core::ops::Deref for PhysicalDeviceVertexAttributeDivisorPropertiesBuilder<'a> {
28527    type Target = PhysicalDeviceVertexAttributeDivisorProperties;
28528    #[inline]
28529    fn deref(&self) -> &Self::Target {
28530        &self.inner
28531    }
28532}
28533impl<'a> core::ops::DerefMut
28534for PhysicalDeviceVertexAttributeDivisorPropertiesBuilder<'a> {
28535    #[inline]
28536    fn deref_mut(&mut self) -> &mut Self::Target {
28537        &mut self.inner
28538    }
28539}
28540///Builder for [`PhysicalDevicePCIBusInfoPropertiesEXT`] with lifetime-tied pNext safety.
28541pub struct PhysicalDevicePCIBusInfoPropertiesEXTBuilder<'a> {
28542    inner: PhysicalDevicePCIBusInfoPropertiesEXT,
28543    _marker: core::marker::PhantomData<&'a ()>,
28544}
28545impl PhysicalDevicePCIBusInfoPropertiesEXT {
28546    /// Start building this struct; `s_type` is already set to the correct variant.
28547    #[inline]
28548    pub fn builder<'a>() -> PhysicalDevicePCIBusInfoPropertiesEXTBuilder<'a> {
28549        PhysicalDevicePCIBusInfoPropertiesEXTBuilder {
28550            inner: PhysicalDevicePCIBusInfoPropertiesEXT {
28551                s_type: StructureType::from_raw(1000212000i32),
28552                ..Default::default()
28553            },
28554            _marker: core::marker::PhantomData,
28555        }
28556    }
28557}
28558impl<'a> PhysicalDevicePCIBusInfoPropertiesEXTBuilder<'a> {
28559    #[inline]
28560    pub fn pci_domain(mut self, value: u32) -> Self {
28561        self.inner.pci_domain = value;
28562        self
28563    }
28564    #[inline]
28565    pub fn pci_bus(mut self, value: u32) -> Self {
28566        self.inner.pci_bus = value;
28567        self
28568    }
28569    #[inline]
28570    pub fn pci_device(mut self, value: u32) -> Self {
28571        self.inner.pci_device = value;
28572        self
28573    }
28574    #[inline]
28575    pub fn pci_function(mut self, value: u32) -> Self {
28576        self.inner.pci_function = value;
28577        self
28578    }
28579}
28580impl<'a> core::ops::Deref for PhysicalDevicePCIBusInfoPropertiesEXTBuilder<'a> {
28581    type Target = PhysicalDevicePCIBusInfoPropertiesEXT;
28582    #[inline]
28583    fn deref(&self) -> &Self::Target {
28584        &self.inner
28585    }
28586}
28587impl<'a> core::ops::DerefMut for PhysicalDevicePCIBusInfoPropertiesEXTBuilder<'a> {
28588    #[inline]
28589    fn deref_mut(&mut self) -> &mut Self::Target {
28590        &mut self.inner
28591    }
28592}
28593///Builder for [`ImportAndroidHardwareBufferInfoANDROID`] with lifetime-tied pNext safety.
28594pub struct ImportAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28595    inner: ImportAndroidHardwareBufferInfoANDROID,
28596    _marker: core::marker::PhantomData<&'a ()>,
28597}
28598impl ImportAndroidHardwareBufferInfoANDROID {
28599    /// Start building this struct; `s_type` is already set to the correct variant.
28600    #[inline]
28601    pub fn builder<'a>() -> ImportAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28602        ImportAndroidHardwareBufferInfoANDROIDBuilder {
28603            inner: ImportAndroidHardwareBufferInfoANDROID {
28604                s_type: StructureType::from_raw(1000129003i32),
28605                ..Default::default()
28606            },
28607            _marker: core::marker::PhantomData,
28608        }
28609    }
28610}
28611impl<'a> ImportAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28612    #[inline]
28613    pub fn buffer(mut self, value: *mut core::ffi::c_void) -> Self {
28614        self.inner.buffer = value;
28615        self
28616    }
28617    ///Prepend a struct to the pNext chain. See [`ImportAndroidHardwareBufferInfoANDROID`]'s **Extended By** section for valid types.
28618    #[inline]
28619    pub fn push_next<T: ExtendsImportAndroidHardwareBufferInfoANDROID>(
28620        mut self,
28621        next: &'a mut T,
28622    ) -> Self {
28623        unsafe {
28624            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
28625            (*next_ptr).p_next = self.inner.p_next as *mut _;
28626            self.inner.p_next = <*mut BaseOutStructure>::cast::<
28627                core::ffi::c_void,
28628            >(next_ptr) as *const _;
28629        }
28630        self
28631    }
28632}
28633impl<'a> core::ops::Deref for ImportAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28634    type Target = ImportAndroidHardwareBufferInfoANDROID;
28635    #[inline]
28636    fn deref(&self) -> &Self::Target {
28637        &self.inner
28638    }
28639}
28640impl<'a> core::ops::DerefMut for ImportAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28641    #[inline]
28642    fn deref_mut(&mut self) -> &mut Self::Target {
28643        &mut self.inner
28644    }
28645}
28646///Builder for [`AndroidHardwareBufferUsageANDROID`] with lifetime-tied pNext safety.
28647pub struct AndroidHardwareBufferUsageANDROIDBuilder<'a> {
28648    inner: AndroidHardwareBufferUsageANDROID,
28649    _marker: core::marker::PhantomData<&'a ()>,
28650}
28651impl AndroidHardwareBufferUsageANDROID {
28652    /// Start building this struct; `s_type` is already set to the correct variant.
28653    #[inline]
28654    pub fn builder<'a>() -> AndroidHardwareBufferUsageANDROIDBuilder<'a> {
28655        AndroidHardwareBufferUsageANDROIDBuilder {
28656            inner: AndroidHardwareBufferUsageANDROID {
28657                s_type: StructureType::from_raw(1000129000i32),
28658                ..Default::default()
28659            },
28660            _marker: core::marker::PhantomData,
28661        }
28662    }
28663}
28664impl<'a> AndroidHardwareBufferUsageANDROIDBuilder<'a> {
28665    #[inline]
28666    pub fn android_hardware_buffer_usage(mut self, value: u64) -> Self {
28667        self.inner.android_hardware_buffer_usage = value;
28668        self
28669    }
28670}
28671impl<'a> core::ops::Deref for AndroidHardwareBufferUsageANDROIDBuilder<'a> {
28672    type Target = AndroidHardwareBufferUsageANDROID;
28673    #[inline]
28674    fn deref(&self) -> &Self::Target {
28675        &self.inner
28676    }
28677}
28678impl<'a> core::ops::DerefMut for AndroidHardwareBufferUsageANDROIDBuilder<'a> {
28679    #[inline]
28680    fn deref_mut(&mut self) -> &mut Self::Target {
28681        &mut self.inner
28682    }
28683}
28684///Builder for [`AndroidHardwareBufferPropertiesANDROID`] with lifetime-tied pNext safety.
28685pub struct AndroidHardwareBufferPropertiesANDROIDBuilder<'a> {
28686    inner: AndroidHardwareBufferPropertiesANDROID,
28687    _marker: core::marker::PhantomData<&'a ()>,
28688}
28689impl AndroidHardwareBufferPropertiesANDROID {
28690    /// Start building this struct; `s_type` is already set to the correct variant.
28691    #[inline]
28692    pub fn builder<'a>() -> AndroidHardwareBufferPropertiesANDROIDBuilder<'a> {
28693        AndroidHardwareBufferPropertiesANDROIDBuilder {
28694            inner: AndroidHardwareBufferPropertiesANDROID {
28695                s_type: StructureType::from_raw(1000129001i32),
28696                ..Default::default()
28697            },
28698            _marker: core::marker::PhantomData,
28699        }
28700    }
28701}
28702impl<'a> AndroidHardwareBufferPropertiesANDROIDBuilder<'a> {
28703    #[inline]
28704    pub fn allocation_size(mut self, value: u64) -> Self {
28705        self.inner.allocation_size = value;
28706        self
28707    }
28708    #[inline]
28709    pub fn memory_type_bits(mut self, value: u32) -> Self {
28710        self.inner.memory_type_bits = value;
28711        self
28712    }
28713}
28714impl<'a> core::ops::Deref for AndroidHardwareBufferPropertiesANDROIDBuilder<'a> {
28715    type Target = AndroidHardwareBufferPropertiesANDROID;
28716    #[inline]
28717    fn deref(&self) -> &Self::Target {
28718        &self.inner
28719    }
28720}
28721impl<'a> core::ops::DerefMut for AndroidHardwareBufferPropertiesANDROIDBuilder<'a> {
28722    #[inline]
28723    fn deref_mut(&mut self) -> &mut Self::Target {
28724        &mut self.inner
28725    }
28726}
28727///Builder for [`MemoryGetAndroidHardwareBufferInfoANDROID`] with lifetime-tied pNext safety.
28728pub struct MemoryGetAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28729    inner: MemoryGetAndroidHardwareBufferInfoANDROID,
28730    _marker: core::marker::PhantomData<&'a ()>,
28731}
28732impl MemoryGetAndroidHardwareBufferInfoANDROID {
28733    /// Start building this struct; `s_type` is already set to the correct variant.
28734    #[inline]
28735    pub fn builder<'a>() -> MemoryGetAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28736        MemoryGetAndroidHardwareBufferInfoANDROIDBuilder {
28737            inner: MemoryGetAndroidHardwareBufferInfoANDROID {
28738                s_type: StructureType::from_raw(1000129004i32),
28739                ..Default::default()
28740            },
28741            _marker: core::marker::PhantomData,
28742        }
28743    }
28744}
28745impl<'a> MemoryGetAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28746    #[inline]
28747    pub fn memory(mut self, value: DeviceMemory) -> Self {
28748        self.inner.memory = value;
28749        self
28750    }
28751    ///Prepend a struct to the pNext chain. See [`MemoryGetAndroidHardwareBufferInfoANDROID`]'s **Extended By** section for valid types.
28752    #[inline]
28753    pub fn push_next<T: ExtendsMemoryGetAndroidHardwareBufferInfoANDROID>(
28754        mut self,
28755        next: &'a mut T,
28756    ) -> Self {
28757        unsafe {
28758            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
28759            (*next_ptr).p_next = self.inner.p_next as *mut _;
28760            self.inner.p_next = <*mut BaseOutStructure>::cast::<
28761                core::ffi::c_void,
28762            >(next_ptr) as *const _;
28763        }
28764        self
28765    }
28766}
28767impl<'a> core::ops::Deref for MemoryGetAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28768    type Target = MemoryGetAndroidHardwareBufferInfoANDROID;
28769    #[inline]
28770    fn deref(&self) -> &Self::Target {
28771        &self.inner
28772    }
28773}
28774impl<'a> core::ops::DerefMut for MemoryGetAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28775    #[inline]
28776    fn deref_mut(&mut self) -> &mut Self::Target {
28777        &mut self.inner
28778    }
28779}
28780///Builder for [`AndroidHardwareBufferFormatPropertiesANDROID`] with lifetime-tied pNext safety.
28781pub struct AndroidHardwareBufferFormatPropertiesANDROIDBuilder<'a> {
28782    inner: AndroidHardwareBufferFormatPropertiesANDROID,
28783    _marker: core::marker::PhantomData<&'a ()>,
28784}
28785impl AndroidHardwareBufferFormatPropertiesANDROID {
28786    /// Start building this struct; `s_type` is already set to the correct variant.
28787    #[inline]
28788    pub fn builder<'a>() -> AndroidHardwareBufferFormatPropertiesANDROIDBuilder<'a> {
28789        AndroidHardwareBufferFormatPropertiesANDROIDBuilder {
28790            inner: AndroidHardwareBufferFormatPropertiesANDROID {
28791                s_type: StructureType::from_raw(1000129002i32),
28792                ..Default::default()
28793            },
28794            _marker: core::marker::PhantomData,
28795        }
28796    }
28797}
28798impl<'a> AndroidHardwareBufferFormatPropertiesANDROIDBuilder<'a> {
28799    #[inline]
28800    pub fn format(mut self, value: Format) -> Self {
28801        self.inner.format = value;
28802        self
28803    }
28804    #[inline]
28805    pub fn external_format(mut self, value: u64) -> Self {
28806        self.inner.external_format = value;
28807        self
28808    }
28809    #[inline]
28810    pub fn format_features(mut self, value: FormatFeatureFlags) -> Self {
28811        self.inner.format_features = value;
28812        self
28813    }
28814    #[inline]
28815    pub fn sampler_ycbcr_conversion_components(
28816        mut self,
28817        value: ComponentMapping,
28818    ) -> Self {
28819        self.inner.sampler_ycbcr_conversion_components = value;
28820        self
28821    }
28822    #[inline]
28823    pub fn suggested_ycbcr_model(mut self, value: SamplerYcbcrModelConversion) -> Self {
28824        self.inner.suggested_ycbcr_model = value;
28825        self
28826    }
28827    #[inline]
28828    pub fn suggested_ycbcr_range(mut self, value: SamplerYcbcrRange) -> Self {
28829        self.inner.suggested_ycbcr_range = value;
28830        self
28831    }
28832    #[inline]
28833    pub fn suggested_x_chroma_offset(mut self, value: ChromaLocation) -> Self {
28834        self.inner.suggested_x_chroma_offset = value;
28835        self
28836    }
28837    #[inline]
28838    pub fn suggested_y_chroma_offset(mut self, value: ChromaLocation) -> Self {
28839        self.inner.suggested_y_chroma_offset = value;
28840        self
28841    }
28842}
28843impl<'a> core::ops::Deref for AndroidHardwareBufferFormatPropertiesANDROIDBuilder<'a> {
28844    type Target = AndroidHardwareBufferFormatPropertiesANDROID;
28845    #[inline]
28846    fn deref(&self) -> &Self::Target {
28847        &self.inner
28848    }
28849}
28850impl<'a> core::ops::DerefMut
28851for AndroidHardwareBufferFormatPropertiesANDROIDBuilder<'a> {
28852    #[inline]
28853    fn deref_mut(&mut self) -> &mut Self::Target {
28854        &mut self.inner
28855    }
28856}
28857///Builder for [`CommandBufferInheritanceConditionalRenderingInfoEXT`] with lifetime-tied pNext safety.
28858pub struct CommandBufferInheritanceConditionalRenderingInfoEXTBuilder<'a> {
28859    inner: CommandBufferInheritanceConditionalRenderingInfoEXT,
28860    _marker: core::marker::PhantomData<&'a ()>,
28861}
28862impl CommandBufferInheritanceConditionalRenderingInfoEXT {
28863    /// Start building this struct; `s_type` is already set to the correct variant.
28864    #[inline]
28865    pub fn builder<'a>() -> CommandBufferInheritanceConditionalRenderingInfoEXTBuilder<
28866        'a,
28867    > {
28868        CommandBufferInheritanceConditionalRenderingInfoEXTBuilder {
28869            inner: CommandBufferInheritanceConditionalRenderingInfoEXT {
28870                s_type: StructureType::from_raw(1000081000i32),
28871                ..Default::default()
28872            },
28873            _marker: core::marker::PhantomData,
28874        }
28875    }
28876}
28877impl<'a> CommandBufferInheritanceConditionalRenderingInfoEXTBuilder<'a> {
28878    #[inline]
28879    pub fn conditional_rendering_enable(mut self, value: bool) -> Self {
28880        self.inner.conditional_rendering_enable = value as u32;
28881        self
28882    }
28883    ///Prepend a struct to the pNext chain. See [`CommandBufferInheritanceConditionalRenderingInfoEXT`]'s **Extended By** section for valid types.
28884    #[inline]
28885    pub fn push_next<T: ExtendsCommandBufferInheritanceConditionalRenderingInfoEXT>(
28886        mut self,
28887        next: &'a mut T,
28888    ) -> Self {
28889        unsafe {
28890            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
28891            (*next_ptr).p_next = self.inner.p_next as *mut _;
28892            self.inner.p_next = <*mut BaseOutStructure>::cast::<
28893                core::ffi::c_void,
28894            >(next_ptr) as *const _;
28895        }
28896        self
28897    }
28898}
28899impl<'a> core::ops::Deref
28900for CommandBufferInheritanceConditionalRenderingInfoEXTBuilder<'a> {
28901    type Target = CommandBufferInheritanceConditionalRenderingInfoEXT;
28902    #[inline]
28903    fn deref(&self) -> &Self::Target {
28904        &self.inner
28905    }
28906}
28907impl<'a> core::ops::DerefMut
28908for CommandBufferInheritanceConditionalRenderingInfoEXTBuilder<'a> {
28909    #[inline]
28910    fn deref_mut(&mut self) -> &mut Self::Target {
28911        &mut self.inner
28912    }
28913}
28914///Builder for [`ExternalFormatANDROID`] with lifetime-tied pNext safety.
28915pub struct ExternalFormatANDROIDBuilder<'a> {
28916    inner: ExternalFormatANDROID,
28917    _marker: core::marker::PhantomData<&'a ()>,
28918}
28919impl ExternalFormatANDROID {
28920    /// Start building this struct; `s_type` is already set to the correct variant.
28921    #[inline]
28922    pub fn builder<'a>() -> ExternalFormatANDROIDBuilder<'a> {
28923        ExternalFormatANDROIDBuilder {
28924            inner: ExternalFormatANDROID {
28925                s_type: StructureType::from_raw(1000129005i32),
28926                ..Default::default()
28927            },
28928            _marker: core::marker::PhantomData,
28929        }
28930    }
28931}
28932impl<'a> ExternalFormatANDROIDBuilder<'a> {
28933    #[inline]
28934    pub fn external_format(mut self, value: u64) -> Self {
28935        self.inner.external_format = value;
28936        self
28937    }
28938    ///Prepend a struct to the pNext chain. See [`ExternalFormatANDROID`]'s **Extended By** section for valid types.
28939    #[inline]
28940    pub fn push_next<T: ExtendsExternalFormatANDROID>(
28941        mut self,
28942        next: &'a mut T,
28943    ) -> Self {
28944        unsafe {
28945            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
28946            (*next_ptr).p_next = self.inner.p_next as *mut _;
28947            self.inner.p_next = <*mut BaseOutStructure>::cast::<
28948                core::ffi::c_void,
28949            >(next_ptr);
28950        }
28951        self
28952    }
28953}
28954impl<'a> core::ops::Deref for ExternalFormatANDROIDBuilder<'a> {
28955    type Target = ExternalFormatANDROID;
28956    #[inline]
28957    fn deref(&self) -> &Self::Target {
28958        &self.inner
28959    }
28960}
28961impl<'a> core::ops::DerefMut for ExternalFormatANDROIDBuilder<'a> {
28962    #[inline]
28963    fn deref_mut(&mut self) -> &mut Self::Target {
28964        &mut self.inner
28965    }
28966}
28967///Builder for [`PhysicalDevice8BitStorageFeatures`] with lifetime-tied pNext safety.
28968pub struct PhysicalDevice8BitStorageFeaturesBuilder<'a> {
28969    inner: PhysicalDevice8BitStorageFeatures,
28970    _marker: core::marker::PhantomData<&'a ()>,
28971}
28972impl PhysicalDevice8BitStorageFeatures {
28973    /// Start building this struct; `s_type` is already set to the correct variant.
28974    #[inline]
28975    pub fn builder<'a>() -> PhysicalDevice8BitStorageFeaturesBuilder<'a> {
28976        PhysicalDevice8BitStorageFeaturesBuilder {
28977            inner: PhysicalDevice8BitStorageFeatures {
28978                s_type: StructureType::from_raw(1000177000i32),
28979                ..Default::default()
28980            },
28981            _marker: core::marker::PhantomData,
28982        }
28983    }
28984}
28985impl<'a> PhysicalDevice8BitStorageFeaturesBuilder<'a> {
28986    #[inline]
28987    pub fn storage_buffer8_bit_access(mut self, value: bool) -> Self {
28988        self.inner.storage_buffer8_bit_access = value as u32;
28989        self
28990    }
28991    #[inline]
28992    pub fn uniform_and_storage_buffer8_bit_access(mut self, value: bool) -> Self {
28993        self.inner.uniform_and_storage_buffer8_bit_access = value as u32;
28994        self
28995    }
28996    #[inline]
28997    pub fn storage_push_constant8(mut self, value: bool) -> Self {
28998        self.inner.storage_push_constant8 = value as u32;
28999        self
29000    }
29001    ///Prepend a struct to the pNext chain. See [`PhysicalDevice8BitStorageFeatures`]'s **Extended By** section for valid types.
29002    #[inline]
29003    pub fn push_next<T: ExtendsPhysicalDevice8BitStorageFeatures>(
29004        mut self,
29005        next: &'a mut T,
29006    ) -> Self {
29007        unsafe {
29008            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
29009            (*next_ptr).p_next = self.inner.p_next as *mut _;
29010            self.inner.p_next = <*mut BaseOutStructure>::cast::<
29011                core::ffi::c_void,
29012            >(next_ptr);
29013        }
29014        self
29015    }
29016}
29017impl<'a> core::ops::Deref for PhysicalDevice8BitStorageFeaturesBuilder<'a> {
29018    type Target = PhysicalDevice8BitStorageFeatures;
29019    #[inline]
29020    fn deref(&self) -> &Self::Target {
29021        &self.inner
29022    }
29023}
29024impl<'a> core::ops::DerefMut for PhysicalDevice8BitStorageFeaturesBuilder<'a> {
29025    #[inline]
29026    fn deref_mut(&mut self) -> &mut Self::Target {
29027        &mut self.inner
29028    }
29029}
29030///Builder for [`PhysicalDeviceConditionalRenderingFeaturesEXT`] with lifetime-tied pNext safety.
29031pub struct PhysicalDeviceConditionalRenderingFeaturesEXTBuilder<'a> {
29032    inner: PhysicalDeviceConditionalRenderingFeaturesEXT,
29033    _marker: core::marker::PhantomData<&'a ()>,
29034}
29035impl PhysicalDeviceConditionalRenderingFeaturesEXT {
29036    /// Start building this struct; `s_type` is already set to the correct variant.
29037    #[inline]
29038    pub fn builder<'a>() -> PhysicalDeviceConditionalRenderingFeaturesEXTBuilder<'a> {
29039        PhysicalDeviceConditionalRenderingFeaturesEXTBuilder {
29040            inner: PhysicalDeviceConditionalRenderingFeaturesEXT {
29041                s_type: StructureType::from_raw(1000081001i32),
29042                ..Default::default()
29043            },
29044            _marker: core::marker::PhantomData,
29045        }
29046    }
29047}
29048impl<'a> PhysicalDeviceConditionalRenderingFeaturesEXTBuilder<'a> {
29049    #[inline]
29050    pub fn conditional_rendering(mut self, value: bool) -> Self {
29051        self.inner.conditional_rendering = value as u32;
29052        self
29053    }
29054    #[inline]
29055    pub fn inherited_conditional_rendering(mut self, value: bool) -> Self {
29056        self.inner.inherited_conditional_rendering = value as u32;
29057        self
29058    }
29059    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceConditionalRenderingFeaturesEXT`]'s **Extended By** section for valid types.
29060    #[inline]
29061    pub fn push_next<T: ExtendsPhysicalDeviceConditionalRenderingFeaturesEXT>(
29062        mut self,
29063        next: &'a mut T,
29064    ) -> Self {
29065        unsafe {
29066            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
29067            (*next_ptr).p_next = self.inner.p_next as *mut _;
29068            self.inner.p_next = <*mut BaseOutStructure>::cast::<
29069                core::ffi::c_void,
29070            >(next_ptr);
29071        }
29072        self
29073    }
29074}
29075impl<'a> core::ops::Deref for PhysicalDeviceConditionalRenderingFeaturesEXTBuilder<'a> {
29076    type Target = PhysicalDeviceConditionalRenderingFeaturesEXT;
29077    #[inline]
29078    fn deref(&self) -> &Self::Target {
29079        &self.inner
29080    }
29081}
29082impl<'a> core::ops::DerefMut
29083for PhysicalDeviceConditionalRenderingFeaturesEXTBuilder<'a> {
29084    #[inline]
29085    fn deref_mut(&mut self) -> &mut Self::Target {
29086        &mut self.inner
29087    }
29088}
29089///Builder for [`PhysicalDeviceVulkanMemoryModelFeatures`] with lifetime-tied pNext safety.
29090pub struct PhysicalDeviceVulkanMemoryModelFeaturesBuilder<'a> {
29091    inner: PhysicalDeviceVulkanMemoryModelFeatures,
29092    _marker: core::marker::PhantomData<&'a ()>,
29093}
29094impl PhysicalDeviceVulkanMemoryModelFeatures {
29095    /// Start building this struct; `s_type` is already set to the correct variant.
29096    #[inline]
29097    pub fn builder<'a>() -> PhysicalDeviceVulkanMemoryModelFeaturesBuilder<'a> {
29098        PhysicalDeviceVulkanMemoryModelFeaturesBuilder {
29099            inner: PhysicalDeviceVulkanMemoryModelFeatures {
29100                s_type: StructureType::from_raw(1000211000i32),
29101                ..Default::default()
29102            },
29103            _marker: core::marker::PhantomData,
29104        }
29105    }
29106}
29107impl<'a> PhysicalDeviceVulkanMemoryModelFeaturesBuilder<'a> {
29108    #[inline]
29109    pub fn vulkan_memory_model(mut self, value: bool) -> Self {
29110        self.inner.vulkan_memory_model = value as u32;
29111        self
29112    }
29113    #[inline]
29114    pub fn vulkan_memory_model_device_scope(mut self, value: bool) -> Self {
29115        self.inner.vulkan_memory_model_device_scope = value as u32;
29116        self
29117    }
29118    #[inline]
29119    pub fn vulkan_memory_model_availability_visibility_chains(
29120        mut self,
29121        value: bool,
29122    ) -> Self {
29123        self.inner.vulkan_memory_model_availability_visibility_chains = value as u32;
29124        self
29125    }
29126    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceVulkanMemoryModelFeatures`]'s **Extended By** section for valid types.
29127    #[inline]
29128    pub fn push_next<T: ExtendsPhysicalDeviceVulkanMemoryModelFeatures>(
29129        mut self,
29130        next: &'a mut T,
29131    ) -> Self {
29132        unsafe {
29133            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
29134            (*next_ptr).p_next = self.inner.p_next as *mut _;
29135            self.inner.p_next = <*mut BaseOutStructure>::cast::<
29136                core::ffi::c_void,
29137            >(next_ptr);
29138        }
29139        self
29140    }
29141}
29142impl<'a> core::ops::Deref for PhysicalDeviceVulkanMemoryModelFeaturesBuilder<'a> {
29143    type Target = PhysicalDeviceVulkanMemoryModelFeatures;
29144    #[inline]
29145    fn deref(&self) -> &Self::Target {
29146        &self.inner
29147    }
29148}
29149impl<'a> core::ops::DerefMut for PhysicalDeviceVulkanMemoryModelFeaturesBuilder<'a> {
29150    #[inline]
29151    fn deref_mut(&mut self) -> &mut Self::Target {
29152        &mut self.inner
29153    }
29154}
29155///Builder for [`PhysicalDeviceShaderAtomicInt64Features`] with lifetime-tied pNext safety.
29156pub struct PhysicalDeviceShaderAtomicInt64FeaturesBuilder<'a> {
29157    inner: PhysicalDeviceShaderAtomicInt64Features,
29158    _marker: core::marker::PhantomData<&'a ()>,
29159}
29160impl PhysicalDeviceShaderAtomicInt64Features {
29161    /// Start building this struct; `s_type` is already set to the correct variant.
29162    #[inline]
29163    pub fn builder<'a>() -> PhysicalDeviceShaderAtomicInt64FeaturesBuilder<'a> {
29164        PhysicalDeviceShaderAtomicInt64FeaturesBuilder {
29165            inner: PhysicalDeviceShaderAtomicInt64Features {
29166                s_type: StructureType::from_raw(1000180000i32),
29167                ..Default::default()
29168            },
29169            _marker: core::marker::PhantomData,
29170        }
29171    }
29172}
29173impl<'a> PhysicalDeviceShaderAtomicInt64FeaturesBuilder<'a> {
29174    #[inline]
29175    pub fn shader_buffer_int64_atomics(mut self, value: bool) -> Self {
29176        self.inner.shader_buffer_int64_atomics = value as u32;
29177        self
29178    }
29179    #[inline]
29180    pub fn shader_shared_int64_atomics(mut self, value: bool) -> Self {
29181        self.inner.shader_shared_int64_atomics = value as u32;
29182        self
29183    }
29184    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderAtomicInt64Features`]'s **Extended By** section for valid types.
29185    #[inline]
29186    pub fn push_next<T: ExtendsPhysicalDeviceShaderAtomicInt64Features>(
29187        mut self,
29188        next: &'a mut T,
29189    ) -> Self {
29190        unsafe {
29191            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
29192            (*next_ptr).p_next = self.inner.p_next as *mut _;
29193            self.inner.p_next = <*mut BaseOutStructure>::cast::<
29194                core::ffi::c_void,
29195            >(next_ptr);
29196        }
29197        self
29198    }
29199}
29200impl<'a> core::ops::Deref for PhysicalDeviceShaderAtomicInt64FeaturesBuilder<'a> {
29201    type Target = PhysicalDeviceShaderAtomicInt64Features;
29202    #[inline]
29203    fn deref(&self) -> &Self::Target {
29204        &self.inner
29205    }
29206}
29207impl<'a> core::ops::DerefMut for PhysicalDeviceShaderAtomicInt64FeaturesBuilder<'a> {
29208    #[inline]
29209    fn deref_mut(&mut self) -> &mut Self::Target {
29210        &mut self.inner
29211    }
29212}
29213///Builder for [`PhysicalDeviceShaderAtomicFloatFeaturesEXT`] with lifetime-tied pNext safety.
29214pub struct PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder<'a> {
29215    inner: PhysicalDeviceShaderAtomicFloatFeaturesEXT,
29216    _marker: core::marker::PhantomData<&'a ()>,
29217}
29218impl PhysicalDeviceShaderAtomicFloatFeaturesEXT {
29219    /// Start building this struct; `s_type` is already set to the correct variant.
29220    #[inline]
29221    pub fn builder<'a>() -> PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder<'a> {
29222        PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder {
29223            inner: PhysicalDeviceShaderAtomicFloatFeaturesEXT {
29224                s_type: StructureType::from_raw(1000260000i32),
29225                ..Default::default()
29226            },
29227            _marker: core::marker::PhantomData,
29228        }
29229    }
29230}
29231impl<'a> PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder<'a> {
29232    #[inline]
29233    pub fn shader_buffer_float32_atomics(mut self, value: bool) -> Self {
29234        self.inner.shader_buffer_float32_atomics = value as u32;
29235        self
29236    }
29237    #[inline]
29238    pub fn shader_buffer_float32_atomic_add(mut self, value: bool) -> Self {
29239        self.inner.shader_buffer_float32_atomic_add = value as u32;
29240        self
29241    }
29242    #[inline]
29243    pub fn shader_buffer_float64_atomics(mut self, value: bool) -> Self {
29244        self.inner.shader_buffer_float64_atomics = value as u32;
29245        self
29246    }
29247    #[inline]
29248    pub fn shader_buffer_float64_atomic_add(mut self, value: bool) -> Self {
29249        self.inner.shader_buffer_float64_atomic_add = value as u32;
29250        self
29251    }
29252    #[inline]
29253    pub fn shader_shared_float32_atomics(mut self, value: bool) -> Self {
29254        self.inner.shader_shared_float32_atomics = value as u32;
29255        self
29256    }
29257    #[inline]
29258    pub fn shader_shared_float32_atomic_add(mut self, value: bool) -> Self {
29259        self.inner.shader_shared_float32_atomic_add = value as u32;
29260        self
29261    }
29262    #[inline]
29263    pub fn shader_shared_float64_atomics(mut self, value: bool) -> Self {
29264        self.inner.shader_shared_float64_atomics = value as u32;
29265        self
29266    }
29267    #[inline]
29268    pub fn shader_shared_float64_atomic_add(mut self, value: bool) -> Self {
29269        self.inner.shader_shared_float64_atomic_add = value as u32;
29270        self
29271    }
29272    #[inline]
29273    pub fn shader_image_float32_atomics(mut self, value: bool) -> Self {
29274        self.inner.shader_image_float32_atomics = value as u32;
29275        self
29276    }
29277    #[inline]
29278    pub fn shader_image_float32_atomic_add(mut self, value: bool) -> Self {
29279        self.inner.shader_image_float32_atomic_add = value as u32;
29280        self
29281    }
29282    #[inline]
29283    pub fn sparse_image_float32_atomics(mut self, value: bool) -> Self {
29284        self.inner.sparse_image_float32_atomics = value as u32;
29285        self
29286    }
29287    #[inline]
29288    pub fn sparse_image_float32_atomic_add(mut self, value: bool) -> Self {
29289        self.inner.sparse_image_float32_atomic_add = value as u32;
29290        self
29291    }
29292    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderAtomicFloatFeaturesEXT`]'s **Extended By** section for valid types.
29293    #[inline]
29294    pub fn push_next<T: ExtendsPhysicalDeviceShaderAtomicFloatFeaturesEXT>(
29295        mut self,
29296        next: &'a mut T,
29297    ) -> Self {
29298        unsafe {
29299            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
29300            (*next_ptr).p_next = self.inner.p_next as *mut _;
29301            self.inner.p_next = <*mut BaseOutStructure>::cast::<
29302                core::ffi::c_void,
29303            >(next_ptr);
29304        }
29305        self
29306    }
29307}
29308impl<'a> core::ops::Deref for PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder<'a> {
29309    type Target = PhysicalDeviceShaderAtomicFloatFeaturesEXT;
29310    #[inline]
29311    fn deref(&self) -> &Self::Target {
29312        &self.inner
29313    }
29314}
29315impl<'a> core::ops::DerefMut for PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder<'a> {
29316    #[inline]
29317    fn deref_mut(&mut self) -> &mut Self::Target {
29318        &mut self.inner
29319    }
29320}
29321///Builder for [`PhysicalDeviceShaderAtomicFloat2FeaturesEXT`] with lifetime-tied pNext safety.
29322pub struct PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder<'a> {
29323    inner: PhysicalDeviceShaderAtomicFloat2FeaturesEXT,
29324    _marker: core::marker::PhantomData<&'a ()>,
29325}
29326impl PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
29327    /// Start building this struct; `s_type` is already set to the correct variant.
29328    #[inline]
29329    pub fn builder<'a>() -> PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder<'a> {
29330        PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder {
29331            inner: PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
29332                s_type: StructureType::from_raw(1000273000i32),
29333                ..Default::default()
29334            },
29335            _marker: core::marker::PhantomData,
29336        }
29337    }
29338}
29339impl<'a> PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder<'a> {
29340    #[inline]
29341    pub fn shader_buffer_float16_atomics(mut self, value: bool) -> Self {
29342        self.inner.shader_buffer_float16_atomics = value as u32;
29343        self
29344    }
29345    #[inline]
29346    pub fn shader_buffer_float16_atomic_add(mut self, value: bool) -> Self {
29347        self.inner.shader_buffer_float16_atomic_add = value as u32;
29348        self
29349    }
29350    #[inline]
29351    pub fn shader_buffer_float16_atomic_min_max(mut self, value: bool) -> Self {
29352        self.inner.shader_buffer_float16_atomic_min_max = value as u32;
29353        self
29354    }
29355    #[inline]
29356    pub fn shader_buffer_float32_atomic_min_max(mut self, value: bool) -> Self {
29357        self.inner.shader_buffer_float32_atomic_min_max = value as u32;
29358        self
29359    }
29360    #[inline]
29361    pub fn shader_buffer_float64_atomic_min_max(mut self, value: bool) -> Self {
29362        self.inner.shader_buffer_float64_atomic_min_max = value as u32;
29363        self
29364    }
29365    #[inline]
29366    pub fn shader_shared_float16_atomics(mut self, value: bool) -> Self {
29367        self.inner.shader_shared_float16_atomics = value as u32;
29368        self
29369    }
29370    #[inline]
29371    pub fn shader_shared_float16_atomic_add(mut self, value: bool) -> Self {
29372        self.inner.shader_shared_float16_atomic_add = value as u32;
29373        self
29374    }
29375    #[inline]
29376    pub fn shader_shared_float16_atomic_min_max(mut self, value: bool) -> Self {
29377        self.inner.shader_shared_float16_atomic_min_max = value as u32;
29378        self
29379    }
29380    #[inline]
29381    pub fn shader_shared_float32_atomic_min_max(mut self, value: bool) -> Self {
29382        self.inner.shader_shared_float32_atomic_min_max = value as u32;
29383        self
29384    }
29385    #[inline]
29386    pub fn shader_shared_float64_atomic_min_max(mut self, value: bool) -> Self {
29387        self.inner.shader_shared_float64_atomic_min_max = value as u32;
29388        self
29389    }
29390    #[inline]
29391    pub fn shader_image_float32_atomic_min_max(mut self, value: bool) -> Self {
29392        self.inner.shader_image_float32_atomic_min_max = value as u32;
29393        self
29394    }
29395    #[inline]
29396    pub fn sparse_image_float32_atomic_min_max(mut self, value: bool) -> Self {
29397        self.inner.sparse_image_float32_atomic_min_max = value as u32;
29398        self
29399    }
29400    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderAtomicFloat2FeaturesEXT`]'s **Extended By** section for valid types.
29401    #[inline]
29402    pub fn push_next<T: ExtendsPhysicalDeviceShaderAtomicFloat2FeaturesEXT>(
29403        mut self,
29404        next: &'a mut T,
29405    ) -> Self {
29406        unsafe {
29407            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
29408            (*next_ptr).p_next = self.inner.p_next as *mut _;
29409            self.inner.p_next = <*mut BaseOutStructure>::cast::<
29410                core::ffi::c_void,
29411            >(next_ptr);
29412        }
29413        self
29414    }
29415}
29416impl<'a> core::ops::Deref for PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder<'a> {
29417    type Target = PhysicalDeviceShaderAtomicFloat2FeaturesEXT;
29418    #[inline]
29419    fn deref(&self) -> &Self::Target {
29420        &self.inner
29421    }
29422}
29423impl<'a> core::ops::DerefMut for PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder<'a> {
29424    #[inline]
29425    fn deref_mut(&mut self) -> &mut Self::Target {
29426        &mut self.inner
29427    }
29428}
29429///Builder for [`PhysicalDeviceVertexAttributeDivisorFeatures`] with lifetime-tied pNext safety.
29430pub struct PhysicalDeviceVertexAttributeDivisorFeaturesBuilder<'a> {
29431    inner: PhysicalDeviceVertexAttributeDivisorFeatures,
29432    _marker: core::marker::PhantomData<&'a ()>,
29433}
29434impl PhysicalDeviceVertexAttributeDivisorFeatures {
29435    /// Start building this struct; `s_type` is already set to the correct variant.
29436    #[inline]
29437    pub fn builder<'a>() -> PhysicalDeviceVertexAttributeDivisorFeaturesBuilder<'a> {
29438        PhysicalDeviceVertexAttributeDivisorFeaturesBuilder {
29439            inner: PhysicalDeviceVertexAttributeDivisorFeatures {
29440                s_type: StructureType::from_raw(1000190002i32),
29441                ..Default::default()
29442            },
29443            _marker: core::marker::PhantomData,
29444        }
29445    }
29446}
29447impl<'a> PhysicalDeviceVertexAttributeDivisorFeaturesBuilder<'a> {
29448    #[inline]
29449    pub fn vertex_attribute_instance_rate_divisor(mut self, value: bool) -> Self {
29450        self.inner.vertex_attribute_instance_rate_divisor = value as u32;
29451        self
29452    }
29453    #[inline]
29454    pub fn vertex_attribute_instance_rate_zero_divisor(mut self, value: bool) -> Self {
29455        self.inner.vertex_attribute_instance_rate_zero_divisor = value as u32;
29456        self
29457    }
29458    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceVertexAttributeDivisorFeatures`]'s **Extended By** section for valid types.
29459    #[inline]
29460    pub fn push_next<T: ExtendsPhysicalDeviceVertexAttributeDivisorFeatures>(
29461        mut self,
29462        next: &'a mut T,
29463    ) -> Self {
29464        unsafe {
29465            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
29466            (*next_ptr).p_next = self.inner.p_next as *mut _;
29467            self.inner.p_next = <*mut BaseOutStructure>::cast::<
29468                core::ffi::c_void,
29469            >(next_ptr);
29470        }
29471        self
29472    }
29473}
29474impl<'a> core::ops::Deref for PhysicalDeviceVertexAttributeDivisorFeaturesBuilder<'a> {
29475    type Target = PhysicalDeviceVertexAttributeDivisorFeatures;
29476    #[inline]
29477    fn deref(&self) -> &Self::Target {
29478        &self.inner
29479    }
29480}
29481impl<'a> core::ops::DerefMut
29482for PhysicalDeviceVertexAttributeDivisorFeaturesBuilder<'a> {
29483    #[inline]
29484    fn deref_mut(&mut self) -> &mut Self::Target {
29485        &mut self.inner
29486    }
29487}
29488///Builder for [`QueueFamilyCheckpointPropertiesNV`] with lifetime-tied pNext safety.
29489pub struct QueueFamilyCheckpointPropertiesNVBuilder<'a> {
29490    inner: QueueFamilyCheckpointPropertiesNV,
29491    _marker: core::marker::PhantomData<&'a ()>,
29492}
29493impl QueueFamilyCheckpointPropertiesNV {
29494    /// Start building this struct; `s_type` is already set to the correct variant.
29495    #[inline]
29496    pub fn builder<'a>() -> QueueFamilyCheckpointPropertiesNVBuilder<'a> {
29497        QueueFamilyCheckpointPropertiesNVBuilder {
29498            inner: QueueFamilyCheckpointPropertiesNV {
29499                s_type: StructureType::from_raw(1000206001i32),
29500                ..Default::default()
29501            },
29502            _marker: core::marker::PhantomData,
29503        }
29504    }
29505}
29506impl<'a> QueueFamilyCheckpointPropertiesNVBuilder<'a> {
29507    #[inline]
29508    pub fn checkpoint_execution_stage_mask(mut self, value: PipelineStageFlags) -> Self {
29509        self.inner.checkpoint_execution_stage_mask = value;
29510        self
29511    }
29512}
29513impl<'a> core::ops::Deref for QueueFamilyCheckpointPropertiesNVBuilder<'a> {
29514    type Target = QueueFamilyCheckpointPropertiesNV;
29515    #[inline]
29516    fn deref(&self) -> &Self::Target {
29517        &self.inner
29518    }
29519}
29520impl<'a> core::ops::DerefMut for QueueFamilyCheckpointPropertiesNVBuilder<'a> {
29521    #[inline]
29522    fn deref_mut(&mut self) -> &mut Self::Target {
29523        &mut self.inner
29524    }
29525}
29526///Builder for [`CheckpointDataNV`] with lifetime-tied pNext safety.
29527pub struct CheckpointDataNVBuilder<'a> {
29528    inner: CheckpointDataNV,
29529    _marker: core::marker::PhantomData<&'a ()>,
29530}
29531impl CheckpointDataNV {
29532    /// Start building this struct; `s_type` is already set to the correct variant.
29533    #[inline]
29534    pub fn builder<'a>() -> CheckpointDataNVBuilder<'a> {
29535        CheckpointDataNVBuilder {
29536            inner: CheckpointDataNV {
29537                s_type: StructureType::from_raw(1000206000i32),
29538                ..Default::default()
29539            },
29540            _marker: core::marker::PhantomData,
29541        }
29542    }
29543}
29544impl<'a> CheckpointDataNVBuilder<'a> {
29545    #[inline]
29546    pub fn stage(mut self, value: PipelineStageFlagBits) -> Self {
29547        self.inner.stage = value;
29548        self
29549    }
29550    #[inline]
29551    pub fn checkpoint_marker(mut self, value: *mut core::ffi::c_void) -> Self {
29552        self.inner.p_checkpoint_marker = value;
29553        self
29554    }
29555}
29556impl<'a> core::ops::Deref for CheckpointDataNVBuilder<'a> {
29557    type Target = CheckpointDataNV;
29558    #[inline]
29559    fn deref(&self) -> &Self::Target {
29560        &self.inner
29561    }
29562}
29563impl<'a> core::ops::DerefMut for CheckpointDataNVBuilder<'a> {
29564    #[inline]
29565    fn deref_mut(&mut self) -> &mut Self::Target {
29566        &mut self.inner
29567    }
29568}
29569///Builder for [`PhysicalDeviceDepthStencilResolveProperties`] with lifetime-tied pNext safety.
29570pub struct PhysicalDeviceDepthStencilResolvePropertiesBuilder<'a> {
29571    inner: PhysicalDeviceDepthStencilResolveProperties,
29572    _marker: core::marker::PhantomData<&'a ()>,
29573}
29574impl PhysicalDeviceDepthStencilResolveProperties {
29575    /// Start building this struct; `s_type` is already set to the correct variant.
29576    #[inline]
29577    pub fn builder<'a>() -> PhysicalDeviceDepthStencilResolvePropertiesBuilder<'a> {
29578        PhysicalDeviceDepthStencilResolvePropertiesBuilder {
29579            inner: PhysicalDeviceDepthStencilResolveProperties {
29580                s_type: StructureType::from_raw(1000199000i32),
29581                ..Default::default()
29582            },
29583            _marker: core::marker::PhantomData,
29584        }
29585    }
29586}
29587impl<'a> PhysicalDeviceDepthStencilResolvePropertiesBuilder<'a> {
29588    #[inline]
29589    pub fn supported_depth_resolve_modes(mut self, value: ResolveModeFlags) -> Self {
29590        self.inner.supported_depth_resolve_modes = value;
29591        self
29592    }
29593    #[inline]
29594    pub fn supported_stencil_resolve_modes(mut self, value: ResolveModeFlags) -> Self {
29595        self.inner.supported_stencil_resolve_modes = value;
29596        self
29597    }
29598    #[inline]
29599    pub fn independent_resolve_none(mut self, value: bool) -> Self {
29600        self.inner.independent_resolve_none = value as u32;
29601        self
29602    }
29603    #[inline]
29604    pub fn independent_resolve(mut self, value: bool) -> Self {
29605        self.inner.independent_resolve = value as u32;
29606        self
29607    }
29608}
29609impl<'a> core::ops::Deref for PhysicalDeviceDepthStencilResolvePropertiesBuilder<'a> {
29610    type Target = PhysicalDeviceDepthStencilResolveProperties;
29611    #[inline]
29612    fn deref(&self) -> &Self::Target {
29613        &self.inner
29614    }
29615}
29616impl<'a> core::ops::DerefMut for PhysicalDeviceDepthStencilResolvePropertiesBuilder<'a> {
29617    #[inline]
29618    fn deref_mut(&mut self) -> &mut Self::Target {
29619        &mut self.inner
29620    }
29621}
29622///Builder for [`SubpassDescriptionDepthStencilResolve`] with lifetime-tied pNext safety.
29623pub struct SubpassDescriptionDepthStencilResolveBuilder<'a> {
29624    inner: SubpassDescriptionDepthStencilResolve,
29625    _marker: core::marker::PhantomData<&'a ()>,
29626}
29627impl SubpassDescriptionDepthStencilResolve {
29628    /// Start building this struct; `s_type` is already set to the correct variant.
29629    #[inline]
29630    pub fn builder<'a>() -> SubpassDescriptionDepthStencilResolveBuilder<'a> {
29631        SubpassDescriptionDepthStencilResolveBuilder {
29632            inner: SubpassDescriptionDepthStencilResolve {
29633                s_type: StructureType::from_raw(1000199001i32),
29634                ..Default::default()
29635            },
29636            _marker: core::marker::PhantomData,
29637        }
29638    }
29639}
29640impl<'a> SubpassDescriptionDepthStencilResolveBuilder<'a> {
29641    #[inline]
29642    pub fn depth_resolve_mode(mut self, value: ResolveModeFlagBits) -> Self {
29643        self.inner.depth_resolve_mode = value;
29644        self
29645    }
29646    #[inline]
29647    pub fn stencil_resolve_mode(mut self, value: ResolveModeFlagBits) -> Self {
29648        self.inner.stencil_resolve_mode = value;
29649        self
29650    }
29651    #[inline]
29652    pub fn depth_stencil_resolve_attachment(
29653        mut self,
29654        value: &'a AttachmentReference2,
29655    ) -> Self {
29656        self.inner.p_depth_stencil_resolve_attachment = value;
29657        self
29658    }
29659    ///Prepend a struct to the pNext chain. See [`SubpassDescriptionDepthStencilResolve`]'s **Extended By** section for valid types.
29660    #[inline]
29661    pub fn push_next<T: ExtendsSubpassDescriptionDepthStencilResolve>(
29662        mut self,
29663        next: &'a mut T,
29664    ) -> Self {
29665        unsafe {
29666            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
29667            (*next_ptr).p_next = self.inner.p_next as *mut _;
29668            self.inner.p_next = <*mut BaseOutStructure>::cast::<
29669                core::ffi::c_void,
29670            >(next_ptr) as *const _;
29671        }
29672        self
29673    }
29674}
29675impl<'a> core::ops::Deref for SubpassDescriptionDepthStencilResolveBuilder<'a> {
29676    type Target = SubpassDescriptionDepthStencilResolve;
29677    #[inline]
29678    fn deref(&self) -> &Self::Target {
29679        &self.inner
29680    }
29681}
29682impl<'a> core::ops::DerefMut for SubpassDescriptionDepthStencilResolveBuilder<'a> {
29683    #[inline]
29684    fn deref_mut(&mut self) -> &mut Self::Target {
29685        &mut self.inner
29686    }
29687}
29688///Builder for [`ImageViewASTCDecodeModeEXT`] with lifetime-tied pNext safety.
29689pub struct ImageViewASTCDecodeModeEXTBuilder<'a> {
29690    inner: ImageViewASTCDecodeModeEXT,
29691    _marker: core::marker::PhantomData<&'a ()>,
29692}
29693impl ImageViewASTCDecodeModeEXT {
29694    /// Start building this struct; `s_type` is already set to the correct variant.
29695    #[inline]
29696    pub fn builder<'a>() -> ImageViewASTCDecodeModeEXTBuilder<'a> {
29697        ImageViewASTCDecodeModeEXTBuilder {
29698            inner: ImageViewASTCDecodeModeEXT {
29699                s_type: StructureType::from_raw(1000067000i32),
29700                ..Default::default()
29701            },
29702            _marker: core::marker::PhantomData,
29703        }
29704    }
29705}
29706impl<'a> ImageViewASTCDecodeModeEXTBuilder<'a> {
29707    #[inline]
29708    pub fn decode_mode(mut self, value: Format) -> Self {
29709        self.inner.decode_mode = value;
29710        self
29711    }
29712    ///Prepend a struct to the pNext chain. See [`ImageViewASTCDecodeModeEXT`]'s **Extended By** section for valid types.
29713    #[inline]
29714    pub fn push_next<T: ExtendsImageViewASTCDecodeModeEXT>(
29715        mut self,
29716        next: &'a mut T,
29717    ) -> Self {
29718        unsafe {
29719            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
29720            (*next_ptr).p_next = self.inner.p_next as *mut _;
29721            self.inner.p_next = <*mut BaseOutStructure>::cast::<
29722                core::ffi::c_void,
29723            >(next_ptr) as *const _;
29724        }
29725        self
29726    }
29727}
29728impl<'a> core::ops::Deref for ImageViewASTCDecodeModeEXTBuilder<'a> {
29729    type Target = ImageViewASTCDecodeModeEXT;
29730    #[inline]
29731    fn deref(&self) -> &Self::Target {
29732        &self.inner
29733    }
29734}
29735impl<'a> core::ops::DerefMut for ImageViewASTCDecodeModeEXTBuilder<'a> {
29736    #[inline]
29737    fn deref_mut(&mut self) -> &mut Self::Target {
29738        &mut self.inner
29739    }
29740}
29741///Builder for [`PhysicalDeviceASTCDecodeFeaturesEXT`] with lifetime-tied pNext safety.
29742pub struct PhysicalDeviceASTCDecodeFeaturesEXTBuilder<'a> {
29743    inner: PhysicalDeviceASTCDecodeFeaturesEXT,
29744    _marker: core::marker::PhantomData<&'a ()>,
29745}
29746impl PhysicalDeviceASTCDecodeFeaturesEXT {
29747    /// Start building this struct; `s_type` is already set to the correct variant.
29748    #[inline]
29749    pub fn builder<'a>() -> PhysicalDeviceASTCDecodeFeaturesEXTBuilder<'a> {
29750        PhysicalDeviceASTCDecodeFeaturesEXTBuilder {
29751            inner: PhysicalDeviceASTCDecodeFeaturesEXT {
29752                s_type: StructureType::from_raw(1000067001i32),
29753                ..Default::default()
29754            },
29755            _marker: core::marker::PhantomData,
29756        }
29757    }
29758}
29759impl<'a> PhysicalDeviceASTCDecodeFeaturesEXTBuilder<'a> {
29760    #[inline]
29761    pub fn decode_mode_shared_exponent(mut self, value: bool) -> Self {
29762        self.inner.decode_mode_shared_exponent = value as u32;
29763        self
29764    }
29765    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceASTCDecodeFeaturesEXT`]'s **Extended By** section for valid types.
29766    #[inline]
29767    pub fn push_next<T: ExtendsPhysicalDeviceASTCDecodeFeaturesEXT>(
29768        mut self,
29769        next: &'a mut T,
29770    ) -> Self {
29771        unsafe {
29772            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
29773            (*next_ptr).p_next = self.inner.p_next as *mut _;
29774            self.inner.p_next = <*mut BaseOutStructure>::cast::<
29775                core::ffi::c_void,
29776            >(next_ptr);
29777        }
29778        self
29779    }
29780}
29781impl<'a> core::ops::Deref for PhysicalDeviceASTCDecodeFeaturesEXTBuilder<'a> {
29782    type Target = PhysicalDeviceASTCDecodeFeaturesEXT;
29783    #[inline]
29784    fn deref(&self) -> &Self::Target {
29785        &self.inner
29786    }
29787}
29788impl<'a> core::ops::DerefMut for PhysicalDeviceASTCDecodeFeaturesEXTBuilder<'a> {
29789    #[inline]
29790    fn deref_mut(&mut self) -> &mut Self::Target {
29791        &mut self.inner
29792    }
29793}
29794///Builder for [`PhysicalDeviceTransformFeedbackFeaturesEXT`] with lifetime-tied pNext safety.
29795pub struct PhysicalDeviceTransformFeedbackFeaturesEXTBuilder<'a> {
29796    inner: PhysicalDeviceTransformFeedbackFeaturesEXT,
29797    _marker: core::marker::PhantomData<&'a ()>,
29798}
29799impl PhysicalDeviceTransformFeedbackFeaturesEXT {
29800    /// Start building this struct; `s_type` is already set to the correct variant.
29801    #[inline]
29802    pub fn builder<'a>() -> PhysicalDeviceTransformFeedbackFeaturesEXTBuilder<'a> {
29803        PhysicalDeviceTransformFeedbackFeaturesEXTBuilder {
29804            inner: PhysicalDeviceTransformFeedbackFeaturesEXT {
29805                s_type: StructureType::from_raw(1000028000i32),
29806                ..Default::default()
29807            },
29808            _marker: core::marker::PhantomData,
29809        }
29810    }
29811}
29812impl<'a> PhysicalDeviceTransformFeedbackFeaturesEXTBuilder<'a> {
29813    #[inline]
29814    pub fn transform_feedback(mut self, value: bool) -> Self {
29815        self.inner.transform_feedback = value as u32;
29816        self
29817    }
29818    #[inline]
29819    pub fn geometry_streams(mut self, value: bool) -> Self {
29820        self.inner.geometry_streams = value as u32;
29821        self
29822    }
29823    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceTransformFeedbackFeaturesEXT`]'s **Extended By** section for valid types.
29824    #[inline]
29825    pub fn push_next<T: ExtendsPhysicalDeviceTransformFeedbackFeaturesEXT>(
29826        mut self,
29827        next: &'a mut T,
29828    ) -> Self {
29829        unsafe {
29830            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
29831            (*next_ptr).p_next = self.inner.p_next as *mut _;
29832            self.inner.p_next = <*mut BaseOutStructure>::cast::<
29833                core::ffi::c_void,
29834            >(next_ptr);
29835        }
29836        self
29837    }
29838}
29839impl<'a> core::ops::Deref for PhysicalDeviceTransformFeedbackFeaturesEXTBuilder<'a> {
29840    type Target = PhysicalDeviceTransformFeedbackFeaturesEXT;
29841    #[inline]
29842    fn deref(&self) -> &Self::Target {
29843        &self.inner
29844    }
29845}
29846impl<'a> core::ops::DerefMut for PhysicalDeviceTransformFeedbackFeaturesEXTBuilder<'a> {
29847    #[inline]
29848    fn deref_mut(&mut self) -> &mut Self::Target {
29849        &mut self.inner
29850    }
29851}
29852///Builder for [`PhysicalDeviceTransformFeedbackPropertiesEXT`] with lifetime-tied pNext safety.
29853pub struct PhysicalDeviceTransformFeedbackPropertiesEXTBuilder<'a> {
29854    inner: PhysicalDeviceTransformFeedbackPropertiesEXT,
29855    _marker: core::marker::PhantomData<&'a ()>,
29856}
29857impl PhysicalDeviceTransformFeedbackPropertiesEXT {
29858    /// Start building this struct; `s_type` is already set to the correct variant.
29859    #[inline]
29860    pub fn builder<'a>() -> PhysicalDeviceTransformFeedbackPropertiesEXTBuilder<'a> {
29861        PhysicalDeviceTransformFeedbackPropertiesEXTBuilder {
29862            inner: PhysicalDeviceTransformFeedbackPropertiesEXT {
29863                s_type: StructureType::from_raw(1000028001i32),
29864                ..Default::default()
29865            },
29866            _marker: core::marker::PhantomData,
29867        }
29868    }
29869}
29870impl<'a> PhysicalDeviceTransformFeedbackPropertiesEXTBuilder<'a> {
29871    #[inline]
29872    pub fn max_transform_feedback_streams(mut self, value: u32) -> Self {
29873        self.inner.max_transform_feedback_streams = value;
29874        self
29875    }
29876    #[inline]
29877    pub fn max_transform_feedback_buffers(mut self, value: u32) -> Self {
29878        self.inner.max_transform_feedback_buffers = value;
29879        self
29880    }
29881    #[inline]
29882    pub fn max_transform_feedback_buffer_size(mut self, value: u64) -> Self {
29883        self.inner.max_transform_feedback_buffer_size = value;
29884        self
29885    }
29886    #[inline]
29887    pub fn max_transform_feedback_stream_data_size(mut self, value: u32) -> Self {
29888        self.inner.max_transform_feedback_stream_data_size = value;
29889        self
29890    }
29891    #[inline]
29892    pub fn max_transform_feedback_buffer_data_size(mut self, value: u32) -> Self {
29893        self.inner.max_transform_feedback_buffer_data_size = value;
29894        self
29895    }
29896    #[inline]
29897    pub fn max_transform_feedback_buffer_data_stride(mut self, value: u32) -> Self {
29898        self.inner.max_transform_feedback_buffer_data_stride = value;
29899        self
29900    }
29901    #[inline]
29902    pub fn transform_feedback_queries(mut self, value: bool) -> Self {
29903        self.inner.transform_feedback_queries = value as u32;
29904        self
29905    }
29906    #[inline]
29907    pub fn transform_feedback_streams_lines_triangles(mut self, value: bool) -> Self {
29908        self.inner.transform_feedback_streams_lines_triangles = value as u32;
29909        self
29910    }
29911    #[inline]
29912    pub fn transform_feedback_rasterization_stream_select(
29913        mut self,
29914        value: bool,
29915    ) -> Self {
29916        self.inner.transform_feedback_rasterization_stream_select = value as u32;
29917        self
29918    }
29919    #[inline]
29920    pub fn transform_feedback_draw(mut self, value: bool) -> Self {
29921        self.inner.transform_feedback_draw = value as u32;
29922        self
29923    }
29924}
29925impl<'a> core::ops::Deref for PhysicalDeviceTransformFeedbackPropertiesEXTBuilder<'a> {
29926    type Target = PhysicalDeviceTransformFeedbackPropertiesEXT;
29927    #[inline]
29928    fn deref(&self) -> &Self::Target {
29929        &self.inner
29930    }
29931}
29932impl<'a> core::ops::DerefMut
29933for PhysicalDeviceTransformFeedbackPropertiesEXTBuilder<'a> {
29934    #[inline]
29935    fn deref_mut(&mut self) -> &mut Self::Target {
29936        &mut self.inner
29937    }
29938}
29939///Builder for [`PipelineRasterizationStateStreamCreateInfoEXT`] with lifetime-tied pNext safety.
29940pub struct PipelineRasterizationStateStreamCreateInfoEXTBuilder<'a> {
29941    inner: PipelineRasterizationStateStreamCreateInfoEXT,
29942    _marker: core::marker::PhantomData<&'a ()>,
29943}
29944impl PipelineRasterizationStateStreamCreateInfoEXT {
29945    /// Start building this struct; `s_type` is already set to the correct variant.
29946    #[inline]
29947    pub fn builder<'a>() -> PipelineRasterizationStateStreamCreateInfoEXTBuilder<'a> {
29948        PipelineRasterizationStateStreamCreateInfoEXTBuilder {
29949            inner: PipelineRasterizationStateStreamCreateInfoEXT {
29950                s_type: StructureType::from_raw(1000028002i32),
29951                ..Default::default()
29952            },
29953            _marker: core::marker::PhantomData,
29954        }
29955    }
29956}
29957impl<'a> PipelineRasterizationStateStreamCreateInfoEXTBuilder<'a> {
29958    #[inline]
29959    pub fn flags(
29960        mut self,
29961        value: PipelineRasterizationStateStreamCreateFlagsEXT,
29962    ) -> Self {
29963        self.inner.flags = value;
29964        self
29965    }
29966    #[inline]
29967    pub fn rasterization_stream(mut self, value: u32) -> Self {
29968        self.inner.rasterization_stream = value;
29969        self
29970    }
29971    ///Prepend a struct to the pNext chain. See [`PipelineRasterizationStateStreamCreateInfoEXT`]'s **Extended By** section for valid types.
29972    #[inline]
29973    pub fn push_next<T: ExtendsPipelineRasterizationStateStreamCreateInfoEXT>(
29974        mut self,
29975        next: &'a mut T,
29976    ) -> Self {
29977        unsafe {
29978            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
29979            (*next_ptr).p_next = self.inner.p_next as *mut _;
29980            self.inner.p_next = <*mut BaseOutStructure>::cast::<
29981                core::ffi::c_void,
29982            >(next_ptr) as *const _;
29983        }
29984        self
29985    }
29986}
29987impl<'a> core::ops::Deref for PipelineRasterizationStateStreamCreateInfoEXTBuilder<'a> {
29988    type Target = PipelineRasterizationStateStreamCreateInfoEXT;
29989    #[inline]
29990    fn deref(&self) -> &Self::Target {
29991        &self.inner
29992    }
29993}
29994impl<'a> core::ops::DerefMut
29995for PipelineRasterizationStateStreamCreateInfoEXTBuilder<'a> {
29996    #[inline]
29997    fn deref_mut(&mut self) -> &mut Self::Target {
29998        &mut self.inner
29999    }
30000}
30001///Builder for [`PhysicalDeviceRepresentativeFragmentTestFeaturesNV`] with lifetime-tied pNext safety.
30002pub struct PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder<'a> {
30003    inner: PhysicalDeviceRepresentativeFragmentTestFeaturesNV,
30004    _marker: core::marker::PhantomData<&'a ()>,
30005}
30006impl PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
30007    /// Start building this struct; `s_type` is already set to the correct variant.
30008    #[inline]
30009    pub fn builder<'a>() -> PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder<
30010        'a,
30011    > {
30012        PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder {
30013            inner: PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
30014                s_type: StructureType::from_raw(1000166000i32),
30015                ..Default::default()
30016            },
30017            _marker: core::marker::PhantomData,
30018        }
30019    }
30020}
30021impl<'a> PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder<'a> {
30022    #[inline]
30023    pub fn representative_fragment_test(mut self, value: bool) -> Self {
30024        self.inner.representative_fragment_test = value as u32;
30025        self
30026    }
30027    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceRepresentativeFragmentTestFeaturesNV`]'s **Extended By** section for valid types.
30028    #[inline]
30029    pub fn push_next<T: ExtendsPhysicalDeviceRepresentativeFragmentTestFeaturesNV>(
30030        mut self,
30031        next: &'a mut T,
30032    ) -> Self {
30033        unsafe {
30034            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
30035            (*next_ptr).p_next = self.inner.p_next as *mut _;
30036            self.inner.p_next = <*mut BaseOutStructure>::cast::<
30037                core::ffi::c_void,
30038            >(next_ptr);
30039        }
30040        self
30041    }
30042}
30043impl<'a> core::ops::Deref
30044for PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder<'a> {
30045    type Target = PhysicalDeviceRepresentativeFragmentTestFeaturesNV;
30046    #[inline]
30047    fn deref(&self) -> &Self::Target {
30048        &self.inner
30049    }
30050}
30051impl<'a> core::ops::DerefMut
30052for PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder<'a> {
30053    #[inline]
30054    fn deref_mut(&mut self) -> &mut Self::Target {
30055        &mut self.inner
30056    }
30057}
30058///Builder for [`PipelineRepresentativeFragmentTestStateCreateInfoNV`] with lifetime-tied pNext safety.
30059pub struct PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder<'a> {
30060    inner: PipelineRepresentativeFragmentTestStateCreateInfoNV,
30061    _marker: core::marker::PhantomData<&'a ()>,
30062}
30063impl PipelineRepresentativeFragmentTestStateCreateInfoNV {
30064    /// Start building this struct; `s_type` is already set to the correct variant.
30065    #[inline]
30066    pub fn builder<'a>() -> PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder<
30067        'a,
30068    > {
30069        PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder {
30070            inner: PipelineRepresentativeFragmentTestStateCreateInfoNV {
30071                s_type: StructureType::from_raw(1000166001i32),
30072                ..Default::default()
30073            },
30074            _marker: core::marker::PhantomData,
30075        }
30076    }
30077}
30078impl<'a> PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder<'a> {
30079    #[inline]
30080    pub fn representative_fragment_test_enable(mut self, value: bool) -> Self {
30081        self.inner.representative_fragment_test_enable = value as u32;
30082        self
30083    }
30084    ///Prepend a struct to the pNext chain. See [`PipelineRepresentativeFragmentTestStateCreateInfoNV`]'s **Extended By** section for valid types.
30085    #[inline]
30086    pub fn push_next<T: ExtendsPipelineRepresentativeFragmentTestStateCreateInfoNV>(
30087        mut self,
30088        next: &'a mut T,
30089    ) -> Self {
30090        unsafe {
30091            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
30092            (*next_ptr).p_next = self.inner.p_next as *mut _;
30093            self.inner.p_next = <*mut BaseOutStructure>::cast::<
30094                core::ffi::c_void,
30095            >(next_ptr) as *const _;
30096        }
30097        self
30098    }
30099}
30100impl<'a> core::ops::Deref
30101for PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder<'a> {
30102    type Target = PipelineRepresentativeFragmentTestStateCreateInfoNV;
30103    #[inline]
30104    fn deref(&self) -> &Self::Target {
30105        &self.inner
30106    }
30107}
30108impl<'a> core::ops::DerefMut
30109for PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder<'a> {
30110    #[inline]
30111    fn deref_mut(&mut self) -> &mut Self::Target {
30112        &mut self.inner
30113    }
30114}
30115///Builder for [`PhysicalDeviceExclusiveScissorFeaturesNV`] with lifetime-tied pNext safety.
30116pub struct PhysicalDeviceExclusiveScissorFeaturesNVBuilder<'a> {
30117    inner: PhysicalDeviceExclusiveScissorFeaturesNV,
30118    _marker: core::marker::PhantomData<&'a ()>,
30119}
30120impl PhysicalDeviceExclusiveScissorFeaturesNV {
30121    /// Start building this struct; `s_type` is already set to the correct variant.
30122    #[inline]
30123    pub fn builder<'a>() -> PhysicalDeviceExclusiveScissorFeaturesNVBuilder<'a> {
30124        PhysicalDeviceExclusiveScissorFeaturesNVBuilder {
30125            inner: PhysicalDeviceExclusiveScissorFeaturesNV {
30126                s_type: StructureType::from_raw(1000205002i32),
30127                ..Default::default()
30128            },
30129            _marker: core::marker::PhantomData,
30130        }
30131    }
30132}
30133impl<'a> PhysicalDeviceExclusiveScissorFeaturesNVBuilder<'a> {
30134    #[inline]
30135    pub fn exclusive_scissor(mut self, value: bool) -> Self {
30136        self.inner.exclusive_scissor = value as u32;
30137        self
30138    }
30139    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceExclusiveScissorFeaturesNV`]'s **Extended By** section for valid types.
30140    #[inline]
30141    pub fn push_next<T: ExtendsPhysicalDeviceExclusiveScissorFeaturesNV>(
30142        mut self,
30143        next: &'a mut T,
30144    ) -> Self {
30145        unsafe {
30146            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
30147            (*next_ptr).p_next = self.inner.p_next as *mut _;
30148            self.inner.p_next = <*mut BaseOutStructure>::cast::<
30149                core::ffi::c_void,
30150            >(next_ptr);
30151        }
30152        self
30153    }
30154}
30155impl<'a> core::ops::Deref for PhysicalDeviceExclusiveScissorFeaturesNVBuilder<'a> {
30156    type Target = PhysicalDeviceExclusiveScissorFeaturesNV;
30157    #[inline]
30158    fn deref(&self) -> &Self::Target {
30159        &self.inner
30160    }
30161}
30162impl<'a> core::ops::DerefMut for PhysicalDeviceExclusiveScissorFeaturesNVBuilder<'a> {
30163    #[inline]
30164    fn deref_mut(&mut self) -> &mut Self::Target {
30165        &mut self.inner
30166    }
30167}
30168///Builder for [`PipelineViewportExclusiveScissorStateCreateInfoNV`] with lifetime-tied pNext safety.
30169pub struct PipelineViewportExclusiveScissorStateCreateInfoNVBuilder<'a> {
30170    inner: PipelineViewportExclusiveScissorStateCreateInfoNV,
30171    _marker: core::marker::PhantomData<&'a ()>,
30172}
30173impl PipelineViewportExclusiveScissorStateCreateInfoNV {
30174    /// Start building this struct; `s_type` is already set to the correct variant.
30175    #[inline]
30176    pub fn builder<'a>() -> PipelineViewportExclusiveScissorStateCreateInfoNVBuilder<
30177        'a,
30178    > {
30179        PipelineViewportExclusiveScissorStateCreateInfoNVBuilder {
30180            inner: PipelineViewportExclusiveScissorStateCreateInfoNV {
30181                s_type: StructureType::from_raw(1000205000i32),
30182                ..Default::default()
30183            },
30184            _marker: core::marker::PhantomData,
30185        }
30186    }
30187}
30188impl<'a> PipelineViewportExclusiveScissorStateCreateInfoNVBuilder<'a> {
30189    #[inline]
30190    pub fn exclusive_scissors(mut self, slice: &'a [Rect2D]) -> Self {
30191        self.inner.exclusive_scissor_count = slice.len() as u32;
30192        self.inner.p_exclusive_scissors = slice.as_ptr();
30193        self
30194    }
30195    ///Prepend a struct to the pNext chain. See [`PipelineViewportExclusiveScissorStateCreateInfoNV`]'s **Extended By** section for valid types.
30196    #[inline]
30197    pub fn push_next<T: ExtendsPipelineViewportExclusiveScissorStateCreateInfoNV>(
30198        mut self,
30199        next: &'a mut T,
30200    ) -> Self {
30201        unsafe {
30202            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
30203            (*next_ptr).p_next = self.inner.p_next as *mut _;
30204            self.inner.p_next = <*mut BaseOutStructure>::cast::<
30205                core::ffi::c_void,
30206            >(next_ptr) as *const _;
30207        }
30208        self
30209    }
30210}
30211impl<'a> core::ops::Deref
30212for PipelineViewportExclusiveScissorStateCreateInfoNVBuilder<'a> {
30213    type Target = PipelineViewportExclusiveScissorStateCreateInfoNV;
30214    #[inline]
30215    fn deref(&self) -> &Self::Target {
30216        &self.inner
30217    }
30218}
30219impl<'a> core::ops::DerefMut
30220for PipelineViewportExclusiveScissorStateCreateInfoNVBuilder<'a> {
30221    #[inline]
30222    fn deref_mut(&mut self) -> &mut Self::Target {
30223        &mut self.inner
30224    }
30225}
30226///Builder for [`PhysicalDeviceCornerSampledImageFeaturesNV`] with lifetime-tied pNext safety.
30227pub struct PhysicalDeviceCornerSampledImageFeaturesNVBuilder<'a> {
30228    inner: PhysicalDeviceCornerSampledImageFeaturesNV,
30229    _marker: core::marker::PhantomData<&'a ()>,
30230}
30231impl PhysicalDeviceCornerSampledImageFeaturesNV {
30232    /// Start building this struct; `s_type` is already set to the correct variant.
30233    #[inline]
30234    pub fn builder<'a>() -> PhysicalDeviceCornerSampledImageFeaturesNVBuilder<'a> {
30235        PhysicalDeviceCornerSampledImageFeaturesNVBuilder {
30236            inner: PhysicalDeviceCornerSampledImageFeaturesNV {
30237                s_type: StructureType::from_raw(1000050000i32),
30238                ..Default::default()
30239            },
30240            _marker: core::marker::PhantomData,
30241        }
30242    }
30243}
30244impl<'a> PhysicalDeviceCornerSampledImageFeaturesNVBuilder<'a> {
30245    #[inline]
30246    pub fn corner_sampled_image(mut self, value: bool) -> Self {
30247        self.inner.corner_sampled_image = value as u32;
30248        self
30249    }
30250    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceCornerSampledImageFeaturesNV`]'s **Extended By** section for valid types.
30251    #[inline]
30252    pub fn push_next<T: ExtendsPhysicalDeviceCornerSampledImageFeaturesNV>(
30253        mut self,
30254        next: &'a mut T,
30255    ) -> Self {
30256        unsafe {
30257            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
30258            (*next_ptr).p_next = self.inner.p_next as *mut _;
30259            self.inner.p_next = <*mut BaseOutStructure>::cast::<
30260                core::ffi::c_void,
30261            >(next_ptr);
30262        }
30263        self
30264    }
30265}
30266impl<'a> core::ops::Deref for PhysicalDeviceCornerSampledImageFeaturesNVBuilder<'a> {
30267    type Target = PhysicalDeviceCornerSampledImageFeaturesNV;
30268    #[inline]
30269    fn deref(&self) -> &Self::Target {
30270        &self.inner
30271    }
30272}
30273impl<'a> core::ops::DerefMut for PhysicalDeviceCornerSampledImageFeaturesNVBuilder<'a> {
30274    #[inline]
30275    fn deref_mut(&mut self) -> &mut Self::Target {
30276        &mut self.inner
30277    }
30278}
30279///Builder for [`PhysicalDeviceComputeShaderDerivativesFeaturesKHR`] with lifetime-tied pNext safety.
30280pub struct PhysicalDeviceComputeShaderDerivativesFeaturesKHRBuilder<'a> {
30281    inner: PhysicalDeviceComputeShaderDerivativesFeaturesKHR,
30282    _marker: core::marker::PhantomData<&'a ()>,
30283}
30284impl PhysicalDeviceComputeShaderDerivativesFeaturesKHR {
30285    /// Start building this struct; `s_type` is already set to the correct variant.
30286    #[inline]
30287    pub fn builder<'a>() -> PhysicalDeviceComputeShaderDerivativesFeaturesKHRBuilder<
30288        'a,
30289    > {
30290        PhysicalDeviceComputeShaderDerivativesFeaturesKHRBuilder {
30291            inner: PhysicalDeviceComputeShaderDerivativesFeaturesKHR {
30292                s_type: StructureType::from_raw(1000201000i32),
30293                ..Default::default()
30294            },
30295            _marker: core::marker::PhantomData,
30296        }
30297    }
30298}
30299impl<'a> PhysicalDeviceComputeShaderDerivativesFeaturesKHRBuilder<'a> {
30300    #[inline]
30301    pub fn compute_derivative_group_quads(mut self, value: bool) -> Self {
30302        self.inner.compute_derivative_group_quads = value as u32;
30303        self
30304    }
30305    #[inline]
30306    pub fn compute_derivative_group_linear(mut self, value: bool) -> Self {
30307        self.inner.compute_derivative_group_linear = value as u32;
30308        self
30309    }
30310    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceComputeShaderDerivativesFeaturesKHR`]'s **Extended By** section for valid types.
30311    #[inline]
30312    pub fn push_next<T: ExtendsPhysicalDeviceComputeShaderDerivativesFeaturesKHR>(
30313        mut self,
30314        next: &'a mut T,
30315    ) -> Self {
30316        unsafe {
30317            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
30318            (*next_ptr).p_next = self.inner.p_next as *mut _;
30319            self.inner.p_next = <*mut BaseOutStructure>::cast::<
30320                core::ffi::c_void,
30321            >(next_ptr);
30322        }
30323        self
30324    }
30325}
30326impl<'a> core::ops::Deref
30327for PhysicalDeviceComputeShaderDerivativesFeaturesKHRBuilder<'a> {
30328    type Target = PhysicalDeviceComputeShaderDerivativesFeaturesKHR;
30329    #[inline]
30330    fn deref(&self) -> &Self::Target {
30331        &self.inner
30332    }
30333}
30334impl<'a> core::ops::DerefMut
30335for PhysicalDeviceComputeShaderDerivativesFeaturesKHRBuilder<'a> {
30336    #[inline]
30337    fn deref_mut(&mut self) -> &mut Self::Target {
30338        &mut self.inner
30339    }
30340}
30341///Builder for [`PhysicalDeviceComputeShaderDerivativesPropertiesKHR`] with lifetime-tied pNext safety.
30342pub struct PhysicalDeviceComputeShaderDerivativesPropertiesKHRBuilder<'a> {
30343    inner: PhysicalDeviceComputeShaderDerivativesPropertiesKHR,
30344    _marker: core::marker::PhantomData<&'a ()>,
30345}
30346impl PhysicalDeviceComputeShaderDerivativesPropertiesKHR {
30347    /// Start building this struct; `s_type` is already set to the correct variant.
30348    #[inline]
30349    pub fn builder<'a>() -> PhysicalDeviceComputeShaderDerivativesPropertiesKHRBuilder<
30350        'a,
30351    > {
30352        PhysicalDeviceComputeShaderDerivativesPropertiesKHRBuilder {
30353            inner: PhysicalDeviceComputeShaderDerivativesPropertiesKHR {
30354                s_type: StructureType::from_raw(1000511000i32),
30355                ..Default::default()
30356            },
30357            _marker: core::marker::PhantomData,
30358        }
30359    }
30360}
30361impl<'a> PhysicalDeviceComputeShaderDerivativesPropertiesKHRBuilder<'a> {
30362    #[inline]
30363    pub fn mesh_and_task_shader_derivatives(mut self, value: bool) -> Self {
30364        self.inner.mesh_and_task_shader_derivatives = value as u32;
30365        self
30366    }
30367}
30368impl<'a> core::ops::Deref
30369for PhysicalDeviceComputeShaderDerivativesPropertiesKHRBuilder<'a> {
30370    type Target = PhysicalDeviceComputeShaderDerivativesPropertiesKHR;
30371    #[inline]
30372    fn deref(&self) -> &Self::Target {
30373        &self.inner
30374    }
30375}
30376impl<'a> core::ops::DerefMut
30377for PhysicalDeviceComputeShaderDerivativesPropertiesKHRBuilder<'a> {
30378    #[inline]
30379    fn deref_mut(&mut self) -> &mut Self::Target {
30380        &mut self.inner
30381    }
30382}
30383///Builder for [`PhysicalDeviceShaderImageFootprintFeaturesNV`] with lifetime-tied pNext safety.
30384pub struct PhysicalDeviceShaderImageFootprintFeaturesNVBuilder<'a> {
30385    inner: PhysicalDeviceShaderImageFootprintFeaturesNV,
30386    _marker: core::marker::PhantomData<&'a ()>,
30387}
30388impl PhysicalDeviceShaderImageFootprintFeaturesNV {
30389    /// Start building this struct; `s_type` is already set to the correct variant.
30390    #[inline]
30391    pub fn builder<'a>() -> PhysicalDeviceShaderImageFootprintFeaturesNVBuilder<'a> {
30392        PhysicalDeviceShaderImageFootprintFeaturesNVBuilder {
30393            inner: PhysicalDeviceShaderImageFootprintFeaturesNV {
30394                s_type: StructureType::from_raw(1000204000i32),
30395                ..Default::default()
30396            },
30397            _marker: core::marker::PhantomData,
30398        }
30399    }
30400}
30401impl<'a> PhysicalDeviceShaderImageFootprintFeaturesNVBuilder<'a> {
30402    #[inline]
30403    pub fn image_footprint(mut self, value: bool) -> Self {
30404        self.inner.image_footprint = value as u32;
30405        self
30406    }
30407    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderImageFootprintFeaturesNV`]'s **Extended By** section for valid types.
30408    #[inline]
30409    pub fn push_next<T: ExtendsPhysicalDeviceShaderImageFootprintFeaturesNV>(
30410        mut self,
30411        next: &'a mut T,
30412    ) -> Self {
30413        unsafe {
30414            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
30415            (*next_ptr).p_next = self.inner.p_next as *mut _;
30416            self.inner.p_next = <*mut BaseOutStructure>::cast::<
30417                core::ffi::c_void,
30418            >(next_ptr);
30419        }
30420        self
30421    }
30422}
30423impl<'a> core::ops::Deref for PhysicalDeviceShaderImageFootprintFeaturesNVBuilder<'a> {
30424    type Target = PhysicalDeviceShaderImageFootprintFeaturesNV;
30425    #[inline]
30426    fn deref(&self) -> &Self::Target {
30427        &self.inner
30428    }
30429}
30430impl<'a> core::ops::DerefMut
30431for PhysicalDeviceShaderImageFootprintFeaturesNVBuilder<'a> {
30432    #[inline]
30433    fn deref_mut(&mut self) -> &mut Self::Target {
30434        &mut self.inner
30435    }
30436}
30437///Builder for [`PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV`] with lifetime-tied pNext safety.
30438pub struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder<'a> {
30439    inner: PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV,
30440    _marker: core::marker::PhantomData<&'a ()>,
30441}
30442impl PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
30443    /// Start building this struct; `s_type` is already set to the correct variant.
30444    #[inline]
30445    pub fn builder<'a>() -> PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder<
30446        'a,
30447    > {
30448        PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder {
30449            inner: PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
30450                s_type: StructureType::from_raw(1000240000i32),
30451                ..Default::default()
30452            },
30453            _marker: core::marker::PhantomData,
30454        }
30455    }
30456}
30457impl<'a> PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder<'a> {
30458    #[inline]
30459    pub fn dedicated_allocation_image_aliasing(mut self, value: bool) -> Self {
30460        self.inner.dedicated_allocation_image_aliasing = value as u32;
30461        self
30462    }
30463    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV`]'s **Extended By** section for valid types.
30464    #[inline]
30465    pub fn push_next<T: ExtendsPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>(
30466        mut self,
30467        next: &'a mut T,
30468    ) -> Self {
30469        unsafe {
30470            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
30471            (*next_ptr).p_next = self.inner.p_next as *mut _;
30472            self.inner.p_next = <*mut BaseOutStructure>::cast::<
30473                core::ffi::c_void,
30474            >(next_ptr);
30475        }
30476        self
30477    }
30478}
30479impl<'a> core::ops::Deref
30480for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder<'a> {
30481    type Target = PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
30482    #[inline]
30483    fn deref(&self) -> &Self::Target {
30484        &self.inner
30485    }
30486}
30487impl<'a> core::ops::DerefMut
30488for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder<'a> {
30489    #[inline]
30490    fn deref_mut(&mut self) -> &mut Self::Target {
30491        &mut self.inner
30492    }
30493}
30494///Builder for [`PhysicalDeviceCopyMemoryIndirectFeaturesKHR`] with lifetime-tied pNext safety.
30495pub struct PhysicalDeviceCopyMemoryIndirectFeaturesKHRBuilder<'a> {
30496    inner: PhysicalDeviceCopyMemoryIndirectFeaturesKHR,
30497    _marker: core::marker::PhantomData<&'a ()>,
30498}
30499impl PhysicalDeviceCopyMemoryIndirectFeaturesKHR {
30500    /// Start building this struct; `s_type` is already set to the correct variant.
30501    #[inline]
30502    pub fn builder<'a>() -> PhysicalDeviceCopyMemoryIndirectFeaturesKHRBuilder<'a> {
30503        PhysicalDeviceCopyMemoryIndirectFeaturesKHRBuilder {
30504            inner: PhysicalDeviceCopyMemoryIndirectFeaturesKHR {
30505                s_type: StructureType::from_raw(1000549000i32),
30506                ..Default::default()
30507            },
30508            _marker: core::marker::PhantomData,
30509        }
30510    }
30511}
30512impl<'a> PhysicalDeviceCopyMemoryIndirectFeaturesKHRBuilder<'a> {
30513    #[inline]
30514    pub fn indirect_memory_copy(mut self, value: bool) -> Self {
30515        self.inner.indirect_memory_copy = value as u32;
30516        self
30517    }
30518    #[inline]
30519    pub fn indirect_memory_to_image_copy(mut self, value: bool) -> Self {
30520        self.inner.indirect_memory_to_image_copy = value as u32;
30521        self
30522    }
30523    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceCopyMemoryIndirectFeaturesKHR`]'s **Extended By** section for valid types.
30524    #[inline]
30525    pub fn push_next<T: ExtendsPhysicalDeviceCopyMemoryIndirectFeaturesKHR>(
30526        mut self,
30527        next: &'a mut T,
30528    ) -> Self {
30529        unsafe {
30530            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
30531            (*next_ptr).p_next = self.inner.p_next as *mut _;
30532            self.inner.p_next = <*mut BaseOutStructure>::cast::<
30533                core::ffi::c_void,
30534            >(next_ptr);
30535        }
30536        self
30537    }
30538}
30539impl<'a> core::ops::Deref for PhysicalDeviceCopyMemoryIndirectFeaturesKHRBuilder<'a> {
30540    type Target = PhysicalDeviceCopyMemoryIndirectFeaturesKHR;
30541    #[inline]
30542    fn deref(&self) -> &Self::Target {
30543        &self.inner
30544    }
30545}
30546impl<'a> core::ops::DerefMut for PhysicalDeviceCopyMemoryIndirectFeaturesKHRBuilder<'a> {
30547    #[inline]
30548    fn deref_mut(&mut self) -> &mut Self::Target {
30549        &mut self.inner
30550    }
30551}
30552///Builder for [`PhysicalDeviceCopyMemoryIndirectFeaturesNV`] with lifetime-tied pNext safety.
30553pub struct PhysicalDeviceCopyMemoryIndirectFeaturesNVBuilder<'a> {
30554    inner: PhysicalDeviceCopyMemoryIndirectFeaturesNV,
30555    _marker: core::marker::PhantomData<&'a ()>,
30556}
30557impl PhysicalDeviceCopyMemoryIndirectFeaturesNV {
30558    /// Start building this struct; `s_type` is already set to the correct variant.
30559    #[inline]
30560    pub fn builder<'a>() -> PhysicalDeviceCopyMemoryIndirectFeaturesNVBuilder<'a> {
30561        PhysicalDeviceCopyMemoryIndirectFeaturesNVBuilder {
30562            inner: PhysicalDeviceCopyMemoryIndirectFeaturesNV {
30563                s_type: StructureType::from_raw(1000426000i32),
30564                ..Default::default()
30565            },
30566            _marker: core::marker::PhantomData,
30567        }
30568    }
30569}
30570impl<'a> PhysicalDeviceCopyMemoryIndirectFeaturesNVBuilder<'a> {
30571    #[inline]
30572    pub fn indirect_copy(mut self, value: bool) -> Self {
30573        self.inner.indirect_copy = value as u32;
30574        self
30575    }
30576    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceCopyMemoryIndirectFeaturesNV`]'s **Extended By** section for valid types.
30577    #[inline]
30578    pub fn push_next<T: ExtendsPhysicalDeviceCopyMemoryIndirectFeaturesNV>(
30579        mut self,
30580        next: &'a mut T,
30581    ) -> Self {
30582        unsafe {
30583            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
30584            (*next_ptr).p_next = self.inner.p_next as *mut _;
30585            self.inner.p_next = <*mut BaseOutStructure>::cast::<
30586                core::ffi::c_void,
30587            >(next_ptr);
30588        }
30589        self
30590    }
30591}
30592impl<'a> core::ops::Deref for PhysicalDeviceCopyMemoryIndirectFeaturesNVBuilder<'a> {
30593    type Target = PhysicalDeviceCopyMemoryIndirectFeaturesNV;
30594    #[inline]
30595    fn deref(&self) -> &Self::Target {
30596        &self.inner
30597    }
30598}
30599impl<'a> core::ops::DerefMut for PhysicalDeviceCopyMemoryIndirectFeaturesNVBuilder<'a> {
30600    #[inline]
30601    fn deref_mut(&mut self) -> &mut Self::Target {
30602        &mut self.inner
30603    }
30604}
30605///Builder for [`PhysicalDeviceCopyMemoryIndirectPropertiesKHR`] with lifetime-tied pNext safety.
30606pub struct PhysicalDeviceCopyMemoryIndirectPropertiesKHRBuilder<'a> {
30607    inner: PhysicalDeviceCopyMemoryIndirectPropertiesKHR,
30608    _marker: core::marker::PhantomData<&'a ()>,
30609}
30610impl PhysicalDeviceCopyMemoryIndirectPropertiesKHR {
30611    /// Start building this struct; `s_type` is already set to the correct variant.
30612    #[inline]
30613    pub fn builder<'a>() -> PhysicalDeviceCopyMemoryIndirectPropertiesKHRBuilder<'a> {
30614        PhysicalDeviceCopyMemoryIndirectPropertiesKHRBuilder {
30615            inner: PhysicalDeviceCopyMemoryIndirectPropertiesKHR {
30616                s_type: StructureType::from_raw(1000426001i32),
30617                ..Default::default()
30618            },
30619            _marker: core::marker::PhantomData,
30620        }
30621    }
30622}
30623impl<'a> PhysicalDeviceCopyMemoryIndirectPropertiesKHRBuilder<'a> {
30624    #[inline]
30625    pub fn supported_queues(mut self, value: QueueFlags) -> Self {
30626        self.inner.supported_queues = value;
30627        self
30628    }
30629}
30630impl<'a> core::ops::Deref for PhysicalDeviceCopyMemoryIndirectPropertiesKHRBuilder<'a> {
30631    type Target = PhysicalDeviceCopyMemoryIndirectPropertiesKHR;
30632    #[inline]
30633    fn deref(&self) -> &Self::Target {
30634        &self.inner
30635    }
30636}
30637impl<'a> core::ops::DerefMut
30638for PhysicalDeviceCopyMemoryIndirectPropertiesKHRBuilder<'a> {
30639    #[inline]
30640    fn deref_mut(&mut self) -> &mut Self::Target {
30641        &mut self.inner
30642    }
30643}
30644///Builder for [`PhysicalDeviceMemoryDecompressionFeaturesEXT`] with lifetime-tied pNext safety.
30645pub struct PhysicalDeviceMemoryDecompressionFeaturesEXTBuilder<'a> {
30646    inner: PhysicalDeviceMemoryDecompressionFeaturesEXT,
30647    _marker: core::marker::PhantomData<&'a ()>,
30648}
30649impl PhysicalDeviceMemoryDecompressionFeaturesEXT {
30650    /// Start building this struct; `s_type` is already set to the correct variant.
30651    #[inline]
30652    pub fn builder<'a>() -> PhysicalDeviceMemoryDecompressionFeaturesEXTBuilder<'a> {
30653        PhysicalDeviceMemoryDecompressionFeaturesEXTBuilder {
30654            inner: PhysicalDeviceMemoryDecompressionFeaturesEXT {
30655                s_type: StructureType::from_raw(1000427000i32),
30656                ..Default::default()
30657            },
30658            _marker: core::marker::PhantomData,
30659        }
30660    }
30661}
30662impl<'a> PhysicalDeviceMemoryDecompressionFeaturesEXTBuilder<'a> {
30663    #[inline]
30664    pub fn memory_decompression(mut self, value: bool) -> Self {
30665        self.inner.memory_decompression = value as u32;
30666        self
30667    }
30668    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceMemoryDecompressionFeaturesEXT`]'s **Extended By** section for valid types.
30669    #[inline]
30670    pub fn push_next<T: ExtendsPhysicalDeviceMemoryDecompressionFeaturesEXT>(
30671        mut self,
30672        next: &'a mut T,
30673    ) -> Self {
30674        unsafe {
30675            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
30676            (*next_ptr).p_next = self.inner.p_next as *mut _;
30677            self.inner.p_next = <*mut BaseOutStructure>::cast::<
30678                core::ffi::c_void,
30679            >(next_ptr);
30680        }
30681        self
30682    }
30683}
30684impl<'a> core::ops::Deref for PhysicalDeviceMemoryDecompressionFeaturesEXTBuilder<'a> {
30685    type Target = PhysicalDeviceMemoryDecompressionFeaturesEXT;
30686    #[inline]
30687    fn deref(&self) -> &Self::Target {
30688        &self.inner
30689    }
30690}
30691impl<'a> core::ops::DerefMut
30692for PhysicalDeviceMemoryDecompressionFeaturesEXTBuilder<'a> {
30693    #[inline]
30694    fn deref_mut(&mut self) -> &mut Self::Target {
30695        &mut self.inner
30696    }
30697}
30698///Builder for [`PhysicalDeviceMemoryDecompressionPropertiesEXT`] with lifetime-tied pNext safety.
30699pub struct PhysicalDeviceMemoryDecompressionPropertiesEXTBuilder<'a> {
30700    inner: PhysicalDeviceMemoryDecompressionPropertiesEXT,
30701    _marker: core::marker::PhantomData<&'a ()>,
30702}
30703impl PhysicalDeviceMemoryDecompressionPropertiesEXT {
30704    /// Start building this struct; `s_type` is already set to the correct variant.
30705    #[inline]
30706    pub fn builder<'a>() -> PhysicalDeviceMemoryDecompressionPropertiesEXTBuilder<'a> {
30707        PhysicalDeviceMemoryDecompressionPropertiesEXTBuilder {
30708            inner: PhysicalDeviceMemoryDecompressionPropertiesEXT {
30709                s_type: StructureType::from_raw(1000427001i32),
30710                ..Default::default()
30711            },
30712            _marker: core::marker::PhantomData,
30713        }
30714    }
30715}
30716impl<'a> PhysicalDeviceMemoryDecompressionPropertiesEXTBuilder<'a> {
30717    #[inline]
30718    pub fn decompression_methods(
30719        mut self,
30720        value: MemoryDecompressionMethodFlagsEXT,
30721    ) -> Self {
30722        self.inner.decompression_methods = value;
30723        self
30724    }
30725    #[inline]
30726    pub fn max_decompression_indirect_count(mut self, value: u64) -> Self {
30727        self.inner.max_decompression_indirect_count = value;
30728        self
30729    }
30730}
30731impl<'a> core::ops::Deref for PhysicalDeviceMemoryDecompressionPropertiesEXTBuilder<'a> {
30732    type Target = PhysicalDeviceMemoryDecompressionPropertiesEXT;
30733    #[inline]
30734    fn deref(&self) -> &Self::Target {
30735        &self.inner
30736    }
30737}
30738impl<'a> core::ops::DerefMut
30739for PhysicalDeviceMemoryDecompressionPropertiesEXTBuilder<'a> {
30740    #[inline]
30741    fn deref_mut(&mut self) -> &mut Self::Target {
30742        &mut self.inner
30743    }
30744}
30745///Builder for [`ShadingRatePaletteNV`].
30746pub struct ShadingRatePaletteNVBuilder<'a> {
30747    inner: ShadingRatePaletteNV,
30748    _marker: core::marker::PhantomData<&'a ()>,
30749}
30750impl ShadingRatePaletteNV {
30751    /// Start building this struct.
30752    #[inline]
30753    pub fn builder<'a>() -> ShadingRatePaletteNVBuilder<'a> {
30754        ShadingRatePaletteNVBuilder {
30755            inner: ShadingRatePaletteNV {
30756                ..Default::default()
30757            },
30758            _marker: core::marker::PhantomData,
30759        }
30760    }
30761}
30762impl<'a> ShadingRatePaletteNVBuilder<'a> {
30763    #[inline]
30764    pub fn shading_rate_palette_entries(
30765        mut self,
30766        slice: &'a [ShadingRatePaletteEntryNV],
30767    ) -> Self {
30768        self.inner.shading_rate_palette_entry_count = slice.len() as u32;
30769        self.inner.p_shading_rate_palette_entries = slice.as_ptr();
30770        self
30771    }
30772}
30773impl<'a> core::ops::Deref for ShadingRatePaletteNVBuilder<'a> {
30774    type Target = ShadingRatePaletteNV;
30775    #[inline]
30776    fn deref(&self) -> &Self::Target {
30777        &self.inner
30778    }
30779}
30780impl<'a> core::ops::DerefMut for ShadingRatePaletteNVBuilder<'a> {
30781    #[inline]
30782    fn deref_mut(&mut self) -> &mut Self::Target {
30783        &mut self.inner
30784    }
30785}
30786///Builder for [`PipelineViewportShadingRateImageStateCreateInfoNV`] with lifetime-tied pNext safety.
30787pub struct PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a> {
30788    inner: PipelineViewportShadingRateImageStateCreateInfoNV,
30789    _marker: core::marker::PhantomData<&'a ()>,
30790}
30791impl PipelineViewportShadingRateImageStateCreateInfoNV {
30792    /// Start building this struct; `s_type` is already set to the correct variant.
30793    #[inline]
30794    pub fn builder<'a>() -> PipelineViewportShadingRateImageStateCreateInfoNVBuilder<
30795        'a,
30796    > {
30797        PipelineViewportShadingRateImageStateCreateInfoNVBuilder {
30798            inner: PipelineViewportShadingRateImageStateCreateInfoNV {
30799                s_type: StructureType::from_raw(1000164000i32),
30800                ..Default::default()
30801            },
30802            _marker: core::marker::PhantomData,
30803        }
30804    }
30805}
30806impl<'a> PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a> {
30807    #[inline]
30808    pub fn shading_rate_image_enable(mut self, value: bool) -> Self {
30809        self.inner.shading_rate_image_enable = value as u32;
30810        self
30811    }
30812    #[inline]
30813    pub fn shading_rate_palettes(mut self, slice: &'a [ShadingRatePaletteNV]) -> Self {
30814        self.inner.viewport_count = slice.len() as u32;
30815        self.inner.p_shading_rate_palettes = slice.as_ptr();
30816        self
30817    }
30818    ///Prepend a struct to the pNext chain. See [`PipelineViewportShadingRateImageStateCreateInfoNV`]'s **Extended By** section for valid types.
30819    #[inline]
30820    pub fn push_next<T: ExtendsPipelineViewportShadingRateImageStateCreateInfoNV>(
30821        mut self,
30822        next: &'a mut T,
30823    ) -> Self {
30824        unsafe {
30825            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
30826            (*next_ptr).p_next = self.inner.p_next as *mut _;
30827            self.inner.p_next = <*mut BaseOutStructure>::cast::<
30828                core::ffi::c_void,
30829            >(next_ptr) as *const _;
30830        }
30831        self
30832    }
30833}
30834impl<'a> core::ops::Deref
30835for PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a> {
30836    type Target = PipelineViewportShadingRateImageStateCreateInfoNV;
30837    #[inline]
30838    fn deref(&self) -> &Self::Target {
30839        &self.inner
30840    }
30841}
30842impl<'a> core::ops::DerefMut
30843for PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a> {
30844    #[inline]
30845    fn deref_mut(&mut self) -> &mut Self::Target {
30846        &mut self.inner
30847    }
30848}
30849///Builder for [`PhysicalDeviceShadingRateImageFeaturesNV`] with lifetime-tied pNext safety.
30850pub struct PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
30851    inner: PhysicalDeviceShadingRateImageFeaturesNV,
30852    _marker: core::marker::PhantomData<&'a ()>,
30853}
30854impl PhysicalDeviceShadingRateImageFeaturesNV {
30855    /// Start building this struct; `s_type` is already set to the correct variant.
30856    #[inline]
30857    pub fn builder<'a>() -> PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
30858        PhysicalDeviceShadingRateImageFeaturesNVBuilder {
30859            inner: PhysicalDeviceShadingRateImageFeaturesNV {
30860                s_type: StructureType::from_raw(1000164001i32),
30861                ..Default::default()
30862            },
30863            _marker: core::marker::PhantomData,
30864        }
30865    }
30866}
30867impl<'a> PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
30868    #[inline]
30869    pub fn shading_rate_image(mut self, value: bool) -> Self {
30870        self.inner.shading_rate_image = value as u32;
30871        self
30872    }
30873    #[inline]
30874    pub fn shading_rate_coarse_sample_order(mut self, value: bool) -> Self {
30875        self.inner.shading_rate_coarse_sample_order = value as u32;
30876        self
30877    }
30878    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShadingRateImageFeaturesNV`]'s **Extended By** section for valid types.
30879    #[inline]
30880    pub fn push_next<T: ExtendsPhysicalDeviceShadingRateImageFeaturesNV>(
30881        mut self,
30882        next: &'a mut T,
30883    ) -> Self {
30884        unsafe {
30885            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
30886            (*next_ptr).p_next = self.inner.p_next as *mut _;
30887            self.inner.p_next = <*mut BaseOutStructure>::cast::<
30888                core::ffi::c_void,
30889            >(next_ptr);
30890        }
30891        self
30892    }
30893}
30894impl<'a> core::ops::Deref for PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
30895    type Target = PhysicalDeviceShadingRateImageFeaturesNV;
30896    #[inline]
30897    fn deref(&self) -> &Self::Target {
30898        &self.inner
30899    }
30900}
30901impl<'a> core::ops::DerefMut for PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
30902    #[inline]
30903    fn deref_mut(&mut self) -> &mut Self::Target {
30904        &mut self.inner
30905    }
30906}
30907///Builder for [`PhysicalDeviceShadingRateImagePropertiesNV`] with lifetime-tied pNext safety.
30908pub struct PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
30909    inner: PhysicalDeviceShadingRateImagePropertiesNV,
30910    _marker: core::marker::PhantomData<&'a ()>,
30911}
30912impl PhysicalDeviceShadingRateImagePropertiesNV {
30913    /// Start building this struct; `s_type` is already set to the correct variant.
30914    #[inline]
30915    pub fn builder<'a>() -> PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
30916        PhysicalDeviceShadingRateImagePropertiesNVBuilder {
30917            inner: PhysicalDeviceShadingRateImagePropertiesNV {
30918                s_type: StructureType::from_raw(1000164002i32),
30919                ..Default::default()
30920            },
30921            _marker: core::marker::PhantomData,
30922        }
30923    }
30924}
30925impl<'a> PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
30926    #[inline]
30927    pub fn shading_rate_texel_size(mut self, value: Extent2D) -> Self {
30928        self.inner.shading_rate_texel_size = value;
30929        self
30930    }
30931    #[inline]
30932    pub fn shading_rate_palette_size(mut self, value: u32) -> Self {
30933        self.inner.shading_rate_palette_size = value;
30934        self
30935    }
30936    #[inline]
30937    pub fn shading_rate_max_coarse_samples(mut self, value: u32) -> Self {
30938        self.inner.shading_rate_max_coarse_samples = value;
30939        self
30940    }
30941}
30942impl<'a> core::ops::Deref for PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
30943    type Target = PhysicalDeviceShadingRateImagePropertiesNV;
30944    #[inline]
30945    fn deref(&self) -> &Self::Target {
30946        &self.inner
30947    }
30948}
30949impl<'a> core::ops::DerefMut for PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
30950    #[inline]
30951    fn deref_mut(&mut self) -> &mut Self::Target {
30952        &mut self.inner
30953    }
30954}
30955///Builder for [`PhysicalDeviceInvocationMaskFeaturesHUAWEI`] with lifetime-tied pNext safety.
30956pub struct PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder<'a> {
30957    inner: PhysicalDeviceInvocationMaskFeaturesHUAWEI,
30958    _marker: core::marker::PhantomData<&'a ()>,
30959}
30960impl PhysicalDeviceInvocationMaskFeaturesHUAWEI {
30961    /// Start building this struct; `s_type` is already set to the correct variant.
30962    #[inline]
30963    pub fn builder<'a>() -> PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder<'a> {
30964        PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder {
30965            inner: PhysicalDeviceInvocationMaskFeaturesHUAWEI {
30966                s_type: StructureType::from_raw(1000370000i32),
30967                ..Default::default()
30968            },
30969            _marker: core::marker::PhantomData,
30970        }
30971    }
30972}
30973impl<'a> PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder<'a> {
30974    #[inline]
30975    pub fn invocation_mask(mut self, value: bool) -> Self {
30976        self.inner.invocation_mask = value as u32;
30977        self
30978    }
30979    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceInvocationMaskFeaturesHUAWEI`]'s **Extended By** section for valid types.
30980    #[inline]
30981    pub fn push_next<T: ExtendsPhysicalDeviceInvocationMaskFeaturesHUAWEI>(
30982        mut self,
30983        next: &'a mut T,
30984    ) -> Self {
30985        unsafe {
30986            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
30987            (*next_ptr).p_next = self.inner.p_next as *mut _;
30988            self.inner.p_next = <*mut BaseOutStructure>::cast::<
30989                core::ffi::c_void,
30990            >(next_ptr);
30991        }
30992        self
30993    }
30994}
30995impl<'a> core::ops::Deref for PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder<'a> {
30996    type Target = PhysicalDeviceInvocationMaskFeaturesHUAWEI;
30997    #[inline]
30998    fn deref(&self) -> &Self::Target {
30999        &self.inner
31000    }
31001}
31002impl<'a> core::ops::DerefMut for PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder<'a> {
31003    #[inline]
31004    fn deref_mut(&mut self) -> &mut Self::Target {
31005        &mut self.inner
31006    }
31007}
31008///Builder for [`CoarseSampleLocationNV`].
31009pub struct CoarseSampleLocationNVBuilder {
31010    inner: CoarseSampleLocationNV,
31011}
31012impl CoarseSampleLocationNV {
31013    /// Start building this struct.
31014    #[inline]
31015    pub fn builder() -> CoarseSampleLocationNVBuilder {
31016        CoarseSampleLocationNVBuilder {
31017            inner: CoarseSampleLocationNV {
31018                ..Default::default()
31019            },
31020        }
31021    }
31022}
31023impl CoarseSampleLocationNVBuilder {
31024    #[inline]
31025    pub fn pixel_x(mut self, value: u32) -> Self {
31026        self.inner.pixel_x = value;
31027        self
31028    }
31029    #[inline]
31030    pub fn pixel_y(mut self, value: u32) -> Self {
31031        self.inner.pixel_y = value;
31032        self
31033    }
31034    #[inline]
31035    pub fn sample(mut self, value: u32) -> Self {
31036        self.inner.sample = value;
31037        self
31038    }
31039}
31040impl core::ops::Deref for CoarseSampleLocationNVBuilder {
31041    type Target = CoarseSampleLocationNV;
31042    #[inline]
31043    fn deref(&self) -> &Self::Target {
31044        &self.inner
31045    }
31046}
31047impl core::ops::DerefMut for CoarseSampleLocationNVBuilder {
31048    #[inline]
31049    fn deref_mut(&mut self) -> &mut Self::Target {
31050        &mut self.inner
31051    }
31052}
31053///Builder for [`CoarseSampleOrderCustomNV`].
31054pub struct CoarseSampleOrderCustomNVBuilder<'a> {
31055    inner: CoarseSampleOrderCustomNV,
31056    _marker: core::marker::PhantomData<&'a ()>,
31057}
31058impl CoarseSampleOrderCustomNV {
31059    /// Start building this struct.
31060    #[inline]
31061    pub fn builder<'a>() -> CoarseSampleOrderCustomNVBuilder<'a> {
31062        CoarseSampleOrderCustomNVBuilder {
31063            inner: CoarseSampleOrderCustomNV {
31064                ..Default::default()
31065            },
31066            _marker: core::marker::PhantomData,
31067        }
31068    }
31069}
31070impl<'a> CoarseSampleOrderCustomNVBuilder<'a> {
31071    #[inline]
31072    pub fn shading_rate(mut self, value: ShadingRatePaletteEntryNV) -> Self {
31073        self.inner.shading_rate = value;
31074        self
31075    }
31076    #[inline]
31077    pub fn sample_count(mut self, value: u32) -> Self {
31078        self.inner.sample_count = value;
31079        self
31080    }
31081    #[inline]
31082    pub fn sample_locations(mut self, slice: &'a [CoarseSampleLocationNV]) -> Self {
31083        self.inner.sample_location_count = slice.len() as u32;
31084        self.inner.p_sample_locations = slice.as_ptr();
31085        self
31086    }
31087}
31088impl<'a> core::ops::Deref for CoarseSampleOrderCustomNVBuilder<'a> {
31089    type Target = CoarseSampleOrderCustomNV;
31090    #[inline]
31091    fn deref(&self) -> &Self::Target {
31092        &self.inner
31093    }
31094}
31095impl<'a> core::ops::DerefMut for CoarseSampleOrderCustomNVBuilder<'a> {
31096    #[inline]
31097    fn deref_mut(&mut self) -> &mut Self::Target {
31098        &mut self.inner
31099    }
31100}
31101///Builder for [`PipelineViewportCoarseSampleOrderStateCreateInfoNV`] with lifetime-tied pNext safety.
31102pub struct PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a> {
31103    inner: PipelineViewportCoarseSampleOrderStateCreateInfoNV,
31104    _marker: core::marker::PhantomData<&'a ()>,
31105}
31106impl PipelineViewportCoarseSampleOrderStateCreateInfoNV {
31107    /// Start building this struct; `s_type` is already set to the correct variant.
31108    #[inline]
31109    pub fn builder<'a>() -> PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<
31110        'a,
31111    > {
31112        PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder {
31113            inner: PipelineViewportCoarseSampleOrderStateCreateInfoNV {
31114                s_type: StructureType::from_raw(1000164005i32),
31115                ..Default::default()
31116            },
31117            _marker: core::marker::PhantomData,
31118        }
31119    }
31120}
31121impl<'a> PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a> {
31122    #[inline]
31123    pub fn sample_order_type(mut self, value: CoarseSampleOrderTypeNV) -> Self {
31124        self.inner.sample_order_type = value;
31125        self
31126    }
31127    #[inline]
31128    pub fn custom_sample_orders(
31129        mut self,
31130        slice: &'a [CoarseSampleOrderCustomNV],
31131    ) -> Self {
31132        self.inner.custom_sample_order_count = slice.len() as u32;
31133        self.inner.p_custom_sample_orders = slice.as_ptr();
31134        self
31135    }
31136    ///Prepend a struct to the pNext chain. See [`PipelineViewportCoarseSampleOrderStateCreateInfoNV`]'s **Extended By** section for valid types.
31137    #[inline]
31138    pub fn push_next<T: ExtendsPipelineViewportCoarseSampleOrderStateCreateInfoNV>(
31139        mut self,
31140        next: &'a mut T,
31141    ) -> Self {
31142        unsafe {
31143            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
31144            (*next_ptr).p_next = self.inner.p_next as *mut _;
31145            self.inner.p_next = <*mut BaseOutStructure>::cast::<
31146                core::ffi::c_void,
31147            >(next_ptr) as *const _;
31148        }
31149        self
31150    }
31151}
31152impl<'a> core::ops::Deref
31153for PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a> {
31154    type Target = PipelineViewportCoarseSampleOrderStateCreateInfoNV;
31155    #[inline]
31156    fn deref(&self) -> &Self::Target {
31157        &self.inner
31158    }
31159}
31160impl<'a> core::ops::DerefMut
31161for PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a> {
31162    #[inline]
31163    fn deref_mut(&mut self) -> &mut Self::Target {
31164        &mut self.inner
31165    }
31166}
31167///Builder for [`PhysicalDeviceMeshShaderFeaturesNV`] with lifetime-tied pNext safety.
31168pub struct PhysicalDeviceMeshShaderFeaturesNVBuilder<'a> {
31169    inner: PhysicalDeviceMeshShaderFeaturesNV,
31170    _marker: core::marker::PhantomData<&'a ()>,
31171}
31172impl PhysicalDeviceMeshShaderFeaturesNV {
31173    /// Start building this struct; `s_type` is already set to the correct variant.
31174    #[inline]
31175    pub fn builder<'a>() -> PhysicalDeviceMeshShaderFeaturesNVBuilder<'a> {
31176        PhysicalDeviceMeshShaderFeaturesNVBuilder {
31177            inner: PhysicalDeviceMeshShaderFeaturesNV {
31178                s_type: StructureType::from_raw(1000202000i32),
31179                ..Default::default()
31180            },
31181            _marker: core::marker::PhantomData,
31182        }
31183    }
31184}
31185impl<'a> PhysicalDeviceMeshShaderFeaturesNVBuilder<'a> {
31186    #[inline]
31187    pub fn task_shader(mut self, value: bool) -> Self {
31188        self.inner.task_shader = value as u32;
31189        self
31190    }
31191    #[inline]
31192    pub fn mesh_shader(mut self, value: bool) -> Self {
31193        self.inner.mesh_shader = value as u32;
31194        self
31195    }
31196    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceMeshShaderFeaturesNV`]'s **Extended By** section for valid types.
31197    #[inline]
31198    pub fn push_next<T: ExtendsPhysicalDeviceMeshShaderFeaturesNV>(
31199        mut self,
31200        next: &'a mut T,
31201    ) -> Self {
31202        unsafe {
31203            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
31204            (*next_ptr).p_next = self.inner.p_next as *mut _;
31205            self.inner.p_next = <*mut BaseOutStructure>::cast::<
31206                core::ffi::c_void,
31207            >(next_ptr);
31208        }
31209        self
31210    }
31211}
31212impl<'a> core::ops::Deref for PhysicalDeviceMeshShaderFeaturesNVBuilder<'a> {
31213    type Target = PhysicalDeviceMeshShaderFeaturesNV;
31214    #[inline]
31215    fn deref(&self) -> &Self::Target {
31216        &self.inner
31217    }
31218}
31219impl<'a> core::ops::DerefMut for PhysicalDeviceMeshShaderFeaturesNVBuilder<'a> {
31220    #[inline]
31221    fn deref_mut(&mut self) -> &mut Self::Target {
31222        &mut self.inner
31223    }
31224}
31225///Builder for [`PhysicalDeviceMeshShaderPropertiesNV`] with lifetime-tied pNext safety.
31226pub struct PhysicalDeviceMeshShaderPropertiesNVBuilder<'a> {
31227    inner: PhysicalDeviceMeshShaderPropertiesNV,
31228    _marker: core::marker::PhantomData<&'a ()>,
31229}
31230impl PhysicalDeviceMeshShaderPropertiesNV {
31231    /// Start building this struct; `s_type` is already set to the correct variant.
31232    #[inline]
31233    pub fn builder<'a>() -> PhysicalDeviceMeshShaderPropertiesNVBuilder<'a> {
31234        PhysicalDeviceMeshShaderPropertiesNVBuilder {
31235            inner: PhysicalDeviceMeshShaderPropertiesNV {
31236                s_type: StructureType::from_raw(1000202001i32),
31237                ..Default::default()
31238            },
31239            _marker: core::marker::PhantomData,
31240        }
31241    }
31242}
31243impl<'a> PhysicalDeviceMeshShaderPropertiesNVBuilder<'a> {
31244    #[inline]
31245    pub fn max_draw_mesh_tasks_count(mut self, value: u32) -> Self {
31246        self.inner.max_draw_mesh_tasks_count = value;
31247        self
31248    }
31249    #[inline]
31250    pub fn max_task_work_group_invocations(mut self, value: u32) -> Self {
31251        self.inner.max_task_work_group_invocations = value;
31252        self
31253    }
31254    #[inline]
31255    pub fn max_task_work_group_size(mut self, value: [u32; 3usize]) -> Self {
31256        self.inner.max_task_work_group_size = value;
31257        self
31258    }
31259    #[inline]
31260    pub fn max_task_total_memory_size(mut self, value: u32) -> Self {
31261        self.inner.max_task_total_memory_size = value;
31262        self
31263    }
31264    #[inline]
31265    pub fn max_task_output_count(mut self, value: u32) -> Self {
31266        self.inner.max_task_output_count = value;
31267        self
31268    }
31269    #[inline]
31270    pub fn max_mesh_work_group_invocations(mut self, value: u32) -> Self {
31271        self.inner.max_mesh_work_group_invocations = value;
31272        self
31273    }
31274    #[inline]
31275    pub fn max_mesh_work_group_size(mut self, value: [u32; 3usize]) -> Self {
31276        self.inner.max_mesh_work_group_size = value;
31277        self
31278    }
31279    #[inline]
31280    pub fn max_mesh_total_memory_size(mut self, value: u32) -> Self {
31281        self.inner.max_mesh_total_memory_size = value;
31282        self
31283    }
31284    #[inline]
31285    pub fn max_mesh_output_vertices(mut self, value: u32) -> Self {
31286        self.inner.max_mesh_output_vertices = value;
31287        self
31288    }
31289    #[inline]
31290    pub fn max_mesh_output_primitives(mut self, value: u32) -> Self {
31291        self.inner.max_mesh_output_primitives = value;
31292        self
31293    }
31294    #[inline]
31295    pub fn max_mesh_multiview_view_count(mut self, value: u32) -> Self {
31296        self.inner.max_mesh_multiview_view_count = value;
31297        self
31298    }
31299    #[inline]
31300    pub fn mesh_output_per_vertex_granularity(mut self, value: u32) -> Self {
31301        self.inner.mesh_output_per_vertex_granularity = value;
31302        self
31303    }
31304    #[inline]
31305    pub fn mesh_output_per_primitive_granularity(mut self, value: u32) -> Self {
31306        self.inner.mesh_output_per_primitive_granularity = value;
31307        self
31308    }
31309}
31310impl<'a> core::ops::Deref for PhysicalDeviceMeshShaderPropertiesNVBuilder<'a> {
31311    type Target = PhysicalDeviceMeshShaderPropertiesNV;
31312    #[inline]
31313    fn deref(&self) -> &Self::Target {
31314        &self.inner
31315    }
31316}
31317impl<'a> core::ops::DerefMut for PhysicalDeviceMeshShaderPropertiesNVBuilder<'a> {
31318    #[inline]
31319    fn deref_mut(&mut self) -> &mut Self::Target {
31320        &mut self.inner
31321    }
31322}
31323///Builder for [`DrawMeshTasksIndirectCommandNV`].
31324pub struct DrawMeshTasksIndirectCommandNVBuilder {
31325    inner: DrawMeshTasksIndirectCommandNV,
31326}
31327impl DrawMeshTasksIndirectCommandNV {
31328    /// Start building this struct.
31329    #[inline]
31330    pub fn builder() -> DrawMeshTasksIndirectCommandNVBuilder {
31331        DrawMeshTasksIndirectCommandNVBuilder {
31332            inner: DrawMeshTasksIndirectCommandNV {
31333                ..Default::default()
31334            },
31335        }
31336    }
31337}
31338impl DrawMeshTasksIndirectCommandNVBuilder {
31339    #[inline]
31340    pub fn task_count(mut self, value: u32) -> Self {
31341        self.inner.task_count = value;
31342        self
31343    }
31344    #[inline]
31345    pub fn first_task(mut self, value: u32) -> Self {
31346        self.inner.first_task = value;
31347        self
31348    }
31349}
31350impl core::ops::Deref for DrawMeshTasksIndirectCommandNVBuilder {
31351    type Target = DrawMeshTasksIndirectCommandNV;
31352    #[inline]
31353    fn deref(&self) -> &Self::Target {
31354        &self.inner
31355    }
31356}
31357impl core::ops::DerefMut for DrawMeshTasksIndirectCommandNVBuilder {
31358    #[inline]
31359    fn deref_mut(&mut self) -> &mut Self::Target {
31360        &mut self.inner
31361    }
31362}
31363///Builder for [`PhysicalDeviceMeshShaderFeaturesEXT`] with lifetime-tied pNext safety.
31364pub struct PhysicalDeviceMeshShaderFeaturesEXTBuilder<'a> {
31365    inner: PhysicalDeviceMeshShaderFeaturesEXT,
31366    _marker: core::marker::PhantomData<&'a ()>,
31367}
31368impl PhysicalDeviceMeshShaderFeaturesEXT {
31369    /// Start building this struct; `s_type` is already set to the correct variant.
31370    #[inline]
31371    pub fn builder<'a>() -> PhysicalDeviceMeshShaderFeaturesEXTBuilder<'a> {
31372        PhysicalDeviceMeshShaderFeaturesEXTBuilder {
31373            inner: PhysicalDeviceMeshShaderFeaturesEXT {
31374                s_type: StructureType::from_raw(1000328000i32),
31375                ..Default::default()
31376            },
31377            _marker: core::marker::PhantomData,
31378        }
31379    }
31380}
31381impl<'a> PhysicalDeviceMeshShaderFeaturesEXTBuilder<'a> {
31382    #[inline]
31383    pub fn task_shader(mut self, value: bool) -> Self {
31384        self.inner.task_shader = value as u32;
31385        self
31386    }
31387    #[inline]
31388    pub fn mesh_shader(mut self, value: bool) -> Self {
31389        self.inner.mesh_shader = value as u32;
31390        self
31391    }
31392    #[inline]
31393    pub fn multiview_mesh_shader(mut self, value: bool) -> Self {
31394        self.inner.multiview_mesh_shader = value as u32;
31395        self
31396    }
31397    #[inline]
31398    pub fn primitive_fragment_shading_rate_mesh_shader(mut self, value: bool) -> Self {
31399        self.inner.primitive_fragment_shading_rate_mesh_shader = value as u32;
31400        self
31401    }
31402    #[inline]
31403    pub fn mesh_shader_queries(mut self, value: bool) -> Self {
31404        self.inner.mesh_shader_queries = value as u32;
31405        self
31406    }
31407    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceMeshShaderFeaturesEXT`]'s **Extended By** section for valid types.
31408    #[inline]
31409    pub fn push_next<T: ExtendsPhysicalDeviceMeshShaderFeaturesEXT>(
31410        mut self,
31411        next: &'a mut T,
31412    ) -> Self {
31413        unsafe {
31414            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
31415            (*next_ptr).p_next = self.inner.p_next as *mut _;
31416            self.inner.p_next = <*mut BaseOutStructure>::cast::<
31417                core::ffi::c_void,
31418            >(next_ptr);
31419        }
31420        self
31421    }
31422}
31423impl<'a> core::ops::Deref for PhysicalDeviceMeshShaderFeaturesEXTBuilder<'a> {
31424    type Target = PhysicalDeviceMeshShaderFeaturesEXT;
31425    #[inline]
31426    fn deref(&self) -> &Self::Target {
31427        &self.inner
31428    }
31429}
31430impl<'a> core::ops::DerefMut for PhysicalDeviceMeshShaderFeaturesEXTBuilder<'a> {
31431    #[inline]
31432    fn deref_mut(&mut self) -> &mut Self::Target {
31433        &mut self.inner
31434    }
31435}
31436///Builder for [`PhysicalDeviceMeshShaderPropertiesEXT`] with lifetime-tied pNext safety.
31437pub struct PhysicalDeviceMeshShaderPropertiesEXTBuilder<'a> {
31438    inner: PhysicalDeviceMeshShaderPropertiesEXT,
31439    _marker: core::marker::PhantomData<&'a ()>,
31440}
31441impl PhysicalDeviceMeshShaderPropertiesEXT {
31442    /// Start building this struct; `s_type` is already set to the correct variant.
31443    #[inline]
31444    pub fn builder<'a>() -> PhysicalDeviceMeshShaderPropertiesEXTBuilder<'a> {
31445        PhysicalDeviceMeshShaderPropertiesEXTBuilder {
31446            inner: PhysicalDeviceMeshShaderPropertiesEXT {
31447                s_type: StructureType::from_raw(1000328001i32),
31448                ..Default::default()
31449            },
31450            _marker: core::marker::PhantomData,
31451        }
31452    }
31453}
31454impl<'a> PhysicalDeviceMeshShaderPropertiesEXTBuilder<'a> {
31455    #[inline]
31456    pub fn max_task_work_group_total_count(mut self, value: u32) -> Self {
31457        self.inner.max_task_work_group_total_count = value;
31458        self
31459    }
31460    #[inline]
31461    pub fn max_task_work_group_count(mut self, value: [u32; 3usize]) -> Self {
31462        self.inner.max_task_work_group_count = value;
31463        self
31464    }
31465    #[inline]
31466    pub fn max_task_work_group_invocations(mut self, value: u32) -> Self {
31467        self.inner.max_task_work_group_invocations = value;
31468        self
31469    }
31470    #[inline]
31471    pub fn max_task_work_group_size(mut self, value: [u32; 3usize]) -> Self {
31472        self.inner.max_task_work_group_size = value;
31473        self
31474    }
31475    #[inline]
31476    pub fn max_task_payload_size(mut self, value: u32) -> Self {
31477        self.inner.max_task_payload_size = value;
31478        self
31479    }
31480    #[inline]
31481    pub fn max_task_shared_memory_size(mut self, value: u32) -> Self {
31482        self.inner.max_task_shared_memory_size = value;
31483        self
31484    }
31485    #[inline]
31486    pub fn max_task_payload_and_shared_memory_size(mut self, value: u32) -> Self {
31487        self.inner.max_task_payload_and_shared_memory_size = value;
31488        self
31489    }
31490    #[inline]
31491    pub fn max_mesh_work_group_total_count(mut self, value: u32) -> Self {
31492        self.inner.max_mesh_work_group_total_count = value;
31493        self
31494    }
31495    #[inline]
31496    pub fn max_mesh_work_group_count(mut self, value: [u32; 3usize]) -> Self {
31497        self.inner.max_mesh_work_group_count = value;
31498        self
31499    }
31500    #[inline]
31501    pub fn max_mesh_work_group_invocations(mut self, value: u32) -> Self {
31502        self.inner.max_mesh_work_group_invocations = value;
31503        self
31504    }
31505    #[inline]
31506    pub fn max_mesh_work_group_size(mut self, value: [u32; 3usize]) -> Self {
31507        self.inner.max_mesh_work_group_size = value;
31508        self
31509    }
31510    #[inline]
31511    pub fn max_mesh_shared_memory_size(mut self, value: u32) -> Self {
31512        self.inner.max_mesh_shared_memory_size = value;
31513        self
31514    }
31515    #[inline]
31516    pub fn max_mesh_payload_and_shared_memory_size(mut self, value: u32) -> Self {
31517        self.inner.max_mesh_payload_and_shared_memory_size = value;
31518        self
31519    }
31520    #[inline]
31521    pub fn max_mesh_output_memory_size(mut self, value: u32) -> Self {
31522        self.inner.max_mesh_output_memory_size = value;
31523        self
31524    }
31525    #[inline]
31526    pub fn max_mesh_payload_and_output_memory_size(mut self, value: u32) -> Self {
31527        self.inner.max_mesh_payload_and_output_memory_size = value;
31528        self
31529    }
31530    #[inline]
31531    pub fn max_mesh_output_components(mut self, value: u32) -> Self {
31532        self.inner.max_mesh_output_components = value;
31533        self
31534    }
31535    #[inline]
31536    pub fn max_mesh_output_vertices(mut self, value: u32) -> Self {
31537        self.inner.max_mesh_output_vertices = value;
31538        self
31539    }
31540    #[inline]
31541    pub fn max_mesh_output_primitives(mut self, value: u32) -> Self {
31542        self.inner.max_mesh_output_primitives = value;
31543        self
31544    }
31545    #[inline]
31546    pub fn max_mesh_output_layers(mut self, value: u32) -> Self {
31547        self.inner.max_mesh_output_layers = value;
31548        self
31549    }
31550    #[inline]
31551    pub fn max_mesh_multiview_view_count(mut self, value: u32) -> Self {
31552        self.inner.max_mesh_multiview_view_count = value;
31553        self
31554    }
31555    #[inline]
31556    pub fn mesh_output_per_vertex_granularity(mut self, value: u32) -> Self {
31557        self.inner.mesh_output_per_vertex_granularity = value;
31558        self
31559    }
31560    #[inline]
31561    pub fn mesh_output_per_primitive_granularity(mut self, value: u32) -> Self {
31562        self.inner.mesh_output_per_primitive_granularity = value;
31563        self
31564    }
31565    #[inline]
31566    pub fn max_preferred_task_work_group_invocations(mut self, value: u32) -> Self {
31567        self.inner.max_preferred_task_work_group_invocations = value;
31568        self
31569    }
31570    #[inline]
31571    pub fn max_preferred_mesh_work_group_invocations(mut self, value: u32) -> Self {
31572        self.inner.max_preferred_mesh_work_group_invocations = value;
31573        self
31574    }
31575    #[inline]
31576    pub fn prefers_local_invocation_vertex_output(mut self, value: bool) -> Self {
31577        self.inner.prefers_local_invocation_vertex_output = value as u32;
31578        self
31579    }
31580    #[inline]
31581    pub fn prefers_local_invocation_primitive_output(mut self, value: bool) -> Self {
31582        self.inner.prefers_local_invocation_primitive_output = value as u32;
31583        self
31584    }
31585    #[inline]
31586    pub fn prefers_compact_vertex_output(mut self, value: bool) -> Self {
31587        self.inner.prefers_compact_vertex_output = value as u32;
31588        self
31589    }
31590    #[inline]
31591    pub fn prefers_compact_primitive_output(mut self, value: bool) -> Self {
31592        self.inner.prefers_compact_primitive_output = value as u32;
31593        self
31594    }
31595}
31596impl<'a> core::ops::Deref for PhysicalDeviceMeshShaderPropertiesEXTBuilder<'a> {
31597    type Target = PhysicalDeviceMeshShaderPropertiesEXT;
31598    #[inline]
31599    fn deref(&self) -> &Self::Target {
31600        &self.inner
31601    }
31602}
31603impl<'a> core::ops::DerefMut for PhysicalDeviceMeshShaderPropertiesEXTBuilder<'a> {
31604    #[inline]
31605    fn deref_mut(&mut self) -> &mut Self::Target {
31606        &mut self.inner
31607    }
31608}
31609///Builder for [`DrawMeshTasksIndirectCommandEXT`].
31610pub struct DrawMeshTasksIndirectCommandEXTBuilder {
31611    inner: DrawMeshTasksIndirectCommandEXT,
31612}
31613impl DrawMeshTasksIndirectCommandEXT {
31614    /// Start building this struct.
31615    #[inline]
31616    pub fn builder() -> DrawMeshTasksIndirectCommandEXTBuilder {
31617        DrawMeshTasksIndirectCommandEXTBuilder {
31618            inner: DrawMeshTasksIndirectCommandEXT {
31619                ..Default::default()
31620            },
31621        }
31622    }
31623}
31624impl DrawMeshTasksIndirectCommandEXTBuilder {
31625    #[inline]
31626    pub fn group_count_x(mut self, value: u32) -> Self {
31627        self.inner.group_count_x = value;
31628        self
31629    }
31630    #[inline]
31631    pub fn group_count_y(mut self, value: u32) -> Self {
31632        self.inner.group_count_y = value;
31633        self
31634    }
31635    #[inline]
31636    pub fn group_count_z(mut self, value: u32) -> Self {
31637        self.inner.group_count_z = value;
31638        self
31639    }
31640}
31641impl core::ops::Deref for DrawMeshTasksIndirectCommandEXTBuilder {
31642    type Target = DrawMeshTasksIndirectCommandEXT;
31643    #[inline]
31644    fn deref(&self) -> &Self::Target {
31645        &self.inner
31646    }
31647}
31648impl core::ops::DerefMut for DrawMeshTasksIndirectCommandEXTBuilder {
31649    #[inline]
31650    fn deref_mut(&mut self) -> &mut Self::Target {
31651        &mut self.inner
31652    }
31653}
31654///Builder for [`RayTracingShaderGroupCreateInfoNV`] with lifetime-tied pNext safety.
31655pub struct RayTracingShaderGroupCreateInfoNVBuilder<'a> {
31656    inner: RayTracingShaderGroupCreateInfoNV,
31657    _marker: core::marker::PhantomData<&'a ()>,
31658}
31659impl RayTracingShaderGroupCreateInfoNV {
31660    /// Start building this struct; `s_type` is already set to the correct variant.
31661    #[inline]
31662    pub fn builder<'a>() -> RayTracingShaderGroupCreateInfoNVBuilder<'a> {
31663        RayTracingShaderGroupCreateInfoNVBuilder {
31664            inner: RayTracingShaderGroupCreateInfoNV {
31665                s_type: StructureType::from_raw(1000165011i32),
31666                ..Default::default()
31667            },
31668            _marker: core::marker::PhantomData,
31669        }
31670    }
31671}
31672impl<'a> RayTracingShaderGroupCreateInfoNVBuilder<'a> {
31673    #[inline]
31674    pub fn r#type(mut self, value: RayTracingShaderGroupTypeKHR) -> Self {
31675        self.inner.r#type = value;
31676        self
31677    }
31678    #[inline]
31679    pub fn general_shader(mut self, value: u32) -> Self {
31680        self.inner.general_shader = value;
31681        self
31682    }
31683    #[inline]
31684    pub fn closest_hit_shader(mut self, value: u32) -> Self {
31685        self.inner.closest_hit_shader = value;
31686        self
31687    }
31688    #[inline]
31689    pub fn any_hit_shader(mut self, value: u32) -> Self {
31690        self.inner.any_hit_shader = value;
31691        self
31692    }
31693    #[inline]
31694    pub fn intersection_shader(mut self, value: u32) -> Self {
31695        self.inner.intersection_shader = value;
31696        self
31697    }
31698    ///Prepend a struct to the pNext chain. See [`RayTracingShaderGroupCreateInfoNV`]'s **Extended By** section for valid types.
31699    #[inline]
31700    pub fn push_next<T: ExtendsRayTracingShaderGroupCreateInfoNV>(
31701        mut self,
31702        next: &'a mut T,
31703    ) -> Self {
31704        unsafe {
31705            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
31706            (*next_ptr).p_next = self.inner.p_next as *mut _;
31707            self.inner.p_next = <*mut BaseOutStructure>::cast::<
31708                core::ffi::c_void,
31709            >(next_ptr) as *const _;
31710        }
31711        self
31712    }
31713}
31714impl<'a> core::ops::Deref for RayTracingShaderGroupCreateInfoNVBuilder<'a> {
31715    type Target = RayTracingShaderGroupCreateInfoNV;
31716    #[inline]
31717    fn deref(&self) -> &Self::Target {
31718        &self.inner
31719    }
31720}
31721impl<'a> core::ops::DerefMut for RayTracingShaderGroupCreateInfoNVBuilder<'a> {
31722    #[inline]
31723    fn deref_mut(&mut self) -> &mut Self::Target {
31724        &mut self.inner
31725    }
31726}
31727///Builder for [`RayTracingShaderGroupCreateInfoKHR`] with lifetime-tied pNext safety.
31728pub struct RayTracingShaderGroupCreateInfoKHRBuilder<'a> {
31729    inner: RayTracingShaderGroupCreateInfoKHR,
31730    _marker: core::marker::PhantomData<&'a ()>,
31731}
31732impl RayTracingShaderGroupCreateInfoKHR {
31733    /// Start building this struct; `s_type` is already set to the correct variant.
31734    #[inline]
31735    pub fn builder<'a>() -> RayTracingShaderGroupCreateInfoKHRBuilder<'a> {
31736        RayTracingShaderGroupCreateInfoKHRBuilder {
31737            inner: RayTracingShaderGroupCreateInfoKHR {
31738                s_type: StructureType::from_raw(1000150016i32),
31739                ..Default::default()
31740            },
31741            _marker: core::marker::PhantomData,
31742        }
31743    }
31744}
31745impl<'a> RayTracingShaderGroupCreateInfoKHRBuilder<'a> {
31746    #[inline]
31747    pub fn r#type(mut self, value: RayTracingShaderGroupTypeKHR) -> Self {
31748        self.inner.r#type = value;
31749        self
31750    }
31751    #[inline]
31752    pub fn general_shader(mut self, value: u32) -> Self {
31753        self.inner.general_shader = value;
31754        self
31755    }
31756    #[inline]
31757    pub fn closest_hit_shader(mut self, value: u32) -> Self {
31758        self.inner.closest_hit_shader = value;
31759        self
31760    }
31761    #[inline]
31762    pub fn any_hit_shader(mut self, value: u32) -> Self {
31763        self.inner.any_hit_shader = value;
31764        self
31765    }
31766    #[inline]
31767    pub fn intersection_shader(mut self, value: u32) -> Self {
31768        self.inner.intersection_shader = value;
31769        self
31770    }
31771    #[inline]
31772    pub fn shader_group_capture_replay_handle(
31773        mut self,
31774        value: *const core::ffi::c_void,
31775    ) -> Self {
31776        self.inner.p_shader_group_capture_replay_handle = value;
31777        self
31778    }
31779    ///Prepend a struct to the pNext chain. See [`RayTracingShaderGroupCreateInfoKHR`]'s **Extended By** section for valid types.
31780    #[inline]
31781    pub fn push_next<T: ExtendsRayTracingShaderGroupCreateInfoKHR>(
31782        mut self,
31783        next: &'a mut T,
31784    ) -> Self {
31785        unsafe {
31786            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
31787            (*next_ptr).p_next = self.inner.p_next as *mut _;
31788            self.inner.p_next = <*mut BaseOutStructure>::cast::<
31789                core::ffi::c_void,
31790            >(next_ptr) as *const _;
31791        }
31792        self
31793    }
31794}
31795impl<'a> core::ops::Deref for RayTracingShaderGroupCreateInfoKHRBuilder<'a> {
31796    type Target = RayTracingShaderGroupCreateInfoKHR;
31797    #[inline]
31798    fn deref(&self) -> &Self::Target {
31799        &self.inner
31800    }
31801}
31802impl<'a> core::ops::DerefMut for RayTracingShaderGroupCreateInfoKHRBuilder<'a> {
31803    #[inline]
31804    fn deref_mut(&mut self) -> &mut Self::Target {
31805        &mut self.inner
31806    }
31807}
31808///Builder for [`RayTracingPipelineCreateInfoNV`] with lifetime-tied pNext safety.
31809pub struct RayTracingPipelineCreateInfoNVBuilder<'a> {
31810    inner: RayTracingPipelineCreateInfoNV,
31811    _marker: core::marker::PhantomData<&'a ()>,
31812}
31813impl RayTracingPipelineCreateInfoNV {
31814    /// Start building this struct; `s_type` is already set to the correct variant.
31815    #[inline]
31816    pub fn builder<'a>() -> RayTracingPipelineCreateInfoNVBuilder<'a> {
31817        RayTracingPipelineCreateInfoNVBuilder {
31818            inner: RayTracingPipelineCreateInfoNV {
31819                s_type: StructureType::from_raw(1000165000i32),
31820                ..Default::default()
31821            },
31822            _marker: core::marker::PhantomData,
31823        }
31824    }
31825}
31826impl<'a> RayTracingPipelineCreateInfoNVBuilder<'a> {
31827    #[inline]
31828    pub fn flags(mut self, value: PipelineCreateFlags) -> Self {
31829        self.inner.flags = value;
31830        self
31831    }
31832    #[inline]
31833    pub fn stages(mut self, slice: &'a [PipelineShaderStageCreateInfo]) -> Self {
31834        self.inner.stage_count = slice.len() as u32;
31835        self.inner.p_stages = slice.as_ptr();
31836        self
31837    }
31838    #[inline]
31839    pub fn groups(mut self, slice: &'a [RayTracingShaderGroupCreateInfoNV]) -> Self {
31840        self.inner.group_count = slice.len() as u32;
31841        self.inner.p_groups = slice.as_ptr();
31842        self
31843    }
31844    #[inline]
31845    pub fn max_recursion_depth(mut self, value: u32) -> Self {
31846        self.inner.max_recursion_depth = value;
31847        self
31848    }
31849    #[inline]
31850    pub fn layout(mut self, value: PipelineLayout) -> Self {
31851        self.inner.layout = value;
31852        self
31853    }
31854    #[inline]
31855    pub fn base_pipeline_handle(mut self, value: Pipeline) -> Self {
31856        self.inner.base_pipeline_handle = value;
31857        self
31858    }
31859    #[inline]
31860    pub fn base_pipeline_index(mut self, value: i32) -> Self {
31861        self.inner.base_pipeline_index = value;
31862        self
31863    }
31864    ///Prepend a struct to the pNext chain. See [`RayTracingPipelineCreateInfoNV`]'s **Extended By** section for valid types.
31865    #[inline]
31866    pub fn push_next<T: ExtendsRayTracingPipelineCreateInfoNV>(
31867        mut self,
31868        next: &'a mut T,
31869    ) -> Self {
31870        unsafe {
31871            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
31872            (*next_ptr).p_next = self.inner.p_next as *mut _;
31873            self.inner.p_next = <*mut BaseOutStructure>::cast::<
31874                core::ffi::c_void,
31875            >(next_ptr) as *const _;
31876        }
31877        self
31878    }
31879}
31880impl<'a> core::ops::Deref for RayTracingPipelineCreateInfoNVBuilder<'a> {
31881    type Target = RayTracingPipelineCreateInfoNV;
31882    #[inline]
31883    fn deref(&self) -> &Self::Target {
31884        &self.inner
31885    }
31886}
31887impl<'a> core::ops::DerefMut for RayTracingPipelineCreateInfoNVBuilder<'a> {
31888    #[inline]
31889    fn deref_mut(&mut self) -> &mut Self::Target {
31890        &mut self.inner
31891    }
31892}
31893///Builder for [`RayTracingPipelineCreateInfoKHR`] with lifetime-tied pNext safety.
31894pub struct RayTracingPipelineCreateInfoKHRBuilder<'a> {
31895    inner: RayTracingPipelineCreateInfoKHR,
31896    _marker: core::marker::PhantomData<&'a ()>,
31897}
31898impl RayTracingPipelineCreateInfoKHR {
31899    /// Start building this struct; `s_type` is already set to the correct variant.
31900    #[inline]
31901    pub fn builder<'a>() -> RayTracingPipelineCreateInfoKHRBuilder<'a> {
31902        RayTracingPipelineCreateInfoKHRBuilder {
31903            inner: RayTracingPipelineCreateInfoKHR {
31904                s_type: StructureType::from_raw(1000150015i32),
31905                ..Default::default()
31906            },
31907            _marker: core::marker::PhantomData,
31908        }
31909    }
31910}
31911impl<'a> RayTracingPipelineCreateInfoKHRBuilder<'a> {
31912    #[inline]
31913    pub fn flags(mut self, value: PipelineCreateFlags) -> Self {
31914        self.inner.flags = value;
31915        self
31916    }
31917    #[inline]
31918    pub fn stages(mut self, slice: &'a [PipelineShaderStageCreateInfo]) -> Self {
31919        self.inner.stage_count = slice.len() as u32;
31920        self.inner.p_stages = slice.as_ptr();
31921        self
31922    }
31923    #[inline]
31924    pub fn groups(mut self, slice: &'a [RayTracingShaderGroupCreateInfoKHR]) -> Self {
31925        self.inner.group_count = slice.len() as u32;
31926        self.inner.p_groups = slice.as_ptr();
31927        self
31928    }
31929    #[inline]
31930    pub fn max_pipeline_ray_recursion_depth(mut self, value: u32) -> Self {
31931        self.inner.max_pipeline_ray_recursion_depth = value;
31932        self
31933    }
31934    #[inline]
31935    pub fn library_info(mut self, value: &'a PipelineLibraryCreateInfoKHR) -> Self {
31936        self.inner.p_library_info = value;
31937        self
31938    }
31939    #[inline]
31940    pub fn library_interface(
31941        mut self,
31942        value: &'a RayTracingPipelineInterfaceCreateInfoKHR,
31943    ) -> Self {
31944        self.inner.p_library_interface = value;
31945        self
31946    }
31947    #[inline]
31948    pub fn dynamic_state(mut self, value: &'a PipelineDynamicStateCreateInfo) -> Self {
31949        self.inner.p_dynamic_state = value;
31950        self
31951    }
31952    #[inline]
31953    pub fn layout(mut self, value: PipelineLayout) -> Self {
31954        self.inner.layout = value;
31955        self
31956    }
31957    #[inline]
31958    pub fn base_pipeline_handle(mut self, value: Pipeline) -> Self {
31959        self.inner.base_pipeline_handle = value;
31960        self
31961    }
31962    #[inline]
31963    pub fn base_pipeline_index(mut self, value: i32) -> Self {
31964        self.inner.base_pipeline_index = value;
31965        self
31966    }
31967    ///Prepend a struct to the pNext chain. See [`RayTracingPipelineCreateInfoKHR`]'s **Extended By** section for valid types.
31968    #[inline]
31969    pub fn push_next<T: ExtendsRayTracingPipelineCreateInfoKHR>(
31970        mut self,
31971        next: &'a mut T,
31972    ) -> Self {
31973        unsafe {
31974            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
31975            (*next_ptr).p_next = self.inner.p_next as *mut _;
31976            self.inner.p_next = <*mut BaseOutStructure>::cast::<
31977                core::ffi::c_void,
31978            >(next_ptr) as *const _;
31979        }
31980        self
31981    }
31982}
31983impl<'a> core::ops::Deref for RayTracingPipelineCreateInfoKHRBuilder<'a> {
31984    type Target = RayTracingPipelineCreateInfoKHR;
31985    #[inline]
31986    fn deref(&self) -> &Self::Target {
31987        &self.inner
31988    }
31989}
31990impl<'a> core::ops::DerefMut for RayTracingPipelineCreateInfoKHRBuilder<'a> {
31991    #[inline]
31992    fn deref_mut(&mut self) -> &mut Self::Target {
31993        &mut self.inner
31994    }
31995}
31996///Builder for [`GeometryTrianglesNV`] with lifetime-tied pNext safety.
31997pub struct GeometryTrianglesNVBuilder<'a> {
31998    inner: GeometryTrianglesNV,
31999    _marker: core::marker::PhantomData<&'a ()>,
32000}
32001impl GeometryTrianglesNV {
32002    /// Start building this struct; `s_type` is already set to the correct variant.
32003    #[inline]
32004    pub fn builder<'a>() -> GeometryTrianglesNVBuilder<'a> {
32005        GeometryTrianglesNVBuilder {
32006            inner: GeometryTrianglesNV {
32007                s_type: StructureType::from_raw(1000165004i32),
32008                ..Default::default()
32009            },
32010            _marker: core::marker::PhantomData,
32011        }
32012    }
32013}
32014impl<'a> GeometryTrianglesNVBuilder<'a> {
32015    #[inline]
32016    pub fn vertex_data(mut self, value: Buffer) -> Self {
32017        self.inner.vertex_data = value;
32018        self
32019    }
32020    #[inline]
32021    pub fn vertex_offset(mut self, value: u64) -> Self {
32022        self.inner.vertex_offset = value;
32023        self
32024    }
32025    #[inline]
32026    pub fn vertex_count(mut self, value: u32) -> Self {
32027        self.inner.vertex_count = value;
32028        self
32029    }
32030    #[inline]
32031    pub fn vertex_stride(mut self, value: u64) -> Self {
32032        self.inner.vertex_stride = value;
32033        self
32034    }
32035    #[inline]
32036    pub fn vertex_format(mut self, value: Format) -> Self {
32037        self.inner.vertex_format = value;
32038        self
32039    }
32040    #[inline]
32041    pub fn index_data(mut self, value: Buffer) -> Self {
32042        self.inner.index_data = value;
32043        self
32044    }
32045    #[inline]
32046    pub fn index_offset(mut self, value: u64) -> Self {
32047        self.inner.index_offset = value;
32048        self
32049    }
32050    #[inline]
32051    pub fn index_count(mut self, value: u32) -> Self {
32052        self.inner.index_count = value;
32053        self
32054    }
32055    #[inline]
32056    pub fn index_type(mut self, value: IndexType) -> Self {
32057        self.inner.index_type = value;
32058        self
32059    }
32060    #[inline]
32061    pub fn transform_data(mut self, value: Buffer) -> Self {
32062        self.inner.transform_data = value;
32063        self
32064    }
32065    #[inline]
32066    pub fn transform_offset(mut self, value: u64) -> Self {
32067        self.inner.transform_offset = value;
32068        self
32069    }
32070    ///Prepend a struct to the pNext chain. See [`GeometryTrianglesNV`]'s **Extended By** section for valid types.
32071    #[inline]
32072    pub fn push_next<T: ExtendsGeometryTrianglesNV>(mut self, next: &'a mut T) -> Self {
32073        unsafe {
32074            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
32075            (*next_ptr).p_next = self.inner.p_next as *mut _;
32076            self.inner.p_next = <*mut BaseOutStructure>::cast::<
32077                core::ffi::c_void,
32078            >(next_ptr) as *const _;
32079        }
32080        self
32081    }
32082}
32083impl<'a> core::ops::Deref for GeometryTrianglesNVBuilder<'a> {
32084    type Target = GeometryTrianglesNV;
32085    #[inline]
32086    fn deref(&self) -> &Self::Target {
32087        &self.inner
32088    }
32089}
32090impl<'a> core::ops::DerefMut for GeometryTrianglesNVBuilder<'a> {
32091    #[inline]
32092    fn deref_mut(&mut self) -> &mut Self::Target {
32093        &mut self.inner
32094    }
32095}
32096///Builder for [`GeometryAABBNV`] with lifetime-tied pNext safety.
32097pub struct GeometryAABBNVBuilder<'a> {
32098    inner: GeometryAABBNV,
32099    _marker: core::marker::PhantomData<&'a ()>,
32100}
32101impl GeometryAABBNV {
32102    /// Start building this struct; `s_type` is already set to the correct variant.
32103    #[inline]
32104    pub fn builder<'a>() -> GeometryAABBNVBuilder<'a> {
32105        GeometryAABBNVBuilder {
32106            inner: GeometryAABBNV {
32107                s_type: StructureType::from_raw(1000165005i32),
32108                ..Default::default()
32109            },
32110            _marker: core::marker::PhantomData,
32111        }
32112    }
32113}
32114impl<'a> GeometryAABBNVBuilder<'a> {
32115    #[inline]
32116    pub fn aabb_data(mut self, value: Buffer) -> Self {
32117        self.inner.aabb_data = value;
32118        self
32119    }
32120    #[inline]
32121    pub fn num_aab_bs(mut self, value: u32) -> Self {
32122        self.inner.num_aab_bs = value;
32123        self
32124    }
32125    #[inline]
32126    pub fn stride(mut self, value: u32) -> Self {
32127        self.inner.stride = value;
32128        self
32129    }
32130    #[inline]
32131    pub fn offset(mut self, value: u64) -> Self {
32132        self.inner.offset = value;
32133        self
32134    }
32135    ///Prepend a struct to the pNext chain. See [`GeometryAABBNV`]'s **Extended By** section for valid types.
32136    #[inline]
32137    pub fn push_next<T: ExtendsGeometryAABBNV>(mut self, next: &'a mut T) -> Self {
32138        unsafe {
32139            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
32140            (*next_ptr).p_next = self.inner.p_next as *mut _;
32141            self.inner.p_next = <*mut BaseOutStructure>::cast::<
32142                core::ffi::c_void,
32143            >(next_ptr) as *const _;
32144        }
32145        self
32146    }
32147}
32148impl<'a> core::ops::Deref for GeometryAABBNVBuilder<'a> {
32149    type Target = GeometryAABBNV;
32150    #[inline]
32151    fn deref(&self) -> &Self::Target {
32152        &self.inner
32153    }
32154}
32155impl<'a> core::ops::DerefMut for GeometryAABBNVBuilder<'a> {
32156    #[inline]
32157    fn deref_mut(&mut self) -> &mut Self::Target {
32158        &mut self.inner
32159    }
32160}
32161///Builder for [`GeometryDataNV`].
32162pub struct GeometryDataNVBuilder {
32163    inner: GeometryDataNV,
32164}
32165impl GeometryDataNV {
32166    /// Start building this struct.
32167    #[inline]
32168    pub fn builder() -> GeometryDataNVBuilder {
32169        GeometryDataNVBuilder {
32170            inner: GeometryDataNV {
32171                ..Default::default()
32172            },
32173        }
32174    }
32175}
32176impl GeometryDataNVBuilder {
32177    #[inline]
32178    pub fn triangles(mut self, value: GeometryTrianglesNV) -> Self {
32179        self.inner.triangles = value;
32180        self
32181    }
32182    #[inline]
32183    pub fn aabbs(mut self, value: GeometryAABBNV) -> Self {
32184        self.inner.aabbs = value;
32185        self
32186    }
32187}
32188impl core::ops::Deref for GeometryDataNVBuilder {
32189    type Target = GeometryDataNV;
32190    #[inline]
32191    fn deref(&self) -> &Self::Target {
32192        &self.inner
32193    }
32194}
32195impl core::ops::DerefMut for GeometryDataNVBuilder {
32196    #[inline]
32197    fn deref_mut(&mut self) -> &mut Self::Target {
32198        &mut self.inner
32199    }
32200}
32201///Builder for [`GeometryNV`] with lifetime-tied pNext safety.
32202pub struct GeometryNVBuilder<'a> {
32203    inner: GeometryNV,
32204    _marker: core::marker::PhantomData<&'a ()>,
32205}
32206impl GeometryNV {
32207    /// Start building this struct; `s_type` is already set to the correct variant.
32208    #[inline]
32209    pub fn builder<'a>() -> GeometryNVBuilder<'a> {
32210        GeometryNVBuilder {
32211            inner: GeometryNV {
32212                s_type: StructureType::from_raw(1000165003i32),
32213                ..Default::default()
32214            },
32215            _marker: core::marker::PhantomData,
32216        }
32217    }
32218}
32219impl<'a> GeometryNVBuilder<'a> {
32220    #[inline]
32221    pub fn geometry_type(mut self, value: GeometryTypeKHR) -> Self {
32222        self.inner.geometry_type = value;
32223        self
32224    }
32225    #[inline]
32226    pub fn geometry(mut self, value: GeometryDataNV) -> Self {
32227        self.inner.geometry = value;
32228        self
32229    }
32230    #[inline]
32231    pub fn flags(mut self, value: GeometryFlagsKHR) -> Self {
32232        self.inner.flags = value;
32233        self
32234    }
32235    ///Prepend a struct to the pNext chain. See [`GeometryNV`]'s **Extended By** section for valid types.
32236    #[inline]
32237    pub fn push_next<T: ExtendsGeometryNV>(mut self, next: &'a mut T) -> Self {
32238        unsafe {
32239            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
32240            (*next_ptr).p_next = self.inner.p_next as *mut _;
32241            self.inner.p_next = <*mut BaseOutStructure>::cast::<
32242                core::ffi::c_void,
32243            >(next_ptr) as *const _;
32244        }
32245        self
32246    }
32247}
32248impl<'a> core::ops::Deref for GeometryNVBuilder<'a> {
32249    type Target = GeometryNV;
32250    #[inline]
32251    fn deref(&self) -> &Self::Target {
32252        &self.inner
32253    }
32254}
32255impl<'a> core::ops::DerefMut for GeometryNVBuilder<'a> {
32256    #[inline]
32257    fn deref_mut(&mut self) -> &mut Self::Target {
32258        &mut self.inner
32259    }
32260}
32261///Builder for [`AccelerationStructureInfoNV`] with lifetime-tied pNext safety.
32262pub struct AccelerationStructureInfoNVBuilder<'a> {
32263    inner: AccelerationStructureInfoNV,
32264    _marker: core::marker::PhantomData<&'a ()>,
32265}
32266impl AccelerationStructureInfoNV {
32267    /// Start building this struct; `s_type` is already set to the correct variant.
32268    #[inline]
32269    pub fn builder<'a>() -> AccelerationStructureInfoNVBuilder<'a> {
32270        AccelerationStructureInfoNVBuilder {
32271            inner: AccelerationStructureInfoNV {
32272                s_type: StructureType::from_raw(1000165012i32),
32273                ..Default::default()
32274            },
32275            _marker: core::marker::PhantomData,
32276        }
32277    }
32278}
32279impl<'a> AccelerationStructureInfoNVBuilder<'a> {
32280    #[inline]
32281    pub fn r#type(mut self, value: AccelerationStructureTypeNV) -> Self {
32282        self.inner.r#type = value;
32283        self
32284    }
32285    #[inline]
32286    pub fn flags(mut self, value: BuildAccelerationStructureFlagsNV) -> Self {
32287        self.inner.flags = value;
32288        self
32289    }
32290    #[inline]
32291    pub fn instance_count(mut self, value: u32) -> Self {
32292        self.inner.instance_count = value;
32293        self
32294    }
32295    #[inline]
32296    pub fn geometries(mut self, slice: &'a [GeometryNV]) -> Self {
32297        self.inner.geometry_count = slice.len() as u32;
32298        self.inner.p_geometries = slice.as_ptr();
32299        self
32300    }
32301    ///Prepend a struct to the pNext chain. See [`AccelerationStructureInfoNV`]'s **Extended By** section for valid types.
32302    #[inline]
32303    pub fn push_next<T: ExtendsAccelerationStructureInfoNV>(
32304        mut self,
32305        next: &'a mut T,
32306    ) -> Self {
32307        unsafe {
32308            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
32309            (*next_ptr).p_next = self.inner.p_next as *mut _;
32310            self.inner.p_next = <*mut BaseOutStructure>::cast::<
32311                core::ffi::c_void,
32312            >(next_ptr) as *const _;
32313        }
32314        self
32315    }
32316}
32317impl<'a> core::ops::Deref for AccelerationStructureInfoNVBuilder<'a> {
32318    type Target = AccelerationStructureInfoNV;
32319    #[inline]
32320    fn deref(&self) -> &Self::Target {
32321        &self.inner
32322    }
32323}
32324impl<'a> core::ops::DerefMut for AccelerationStructureInfoNVBuilder<'a> {
32325    #[inline]
32326    fn deref_mut(&mut self) -> &mut Self::Target {
32327        &mut self.inner
32328    }
32329}
32330///Builder for [`AccelerationStructureCreateInfoNV`] with lifetime-tied pNext safety.
32331pub struct AccelerationStructureCreateInfoNVBuilder<'a> {
32332    inner: AccelerationStructureCreateInfoNV,
32333    _marker: core::marker::PhantomData<&'a ()>,
32334}
32335impl AccelerationStructureCreateInfoNV {
32336    /// Start building this struct; `s_type` is already set to the correct variant.
32337    #[inline]
32338    pub fn builder<'a>() -> AccelerationStructureCreateInfoNVBuilder<'a> {
32339        AccelerationStructureCreateInfoNVBuilder {
32340            inner: AccelerationStructureCreateInfoNV {
32341                s_type: StructureType::from_raw(1000165001i32),
32342                ..Default::default()
32343            },
32344            _marker: core::marker::PhantomData,
32345        }
32346    }
32347}
32348impl<'a> AccelerationStructureCreateInfoNVBuilder<'a> {
32349    #[inline]
32350    pub fn compacted_size(mut self, value: u64) -> Self {
32351        self.inner.compacted_size = value;
32352        self
32353    }
32354    #[inline]
32355    pub fn info(mut self, value: AccelerationStructureInfoNV) -> Self {
32356        self.inner.info = value;
32357        self
32358    }
32359    ///Prepend a struct to the pNext chain. See [`AccelerationStructureCreateInfoNV`]'s **Extended By** section for valid types.
32360    #[inline]
32361    pub fn push_next<T: ExtendsAccelerationStructureCreateInfoNV>(
32362        mut self,
32363        next: &'a mut T,
32364    ) -> Self {
32365        unsafe {
32366            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
32367            (*next_ptr).p_next = self.inner.p_next as *mut _;
32368            self.inner.p_next = <*mut BaseOutStructure>::cast::<
32369                core::ffi::c_void,
32370            >(next_ptr) as *const _;
32371        }
32372        self
32373    }
32374}
32375impl<'a> core::ops::Deref for AccelerationStructureCreateInfoNVBuilder<'a> {
32376    type Target = AccelerationStructureCreateInfoNV;
32377    #[inline]
32378    fn deref(&self) -> &Self::Target {
32379        &self.inner
32380    }
32381}
32382impl<'a> core::ops::DerefMut for AccelerationStructureCreateInfoNVBuilder<'a> {
32383    #[inline]
32384    fn deref_mut(&mut self) -> &mut Self::Target {
32385        &mut self.inner
32386    }
32387}
32388///Builder for [`BindAccelerationStructureMemoryInfoNV`] with lifetime-tied pNext safety.
32389pub struct BindAccelerationStructureMemoryInfoNVBuilder<'a> {
32390    inner: BindAccelerationStructureMemoryInfoNV,
32391    _marker: core::marker::PhantomData<&'a ()>,
32392}
32393impl BindAccelerationStructureMemoryInfoNV {
32394    /// Start building this struct; `s_type` is already set to the correct variant.
32395    #[inline]
32396    pub fn builder<'a>() -> BindAccelerationStructureMemoryInfoNVBuilder<'a> {
32397        BindAccelerationStructureMemoryInfoNVBuilder {
32398            inner: BindAccelerationStructureMemoryInfoNV {
32399                s_type: StructureType::from_raw(1000165006i32),
32400                ..Default::default()
32401            },
32402            _marker: core::marker::PhantomData,
32403        }
32404    }
32405}
32406impl<'a> BindAccelerationStructureMemoryInfoNVBuilder<'a> {
32407    #[inline]
32408    pub fn acceleration_structure(mut self, value: AccelerationStructureNV) -> Self {
32409        self.inner.acceleration_structure = value;
32410        self
32411    }
32412    #[inline]
32413    pub fn memory(mut self, value: DeviceMemory) -> Self {
32414        self.inner.memory = value;
32415        self
32416    }
32417    #[inline]
32418    pub fn memory_offset(mut self, value: u64) -> Self {
32419        self.inner.memory_offset = value;
32420        self
32421    }
32422    #[inline]
32423    pub fn device_indices(mut self, slice: &'a [u32]) -> Self {
32424        self.inner.device_index_count = slice.len() as u32;
32425        self.inner.p_device_indices = slice.as_ptr();
32426        self
32427    }
32428    ///Prepend a struct to the pNext chain. See [`BindAccelerationStructureMemoryInfoNV`]'s **Extended By** section for valid types.
32429    #[inline]
32430    pub fn push_next<T: ExtendsBindAccelerationStructureMemoryInfoNV>(
32431        mut self,
32432        next: &'a mut T,
32433    ) -> Self {
32434        unsafe {
32435            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
32436            (*next_ptr).p_next = self.inner.p_next as *mut _;
32437            self.inner.p_next = <*mut BaseOutStructure>::cast::<
32438                core::ffi::c_void,
32439            >(next_ptr) as *const _;
32440        }
32441        self
32442    }
32443}
32444impl<'a> core::ops::Deref for BindAccelerationStructureMemoryInfoNVBuilder<'a> {
32445    type Target = BindAccelerationStructureMemoryInfoNV;
32446    #[inline]
32447    fn deref(&self) -> &Self::Target {
32448        &self.inner
32449    }
32450}
32451impl<'a> core::ops::DerefMut for BindAccelerationStructureMemoryInfoNVBuilder<'a> {
32452    #[inline]
32453    fn deref_mut(&mut self) -> &mut Self::Target {
32454        &mut self.inner
32455    }
32456}
32457///Builder for [`WriteDescriptorSetAccelerationStructureKHR`] with lifetime-tied pNext safety.
32458pub struct WriteDescriptorSetAccelerationStructureKHRBuilder<'a> {
32459    inner: WriteDescriptorSetAccelerationStructureKHR,
32460    _marker: core::marker::PhantomData<&'a ()>,
32461}
32462impl WriteDescriptorSetAccelerationStructureKHR {
32463    /// Start building this struct; `s_type` is already set to the correct variant.
32464    #[inline]
32465    pub fn builder<'a>() -> WriteDescriptorSetAccelerationStructureKHRBuilder<'a> {
32466        WriteDescriptorSetAccelerationStructureKHRBuilder {
32467            inner: WriteDescriptorSetAccelerationStructureKHR {
32468                s_type: StructureType::from_raw(1000150007i32),
32469                ..Default::default()
32470            },
32471            _marker: core::marker::PhantomData,
32472        }
32473    }
32474}
32475impl<'a> WriteDescriptorSetAccelerationStructureKHRBuilder<'a> {
32476    #[inline]
32477    pub fn acceleration_structure_count(mut self, value: u32) -> Self {
32478        self.inner.acceleration_structure_count = value;
32479        self
32480    }
32481    #[inline]
32482    pub fn acceleration_structures(
32483        mut self,
32484        slice: &'a [AccelerationStructureKHR],
32485    ) -> Self {
32486        self.inner.acceleration_structure_count = slice.len() as u32;
32487        self.inner.p_acceleration_structures = slice.as_ptr();
32488        self
32489    }
32490    ///Prepend a struct to the pNext chain. See [`WriteDescriptorSetAccelerationStructureKHR`]'s **Extended By** section for valid types.
32491    #[inline]
32492    pub fn push_next<T: ExtendsWriteDescriptorSetAccelerationStructureKHR>(
32493        mut self,
32494        next: &'a mut T,
32495    ) -> Self {
32496        unsafe {
32497            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
32498            (*next_ptr).p_next = self.inner.p_next as *mut _;
32499            self.inner.p_next = <*mut BaseOutStructure>::cast::<
32500                core::ffi::c_void,
32501            >(next_ptr) as *const _;
32502        }
32503        self
32504    }
32505}
32506impl<'a> core::ops::Deref for WriteDescriptorSetAccelerationStructureKHRBuilder<'a> {
32507    type Target = WriteDescriptorSetAccelerationStructureKHR;
32508    #[inline]
32509    fn deref(&self) -> &Self::Target {
32510        &self.inner
32511    }
32512}
32513impl<'a> core::ops::DerefMut for WriteDescriptorSetAccelerationStructureKHRBuilder<'a> {
32514    #[inline]
32515    fn deref_mut(&mut self) -> &mut Self::Target {
32516        &mut self.inner
32517    }
32518}
32519///Builder for [`WriteDescriptorSetAccelerationStructureNV`] with lifetime-tied pNext safety.
32520pub struct WriteDescriptorSetAccelerationStructureNVBuilder<'a> {
32521    inner: WriteDescriptorSetAccelerationStructureNV,
32522    _marker: core::marker::PhantomData<&'a ()>,
32523}
32524impl WriteDescriptorSetAccelerationStructureNV {
32525    /// Start building this struct; `s_type` is already set to the correct variant.
32526    #[inline]
32527    pub fn builder<'a>() -> WriteDescriptorSetAccelerationStructureNVBuilder<'a> {
32528        WriteDescriptorSetAccelerationStructureNVBuilder {
32529            inner: WriteDescriptorSetAccelerationStructureNV {
32530                s_type: StructureType::from_raw(1000165007i32),
32531                ..Default::default()
32532            },
32533            _marker: core::marker::PhantomData,
32534        }
32535    }
32536}
32537impl<'a> WriteDescriptorSetAccelerationStructureNVBuilder<'a> {
32538    #[inline]
32539    pub fn acceleration_structure_count(mut self, value: u32) -> Self {
32540        self.inner.acceleration_structure_count = value;
32541        self
32542    }
32543    #[inline]
32544    pub fn acceleration_structures(
32545        mut self,
32546        slice: &'a [AccelerationStructureNV],
32547    ) -> Self {
32548        self.inner.acceleration_structure_count = slice.len() as u32;
32549        self.inner.p_acceleration_structures = slice.as_ptr();
32550        self
32551    }
32552    ///Prepend a struct to the pNext chain. See [`WriteDescriptorSetAccelerationStructureNV`]'s **Extended By** section for valid types.
32553    #[inline]
32554    pub fn push_next<T: ExtendsWriteDescriptorSetAccelerationStructureNV>(
32555        mut self,
32556        next: &'a mut T,
32557    ) -> Self {
32558        unsafe {
32559            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
32560            (*next_ptr).p_next = self.inner.p_next as *mut _;
32561            self.inner.p_next = <*mut BaseOutStructure>::cast::<
32562                core::ffi::c_void,
32563            >(next_ptr) as *const _;
32564        }
32565        self
32566    }
32567}
32568impl<'a> core::ops::Deref for WriteDescriptorSetAccelerationStructureNVBuilder<'a> {
32569    type Target = WriteDescriptorSetAccelerationStructureNV;
32570    #[inline]
32571    fn deref(&self) -> &Self::Target {
32572        &self.inner
32573    }
32574}
32575impl<'a> core::ops::DerefMut for WriteDescriptorSetAccelerationStructureNVBuilder<'a> {
32576    #[inline]
32577    fn deref_mut(&mut self) -> &mut Self::Target {
32578        &mut self.inner
32579    }
32580}
32581///Builder for [`AccelerationStructureMemoryRequirementsInfoNV`] with lifetime-tied pNext safety.
32582pub struct AccelerationStructureMemoryRequirementsInfoNVBuilder<'a> {
32583    inner: AccelerationStructureMemoryRequirementsInfoNV,
32584    _marker: core::marker::PhantomData<&'a ()>,
32585}
32586impl AccelerationStructureMemoryRequirementsInfoNV {
32587    /// Start building this struct; `s_type` is already set to the correct variant.
32588    #[inline]
32589    pub fn builder<'a>() -> AccelerationStructureMemoryRequirementsInfoNVBuilder<'a> {
32590        AccelerationStructureMemoryRequirementsInfoNVBuilder {
32591            inner: AccelerationStructureMemoryRequirementsInfoNV {
32592                s_type: StructureType::from_raw(1000165008i32),
32593                ..Default::default()
32594            },
32595            _marker: core::marker::PhantomData,
32596        }
32597    }
32598}
32599impl<'a> AccelerationStructureMemoryRequirementsInfoNVBuilder<'a> {
32600    #[inline]
32601    pub fn r#type(
32602        mut self,
32603        value: AccelerationStructureMemoryRequirementsTypeNV,
32604    ) -> Self {
32605        self.inner.r#type = value;
32606        self
32607    }
32608    #[inline]
32609    pub fn acceleration_structure(mut self, value: AccelerationStructureNV) -> Self {
32610        self.inner.acceleration_structure = value;
32611        self
32612    }
32613    ///Prepend a struct to the pNext chain. See [`AccelerationStructureMemoryRequirementsInfoNV`]'s **Extended By** section for valid types.
32614    #[inline]
32615    pub fn push_next<T: ExtendsAccelerationStructureMemoryRequirementsInfoNV>(
32616        mut self,
32617        next: &'a mut T,
32618    ) -> Self {
32619        unsafe {
32620            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
32621            (*next_ptr).p_next = self.inner.p_next as *mut _;
32622            self.inner.p_next = <*mut BaseOutStructure>::cast::<
32623                core::ffi::c_void,
32624            >(next_ptr) as *const _;
32625        }
32626        self
32627    }
32628}
32629impl<'a> core::ops::Deref for AccelerationStructureMemoryRequirementsInfoNVBuilder<'a> {
32630    type Target = AccelerationStructureMemoryRequirementsInfoNV;
32631    #[inline]
32632    fn deref(&self) -> &Self::Target {
32633        &self.inner
32634    }
32635}
32636impl<'a> core::ops::DerefMut
32637for AccelerationStructureMemoryRequirementsInfoNVBuilder<'a> {
32638    #[inline]
32639    fn deref_mut(&mut self) -> &mut Self::Target {
32640        &mut self.inner
32641    }
32642}
32643///Builder for [`PhysicalDeviceAccelerationStructureFeaturesKHR`] with lifetime-tied pNext safety.
32644pub struct PhysicalDeviceAccelerationStructureFeaturesKHRBuilder<'a> {
32645    inner: PhysicalDeviceAccelerationStructureFeaturesKHR,
32646    _marker: core::marker::PhantomData<&'a ()>,
32647}
32648impl PhysicalDeviceAccelerationStructureFeaturesKHR {
32649    /// Start building this struct; `s_type` is already set to the correct variant.
32650    #[inline]
32651    pub fn builder<'a>() -> PhysicalDeviceAccelerationStructureFeaturesKHRBuilder<'a> {
32652        PhysicalDeviceAccelerationStructureFeaturesKHRBuilder {
32653            inner: PhysicalDeviceAccelerationStructureFeaturesKHR {
32654                s_type: StructureType::from_raw(1000150013i32),
32655                ..Default::default()
32656            },
32657            _marker: core::marker::PhantomData,
32658        }
32659    }
32660}
32661impl<'a> PhysicalDeviceAccelerationStructureFeaturesKHRBuilder<'a> {
32662    #[inline]
32663    pub fn acceleration_structure(mut self, value: bool) -> Self {
32664        self.inner.acceleration_structure = value as u32;
32665        self
32666    }
32667    #[inline]
32668    pub fn acceleration_structure_capture_replay(mut self, value: bool) -> Self {
32669        self.inner.acceleration_structure_capture_replay = value as u32;
32670        self
32671    }
32672    #[inline]
32673    pub fn acceleration_structure_indirect_build(mut self, value: bool) -> Self {
32674        self.inner.acceleration_structure_indirect_build = value as u32;
32675        self
32676    }
32677    #[inline]
32678    pub fn acceleration_structure_host_commands(mut self, value: bool) -> Self {
32679        self.inner.acceleration_structure_host_commands = value as u32;
32680        self
32681    }
32682    #[inline]
32683    pub fn descriptor_binding_acceleration_structure_update_after_bind(
32684        mut self,
32685        value: bool,
32686    ) -> Self {
32687        self.inner.descriptor_binding_acceleration_structure_update_after_bind = value
32688            as u32;
32689        self
32690    }
32691    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceAccelerationStructureFeaturesKHR`]'s **Extended By** section for valid types.
32692    #[inline]
32693    pub fn push_next<T: ExtendsPhysicalDeviceAccelerationStructureFeaturesKHR>(
32694        mut self,
32695        next: &'a mut T,
32696    ) -> Self {
32697        unsafe {
32698            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
32699            (*next_ptr).p_next = self.inner.p_next as *mut _;
32700            self.inner.p_next = <*mut BaseOutStructure>::cast::<
32701                core::ffi::c_void,
32702            >(next_ptr);
32703        }
32704        self
32705    }
32706}
32707impl<'a> core::ops::Deref for PhysicalDeviceAccelerationStructureFeaturesKHRBuilder<'a> {
32708    type Target = PhysicalDeviceAccelerationStructureFeaturesKHR;
32709    #[inline]
32710    fn deref(&self) -> &Self::Target {
32711        &self.inner
32712    }
32713}
32714impl<'a> core::ops::DerefMut
32715for PhysicalDeviceAccelerationStructureFeaturesKHRBuilder<'a> {
32716    #[inline]
32717    fn deref_mut(&mut self) -> &mut Self::Target {
32718        &mut self.inner
32719    }
32720}
32721///Builder for [`PhysicalDeviceRayTracingPipelineFeaturesKHR`] with lifetime-tied pNext safety.
32722pub struct PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder<'a> {
32723    inner: PhysicalDeviceRayTracingPipelineFeaturesKHR,
32724    _marker: core::marker::PhantomData<&'a ()>,
32725}
32726impl PhysicalDeviceRayTracingPipelineFeaturesKHR {
32727    /// Start building this struct; `s_type` is already set to the correct variant.
32728    #[inline]
32729    pub fn builder<'a>() -> PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder<'a> {
32730        PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder {
32731            inner: PhysicalDeviceRayTracingPipelineFeaturesKHR {
32732                s_type: StructureType::from_raw(1000347000i32),
32733                ..Default::default()
32734            },
32735            _marker: core::marker::PhantomData,
32736        }
32737    }
32738}
32739impl<'a> PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder<'a> {
32740    #[inline]
32741    pub fn ray_tracing_pipeline(mut self, value: bool) -> Self {
32742        self.inner.ray_tracing_pipeline = value as u32;
32743        self
32744    }
32745    #[inline]
32746    pub fn ray_tracing_pipeline_shader_group_handle_capture_replay(
32747        mut self,
32748        value: bool,
32749    ) -> Self {
32750        self.inner.ray_tracing_pipeline_shader_group_handle_capture_replay = value
32751            as u32;
32752        self
32753    }
32754    #[inline]
32755    pub fn ray_tracing_pipeline_shader_group_handle_capture_replay_mixed(
32756        mut self,
32757        value: bool,
32758    ) -> Self {
32759        self.inner.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed = value
32760            as u32;
32761        self
32762    }
32763    #[inline]
32764    pub fn ray_tracing_pipeline_trace_rays_indirect(mut self, value: bool) -> Self {
32765        self.inner.ray_tracing_pipeline_trace_rays_indirect = value as u32;
32766        self
32767    }
32768    #[inline]
32769    pub fn ray_traversal_primitive_culling(mut self, value: bool) -> Self {
32770        self.inner.ray_traversal_primitive_culling = value as u32;
32771        self
32772    }
32773    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceRayTracingPipelineFeaturesKHR`]'s **Extended By** section for valid types.
32774    #[inline]
32775    pub fn push_next<T: ExtendsPhysicalDeviceRayTracingPipelineFeaturesKHR>(
32776        mut self,
32777        next: &'a mut T,
32778    ) -> Self {
32779        unsafe {
32780            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
32781            (*next_ptr).p_next = self.inner.p_next as *mut _;
32782            self.inner.p_next = <*mut BaseOutStructure>::cast::<
32783                core::ffi::c_void,
32784            >(next_ptr);
32785        }
32786        self
32787    }
32788}
32789impl<'a> core::ops::Deref for PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder<'a> {
32790    type Target = PhysicalDeviceRayTracingPipelineFeaturesKHR;
32791    #[inline]
32792    fn deref(&self) -> &Self::Target {
32793        &self.inner
32794    }
32795}
32796impl<'a> core::ops::DerefMut for PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder<'a> {
32797    #[inline]
32798    fn deref_mut(&mut self) -> &mut Self::Target {
32799        &mut self.inner
32800    }
32801}
32802///Builder for [`PhysicalDeviceRayQueryFeaturesKHR`] with lifetime-tied pNext safety.
32803pub struct PhysicalDeviceRayQueryFeaturesKHRBuilder<'a> {
32804    inner: PhysicalDeviceRayQueryFeaturesKHR,
32805    _marker: core::marker::PhantomData<&'a ()>,
32806}
32807impl PhysicalDeviceRayQueryFeaturesKHR {
32808    /// Start building this struct; `s_type` is already set to the correct variant.
32809    #[inline]
32810    pub fn builder<'a>() -> PhysicalDeviceRayQueryFeaturesKHRBuilder<'a> {
32811        PhysicalDeviceRayQueryFeaturesKHRBuilder {
32812            inner: PhysicalDeviceRayQueryFeaturesKHR {
32813                s_type: StructureType::from_raw(1000348013i32),
32814                ..Default::default()
32815            },
32816            _marker: core::marker::PhantomData,
32817        }
32818    }
32819}
32820impl<'a> PhysicalDeviceRayQueryFeaturesKHRBuilder<'a> {
32821    #[inline]
32822    pub fn ray_query(mut self, value: bool) -> Self {
32823        self.inner.ray_query = value as u32;
32824        self
32825    }
32826    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceRayQueryFeaturesKHR`]'s **Extended By** section for valid types.
32827    #[inline]
32828    pub fn push_next<T: ExtendsPhysicalDeviceRayQueryFeaturesKHR>(
32829        mut self,
32830        next: &'a mut T,
32831    ) -> Self {
32832        unsafe {
32833            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
32834            (*next_ptr).p_next = self.inner.p_next as *mut _;
32835            self.inner.p_next = <*mut BaseOutStructure>::cast::<
32836                core::ffi::c_void,
32837            >(next_ptr);
32838        }
32839        self
32840    }
32841}
32842impl<'a> core::ops::Deref for PhysicalDeviceRayQueryFeaturesKHRBuilder<'a> {
32843    type Target = PhysicalDeviceRayQueryFeaturesKHR;
32844    #[inline]
32845    fn deref(&self) -> &Self::Target {
32846        &self.inner
32847    }
32848}
32849impl<'a> core::ops::DerefMut for PhysicalDeviceRayQueryFeaturesKHRBuilder<'a> {
32850    #[inline]
32851    fn deref_mut(&mut self) -> &mut Self::Target {
32852        &mut self.inner
32853    }
32854}
32855///Builder for [`PhysicalDeviceAccelerationStructurePropertiesKHR`] with lifetime-tied pNext safety.
32856pub struct PhysicalDeviceAccelerationStructurePropertiesKHRBuilder<'a> {
32857    inner: PhysicalDeviceAccelerationStructurePropertiesKHR,
32858    _marker: core::marker::PhantomData<&'a ()>,
32859}
32860impl PhysicalDeviceAccelerationStructurePropertiesKHR {
32861    /// Start building this struct; `s_type` is already set to the correct variant.
32862    #[inline]
32863    pub fn builder<'a>() -> PhysicalDeviceAccelerationStructurePropertiesKHRBuilder<'a> {
32864        PhysicalDeviceAccelerationStructurePropertiesKHRBuilder {
32865            inner: PhysicalDeviceAccelerationStructurePropertiesKHR {
32866                s_type: StructureType::from_raw(1000150014i32),
32867                ..Default::default()
32868            },
32869            _marker: core::marker::PhantomData,
32870        }
32871    }
32872}
32873impl<'a> PhysicalDeviceAccelerationStructurePropertiesKHRBuilder<'a> {
32874    #[inline]
32875    pub fn max_geometry_count(mut self, value: u64) -> Self {
32876        self.inner.max_geometry_count = value;
32877        self
32878    }
32879    #[inline]
32880    pub fn max_instance_count(mut self, value: u64) -> Self {
32881        self.inner.max_instance_count = value;
32882        self
32883    }
32884    #[inline]
32885    pub fn max_primitive_count(mut self, value: u64) -> Self {
32886        self.inner.max_primitive_count = value;
32887        self
32888    }
32889    #[inline]
32890    pub fn max_per_stage_descriptor_acceleration_structures(
32891        mut self,
32892        value: u32,
32893    ) -> Self {
32894        self.inner.max_per_stage_descriptor_acceleration_structures = value;
32895        self
32896    }
32897    #[inline]
32898    pub fn max_per_stage_descriptor_update_after_bind_acceleration_structures(
32899        mut self,
32900        value: u32,
32901    ) -> Self {
32902        self.inner.max_per_stage_descriptor_update_after_bind_acceleration_structures = value;
32903        self
32904    }
32905    #[inline]
32906    pub fn max_descriptor_set_acceleration_structures(mut self, value: u32) -> Self {
32907        self.inner.max_descriptor_set_acceleration_structures = value;
32908        self
32909    }
32910    #[inline]
32911    pub fn max_descriptor_set_update_after_bind_acceleration_structures(
32912        mut self,
32913        value: u32,
32914    ) -> Self {
32915        self.inner.max_descriptor_set_update_after_bind_acceleration_structures = value;
32916        self
32917    }
32918    #[inline]
32919    pub fn min_acceleration_structure_scratch_offset_alignment(
32920        mut self,
32921        value: u32,
32922    ) -> Self {
32923        self.inner.min_acceleration_structure_scratch_offset_alignment = value;
32924        self
32925    }
32926}
32927impl<'a> core::ops::Deref
32928for PhysicalDeviceAccelerationStructurePropertiesKHRBuilder<'a> {
32929    type Target = PhysicalDeviceAccelerationStructurePropertiesKHR;
32930    #[inline]
32931    fn deref(&self) -> &Self::Target {
32932        &self.inner
32933    }
32934}
32935impl<'a> core::ops::DerefMut
32936for PhysicalDeviceAccelerationStructurePropertiesKHRBuilder<'a> {
32937    #[inline]
32938    fn deref_mut(&mut self) -> &mut Self::Target {
32939        &mut self.inner
32940    }
32941}
32942///Builder for [`PhysicalDeviceRayTracingPipelinePropertiesKHR`] with lifetime-tied pNext safety.
32943pub struct PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder<'a> {
32944    inner: PhysicalDeviceRayTracingPipelinePropertiesKHR,
32945    _marker: core::marker::PhantomData<&'a ()>,
32946}
32947impl PhysicalDeviceRayTracingPipelinePropertiesKHR {
32948    /// Start building this struct; `s_type` is already set to the correct variant.
32949    #[inline]
32950    pub fn builder<'a>() -> PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder<'a> {
32951        PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder {
32952            inner: PhysicalDeviceRayTracingPipelinePropertiesKHR {
32953                s_type: StructureType::from_raw(1000347001i32),
32954                ..Default::default()
32955            },
32956            _marker: core::marker::PhantomData,
32957        }
32958    }
32959}
32960impl<'a> PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder<'a> {
32961    #[inline]
32962    pub fn shader_group_handle_size(mut self, value: u32) -> Self {
32963        self.inner.shader_group_handle_size = value;
32964        self
32965    }
32966    #[inline]
32967    pub fn max_ray_recursion_depth(mut self, value: u32) -> Self {
32968        self.inner.max_ray_recursion_depth = value;
32969        self
32970    }
32971    #[inline]
32972    pub fn max_shader_group_stride(mut self, value: u32) -> Self {
32973        self.inner.max_shader_group_stride = value;
32974        self
32975    }
32976    #[inline]
32977    pub fn shader_group_base_alignment(mut self, value: u32) -> Self {
32978        self.inner.shader_group_base_alignment = value;
32979        self
32980    }
32981    #[inline]
32982    pub fn shader_group_handle_capture_replay_size(mut self, value: u32) -> Self {
32983        self.inner.shader_group_handle_capture_replay_size = value;
32984        self
32985    }
32986    #[inline]
32987    pub fn max_ray_dispatch_invocation_count(mut self, value: u32) -> Self {
32988        self.inner.max_ray_dispatch_invocation_count = value;
32989        self
32990    }
32991    #[inline]
32992    pub fn shader_group_handle_alignment(mut self, value: u32) -> Self {
32993        self.inner.shader_group_handle_alignment = value;
32994        self
32995    }
32996    #[inline]
32997    pub fn max_ray_hit_attribute_size(mut self, value: u32) -> Self {
32998        self.inner.max_ray_hit_attribute_size = value;
32999        self
33000    }
33001}
33002impl<'a> core::ops::Deref for PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder<'a> {
33003    type Target = PhysicalDeviceRayTracingPipelinePropertiesKHR;
33004    #[inline]
33005    fn deref(&self) -> &Self::Target {
33006        &self.inner
33007    }
33008}
33009impl<'a> core::ops::DerefMut
33010for PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder<'a> {
33011    #[inline]
33012    fn deref_mut(&mut self) -> &mut Self::Target {
33013        &mut self.inner
33014    }
33015}
33016///Builder for [`PhysicalDeviceRayTracingPropertiesNV`] with lifetime-tied pNext safety.
33017pub struct PhysicalDeviceRayTracingPropertiesNVBuilder<'a> {
33018    inner: PhysicalDeviceRayTracingPropertiesNV,
33019    _marker: core::marker::PhantomData<&'a ()>,
33020}
33021impl PhysicalDeviceRayTracingPropertiesNV {
33022    /// Start building this struct; `s_type` is already set to the correct variant.
33023    #[inline]
33024    pub fn builder<'a>() -> PhysicalDeviceRayTracingPropertiesNVBuilder<'a> {
33025        PhysicalDeviceRayTracingPropertiesNVBuilder {
33026            inner: PhysicalDeviceRayTracingPropertiesNV {
33027                s_type: StructureType::from_raw(1000165009i32),
33028                ..Default::default()
33029            },
33030            _marker: core::marker::PhantomData,
33031        }
33032    }
33033}
33034impl<'a> PhysicalDeviceRayTracingPropertiesNVBuilder<'a> {
33035    #[inline]
33036    pub fn shader_group_handle_size(mut self, value: u32) -> Self {
33037        self.inner.shader_group_handle_size = value;
33038        self
33039    }
33040    #[inline]
33041    pub fn max_recursion_depth(mut self, value: u32) -> Self {
33042        self.inner.max_recursion_depth = value;
33043        self
33044    }
33045    #[inline]
33046    pub fn max_shader_group_stride(mut self, value: u32) -> Self {
33047        self.inner.max_shader_group_stride = value;
33048        self
33049    }
33050    #[inline]
33051    pub fn shader_group_base_alignment(mut self, value: u32) -> Self {
33052        self.inner.shader_group_base_alignment = value;
33053        self
33054    }
33055    #[inline]
33056    pub fn max_geometry_count(mut self, value: u64) -> Self {
33057        self.inner.max_geometry_count = value;
33058        self
33059    }
33060    #[inline]
33061    pub fn max_instance_count(mut self, value: u64) -> Self {
33062        self.inner.max_instance_count = value;
33063        self
33064    }
33065    #[inline]
33066    pub fn max_triangle_count(mut self, value: u64) -> Self {
33067        self.inner.max_triangle_count = value;
33068        self
33069    }
33070    #[inline]
33071    pub fn max_descriptor_set_acceleration_structures(mut self, value: u32) -> Self {
33072        self.inner.max_descriptor_set_acceleration_structures = value;
33073        self
33074    }
33075}
33076impl<'a> core::ops::Deref for PhysicalDeviceRayTracingPropertiesNVBuilder<'a> {
33077    type Target = PhysicalDeviceRayTracingPropertiesNV;
33078    #[inline]
33079    fn deref(&self) -> &Self::Target {
33080        &self.inner
33081    }
33082}
33083impl<'a> core::ops::DerefMut for PhysicalDeviceRayTracingPropertiesNVBuilder<'a> {
33084    #[inline]
33085    fn deref_mut(&mut self) -> &mut Self::Target {
33086        &mut self.inner
33087    }
33088}
33089///Builder for [`StridedDeviceAddressRegionKHR`].
33090pub struct StridedDeviceAddressRegionKHRBuilder {
33091    inner: StridedDeviceAddressRegionKHR,
33092}
33093impl StridedDeviceAddressRegionKHR {
33094    /// Start building this struct.
33095    #[inline]
33096    pub fn builder() -> StridedDeviceAddressRegionKHRBuilder {
33097        StridedDeviceAddressRegionKHRBuilder {
33098            inner: StridedDeviceAddressRegionKHR {
33099                ..Default::default()
33100            },
33101        }
33102    }
33103}
33104impl StridedDeviceAddressRegionKHRBuilder {
33105    #[inline]
33106    pub fn device_address(mut self, value: u64) -> Self {
33107        self.inner.device_address = value;
33108        self
33109    }
33110    #[inline]
33111    pub fn stride(mut self, value: u64) -> Self {
33112        self.inner.stride = value;
33113        self
33114    }
33115    #[inline]
33116    pub fn size(mut self, value: u64) -> Self {
33117        self.inner.size = value;
33118        self
33119    }
33120}
33121impl core::ops::Deref for StridedDeviceAddressRegionKHRBuilder {
33122    type Target = StridedDeviceAddressRegionKHR;
33123    #[inline]
33124    fn deref(&self) -> &Self::Target {
33125        &self.inner
33126    }
33127}
33128impl core::ops::DerefMut for StridedDeviceAddressRegionKHRBuilder {
33129    #[inline]
33130    fn deref_mut(&mut self) -> &mut Self::Target {
33131        &mut self.inner
33132    }
33133}
33134///Builder for [`TraceRaysIndirectCommandKHR`].
33135pub struct TraceRaysIndirectCommandKHRBuilder {
33136    inner: TraceRaysIndirectCommandKHR,
33137}
33138impl TraceRaysIndirectCommandKHR {
33139    /// Start building this struct.
33140    #[inline]
33141    pub fn builder() -> TraceRaysIndirectCommandKHRBuilder {
33142        TraceRaysIndirectCommandKHRBuilder {
33143            inner: TraceRaysIndirectCommandKHR {
33144                ..Default::default()
33145            },
33146        }
33147    }
33148}
33149impl TraceRaysIndirectCommandKHRBuilder {
33150    #[inline]
33151    pub fn width(mut self, value: u32) -> Self {
33152        self.inner.width = value;
33153        self
33154    }
33155    #[inline]
33156    pub fn height(mut self, value: u32) -> Self {
33157        self.inner.height = value;
33158        self
33159    }
33160    #[inline]
33161    pub fn depth(mut self, value: u32) -> Self {
33162        self.inner.depth = value;
33163        self
33164    }
33165}
33166impl core::ops::Deref for TraceRaysIndirectCommandKHRBuilder {
33167    type Target = TraceRaysIndirectCommandKHR;
33168    #[inline]
33169    fn deref(&self) -> &Self::Target {
33170        &self.inner
33171    }
33172}
33173impl core::ops::DerefMut for TraceRaysIndirectCommandKHRBuilder {
33174    #[inline]
33175    fn deref_mut(&mut self) -> &mut Self::Target {
33176        &mut self.inner
33177    }
33178}
33179///Builder for [`TraceRaysIndirectCommand2KHR`].
33180pub struct TraceRaysIndirectCommand2KHRBuilder {
33181    inner: TraceRaysIndirectCommand2KHR,
33182}
33183impl TraceRaysIndirectCommand2KHR {
33184    /// Start building this struct.
33185    #[inline]
33186    pub fn builder() -> TraceRaysIndirectCommand2KHRBuilder {
33187        TraceRaysIndirectCommand2KHRBuilder {
33188            inner: TraceRaysIndirectCommand2KHR {
33189                ..Default::default()
33190            },
33191        }
33192    }
33193}
33194impl TraceRaysIndirectCommand2KHRBuilder {
33195    #[inline]
33196    pub fn raygen_shader_record_address(mut self, value: u64) -> Self {
33197        self.inner.raygen_shader_record_address = value;
33198        self
33199    }
33200    #[inline]
33201    pub fn raygen_shader_record_size(mut self, value: u64) -> Self {
33202        self.inner.raygen_shader_record_size = value;
33203        self
33204    }
33205    #[inline]
33206    pub fn miss_shader_binding_table_address(mut self, value: u64) -> Self {
33207        self.inner.miss_shader_binding_table_address = value;
33208        self
33209    }
33210    #[inline]
33211    pub fn miss_shader_binding_table_size(mut self, value: u64) -> Self {
33212        self.inner.miss_shader_binding_table_size = value;
33213        self
33214    }
33215    #[inline]
33216    pub fn miss_shader_binding_table_stride(mut self, value: u64) -> Self {
33217        self.inner.miss_shader_binding_table_stride = value;
33218        self
33219    }
33220    #[inline]
33221    pub fn hit_shader_binding_table_address(mut self, value: u64) -> Self {
33222        self.inner.hit_shader_binding_table_address = value;
33223        self
33224    }
33225    #[inline]
33226    pub fn hit_shader_binding_table_size(mut self, value: u64) -> Self {
33227        self.inner.hit_shader_binding_table_size = value;
33228        self
33229    }
33230    #[inline]
33231    pub fn hit_shader_binding_table_stride(mut self, value: u64) -> Self {
33232        self.inner.hit_shader_binding_table_stride = value;
33233        self
33234    }
33235    #[inline]
33236    pub fn callable_shader_binding_table_address(mut self, value: u64) -> Self {
33237        self.inner.callable_shader_binding_table_address = value;
33238        self
33239    }
33240    #[inline]
33241    pub fn callable_shader_binding_table_size(mut self, value: u64) -> Self {
33242        self.inner.callable_shader_binding_table_size = value;
33243        self
33244    }
33245    #[inline]
33246    pub fn callable_shader_binding_table_stride(mut self, value: u64) -> Self {
33247        self.inner.callable_shader_binding_table_stride = value;
33248        self
33249    }
33250    #[inline]
33251    pub fn width(mut self, value: u32) -> Self {
33252        self.inner.width = value;
33253        self
33254    }
33255    #[inline]
33256    pub fn height(mut self, value: u32) -> Self {
33257        self.inner.height = value;
33258        self
33259    }
33260    #[inline]
33261    pub fn depth(mut self, value: u32) -> Self {
33262        self.inner.depth = value;
33263        self
33264    }
33265}
33266impl core::ops::Deref for TraceRaysIndirectCommand2KHRBuilder {
33267    type Target = TraceRaysIndirectCommand2KHR;
33268    #[inline]
33269    fn deref(&self) -> &Self::Target {
33270        &self.inner
33271    }
33272}
33273impl core::ops::DerefMut for TraceRaysIndirectCommand2KHRBuilder {
33274    #[inline]
33275    fn deref_mut(&mut self) -> &mut Self::Target {
33276        &mut self.inner
33277    }
33278}
33279///Builder for [`PhysicalDeviceRayTracingMaintenance1FeaturesKHR`] with lifetime-tied pNext safety.
33280pub struct PhysicalDeviceRayTracingMaintenance1FeaturesKHRBuilder<'a> {
33281    inner: PhysicalDeviceRayTracingMaintenance1FeaturesKHR,
33282    _marker: core::marker::PhantomData<&'a ()>,
33283}
33284impl PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
33285    /// Start building this struct; `s_type` is already set to the correct variant.
33286    #[inline]
33287    pub fn builder<'a>() -> PhysicalDeviceRayTracingMaintenance1FeaturesKHRBuilder<'a> {
33288        PhysicalDeviceRayTracingMaintenance1FeaturesKHRBuilder {
33289            inner: PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
33290                s_type: StructureType::from_raw(1000386000i32),
33291                ..Default::default()
33292            },
33293            _marker: core::marker::PhantomData,
33294        }
33295    }
33296}
33297impl<'a> PhysicalDeviceRayTracingMaintenance1FeaturesKHRBuilder<'a> {
33298    #[inline]
33299    pub fn ray_tracing_maintenance1(mut self, value: bool) -> Self {
33300        self.inner.ray_tracing_maintenance1 = value as u32;
33301        self
33302    }
33303    #[inline]
33304    pub fn ray_tracing_pipeline_trace_rays_indirect2(mut self, value: bool) -> Self {
33305        self.inner.ray_tracing_pipeline_trace_rays_indirect2 = value as u32;
33306        self
33307    }
33308    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceRayTracingMaintenance1FeaturesKHR`]'s **Extended By** section for valid types.
33309    #[inline]
33310    pub fn push_next<T: ExtendsPhysicalDeviceRayTracingMaintenance1FeaturesKHR>(
33311        mut self,
33312        next: &'a mut T,
33313    ) -> Self {
33314        unsafe {
33315            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
33316            (*next_ptr).p_next = self.inner.p_next as *mut _;
33317            self.inner.p_next = <*mut BaseOutStructure>::cast::<
33318                core::ffi::c_void,
33319            >(next_ptr);
33320        }
33321        self
33322    }
33323}
33324impl<'a> core::ops::Deref
33325for PhysicalDeviceRayTracingMaintenance1FeaturesKHRBuilder<'a> {
33326    type Target = PhysicalDeviceRayTracingMaintenance1FeaturesKHR;
33327    #[inline]
33328    fn deref(&self) -> &Self::Target {
33329        &self.inner
33330    }
33331}
33332impl<'a> core::ops::DerefMut
33333for PhysicalDeviceRayTracingMaintenance1FeaturesKHRBuilder<'a> {
33334    #[inline]
33335    fn deref_mut(&mut self) -> &mut Self::Target {
33336        &mut self.inner
33337    }
33338}
33339///Builder for [`DrmFormatModifierPropertiesListEXT`] with lifetime-tied pNext safety.
33340pub struct DrmFormatModifierPropertiesListEXTBuilder<'a> {
33341    inner: DrmFormatModifierPropertiesListEXT,
33342    _marker: core::marker::PhantomData<&'a ()>,
33343}
33344impl DrmFormatModifierPropertiesListEXT {
33345    /// Start building this struct; `s_type` is already set to the correct variant.
33346    #[inline]
33347    pub fn builder<'a>() -> DrmFormatModifierPropertiesListEXTBuilder<'a> {
33348        DrmFormatModifierPropertiesListEXTBuilder {
33349            inner: DrmFormatModifierPropertiesListEXT {
33350                s_type: StructureType::from_raw(1000158000i32),
33351                ..Default::default()
33352            },
33353            _marker: core::marker::PhantomData,
33354        }
33355    }
33356}
33357impl<'a> DrmFormatModifierPropertiesListEXTBuilder<'a> {
33358    #[inline]
33359    pub fn drm_format_modifier_count(mut self, value: u32) -> Self {
33360        self.inner.drm_format_modifier_count = value;
33361        self
33362    }
33363    #[inline]
33364    pub fn drm_format_modifier_properties(
33365        mut self,
33366        slice: &'a mut [DrmFormatModifierPropertiesEXT],
33367    ) -> Self {
33368        self.inner.drm_format_modifier_count = slice.len() as u32;
33369        self.inner.p_drm_format_modifier_properties = slice.as_mut_ptr();
33370        self
33371    }
33372}
33373impl<'a> core::ops::Deref for DrmFormatModifierPropertiesListEXTBuilder<'a> {
33374    type Target = DrmFormatModifierPropertiesListEXT;
33375    #[inline]
33376    fn deref(&self) -> &Self::Target {
33377        &self.inner
33378    }
33379}
33380impl<'a> core::ops::DerefMut for DrmFormatModifierPropertiesListEXTBuilder<'a> {
33381    #[inline]
33382    fn deref_mut(&mut self) -> &mut Self::Target {
33383        &mut self.inner
33384    }
33385}
33386///Builder for [`DrmFormatModifierPropertiesEXT`].
33387pub struct DrmFormatModifierPropertiesEXTBuilder {
33388    inner: DrmFormatModifierPropertiesEXT,
33389}
33390impl DrmFormatModifierPropertiesEXT {
33391    /// Start building this struct.
33392    #[inline]
33393    pub fn builder() -> DrmFormatModifierPropertiesEXTBuilder {
33394        DrmFormatModifierPropertiesEXTBuilder {
33395            inner: DrmFormatModifierPropertiesEXT {
33396                ..Default::default()
33397            },
33398        }
33399    }
33400}
33401impl DrmFormatModifierPropertiesEXTBuilder {
33402    #[inline]
33403    pub fn drm_format_modifier(mut self, value: u64) -> Self {
33404        self.inner.drm_format_modifier = value;
33405        self
33406    }
33407    #[inline]
33408    pub fn drm_format_modifier_plane_count(mut self, value: u32) -> Self {
33409        self.inner.drm_format_modifier_plane_count = value;
33410        self
33411    }
33412    #[inline]
33413    pub fn drm_format_modifier_tiling_features(
33414        mut self,
33415        value: FormatFeatureFlags,
33416    ) -> Self {
33417        self.inner.drm_format_modifier_tiling_features = value;
33418        self
33419    }
33420}
33421impl core::ops::Deref for DrmFormatModifierPropertiesEXTBuilder {
33422    type Target = DrmFormatModifierPropertiesEXT;
33423    #[inline]
33424    fn deref(&self) -> &Self::Target {
33425        &self.inner
33426    }
33427}
33428impl core::ops::DerefMut for DrmFormatModifierPropertiesEXTBuilder {
33429    #[inline]
33430    fn deref_mut(&mut self) -> &mut Self::Target {
33431        &mut self.inner
33432    }
33433}
33434///Builder for [`PhysicalDeviceImageDrmFormatModifierInfoEXT`] with lifetime-tied pNext safety.
33435pub struct PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder<'a> {
33436    inner: PhysicalDeviceImageDrmFormatModifierInfoEXT,
33437    _marker: core::marker::PhantomData<&'a ()>,
33438}
33439impl PhysicalDeviceImageDrmFormatModifierInfoEXT {
33440    /// Start building this struct; `s_type` is already set to the correct variant.
33441    #[inline]
33442    pub fn builder<'a>() -> PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder<'a> {
33443        PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder {
33444            inner: PhysicalDeviceImageDrmFormatModifierInfoEXT {
33445                s_type: StructureType::from_raw(1000158002i32),
33446                ..Default::default()
33447            },
33448            _marker: core::marker::PhantomData,
33449        }
33450    }
33451}
33452impl<'a> PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder<'a> {
33453    #[inline]
33454    pub fn drm_format_modifier(mut self, value: u64) -> Self {
33455        self.inner.drm_format_modifier = value;
33456        self
33457    }
33458    #[inline]
33459    pub fn sharing_mode(mut self, value: SharingMode) -> Self {
33460        self.inner.sharing_mode = value;
33461        self
33462    }
33463    #[inline]
33464    pub fn queue_family_indices(mut self, slice: &'a [u32]) -> Self {
33465        self.inner.queue_family_index_count = slice.len() as u32;
33466        self.inner.p_queue_family_indices = slice.as_ptr();
33467        self
33468    }
33469    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceImageDrmFormatModifierInfoEXT`]'s **Extended By** section for valid types.
33470    #[inline]
33471    pub fn push_next<T: ExtendsPhysicalDeviceImageDrmFormatModifierInfoEXT>(
33472        mut self,
33473        next: &'a mut T,
33474    ) -> Self {
33475        unsafe {
33476            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
33477            (*next_ptr).p_next = self.inner.p_next as *mut _;
33478            self.inner.p_next = <*mut BaseOutStructure>::cast::<
33479                core::ffi::c_void,
33480            >(next_ptr) as *const _;
33481        }
33482        self
33483    }
33484}
33485impl<'a> core::ops::Deref for PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder<'a> {
33486    type Target = PhysicalDeviceImageDrmFormatModifierInfoEXT;
33487    #[inline]
33488    fn deref(&self) -> &Self::Target {
33489        &self.inner
33490    }
33491}
33492impl<'a> core::ops::DerefMut for PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder<'a> {
33493    #[inline]
33494    fn deref_mut(&mut self) -> &mut Self::Target {
33495        &mut self.inner
33496    }
33497}
33498///Builder for [`ImageDrmFormatModifierListCreateInfoEXT`] with lifetime-tied pNext safety.
33499pub struct ImageDrmFormatModifierListCreateInfoEXTBuilder<'a> {
33500    inner: ImageDrmFormatModifierListCreateInfoEXT,
33501    _marker: core::marker::PhantomData<&'a ()>,
33502}
33503impl ImageDrmFormatModifierListCreateInfoEXT {
33504    /// Start building this struct; `s_type` is already set to the correct variant.
33505    #[inline]
33506    pub fn builder<'a>() -> ImageDrmFormatModifierListCreateInfoEXTBuilder<'a> {
33507        ImageDrmFormatModifierListCreateInfoEXTBuilder {
33508            inner: ImageDrmFormatModifierListCreateInfoEXT {
33509                s_type: StructureType::from_raw(1000158003i32),
33510                ..Default::default()
33511            },
33512            _marker: core::marker::PhantomData,
33513        }
33514    }
33515}
33516impl<'a> ImageDrmFormatModifierListCreateInfoEXTBuilder<'a> {
33517    #[inline]
33518    pub fn drm_format_modifiers(mut self, slice: &'a [u64]) -> Self {
33519        self.inner.drm_format_modifier_count = slice.len() as u32;
33520        self.inner.p_drm_format_modifiers = slice.as_ptr();
33521        self
33522    }
33523    ///Prepend a struct to the pNext chain. See [`ImageDrmFormatModifierListCreateInfoEXT`]'s **Extended By** section for valid types.
33524    #[inline]
33525    pub fn push_next<T: ExtendsImageDrmFormatModifierListCreateInfoEXT>(
33526        mut self,
33527        next: &'a mut T,
33528    ) -> Self {
33529        unsafe {
33530            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
33531            (*next_ptr).p_next = self.inner.p_next as *mut _;
33532            self.inner.p_next = <*mut BaseOutStructure>::cast::<
33533                core::ffi::c_void,
33534            >(next_ptr) as *const _;
33535        }
33536        self
33537    }
33538}
33539impl<'a> core::ops::Deref for ImageDrmFormatModifierListCreateInfoEXTBuilder<'a> {
33540    type Target = ImageDrmFormatModifierListCreateInfoEXT;
33541    #[inline]
33542    fn deref(&self) -> &Self::Target {
33543        &self.inner
33544    }
33545}
33546impl<'a> core::ops::DerefMut for ImageDrmFormatModifierListCreateInfoEXTBuilder<'a> {
33547    #[inline]
33548    fn deref_mut(&mut self) -> &mut Self::Target {
33549        &mut self.inner
33550    }
33551}
33552///Builder for [`ImageDrmFormatModifierExplicitCreateInfoEXT`] with lifetime-tied pNext safety.
33553pub struct ImageDrmFormatModifierExplicitCreateInfoEXTBuilder<'a> {
33554    inner: ImageDrmFormatModifierExplicitCreateInfoEXT,
33555    _marker: core::marker::PhantomData<&'a ()>,
33556}
33557impl ImageDrmFormatModifierExplicitCreateInfoEXT {
33558    /// Start building this struct; `s_type` is already set to the correct variant.
33559    #[inline]
33560    pub fn builder<'a>() -> ImageDrmFormatModifierExplicitCreateInfoEXTBuilder<'a> {
33561        ImageDrmFormatModifierExplicitCreateInfoEXTBuilder {
33562            inner: ImageDrmFormatModifierExplicitCreateInfoEXT {
33563                s_type: StructureType::from_raw(1000158004i32),
33564                ..Default::default()
33565            },
33566            _marker: core::marker::PhantomData,
33567        }
33568    }
33569}
33570impl<'a> ImageDrmFormatModifierExplicitCreateInfoEXTBuilder<'a> {
33571    #[inline]
33572    pub fn drm_format_modifier(mut self, value: u64) -> Self {
33573        self.inner.drm_format_modifier = value;
33574        self
33575    }
33576    #[inline]
33577    pub fn plane_layouts(mut self, slice: &'a [SubresourceLayout]) -> Self {
33578        self.inner.drm_format_modifier_plane_count = slice.len() as u32;
33579        self.inner.p_plane_layouts = slice.as_ptr();
33580        self
33581    }
33582    ///Prepend a struct to the pNext chain. See [`ImageDrmFormatModifierExplicitCreateInfoEXT`]'s **Extended By** section for valid types.
33583    #[inline]
33584    pub fn push_next<T: ExtendsImageDrmFormatModifierExplicitCreateInfoEXT>(
33585        mut self,
33586        next: &'a mut T,
33587    ) -> Self {
33588        unsafe {
33589            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
33590            (*next_ptr).p_next = self.inner.p_next as *mut _;
33591            self.inner.p_next = <*mut BaseOutStructure>::cast::<
33592                core::ffi::c_void,
33593            >(next_ptr) as *const _;
33594        }
33595        self
33596    }
33597}
33598impl<'a> core::ops::Deref for ImageDrmFormatModifierExplicitCreateInfoEXTBuilder<'a> {
33599    type Target = ImageDrmFormatModifierExplicitCreateInfoEXT;
33600    #[inline]
33601    fn deref(&self) -> &Self::Target {
33602        &self.inner
33603    }
33604}
33605impl<'a> core::ops::DerefMut for ImageDrmFormatModifierExplicitCreateInfoEXTBuilder<'a> {
33606    #[inline]
33607    fn deref_mut(&mut self) -> &mut Self::Target {
33608        &mut self.inner
33609    }
33610}
33611///Builder for [`ImageDrmFormatModifierPropertiesEXT`] with lifetime-tied pNext safety.
33612pub struct ImageDrmFormatModifierPropertiesEXTBuilder<'a> {
33613    inner: ImageDrmFormatModifierPropertiesEXT,
33614    _marker: core::marker::PhantomData<&'a ()>,
33615}
33616impl ImageDrmFormatModifierPropertiesEXT {
33617    /// Start building this struct; `s_type` is already set to the correct variant.
33618    #[inline]
33619    pub fn builder<'a>() -> ImageDrmFormatModifierPropertiesEXTBuilder<'a> {
33620        ImageDrmFormatModifierPropertiesEXTBuilder {
33621            inner: ImageDrmFormatModifierPropertiesEXT {
33622                s_type: StructureType::from_raw(1000158005i32),
33623                ..Default::default()
33624            },
33625            _marker: core::marker::PhantomData,
33626        }
33627    }
33628}
33629impl<'a> ImageDrmFormatModifierPropertiesEXTBuilder<'a> {
33630    #[inline]
33631    pub fn drm_format_modifier(mut self, value: u64) -> Self {
33632        self.inner.drm_format_modifier = value;
33633        self
33634    }
33635}
33636impl<'a> core::ops::Deref for ImageDrmFormatModifierPropertiesEXTBuilder<'a> {
33637    type Target = ImageDrmFormatModifierPropertiesEXT;
33638    #[inline]
33639    fn deref(&self) -> &Self::Target {
33640        &self.inner
33641    }
33642}
33643impl<'a> core::ops::DerefMut for ImageDrmFormatModifierPropertiesEXTBuilder<'a> {
33644    #[inline]
33645    fn deref_mut(&mut self) -> &mut Self::Target {
33646        &mut self.inner
33647    }
33648}
33649///Builder for [`ImageStencilUsageCreateInfo`] with lifetime-tied pNext safety.
33650pub struct ImageStencilUsageCreateInfoBuilder<'a> {
33651    inner: ImageStencilUsageCreateInfo,
33652    _marker: core::marker::PhantomData<&'a ()>,
33653}
33654impl ImageStencilUsageCreateInfo {
33655    /// Start building this struct; `s_type` is already set to the correct variant.
33656    #[inline]
33657    pub fn builder<'a>() -> ImageStencilUsageCreateInfoBuilder<'a> {
33658        ImageStencilUsageCreateInfoBuilder {
33659            inner: ImageStencilUsageCreateInfo {
33660                s_type: StructureType::from_raw(1000246000i32),
33661                ..Default::default()
33662            },
33663            _marker: core::marker::PhantomData,
33664        }
33665    }
33666}
33667impl<'a> ImageStencilUsageCreateInfoBuilder<'a> {
33668    #[inline]
33669    pub fn stencil_usage(mut self, value: ImageUsageFlags) -> Self {
33670        self.inner.stencil_usage = value;
33671        self
33672    }
33673    ///Prepend a struct to the pNext chain. See [`ImageStencilUsageCreateInfo`]'s **Extended By** section for valid types.
33674    #[inline]
33675    pub fn push_next<T: ExtendsImageStencilUsageCreateInfo>(
33676        mut self,
33677        next: &'a mut T,
33678    ) -> Self {
33679        unsafe {
33680            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
33681            (*next_ptr).p_next = self.inner.p_next as *mut _;
33682            self.inner.p_next = <*mut BaseOutStructure>::cast::<
33683                core::ffi::c_void,
33684            >(next_ptr) as *const _;
33685        }
33686        self
33687    }
33688}
33689impl<'a> core::ops::Deref for ImageStencilUsageCreateInfoBuilder<'a> {
33690    type Target = ImageStencilUsageCreateInfo;
33691    #[inline]
33692    fn deref(&self) -> &Self::Target {
33693        &self.inner
33694    }
33695}
33696impl<'a> core::ops::DerefMut for ImageStencilUsageCreateInfoBuilder<'a> {
33697    #[inline]
33698    fn deref_mut(&mut self) -> &mut Self::Target {
33699        &mut self.inner
33700    }
33701}
33702///Builder for [`DeviceMemoryOverallocationCreateInfoAMD`] with lifetime-tied pNext safety.
33703pub struct DeviceMemoryOverallocationCreateInfoAMDBuilder<'a> {
33704    inner: DeviceMemoryOverallocationCreateInfoAMD,
33705    _marker: core::marker::PhantomData<&'a ()>,
33706}
33707impl DeviceMemoryOverallocationCreateInfoAMD {
33708    /// Start building this struct; `s_type` is already set to the correct variant.
33709    #[inline]
33710    pub fn builder<'a>() -> DeviceMemoryOverallocationCreateInfoAMDBuilder<'a> {
33711        DeviceMemoryOverallocationCreateInfoAMDBuilder {
33712            inner: DeviceMemoryOverallocationCreateInfoAMD {
33713                s_type: StructureType::from_raw(1000189000i32),
33714                ..Default::default()
33715            },
33716            _marker: core::marker::PhantomData,
33717        }
33718    }
33719}
33720impl<'a> DeviceMemoryOverallocationCreateInfoAMDBuilder<'a> {
33721    #[inline]
33722    pub fn overallocation_behavior(
33723        mut self,
33724        value: MemoryOverallocationBehaviorAMD,
33725    ) -> Self {
33726        self.inner.overallocation_behavior = value;
33727        self
33728    }
33729    ///Prepend a struct to the pNext chain. See [`DeviceMemoryOverallocationCreateInfoAMD`]'s **Extended By** section for valid types.
33730    #[inline]
33731    pub fn push_next<T: ExtendsDeviceMemoryOverallocationCreateInfoAMD>(
33732        mut self,
33733        next: &'a mut T,
33734    ) -> Self {
33735        unsafe {
33736            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
33737            (*next_ptr).p_next = self.inner.p_next as *mut _;
33738            self.inner.p_next = <*mut BaseOutStructure>::cast::<
33739                core::ffi::c_void,
33740            >(next_ptr) as *const _;
33741        }
33742        self
33743    }
33744}
33745impl<'a> core::ops::Deref for DeviceMemoryOverallocationCreateInfoAMDBuilder<'a> {
33746    type Target = DeviceMemoryOverallocationCreateInfoAMD;
33747    #[inline]
33748    fn deref(&self) -> &Self::Target {
33749        &self.inner
33750    }
33751}
33752impl<'a> core::ops::DerefMut for DeviceMemoryOverallocationCreateInfoAMDBuilder<'a> {
33753    #[inline]
33754    fn deref_mut(&mut self) -> &mut Self::Target {
33755        &mut self.inner
33756    }
33757}
33758///Builder for [`PhysicalDeviceFragmentDensityMapFeaturesEXT`] with lifetime-tied pNext safety.
33759pub struct PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder<'a> {
33760    inner: PhysicalDeviceFragmentDensityMapFeaturesEXT,
33761    _marker: core::marker::PhantomData<&'a ()>,
33762}
33763impl PhysicalDeviceFragmentDensityMapFeaturesEXT {
33764    /// Start building this struct; `s_type` is already set to the correct variant.
33765    #[inline]
33766    pub fn builder<'a>() -> PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder<'a> {
33767        PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder {
33768            inner: PhysicalDeviceFragmentDensityMapFeaturesEXT {
33769                s_type: StructureType::from_raw(1000218000i32),
33770                ..Default::default()
33771            },
33772            _marker: core::marker::PhantomData,
33773        }
33774    }
33775}
33776impl<'a> PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder<'a> {
33777    #[inline]
33778    pub fn fragment_density_map(mut self, value: bool) -> Self {
33779        self.inner.fragment_density_map = value as u32;
33780        self
33781    }
33782    #[inline]
33783    pub fn fragment_density_map_dynamic(mut self, value: bool) -> Self {
33784        self.inner.fragment_density_map_dynamic = value as u32;
33785        self
33786    }
33787    #[inline]
33788    pub fn fragment_density_map_non_subsampled_images(mut self, value: bool) -> Self {
33789        self.inner.fragment_density_map_non_subsampled_images = value as u32;
33790        self
33791    }
33792    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceFragmentDensityMapFeaturesEXT`]'s **Extended By** section for valid types.
33793    #[inline]
33794    pub fn push_next<T: ExtendsPhysicalDeviceFragmentDensityMapFeaturesEXT>(
33795        mut self,
33796        next: &'a mut T,
33797    ) -> Self {
33798        unsafe {
33799            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
33800            (*next_ptr).p_next = self.inner.p_next as *mut _;
33801            self.inner.p_next = <*mut BaseOutStructure>::cast::<
33802                core::ffi::c_void,
33803            >(next_ptr);
33804        }
33805        self
33806    }
33807}
33808impl<'a> core::ops::Deref for PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder<'a> {
33809    type Target = PhysicalDeviceFragmentDensityMapFeaturesEXT;
33810    #[inline]
33811    fn deref(&self) -> &Self::Target {
33812        &self.inner
33813    }
33814}
33815impl<'a> core::ops::DerefMut for PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder<'a> {
33816    #[inline]
33817    fn deref_mut(&mut self) -> &mut Self::Target {
33818        &mut self.inner
33819    }
33820}
33821///Builder for [`PhysicalDeviceFragmentDensityMap2FeaturesEXT`] with lifetime-tied pNext safety.
33822pub struct PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder<'a> {
33823    inner: PhysicalDeviceFragmentDensityMap2FeaturesEXT,
33824    _marker: core::marker::PhantomData<&'a ()>,
33825}
33826impl PhysicalDeviceFragmentDensityMap2FeaturesEXT {
33827    /// Start building this struct; `s_type` is already set to the correct variant.
33828    #[inline]
33829    pub fn builder<'a>() -> PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder<'a> {
33830        PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder {
33831            inner: PhysicalDeviceFragmentDensityMap2FeaturesEXT {
33832                s_type: StructureType::from_raw(1000332000i32),
33833                ..Default::default()
33834            },
33835            _marker: core::marker::PhantomData,
33836        }
33837    }
33838}
33839impl<'a> PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder<'a> {
33840    #[inline]
33841    pub fn fragment_density_map_deferred(mut self, value: bool) -> Self {
33842        self.inner.fragment_density_map_deferred = value as u32;
33843        self
33844    }
33845    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceFragmentDensityMap2FeaturesEXT`]'s **Extended By** section for valid types.
33846    #[inline]
33847    pub fn push_next<T: ExtendsPhysicalDeviceFragmentDensityMap2FeaturesEXT>(
33848        mut self,
33849        next: &'a mut T,
33850    ) -> Self {
33851        unsafe {
33852            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
33853            (*next_ptr).p_next = self.inner.p_next as *mut _;
33854            self.inner.p_next = <*mut BaseOutStructure>::cast::<
33855                core::ffi::c_void,
33856            >(next_ptr);
33857        }
33858        self
33859    }
33860}
33861impl<'a> core::ops::Deref for PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder<'a> {
33862    type Target = PhysicalDeviceFragmentDensityMap2FeaturesEXT;
33863    #[inline]
33864    fn deref(&self) -> &Self::Target {
33865        &self.inner
33866    }
33867}
33868impl<'a> core::ops::DerefMut
33869for PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder<'a> {
33870    #[inline]
33871    fn deref_mut(&mut self) -> &mut Self::Target {
33872        &mut self.inner
33873    }
33874}
33875///Builder for [`PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT`] with lifetime-tied pNext safety.
33876pub struct PhysicalDeviceFragmentDensityMapOffsetFeaturesEXTBuilder<'a> {
33877    inner: PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT,
33878    _marker: core::marker::PhantomData<&'a ()>,
33879}
33880impl PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {
33881    /// Start building this struct; `s_type` is already set to the correct variant.
33882    #[inline]
33883    pub fn builder<'a>() -> PhysicalDeviceFragmentDensityMapOffsetFeaturesEXTBuilder<
33884        'a,
33885    > {
33886        PhysicalDeviceFragmentDensityMapOffsetFeaturesEXTBuilder {
33887            inner: PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {
33888                s_type: StructureType::from_raw(1000425000i32),
33889                ..Default::default()
33890            },
33891            _marker: core::marker::PhantomData,
33892        }
33893    }
33894}
33895impl<'a> PhysicalDeviceFragmentDensityMapOffsetFeaturesEXTBuilder<'a> {
33896    #[inline]
33897    pub fn fragment_density_map_offset(mut self, value: bool) -> Self {
33898        self.inner.fragment_density_map_offset = value as u32;
33899        self
33900    }
33901    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT`]'s **Extended By** section for valid types.
33902    #[inline]
33903    pub fn push_next<T: ExtendsPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT>(
33904        mut self,
33905        next: &'a mut T,
33906    ) -> Self {
33907        unsafe {
33908            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
33909            (*next_ptr).p_next = self.inner.p_next as *mut _;
33910            self.inner.p_next = <*mut BaseOutStructure>::cast::<
33911                core::ffi::c_void,
33912            >(next_ptr);
33913        }
33914        self
33915    }
33916}
33917impl<'a> core::ops::Deref
33918for PhysicalDeviceFragmentDensityMapOffsetFeaturesEXTBuilder<'a> {
33919    type Target = PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT;
33920    #[inline]
33921    fn deref(&self) -> &Self::Target {
33922        &self.inner
33923    }
33924}
33925impl<'a> core::ops::DerefMut
33926for PhysicalDeviceFragmentDensityMapOffsetFeaturesEXTBuilder<'a> {
33927    #[inline]
33928    fn deref_mut(&mut self) -> &mut Self::Target {
33929        &mut self.inner
33930    }
33931}
33932///Builder for [`PhysicalDeviceFragmentDensityMapPropertiesEXT`] with lifetime-tied pNext safety.
33933pub struct PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder<'a> {
33934    inner: PhysicalDeviceFragmentDensityMapPropertiesEXT,
33935    _marker: core::marker::PhantomData<&'a ()>,
33936}
33937impl PhysicalDeviceFragmentDensityMapPropertiesEXT {
33938    /// Start building this struct; `s_type` is already set to the correct variant.
33939    #[inline]
33940    pub fn builder<'a>() -> PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder<'a> {
33941        PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder {
33942            inner: PhysicalDeviceFragmentDensityMapPropertiesEXT {
33943                s_type: StructureType::from_raw(1000218001i32),
33944                ..Default::default()
33945            },
33946            _marker: core::marker::PhantomData,
33947        }
33948    }
33949}
33950impl<'a> PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder<'a> {
33951    #[inline]
33952    pub fn min_fragment_density_texel_size(mut self, value: Extent2D) -> Self {
33953        self.inner.min_fragment_density_texel_size = value;
33954        self
33955    }
33956    #[inline]
33957    pub fn max_fragment_density_texel_size(mut self, value: Extent2D) -> Self {
33958        self.inner.max_fragment_density_texel_size = value;
33959        self
33960    }
33961    #[inline]
33962    pub fn fragment_density_invocations(mut self, value: bool) -> Self {
33963        self.inner.fragment_density_invocations = value as u32;
33964        self
33965    }
33966}
33967impl<'a> core::ops::Deref for PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder<'a> {
33968    type Target = PhysicalDeviceFragmentDensityMapPropertiesEXT;
33969    #[inline]
33970    fn deref(&self) -> &Self::Target {
33971        &self.inner
33972    }
33973}
33974impl<'a> core::ops::DerefMut
33975for PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder<'a> {
33976    #[inline]
33977    fn deref_mut(&mut self) -> &mut Self::Target {
33978        &mut self.inner
33979    }
33980}
33981///Builder for [`PhysicalDeviceFragmentDensityMap2PropertiesEXT`] with lifetime-tied pNext safety.
33982pub struct PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder<'a> {
33983    inner: PhysicalDeviceFragmentDensityMap2PropertiesEXT,
33984    _marker: core::marker::PhantomData<&'a ()>,
33985}
33986impl PhysicalDeviceFragmentDensityMap2PropertiesEXT {
33987    /// Start building this struct; `s_type` is already set to the correct variant.
33988    #[inline]
33989    pub fn builder<'a>() -> PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder<'a> {
33990        PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder {
33991            inner: PhysicalDeviceFragmentDensityMap2PropertiesEXT {
33992                s_type: StructureType::from_raw(1000332001i32),
33993                ..Default::default()
33994            },
33995            _marker: core::marker::PhantomData,
33996        }
33997    }
33998}
33999impl<'a> PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder<'a> {
34000    #[inline]
34001    pub fn subsampled_loads(mut self, value: bool) -> Self {
34002        self.inner.subsampled_loads = value as u32;
34003        self
34004    }
34005    #[inline]
34006    pub fn subsampled_coarse_reconstruction_early_access(mut self, value: bool) -> Self {
34007        self.inner.subsampled_coarse_reconstruction_early_access = value as u32;
34008        self
34009    }
34010    #[inline]
34011    pub fn max_subsampled_array_layers(mut self, value: u32) -> Self {
34012        self.inner.max_subsampled_array_layers = value;
34013        self
34014    }
34015    #[inline]
34016    pub fn max_descriptor_set_subsampled_samplers(mut self, value: u32) -> Self {
34017        self.inner.max_descriptor_set_subsampled_samplers = value;
34018        self
34019    }
34020}
34021impl<'a> core::ops::Deref for PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder<'a> {
34022    type Target = PhysicalDeviceFragmentDensityMap2PropertiesEXT;
34023    #[inline]
34024    fn deref(&self) -> &Self::Target {
34025        &self.inner
34026    }
34027}
34028impl<'a> core::ops::DerefMut
34029for PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder<'a> {
34030    #[inline]
34031    fn deref_mut(&mut self) -> &mut Self::Target {
34032        &mut self.inner
34033    }
34034}
34035///Builder for [`PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT`] with lifetime-tied pNext safety.
34036pub struct PhysicalDeviceFragmentDensityMapOffsetPropertiesEXTBuilder<'a> {
34037    inner: PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT,
34038    _marker: core::marker::PhantomData<&'a ()>,
34039}
34040impl PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {
34041    /// Start building this struct; `s_type` is already set to the correct variant.
34042    #[inline]
34043    pub fn builder<'a>() -> PhysicalDeviceFragmentDensityMapOffsetPropertiesEXTBuilder<
34044        'a,
34045    > {
34046        PhysicalDeviceFragmentDensityMapOffsetPropertiesEXTBuilder {
34047            inner: PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {
34048                s_type: StructureType::from_raw(1000425001i32),
34049                ..Default::default()
34050            },
34051            _marker: core::marker::PhantomData,
34052        }
34053    }
34054}
34055impl<'a> PhysicalDeviceFragmentDensityMapOffsetPropertiesEXTBuilder<'a> {
34056    #[inline]
34057    pub fn fragment_density_offset_granularity(mut self, value: Extent2D) -> Self {
34058        self.inner.fragment_density_offset_granularity = value;
34059        self
34060    }
34061}
34062impl<'a> core::ops::Deref
34063for PhysicalDeviceFragmentDensityMapOffsetPropertiesEXTBuilder<'a> {
34064    type Target = PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT;
34065    #[inline]
34066    fn deref(&self) -> &Self::Target {
34067        &self.inner
34068    }
34069}
34070impl<'a> core::ops::DerefMut
34071for PhysicalDeviceFragmentDensityMapOffsetPropertiesEXTBuilder<'a> {
34072    #[inline]
34073    fn deref_mut(&mut self) -> &mut Self::Target {
34074        &mut self.inner
34075    }
34076}
34077///Builder for [`RenderPassFragmentDensityMapCreateInfoEXT`] with lifetime-tied pNext safety.
34078pub struct RenderPassFragmentDensityMapCreateInfoEXTBuilder<'a> {
34079    inner: RenderPassFragmentDensityMapCreateInfoEXT,
34080    _marker: core::marker::PhantomData<&'a ()>,
34081}
34082impl RenderPassFragmentDensityMapCreateInfoEXT {
34083    /// Start building this struct; `s_type` is already set to the correct variant.
34084    #[inline]
34085    pub fn builder<'a>() -> RenderPassFragmentDensityMapCreateInfoEXTBuilder<'a> {
34086        RenderPassFragmentDensityMapCreateInfoEXTBuilder {
34087            inner: RenderPassFragmentDensityMapCreateInfoEXT {
34088                s_type: StructureType::from_raw(1000218002i32),
34089                ..Default::default()
34090            },
34091            _marker: core::marker::PhantomData,
34092        }
34093    }
34094}
34095impl<'a> RenderPassFragmentDensityMapCreateInfoEXTBuilder<'a> {
34096    #[inline]
34097    pub fn fragment_density_map_attachment(
34098        mut self,
34099        value: AttachmentReference,
34100    ) -> Self {
34101        self.inner.fragment_density_map_attachment = value;
34102        self
34103    }
34104    ///Prepend a struct to the pNext chain. See [`RenderPassFragmentDensityMapCreateInfoEXT`]'s **Extended By** section for valid types.
34105    #[inline]
34106    pub fn push_next<T: ExtendsRenderPassFragmentDensityMapCreateInfoEXT>(
34107        mut self,
34108        next: &'a mut T,
34109    ) -> Self {
34110        unsafe {
34111            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
34112            (*next_ptr).p_next = self.inner.p_next as *mut _;
34113            self.inner.p_next = <*mut BaseOutStructure>::cast::<
34114                core::ffi::c_void,
34115            >(next_ptr) as *const _;
34116        }
34117        self
34118    }
34119}
34120impl<'a> core::ops::Deref for RenderPassFragmentDensityMapCreateInfoEXTBuilder<'a> {
34121    type Target = RenderPassFragmentDensityMapCreateInfoEXT;
34122    #[inline]
34123    fn deref(&self) -> &Self::Target {
34124        &self.inner
34125    }
34126}
34127impl<'a> core::ops::DerefMut for RenderPassFragmentDensityMapCreateInfoEXTBuilder<'a> {
34128    #[inline]
34129    fn deref_mut(&mut self) -> &mut Self::Target {
34130        &mut self.inner
34131    }
34132}
34133///Builder for [`RenderPassFragmentDensityMapOffsetEndInfoEXT`] with lifetime-tied pNext safety.
34134pub struct RenderPassFragmentDensityMapOffsetEndInfoEXTBuilder<'a> {
34135    inner: RenderPassFragmentDensityMapOffsetEndInfoEXT,
34136    _marker: core::marker::PhantomData<&'a ()>,
34137}
34138impl RenderPassFragmentDensityMapOffsetEndInfoEXT {
34139    /// Start building this struct; `s_type` is already set to the correct variant.
34140    #[inline]
34141    pub fn builder<'a>() -> RenderPassFragmentDensityMapOffsetEndInfoEXTBuilder<'a> {
34142        RenderPassFragmentDensityMapOffsetEndInfoEXTBuilder {
34143            inner: RenderPassFragmentDensityMapOffsetEndInfoEXT {
34144                s_type: StructureType::from_raw(1000425002i32),
34145                ..Default::default()
34146            },
34147            _marker: core::marker::PhantomData,
34148        }
34149    }
34150}
34151impl<'a> RenderPassFragmentDensityMapOffsetEndInfoEXTBuilder<'a> {
34152    #[inline]
34153    pub fn fragment_density_offsets(mut self, slice: &'a [Offset2D]) -> Self {
34154        self.inner.fragment_density_offset_count = slice.len() as u32;
34155        self.inner.p_fragment_density_offsets = slice.as_ptr();
34156        self
34157    }
34158    ///Prepend a struct to the pNext chain. See [`RenderPassFragmentDensityMapOffsetEndInfoEXT`]'s **Extended By** section for valid types.
34159    #[inline]
34160    pub fn push_next<T: ExtendsRenderPassFragmentDensityMapOffsetEndInfoEXT>(
34161        mut self,
34162        next: &'a mut T,
34163    ) -> Self {
34164        unsafe {
34165            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
34166            (*next_ptr).p_next = self.inner.p_next as *mut _;
34167            self.inner.p_next = <*mut BaseOutStructure>::cast::<
34168                core::ffi::c_void,
34169            >(next_ptr) as *const _;
34170        }
34171        self
34172    }
34173}
34174impl<'a> core::ops::Deref for RenderPassFragmentDensityMapOffsetEndInfoEXTBuilder<'a> {
34175    type Target = RenderPassFragmentDensityMapOffsetEndInfoEXT;
34176    #[inline]
34177    fn deref(&self) -> &Self::Target {
34178        &self.inner
34179    }
34180}
34181impl<'a> core::ops::DerefMut
34182for RenderPassFragmentDensityMapOffsetEndInfoEXTBuilder<'a> {
34183    #[inline]
34184    fn deref_mut(&mut self) -> &mut Self::Target {
34185        &mut self.inner
34186    }
34187}
34188///Builder for [`PhysicalDeviceScalarBlockLayoutFeatures`] with lifetime-tied pNext safety.
34189pub struct PhysicalDeviceScalarBlockLayoutFeaturesBuilder<'a> {
34190    inner: PhysicalDeviceScalarBlockLayoutFeatures,
34191    _marker: core::marker::PhantomData<&'a ()>,
34192}
34193impl PhysicalDeviceScalarBlockLayoutFeatures {
34194    /// Start building this struct; `s_type` is already set to the correct variant.
34195    #[inline]
34196    pub fn builder<'a>() -> PhysicalDeviceScalarBlockLayoutFeaturesBuilder<'a> {
34197        PhysicalDeviceScalarBlockLayoutFeaturesBuilder {
34198            inner: PhysicalDeviceScalarBlockLayoutFeatures {
34199                s_type: StructureType::from_raw(1000221000i32),
34200                ..Default::default()
34201            },
34202            _marker: core::marker::PhantomData,
34203        }
34204    }
34205}
34206impl<'a> PhysicalDeviceScalarBlockLayoutFeaturesBuilder<'a> {
34207    #[inline]
34208    pub fn scalar_block_layout(mut self, value: bool) -> Self {
34209        self.inner.scalar_block_layout = value as u32;
34210        self
34211    }
34212    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceScalarBlockLayoutFeatures`]'s **Extended By** section for valid types.
34213    #[inline]
34214    pub fn push_next<T: ExtendsPhysicalDeviceScalarBlockLayoutFeatures>(
34215        mut self,
34216        next: &'a mut T,
34217    ) -> Self {
34218        unsafe {
34219            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
34220            (*next_ptr).p_next = self.inner.p_next as *mut _;
34221            self.inner.p_next = <*mut BaseOutStructure>::cast::<
34222                core::ffi::c_void,
34223            >(next_ptr);
34224        }
34225        self
34226    }
34227}
34228impl<'a> core::ops::Deref for PhysicalDeviceScalarBlockLayoutFeaturesBuilder<'a> {
34229    type Target = PhysicalDeviceScalarBlockLayoutFeatures;
34230    #[inline]
34231    fn deref(&self) -> &Self::Target {
34232        &self.inner
34233    }
34234}
34235impl<'a> core::ops::DerefMut for PhysicalDeviceScalarBlockLayoutFeaturesBuilder<'a> {
34236    #[inline]
34237    fn deref_mut(&mut self) -> &mut Self::Target {
34238        &mut self.inner
34239    }
34240}
34241///Builder for [`SurfaceProtectedCapabilitiesKHR`] with lifetime-tied pNext safety.
34242pub struct SurfaceProtectedCapabilitiesKHRBuilder<'a> {
34243    inner: SurfaceProtectedCapabilitiesKHR,
34244    _marker: core::marker::PhantomData<&'a ()>,
34245}
34246impl SurfaceProtectedCapabilitiesKHR {
34247    /// Start building this struct; `s_type` is already set to the correct variant.
34248    #[inline]
34249    pub fn builder<'a>() -> SurfaceProtectedCapabilitiesKHRBuilder<'a> {
34250        SurfaceProtectedCapabilitiesKHRBuilder {
34251            inner: SurfaceProtectedCapabilitiesKHR {
34252                s_type: StructureType::from_raw(1000239000i32),
34253                ..Default::default()
34254            },
34255            _marker: core::marker::PhantomData,
34256        }
34257    }
34258}
34259impl<'a> SurfaceProtectedCapabilitiesKHRBuilder<'a> {
34260    #[inline]
34261    pub fn supports_protected(mut self, value: bool) -> Self {
34262        self.inner.supports_protected = value as u32;
34263        self
34264    }
34265}
34266impl<'a> core::ops::Deref for SurfaceProtectedCapabilitiesKHRBuilder<'a> {
34267    type Target = SurfaceProtectedCapabilitiesKHR;
34268    #[inline]
34269    fn deref(&self) -> &Self::Target {
34270        &self.inner
34271    }
34272}
34273impl<'a> core::ops::DerefMut for SurfaceProtectedCapabilitiesKHRBuilder<'a> {
34274    #[inline]
34275    fn deref_mut(&mut self) -> &mut Self::Target {
34276        &mut self.inner
34277    }
34278}
34279///Builder for [`PhysicalDeviceUniformBufferStandardLayoutFeatures`] with lifetime-tied pNext safety.
34280pub struct PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder<'a> {
34281    inner: PhysicalDeviceUniformBufferStandardLayoutFeatures,
34282    _marker: core::marker::PhantomData<&'a ()>,
34283}
34284impl PhysicalDeviceUniformBufferStandardLayoutFeatures {
34285    /// Start building this struct; `s_type` is already set to the correct variant.
34286    #[inline]
34287    pub fn builder<'a>() -> PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder<
34288        'a,
34289    > {
34290        PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder {
34291            inner: PhysicalDeviceUniformBufferStandardLayoutFeatures {
34292                s_type: StructureType::from_raw(1000253000i32),
34293                ..Default::default()
34294            },
34295            _marker: core::marker::PhantomData,
34296        }
34297    }
34298}
34299impl<'a> PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder<'a> {
34300    #[inline]
34301    pub fn uniform_buffer_standard_layout(mut self, value: bool) -> Self {
34302        self.inner.uniform_buffer_standard_layout = value as u32;
34303        self
34304    }
34305    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceUniformBufferStandardLayoutFeatures`]'s **Extended By** section for valid types.
34306    #[inline]
34307    pub fn push_next<T: ExtendsPhysicalDeviceUniformBufferStandardLayoutFeatures>(
34308        mut self,
34309        next: &'a mut T,
34310    ) -> Self {
34311        unsafe {
34312            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
34313            (*next_ptr).p_next = self.inner.p_next as *mut _;
34314            self.inner.p_next = <*mut BaseOutStructure>::cast::<
34315                core::ffi::c_void,
34316            >(next_ptr);
34317        }
34318        self
34319    }
34320}
34321impl<'a> core::ops::Deref
34322for PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder<'a> {
34323    type Target = PhysicalDeviceUniformBufferStandardLayoutFeatures;
34324    #[inline]
34325    fn deref(&self) -> &Self::Target {
34326        &self.inner
34327    }
34328}
34329impl<'a> core::ops::DerefMut
34330for PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder<'a> {
34331    #[inline]
34332    fn deref_mut(&mut self) -> &mut Self::Target {
34333        &mut self.inner
34334    }
34335}
34336///Builder for [`PhysicalDeviceDepthClipEnableFeaturesEXT`] with lifetime-tied pNext safety.
34337pub struct PhysicalDeviceDepthClipEnableFeaturesEXTBuilder<'a> {
34338    inner: PhysicalDeviceDepthClipEnableFeaturesEXT,
34339    _marker: core::marker::PhantomData<&'a ()>,
34340}
34341impl PhysicalDeviceDepthClipEnableFeaturesEXT {
34342    /// Start building this struct; `s_type` is already set to the correct variant.
34343    #[inline]
34344    pub fn builder<'a>() -> PhysicalDeviceDepthClipEnableFeaturesEXTBuilder<'a> {
34345        PhysicalDeviceDepthClipEnableFeaturesEXTBuilder {
34346            inner: PhysicalDeviceDepthClipEnableFeaturesEXT {
34347                s_type: StructureType::from_raw(1000102000i32),
34348                ..Default::default()
34349            },
34350            _marker: core::marker::PhantomData,
34351        }
34352    }
34353}
34354impl<'a> PhysicalDeviceDepthClipEnableFeaturesEXTBuilder<'a> {
34355    #[inline]
34356    pub fn depth_clip_enable(mut self, value: bool) -> Self {
34357        self.inner.depth_clip_enable = value as u32;
34358        self
34359    }
34360    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDepthClipEnableFeaturesEXT`]'s **Extended By** section for valid types.
34361    #[inline]
34362    pub fn push_next<T: ExtendsPhysicalDeviceDepthClipEnableFeaturesEXT>(
34363        mut self,
34364        next: &'a mut T,
34365    ) -> Self {
34366        unsafe {
34367            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
34368            (*next_ptr).p_next = self.inner.p_next as *mut _;
34369            self.inner.p_next = <*mut BaseOutStructure>::cast::<
34370                core::ffi::c_void,
34371            >(next_ptr);
34372        }
34373        self
34374    }
34375}
34376impl<'a> core::ops::Deref for PhysicalDeviceDepthClipEnableFeaturesEXTBuilder<'a> {
34377    type Target = PhysicalDeviceDepthClipEnableFeaturesEXT;
34378    #[inline]
34379    fn deref(&self) -> &Self::Target {
34380        &self.inner
34381    }
34382}
34383impl<'a> core::ops::DerefMut for PhysicalDeviceDepthClipEnableFeaturesEXTBuilder<'a> {
34384    #[inline]
34385    fn deref_mut(&mut self) -> &mut Self::Target {
34386        &mut self.inner
34387    }
34388}
34389///Builder for [`PipelineRasterizationDepthClipStateCreateInfoEXT`] with lifetime-tied pNext safety.
34390pub struct PipelineRasterizationDepthClipStateCreateInfoEXTBuilder<'a> {
34391    inner: PipelineRasterizationDepthClipStateCreateInfoEXT,
34392    _marker: core::marker::PhantomData<&'a ()>,
34393}
34394impl PipelineRasterizationDepthClipStateCreateInfoEXT {
34395    /// Start building this struct; `s_type` is already set to the correct variant.
34396    #[inline]
34397    pub fn builder<'a>() -> PipelineRasterizationDepthClipStateCreateInfoEXTBuilder<'a> {
34398        PipelineRasterizationDepthClipStateCreateInfoEXTBuilder {
34399            inner: PipelineRasterizationDepthClipStateCreateInfoEXT {
34400                s_type: StructureType::from_raw(1000102001i32),
34401                ..Default::default()
34402            },
34403            _marker: core::marker::PhantomData,
34404        }
34405    }
34406}
34407impl<'a> PipelineRasterizationDepthClipStateCreateInfoEXTBuilder<'a> {
34408    #[inline]
34409    pub fn flags(
34410        mut self,
34411        value: PipelineRasterizationDepthClipStateCreateFlagsEXT,
34412    ) -> Self {
34413        self.inner.flags = value;
34414        self
34415    }
34416    #[inline]
34417    pub fn depth_clip_enable(mut self, value: bool) -> Self {
34418        self.inner.depth_clip_enable = value as u32;
34419        self
34420    }
34421    ///Prepend a struct to the pNext chain. See [`PipelineRasterizationDepthClipStateCreateInfoEXT`]'s **Extended By** section for valid types.
34422    #[inline]
34423    pub fn push_next<T: ExtendsPipelineRasterizationDepthClipStateCreateInfoEXT>(
34424        mut self,
34425        next: &'a mut T,
34426    ) -> Self {
34427        unsafe {
34428            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
34429            (*next_ptr).p_next = self.inner.p_next as *mut _;
34430            self.inner.p_next = <*mut BaseOutStructure>::cast::<
34431                core::ffi::c_void,
34432            >(next_ptr) as *const _;
34433        }
34434        self
34435    }
34436}
34437impl<'a> core::ops::Deref
34438for PipelineRasterizationDepthClipStateCreateInfoEXTBuilder<'a> {
34439    type Target = PipelineRasterizationDepthClipStateCreateInfoEXT;
34440    #[inline]
34441    fn deref(&self) -> &Self::Target {
34442        &self.inner
34443    }
34444}
34445impl<'a> core::ops::DerefMut
34446for PipelineRasterizationDepthClipStateCreateInfoEXTBuilder<'a> {
34447    #[inline]
34448    fn deref_mut(&mut self) -> &mut Self::Target {
34449        &mut self.inner
34450    }
34451}
34452///Builder for [`PhysicalDeviceMemoryBudgetPropertiesEXT`] with lifetime-tied pNext safety.
34453pub struct PhysicalDeviceMemoryBudgetPropertiesEXTBuilder<'a> {
34454    inner: PhysicalDeviceMemoryBudgetPropertiesEXT,
34455    _marker: core::marker::PhantomData<&'a ()>,
34456}
34457impl PhysicalDeviceMemoryBudgetPropertiesEXT {
34458    /// Start building this struct; `s_type` is already set to the correct variant.
34459    #[inline]
34460    pub fn builder<'a>() -> PhysicalDeviceMemoryBudgetPropertiesEXTBuilder<'a> {
34461        PhysicalDeviceMemoryBudgetPropertiesEXTBuilder {
34462            inner: PhysicalDeviceMemoryBudgetPropertiesEXT {
34463                s_type: StructureType::from_raw(1000237000i32),
34464                ..Default::default()
34465            },
34466            _marker: core::marker::PhantomData,
34467        }
34468    }
34469}
34470impl<'a> PhysicalDeviceMemoryBudgetPropertiesEXTBuilder<'a> {
34471    #[inline]
34472    pub fn heap_budget(mut self, value: [u64; MAX_MEMORY_HEAPS as usize]) -> Self {
34473        self.inner.heap_budget = value;
34474        self
34475    }
34476    #[inline]
34477    pub fn heap_usage(mut self, value: [u64; MAX_MEMORY_HEAPS as usize]) -> Self {
34478        self.inner.heap_usage = value;
34479        self
34480    }
34481}
34482impl<'a> core::ops::Deref for PhysicalDeviceMemoryBudgetPropertiesEXTBuilder<'a> {
34483    type Target = PhysicalDeviceMemoryBudgetPropertiesEXT;
34484    #[inline]
34485    fn deref(&self) -> &Self::Target {
34486        &self.inner
34487    }
34488}
34489impl<'a> core::ops::DerefMut for PhysicalDeviceMemoryBudgetPropertiesEXTBuilder<'a> {
34490    #[inline]
34491    fn deref_mut(&mut self) -> &mut Self::Target {
34492        &mut self.inner
34493    }
34494}
34495///Builder for [`PhysicalDeviceMemoryPriorityFeaturesEXT`] with lifetime-tied pNext safety.
34496pub struct PhysicalDeviceMemoryPriorityFeaturesEXTBuilder<'a> {
34497    inner: PhysicalDeviceMemoryPriorityFeaturesEXT,
34498    _marker: core::marker::PhantomData<&'a ()>,
34499}
34500impl PhysicalDeviceMemoryPriorityFeaturesEXT {
34501    /// Start building this struct; `s_type` is already set to the correct variant.
34502    #[inline]
34503    pub fn builder<'a>() -> PhysicalDeviceMemoryPriorityFeaturesEXTBuilder<'a> {
34504        PhysicalDeviceMemoryPriorityFeaturesEXTBuilder {
34505            inner: PhysicalDeviceMemoryPriorityFeaturesEXT {
34506                s_type: StructureType::from_raw(1000238000i32),
34507                ..Default::default()
34508            },
34509            _marker: core::marker::PhantomData,
34510        }
34511    }
34512}
34513impl<'a> PhysicalDeviceMemoryPriorityFeaturesEXTBuilder<'a> {
34514    #[inline]
34515    pub fn memory_priority(mut self, value: bool) -> Self {
34516        self.inner.memory_priority = value as u32;
34517        self
34518    }
34519    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceMemoryPriorityFeaturesEXT`]'s **Extended By** section for valid types.
34520    #[inline]
34521    pub fn push_next<T: ExtendsPhysicalDeviceMemoryPriorityFeaturesEXT>(
34522        mut self,
34523        next: &'a mut T,
34524    ) -> Self {
34525        unsafe {
34526            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
34527            (*next_ptr).p_next = self.inner.p_next as *mut _;
34528            self.inner.p_next = <*mut BaseOutStructure>::cast::<
34529                core::ffi::c_void,
34530            >(next_ptr);
34531        }
34532        self
34533    }
34534}
34535impl<'a> core::ops::Deref for PhysicalDeviceMemoryPriorityFeaturesEXTBuilder<'a> {
34536    type Target = PhysicalDeviceMemoryPriorityFeaturesEXT;
34537    #[inline]
34538    fn deref(&self) -> &Self::Target {
34539        &self.inner
34540    }
34541}
34542impl<'a> core::ops::DerefMut for PhysicalDeviceMemoryPriorityFeaturesEXTBuilder<'a> {
34543    #[inline]
34544    fn deref_mut(&mut self) -> &mut Self::Target {
34545        &mut self.inner
34546    }
34547}
34548///Builder for [`MemoryPriorityAllocateInfoEXT`] with lifetime-tied pNext safety.
34549pub struct MemoryPriorityAllocateInfoEXTBuilder<'a> {
34550    inner: MemoryPriorityAllocateInfoEXT,
34551    _marker: core::marker::PhantomData<&'a ()>,
34552}
34553impl MemoryPriorityAllocateInfoEXT {
34554    /// Start building this struct; `s_type` is already set to the correct variant.
34555    #[inline]
34556    pub fn builder<'a>() -> MemoryPriorityAllocateInfoEXTBuilder<'a> {
34557        MemoryPriorityAllocateInfoEXTBuilder {
34558            inner: MemoryPriorityAllocateInfoEXT {
34559                s_type: StructureType::from_raw(1000238001i32),
34560                ..Default::default()
34561            },
34562            _marker: core::marker::PhantomData,
34563        }
34564    }
34565}
34566impl<'a> MemoryPriorityAllocateInfoEXTBuilder<'a> {
34567    #[inline]
34568    pub fn priority(mut self, value: f32) -> Self {
34569        self.inner.priority = value;
34570        self
34571    }
34572    ///Prepend a struct to the pNext chain. See [`MemoryPriorityAllocateInfoEXT`]'s **Extended By** section for valid types.
34573    #[inline]
34574    pub fn push_next<T: ExtendsMemoryPriorityAllocateInfoEXT>(
34575        mut self,
34576        next: &'a mut T,
34577    ) -> Self {
34578        unsafe {
34579            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
34580            (*next_ptr).p_next = self.inner.p_next as *mut _;
34581            self.inner.p_next = <*mut BaseOutStructure>::cast::<
34582                core::ffi::c_void,
34583            >(next_ptr) as *const _;
34584        }
34585        self
34586    }
34587}
34588impl<'a> core::ops::Deref for MemoryPriorityAllocateInfoEXTBuilder<'a> {
34589    type Target = MemoryPriorityAllocateInfoEXT;
34590    #[inline]
34591    fn deref(&self) -> &Self::Target {
34592        &self.inner
34593    }
34594}
34595impl<'a> core::ops::DerefMut for MemoryPriorityAllocateInfoEXTBuilder<'a> {
34596    #[inline]
34597    fn deref_mut(&mut self) -> &mut Self::Target {
34598        &mut self.inner
34599    }
34600}
34601///Builder for [`PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT`] with lifetime-tied pNext safety.
34602pub struct PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder<'a> {
34603    inner: PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT,
34604    _marker: core::marker::PhantomData<&'a ()>,
34605}
34606impl PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
34607    /// Start building this struct; `s_type` is already set to the correct variant.
34608    #[inline]
34609    pub fn builder<'a>() -> PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder<
34610        'a,
34611    > {
34612        PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder {
34613            inner: PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
34614                s_type: StructureType::from_raw(1000412000i32),
34615                ..Default::default()
34616            },
34617            _marker: core::marker::PhantomData,
34618        }
34619    }
34620}
34621impl<'a> PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder<'a> {
34622    #[inline]
34623    pub fn pageable_device_local_memory(mut self, value: bool) -> Self {
34624        self.inner.pageable_device_local_memory = value as u32;
34625        self
34626    }
34627    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT`]'s **Extended By** section for valid types.
34628    #[inline]
34629    pub fn push_next<T: ExtendsPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT>(
34630        mut self,
34631        next: &'a mut T,
34632    ) -> Self {
34633        unsafe {
34634            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
34635            (*next_ptr).p_next = self.inner.p_next as *mut _;
34636            self.inner.p_next = <*mut BaseOutStructure>::cast::<
34637                core::ffi::c_void,
34638            >(next_ptr);
34639        }
34640        self
34641    }
34642}
34643impl<'a> core::ops::Deref
34644for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder<'a> {
34645    type Target = PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;
34646    #[inline]
34647    fn deref(&self) -> &Self::Target {
34648        &self.inner
34649    }
34650}
34651impl<'a> core::ops::DerefMut
34652for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder<'a> {
34653    #[inline]
34654    fn deref_mut(&mut self) -> &mut Self::Target {
34655        &mut self.inner
34656    }
34657}
34658///Builder for [`PhysicalDeviceBufferDeviceAddressFeatures`] with lifetime-tied pNext safety.
34659pub struct PhysicalDeviceBufferDeviceAddressFeaturesBuilder<'a> {
34660    inner: PhysicalDeviceBufferDeviceAddressFeatures,
34661    _marker: core::marker::PhantomData<&'a ()>,
34662}
34663impl PhysicalDeviceBufferDeviceAddressFeatures {
34664    /// Start building this struct; `s_type` is already set to the correct variant.
34665    #[inline]
34666    pub fn builder<'a>() -> PhysicalDeviceBufferDeviceAddressFeaturesBuilder<'a> {
34667        PhysicalDeviceBufferDeviceAddressFeaturesBuilder {
34668            inner: PhysicalDeviceBufferDeviceAddressFeatures {
34669                s_type: StructureType::from_raw(1000257000i32),
34670                ..Default::default()
34671            },
34672            _marker: core::marker::PhantomData,
34673        }
34674    }
34675}
34676impl<'a> PhysicalDeviceBufferDeviceAddressFeaturesBuilder<'a> {
34677    #[inline]
34678    pub fn buffer_device_address(mut self, value: bool) -> Self {
34679        self.inner.buffer_device_address = value as u32;
34680        self
34681    }
34682    #[inline]
34683    pub fn buffer_device_address_capture_replay(mut self, value: bool) -> Self {
34684        self.inner.buffer_device_address_capture_replay = value as u32;
34685        self
34686    }
34687    #[inline]
34688    pub fn buffer_device_address_multi_device(mut self, value: bool) -> Self {
34689        self.inner.buffer_device_address_multi_device = value as u32;
34690        self
34691    }
34692    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceBufferDeviceAddressFeatures`]'s **Extended By** section for valid types.
34693    #[inline]
34694    pub fn push_next<T: ExtendsPhysicalDeviceBufferDeviceAddressFeatures>(
34695        mut self,
34696        next: &'a mut T,
34697    ) -> Self {
34698        unsafe {
34699            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
34700            (*next_ptr).p_next = self.inner.p_next as *mut _;
34701            self.inner.p_next = <*mut BaseOutStructure>::cast::<
34702                core::ffi::c_void,
34703            >(next_ptr);
34704        }
34705        self
34706    }
34707}
34708impl<'a> core::ops::Deref for PhysicalDeviceBufferDeviceAddressFeaturesBuilder<'a> {
34709    type Target = PhysicalDeviceBufferDeviceAddressFeatures;
34710    #[inline]
34711    fn deref(&self) -> &Self::Target {
34712        &self.inner
34713    }
34714}
34715impl<'a> core::ops::DerefMut for PhysicalDeviceBufferDeviceAddressFeaturesBuilder<'a> {
34716    #[inline]
34717    fn deref_mut(&mut self) -> &mut Self::Target {
34718        &mut self.inner
34719    }
34720}
34721///Builder for [`PhysicalDeviceBufferDeviceAddressFeaturesEXT`] with lifetime-tied pNext safety.
34722pub struct PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder<'a> {
34723    inner: PhysicalDeviceBufferDeviceAddressFeaturesEXT,
34724    _marker: core::marker::PhantomData<&'a ()>,
34725}
34726impl PhysicalDeviceBufferDeviceAddressFeaturesEXT {
34727    /// Start building this struct; `s_type` is already set to the correct variant.
34728    #[inline]
34729    pub fn builder<'a>() -> PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder<'a> {
34730        PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder {
34731            inner: PhysicalDeviceBufferDeviceAddressFeaturesEXT {
34732                s_type: StructureType::from_raw(1000244000i32),
34733                ..Default::default()
34734            },
34735            _marker: core::marker::PhantomData,
34736        }
34737    }
34738}
34739impl<'a> PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder<'a> {
34740    #[inline]
34741    pub fn buffer_device_address(mut self, value: bool) -> Self {
34742        self.inner.buffer_device_address = value as u32;
34743        self
34744    }
34745    #[inline]
34746    pub fn buffer_device_address_capture_replay(mut self, value: bool) -> Self {
34747        self.inner.buffer_device_address_capture_replay = value as u32;
34748        self
34749    }
34750    #[inline]
34751    pub fn buffer_device_address_multi_device(mut self, value: bool) -> Self {
34752        self.inner.buffer_device_address_multi_device = value as u32;
34753        self
34754    }
34755    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceBufferDeviceAddressFeaturesEXT`]'s **Extended By** section for valid types.
34756    #[inline]
34757    pub fn push_next<T: ExtendsPhysicalDeviceBufferDeviceAddressFeaturesEXT>(
34758        mut self,
34759        next: &'a mut T,
34760    ) -> Self {
34761        unsafe {
34762            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
34763            (*next_ptr).p_next = self.inner.p_next as *mut _;
34764            self.inner.p_next = <*mut BaseOutStructure>::cast::<
34765                core::ffi::c_void,
34766            >(next_ptr);
34767        }
34768        self
34769    }
34770}
34771impl<'a> core::ops::Deref for PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder<'a> {
34772    type Target = PhysicalDeviceBufferDeviceAddressFeaturesEXT;
34773    #[inline]
34774    fn deref(&self) -> &Self::Target {
34775        &self.inner
34776    }
34777}
34778impl<'a> core::ops::DerefMut
34779for PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder<'a> {
34780    #[inline]
34781    fn deref_mut(&mut self) -> &mut Self::Target {
34782        &mut self.inner
34783    }
34784}
34785///Builder for [`BufferDeviceAddressInfo`] with lifetime-tied pNext safety.
34786pub struct BufferDeviceAddressInfoBuilder<'a> {
34787    inner: BufferDeviceAddressInfo,
34788    _marker: core::marker::PhantomData<&'a ()>,
34789}
34790impl BufferDeviceAddressInfo {
34791    /// Start building this struct; `s_type` is already set to the correct variant.
34792    #[inline]
34793    pub fn builder<'a>() -> BufferDeviceAddressInfoBuilder<'a> {
34794        BufferDeviceAddressInfoBuilder {
34795            inner: BufferDeviceAddressInfo {
34796                s_type: StructureType::from_raw(1000244001i32),
34797                ..Default::default()
34798            },
34799            _marker: core::marker::PhantomData,
34800        }
34801    }
34802}
34803impl<'a> BufferDeviceAddressInfoBuilder<'a> {
34804    #[inline]
34805    pub fn buffer(mut self, value: Buffer) -> Self {
34806        self.inner.buffer = value;
34807        self
34808    }
34809    ///Prepend a struct to the pNext chain. See [`BufferDeviceAddressInfo`]'s **Extended By** section for valid types.
34810    #[inline]
34811    pub fn push_next<T: ExtendsBufferDeviceAddressInfo>(
34812        mut self,
34813        next: &'a mut T,
34814    ) -> Self {
34815        unsafe {
34816            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
34817            (*next_ptr).p_next = self.inner.p_next as *mut _;
34818            self.inner.p_next = <*mut BaseOutStructure>::cast::<
34819                core::ffi::c_void,
34820            >(next_ptr) as *const _;
34821        }
34822        self
34823    }
34824}
34825impl<'a> core::ops::Deref for BufferDeviceAddressInfoBuilder<'a> {
34826    type Target = BufferDeviceAddressInfo;
34827    #[inline]
34828    fn deref(&self) -> &Self::Target {
34829        &self.inner
34830    }
34831}
34832impl<'a> core::ops::DerefMut for BufferDeviceAddressInfoBuilder<'a> {
34833    #[inline]
34834    fn deref_mut(&mut self) -> &mut Self::Target {
34835        &mut self.inner
34836    }
34837}
34838///Builder for [`BufferOpaqueCaptureAddressCreateInfo`] with lifetime-tied pNext safety.
34839pub struct BufferOpaqueCaptureAddressCreateInfoBuilder<'a> {
34840    inner: BufferOpaqueCaptureAddressCreateInfo,
34841    _marker: core::marker::PhantomData<&'a ()>,
34842}
34843impl BufferOpaqueCaptureAddressCreateInfo {
34844    /// Start building this struct; `s_type` is already set to the correct variant.
34845    #[inline]
34846    pub fn builder<'a>() -> BufferOpaqueCaptureAddressCreateInfoBuilder<'a> {
34847        BufferOpaqueCaptureAddressCreateInfoBuilder {
34848            inner: BufferOpaqueCaptureAddressCreateInfo {
34849                s_type: StructureType::from_raw(1000257002i32),
34850                ..Default::default()
34851            },
34852            _marker: core::marker::PhantomData,
34853        }
34854    }
34855}
34856impl<'a> BufferOpaqueCaptureAddressCreateInfoBuilder<'a> {
34857    #[inline]
34858    pub fn opaque_capture_address(mut self, value: u64) -> Self {
34859        self.inner.opaque_capture_address = value;
34860        self
34861    }
34862    ///Prepend a struct to the pNext chain. See [`BufferOpaqueCaptureAddressCreateInfo`]'s **Extended By** section for valid types.
34863    #[inline]
34864    pub fn push_next<T: ExtendsBufferOpaqueCaptureAddressCreateInfo>(
34865        mut self,
34866        next: &'a mut T,
34867    ) -> Self {
34868        unsafe {
34869            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
34870            (*next_ptr).p_next = self.inner.p_next as *mut _;
34871            self.inner.p_next = <*mut BaseOutStructure>::cast::<
34872                core::ffi::c_void,
34873            >(next_ptr) as *const _;
34874        }
34875        self
34876    }
34877}
34878impl<'a> core::ops::Deref for BufferOpaqueCaptureAddressCreateInfoBuilder<'a> {
34879    type Target = BufferOpaqueCaptureAddressCreateInfo;
34880    #[inline]
34881    fn deref(&self) -> &Self::Target {
34882        &self.inner
34883    }
34884}
34885impl<'a> core::ops::DerefMut for BufferOpaqueCaptureAddressCreateInfoBuilder<'a> {
34886    #[inline]
34887    fn deref_mut(&mut self) -> &mut Self::Target {
34888        &mut self.inner
34889    }
34890}
34891///Builder for [`BufferDeviceAddressCreateInfoEXT`] with lifetime-tied pNext safety.
34892pub struct BufferDeviceAddressCreateInfoEXTBuilder<'a> {
34893    inner: BufferDeviceAddressCreateInfoEXT,
34894    _marker: core::marker::PhantomData<&'a ()>,
34895}
34896impl BufferDeviceAddressCreateInfoEXT {
34897    /// Start building this struct; `s_type` is already set to the correct variant.
34898    #[inline]
34899    pub fn builder<'a>() -> BufferDeviceAddressCreateInfoEXTBuilder<'a> {
34900        BufferDeviceAddressCreateInfoEXTBuilder {
34901            inner: BufferDeviceAddressCreateInfoEXT {
34902                s_type: StructureType::from_raw(1000244002i32),
34903                ..Default::default()
34904            },
34905            _marker: core::marker::PhantomData,
34906        }
34907    }
34908}
34909impl<'a> BufferDeviceAddressCreateInfoEXTBuilder<'a> {
34910    #[inline]
34911    pub fn device_address(mut self, value: u64) -> Self {
34912        self.inner.device_address = value;
34913        self
34914    }
34915    ///Prepend a struct to the pNext chain. See [`BufferDeviceAddressCreateInfoEXT`]'s **Extended By** section for valid types.
34916    #[inline]
34917    pub fn push_next<T: ExtendsBufferDeviceAddressCreateInfoEXT>(
34918        mut self,
34919        next: &'a mut T,
34920    ) -> Self {
34921        unsafe {
34922            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
34923            (*next_ptr).p_next = self.inner.p_next as *mut _;
34924            self.inner.p_next = <*mut BaseOutStructure>::cast::<
34925                core::ffi::c_void,
34926            >(next_ptr) as *const _;
34927        }
34928        self
34929    }
34930}
34931impl<'a> core::ops::Deref for BufferDeviceAddressCreateInfoEXTBuilder<'a> {
34932    type Target = BufferDeviceAddressCreateInfoEXT;
34933    #[inline]
34934    fn deref(&self) -> &Self::Target {
34935        &self.inner
34936    }
34937}
34938impl<'a> core::ops::DerefMut for BufferDeviceAddressCreateInfoEXTBuilder<'a> {
34939    #[inline]
34940    fn deref_mut(&mut self) -> &mut Self::Target {
34941        &mut self.inner
34942    }
34943}
34944///Builder for [`PhysicalDeviceImageViewImageFormatInfoEXT`] with lifetime-tied pNext safety.
34945pub struct PhysicalDeviceImageViewImageFormatInfoEXTBuilder<'a> {
34946    inner: PhysicalDeviceImageViewImageFormatInfoEXT,
34947    _marker: core::marker::PhantomData<&'a ()>,
34948}
34949impl PhysicalDeviceImageViewImageFormatInfoEXT {
34950    /// Start building this struct; `s_type` is already set to the correct variant.
34951    #[inline]
34952    pub fn builder<'a>() -> PhysicalDeviceImageViewImageFormatInfoEXTBuilder<'a> {
34953        PhysicalDeviceImageViewImageFormatInfoEXTBuilder {
34954            inner: PhysicalDeviceImageViewImageFormatInfoEXT {
34955                s_type: StructureType::from_raw(1000170000i32),
34956                ..Default::default()
34957            },
34958            _marker: core::marker::PhantomData,
34959        }
34960    }
34961}
34962impl<'a> PhysicalDeviceImageViewImageFormatInfoEXTBuilder<'a> {
34963    #[inline]
34964    pub fn image_view_type(mut self, value: ImageViewType) -> Self {
34965        self.inner.image_view_type = value;
34966        self
34967    }
34968    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceImageViewImageFormatInfoEXT`]'s **Extended By** section for valid types.
34969    #[inline]
34970    pub fn push_next<T: ExtendsPhysicalDeviceImageViewImageFormatInfoEXT>(
34971        mut self,
34972        next: &'a mut T,
34973    ) -> Self {
34974        unsafe {
34975            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
34976            (*next_ptr).p_next = self.inner.p_next as *mut _;
34977            self.inner.p_next = <*mut BaseOutStructure>::cast::<
34978                core::ffi::c_void,
34979            >(next_ptr);
34980        }
34981        self
34982    }
34983}
34984impl<'a> core::ops::Deref for PhysicalDeviceImageViewImageFormatInfoEXTBuilder<'a> {
34985    type Target = PhysicalDeviceImageViewImageFormatInfoEXT;
34986    #[inline]
34987    fn deref(&self) -> &Self::Target {
34988        &self.inner
34989    }
34990}
34991impl<'a> core::ops::DerefMut for PhysicalDeviceImageViewImageFormatInfoEXTBuilder<'a> {
34992    #[inline]
34993    fn deref_mut(&mut self) -> &mut Self::Target {
34994        &mut self.inner
34995    }
34996}
34997///Builder for [`FilterCubicImageViewImageFormatPropertiesEXT`] with lifetime-tied pNext safety.
34998pub struct FilterCubicImageViewImageFormatPropertiesEXTBuilder<'a> {
34999    inner: FilterCubicImageViewImageFormatPropertiesEXT,
35000    _marker: core::marker::PhantomData<&'a ()>,
35001}
35002impl FilterCubicImageViewImageFormatPropertiesEXT {
35003    /// Start building this struct; `s_type` is already set to the correct variant.
35004    #[inline]
35005    pub fn builder<'a>() -> FilterCubicImageViewImageFormatPropertiesEXTBuilder<'a> {
35006        FilterCubicImageViewImageFormatPropertiesEXTBuilder {
35007            inner: FilterCubicImageViewImageFormatPropertiesEXT {
35008                s_type: StructureType::from_raw(1000170001i32),
35009                ..Default::default()
35010            },
35011            _marker: core::marker::PhantomData,
35012        }
35013    }
35014}
35015impl<'a> FilterCubicImageViewImageFormatPropertiesEXTBuilder<'a> {
35016    #[inline]
35017    pub fn filter_cubic(mut self, value: bool) -> Self {
35018        self.inner.filter_cubic = value as u32;
35019        self
35020    }
35021    #[inline]
35022    pub fn filter_cubic_minmax(mut self, value: bool) -> Self {
35023        self.inner.filter_cubic_minmax = value as u32;
35024        self
35025    }
35026}
35027impl<'a> core::ops::Deref for FilterCubicImageViewImageFormatPropertiesEXTBuilder<'a> {
35028    type Target = FilterCubicImageViewImageFormatPropertiesEXT;
35029    #[inline]
35030    fn deref(&self) -> &Self::Target {
35031        &self.inner
35032    }
35033}
35034impl<'a> core::ops::DerefMut
35035for FilterCubicImageViewImageFormatPropertiesEXTBuilder<'a> {
35036    #[inline]
35037    fn deref_mut(&mut self) -> &mut Self::Target {
35038        &mut self.inner
35039    }
35040}
35041///Builder for [`PhysicalDeviceImagelessFramebufferFeatures`] with lifetime-tied pNext safety.
35042pub struct PhysicalDeviceImagelessFramebufferFeaturesBuilder<'a> {
35043    inner: PhysicalDeviceImagelessFramebufferFeatures,
35044    _marker: core::marker::PhantomData<&'a ()>,
35045}
35046impl PhysicalDeviceImagelessFramebufferFeatures {
35047    /// Start building this struct; `s_type` is already set to the correct variant.
35048    #[inline]
35049    pub fn builder<'a>() -> PhysicalDeviceImagelessFramebufferFeaturesBuilder<'a> {
35050        PhysicalDeviceImagelessFramebufferFeaturesBuilder {
35051            inner: PhysicalDeviceImagelessFramebufferFeatures {
35052                s_type: StructureType::from_raw(1000108000i32),
35053                ..Default::default()
35054            },
35055            _marker: core::marker::PhantomData,
35056        }
35057    }
35058}
35059impl<'a> PhysicalDeviceImagelessFramebufferFeaturesBuilder<'a> {
35060    #[inline]
35061    pub fn imageless_framebuffer(mut self, value: bool) -> Self {
35062        self.inner.imageless_framebuffer = value as u32;
35063        self
35064    }
35065    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceImagelessFramebufferFeatures`]'s **Extended By** section for valid types.
35066    #[inline]
35067    pub fn push_next<T: ExtendsPhysicalDeviceImagelessFramebufferFeatures>(
35068        mut self,
35069        next: &'a mut T,
35070    ) -> Self {
35071        unsafe {
35072            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
35073            (*next_ptr).p_next = self.inner.p_next as *mut _;
35074            self.inner.p_next = <*mut BaseOutStructure>::cast::<
35075                core::ffi::c_void,
35076            >(next_ptr);
35077        }
35078        self
35079    }
35080}
35081impl<'a> core::ops::Deref for PhysicalDeviceImagelessFramebufferFeaturesBuilder<'a> {
35082    type Target = PhysicalDeviceImagelessFramebufferFeatures;
35083    #[inline]
35084    fn deref(&self) -> &Self::Target {
35085        &self.inner
35086    }
35087}
35088impl<'a> core::ops::DerefMut for PhysicalDeviceImagelessFramebufferFeaturesBuilder<'a> {
35089    #[inline]
35090    fn deref_mut(&mut self) -> &mut Self::Target {
35091        &mut self.inner
35092    }
35093}
35094///Builder for [`FramebufferAttachmentsCreateInfo`] with lifetime-tied pNext safety.
35095pub struct FramebufferAttachmentsCreateInfoBuilder<'a> {
35096    inner: FramebufferAttachmentsCreateInfo,
35097    _marker: core::marker::PhantomData<&'a ()>,
35098}
35099impl FramebufferAttachmentsCreateInfo {
35100    /// Start building this struct; `s_type` is already set to the correct variant.
35101    #[inline]
35102    pub fn builder<'a>() -> FramebufferAttachmentsCreateInfoBuilder<'a> {
35103        FramebufferAttachmentsCreateInfoBuilder {
35104            inner: FramebufferAttachmentsCreateInfo {
35105                s_type: StructureType::from_raw(1000108001i32),
35106                ..Default::default()
35107            },
35108            _marker: core::marker::PhantomData,
35109        }
35110    }
35111}
35112impl<'a> FramebufferAttachmentsCreateInfoBuilder<'a> {
35113    #[inline]
35114    pub fn attachment_image_infos(
35115        mut self,
35116        slice: &'a [FramebufferAttachmentImageInfo],
35117    ) -> Self {
35118        self.inner.attachment_image_info_count = slice.len() as u32;
35119        self.inner.p_attachment_image_infos = slice.as_ptr();
35120        self
35121    }
35122    ///Prepend a struct to the pNext chain. See [`FramebufferAttachmentsCreateInfo`]'s **Extended By** section for valid types.
35123    #[inline]
35124    pub fn push_next<T: ExtendsFramebufferAttachmentsCreateInfo>(
35125        mut self,
35126        next: &'a mut T,
35127    ) -> Self {
35128        unsafe {
35129            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
35130            (*next_ptr).p_next = self.inner.p_next as *mut _;
35131            self.inner.p_next = <*mut BaseOutStructure>::cast::<
35132                core::ffi::c_void,
35133            >(next_ptr) as *const _;
35134        }
35135        self
35136    }
35137}
35138impl<'a> core::ops::Deref for FramebufferAttachmentsCreateInfoBuilder<'a> {
35139    type Target = FramebufferAttachmentsCreateInfo;
35140    #[inline]
35141    fn deref(&self) -> &Self::Target {
35142        &self.inner
35143    }
35144}
35145impl<'a> core::ops::DerefMut for FramebufferAttachmentsCreateInfoBuilder<'a> {
35146    #[inline]
35147    fn deref_mut(&mut self) -> &mut Self::Target {
35148        &mut self.inner
35149    }
35150}
35151///Builder for [`FramebufferAttachmentImageInfo`] with lifetime-tied pNext safety.
35152pub struct FramebufferAttachmentImageInfoBuilder<'a> {
35153    inner: FramebufferAttachmentImageInfo,
35154    _marker: core::marker::PhantomData<&'a ()>,
35155}
35156impl FramebufferAttachmentImageInfo {
35157    /// Start building this struct; `s_type` is already set to the correct variant.
35158    #[inline]
35159    pub fn builder<'a>() -> FramebufferAttachmentImageInfoBuilder<'a> {
35160        FramebufferAttachmentImageInfoBuilder {
35161            inner: FramebufferAttachmentImageInfo {
35162                s_type: StructureType::from_raw(1000108002i32),
35163                ..Default::default()
35164            },
35165            _marker: core::marker::PhantomData,
35166        }
35167    }
35168}
35169impl<'a> FramebufferAttachmentImageInfoBuilder<'a> {
35170    #[inline]
35171    pub fn flags(mut self, value: ImageCreateFlags) -> Self {
35172        self.inner.flags = value;
35173        self
35174    }
35175    #[inline]
35176    pub fn usage(mut self, value: ImageUsageFlags) -> Self {
35177        self.inner.usage = value;
35178        self
35179    }
35180    #[inline]
35181    pub fn width(mut self, value: u32) -> Self {
35182        self.inner.width = value;
35183        self
35184    }
35185    #[inline]
35186    pub fn height(mut self, value: u32) -> Self {
35187        self.inner.height = value;
35188        self
35189    }
35190    #[inline]
35191    pub fn layer_count(mut self, value: u32) -> Self {
35192        self.inner.layer_count = value;
35193        self
35194    }
35195    #[inline]
35196    pub fn view_formats(mut self, slice: &'a [Format]) -> Self {
35197        self.inner.view_format_count = slice.len() as u32;
35198        self.inner.p_view_formats = slice.as_ptr();
35199        self
35200    }
35201    ///Prepend a struct to the pNext chain. See [`FramebufferAttachmentImageInfo`]'s **Extended By** section for valid types.
35202    #[inline]
35203    pub fn push_next<T: ExtendsFramebufferAttachmentImageInfo>(
35204        mut self,
35205        next: &'a mut T,
35206    ) -> Self {
35207        unsafe {
35208            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
35209            (*next_ptr).p_next = self.inner.p_next as *mut _;
35210            self.inner.p_next = <*mut BaseOutStructure>::cast::<
35211                core::ffi::c_void,
35212            >(next_ptr) as *const _;
35213        }
35214        self
35215    }
35216}
35217impl<'a> core::ops::Deref for FramebufferAttachmentImageInfoBuilder<'a> {
35218    type Target = FramebufferAttachmentImageInfo;
35219    #[inline]
35220    fn deref(&self) -> &Self::Target {
35221        &self.inner
35222    }
35223}
35224impl<'a> core::ops::DerefMut for FramebufferAttachmentImageInfoBuilder<'a> {
35225    #[inline]
35226    fn deref_mut(&mut self) -> &mut Self::Target {
35227        &mut self.inner
35228    }
35229}
35230///Builder for [`RenderPassAttachmentBeginInfo`] with lifetime-tied pNext safety.
35231pub struct RenderPassAttachmentBeginInfoBuilder<'a> {
35232    inner: RenderPassAttachmentBeginInfo,
35233    _marker: core::marker::PhantomData<&'a ()>,
35234}
35235impl RenderPassAttachmentBeginInfo {
35236    /// Start building this struct; `s_type` is already set to the correct variant.
35237    #[inline]
35238    pub fn builder<'a>() -> RenderPassAttachmentBeginInfoBuilder<'a> {
35239        RenderPassAttachmentBeginInfoBuilder {
35240            inner: RenderPassAttachmentBeginInfo {
35241                s_type: StructureType::from_raw(1000108003i32),
35242                ..Default::default()
35243            },
35244            _marker: core::marker::PhantomData,
35245        }
35246    }
35247}
35248impl<'a> RenderPassAttachmentBeginInfoBuilder<'a> {
35249    #[inline]
35250    pub fn attachments(mut self, slice: &'a [ImageView]) -> Self {
35251        self.inner.attachment_count = slice.len() as u32;
35252        self.inner.p_attachments = slice.as_ptr();
35253        self
35254    }
35255    ///Prepend a struct to the pNext chain. See [`RenderPassAttachmentBeginInfo`]'s **Extended By** section for valid types.
35256    #[inline]
35257    pub fn push_next<T: ExtendsRenderPassAttachmentBeginInfo>(
35258        mut self,
35259        next: &'a mut T,
35260    ) -> Self {
35261        unsafe {
35262            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
35263            (*next_ptr).p_next = self.inner.p_next as *mut _;
35264            self.inner.p_next = <*mut BaseOutStructure>::cast::<
35265                core::ffi::c_void,
35266            >(next_ptr) as *const _;
35267        }
35268        self
35269    }
35270}
35271impl<'a> core::ops::Deref for RenderPassAttachmentBeginInfoBuilder<'a> {
35272    type Target = RenderPassAttachmentBeginInfo;
35273    #[inline]
35274    fn deref(&self) -> &Self::Target {
35275        &self.inner
35276    }
35277}
35278impl<'a> core::ops::DerefMut for RenderPassAttachmentBeginInfoBuilder<'a> {
35279    #[inline]
35280    fn deref_mut(&mut self) -> &mut Self::Target {
35281        &mut self.inner
35282    }
35283}
35284///Builder for [`PhysicalDeviceTextureCompressionASTCHDRFeatures`] with lifetime-tied pNext safety.
35285pub struct PhysicalDeviceTextureCompressionASTCHDRFeaturesBuilder<'a> {
35286    inner: PhysicalDeviceTextureCompressionASTCHDRFeatures,
35287    _marker: core::marker::PhantomData<&'a ()>,
35288}
35289impl PhysicalDeviceTextureCompressionASTCHDRFeatures {
35290    /// Start building this struct; `s_type` is already set to the correct variant.
35291    #[inline]
35292    pub fn builder<'a>() -> PhysicalDeviceTextureCompressionASTCHDRFeaturesBuilder<'a> {
35293        PhysicalDeviceTextureCompressionASTCHDRFeaturesBuilder {
35294            inner: PhysicalDeviceTextureCompressionASTCHDRFeatures {
35295                s_type: StructureType::from_raw(1000066000i32),
35296                ..Default::default()
35297            },
35298            _marker: core::marker::PhantomData,
35299        }
35300    }
35301}
35302impl<'a> PhysicalDeviceTextureCompressionASTCHDRFeaturesBuilder<'a> {
35303    #[inline]
35304    pub fn texture_compression_astc_hdr(mut self, value: bool) -> Self {
35305        self.inner.texture_compression_astc_hdr = value as u32;
35306        self
35307    }
35308    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceTextureCompressionASTCHDRFeatures`]'s **Extended By** section for valid types.
35309    #[inline]
35310    pub fn push_next<T: ExtendsPhysicalDeviceTextureCompressionASTCHDRFeatures>(
35311        mut self,
35312        next: &'a mut T,
35313    ) -> Self {
35314        unsafe {
35315            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
35316            (*next_ptr).p_next = self.inner.p_next as *mut _;
35317            self.inner.p_next = <*mut BaseOutStructure>::cast::<
35318                core::ffi::c_void,
35319            >(next_ptr);
35320        }
35321        self
35322    }
35323}
35324impl<'a> core::ops::Deref
35325for PhysicalDeviceTextureCompressionASTCHDRFeaturesBuilder<'a> {
35326    type Target = PhysicalDeviceTextureCompressionASTCHDRFeatures;
35327    #[inline]
35328    fn deref(&self) -> &Self::Target {
35329        &self.inner
35330    }
35331}
35332impl<'a> core::ops::DerefMut
35333for PhysicalDeviceTextureCompressionASTCHDRFeaturesBuilder<'a> {
35334    #[inline]
35335    fn deref_mut(&mut self) -> &mut Self::Target {
35336        &mut self.inner
35337    }
35338}
35339///Builder for [`PhysicalDeviceCooperativeMatrixFeaturesNV`] with lifetime-tied pNext safety.
35340pub struct PhysicalDeviceCooperativeMatrixFeaturesNVBuilder<'a> {
35341    inner: PhysicalDeviceCooperativeMatrixFeaturesNV,
35342    _marker: core::marker::PhantomData<&'a ()>,
35343}
35344impl PhysicalDeviceCooperativeMatrixFeaturesNV {
35345    /// Start building this struct; `s_type` is already set to the correct variant.
35346    #[inline]
35347    pub fn builder<'a>() -> PhysicalDeviceCooperativeMatrixFeaturesNVBuilder<'a> {
35348        PhysicalDeviceCooperativeMatrixFeaturesNVBuilder {
35349            inner: PhysicalDeviceCooperativeMatrixFeaturesNV {
35350                s_type: StructureType::from_raw(1000249000i32),
35351                ..Default::default()
35352            },
35353            _marker: core::marker::PhantomData,
35354        }
35355    }
35356}
35357impl<'a> PhysicalDeviceCooperativeMatrixFeaturesNVBuilder<'a> {
35358    #[inline]
35359    pub fn cooperative_matrix(mut self, value: bool) -> Self {
35360        self.inner.cooperative_matrix = value as u32;
35361        self
35362    }
35363    #[inline]
35364    pub fn cooperative_matrix_robust_buffer_access(mut self, value: bool) -> Self {
35365        self.inner.cooperative_matrix_robust_buffer_access = value as u32;
35366        self
35367    }
35368    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceCooperativeMatrixFeaturesNV`]'s **Extended By** section for valid types.
35369    #[inline]
35370    pub fn push_next<T: ExtendsPhysicalDeviceCooperativeMatrixFeaturesNV>(
35371        mut self,
35372        next: &'a mut T,
35373    ) -> Self {
35374        unsafe {
35375            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
35376            (*next_ptr).p_next = self.inner.p_next as *mut _;
35377            self.inner.p_next = <*mut BaseOutStructure>::cast::<
35378                core::ffi::c_void,
35379            >(next_ptr);
35380        }
35381        self
35382    }
35383}
35384impl<'a> core::ops::Deref for PhysicalDeviceCooperativeMatrixFeaturesNVBuilder<'a> {
35385    type Target = PhysicalDeviceCooperativeMatrixFeaturesNV;
35386    #[inline]
35387    fn deref(&self) -> &Self::Target {
35388        &self.inner
35389    }
35390}
35391impl<'a> core::ops::DerefMut for PhysicalDeviceCooperativeMatrixFeaturesNVBuilder<'a> {
35392    #[inline]
35393    fn deref_mut(&mut self) -> &mut Self::Target {
35394        &mut self.inner
35395    }
35396}
35397///Builder for [`PhysicalDeviceCooperativeMatrixPropertiesNV`] with lifetime-tied pNext safety.
35398pub struct PhysicalDeviceCooperativeMatrixPropertiesNVBuilder<'a> {
35399    inner: PhysicalDeviceCooperativeMatrixPropertiesNV,
35400    _marker: core::marker::PhantomData<&'a ()>,
35401}
35402impl PhysicalDeviceCooperativeMatrixPropertiesNV {
35403    /// Start building this struct; `s_type` is already set to the correct variant.
35404    #[inline]
35405    pub fn builder<'a>() -> PhysicalDeviceCooperativeMatrixPropertiesNVBuilder<'a> {
35406        PhysicalDeviceCooperativeMatrixPropertiesNVBuilder {
35407            inner: PhysicalDeviceCooperativeMatrixPropertiesNV {
35408                s_type: StructureType::from_raw(1000249002i32),
35409                ..Default::default()
35410            },
35411            _marker: core::marker::PhantomData,
35412        }
35413    }
35414}
35415impl<'a> PhysicalDeviceCooperativeMatrixPropertiesNVBuilder<'a> {
35416    #[inline]
35417    pub fn cooperative_matrix_supported_stages(
35418        mut self,
35419        value: ShaderStageFlags,
35420    ) -> Self {
35421        self.inner.cooperative_matrix_supported_stages = value;
35422        self
35423    }
35424}
35425impl<'a> core::ops::Deref for PhysicalDeviceCooperativeMatrixPropertiesNVBuilder<'a> {
35426    type Target = PhysicalDeviceCooperativeMatrixPropertiesNV;
35427    #[inline]
35428    fn deref(&self) -> &Self::Target {
35429        &self.inner
35430    }
35431}
35432impl<'a> core::ops::DerefMut for PhysicalDeviceCooperativeMatrixPropertiesNVBuilder<'a> {
35433    #[inline]
35434    fn deref_mut(&mut self) -> &mut Self::Target {
35435        &mut self.inner
35436    }
35437}
35438///Builder for [`CooperativeMatrixPropertiesNV`] with lifetime-tied pNext safety.
35439pub struct CooperativeMatrixPropertiesNVBuilder<'a> {
35440    inner: CooperativeMatrixPropertiesNV,
35441    _marker: core::marker::PhantomData<&'a ()>,
35442}
35443impl CooperativeMatrixPropertiesNV {
35444    /// Start building this struct; `s_type` is already set to the correct variant.
35445    #[inline]
35446    pub fn builder<'a>() -> CooperativeMatrixPropertiesNVBuilder<'a> {
35447        CooperativeMatrixPropertiesNVBuilder {
35448            inner: CooperativeMatrixPropertiesNV {
35449                s_type: StructureType::from_raw(1000249001i32),
35450                ..Default::default()
35451            },
35452            _marker: core::marker::PhantomData,
35453        }
35454    }
35455}
35456impl<'a> CooperativeMatrixPropertiesNVBuilder<'a> {
35457    #[inline]
35458    pub fn m_size(mut self, value: u32) -> Self {
35459        self.inner.m_size = value;
35460        self
35461    }
35462    #[inline]
35463    pub fn n_size(mut self, value: u32) -> Self {
35464        self.inner.n_size = value;
35465        self
35466    }
35467    #[inline]
35468    pub fn k_size(mut self, value: u32) -> Self {
35469        self.inner.k_size = value;
35470        self
35471    }
35472    #[inline]
35473    pub fn a_type(mut self, value: ComponentTypeNV) -> Self {
35474        self.inner.a_type = value;
35475        self
35476    }
35477    #[inline]
35478    pub fn b_type(mut self, value: ComponentTypeNV) -> Self {
35479        self.inner.b_type = value;
35480        self
35481    }
35482    #[inline]
35483    pub fn c_type(mut self, value: ComponentTypeNV) -> Self {
35484        self.inner.c_type = value;
35485        self
35486    }
35487    #[inline]
35488    pub fn d_type(mut self, value: ComponentTypeNV) -> Self {
35489        self.inner.d_type = value;
35490        self
35491    }
35492    #[inline]
35493    pub fn scope(mut self, value: ScopeNV) -> Self {
35494        self.inner.scope = value;
35495        self
35496    }
35497}
35498impl<'a> core::ops::Deref for CooperativeMatrixPropertiesNVBuilder<'a> {
35499    type Target = CooperativeMatrixPropertiesNV;
35500    #[inline]
35501    fn deref(&self) -> &Self::Target {
35502        &self.inner
35503    }
35504}
35505impl<'a> core::ops::DerefMut for CooperativeMatrixPropertiesNVBuilder<'a> {
35506    #[inline]
35507    fn deref_mut(&mut self) -> &mut Self::Target {
35508        &mut self.inner
35509    }
35510}
35511///Builder for [`PhysicalDeviceYcbcrImageArraysFeaturesEXT`] with lifetime-tied pNext safety.
35512pub struct PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder<'a> {
35513    inner: PhysicalDeviceYcbcrImageArraysFeaturesEXT,
35514    _marker: core::marker::PhantomData<&'a ()>,
35515}
35516impl PhysicalDeviceYcbcrImageArraysFeaturesEXT {
35517    /// Start building this struct; `s_type` is already set to the correct variant.
35518    #[inline]
35519    pub fn builder<'a>() -> PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder<'a> {
35520        PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder {
35521            inner: PhysicalDeviceYcbcrImageArraysFeaturesEXT {
35522                s_type: StructureType::from_raw(1000252000i32),
35523                ..Default::default()
35524            },
35525            _marker: core::marker::PhantomData,
35526        }
35527    }
35528}
35529impl<'a> PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder<'a> {
35530    #[inline]
35531    pub fn ycbcr_image_arrays(mut self, value: bool) -> Self {
35532        self.inner.ycbcr_image_arrays = value as u32;
35533        self
35534    }
35535    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceYcbcrImageArraysFeaturesEXT`]'s **Extended By** section for valid types.
35536    #[inline]
35537    pub fn push_next<T: ExtendsPhysicalDeviceYcbcrImageArraysFeaturesEXT>(
35538        mut self,
35539        next: &'a mut T,
35540    ) -> Self {
35541        unsafe {
35542            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
35543            (*next_ptr).p_next = self.inner.p_next as *mut _;
35544            self.inner.p_next = <*mut BaseOutStructure>::cast::<
35545                core::ffi::c_void,
35546            >(next_ptr);
35547        }
35548        self
35549    }
35550}
35551impl<'a> core::ops::Deref for PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder<'a> {
35552    type Target = PhysicalDeviceYcbcrImageArraysFeaturesEXT;
35553    #[inline]
35554    fn deref(&self) -> &Self::Target {
35555        &self.inner
35556    }
35557}
35558impl<'a> core::ops::DerefMut for PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder<'a> {
35559    #[inline]
35560    fn deref_mut(&mut self) -> &mut Self::Target {
35561        &mut self.inner
35562    }
35563}
35564///Builder for [`ImageViewHandleInfoNVX`] with lifetime-tied pNext safety.
35565pub struct ImageViewHandleInfoNVXBuilder<'a> {
35566    inner: ImageViewHandleInfoNVX,
35567    _marker: core::marker::PhantomData<&'a ()>,
35568}
35569impl ImageViewHandleInfoNVX {
35570    /// Start building this struct; `s_type` is already set to the correct variant.
35571    #[inline]
35572    pub fn builder<'a>() -> ImageViewHandleInfoNVXBuilder<'a> {
35573        ImageViewHandleInfoNVXBuilder {
35574            inner: ImageViewHandleInfoNVX {
35575                s_type: StructureType::from_raw(1000030000i32),
35576                ..Default::default()
35577            },
35578            _marker: core::marker::PhantomData,
35579        }
35580    }
35581}
35582impl<'a> ImageViewHandleInfoNVXBuilder<'a> {
35583    #[inline]
35584    pub fn image_view(mut self, value: ImageView) -> Self {
35585        self.inner.image_view = value;
35586        self
35587    }
35588    #[inline]
35589    pub fn descriptor_type(mut self, value: DescriptorType) -> Self {
35590        self.inner.descriptor_type = value;
35591        self
35592    }
35593    #[inline]
35594    pub fn sampler(mut self, value: Sampler) -> Self {
35595        self.inner.sampler = value;
35596        self
35597    }
35598    ///Prepend a struct to the pNext chain. See [`ImageViewHandleInfoNVX`]'s **Extended By** section for valid types.
35599    #[inline]
35600    pub fn push_next<T: ExtendsImageViewHandleInfoNVX>(
35601        mut self,
35602        next: &'a mut T,
35603    ) -> Self {
35604        unsafe {
35605            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
35606            (*next_ptr).p_next = self.inner.p_next as *mut _;
35607            self.inner.p_next = <*mut BaseOutStructure>::cast::<
35608                core::ffi::c_void,
35609            >(next_ptr) as *const _;
35610        }
35611        self
35612    }
35613}
35614impl<'a> core::ops::Deref for ImageViewHandleInfoNVXBuilder<'a> {
35615    type Target = ImageViewHandleInfoNVX;
35616    #[inline]
35617    fn deref(&self) -> &Self::Target {
35618        &self.inner
35619    }
35620}
35621impl<'a> core::ops::DerefMut for ImageViewHandleInfoNVXBuilder<'a> {
35622    #[inline]
35623    fn deref_mut(&mut self) -> &mut Self::Target {
35624        &mut self.inner
35625    }
35626}
35627///Builder for [`ImageViewAddressPropertiesNVX`] with lifetime-tied pNext safety.
35628pub struct ImageViewAddressPropertiesNVXBuilder<'a> {
35629    inner: ImageViewAddressPropertiesNVX,
35630    _marker: core::marker::PhantomData<&'a ()>,
35631}
35632impl ImageViewAddressPropertiesNVX {
35633    /// Start building this struct; `s_type` is already set to the correct variant.
35634    #[inline]
35635    pub fn builder<'a>() -> ImageViewAddressPropertiesNVXBuilder<'a> {
35636        ImageViewAddressPropertiesNVXBuilder {
35637            inner: ImageViewAddressPropertiesNVX {
35638                s_type: StructureType::from_raw(1000030001i32),
35639                ..Default::default()
35640            },
35641            _marker: core::marker::PhantomData,
35642        }
35643    }
35644}
35645impl<'a> ImageViewAddressPropertiesNVXBuilder<'a> {
35646    #[inline]
35647    pub fn device_address(mut self, value: u64) -> Self {
35648        self.inner.device_address = value;
35649        self
35650    }
35651    #[inline]
35652    pub fn size(mut self, value: u64) -> Self {
35653        self.inner.size = value;
35654        self
35655    }
35656}
35657impl<'a> core::ops::Deref for ImageViewAddressPropertiesNVXBuilder<'a> {
35658    type Target = ImageViewAddressPropertiesNVX;
35659    #[inline]
35660    fn deref(&self) -> &Self::Target {
35661        &self.inner
35662    }
35663}
35664impl<'a> core::ops::DerefMut for ImageViewAddressPropertiesNVXBuilder<'a> {
35665    #[inline]
35666    fn deref_mut(&mut self) -> &mut Self::Target {
35667        &mut self.inner
35668    }
35669}
35670///Builder for [`PresentFrameTokenGGP`] with lifetime-tied pNext safety.
35671pub struct PresentFrameTokenGGPBuilder<'a> {
35672    inner: PresentFrameTokenGGP,
35673    _marker: core::marker::PhantomData<&'a ()>,
35674}
35675impl PresentFrameTokenGGP {
35676    /// Start building this struct; `s_type` is already set to the correct variant.
35677    #[inline]
35678    pub fn builder<'a>() -> PresentFrameTokenGGPBuilder<'a> {
35679        PresentFrameTokenGGPBuilder {
35680            inner: PresentFrameTokenGGP {
35681                s_type: StructureType::from_raw(1000191000i32),
35682                ..Default::default()
35683            },
35684            _marker: core::marker::PhantomData,
35685        }
35686    }
35687}
35688impl<'a> PresentFrameTokenGGPBuilder<'a> {
35689    #[inline]
35690    pub fn frame_token(mut self, value: u32) -> Self {
35691        self.inner.frame_token = value;
35692        self
35693    }
35694    ///Prepend a struct to the pNext chain. See [`PresentFrameTokenGGP`]'s **Extended By** section for valid types.
35695    #[inline]
35696    pub fn push_next<T: ExtendsPresentFrameTokenGGP>(mut self, next: &'a mut T) -> Self {
35697        unsafe {
35698            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
35699            (*next_ptr).p_next = self.inner.p_next as *mut _;
35700            self.inner.p_next = <*mut BaseOutStructure>::cast::<
35701                core::ffi::c_void,
35702            >(next_ptr) as *const _;
35703        }
35704        self
35705    }
35706}
35707impl<'a> core::ops::Deref for PresentFrameTokenGGPBuilder<'a> {
35708    type Target = PresentFrameTokenGGP;
35709    #[inline]
35710    fn deref(&self) -> &Self::Target {
35711        &self.inner
35712    }
35713}
35714impl<'a> core::ops::DerefMut for PresentFrameTokenGGPBuilder<'a> {
35715    #[inline]
35716    fn deref_mut(&mut self) -> &mut Self::Target {
35717        &mut self.inner
35718    }
35719}
35720///Builder for [`PipelineCreationFeedback`].
35721pub struct PipelineCreationFeedbackBuilder {
35722    inner: PipelineCreationFeedback,
35723}
35724impl PipelineCreationFeedback {
35725    /// Start building this struct.
35726    #[inline]
35727    pub fn builder() -> PipelineCreationFeedbackBuilder {
35728        PipelineCreationFeedbackBuilder {
35729            inner: PipelineCreationFeedback {
35730                ..Default::default()
35731            },
35732        }
35733    }
35734}
35735impl PipelineCreationFeedbackBuilder {
35736    #[inline]
35737    pub fn flags(mut self, value: PipelineCreationFeedbackFlags) -> Self {
35738        self.inner.flags = value;
35739        self
35740    }
35741    #[inline]
35742    pub fn duration(mut self, value: u64) -> Self {
35743        self.inner.duration = value;
35744        self
35745    }
35746}
35747impl core::ops::Deref for PipelineCreationFeedbackBuilder {
35748    type Target = PipelineCreationFeedback;
35749    #[inline]
35750    fn deref(&self) -> &Self::Target {
35751        &self.inner
35752    }
35753}
35754impl core::ops::DerefMut for PipelineCreationFeedbackBuilder {
35755    #[inline]
35756    fn deref_mut(&mut self) -> &mut Self::Target {
35757        &mut self.inner
35758    }
35759}
35760///Builder for [`PipelineCreationFeedbackCreateInfo`] with lifetime-tied pNext safety.
35761pub struct PipelineCreationFeedbackCreateInfoBuilder<'a> {
35762    inner: PipelineCreationFeedbackCreateInfo,
35763    _marker: core::marker::PhantomData<&'a ()>,
35764}
35765impl PipelineCreationFeedbackCreateInfo {
35766    /// Start building this struct; `s_type` is already set to the correct variant.
35767    #[inline]
35768    pub fn builder<'a>() -> PipelineCreationFeedbackCreateInfoBuilder<'a> {
35769        PipelineCreationFeedbackCreateInfoBuilder {
35770            inner: PipelineCreationFeedbackCreateInfo {
35771                s_type: StructureType::from_raw(1000192000i32),
35772                ..Default::default()
35773            },
35774            _marker: core::marker::PhantomData,
35775        }
35776    }
35777}
35778impl<'a> PipelineCreationFeedbackCreateInfoBuilder<'a> {
35779    #[inline]
35780    pub fn pipeline_creation_feedback(
35781        mut self,
35782        value: *mut PipelineCreationFeedback,
35783    ) -> Self {
35784        self.inner.p_pipeline_creation_feedback = value;
35785        self
35786    }
35787    #[inline]
35788    pub fn pipeline_stage_creation_feedbacks(
35789        mut self,
35790        slice: &'a mut [PipelineCreationFeedback],
35791    ) -> Self {
35792        self.inner.pipeline_stage_creation_feedback_count = slice.len() as u32;
35793        self.inner.p_pipeline_stage_creation_feedbacks = slice.as_mut_ptr();
35794        self
35795    }
35796    ///Prepend a struct to the pNext chain. See [`PipelineCreationFeedbackCreateInfo`]'s **Extended By** section for valid types.
35797    #[inline]
35798    pub fn push_next<T: ExtendsPipelineCreationFeedbackCreateInfo>(
35799        mut self,
35800        next: &'a mut T,
35801    ) -> Self {
35802        unsafe {
35803            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
35804            (*next_ptr).p_next = self.inner.p_next as *mut _;
35805            self.inner.p_next = <*mut BaseOutStructure>::cast::<
35806                core::ffi::c_void,
35807            >(next_ptr) as *const _;
35808        }
35809        self
35810    }
35811}
35812impl<'a> core::ops::Deref for PipelineCreationFeedbackCreateInfoBuilder<'a> {
35813    type Target = PipelineCreationFeedbackCreateInfo;
35814    #[inline]
35815    fn deref(&self) -> &Self::Target {
35816        &self.inner
35817    }
35818}
35819impl<'a> core::ops::DerefMut for PipelineCreationFeedbackCreateInfoBuilder<'a> {
35820    #[inline]
35821    fn deref_mut(&mut self) -> &mut Self::Target {
35822        &mut self.inner
35823    }
35824}
35825///Builder for [`SurfaceFullScreenExclusiveInfoEXT`] with lifetime-tied pNext safety.
35826pub struct SurfaceFullScreenExclusiveInfoEXTBuilder<'a> {
35827    inner: SurfaceFullScreenExclusiveInfoEXT,
35828    _marker: core::marker::PhantomData<&'a ()>,
35829}
35830impl SurfaceFullScreenExclusiveInfoEXT {
35831    /// Start building this struct; `s_type` is already set to the correct variant.
35832    #[inline]
35833    pub fn builder<'a>() -> SurfaceFullScreenExclusiveInfoEXTBuilder<'a> {
35834        SurfaceFullScreenExclusiveInfoEXTBuilder {
35835            inner: SurfaceFullScreenExclusiveInfoEXT {
35836                s_type: StructureType::from_raw(1000255000i32),
35837                ..Default::default()
35838            },
35839            _marker: core::marker::PhantomData,
35840        }
35841    }
35842}
35843impl<'a> SurfaceFullScreenExclusiveInfoEXTBuilder<'a> {
35844    #[inline]
35845    pub fn full_screen_exclusive(mut self, value: FullScreenExclusiveEXT) -> Self {
35846        self.inner.full_screen_exclusive = value;
35847        self
35848    }
35849    ///Prepend a struct to the pNext chain. See [`SurfaceFullScreenExclusiveInfoEXT`]'s **Extended By** section for valid types.
35850    #[inline]
35851    pub fn push_next<T: ExtendsSurfaceFullScreenExclusiveInfoEXT>(
35852        mut self,
35853        next: &'a mut T,
35854    ) -> Self {
35855        unsafe {
35856            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
35857            (*next_ptr).p_next = self.inner.p_next as *mut _;
35858            self.inner.p_next = <*mut BaseOutStructure>::cast::<
35859                core::ffi::c_void,
35860            >(next_ptr);
35861        }
35862        self
35863    }
35864}
35865impl<'a> core::ops::Deref for SurfaceFullScreenExclusiveInfoEXTBuilder<'a> {
35866    type Target = SurfaceFullScreenExclusiveInfoEXT;
35867    #[inline]
35868    fn deref(&self) -> &Self::Target {
35869        &self.inner
35870    }
35871}
35872impl<'a> core::ops::DerefMut for SurfaceFullScreenExclusiveInfoEXTBuilder<'a> {
35873    #[inline]
35874    fn deref_mut(&mut self) -> &mut Self::Target {
35875        &mut self.inner
35876    }
35877}
35878///Builder for [`SurfaceFullScreenExclusiveWin32InfoEXT`] with lifetime-tied pNext safety.
35879pub struct SurfaceFullScreenExclusiveWin32InfoEXTBuilder<'a> {
35880    inner: SurfaceFullScreenExclusiveWin32InfoEXT,
35881    _marker: core::marker::PhantomData<&'a ()>,
35882}
35883impl SurfaceFullScreenExclusiveWin32InfoEXT {
35884    /// Start building this struct; `s_type` is already set to the correct variant.
35885    #[inline]
35886    pub fn builder<'a>() -> SurfaceFullScreenExclusiveWin32InfoEXTBuilder<'a> {
35887        SurfaceFullScreenExclusiveWin32InfoEXTBuilder {
35888            inner: SurfaceFullScreenExclusiveWin32InfoEXT {
35889                s_type: StructureType::from_raw(1000255001i32),
35890                ..Default::default()
35891            },
35892            _marker: core::marker::PhantomData,
35893        }
35894    }
35895}
35896impl<'a> SurfaceFullScreenExclusiveWin32InfoEXTBuilder<'a> {
35897    #[inline]
35898    pub fn hmonitor(mut self, value: isize) -> Self {
35899        self.inner.hmonitor = value;
35900        self
35901    }
35902    ///Prepend a struct to the pNext chain. See [`SurfaceFullScreenExclusiveWin32InfoEXT`]'s **Extended By** section for valid types.
35903    #[inline]
35904    pub fn push_next<T: ExtendsSurfaceFullScreenExclusiveWin32InfoEXT>(
35905        mut self,
35906        next: &'a mut T,
35907    ) -> Self {
35908        unsafe {
35909            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
35910            (*next_ptr).p_next = self.inner.p_next as *mut _;
35911            self.inner.p_next = <*mut BaseOutStructure>::cast::<
35912                core::ffi::c_void,
35913            >(next_ptr) as *const _;
35914        }
35915        self
35916    }
35917}
35918impl<'a> core::ops::Deref for SurfaceFullScreenExclusiveWin32InfoEXTBuilder<'a> {
35919    type Target = SurfaceFullScreenExclusiveWin32InfoEXT;
35920    #[inline]
35921    fn deref(&self) -> &Self::Target {
35922        &self.inner
35923    }
35924}
35925impl<'a> core::ops::DerefMut for SurfaceFullScreenExclusiveWin32InfoEXTBuilder<'a> {
35926    #[inline]
35927    fn deref_mut(&mut self) -> &mut Self::Target {
35928        &mut self.inner
35929    }
35930}
35931///Builder for [`SurfaceCapabilitiesFullScreenExclusiveEXT`] with lifetime-tied pNext safety.
35932pub struct SurfaceCapabilitiesFullScreenExclusiveEXTBuilder<'a> {
35933    inner: SurfaceCapabilitiesFullScreenExclusiveEXT,
35934    _marker: core::marker::PhantomData<&'a ()>,
35935}
35936impl SurfaceCapabilitiesFullScreenExclusiveEXT {
35937    /// Start building this struct; `s_type` is already set to the correct variant.
35938    #[inline]
35939    pub fn builder<'a>() -> SurfaceCapabilitiesFullScreenExclusiveEXTBuilder<'a> {
35940        SurfaceCapabilitiesFullScreenExclusiveEXTBuilder {
35941            inner: SurfaceCapabilitiesFullScreenExclusiveEXT {
35942                s_type: StructureType::from_raw(1000255002i32),
35943                ..Default::default()
35944            },
35945            _marker: core::marker::PhantomData,
35946        }
35947    }
35948}
35949impl<'a> SurfaceCapabilitiesFullScreenExclusiveEXTBuilder<'a> {
35950    #[inline]
35951    pub fn full_screen_exclusive_supported(mut self, value: bool) -> Self {
35952        self.inner.full_screen_exclusive_supported = value as u32;
35953        self
35954    }
35955}
35956impl<'a> core::ops::Deref for SurfaceCapabilitiesFullScreenExclusiveEXTBuilder<'a> {
35957    type Target = SurfaceCapabilitiesFullScreenExclusiveEXT;
35958    #[inline]
35959    fn deref(&self) -> &Self::Target {
35960        &self.inner
35961    }
35962}
35963impl<'a> core::ops::DerefMut for SurfaceCapabilitiesFullScreenExclusiveEXTBuilder<'a> {
35964    #[inline]
35965    fn deref_mut(&mut self) -> &mut Self::Target {
35966        &mut self.inner
35967    }
35968}
35969///Builder for [`PhysicalDevicePresentBarrierFeaturesNV`] with lifetime-tied pNext safety.
35970pub struct PhysicalDevicePresentBarrierFeaturesNVBuilder<'a> {
35971    inner: PhysicalDevicePresentBarrierFeaturesNV,
35972    _marker: core::marker::PhantomData<&'a ()>,
35973}
35974impl PhysicalDevicePresentBarrierFeaturesNV {
35975    /// Start building this struct; `s_type` is already set to the correct variant.
35976    #[inline]
35977    pub fn builder<'a>() -> PhysicalDevicePresentBarrierFeaturesNVBuilder<'a> {
35978        PhysicalDevicePresentBarrierFeaturesNVBuilder {
35979            inner: PhysicalDevicePresentBarrierFeaturesNV {
35980                s_type: StructureType::from_raw(1000292000i32),
35981                ..Default::default()
35982            },
35983            _marker: core::marker::PhantomData,
35984        }
35985    }
35986}
35987impl<'a> PhysicalDevicePresentBarrierFeaturesNVBuilder<'a> {
35988    #[inline]
35989    pub fn present_barrier(mut self, value: bool) -> Self {
35990        self.inner.present_barrier = value as u32;
35991        self
35992    }
35993    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePresentBarrierFeaturesNV`]'s **Extended By** section for valid types.
35994    #[inline]
35995    pub fn push_next<T: ExtendsPhysicalDevicePresentBarrierFeaturesNV>(
35996        mut self,
35997        next: &'a mut T,
35998    ) -> Self {
35999        unsafe {
36000            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
36001            (*next_ptr).p_next = self.inner.p_next as *mut _;
36002            self.inner.p_next = <*mut BaseOutStructure>::cast::<
36003                core::ffi::c_void,
36004            >(next_ptr);
36005        }
36006        self
36007    }
36008}
36009impl<'a> core::ops::Deref for PhysicalDevicePresentBarrierFeaturesNVBuilder<'a> {
36010    type Target = PhysicalDevicePresentBarrierFeaturesNV;
36011    #[inline]
36012    fn deref(&self) -> &Self::Target {
36013        &self.inner
36014    }
36015}
36016impl<'a> core::ops::DerefMut for PhysicalDevicePresentBarrierFeaturesNVBuilder<'a> {
36017    #[inline]
36018    fn deref_mut(&mut self) -> &mut Self::Target {
36019        &mut self.inner
36020    }
36021}
36022///Builder for [`SurfaceCapabilitiesPresentBarrierNV`] with lifetime-tied pNext safety.
36023pub struct SurfaceCapabilitiesPresentBarrierNVBuilder<'a> {
36024    inner: SurfaceCapabilitiesPresentBarrierNV,
36025    _marker: core::marker::PhantomData<&'a ()>,
36026}
36027impl SurfaceCapabilitiesPresentBarrierNV {
36028    /// Start building this struct; `s_type` is already set to the correct variant.
36029    #[inline]
36030    pub fn builder<'a>() -> SurfaceCapabilitiesPresentBarrierNVBuilder<'a> {
36031        SurfaceCapabilitiesPresentBarrierNVBuilder {
36032            inner: SurfaceCapabilitiesPresentBarrierNV {
36033                s_type: StructureType::from_raw(1000292001i32),
36034                ..Default::default()
36035            },
36036            _marker: core::marker::PhantomData,
36037        }
36038    }
36039}
36040impl<'a> SurfaceCapabilitiesPresentBarrierNVBuilder<'a> {
36041    #[inline]
36042    pub fn present_barrier_supported(mut self, value: bool) -> Self {
36043        self.inner.present_barrier_supported = value as u32;
36044        self
36045    }
36046}
36047impl<'a> core::ops::Deref for SurfaceCapabilitiesPresentBarrierNVBuilder<'a> {
36048    type Target = SurfaceCapabilitiesPresentBarrierNV;
36049    #[inline]
36050    fn deref(&self) -> &Self::Target {
36051        &self.inner
36052    }
36053}
36054impl<'a> core::ops::DerefMut for SurfaceCapabilitiesPresentBarrierNVBuilder<'a> {
36055    #[inline]
36056    fn deref_mut(&mut self) -> &mut Self::Target {
36057        &mut self.inner
36058    }
36059}
36060///Builder for [`SwapchainPresentBarrierCreateInfoNV`] with lifetime-tied pNext safety.
36061pub struct SwapchainPresentBarrierCreateInfoNVBuilder<'a> {
36062    inner: SwapchainPresentBarrierCreateInfoNV,
36063    _marker: core::marker::PhantomData<&'a ()>,
36064}
36065impl SwapchainPresentBarrierCreateInfoNV {
36066    /// Start building this struct; `s_type` is already set to the correct variant.
36067    #[inline]
36068    pub fn builder<'a>() -> SwapchainPresentBarrierCreateInfoNVBuilder<'a> {
36069        SwapchainPresentBarrierCreateInfoNVBuilder {
36070            inner: SwapchainPresentBarrierCreateInfoNV {
36071                s_type: StructureType::from_raw(1000292002i32),
36072                ..Default::default()
36073            },
36074            _marker: core::marker::PhantomData,
36075        }
36076    }
36077}
36078impl<'a> SwapchainPresentBarrierCreateInfoNVBuilder<'a> {
36079    #[inline]
36080    pub fn present_barrier_enable(mut self, value: bool) -> Self {
36081        self.inner.present_barrier_enable = value as u32;
36082        self
36083    }
36084    ///Prepend a struct to the pNext chain. See [`SwapchainPresentBarrierCreateInfoNV`]'s **Extended By** section for valid types.
36085    #[inline]
36086    pub fn push_next<T: ExtendsSwapchainPresentBarrierCreateInfoNV>(
36087        mut self,
36088        next: &'a mut T,
36089    ) -> Self {
36090        unsafe {
36091            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
36092            (*next_ptr).p_next = self.inner.p_next as *mut _;
36093            self.inner.p_next = <*mut BaseOutStructure>::cast::<
36094                core::ffi::c_void,
36095            >(next_ptr);
36096        }
36097        self
36098    }
36099}
36100impl<'a> core::ops::Deref for SwapchainPresentBarrierCreateInfoNVBuilder<'a> {
36101    type Target = SwapchainPresentBarrierCreateInfoNV;
36102    #[inline]
36103    fn deref(&self) -> &Self::Target {
36104        &self.inner
36105    }
36106}
36107impl<'a> core::ops::DerefMut for SwapchainPresentBarrierCreateInfoNVBuilder<'a> {
36108    #[inline]
36109    fn deref_mut(&mut self) -> &mut Self::Target {
36110        &mut self.inner
36111    }
36112}
36113///Builder for [`PhysicalDevicePerformanceQueryFeaturesKHR`] with lifetime-tied pNext safety.
36114pub struct PhysicalDevicePerformanceQueryFeaturesKHRBuilder<'a> {
36115    inner: PhysicalDevicePerformanceQueryFeaturesKHR,
36116    _marker: core::marker::PhantomData<&'a ()>,
36117}
36118impl PhysicalDevicePerformanceQueryFeaturesKHR {
36119    /// Start building this struct; `s_type` is already set to the correct variant.
36120    #[inline]
36121    pub fn builder<'a>() -> PhysicalDevicePerformanceQueryFeaturesKHRBuilder<'a> {
36122        PhysicalDevicePerformanceQueryFeaturesKHRBuilder {
36123            inner: PhysicalDevicePerformanceQueryFeaturesKHR {
36124                s_type: StructureType::from_raw(1000116000i32),
36125                ..Default::default()
36126            },
36127            _marker: core::marker::PhantomData,
36128        }
36129    }
36130}
36131impl<'a> PhysicalDevicePerformanceQueryFeaturesKHRBuilder<'a> {
36132    #[inline]
36133    pub fn performance_counter_query_pools(mut self, value: bool) -> Self {
36134        self.inner.performance_counter_query_pools = value as u32;
36135        self
36136    }
36137    #[inline]
36138    pub fn performance_counter_multiple_query_pools(mut self, value: bool) -> Self {
36139        self.inner.performance_counter_multiple_query_pools = value as u32;
36140        self
36141    }
36142    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePerformanceQueryFeaturesKHR`]'s **Extended By** section for valid types.
36143    #[inline]
36144    pub fn push_next<T: ExtendsPhysicalDevicePerformanceQueryFeaturesKHR>(
36145        mut self,
36146        next: &'a mut T,
36147    ) -> Self {
36148        unsafe {
36149            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
36150            (*next_ptr).p_next = self.inner.p_next as *mut _;
36151            self.inner.p_next = <*mut BaseOutStructure>::cast::<
36152                core::ffi::c_void,
36153            >(next_ptr);
36154        }
36155        self
36156    }
36157}
36158impl<'a> core::ops::Deref for PhysicalDevicePerformanceQueryFeaturesKHRBuilder<'a> {
36159    type Target = PhysicalDevicePerformanceQueryFeaturesKHR;
36160    #[inline]
36161    fn deref(&self) -> &Self::Target {
36162        &self.inner
36163    }
36164}
36165impl<'a> core::ops::DerefMut for PhysicalDevicePerformanceQueryFeaturesKHRBuilder<'a> {
36166    #[inline]
36167    fn deref_mut(&mut self) -> &mut Self::Target {
36168        &mut self.inner
36169    }
36170}
36171///Builder for [`PhysicalDevicePerformanceQueryPropertiesKHR`] with lifetime-tied pNext safety.
36172pub struct PhysicalDevicePerformanceQueryPropertiesKHRBuilder<'a> {
36173    inner: PhysicalDevicePerformanceQueryPropertiesKHR,
36174    _marker: core::marker::PhantomData<&'a ()>,
36175}
36176impl PhysicalDevicePerformanceQueryPropertiesKHR {
36177    /// Start building this struct; `s_type` is already set to the correct variant.
36178    #[inline]
36179    pub fn builder<'a>() -> PhysicalDevicePerformanceQueryPropertiesKHRBuilder<'a> {
36180        PhysicalDevicePerformanceQueryPropertiesKHRBuilder {
36181            inner: PhysicalDevicePerformanceQueryPropertiesKHR {
36182                s_type: StructureType::from_raw(1000116001i32),
36183                ..Default::default()
36184            },
36185            _marker: core::marker::PhantomData,
36186        }
36187    }
36188}
36189impl<'a> PhysicalDevicePerformanceQueryPropertiesKHRBuilder<'a> {
36190    #[inline]
36191    pub fn allow_command_buffer_query_copies(mut self, value: bool) -> Self {
36192        self.inner.allow_command_buffer_query_copies = value as u32;
36193        self
36194    }
36195}
36196impl<'a> core::ops::Deref for PhysicalDevicePerformanceQueryPropertiesKHRBuilder<'a> {
36197    type Target = PhysicalDevicePerformanceQueryPropertiesKHR;
36198    #[inline]
36199    fn deref(&self) -> &Self::Target {
36200        &self.inner
36201    }
36202}
36203impl<'a> core::ops::DerefMut for PhysicalDevicePerformanceQueryPropertiesKHRBuilder<'a> {
36204    #[inline]
36205    fn deref_mut(&mut self) -> &mut Self::Target {
36206        &mut self.inner
36207    }
36208}
36209///Builder for [`PerformanceCounterKHR`] with lifetime-tied pNext safety.
36210pub struct PerformanceCounterKHRBuilder<'a> {
36211    inner: PerformanceCounterKHR,
36212    _marker: core::marker::PhantomData<&'a ()>,
36213}
36214impl PerformanceCounterKHR {
36215    /// Start building this struct; `s_type` is already set to the correct variant.
36216    #[inline]
36217    pub fn builder<'a>() -> PerformanceCounterKHRBuilder<'a> {
36218        PerformanceCounterKHRBuilder {
36219            inner: PerformanceCounterKHR {
36220                s_type: StructureType::from_raw(1000116005i32),
36221                ..Default::default()
36222            },
36223            _marker: core::marker::PhantomData,
36224        }
36225    }
36226}
36227impl<'a> PerformanceCounterKHRBuilder<'a> {
36228    #[inline]
36229    pub fn unit(mut self, value: PerformanceCounterUnitKHR) -> Self {
36230        self.inner.unit = value;
36231        self
36232    }
36233    #[inline]
36234    pub fn scope(mut self, value: PerformanceCounterScopeKHR) -> Self {
36235        self.inner.scope = value;
36236        self
36237    }
36238    #[inline]
36239    pub fn storage(mut self, value: PerformanceCounterStorageKHR) -> Self {
36240        self.inner.storage = value;
36241        self
36242    }
36243    #[inline]
36244    pub fn uuid(mut self, value: [u8; UUID_SIZE as usize]) -> Self {
36245        self.inner.uuid = value;
36246        self
36247    }
36248}
36249impl<'a> core::ops::Deref for PerformanceCounterKHRBuilder<'a> {
36250    type Target = PerformanceCounterKHR;
36251    #[inline]
36252    fn deref(&self) -> &Self::Target {
36253        &self.inner
36254    }
36255}
36256impl<'a> core::ops::DerefMut for PerformanceCounterKHRBuilder<'a> {
36257    #[inline]
36258    fn deref_mut(&mut self) -> &mut Self::Target {
36259        &mut self.inner
36260    }
36261}
36262///Builder for [`PerformanceCounterDescriptionKHR`] with lifetime-tied pNext safety.
36263pub struct PerformanceCounterDescriptionKHRBuilder<'a> {
36264    inner: PerformanceCounterDescriptionKHR,
36265    _marker: core::marker::PhantomData<&'a ()>,
36266}
36267impl PerformanceCounterDescriptionKHR {
36268    /// Start building this struct; `s_type` is already set to the correct variant.
36269    #[inline]
36270    pub fn builder<'a>() -> PerformanceCounterDescriptionKHRBuilder<'a> {
36271        PerformanceCounterDescriptionKHRBuilder {
36272            inner: PerformanceCounterDescriptionKHR {
36273                s_type: StructureType::from_raw(1000116006i32),
36274                ..Default::default()
36275            },
36276            _marker: core::marker::PhantomData,
36277        }
36278    }
36279}
36280impl<'a> PerformanceCounterDescriptionKHRBuilder<'a> {
36281    #[inline]
36282    pub fn flags(mut self, value: PerformanceCounterDescriptionFlagsKHR) -> Self {
36283        self.inner.flags = value;
36284        self
36285    }
36286    #[inline]
36287    pub fn name(
36288        mut self,
36289        value: crate::StringArray<{ MAX_DESCRIPTION_SIZE as usize }>,
36290    ) -> Self {
36291        self.inner.name = value;
36292        self
36293    }
36294    #[inline]
36295    pub fn category(
36296        mut self,
36297        value: crate::StringArray<{ MAX_DESCRIPTION_SIZE as usize }>,
36298    ) -> Self {
36299        self.inner.category = value;
36300        self
36301    }
36302    #[inline]
36303    pub fn description(
36304        mut self,
36305        value: crate::StringArray<{ MAX_DESCRIPTION_SIZE as usize }>,
36306    ) -> Self {
36307        self.inner.description = value;
36308        self
36309    }
36310}
36311impl<'a> core::ops::Deref for PerformanceCounterDescriptionKHRBuilder<'a> {
36312    type Target = PerformanceCounterDescriptionKHR;
36313    #[inline]
36314    fn deref(&self) -> &Self::Target {
36315        &self.inner
36316    }
36317}
36318impl<'a> core::ops::DerefMut for PerformanceCounterDescriptionKHRBuilder<'a> {
36319    #[inline]
36320    fn deref_mut(&mut self) -> &mut Self::Target {
36321        &mut self.inner
36322    }
36323}
36324///Builder for [`QueryPoolPerformanceCreateInfoKHR`] with lifetime-tied pNext safety.
36325pub struct QueryPoolPerformanceCreateInfoKHRBuilder<'a> {
36326    inner: QueryPoolPerformanceCreateInfoKHR,
36327    _marker: core::marker::PhantomData<&'a ()>,
36328}
36329impl QueryPoolPerformanceCreateInfoKHR {
36330    /// Start building this struct; `s_type` is already set to the correct variant.
36331    #[inline]
36332    pub fn builder<'a>() -> QueryPoolPerformanceCreateInfoKHRBuilder<'a> {
36333        QueryPoolPerformanceCreateInfoKHRBuilder {
36334            inner: QueryPoolPerformanceCreateInfoKHR {
36335                s_type: StructureType::from_raw(1000116002i32),
36336                ..Default::default()
36337            },
36338            _marker: core::marker::PhantomData,
36339        }
36340    }
36341}
36342impl<'a> QueryPoolPerformanceCreateInfoKHRBuilder<'a> {
36343    #[inline]
36344    pub fn queue_family_index(mut self, value: u32) -> Self {
36345        self.inner.queue_family_index = value;
36346        self
36347    }
36348    #[inline]
36349    pub fn counter_indices(mut self, slice: &'a [u32]) -> Self {
36350        self.inner.counter_index_count = slice.len() as u32;
36351        self.inner.p_counter_indices = slice.as_ptr();
36352        self
36353    }
36354    ///Prepend a struct to the pNext chain. See [`QueryPoolPerformanceCreateInfoKHR`]'s **Extended By** section for valid types.
36355    #[inline]
36356    pub fn push_next<T: ExtendsQueryPoolPerformanceCreateInfoKHR>(
36357        mut self,
36358        next: &'a mut T,
36359    ) -> Self {
36360        unsafe {
36361            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
36362            (*next_ptr).p_next = self.inner.p_next as *mut _;
36363            self.inner.p_next = <*mut BaseOutStructure>::cast::<
36364                core::ffi::c_void,
36365            >(next_ptr) as *const _;
36366        }
36367        self
36368    }
36369}
36370impl<'a> core::ops::Deref for QueryPoolPerformanceCreateInfoKHRBuilder<'a> {
36371    type Target = QueryPoolPerformanceCreateInfoKHR;
36372    #[inline]
36373    fn deref(&self) -> &Self::Target {
36374        &self.inner
36375    }
36376}
36377impl<'a> core::ops::DerefMut for QueryPoolPerformanceCreateInfoKHRBuilder<'a> {
36378    #[inline]
36379    fn deref_mut(&mut self) -> &mut Self::Target {
36380        &mut self.inner
36381    }
36382}
36383///Builder for [`AcquireProfilingLockInfoKHR`] with lifetime-tied pNext safety.
36384pub struct AcquireProfilingLockInfoKHRBuilder<'a> {
36385    inner: AcquireProfilingLockInfoKHR,
36386    _marker: core::marker::PhantomData<&'a ()>,
36387}
36388impl AcquireProfilingLockInfoKHR {
36389    /// Start building this struct; `s_type` is already set to the correct variant.
36390    #[inline]
36391    pub fn builder<'a>() -> AcquireProfilingLockInfoKHRBuilder<'a> {
36392        AcquireProfilingLockInfoKHRBuilder {
36393            inner: AcquireProfilingLockInfoKHR {
36394                s_type: StructureType::from_raw(1000116004i32),
36395                ..Default::default()
36396            },
36397            _marker: core::marker::PhantomData,
36398        }
36399    }
36400}
36401impl<'a> AcquireProfilingLockInfoKHRBuilder<'a> {
36402    #[inline]
36403    pub fn flags(mut self, value: AcquireProfilingLockFlagsKHR) -> Self {
36404        self.inner.flags = value;
36405        self
36406    }
36407    #[inline]
36408    pub fn timeout(mut self, value: u64) -> Self {
36409        self.inner.timeout = value;
36410        self
36411    }
36412    ///Prepend a struct to the pNext chain. See [`AcquireProfilingLockInfoKHR`]'s **Extended By** section for valid types.
36413    #[inline]
36414    pub fn push_next<T: ExtendsAcquireProfilingLockInfoKHR>(
36415        mut self,
36416        next: &'a mut T,
36417    ) -> Self {
36418        unsafe {
36419            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
36420            (*next_ptr).p_next = self.inner.p_next as *mut _;
36421            self.inner.p_next = <*mut BaseOutStructure>::cast::<
36422                core::ffi::c_void,
36423            >(next_ptr) as *const _;
36424        }
36425        self
36426    }
36427}
36428impl<'a> core::ops::Deref for AcquireProfilingLockInfoKHRBuilder<'a> {
36429    type Target = AcquireProfilingLockInfoKHR;
36430    #[inline]
36431    fn deref(&self) -> &Self::Target {
36432        &self.inner
36433    }
36434}
36435impl<'a> core::ops::DerefMut for AcquireProfilingLockInfoKHRBuilder<'a> {
36436    #[inline]
36437    fn deref_mut(&mut self) -> &mut Self::Target {
36438        &mut self.inner
36439    }
36440}
36441///Builder for [`PerformanceQuerySubmitInfoKHR`] with lifetime-tied pNext safety.
36442pub struct PerformanceQuerySubmitInfoKHRBuilder<'a> {
36443    inner: PerformanceQuerySubmitInfoKHR,
36444    _marker: core::marker::PhantomData<&'a ()>,
36445}
36446impl PerformanceQuerySubmitInfoKHR {
36447    /// Start building this struct; `s_type` is already set to the correct variant.
36448    #[inline]
36449    pub fn builder<'a>() -> PerformanceQuerySubmitInfoKHRBuilder<'a> {
36450        PerformanceQuerySubmitInfoKHRBuilder {
36451            inner: PerformanceQuerySubmitInfoKHR {
36452                s_type: StructureType::from_raw(1000116003i32),
36453                ..Default::default()
36454            },
36455            _marker: core::marker::PhantomData,
36456        }
36457    }
36458}
36459impl<'a> PerformanceQuerySubmitInfoKHRBuilder<'a> {
36460    #[inline]
36461    pub fn counter_pass_index(mut self, value: u32) -> Self {
36462        self.inner.counter_pass_index = value;
36463        self
36464    }
36465    ///Prepend a struct to the pNext chain. See [`PerformanceQuerySubmitInfoKHR`]'s **Extended By** section for valid types.
36466    #[inline]
36467    pub fn push_next<T: ExtendsPerformanceQuerySubmitInfoKHR>(
36468        mut self,
36469        next: &'a mut T,
36470    ) -> Self {
36471        unsafe {
36472            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
36473            (*next_ptr).p_next = self.inner.p_next as *mut _;
36474            self.inner.p_next = <*mut BaseOutStructure>::cast::<
36475                core::ffi::c_void,
36476            >(next_ptr) as *const _;
36477        }
36478        self
36479    }
36480}
36481impl<'a> core::ops::Deref for PerformanceQuerySubmitInfoKHRBuilder<'a> {
36482    type Target = PerformanceQuerySubmitInfoKHR;
36483    #[inline]
36484    fn deref(&self) -> &Self::Target {
36485        &self.inner
36486    }
36487}
36488impl<'a> core::ops::DerefMut for PerformanceQuerySubmitInfoKHRBuilder<'a> {
36489    #[inline]
36490    fn deref_mut(&mut self) -> &mut Self::Target {
36491        &mut self.inner
36492    }
36493}
36494///Builder for [`PerformanceQueryReservationInfoKHR`] with lifetime-tied pNext safety.
36495pub struct PerformanceQueryReservationInfoKHRBuilder<'a> {
36496    inner: PerformanceQueryReservationInfoKHR,
36497    _marker: core::marker::PhantomData<&'a ()>,
36498}
36499impl PerformanceQueryReservationInfoKHR {
36500    /// Start building this struct; `s_type` is already set to the correct variant.
36501    #[inline]
36502    pub fn builder<'a>() -> PerformanceQueryReservationInfoKHRBuilder<'a> {
36503        PerformanceQueryReservationInfoKHRBuilder {
36504            inner: PerformanceQueryReservationInfoKHR {
36505                s_type: StructureType::from_raw(1000116007i32),
36506                ..Default::default()
36507            },
36508            _marker: core::marker::PhantomData,
36509        }
36510    }
36511}
36512impl<'a> PerformanceQueryReservationInfoKHRBuilder<'a> {
36513    #[inline]
36514    pub fn max_performance_queries_per_pool(mut self, value: u32) -> Self {
36515        self.inner.max_performance_queries_per_pool = value;
36516        self
36517    }
36518    ///Prepend a struct to the pNext chain. See [`PerformanceQueryReservationInfoKHR`]'s **Extended By** section for valid types.
36519    #[inline]
36520    pub fn push_next<T: ExtendsPerformanceQueryReservationInfoKHR>(
36521        mut self,
36522        next: &'a mut T,
36523    ) -> Self {
36524        unsafe {
36525            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
36526            (*next_ptr).p_next = self.inner.p_next as *mut _;
36527            self.inner.p_next = <*mut BaseOutStructure>::cast::<
36528                core::ffi::c_void,
36529            >(next_ptr) as *const _;
36530        }
36531        self
36532    }
36533}
36534impl<'a> core::ops::Deref for PerformanceQueryReservationInfoKHRBuilder<'a> {
36535    type Target = PerformanceQueryReservationInfoKHR;
36536    #[inline]
36537    fn deref(&self) -> &Self::Target {
36538        &self.inner
36539    }
36540}
36541impl<'a> core::ops::DerefMut for PerformanceQueryReservationInfoKHRBuilder<'a> {
36542    #[inline]
36543    fn deref_mut(&mut self) -> &mut Self::Target {
36544        &mut self.inner
36545    }
36546}
36547///Builder for [`HeadlessSurfaceCreateInfoEXT`] with lifetime-tied pNext safety.
36548pub struct HeadlessSurfaceCreateInfoEXTBuilder<'a> {
36549    inner: HeadlessSurfaceCreateInfoEXT,
36550    _marker: core::marker::PhantomData<&'a ()>,
36551}
36552impl HeadlessSurfaceCreateInfoEXT {
36553    /// Start building this struct; `s_type` is already set to the correct variant.
36554    #[inline]
36555    pub fn builder<'a>() -> HeadlessSurfaceCreateInfoEXTBuilder<'a> {
36556        HeadlessSurfaceCreateInfoEXTBuilder {
36557            inner: HeadlessSurfaceCreateInfoEXT {
36558                s_type: StructureType::from_raw(1000256000i32),
36559                ..Default::default()
36560            },
36561            _marker: core::marker::PhantomData,
36562        }
36563    }
36564}
36565impl<'a> HeadlessSurfaceCreateInfoEXTBuilder<'a> {
36566    #[inline]
36567    pub fn flags(mut self, value: HeadlessSurfaceCreateFlagsEXT) -> Self {
36568        self.inner.flags = value;
36569        self
36570    }
36571    ///Prepend a struct to the pNext chain. See [`HeadlessSurfaceCreateInfoEXT`]'s **Extended By** section for valid types.
36572    #[inline]
36573    pub fn push_next<T: ExtendsHeadlessSurfaceCreateInfoEXT>(
36574        mut self,
36575        next: &'a mut T,
36576    ) -> Self {
36577        unsafe {
36578            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
36579            (*next_ptr).p_next = self.inner.p_next as *mut _;
36580            self.inner.p_next = <*mut BaseOutStructure>::cast::<
36581                core::ffi::c_void,
36582            >(next_ptr) as *const _;
36583        }
36584        self
36585    }
36586}
36587impl<'a> core::ops::Deref for HeadlessSurfaceCreateInfoEXTBuilder<'a> {
36588    type Target = HeadlessSurfaceCreateInfoEXT;
36589    #[inline]
36590    fn deref(&self) -> &Self::Target {
36591        &self.inner
36592    }
36593}
36594impl<'a> core::ops::DerefMut for HeadlessSurfaceCreateInfoEXTBuilder<'a> {
36595    #[inline]
36596    fn deref_mut(&mut self) -> &mut Self::Target {
36597        &mut self.inner
36598    }
36599}
36600///Builder for [`PhysicalDeviceCoverageReductionModeFeaturesNV`] with lifetime-tied pNext safety.
36601pub struct PhysicalDeviceCoverageReductionModeFeaturesNVBuilder<'a> {
36602    inner: PhysicalDeviceCoverageReductionModeFeaturesNV,
36603    _marker: core::marker::PhantomData<&'a ()>,
36604}
36605impl PhysicalDeviceCoverageReductionModeFeaturesNV {
36606    /// Start building this struct; `s_type` is already set to the correct variant.
36607    #[inline]
36608    pub fn builder<'a>() -> PhysicalDeviceCoverageReductionModeFeaturesNVBuilder<'a> {
36609        PhysicalDeviceCoverageReductionModeFeaturesNVBuilder {
36610            inner: PhysicalDeviceCoverageReductionModeFeaturesNV {
36611                s_type: StructureType::from_raw(1000250000i32),
36612                ..Default::default()
36613            },
36614            _marker: core::marker::PhantomData,
36615        }
36616    }
36617}
36618impl<'a> PhysicalDeviceCoverageReductionModeFeaturesNVBuilder<'a> {
36619    #[inline]
36620    pub fn coverage_reduction_mode(mut self, value: bool) -> Self {
36621        self.inner.coverage_reduction_mode = value as u32;
36622        self
36623    }
36624    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceCoverageReductionModeFeaturesNV`]'s **Extended By** section for valid types.
36625    #[inline]
36626    pub fn push_next<T: ExtendsPhysicalDeviceCoverageReductionModeFeaturesNV>(
36627        mut self,
36628        next: &'a mut T,
36629    ) -> Self {
36630        unsafe {
36631            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
36632            (*next_ptr).p_next = self.inner.p_next as *mut _;
36633            self.inner.p_next = <*mut BaseOutStructure>::cast::<
36634                core::ffi::c_void,
36635            >(next_ptr);
36636        }
36637        self
36638    }
36639}
36640impl<'a> core::ops::Deref for PhysicalDeviceCoverageReductionModeFeaturesNVBuilder<'a> {
36641    type Target = PhysicalDeviceCoverageReductionModeFeaturesNV;
36642    #[inline]
36643    fn deref(&self) -> &Self::Target {
36644        &self.inner
36645    }
36646}
36647impl<'a> core::ops::DerefMut
36648for PhysicalDeviceCoverageReductionModeFeaturesNVBuilder<'a> {
36649    #[inline]
36650    fn deref_mut(&mut self) -> &mut Self::Target {
36651        &mut self.inner
36652    }
36653}
36654///Builder for [`PipelineCoverageReductionStateCreateInfoNV`] with lifetime-tied pNext safety.
36655pub struct PipelineCoverageReductionStateCreateInfoNVBuilder<'a> {
36656    inner: PipelineCoverageReductionStateCreateInfoNV,
36657    _marker: core::marker::PhantomData<&'a ()>,
36658}
36659impl PipelineCoverageReductionStateCreateInfoNV {
36660    /// Start building this struct; `s_type` is already set to the correct variant.
36661    #[inline]
36662    pub fn builder<'a>() -> PipelineCoverageReductionStateCreateInfoNVBuilder<'a> {
36663        PipelineCoverageReductionStateCreateInfoNVBuilder {
36664            inner: PipelineCoverageReductionStateCreateInfoNV {
36665                s_type: StructureType::from_raw(1000250001i32),
36666                ..Default::default()
36667            },
36668            _marker: core::marker::PhantomData,
36669        }
36670    }
36671}
36672impl<'a> PipelineCoverageReductionStateCreateInfoNVBuilder<'a> {
36673    #[inline]
36674    pub fn flags(mut self, value: PipelineCoverageReductionStateCreateFlagsNV) -> Self {
36675        self.inner.flags = value;
36676        self
36677    }
36678    #[inline]
36679    pub fn coverage_reduction_mode(mut self, value: CoverageReductionModeNV) -> Self {
36680        self.inner.coverage_reduction_mode = value;
36681        self
36682    }
36683    ///Prepend a struct to the pNext chain. See [`PipelineCoverageReductionStateCreateInfoNV`]'s **Extended By** section for valid types.
36684    #[inline]
36685    pub fn push_next<T: ExtendsPipelineCoverageReductionStateCreateInfoNV>(
36686        mut self,
36687        next: &'a mut T,
36688    ) -> Self {
36689        unsafe {
36690            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
36691            (*next_ptr).p_next = self.inner.p_next as *mut _;
36692            self.inner.p_next = <*mut BaseOutStructure>::cast::<
36693                core::ffi::c_void,
36694            >(next_ptr) as *const _;
36695        }
36696        self
36697    }
36698}
36699impl<'a> core::ops::Deref for PipelineCoverageReductionStateCreateInfoNVBuilder<'a> {
36700    type Target = PipelineCoverageReductionStateCreateInfoNV;
36701    #[inline]
36702    fn deref(&self) -> &Self::Target {
36703        &self.inner
36704    }
36705}
36706impl<'a> core::ops::DerefMut for PipelineCoverageReductionStateCreateInfoNVBuilder<'a> {
36707    #[inline]
36708    fn deref_mut(&mut self) -> &mut Self::Target {
36709        &mut self.inner
36710    }
36711}
36712///Builder for [`FramebufferMixedSamplesCombinationNV`] with lifetime-tied pNext safety.
36713pub struct FramebufferMixedSamplesCombinationNVBuilder<'a> {
36714    inner: FramebufferMixedSamplesCombinationNV,
36715    _marker: core::marker::PhantomData<&'a ()>,
36716}
36717impl FramebufferMixedSamplesCombinationNV {
36718    /// Start building this struct; `s_type` is already set to the correct variant.
36719    #[inline]
36720    pub fn builder<'a>() -> FramebufferMixedSamplesCombinationNVBuilder<'a> {
36721        FramebufferMixedSamplesCombinationNVBuilder {
36722            inner: FramebufferMixedSamplesCombinationNV {
36723                s_type: StructureType::from_raw(1000250002i32),
36724                ..Default::default()
36725            },
36726            _marker: core::marker::PhantomData,
36727        }
36728    }
36729}
36730impl<'a> FramebufferMixedSamplesCombinationNVBuilder<'a> {
36731    #[inline]
36732    pub fn coverage_reduction_mode(mut self, value: CoverageReductionModeNV) -> Self {
36733        self.inner.coverage_reduction_mode = value;
36734        self
36735    }
36736    #[inline]
36737    pub fn rasterization_samples(mut self, value: SampleCountFlagBits) -> Self {
36738        self.inner.rasterization_samples = value;
36739        self
36740    }
36741    #[inline]
36742    pub fn depth_stencil_samples(mut self, value: SampleCountFlags) -> Self {
36743        self.inner.depth_stencil_samples = value;
36744        self
36745    }
36746    #[inline]
36747    pub fn color_samples(mut self, value: SampleCountFlags) -> Self {
36748        self.inner.color_samples = value;
36749        self
36750    }
36751}
36752impl<'a> core::ops::Deref for FramebufferMixedSamplesCombinationNVBuilder<'a> {
36753    type Target = FramebufferMixedSamplesCombinationNV;
36754    #[inline]
36755    fn deref(&self) -> &Self::Target {
36756        &self.inner
36757    }
36758}
36759impl<'a> core::ops::DerefMut for FramebufferMixedSamplesCombinationNVBuilder<'a> {
36760    #[inline]
36761    fn deref_mut(&mut self) -> &mut Self::Target {
36762        &mut self.inner
36763    }
36764}
36765///Builder for [`PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL`] with lifetime-tied pNext safety.
36766pub struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder<'a> {
36767    inner: PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL,
36768    _marker: core::marker::PhantomData<&'a ()>,
36769}
36770impl PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
36771    /// Start building this struct; `s_type` is already set to the correct variant.
36772    #[inline]
36773    pub fn builder<'a>() -> PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder<
36774        'a,
36775    > {
36776        PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder {
36777            inner: PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
36778                s_type: StructureType::from_raw(1000209000i32),
36779                ..Default::default()
36780            },
36781            _marker: core::marker::PhantomData,
36782        }
36783    }
36784}
36785impl<'a> PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder<'a> {
36786    #[inline]
36787    pub fn shader_integer_functions2(mut self, value: bool) -> Self {
36788        self.inner.shader_integer_functions2 = value as u32;
36789        self
36790    }
36791    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL`]'s **Extended By** section for valid types.
36792    #[inline]
36793    pub fn push_next<T: ExtendsPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>(
36794        mut self,
36795        next: &'a mut T,
36796    ) -> Self {
36797        unsafe {
36798            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
36799            (*next_ptr).p_next = self.inner.p_next as *mut _;
36800            self.inner.p_next = <*mut BaseOutStructure>::cast::<
36801                core::ffi::c_void,
36802            >(next_ptr);
36803        }
36804        self
36805    }
36806}
36807impl<'a> core::ops::Deref
36808for PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder<'a> {
36809    type Target = PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
36810    #[inline]
36811    fn deref(&self) -> &Self::Target {
36812        &self.inner
36813    }
36814}
36815impl<'a> core::ops::DerefMut
36816for PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder<'a> {
36817    #[inline]
36818    fn deref_mut(&mut self) -> &mut Self::Target {
36819        &mut self.inner
36820    }
36821}
36822///Builder for [`PerformanceValueINTEL`].
36823pub struct PerformanceValueINTELBuilder {
36824    inner: PerformanceValueINTEL,
36825}
36826impl PerformanceValueINTEL {
36827    /// Start building this struct.
36828    #[inline]
36829    pub fn builder() -> PerformanceValueINTELBuilder {
36830        PerformanceValueINTELBuilder {
36831            inner: PerformanceValueINTEL {
36832                ..Default::default()
36833            },
36834        }
36835    }
36836}
36837impl PerformanceValueINTELBuilder {
36838    #[inline]
36839    pub fn r#type(mut self, value: PerformanceValueTypeINTEL) -> Self {
36840        self.inner.r#type = value;
36841        self
36842    }
36843    #[inline]
36844    pub fn data(mut self, value: PerformanceValueDataINTEL) -> Self {
36845        self.inner.data = value;
36846        self
36847    }
36848}
36849impl core::ops::Deref for PerformanceValueINTELBuilder {
36850    type Target = PerformanceValueINTEL;
36851    #[inline]
36852    fn deref(&self) -> &Self::Target {
36853        &self.inner
36854    }
36855}
36856impl core::ops::DerefMut for PerformanceValueINTELBuilder {
36857    #[inline]
36858    fn deref_mut(&mut self) -> &mut Self::Target {
36859        &mut self.inner
36860    }
36861}
36862///Builder for [`InitializePerformanceApiInfoINTEL`] with lifetime-tied pNext safety.
36863pub struct InitializePerformanceApiInfoINTELBuilder<'a> {
36864    inner: InitializePerformanceApiInfoINTEL,
36865    _marker: core::marker::PhantomData<&'a ()>,
36866}
36867impl InitializePerformanceApiInfoINTEL {
36868    /// Start building this struct; `s_type` is already set to the correct variant.
36869    #[inline]
36870    pub fn builder<'a>() -> InitializePerformanceApiInfoINTELBuilder<'a> {
36871        InitializePerformanceApiInfoINTELBuilder {
36872            inner: InitializePerformanceApiInfoINTEL {
36873                s_type: StructureType::from_raw(1000210001i32),
36874                ..Default::default()
36875            },
36876            _marker: core::marker::PhantomData,
36877        }
36878    }
36879}
36880impl<'a> InitializePerformanceApiInfoINTELBuilder<'a> {
36881    #[inline]
36882    pub fn user_data(mut self, value: *mut core::ffi::c_void) -> Self {
36883        self.inner.p_user_data = value;
36884        self
36885    }
36886    ///Prepend a struct to the pNext chain. See [`InitializePerformanceApiInfoINTEL`]'s **Extended By** section for valid types.
36887    #[inline]
36888    pub fn push_next<T: ExtendsInitializePerformanceApiInfoINTEL>(
36889        mut self,
36890        next: &'a mut T,
36891    ) -> Self {
36892        unsafe {
36893            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
36894            (*next_ptr).p_next = self.inner.p_next as *mut _;
36895            self.inner.p_next = <*mut BaseOutStructure>::cast::<
36896                core::ffi::c_void,
36897            >(next_ptr) as *const _;
36898        }
36899        self
36900    }
36901}
36902impl<'a> core::ops::Deref for InitializePerformanceApiInfoINTELBuilder<'a> {
36903    type Target = InitializePerformanceApiInfoINTEL;
36904    #[inline]
36905    fn deref(&self) -> &Self::Target {
36906        &self.inner
36907    }
36908}
36909impl<'a> core::ops::DerefMut for InitializePerformanceApiInfoINTELBuilder<'a> {
36910    #[inline]
36911    fn deref_mut(&mut self) -> &mut Self::Target {
36912        &mut self.inner
36913    }
36914}
36915///Builder for [`QueryPoolPerformanceQueryCreateInfoINTEL`] with lifetime-tied pNext safety.
36916pub struct QueryPoolPerformanceQueryCreateInfoINTELBuilder<'a> {
36917    inner: QueryPoolPerformanceQueryCreateInfoINTEL,
36918    _marker: core::marker::PhantomData<&'a ()>,
36919}
36920impl QueryPoolPerformanceQueryCreateInfoINTEL {
36921    /// Start building this struct; `s_type` is already set to the correct variant.
36922    #[inline]
36923    pub fn builder<'a>() -> QueryPoolPerformanceQueryCreateInfoINTELBuilder<'a> {
36924        QueryPoolPerformanceQueryCreateInfoINTELBuilder {
36925            inner: QueryPoolPerformanceQueryCreateInfoINTEL {
36926                s_type: StructureType::from_raw(1000210000i32),
36927                ..Default::default()
36928            },
36929            _marker: core::marker::PhantomData,
36930        }
36931    }
36932}
36933impl<'a> QueryPoolPerformanceQueryCreateInfoINTELBuilder<'a> {
36934    #[inline]
36935    pub fn performance_counters_sampling(
36936        mut self,
36937        value: QueryPoolSamplingModeINTEL,
36938    ) -> Self {
36939        self.inner.performance_counters_sampling = value;
36940        self
36941    }
36942    ///Prepend a struct to the pNext chain. See [`QueryPoolPerformanceQueryCreateInfoINTEL`]'s **Extended By** section for valid types.
36943    #[inline]
36944    pub fn push_next<T: ExtendsQueryPoolPerformanceQueryCreateInfoINTEL>(
36945        mut self,
36946        next: &'a mut T,
36947    ) -> Self {
36948        unsafe {
36949            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
36950            (*next_ptr).p_next = self.inner.p_next as *mut _;
36951            self.inner.p_next = <*mut BaseOutStructure>::cast::<
36952                core::ffi::c_void,
36953            >(next_ptr) as *const _;
36954        }
36955        self
36956    }
36957}
36958impl<'a> core::ops::Deref for QueryPoolPerformanceQueryCreateInfoINTELBuilder<'a> {
36959    type Target = QueryPoolPerformanceQueryCreateInfoINTEL;
36960    #[inline]
36961    fn deref(&self) -> &Self::Target {
36962        &self.inner
36963    }
36964}
36965impl<'a> core::ops::DerefMut for QueryPoolPerformanceQueryCreateInfoINTELBuilder<'a> {
36966    #[inline]
36967    fn deref_mut(&mut self) -> &mut Self::Target {
36968        &mut self.inner
36969    }
36970}
36971///Builder for [`PerformanceMarkerInfoINTEL`] with lifetime-tied pNext safety.
36972pub struct PerformanceMarkerInfoINTELBuilder<'a> {
36973    inner: PerformanceMarkerInfoINTEL,
36974    _marker: core::marker::PhantomData<&'a ()>,
36975}
36976impl PerformanceMarkerInfoINTEL {
36977    /// Start building this struct; `s_type` is already set to the correct variant.
36978    #[inline]
36979    pub fn builder<'a>() -> PerformanceMarkerInfoINTELBuilder<'a> {
36980        PerformanceMarkerInfoINTELBuilder {
36981            inner: PerformanceMarkerInfoINTEL {
36982                s_type: StructureType::from_raw(1000210002i32),
36983                ..Default::default()
36984            },
36985            _marker: core::marker::PhantomData,
36986        }
36987    }
36988}
36989impl<'a> PerformanceMarkerInfoINTELBuilder<'a> {
36990    #[inline]
36991    pub fn marker(mut self, value: u64) -> Self {
36992        self.inner.marker = value;
36993        self
36994    }
36995    ///Prepend a struct to the pNext chain. See [`PerformanceMarkerInfoINTEL`]'s **Extended By** section for valid types.
36996    #[inline]
36997    pub fn push_next<T: ExtendsPerformanceMarkerInfoINTEL>(
36998        mut self,
36999        next: &'a mut T,
37000    ) -> Self {
37001        unsafe {
37002            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
37003            (*next_ptr).p_next = self.inner.p_next as *mut _;
37004            self.inner.p_next = <*mut BaseOutStructure>::cast::<
37005                core::ffi::c_void,
37006            >(next_ptr) as *const _;
37007        }
37008        self
37009    }
37010}
37011impl<'a> core::ops::Deref for PerformanceMarkerInfoINTELBuilder<'a> {
37012    type Target = PerformanceMarkerInfoINTEL;
37013    #[inline]
37014    fn deref(&self) -> &Self::Target {
37015        &self.inner
37016    }
37017}
37018impl<'a> core::ops::DerefMut for PerformanceMarkerInfoINTELBuilder<'a> {
37019    #[inline]
37020    fn deref_mut(&mut self) -> &mut Self::Target {
37021        &mut self.inner
37022    }
37023}
37024///Builder for [`PerformanceStreamMarkerInfoINTEL`] with lifetime-tied pNext safety.
37025pub struct PerformanceStreamMarkerInfoINTELBuilder<'a> {
37026    inner: PerformanceStreamMarkerInfoINTEL,
37027    _marker: core::marker::PhantomData<&'a ()>,
37028}
37029impl PerformanceStreamMarkerInfoINTEL {
37030    /// Start building this struct; `s_type` is already set to the correct variant.
37031    #[inline]
37032    pub fn builder<'a>() -> PerformanceStreamMarkerInfoINTELBuilder<'a> {
37033        PerformanceStreamMarkerInfoINTELBuilder {
37034            inner: PerformanceStreamMarkerInfoINTEL {
37035                s_type: StructureType::from_raw(1000210003i32),
37036                ..Default::default()
37037            },
37038            _marker: core::marker::PhantomData,
37039        }
37040    }
37041}
37042impl<'a> PerformanceStreamMarkerInfoINTELBuilder<'a> {
37043    #[inline]
37044    pub fn marker(mut self, value: u32) -> Self {
37045        self.inner.marker = value;
37046        self
37047    }
37048    ///Prepend a struct to the pNext chain. See [`PerformanceStreamMarkerInfoINTEL`]'s **Extended By** section for valid types.
37049    #[inline]
37050    pub fn push_next<T: ExtendsPerformanceStreamMarkerInfoINTEL>(
37051        mut self,
37052        next: &'a mut T,
37053    ) -> Self {
37054        unsafe {
37055            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
37056            (*next_ptr).p_next = self.inner.p_next as *mut _;
37057            self.inner.p_next = <*mut BaseOutStructure>::cast::<
37058                core::ffi::c_void,
37059            >(next_ptr) as *const _;
37060        }
37061        self
37062    }
37063}
37064impl<'a> core::ops::Deref for PerformanceStreamMarkerInfoINTELBuilder<'a> {
37065    type Target = PerformanceStreamMarkerInfoINTEL;
37066    #[inline]
37067    fn deref(&self) -> &Self::Target {
37068        &self.inner
37069    }
37070}
37071impl<'a> core::ops::DerefMut for PerformanceStreamMarkerInfoINTELBuilder<'a> {
37072    #[inline]
37073    fn deref_mut(&mut self) -> &mut Self::Target {
37074        &mut self.inner
37075    }
37076}
37077///Builder for [`PerformanceOverrideInfoINTEL`] with lifetime-tied pNext safety.
37078pub struct PerformanceOverrideInfoINTELBuilder<'a> {
37079    inner: PerformanceOverrideInfoINTEL,
37080    _marker: core::marker::PhantomData<&'a ()>,
37081}
37082impl PerformanceOverrideInfoINTEL {
37083    /// Start building this struct; `s_type` is already set to the correct variant.
37084    #[inline]
37085    pub fn builder<'a>() -> PerformanceOverrideInfoINTELBuilder<'a> {
37086        PerformanceOverrideInfoINTELBuilder {
37087            inner: PerformanceOverrideInfoINTEL {
37088                s_type: StructureType::from_raw(1000210004i32),
37089                ..Default::default()
37090            },
37091            _marker: core::marker::PhantomData,
37092        }
37093    }
37094}
37095impl<'a> PerformanceOverrideInfoINTELBuilder<'a> {
37096    #[inline]
37097    pub fn r#type(mut self, value: PerformanceOverrideTypeINTEL) -> Self {
37098        self.inner.r#type = value;
37099        self
37100    }
37101    #[inline]
37102    pub fn enable(mut self, value: bool) -> Self {
37103        self.inner.enable = value as u32;
37104        self
37105    }
37106    #[inline]
37107    pub fn parameter(mut self, value: u64) -> Self {
37108        self.inner.parameter = value;
37109        self
37110    }
37111    ///Prepend a struct to the pNext chain. See [`PerformanceOverrideInfoINTEL`]'s **Extended By** section for valid types.
37112    #[inline]
37113    pub fn push_next<T: ExtendsPerformanceOverrideInfoINTEL>(
37114        mut self,
37115        next: &'a mut T,
37116    ) -> Self {
37117        unsafe {
37118            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
37119            (*next_ptr).p_next = self.inner.p_next as *mut _;
37120            self.inner.p_next = <*mut BaseOutStructure>::cast::<
37121                core::ffi::c_void,
37122            >(next_ptr) as *const _;
37123        }
37124        self
37125    }
37126}
37127impl<'a> core::ops::Deref for PerformanceOverrideInfoINTELBuilder<'a> {
37128    type Target = PerformanceOverrideInfoINTEL;
37129    #[inline]
37130    fn deref(&self) -> &Self::Target {
37131        &self.inner
37132    }
37133}
37134impl<'a> core::ops::DerefMut for PerformanceOverrideInfoINTELBuilder<'a> {
37135    #[inline]
37136    fn deref_mut(&mut self) -> &mut Self::Target {
37137        &mut self.inner
37138    }
37139}
37140///Builder for [`PerformanceConfigurationAcquireInfoINTEL`] with lifetime-tied pNext safety.
37141pub struct PerformanceConfigurationAcquireInfoINTELBuilder<'a> {
37142    inner: PerformanceConfigurationAcquireInfoINTEL,
37143    _marker: core::marker::PhantomData<&'a ()>,
37144}
37145impl PerformanceConfigurationAcquireInfoINTEL {
37146    /// Start building this struct; `s_type` is already set to the correct variant.
37147    #[inline]
37148    pub fn builder<'a>() -> PerformanceConfigurationAcquireInfoINTELBuilder<'a> {
37149        PerformanceConfigurationAcquireInfoINTELBuilder {
37150            inner: PerformanceConfigurationAcquireInfoINTEL {
37151                s_type: StructureType::from_raw(1000210005i32),
37152                ..Default::default()
37153            },
37154            _marker: core::marker::PhantomData,
37155        }
37156    }
37157}
37158impl<'a> PerformanceConfigurationAcquireInfoINTELBuilder<'a> {
37159    #[inline]
37160    pub fn r#type(mut self, value: PerformanceConfigurationTypeINTEL) -> Self {
37161        self.inner.r#type = value;
37162        self
37163    }
37164    ///Prepend a struct to the pNext chain. See [`PerformanceConfigurationAcquireInfoINTEL`]'s **Extended By** section for valid types.
37165    #[inline]
37166    pub fn push_next<T: ExtendsPerformanceConfigurationAcquireInfoINTEL>(
37167        mut self,
37168        next: &'a mut T,
37169    ) -> Self {
37170        unsafe {
37171            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
37172            (*next_ptr).p_next = self.inner.p_next as *mut _;
37173            self.inner.p_next = <*mut BaseOutStructure>::cast::<
37174                core::ffi::c_void,
37175            >(next_ptr) as *const _;
37176        }
37177        self
37178    }
37179}
37180impl<'a> core::ops::Deref for PerformanceConfigurationAcquireInfoINTELBuilder<'a> {
37181    type Target = PerformanceConfigurationAcquireInfoINTEL;
37182    #[inline]
37183    fn deref(&self) -> &Self::Target {
37184        &self.inner
37185    }
37186}
37187impl<'a> core::ops::DerefMut for PerformanceConfigurationAcquireInfoINTELBuilder<'a> {
37188    #[inline]
37189    fn deref_mut(&mut self) -> &mut Self::Target {
37190        &mut self.inner
37191    }
37192}
37193///Builder for [`PhysicalDeviceShaderClockFeaturesKHR`] with lifetime-tied pNext safety.
37194pub struct PhysicalDeviceShaderClockFeaturesKHRBuilder<'a> {
37195    inner: PhysicalDeviceShaderClockFeaturesKHR,
37196    _marker: core::marker::PhantomData<&'a ()>,
37197}
37198impl PhysicalDeviceShaderClockFeaturesKHR {
37199    /// Start building this struct; `s_type` is already set to the correct variant.
37200    #[inline]
37201    pub fn builder<'a>() -> PhysicalDeviceShaderClockFeaturesKHRBuilder<'a> {
37202        PhysicalDeviceShaderClockFeaturesKHRBuilder {
37203            inner: PhysicalDeviceShaderClockFeaturesKHR {
37204                s_type: StructureType::from_raw(1000181000i32),
37205                ..Default::default()
37206            },
37207            _marker: core::marker::PhantomData,
37208        }
37209    }
37210}
37211impl<'a> PhysicalDeviceShaderClockFeaturesKHRBuilder<'a> {
37212    #[inline]
37213    pub fn shader_subgroup_clock(mut self, value: bool) -> Self {
37214        self.inner.shader_subgroup_clock = value as u32;
37215        self
37216    }
37217    #[inline]
37218    pub fn shader_device_clock(mut self, value: bool) -> Self {
37219        self.inner.shader_device_clock = value as u32;
37220        self
37221    }
37222    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderClockFeaturesKHR`]'s **Extended By** section for valid types.
37223    #[inline]
37224    pub fn push_next<T: ExtendsPhysicalDeviceShaderClockFeaturesKHR>(
37225        mut self,
37226        next: &'a mut T,
37227    ) -> Self {
37228        unsafe {
37229            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
37230            (*next_ptr).p_next = self.inner.p_next as *mut _;
37231            self.inner.p_next = <*mut BaseOutStructure>::cast::<
37232                core::ffi::c_void,
37233            >(next_ptr);
37234        }
37235        self
37236    }
37237}
37238impl<'a> core::ops::Deref for PhysicalDeviceShaderClockFeaturesKHRBuilder<'a> {
37239    type Target = PhysicalDeviceShaderClockFeaturesKHR;
37240    #[inline]
37241    fn deref(&self) -> &Self::Target {
37242        &self.inner
37243    }
37244}
37245impl<'a> core::ops::DerefMut for PhysicalDeviceShaderClockFeaturesKHRBuilder<'a> {
37246    #[inline]
37247    fn deref_mut(&mut self) -> &mut Self::Target {
37248        &mut self.inner
37249    }
37250}
37251///Builder for [`PhysicalDeviceIndexTypeUint8Features`] with lifetime-tied pNext safety.
37252pub struct PhysicalDeviceIndexTypeUint8FeaturesBuilder<'a> {
37253    inner: PhysicalDeviceIndexTypeUint8Features,
37254    _marker: core::marker::PhantomData<&'a ()>,
37255}
37256impl PhysicalDeviceIndexTypeUint8Features {
37257    /// Start building this struct; `s_type` is already set to the correct variant.
37258    #[inline]
37259    pub fn builder<'a>() -> PhysicalDeviceIndexTypeUint8FeaturesBuilder<'a> {
37260        PhysicalDeviceIndexTypeUint8FeaturesBuilder {
37261            inner: PhysicalDeviceIndexTypeUint8Features {
37262                s_type: StructureType::from_raw(1000265000i32),
37263                ..Default::default()
37264            },
37265            _marker: core::marker::PhantomData,
37266        }
37267    }
37268}
37269impl<'a> PhysicalDeviceIndexTypeUint8FeaturesBuilder<'a> {
37270    #[inline]
37271    pub fn index_type_uint8(mut self, value: bool) -> Self {
37272        self.inner.index_type_uint8 = value as u32;
37273        self
37274    }
37275    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceIndexTypeUint8Features`]'s **Extended By** section for valid types.
37276    #[inline]
37277    pub fn push_next<T: ExtendsPhysicalDeviceIndexTypeUint8Features>(
37278        mut self,
37279        next: &'a mut T,
37280    ) -> Self {
37281        unsafe {
37282            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
37283            (*next_ptr).p_next = self.inner.p_next as *mut _;
37284            self.inner.p_next = <*mut BaseOutStructure>::cast::<
37285                core::ffi::c_void,
37286            >(next_ptr);
37287        }
37288        self
37289    }
37290}
37291impl<'a> core::ops::Deref for PhysicalDeviceIndexTypeUint8FeaturesBuilder<'a> {
37292    type Target = PhysicalDeviceIndexTypeUint8Features;
37293    #[inline]
37294    fn deref(&self) -> &Self::Target {
37295        &self.inner
37296    }
37297}
37298impl<'a> core::ops::DerefMut for PhysicalDeviceIndexTypeUint8FeaturesBuilder<'a> {
37299    #[inline]
37300    fn deref_mut(&mut self) -> &mut Self::Target {
37301        &mut self.inner
37302    }
37303}
37304///Builder for [`PhysicalDeviceShaderSMBuiltinsPropertiesNV`] with lifetime-tied pNext safety.
37305pub struct PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder<'a> {
37306    inner: PhysicalDeviceShaderSMBuiltinsPropertiesNV,
37307    _marker: core::marker::PhantomData<&'a ()>,
37308}
37309impl PhysicalDeviceShaderSMBuiltinsPropertiesNV {
37310    /// Start building this struct; `s_type` is already set to the correct variant.
37311    #[inline]
37312    pub fn builder<'a>() -> PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder<'a> {
37313        PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder {
37314            inner: PhysicalDeviceShaderSMBuiltinsPropertiesNV {
37315                s_type: StructureType::from_raw(1000154001i32),
37316                ..Default::default()
37317            },
37318            _marker: core::marker::PhantomData,
37319        }
37320    }
37321}
37322impl<'a> PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder<'a> {
37323    #[inline]
37324    pub fn shader_sm_count(mut self, value: u32) -> Self {
37325        self.inner.shader_sm_count = value;
37326        self
37327    }
37328    #[inline]
37329    pub fn shader_warps_per_sm(mut self, value: u32) -> Self {
37330        self.inner.shader_warps_per_sm = value;
37331        self
37332    }
37333}
37334impl<'a> core::ops::Deref for PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder<'a> {
37335    type Target = PhysicalDeviceShaderSMBuiltinsPropertiesNV;
37336    #[inline]
37337    fn deref(&self) -> &Self::Target {
37338        &self.inner
37339    }
37340}
37341impl<'a> core::ops::DerefMut for PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder<'a> {
37342    #[inline]
37343    fn deref_mut(&mut self) -> &mut Self::Target {
37344        &mut self.inner
37345    }
37346}
37347///Builder for [`PhysicalDeviceShaderSMBuiltinsFeaturesNV`] with lifetime-tied pNext safety.
37348pub struct PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder<'a> {
37349    inner: PhysicalDeviceShaderSMBuiltinsFeaturesNV,
37350    _marker: core::marker::PhantomData<&'a ()>,
37351}
37352impl PhysicalDeviceShaderSMBuiltinsFeaturesNV {
37353    /// Start building this struct; `s_type` is already set to the correct variant.
37354    #[inline]
37355    pub fn builder<'a>() -> PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder<'a> {
37356        PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder {
37357            inner: PhysicalDeviceShaderSMBuiltinsFeaturesNV {
37358                s_type: StructureType::from_raw(1000154000i32),
37359                ..Default::default()
37360            },
37361            _marker: core::marker::PhantomData,
37362        }
37363    }
37364}
37365impl<'a> PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder<'a> {
37366    #[inline]
37367    pub fn shader_sm_builtins(mut self, value: bool) -> Self {
37368        self.inner.shader_sm_builtins = value as u32;
37369        self
37370    }
37371    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderSMBuiltinsFeaturesNV`]'s **Extended By** section for valid types.
37372    #[inline]
37373    pub fn push_next<T: ExtendsPhysicalDeviceShaderSMBuiltinsFeaturesNV>(
37374        mut self,
37375        next: &'a mut T,
37376    ) -> Self {
37377        unsafe {
37378            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
37379            (*next_ptr).p_next = self.inner.p_next as *mut _;
37380            self.inner.p_next = <*mut BaseOutStructure>::cast::<
37381                core::ffi::c_void,
37382            >(next_ptr);
37383        }
37384        self
37385    }
37386}
37387impl<'a> core::ops::Deref for PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder<'a> {
37388    type Target = PhysicalDeviceShaderSMBuiltinsFeaturesNV;
37389    #[inline]
37390    fn deref(&self) -> &Self::Target {
37391        &self.inner
37392    }
37393}
37394impl<'a> core::ops::DerefMut for PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder<'a> {
37395    #[inline]
37396    fn deref_mut(&mut self) -> &mut Self::Target {
37397        &mut self.inner
37398    }
37399}
37400///Builder for [`PhysicalDeviceFragmentShaderInterlockFeaturesEXT`] with lifetime-tied pNext safety.
37401pub struct PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder<'a> {
37402    inner: PhysicalDeviceFragmentShaderInterlockFeaturesEXT,
37403    _marker: core::marker::PhantomData<&'a ()>,
37404}
37405impl PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
37406    /// Start building this struct; `s_type` is already set to the correct variant.
37407    #[inline]
37408    pub fn builder<'a>() -> PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder<'a> {
37409        PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder {
37410            inner: PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
37411                s_type: StructureType::from_raw(1000251000i32),
37412                ..Default::default()
37413            },
37414            _marker: core::marker::PhantomData,
37415        }
37416    }
37417}
37418impl<'a> PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder<'a> {
37419    #[inline]
37420    pub fn fragment_shader_sample_interlock(mut self, value: bool) -> Self {
37421        self.inner.fragment_shader_sample_interlock = value as u32;
37422        self
37423    }
37424    #[inline]
37425    pub fn fragment_shader_pixel_interlock(mut self, value: bool) -> Self {
37426        self.inner.fragment_shader_pixel_interlock = value as u32;
37427        self
37428    }
37429    #[inline]
37430    pub fn fragment_shader_shading_rate_interlock(mut self, value: bool) -> Self {
37431        self.inner.fragment_shader_shading_rate_interlock = value as u32;
37432        self
37433    }
37434    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceFragmentShaderInterlockFeaturesEXT`]'s **Extended By** section for valid types.
37435    #[inline]
37436    pub fn push_next<T: ExtendsPhysicalDeviceFragmentShaderInterlockFeaturesEXT>(
37437        mut self,
37438        next: &'a mut T,
37439    ) -> Self {
37440        unsafe {
37441            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
37442            (*next_ptr).p_next = self.inner.p_next as *mut _;
37443            self.inner.p_next = <*mut BaseOutStructure>::cast::<
37444                core::ffi::c_void,
37445            >(next_ptr);
37446        }
37447        self
37448    }
37449}
37450impl<'a> core::ops::Deref
37451for PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder<'a> {
37452    type Target = PhysicalDeviceFragmentShaderInterlockFeaturesEXT;
37453    #[inline]
37454    fn deref(&self) -> &Self::Target {
37455        &self.inner
37456    }
37457}
37458impl<'a> core::ops::DerefMut
37459for PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder<'a> {
37460    #[inline]
37461    fn deref_mut(&mut self) -> &mut Self::Target {
37462        &mut self.inner
37463    }
37464}
37465///Builder for [`PhysicalDeviceSeparateDepthStencilLayoutsFeatures`] with lifetime-tied pNext safety.
37466pub struct PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder<'a> {
37467    inner: PhysicalDeviceSeparateDepthStencilLayoutsFeatures,
37468    _marker: core::marker::PhantomData<&'a ()>,
37469}
37470impl PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
37471    /// Start building this struct; `s_type` is already set to the correct variant.
37472    #[inline]
37473    pub fn builder<'a>() -> PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder<
37474        'a,
37475    > {
37476        PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder {
37477            inner: PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
37478                s_type: StructureType::from_raw(1000241000i32),
37479                ..Default::default()
37480            },
37481            _marker: core::marker::PhantomData,
37482        }
37483    }
37484}
37485impl<'a> PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder<'a> {
37486    #[inline]
37487    pub fn separate_depth_stencil_layouts(mut self, value: bool) -> Self {
37488        self.inner.separate_depth_stencil_layouts = value as u32;
37489        self
37490    }
37491    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceSeparateDepthStencilLayoutsFeatures`]'s **Extended By** section for valid types.
37492    #[inline]
37493    pub fn push_next<T: ExtendsPhysicalDeviceSeparateDepthStencilLayoutsFeatures>(
37494        mut self,
37495        next: &'a mut T,
37496    ) -> Self {
37497        unsafe {
37498            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
37499            (*next_ptr).p_next = self.inner.p_next as *mut _;
37500            self.inner.p_next = <*mut BaseOutStructure>::cast::<
37501                core::ffi::c_void,
37502            >(next_ptr);
37503        }
37504        self
37505    }
37506}
37507impl<'a> core::ops::Deref
37508for PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder<'a> {
37509    type Target = PhysicalDeviceSeparateDepthStencilLayoutsFeatures;
37510    #[inline]
37511    fn deref(&self) -> &Self::Target {
37512        &self.inner
37513    }
37514}
37515impl<'a> core::ops::DerefMut
37516for PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder<'a> {
37517    #[inline]
37518    fn deref_mut(&mut self) -> &mut Self::Target {
37519        &mut self.inner
37520    }
37521}
37522///Builder for [`AttachmentReferenceStencilLayout`] with lifetime-tied pNext safety.
37523pub struct AttachmentReferenceStencilLayoutBuilder<'a> {
37524    inner: AttachmentReferenceStencilLayout,
37525    _marker: core::marker::PhantomData<&'a ()>,
37526}
37527impl AttachmentReferenceStencilLayout {
37528    /// Start building this struct; `s_type` is already set to the correct variant.
37529    #[inline]
37530    pub fn builder<'a>() -> AttachmentReferenceStencilLayoutBuilder<'a> {
37531        AttachmentReferenceStencilLayoutBuilder {
37532            inner: AttachmentReferenceStencilLayout {
37533                s_type: StructureType::from_raw(1000241001i32),
37534                ..Default::default()
37535            },
37536            _marker: core::marker::PhantomData,
37537        }
37538    }
37539}
37540impl<'a> AttachmentReferenceStencilLayoutBuilder<'a> {
37541    #[inline]
37542    pub fn stencil_layout(mut self, value: ImageLayout) -> Self {
37543        self.inner.stencil_layout = value;
37544        self
37545    }
37546    ///Prepend a struct to the pNext chain. See [`AttachmentReferenceStencilLayout`]'s **Extended By** section for valid types.
37547    #[inline]
37548    pub fn push_next<T: ExtendsAttachmentReferenceStencilLayout>(
37549        mut self,
37550        next: &'a mut T,
37551    ) -> Self {
37552        unsafe {
37553            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
37554            (*next_ptr).p_next = self.inner.p_next as *mut _;
37555            self.inner.p_next = <*mut BaseOutStructure>::cast::<
37556                core::ffi::c_void,
37557            >(next_ptr);
37558        }
37559        self
37560    }
37561}
37562impl<'a> core::ops::Deref for AttachmentReferenceStencilLayoutBuilder<'a> {
37563    type Target = AttachmentReferenceStencilLayout;
37564    #[inline]
37565    fn deref(&self) -> &Self::Target {
37566        &self.inner
37567    }
37568}
37569impl<'a> core::ops::DerefMut for AttachmentReferenceStencilLayoutBuilder<'a> {
37570    #[inline]
37571    fn deref_mut(&mut self) -> &mut Self::Target {
37572        &mut self.inner
37573    }
37574}
37575///Builder for [`PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT`] with lifetime-tied pNext safety.
37576pub struct PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder<'a> {
37577    inner: PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT,
37578    _marker: core::marker::PhantomData<&'a ()>,
37579}
37580impl PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
37581    /// Start building this struct; `s_type` is already set to the correct variant.
37582    #[inline]
37583    pub fn builder<'a>() -> PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder<
37584        'a,
37585    > {
37586        PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder {
37587            inner: PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
37588                s_type: StructureType::from_raw(1000356000i32),
37589                ..Default::default()
37590            },
37591            _marker: core::marker::PhantomData,
37592        }
37593    }
37594}
37595impl<'a> PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder<'a> {
37596    #[inline]
37597    pub fn primitive_topology_list_restart(mut self, value: bool) -> Self {
37598        self.inner.primitive_topology_list_restart = value as u32;
37599        self
37600    }
37601    #[inline]
37602    pub fn primitive_topology_patch_list_restart(mut self, value: bool) -> Self {
37603        self.inner.primitive_topology_patch_list_restart = value as u32;
37604        self
37605    }
37606    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT`]'s **Extended By** section for valid types.
37607    #[inline]
37608    pub fn push_next<T: ExtendsPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>(
37609        mut self,
37610        next: &'a mut T,
37611    ) -> Self {
37612        unsafe {
37613            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
37614            (*next_ptr).p_next = self.inner.p_next as *mut _;
37615            self.inner.p_next = <*mut BaseOutStructure>::cast::<
37616                core::ffi::c_void,
37617            >(next_ptr);
37618        }
37619        self
37620    }
37621}
37622impl<'a> core::ops::Deref
37623for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder<'a> {
37624    type Target = PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
37625    #[inline]
37626    fn deref(&self) -> &Self::Target {
37627        &self.inner
37628    }
37629}
37630impl<'a> core::ops::DerefMut
37631for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder<'a> {
37632    #[inline]
37633    fn deref_mut(&mut self) -> &mut Self::Target {
37634        &mut self.inner
37635    }
37636}
37637///Builder for [`AttachmentDescriptionStencilLayout`] with lifetime-tied pNext safety.
37638pub struct AttachmentDescriptionStencilLayoutBuilder<'a> {
37639    inner: AttachmentDescriptionStencilLayout,
37640    _marker: core::marker::PhantomData<&'a ()>,
37641}
37642impl AttachmentDescriptionStencilLayout {
37643    /// Start building this struct; `s_type` is already set to the correct variant.
37644    #[inline]
37645    pub fn builder<'a>() -> AttachmentDescriptionStencilLayoutBuilder<'a> {
37646        AttachmentDescriptionStencilLayoutBuilder {
37647            inner: AttachmentDescriptionStencilLayout {
37648                s_type: StructureType::from_raw(1000241002i32),
37649                ..Default::default()
37650            },
37651            _marker: core::marker::PhantomData,
37652        }
37653    }
37654}
37655impl<'a> AttachmentDescriptionStencilLayoutBuilder<'a> {
37656    #[inline]
37657    pub fn stencil_initial_layout(mut self, value: ImageLayout) -> Self {
37658        self.inner.stencil_initial_layout = value;
37659        self
37660    }
37661    #[inline]
37662    pub fn stencil_final_layout(mut self, value: ImageLayout) -> Self {
37663        self.inner.stencil_final_layout = value;
37664        self
37665    }
37666    ///Prepend a struct to the pNext chain. See [`AttachmentDescriptionStencilLayout`]'s **Extended By** section for valid types.
37667    #[inline]
37668    pub fn push_next<T: ExtendsAttachmentDescriptionStencilLayout>(
37669        mut self,
37670        next: &'a mut T,
37671    ) -> Self {
37672        unsafe {
37673            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
37674            (*next_ptr).p_next = self.inner.p_next as *mut _;
37675            self.inner.p_next = <*mut BaseOutStructure>::cast::<
37676                core::ffi::c_void,
37677            >(next_ptr);
37678        }
37679        self
37680    }
37681}
37682impl<'a> core::ops::Deref for AttachmentDescriptionStencilLayoutBuilder<'a> {
37683    type Target = AttachmentDescriptionStencilLayout;
37684    #[inline]
37685    fn deref(&self) -> &Self::Target {
37686        &self.inner
37687    }
37688}
37689impl<'a> core::ops::DerefMut for AttachmentDescriptionStencilLayoutBuilder<'a> {
37690    #[inline]
37691    fn deref_mut(&mut self) -> &mut Self::Target {
37692        &mut self.inner
37693    }
37694}
37695///Builder for [`PhysicalDevicePipelineExecutablePropertiesFeaturesKHR`] with lifetime-tied pNext safety.
37696pub struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder<'a> {
37697    inner: PhysicalDevicePipelineExecutablePropertiesFeaturesKHR,
37698    _marker: core::marker::PhantomData<&'a ()>,
37699}
37700impl PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
37701    /// Start building this struct; `s_type` is already set to the correct variant.
37702    #[inline]
37703    pub fn builder<'a>() -> PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder<
37704        'a,
37705    > {
37706        PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder {
37707            inner: PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
37708                s_type: StructureType::from_raw(1000269000i32),
37709                ..Default::default()
37710            },
37711            _marker: core::marker::PhantomData,
37712        }
37713    }
37714}
37715impl<'a> PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder<'a> {
37716    #[inline]
37717    pub fn pipeline_executable_info(mut self, value: bool) -> Self {
37718        self.inner.pipeline_executable_info = value as u32;
37719        self
37720    }
37721    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePipelineExecutablePropertiesFeaturesKHR`]'s **Extended By** section for valid types.
37722    #[inline]
37723    pub fn push_next<T: ExtendsPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>(
37724        mut self,
37725        next: &'a mut T,
37726    ) -> Self {
37727        unsafe {
37728            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
37729            (*next_ptr).p_next = self.inner.p_next as *mut _;
37730            self.inner.p_next = <*mut BaseOutStructure>::cast::<
37731                core::ffi::c_void,
37732            >(next_ptr);
37733        }
37734        self
37735    }
37736}
37737impl<'a> core::ops::Deref
37738for PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder<'a> {
37739    type Target = PhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
37740    #[inline]
37741    fn deref(&self) -> &Self::Target {
37742        &self.inner
37743    }
37744}
37745impl<'a> core::ops::DerefMut
37746for PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder<'a> {
37747    #[inline]
37748    fn deref_mut(&mut self) -> &mut Self::Target {
37749        &mut self.inner
37750    }
37751}
37752///Builder for [`PipelineInfoKHR`] with lifetime-tied pNext safety.
37753pub struct PipelineInfoKHRBuilder<'a> {
37754    inner: PipelineInfoKHR,
37755    _marker: core::marker::PhantomData<&'a ()>,
37756}
37757impl PipelineInfoKHR {
37758    /// Start building this struct; `s_type` is already set to the correct variant.
37759    #[inline]
37760    pub fn builder<'a>() -> PipelineInfoKHRBuilder<'a> {
37761        PipelineInfoKHRBuilder {
37762            inner: PipelineInfoKHR {
37763                s_type: StructureType::from_raw(1000269001i32),
37764                ..Default::default()
37765            },
37766            _marker: core::marker::PhantomData,
37767        }
37768    }
37769}
37770impl<'a> PipelineInfoKHRBuilder<'a> {
37771    #[inline]
37772    pub fn pipeline(mut self, value: Pipeline) -> Self {
37773        self.inner.pipeline = value;
37774        self
37775    }
37776    ///Prepend a struct to the pNext chain. See [`PipelineInfoKHR`]'s **Extended By** section for valid types.
37777    #[inline]
37778    pub fn push_next<T: ExtendsPipelineInfoKHR>(mut self, next: &'a mut T) -> Self {
37779        unsafe {
37780            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
37781            (*next_ptr).p_next = self.inner.p_next as *mut _;
37782            self.inner.p_next = <*mut BaseOutStructure>::cast::<
37783                core::ffi::c_void,
37784            >(next_ptr) as *const _;
37785        }
37786        self
37787    }
37788}
37789impl<'a> core::ops::Deref for PipelineInfoKHRBuilder<'a> {
37790    type Target = PipelineInfoKHR;
37791    #[inline]
37792    fn deref(&self) -> &Self::Target {
37793        &self.inner
37794    }
37795}
37796impl<'a> core::ops::DerefMut for PipelineInfoKHRBuilder<'a> {
37797    #[inline]
37798    fn deref_mut(&mut self) -> &mut Self::Target {
37799        &mut self.inner
37800    }
37801}
37802///Builder for [`PipelineExecutablePropertiesKHR`] with lifetime-tied pNext safety.
37803pub struct PipelineExecutablePropertiesKHRBuilder<'a> {
37804    inner: PipelineExecutablePropertiesKHR,
37805    _marker: core::marker::PhantomData<&'a ()>,
37806}
37807impl PipelineExecutablePropertiesKHR {
37808    /// Start building this struct; `s_type` is already set to the correct variant.
37809    #[inline]
37810    pub fn builder<'a>() -> PipelineExecutablePropertiesKHRBuilder<'a> {
37811        PipelineExecutablePropertiesKHRBuilder {
37812            inner: PipelineExecutablePropertiesKHR {
37813                s_type: StructureType::from_raw(1000269002i32),
37814                ..Default::default()
37815            },
37816            _marker: core::marker::PhantomData,
37817        }
37818    }
37819}
37820impl<'a> PipelineExecutablePropertiesKHRBuilder<'a> {
37821    #[inline]
37822    pub fn stages(mut self, value: ShaderStageFlags) -> Self {
37823        self.inner.stages = value;
37824        self
37825    }
37826    #[inline]
37827    pub fn name(
37828        mut self,
37829        value: crate::StringArray<{ MAX_DESCRIPTION_SIZE as usize }>,
37830    ) -> Self {
37831        self.inner.name = value;
37832        self
37833    }
37834    #[inline]
37835    pub fn description(
37836        mut self,
37837        value: crate::StringArray<{ MAX_DESCRIPTION_SIZE as usize }>,
37838    ) -> Self {
37839        self.inner.description = value;
37840        self
37841    }
37842    #[inline]
37843    pub fn subgroup_size(mut self, value: u32) -> Self {
37844        self.inner.subgroup_size = value;
37845        self
37846    }
37847}
37848impl<'a> core::ops::Deref for PipelineExecutablePropertiesKHRBuilder<'a> {
37849    type Target = PipelineExecutablePropertiesKHR;
37850    #[inline]
37851    fn deref(&self) -> &Self::Target {
37852        &self.inner
37853    }
37854}
37855impl<'a> core::ops::DerefMut for PipelineExecutablePropertiesKHRBuilder<'a> {
37856    #[inline]
37857    fn deref_mut(&mut self) -> &mut Self::Target {
37858        &mut self.inner
37859    }
37860}
37861///Builder for [`PipelineExecutableInfoKHR`] with lifetime-tied pNext safety.
37862pub struct PipelineExecutableInfoKHRBuilder<'a> {
37863    inner: PipelineExecutableInfoKHR,
37864    _marker: core::marker::PhantomData<&'a ()>,
37865}
37866impl PipelineExecutableInfoKHR {
37867    /// Start building this struct; `s_type` is already set to the correct variant.
37868    #[inline]
37869    pub fn builder<'a>() -> PipelineExecutableInfoKHRBuilder<'a> {
37870        PipelineExecutableInfoKHRBuilder {
37871            inner: PipelineExecutableInfoKHR {
37872                s_type: StructureType::from_raw(1000269003i32),
37873                ..Default::default()
37874            },
37875            _marker: core::marker::PhantomData,
37876        }
37877    }
37878}
37879impl<'a> PipelineExecutableInfoKHRBuilder<'a> {
37880    #[inline]
37881    pub fn pipeline(mut self, value: Pipeline) -> Self {
37882        self.inner.pipeline = value;
37883        self
37884    }
37885    #[inline]
37886    pub fn executable_index(mut self, value: u32) -> Self {
37887        self.inner.executable_index = value;
37888        self
37889    }
37890    ///Prepend a struct to the pNext chain. See [`PipelineExecutableInfoKHR`]'s **Extended By** section for valid types.
37891    #[inline]
37892    pub fn push_next<T: ExtendsPipelineExecutableInfoKHR>(
37893        mut self,
37894        next: &'a mut T,
37895    ) -> Self {
37896        unsafe {
37897            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
37898            (*next_ptr).p_next = self.inner.p_next as *mut _;
37899            self.inner.p_next = <*mut BaseOutStructure>::cast::<
37900                core::ffi::c_void,
37901            >(next_ptr) as *const _;
37902        }
37903        self
37904    }
37905}
37906impl<'a> core::ops::Deref for PipelineExecutableInfoKHRBuilder<'a> {
37907    type Target = PipelineExecutableInfoKHR;
37908    #[inline]
37909    fn deref(&self) -> &Self::Target {
37910        &self.inner
37911    }
37912}
37913impl<'a> core::ops::DerefMut for PipelineExecutableInfoKHRBuilder<'a> {
37914    #[inline]
37915    fn deref_mut(&mut self) -> &mut Self::Target {
37916        &mut self.inner
37917    }
37918}
37919///Builder for [`PipelineExecutableStatisticKHR`] with lifetime-tied pNext safety.
37920pub struct PipelineExecutableStatisticKHRBuilder<'a> {
37921    inner: PipelineExecutableStatisticKHR,
37922    _marker: core::marker::PhantomData<&'a ()>,
37923}
37924impl PipelineExecutableStatisticKHR {
37925    /// Start building this struct; `s_type` is already set to the correct variant.
37926    #[inline]
37927    pub fn builder<'a>() -> PipelineExecutableStatisticKHRBuilder<'a> {
37928        PipelineExecutableStatisticKHRBuilder {
37929            inner: PipelineExecutableStatisticKHR {
37930                s_type: StructureType::from_raw(1000269004i32),
37931                ..Default::default()
37932            },
37933            _marker: core::marker::PhantomData,
37934        }
37935    }
37936}
37937impl<'a> PipelineExecutableStatisticKHRBuilder<'a> {
37938    #[inline]
37939    pub fn name(
37940        mut self,
37941        value: crate::StringArray<{ MAX_DESCRIPTION_SIZE as usize }>,
37942    ) -> Self {
37943        self.inner.name = value;
37944        self
37945    }
37946    #[inline]
37947    pub fn description(
37948        mut self,
37949        value: crate::StringArray<{ MAX_DESCRIPTION_SIZE as usize }>,
37950    ) -> Self {
37951        self.inner.description = value;
37952        self
37953    }
37954    #[inline]
37955    pub fn format(mut self, value: PipelineExecutableStatisticFormatKHR) -> Self {
37956        self.inner.format = value;
37957        self
37958    }
37959    #[inline]
37960    pub fn value(mut self, value: PipelineExecutableStatisticValueKHR) -> Self {
37961        self.inner.value = value;
37962        self
37963    }
37964}
37965impl<'a> core::ops::Deref for PipelineExecutableStatisticKHRBuilder<'a> {
37966    type Target = PipelineExecutableStatisticKHR;
37967    #[inline]
37968    fn deref(&self) -> &Self::Target {
37969        &self.inner
37970    }
37971}
37972impl<'a> core::ops::DerefMut for PipelineExecutableStatisticKHRBuilder<'a> {
37973    #[inline]
37974    fn deref_mut(&mut self) -> &mut Self::Target {
37975        &mut self.inner
37976    }
37977}
37978///Builder for [`PipelineExecutableInternalRepresentationKHR`] with lifetime-tied pNext safety.
37979pub struct PipelineExecutableInternalRepresentationKHRBuilder<'a> {
37980    inner: PipelineExecutableInternalRepresentationKHR,
37981    _marker: core::marker::PhantomData<&'a ()>,
37982}
37983impl PipelineExecutableInternalRepresentationKHR {
37984    /// Start building this struct; `s_type` is already set to the correct variant.
37985    #[inline]
37986    pub fn builder<'a>() -> PipelineExecutableInternalRepresentationKHRBuilder<'a> {
37987        PipelineExecutableInternalRepresentationKHRBuilder {
37988            inner: PipelineExecutableInternalRepresentationKHR {
37989                s_type: StructureType::from_raw(1000269005i32),
37990                ..Default::default()
37991            },
37992            _marker: core::marker::PhantomData,
37993        }
37994    }
37995}
37996impl<'a> PipelineExecutableInternalRepresentationKHRBuilder<'a> {
37997    #[inline]
37998    pub fn name(
37999        mut self,
38000        value: crate::StringArray<{ MAX_DESCRIPTION_SIZE as usize }>,
38001    ) -> Self {
38002        self.inner.name = value;
38003        self
38004    }
38005    #[inline]
38006    pub fn description(
38007        mut self,
38008        value: crate::StringArray<{ MAX_DESCRIPTION_SIZE as usize }>,
38009    ) -> Self {
38010        self.inner.description = value;
38011        self
38012    }
38013    #[inline]
38014    pub fn is_text(mut self, value: bool) -> Self {
38015        self.inner.is_text = value as u32;
38016        self
38017    }
38018    #[inline]
38019    pub fn data_size(mut self, value: usize) -> Self {
38020        self.inner.data_size = value;
38021        self
38022    }
38023    #[inline]
38024    pub fn data(mut self, slice: &'a mut [core::ffi::c_void]) -> Self {
38025        self.inner.data_size = slice.len();
38026        self.inner.p_data = slice.as_mut_ptr();
38027        self
38028    }
38029}
38030impl<'a> core::ops::Deref for PipelineExecutableInternalRepresentationKHRBuilder<'a> {
38031    type Target = PipelineExecutableInternalRepresentationKHR;
38032    #[inline]
38033    fn deref(&self) -> &Self::Target {
38034        &self.inner
38035    }
38036}
38037impl<'a> core::ops::DerefMut for PipelineExecutableInternalRepresentationKHRBuilder<'a> {
38038    #[inline]
38039    fn deref_mut(&mut self) -> &mut Self::Target {
38040        &mut self.inner
38041    }
38042}
38043///Builder for [`PhysicalDeviceShaderDemoteToHelperInvocationFeatures`] with lifetime-tied pNext safety.
38044pub struct PhysicalDeviceShaderDemoteToHelperInvocationFeaturesBuilder<'a> {
38045    inner: PhysicalDeviceShaderDemoteToHelperInvocationFeatures,
38046    _marker: core::marker::PhantomData<&'a ()>,
38047}
38048impl PhysicalDeviceShaderDemoteToHelperInvocationFeatures {
38049    /// Start building this struct; `s_type` is already set to the correct variant.
38050    #[inline]
38051    pub fn builder<'a>() -> PhysicalDeviceShaderDemoteToHelperInvocationFeaturesBuilder<
38052        'a,
38053    > {
38054        PhysicalDeviceShaderDemoteToHelperInvocationFeaturesBuilder {
38055            inner: PhysicalDeviceShaderDemoteToHelperInvocationFeatures {
38056                s_type: StructureType::from_raw(1000276000i32),
38057                ..Default::default()
38058            },
38059            _marker: core::marker::PhantomData,
38060        }
38061    }
38062}
38063impl<'a> PhysicalDeviceShaderDemoteToHelperInvocationFeaturesBuilder<'a> {
38064    #[inline]
38065    pub fn shader_demote_to_helper_invocation(mut self, value: bool) -> Self {
38066        self.inner.shader_demote_to_helper_invocation = value as u32;
38067        self
38068    }
38069    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderDemoteToHelperInvocationFeatures`]'s **Extended By** section for valid types.
38070    #[inline]
38071    pub fn push_next<T: ExtendsPhysicalDeviceShaderDemoteToHelperInvocationFeatures>(
38072        mut self,
38073        next: &'a mut T,
38074    ) -> Self {
38075        unsafe {
38076            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
38077            (*next_ptr).p_next = self.inner.p_next as *mut _;
38078            self.inner.p_next = <*mut BaseOutStructure>::cast::<
38079                core::ffi::c_void,
38080            >(next_ptr);
38081        }
38082        self
38083    }
38084}
38085impl<'a> core::ops::Deref
38086for PhysicalDeviceShaderDemoteToHelperInvocationFeaturesBuilder<'a> {
38087    type Target = PhysicalDeviceShaderDemoteToHelperInvocationFeatures;
38088    #[inline]
38089    fn deref(&self) -> &Self::Target {
38090        &self.inner
38091    }
38092}
38093impl<'a> core::ops::DerefMut
38094for PhysicalDeviceShaderDemoteToHelperInvocationFeaturesBuilder<'a> {
38095    #[inline]
38096    fn deref_mut(&mut self) -> &mut Self::Target {
38097        &mut self.inner
38098    }
38099}
38100///Builder for [`PhysicalDeviceTexelBufferAlignmentFeaturesEXT`] with lifetime-tied pNext safety.
38101pub struct PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder<'a> {
38102    inner: PhysicalDeviceTexelBufferAlignmentFeaturesEXT,
38103    _marker: core::marker::PhantomData<&'a ()>,
38104}
38105impl PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
38106    /// Start building this struct; `s_type` is already set to the correct variant.
38107    #[inline]
38108    pub fn builder<'a>() -> PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder<'a> {
38109        PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder {
38110            inner: PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
38111                s_type: StructureType::from_raw(1000281000i32),
38112                ..Default::default()
38113            },
38114            _marker: core::marker::PhantomData,
38115        }
38116    }
38117}
38118impl<'a> PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder<'a> {
38119    #[inline]
38120    pub fn texel_buffer_alignment(mut self, value: bool) -> Self {
38121        self.inner.texel_buffer_alignment = value as u32;
38122        self
38123    }
38124    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceTexelBufferAlignmentFeaturesEXT`]'s **Extended By** section for valid types.
38125    #[inline]
38126    pub fn push_next<T: ExtendsPhysicalDeviceTexelBufferAlignmentFeaturesEXT>(
38127        mut self,
38128        next: &'a mut T,
38129    ) -> Self {
38130        unsafe {
38131            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
38132            (*next_ptr).p_next = self.inner.p_next as *mut _;
38133            self.inner.p_next = <*mut BaseOutStructure>::cast::<
38134                core::ffi::c_void,
38135            >(next_ptr);
38136        }
38137        self
38138    }
38139}
38140impl<'a> core::ops::Deref for PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder<'a> {
38141    type Target = PhysicalDeviceTexelBufferAlignmentFeaturesEXT;
38142    #[inline]
38143    fn deref(&self) -> &Self::Target {
38144        &self.inner
38145    }
38146}
38147impl<'a> core::ops::DerefMut
38148for PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder<'a> {
38149    #[inline]
38150    fn deref_mut(&mut self) -> &mut Self::Target {
38151        &mut self.inner
38152    }
38153}
38154///Builder for [`PhysicalDeviceTexelBufferAlignmentProperties`] with lifetime-tied pNext safety.
38155pub struct PhysicalDeviceTexelBufferAlignmentPropertiesBuilder<'a> {
38156    inner: PhysicalDeviceTexelBufferAlignmentProperties,
38157    _marker: core::marker::PhantomData<&'a ()>,
38158}
38159impl PhysicalDeviceTexelBufferAlignmentProperties {
38160    /// Start building this struct; `s_type` is already set to the correct variant.
38161    #[inline]
38162    pub fn builder<'a>() -> PhysicalDeviceTexelBufferAlignmentPropertiesBuilder<'a> {
38163        PhysicalDeviceTexelBufferAlignmentPropertiesBuilder {
38164            inner: PhysicalDeviceTexelBufferAlignmentProperties {
38165                s_type: StructureType::from_raw(1000281001i32),
38166                ..Default::default()
38167            },
38168            _marker: core::marker::PhantomData,
38169        }
38170    }
38171}
38172impl<'a> PhysicalDeviceTexelBufferAlignmentPropertiesBuilder<'a> {
38173    #[inline]
38174    pub fn storage_texel_buffer_offset_alignment_bytes(mut self, value: u64) -> Self {
38175        self.inner.storage_texel_buffer_offset_alignment_bytes = value;
38176        self
38177    }
38178    #[inline]
38179    pub fn storage_texel_buffer_offset_single_texel_alignment(
38180        mut self,
38181        value: bool,
38182    ) -> Self {
38183        self.inner.storage_texel_buffer_offset_single_texel_alignment = value as u32;
38184        self
38185    }
38186    #[inline]
38187    pub fn uniform_texel_buffer_offset_alignment_bytes(mut self, value: u64) -> Self {
38188        self.inner.uniform_texel_buffer_offset_alignment_bytes = value;
38189        self
38190    }
38191    #[inline]
38192    pub fn uniform_texel_buffer_offset_single_texel_alignment(
38193        mut self,
38194        value: bool,
38195    ) -> Self {
38196        self.inner.uniform_texel_buffer_offset_single_texel_alignment = value as u32;
38197        self
38198    }
38199}
38200impl<'a> core::ops::Deref for PhysicalDeviceTexelBufferAlignmentPropertiesBuilder<'a> {
38201    type Target = PhysicalDeviceTexelBufferAlignmentProperties;
38202    #[inline]
38203    fn deref(&self) -> &Self::Target {
38204        &self.inner
38205    }
38206}
38207impl<'a> core::ops::DerefMut
38208for PhysicalDeviceTexelBufferAlignmentPropertiesBuilder<'a> {
38209    #[inline]
38210    fn deref_mut(&mut self) -> &mut Self::Target {
38211        &mut self.inner
38212    }
38213}
38214///Builder for [`PhysicalDeviceSubgroupSizeControlFeatures`] with lifetime-tied pNext safety.
38215pub struct PhysicalDeviceSubgroupSizeControlFeaturesBuilder<'a> {
38216    inner: PhysicalDeviceSubgroupSizeControlFeatures,
38217    _marker: core::marker::PhantomData<&'a ()>,
38218}
38219impl PhysicalDeviceSubgroupSizeControlFeatures {
38220    /// Start building this struct; `s_type` is already set to the correct variant.
38221    #[inline]
38222    pub fn builder<'a>() -> PhysicalDeviceSubgroupSizeControlFeaturesBuilder<'a> {
38223        PhysicalDeviceSubgroupSizeControlFeaturesBuilder {
38224            inner: PhysicalDeviceSubgroupSizeControlFeatures {
38225                s_type: StructureType::from_raw(1000225002i32),
38226                ..Default::default()
38227            },
38228            _marker: core::marker::PhantomData,
38229        }
38230    }
38231}
38232impl<'a> PhysicalDeviceSubgroupSizeControlFeaturesBuilder<'a> {
38233    #[inline]
38234    pub fn subgroup_size_control(mut self, value: bool) -> Self {
38235        self.inner.subgroup_size_control = value as u32;
38236        self
38237    }
38238    #[inline]
38239    pub fn compute_full_subgroups(mut self, value: bool) -> Self {
38240        self.inner.compute_full_subgroups = value as u32;
38241        self
38242    }
38243    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceSubgroupSizeControlFeatures`]'s **Extended By** section for valid types.
38244    #[inline]
38245    pub fn push_next<T: ExtendsPhysicalDeviceSubgroupSizeControlFeatures>(
38246        mut self,
38247        next: &'a mut T,
38248    ) -> Self {
38249        unsafe {
38250            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
38251            (*next_ptr).p_next = self.inner.p_next as *mut _;
38252            self.inner.p_next = <*mut BaseOutStructure>::cast::<
38253                core::ffi::c_void,
38254            >(next_ptr);
38255        }
38256        self
38257    }
38258}
38259impl<'a> core::ops::Deref for PhysicalDeviceSubgroupSizeControlFeaturesBuilder<'a> {
38260    type Target = PhysicalDeviceSubgroupSizeControlFeatures;
38261    #[inline]
38262    fn deref(&self) -> &Self::Target {
38263        &self.inner
38264    }
38265}
38266impl<'a> core::ops::DerefMut for PhysicalDeviceSubgroupSizeControlFeaturesBuilder<'a> {
38267    #[inline]
38268    fn deref_mut(&mut self) -> &mut Self::Target {
38269        &mut self.inner
38270    }
38271}
38272///Builder for [`PhysicalDeviceSubgroupSizeControlProperties`] with lifetime-tied pNext safety.
38273pub struct PhysicalDeviceSubgroupSizeControlPropertiesBuilder<'a> {
38274    inner: PhysicalDeviceSubgroupSizeControlProperties,
38275    _marker: core::marker::PhantomData<&'a ()>,
38276}
38277impl PhysicalDeviceSubgroupSizeControlProperties {
38278    /// Start building this struct; `s_type` is already set to the correct variant.
38279    #[inline]
38280    pub fn builder<'a>() -> PhysicalDeviceSubgroupSizeControlPropertiesBuilder<'a> {
38281        PhysicalDeviceSubgroupSizeControlPropertiesBuilder {
38282            inner: PhysicalDeviceSubgroupSizeControlProperties {
38283                s_type: StructureType::from_raw(1000225000i32),
38284                ..Default::default()
38285            },
38286            _marker: core::marker::PhantomData,
38287        }
38288    }
38289}
38290impl<'a> PhysicalDeviceSubgroupSizeControlPropertiesBuilder<'a> {
38291    #[inline]
38292    pub fn min_subgroup_size(mut self, value: u32) -> Self {
38293        self.inner.min_subgroup_size = value;
38294        self
38295    }
38296    #[inline]
38297    pub fn max_subgroup_size(mut self, value: u32) -> Self {
38298        self.inner.max_subgroup_size = value;
38299        self
38300    }
38301    #[inline]
38302    pub fn max_compute_workgroup_subgroups(mut self, value: u32) -> Self {
38303        self.inner.max_compute_workgroup_subgroups = value;
38304        self
38305    }
38306    #[inline]
38307    pub fn required_subgroup_size_stages(mut self, value: ShaderStageFlags) -> Self {
38308        self.inner.required_subgroup_size_stages = value;
38309        self
38310    }
38311}
38312impl<'a> core::ops::Deref for PhysicalDeviceSubgroupSizeControlPropertiesBuilder<'a> {
38313    type Target = PhysicalDeviceSubgroupSizeControlProperties;
38314    #[inline]
38315    fn deref(&self) -> &Self::Target {
38316        &self.inner
38317    }
38318}
38319impl<'a> core::ops::DerefMut for PhysicalDeviceSubgroupSizeControlPropertiesBuilder<'a> {
38320    #[inline]
38321    fn deref_mut(&mut self) -> &mut Self::Target {
38322        &mut self.inner
38323    }
38324}
38325///Builder for [`PipelineShaderStageRequiredSubgroupSizeCreateInfo`] with lifetime-tied pNext safety.
38326pub struct PipelineShaderStageRequiredSubgroupSizeCreateInfoBuilder<'a> {
38327    inner: PipelineShaderStageRequiredSubgroupSizeCreateInfo,
38328    _marker: core::marker::PhantomData<&'a ()>,
38329}
38330impl PipelineShaderStageRequiredSubgroupSizeCreateInfo {
38331    /// Start building this struct; `s_type` is already set to the correct variant.
38332    #[inline]
38333    pub fn builder<'a>() -> PipelineShaderStageRequiredSubgroupSizeCreateInfoBuilder<
38334        'a,
38335    > {
38336        PipelineShaderStageRequiredSubgroupSizeCreateInfoBuilder {
38337            inner: PipelineShaderStageRequiredSubgroupSizeCreateInfo {
38338                s_type: StructureType::from_raw(1000225001i32),
38339                ..Default::default()
38340            },
38341            _marker: core::marker::PhantomData,
38342        }
38343    }
38344}
38345impl<'a> PipelineShaderStageRequiredSubgroupSizeCreateInfoBuilder<'a> {
38346    #[inline]
38347    pub fn required_subgroup_size(mut self, value: u32) -> Self {
38348        self.inner.required_subgroup_size = value;
38349        self
38350    }
38351    ///Prepend a struct to the pNext chain. See [`PipelineShaderStageRequiredSubgroupSizeCreateInfo`]'s **Extended By** section for valid types.
38352    #[inline]
38353    pub fn push_next<T: ExtendsPipelineShaderStageRequiredSubgroupSizeCreateInfo>(
38354        mut self,
38355        next: &'a mut T,
38356    ) -> Self {
38357        unsafe {
38358            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
38359            (*next_ptr).p_next = self.inner.p_next as *mut _;
38360            self.inner.p_next = <*mut BaseOutStructure>::cast::<
38361                core::ffi::c_void,
38362            >(next_ptr) as *const _;
38363        }
38364        self
38365    }
38366}
38367impl<'a> core::ops::Deref
38368for PipelineShaderStageRequiredSubgroupSizeCreateInfoBuilder<'a> {
38369    type Target = PipelineShaderStageRequiredSubgroupSizeCreateInfo;
38370    #[inline]
38371    fn deref(&self) -> &Self::Target {
38372        &self.inner
38373    }
38374}
38375impl<'a> core::ops::DerefMut
38376for PipelineShaderStageRequiredSubgroupSizeCreateInfoBuilder<'a> {
38377    #[inline]
38378    fn deref_mut(&mut self) -> &mut Self::Target {
38379        &mut self.inner
38380    }
38381}
38382///Builder for [`SubpassShadingPipelineCreateInfoHUAWEI`] with lifetime-tied pNext safety.
38383pub struct SubpassShadingPipelineCreateInfoHUAWEIBuilder<'a> {
38384    inner: SubpassShadingPipelineCreateInfoHUAWEI,
38385    _marker: core::marker::PhantomData<&'a ()>,
38386}
38387impl SubpassShadingPipelineCreateInfoHUAWEI {
38388    /// Start building this struct; `s_type` is already set to the correct variant.
38389    #[inline]
38390    pub fn builder<'a>() -> SubpassShadingPipelineCreateInfoHUAWEIBuilder<'a> {
38391        SubpassShadingPipelineCreateInfoHUAWEIBuilder {
38392            inner: SubpassShadingPipelineCreateInfoHUAWEI {
38393                s_type: StructureType::from_raw(1000369000i32),
38394                ..Default::default()
38395            },
38396            _marker: core::marker::PhantomData,
38397        }
38398    }
38399}
38400impl<'a> SubpassShadingPipelineCreateInfoHUAWEIBuilder<'a> {
38401    #[inline]
38402    pub fn render_pass(mut self, value: RenderPass) -> Self {
38403        self.inner.render_pass = value;
38404        self
38405    }
38406    #[inline]
38407    pub fn subpass(mut self, value: u32) -> Self {
38408        self.inner.subpass = value;
38409        self
38410    }
38411    ///Prepend a struct to the pNext chain. See [`SubpassShadingPipelineCreateInfoHUAWEI`]'s **Extended By** section for valid types.
38412    #[inline]
38413    pub fn push_next<T: ExtendsSubpassShadingPipelineCreateInfoHUAWEI>(
38414        mut self,
38415        next: &'a mut T,
38416    ) -> Self {
38417        unsafe {
38418            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
38419            (*next_ptr).p_next = self.inner.p_next as *mut _;
38420            self.inner.p_next = <*mut BaseOutStructure>::cast::<
38421                core::ffi::c_void,
38422            >(next_ptr);
38423        }
38424        self
38425    }
38426}
38427impl<'a> core::ops::Deref for SubpassShadingPipelineCreateInfoHUAWEIBuilder<'a> {
38428    type Target = SubpassShadingPipelineCreateInfoHUAWEI;
38429    #[inline]
38430    fn deref(&self) -> &Self::Target {
38431        &self.inner
38432    }
38433}
38434impl<'a> core::ops::DerefMut for SubpassShadingPipelineCreateInfoHUAWEIBuilder<'a> {
38435    #[inline]
38436    fn deref_mut(&mut self) -> &mut Self::Target {
38437        &mut self.inner
38438    }
38439}
38440///Builder for [`PhysicalDeviceSubpassShadingPropertiesHUAWEI`] with lifetime-tied pNext safety.
38441pub struct PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder<'a> {
38442    inner: PhysicalDeviceSubpassShadingPropertiesHUAWEI,
38443    _marker: core::marker::PhantomData<&'a ()>,
38444}
38445impl PhysicalDeviceSubpassShadingPropertiesHUAWEI {
38446    /// Start building this struct; `s_type` is already set to the correct variant.
38447    #[inline]
38448    pub fn builder<'a>() -> PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder<'a> {
38449        PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder {
38450            inner: PhysicalDeviceSubpassShadingPropertiesHUAWEI {
38451                s_type: StructureType::from_raw(1000369002i32),
38452                ..Default::default()
38453            },
38454            _marker: core::marker::PhantomData,
38455        }
38456    }
38457}
38458impl<'a> PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder<'a> {
38459    #[inline]
38460    pub fn max_subpass_shading_workgroup_size_aspect_ratio(
38461        mut self,
38462        value: u32,
38463    ) -> Self {
38464        self.inner.max_subpass_shading_workgroup_size_aspect_ratio = value;
38465        self
38466    }
38467}
38468impl<'a> core::ops::Deref for PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder<'a> {
38469    type Target = PhysicalDeviceSubpassShadingPropertiesHUAWEI;
38470    #[inline]
38471    fn deref(&self) -> &Self::Target {
38472        &self.inner
38473    }
38474}
38475impl<'a> core::ops::DerefMut
38476for PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder<'a> {
38477    #[inline]
38478    fn deref_mut(&mut self) -> &mut Self::Target {
38479        &mut self.inner
38480    }
38481}
38482///Builder for [`PhysicalDeviceClusterCullingShaderPropertiesHUAWEI`] with lifetime-tied pNext safety.
38483pub struct PhysicalDeviceClusterCullingShaderPropertiesHUAWEIBuilder<'a> {
38484    inner: PhysicalDeviceClusterCullingShaderPropertiesHUAWEI,
38485    _marker: core::marker::PhantomData<&'a ()>,
38486}
38487impl PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
38488    /// Start building this struct; `s_type` is already set to the correct variant.
38489    #[inline]
38490    pub fn builder<'a>() -> PhysicalDeviceClusterCullingShaderPropertiesHUAWEIBuilder<
38491        'a,
38492    > {
38493        PhysicalDeviceClusterCullingShaderPropertiesHUAWEIBuilder {
38494            inner: PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
38495                s_type: StructureType::from_raw(1000404001i32),
38496                ..Default::default()
38497            },
38498            _marker: core::marker::PhantomData,
38499        }
38500    }
38501}
38502impl<'a> PhysicalDeviceClusterCullingShaderPropertiesHUAWEIBuilder<'a> {
38503    #[inline]
38504    pub fn max_work_group_count(mut self, value: [u32; 3usize]) -> Self {
38505        self.inner.max_work_group_count = value;
38506        self
38507    }
38508    #[inline]
38509    pub fn max_work_group_size(mut self, value: [u32; 3usize]) -> Self {
38510        self.inner.max_work_group_size = value;
38511        self
38512    }
38513    #[inline]
38514    pub fn max_output_cluster_count(mut self, value: u32) -> Self {
38515        self.inner.max_output_cluster_count = value;
38516        self
38517    }
38518    #[inline]
38519    pub fn indirect_buffer_offset_alignment(mut self, value: u64) -> Self {
38520        self.inner.indirect_buffer_offset_alignment = value;
38521        self
38522    }
38523}
38524impl<'a> core::ops::Deref
38525for PhysicalDeviceClusterCullingShaderPropertiesHUAWEIBuilder<'a> {
38526    type Target = PhysicalDeviceClusterCullingShaderPropertiesHUAWEI;
38527    #[inline]
38528    fn deref(&self) -> &Self::Target {
38529        &self.inner
38530    }
38531}
38532impl<'a> core::ops::DerefMut
38533for PhysicalDeviceClusterCullingShaderPropertiesHUAWEIBuilder<'a> {
38534    #[inline]
38535    fn deref_mut(&mut self) -> &mut Self::Target {
38536        &mut self.inner
38537    }
38538}
38539///Builder for [`MemoryOpaqueCaptureAddressAllocateInfo`] with lifetime-tied pNext safety.
38540pub struct MemoryOpaqueCaptureAddressAllocateInfoBuilder<'a> {
38541    inner: MemoryOpaqueCaptureAddressAllocateInfo,
38542    _marker: core::marker::PhantomData<&'a ()>,
38543}
38544impl MemoryOpaqueCaptureAddressAllocateInfo {
38545    /// Start building this struct; `s_type` is already set to the correct variant.
38546    #[inline]
38547    pub fn builder<'a>() -> MemoryOpaqueCaptureAddressAllocateInfoBuilder<'a> {
38548        MemoryOpaqueCaptureAddressAllocateInfoBuilder {
38549            inner: MemoryOpaqueCaptureAddressAllocateInfo {
38550                s_type: StructureType::from_raw(1000257003i32),
38551                ..Default::default()
38552            },
38553            _marker: core::marker::PhantomData,
38554        }
38555    }
38556}
38557impl<'a> MemoryOpaqueCaptureAddressAllocateInfoBuilder<'a> {
38558    #[inline]
38559    pub fn opaque_capture_address(mut self, value: u64) -> Self {
38560        self.inner.opaque_capture_address = value;
38561        self
38562    }
38563    ///Prepend a struct to the pNext chain. See [`MemoryOpaqueCaptureAddressAllocateInfo`]'s **Extended By** section for valid types.
38564    #[inline]
38565    pub fn push_next<T: ExtendsMemoryOpaqueCaptureAddressAllocateInfo>(
38566        mut self,
38567        next: &'a mut T,
38568    ) -> Self {
38569        unsafe {
38570            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
38571            (*next_ptr).p_next = self.inner.p_next as *mut _;
38572            self.inner.p_next = <*mut BaseOutStructure>::cast::<
38573                core::ffi::c_void,
38574            >(next_ptr) as *const _;
38575        }
38576        self
38577    }
38578}
38579impl<'a> core::ops::Deref for MemoryOpaqueCaptureAddressAllocateInfoBuilder<'a> {
38580    type Target = MemoryOpaqueCaptureAddressAllocateInfo;
38581    #[inline]
38582    fn deref(&self) -> &Self::Target {
38583        &self.inner
38584    }
38585}
38586impl<'a> core::ops::DerefMut for MemoryOpaqueCaptureAddressAllocateInfoBuilder<'a> {
38587    #[inline]
38588    fn deref_mut(&mut self) -> &mut Self::Target {
38589        &mut self.inner
38590    }
38591}
38592///Builder for [`DeviceMemoryOpaqueCaptureAddressInfo`] with lifetime-tied pNext safety.
38593pub struct DeviceMemoryOpaqueCaptureAddressInfoBuilder<'a> {
38594    inner: DeviceMemoryOpaqueCaptureAddressInfo,
38595    _marker: core::marker::PhantomData<&'a ()>,
38596}
38597impl DeviceMemoryOpaqueCaptureAddressInfo {
38598    /// Start building this struct; `s_type` is already set to the correct variant.
38599    #[inline]
38600    pub fn builder<'a>() -> DeviceMemoryOpaqueCaptureAddressInfoBuilder<'a> {
38601        DeviceMemoryOpaqueCaptureAddressInfoBuilder {
38602            inner: DeviceMemoryOpaqueCaptureAddressInfo {
38603                s_type: StructureType::from_raw(1000257004i32),
38604                ..Default::default()
38605            },
38606            _marker: core::marker::PhantomData,
38607        }
38608    }
38609}
38610impl<'a> DeviceMemoryOpaqueCaptureAddressInfoBuilder<'a> {
38611    #[inline]
38612    pub fn memory(mut self, value: DeviceMemory) -> Self {
38613        self.inner.memory = value;
38614        self
38615    }
38616    ///Prepend a struct to the pNext chain. See [`DeviceMemoryOpaqueCaptureAddressInfo`]'s **Extended By** section for valid types.
38617    #[inline]
38618    pub fn push_next<T: ExtendsDeviceMemoryOpaqueCaptureAddressInfo>(
38619        mut self,
38620        next: &'a mut T,
38621    ) -> Self {
38622        unsafe {
38623            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
38624            (*next_ptr).p_next = self.inner.p_next as *mut _;
38625            self.inner.p_next = <*mut BaseOutStructure>::cast::<
38626                core::ffi::c_void,
38627            >(next_ptr) as *const _;
38628        }
38629        self
38630    }
38631}
38632impl<'a> core::ops::Deref for DeviceMemoryOpaqueCaptureAddressInfoBuilder<'a> {
38633    type Target = DeviceMemoryOpaqueCaptureAddressInfo;
38634    #[inline]
38635    fn deref(&self) -> &Self::Target {
38636        &self.inner
38637    }
38638}
38639impl<'a> core::ops::DerefMut for DeviceMemoryOpaqueCaptureAddressInfoBuilder<'a> {
38640    #[inline]
38641    fn deref_mut(&mut self) -> &mut Self::Target {
38642        &mut self.inner
38643    }
38644}
38645///Builder for [`PhysicalDeviceLineRasterizationFeatures`] with lifetime-tied pNext safety.
38646pub struct PhysicalDeviceLineRasterizationFeaturesBuilder<'a> {
38647    inner: PhysicalDeviceLineRasterizationFeatures,
38648    _marker: core::marker::PhantomData<&'a ()>,
38649}
38650impl PhysicalDeviceLineRasterizationFeatures {
38651    /// Start building this struct; `s_type` is already set to the correct variant.
38652    #[inline]
38653    pub fn builder<'a>() -> PhysicalDeviceLineRasterizationFeaturesBuilder<'a> {
38654        PhysicalDeviceLineRasterizationFeaturesBuilder {
38655            inner: PhysicalDeviceLineRasterizationFeatures {
38656                s_type: StructureType::from_raw(1000259000i32),
38657                ..Default::default()
38658            },
38659            _marker: core::marker::PhantomData,
38660        }
38661    }
38662}
38663impl<'a> PhysicalDeviceLineRasterizationFeaturesBuilder<'a> {
38664    #[inline]
38665    pub fn rectangular_lines(mut self, value: bool) -> Self {
38666        self.inner.rectangular_lines = value as u32;
38667        self
38668    }
38669    #[inline]
38670    pub fn bresenham_lines(mut self, value: bool) -> Self {
38671        self.inner.bresenham_lines = value as u32;
38672        self
38673    }
38674    #[inline]
38675    pub fn smooth_lines(mut self, value: bool) -> Self {
38676        self.inner.smooth_lines = value as u32;
38677        self
38678    }
38679    #[inline]
38680    pub fn stippled_rectangular_lines(mut self, value: bool) -> Self {
38681        self.inner.stippled_rectangular_lines = value as u32;
38682        self
38683    }
38684    #[inline]
38685    pub fn stippled_bresenham_lines(mut self, value: bool) -> Self {
38686        self.inner.stippled_bresenham_lines = value as u32;
38687        self
38688    }
38689    #[inline]
38690    pub fn stippled_smooth_lines(mut self, value: bool) -> Self {
38691        self.inner.stippled_smooth_lines = value as u32;
38692        self
38693    }
38694    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceLineRasterizationFeatures`]'s **Extended By** section for valid types.
38695    #[inline]
38696    pub fn push_next<T: ExtendsPhysicalDeviceLineRasterizationFeatures>(
38697        mut self,
38698        next: &'a mut T,
38699    ) -> Self {
38700        unsafe {
38701            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
38702            (*next_ptr).p_next = self.inner.p_next as *mut _;
38703            self.inner.p_next = <*mut BaseOutStructure>::cast::<
38704                core::ffi::c_void,
38705            >(next_ptr);
38706        }
38707        self
38708    }
38709}
38710impl<'a> core::ops::Deref for PhysicalDeviceLineRasterizationFeaturesBuilder<'a> {
38711    type Target = PhysicalDeviceLineRasterizationFeatures;
38712    #[inline]
38713    fn deref(&self) -> &Self::Target {
38714        &self.inner
38715    }
38716}
38717impl<'a> core::ops::DerefMut for PhysicalDeviceLineRasterizationFeaturesBuilder<'a> {
38718    #[inline]
38719    fn deref_mut(&mut self) -> &mut Self::Target {
38720        &mut self.inner
38721    }
38722}
38723///Builder for [`PhysicalDeviceLineRasterizationProperties`] with lifetime-tied pNext safety.
38724pub struct PhysicalDeviceLineRasterizationPropertiesBuilder<'a> {
38725    inner: PhysicalDeviceLineRasterizationProperties,
38726    _marker: core::marker::PhantomData<&'a ()>,
38727}
38728impl PhysicalDeviceLineRasterizationProperties {
38729    /// Start building this struct; `s_type` is already set to the correct variant.
38730    #[inline]
38731    pub fn builder<'a>() -> PhysicalDeviceLineRasterizationPropertiesBuilder<'a> {
38732        PhysicalDeviceLineRasterizationPropertiesBuilder {
38733            inner: PhysicalDeviceLineRasterizationProperties {
38734                s_type: StructureType::from_raw(1000259002i32),
38735                ..Default::default()
38736            },
38737            _marker: core::marker::PhantomData,
38738        }
38739    }
38740}
38741impl<'a> PhysicalDeviceLineRasterizationPropertiesBuilder<'a> {
38742    #[inline]
38743    pub fn line_sub_pixel_precision_bits(mut self, value: u32) -> Self {
38744        self.inner.line_sub_pixel_precision_bits = value;
38745        self
38746    }
38747}
38748impl<'a> core::ops::Deref for PhysicalDeviceLineRasterizationPropertiesBuilder<'a> {
38749    type Target = PhysicalDeviceLineRasterizationProperties;
38750    #[inline]
38751    fn deref(&self) -> &Self::Target {
38752        &self.inner
38753    }
38754}
38755impl<'a> core::ops::DerefMut for PhysicalDeviceLineRasterizationPropertiesBuilder<'a> {
38756    #[inline]
38757    fn deref_mut(&mut self) -> &mut Self::Target {
38758        &mut self.inner
38759    }
38760}
38761///Builder for [`PipelineRasterizationLineStateCreateInfo`] with lifetime-tied pNext safety.
38762pub struct PipelineRasterizationLineStateCreateInfoBuilder<'a> {
38763    inner: PipelineRasterizationLineStateCreateInfo,
38764    _marker: core::marker::PhantomData<&'a ()>,
38765}
38766impl PipelineRasterizationLineStateCreateInfo {
38767    /// Start building this struct; `s_type` is already set to the correct variant.
38768    #[inline]
38769    pub fn builder<'a>() -> PipelineRasterizationLineStateCreateInfoBuilder<'a> {
38770        PipelineRasterizationLineStateCreateInfoBuilder {
38771            inner: PipelineRasterizationLineStateCreateInfo {
38772                s_type: StructureType::from_raw(1000259001i32),
38773                ..Default::default()
38774            },
38775            _marker: core::marker::PhantomData,
38776        }
38777    }
38778}
38779impl<'a> PipelineRasterizationLineStateCreateInfoBuilder<'a> {
38780    #[inline]
38781    pub fn line_rasterization_mode(mut self, value: LineRasterizationMode) -> Self {
38782        self.inner.line_rasterization_mode = value;
38783        self
38784    }
38785    #[inline]
38786    pub fn stippled_line_enable(mut self, value: bool) -> Self {
38787        self.inner.stippled_line_enable = value as u32;
38788        self
38789    }
38790    #[inline]
38791    pub fn line_stipple_factor(mut self, value: u32) -> Self {
38792        self.inner.line_stipple_factor = value;
38793        self
38794    }
38795    #[inline]
38796    pub fn line_stipple_pattern(mut self, value: u16) -> Self {
38797        self.inner.line_stipple_pattern = value;
38798        self
38799    }
38800    ///Prepend a struct to the pNext chain. See [`PipelineRasterizationLineStateCreateInfo`]'s **Extended By** section for valid types.
38801    #[inline]
38802    pub fn push_next<T: ExtendsPipelineRasterizationLineStateCreateInfo>(
38803        mut self,
38804        next: &'a mut T,
38805    ) -> Self {
38806        unsafe {
38807            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
38808            (*next_ptr).p_next = self.inner.p_next as *mut _;
38809            self.inner.p_next = <*mut BaseOutStructure>::cast::<
38810                core::ffi::c_void,
38811            >(next_ptr) as *const _;
38812        }
38813        self
38814    }
38815}
38816impl<'a> core::ops::Deref for PipelineRasterizationLineStateCreateInfoBuilder<'a> {
38817    type Target = PipelineRasterizationLineStateCreateInfo;
38818    #[inline]
38819    fn deref(&self) -> &Self::Target {
38820        &self.inner
38821    }
38822}
38823impl<'a> core::ops::DerefMut for PipelineRasterizationLineStateCreateInfoBuilder<'a> {
38824    #[inline]
38825    fn deref_mut(&mut self) -> &mut Self::Target {
38826        &mut self.inner
38827    }
38828}
38829///Builder for [`PhysicalDevicePipelineCreationCacheControlFeatures`] with lifetime-tied pNext safety.
38830pub struct PhysicalDevicePipelineCreationCacheControlFeaturesBuilder<'a> {
38831    inner: PhysicalDevicePipelineCreationCacheControlFeatures,
38832    _marker: core::marker::PhantomData<&'a ()>,
38833}
38834impl PhysicalDevicePipelineCreationCacheControlFeatures {
38835    /// Start building this struct; `s_type` is already set to the correct variant.
38836    #[inline]
38837    pub fn builder<'a>() -> PhysicalDevicePipelineCreationCacheControlFeaturesBuilder<
38838        'a,
38839    > {
38840        PhysicalDevicePipelineCreationCacheControlFeaturesBuilder {
38841            inner: PhysicalDevicePipelineCreationCacheControlFeatures {
38842                s_type: StructureType::from_raw(1000297000i32),
38843                ..Default::default()
38844            },
38845            _marker: core::marker::PhantomData,
38846        }
38847    }
38848}
38849impl<'a> PhysicalDevicePipelineCreationCacheControlFeaturesBuilder<'a> {
38850    #[inline]
38851    pub fn pipeline_creation_cache_control(mut self, value: bool) -> Self {
38852        self.inner.pipeline_creation_cache_control = value as u32;
38853        self
38854    }
38855    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePipelineCreationCacheControlFeatures`]'s **Extended By** section for valid types.
38856    #[inline]
38857    pub fn push_next<T: ExtendsPhysicalDevicePipelineCreationCacheControlFeatures>(
38858        mut self,
38859        next: &'a mut T,
38860    ) -> Self {
38861        unsafe {
38862            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
38863            (*next_ptr).p_next = self.inner.p_next as *mut _;
38864            self.inner.p_next = <*mut BaseOutStructure>::cast::<
38865                core::ffi::c_void,
38866            >(next_ptr);
38867        }
38868        self
38869    }
38870}
38871impl<'a> core::ops::Deref
38872for PhysicalDevicePipelineCreationCacheControlFeaturesBuilder<'a> {
38873    type Target = PhysicalDevicePipelineCreationCacheControlFeatures;
38874    #[inline]
38875    fn deref(&self) -> &Self::Target {
38876        &self.inner
38877    }
38878}
38879impl<'a> core::ops::DerefMut
38880for PhysicalDevicePipelineCreationCacheControlFeaturesBuilder<'a> {
38881    #[inline]
38882    fn deref_mut(&mut self) -> &mut Self::Target {
38883        &mut self.inner
38884    }
38885}
38886///Builder for [`PhysicalDeviceVulkan11Features`] with lifetime-tied pNext safety.
38887pub struct PhysicalDeviceVulkan11FeaturesBuilder<'a> {
38888    inner: PhysicalDeviceVulkan11Features,
38889    _marker: core::marker::PhantomData<&'a ()>,
38890}
38891impl PhysicalDeviceVulkan11Features {
38892    /// Start building this struct; `s_type` is already set to the correct variant.
38893    #[inline]
38894    pub fn builder<'a>() -> PhysicalDeviceVulkan11FeaturesBuilder<'a> {
38895        PhysicalDeviceVulkan11FeaturesBuilder {
38896            inner: PhysicalDeviceVulkan11Features {
38897                s_type: StructureType::from_raw(49i32),
38898                ..Default::default()
38899            },
38900            _marker: core::marker::PhantomData,
38901        }
38902    }
38903}
38904impl<'a> PhysicalDeviceVulkan11FeaturesBuilder<'a> {
38905    #[inline]
38906    pub fn storage_buffer16_bit_access(mut self, value: bool) -> Self {
38907        self.inner.storage_buffer16_bit_access = value as u32;
38908        self
38909    }
38910    #[inline]
38911    pub fn uniform_and_storage_buffer16_bit_access(mut self, value: bool) -> Self {
38912        self.inner.uniform_and_storage_buffer16_bit_access = value as u32;
38913        self
38914    }
38915    #[inline]
38916    pub fn storage_push_constant16(mut self, value: bool) -> Self {
38917        self.inner.storage_push_constant16 = value as u32;
38918        self
38919    }
38920    #[inline]
38921    pub fn storage_input_output16(mut self, value: bool) -> Self {
38922        self.inner.storage_input_output16 = value as u32;
38923        self
38924    }
38925    #[inline]
38926    pub fn multiview(mut self, value: bool) -> Self {
38927        self.inner.multiview = value as u32;
38928        self
38929    }
38930    #[inline]
38931    pub fn multiview_geometry_shader(mut self, value: bool) -> Self {
38932        self.inner.multiview_geometry_shader = value as u32;
38933        self
38934    }
38935    #[inline]
38936    pub fn multiview_tessellation_shader(mut self, value: bool) -> Self {
38937        self.inner.multiview_tessellation_shader = value as u32;
38938        self
38939    }
38940    #[inline]
38941    pub fn variable_pointers_storage_buffer(mut self, value: bool) -> Self {
38942        self.inner.variable_pointers_storage_buffer = value as u32;
38943        self
38944    }
38945    #[inline]
38946    pub fn variable_pointers(mut self, value: bool) -> Self {
38947        self.inner.variable_pointers = value as u32;
38948        self
38949    }
38950    #[inline]
38951    pub fn protected_memory(mut self, value: bool) -> Self {
38952        self.inner.protected_memory = value as u32;
38953        self
38954    }
38955    #[inline]
38956    pub fn sampler_ycbcr_conversion(mut self, value: bool) -> Self {
38957        self.inner.sampler_ycbcr_conversion = value as u32;
38958        self
38959    }
38960    #[inline]
38961    pub fn shader_draw_parameters(mut self, value: bool) -> Self {
38962        self.inner.shader_draw_parameters = value as u32;
38963        self
38964    }
38965    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceVulkan11Features`]'s **Extended By** section for valid types.
38966    #[inline]
38967    pub fn push_next<T: ExtendsPhysicalDeviceVulkan11Features>(
38968        mut self,
38969        next: &'a mut T,
38970    ) -> Self {
38971        unsafe {
38972            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
38973            (*next_ptr).p_next = self.inner.p_next as *mut _;
38974            self.inner.p_next = <*mut BaseOutStructure>::cast::<
38975                core::ffi::c_void,
38976            >(next_ptr);
38977        }
38978        self
38979    }
38980}
38981impl<'a> core::ops::Deref for PhysicalDeviceVulkan11FeaturesBuilder<'a> {
38982    type Target = PhysicalDeviceVulkan11Features;
38983    #[inline]
38984    fn deref(&self) -> &Self::Target {
38985        &self.inner
38986    }
38987}
38988impl<'a> core::ops::DerefMut for PhysicalDeviceVulkan11FeaturesBuilder<'a> {
38989    #[inline]
38990    fn deref_mut(&mut self) -> &mut Self::Target {
38991        &mut self.inner
38992    }
38993}
38994///Builder for [`PhysicalDeviceVulkan11Properties`] with lifetime-tied pNext safety.
38995pub struct PhysicalDeviceVulkan11PropertiesBuilder<'a> {
38996    inner: PhysicalDeviceVulkan11Properties,
38997    _marker: core::marker::PhantomData<&'a ()>,
38998}
38999impl PhysicalDeviceVulkan11Properties {
39000    /// Start building this struct; `s_type` is already set to the correct variant.
39001    #[inline]
39002    pub fn builder<'a>() -> PhysicalDeviceVulkan11PropertiesBuilder<'a> {
39003        PhysicalDeviceVulkan11PropertiesBuilder {
39004            inner: PhysicalDeviceVulkan11Properties {
39005                s_type: StructureType::from_raw(50i32),
39006                ..Default::default()
39007            },
39008            _marker: core::marker::PhantomData,
39009        }
39010    }
39011}
39012impl<'a> PhysicalDeviceVulkan11PropertiesBuilder<'a> {
39013    #[inline]
39014    pub fn device_uuid(mut self, value: [u8; UUID_SIZE as usize]) -> Self {
39015        self.inner.device_uuid = value;
39016        self
39017    }
39018    #[inline]
39019    pub fn driver_uuid(mut self, value: [u8; UUID_SIZE as usize]) -> Self {
39020        self.inner.driver_uuid = value;
39021        self
39022    }
39023    #[inline]
39024    pub fn device_luid(mut self, value: [u8; LUID_SIZE as usize]) -> Self {
39025        self.inner.device_luid = value;
39026        self
39027    }
39028    #[inline]
39029    pub fn device_node_mask(mut self, value: u32) -> Self {
39030        self.inner.device_node_mask = value;
39031        self
39032    }
39033    #[inline]
39034    pub fn device_luid_valid(mut self, value: bool) -> Self {
39035        self.inner.device_luid_valid = value as u32;
39036        self
39037    }
39038    #[inline]
39039    pub fn subgroup_size(mut self, value: u32) -> Self {
39040        self.inner.subgroup_size = value;
39041        self
39042    }
39043    #[inline]
39044    pub fn subgroup_supported_stages(mut self, value: ShaderStageFlags) -> Self {
39045        self.inner.subgroup_supported_stages = value;
39046        self
39047    }
39048    #[inline]
39049    pub fn subgroup_supported_operations(mut self, value: SubgroupFeatureFlags) -> Self {
39050        self.inner.subgroup_supported_operations = value;
39051        self
39052    }
39053    #[inline]
39054    pub fn subgroup_quad_operations_in_all_stages(mut self, value: bool) -> Self {
39055        self.inner.subgroup_quad_operations_in_all_stages = value as u32;
39056        self
39057    }
39058    #[inline]
39059    pub fn point_clipping_behavior(mut self, value: PointClippingBehavior) -> Self {
39060        self.inner.point_clipping_behavior = value;
39061        self
39062    }
39063    #[inline]
39064    pub fn max_multiview_view_count(mut self, value: u32) -> Self {
39065        self.inner.max_multiview_view_count = value;
39066        self
39067    }
39068    #[inline]
39069    pub fn max_multiview_instance_index(mut self, value: u32) -> Self {
39070        self.inner.max_multiview_instance_index = value;
39071        self
39072    }
39073    #[inline]
39074    pub fn protected_no_fault(mut self, value: bool) -> Self {
39075        self.inner.protected_no_fault = value as u32;
39076        self
39077    }
39078    #[inline]
39079    pub fn max_per_set_descriptors(mut self, value: u32) -> Self {
39080        self.inner.max_per_set_descriptors = value;
39081        self
39082    }
39083    #[inline]
39084    pub fn max_memory_allocation_size(mut self, value: u64) -> Self {
39085        self.inner.max_memory_allocation_size = value;
39086        self
39087    }
39088}
39089impl<'a> core::ops::Deref for PhysicalDeviceVulkan11PropertiesBuilder<'a> {
39090    type Target = PhysicalDeviceVulkan11Properties;
39091    #[inline]
39092    fn deref(&self) -> &Self::Target {
39093        &self.inner
39094    }
39095}
39096impl<'a> core::ops::DerefMut for PhysicalDeviceVulkan11PropertiesBuilder<'a> {
39097    #[inline]
39098    fn deref_mut(&mut self) -> &mut Self::Target {
39099        &mut self.inner
39100    }
39101}
39102///Builder for [`PhysicalDeviceVulkan12Features`] with lifetime-tied pNext safety.
39103pub struct PhysicalDeviceVulkan12FeaturesBuilder<'a> {
39104    inner: PhysicalDeviceVulkan12Features,
39105    _marker: core::marker::PhantomData<&'a ()>,
39106}
39107impl PhysicalDeviceVulkan12Features {
39108    /// Start building this struct; `s_type` is already set to the correct variant.
39109    #[inline]
39110    pub fn builder<'a>() -> PhysicalDeviceVulkan12FeaturesBuilder<'a> {
39111        PhysicalDeviceVulkan12FeaturesBuilder {
39112            inner: PhysicalDeviceVulkan12Features {
39113                s_type: StructureType::from_raw(51i32),
39114                ..Default::default()
39115            },
39116            _marker: core::marker::PhantomData,
39117        }
39118    }
39119}
39120impl<'a> PhysicalDeviceVulkan12FeaturesBuilder<'a> {
39121    #[inline]
39122    pub fn sampler_mirror_clamp_to_edge(mut self, value: bool) -> Self {
39123        self.inner.sampler_mirror_clamp_to_edge = value as u32;
39124        self
39125    }
39126    #[inline]
39127    pub fn draw_indirect_count(mut self, value: bool) -> Self {
39128        self.inner.draw_indirect_count = value as u32;
39129        self
39130    }
39131    #[inline]
39132    pub fn storage_buffer8_bit_access(mut self, value: bool) -> Self {
39133        self.inner.storage_buffer8_bit_access = value as u32;
39134        self
39135    }
39136    #[inline]
39137    pub fn uniform_and_storage_buffer8_bit_access(mut self, value: bool) -> Self {
39138        self.inner.uniform_and_storage_buffer8_bit_access = value as u32;
39139        self
39140    }
39141    #[inline]
39142    pub fn storage_push_constant8(mut self, value: bool) -> Self {
39143        self.inner.storage_push_constant8 = value as u32;
39144        self
39145    }
39146    #[inline]
39147    pub fn shader_buffer_int64_atomics(mut self, value: bool) -> Self {
39148        self.inner.shader_buffer_int64_atomics = value as u32;
39149        self
39150    }
39151    #[inline]
39152    pub fn shader_shared_int64_atomics(mut self, value: bool) -> Self {
39153        self.inner.shader_shared_int64_atomics = value as u32;
39154        self
39155    }
39156    #[inline]
39157    pub fn shader_float16(mut self, value: bool) -> Self {
39158        self.inner.shader_float16 = value as u32;
39159        self
39160    }
39161    #[inline]
39162    pub fn shader_int8(mut self, value: bool) -> Self {
39163        self.inner.shader_int8 = value as u32;
39164        self
39165    }
39166    #[inline]
39167    pub fn descriptor_indexing(mut self, value: bool) -> Self {
39168        self.inner.descriptor_indexing = value as u32;
39169        self
39170    }
39171    #[inline]
39172    pub fn shader_input_attachment_array_dynamic_indexing(
39173        mut self,
39174        value: bool,
39175    ) -> Self {
39176        self.inner.shader_input_attachment_array_dynamic_indexing = value as u32;
39177        self
39178    }
39179    #[inline]
39180    pub fn shader_uniform_texel_buffer_array_dynamic_indexing(
39181        mut self,
39182        value: bool,
39183    ) -> Self {
39184        self.inner.shader_uniform_texel_buffer_array_dynamic_indexing = value as u32;
39185        self
39186    }
39187    #[inline]
39188    pub fn shader_storage_texel_buffer_array_dynamic_indexing(
39189        mut self,
39190        value: bool,
39191    ) -> Self {
39192        self.inner.shader_storage_texel_buffer_array_dynamic_indexing = value as u32;
39193        self
39194    }
39195    #[inline]
39196    pub fn shader_uniform_buffer_array_non_uniform_indexing(
39197        mut self,
39198        value: bool,
39199    ) -> Self {
39200        self.inner.shader_uniform_buffer_array_non_uniform_indexing = value as u32;
39201        self
39202    }
39203    #[inline]
39204    pub fn shader_sampled_image_array_non_uniform_indexing(
39205        mut self,
39206        value: bool,
39207    ) -> Self {
39208        self.inner.shader_sampled_image_array_non_uniform_indexing = value as u32;
39209        self
39210    }
39211    #[inline]
39212    pub fn shader_storage_buffer_array_non_uniform_indexing(
39213        mut self,
39214        value: bool,
39215    ) -> Self {
39216        self.inner.shader_storage_buffer_array_non_uniform_indexing = value as u32;
39217        self
39218    }
39219    #[inline]
39220    pub fn shader_storage_image_array_non_uniform_indexing(
39221        mut self,
39222        value: bool,
39223    ) -> Self {
39224        self.inner.shader_storage_image_array_non_uniform_indexing = value as u32;
39225        self
39226    }
39227    #[inline]
39228    pub fn shader_input_attachment_array_non_uniform_indexing(
39229        mut self,
39230        value: bool,
39231    ) -> Self {
39232        self.inner.shader_input_attachment_array_non_uniform_indexing = value as u32;
39233        self
39234    }
39235    #[inline]
39236    pub fn shader_uniform_texel_buffer_array_non_uniform_indexing(
39237        mut self,
39238        value: bool,
39239    ) -> Self {
39240        self.inner.shader_uniform_texel_buffer_array_non_uniform_indexing = value as u32;
39241        self
39242    }
39243    #[inline]
39244    pub fn shader_storage_texel_buffer_array_non_uniform_indexing(
39245        mut self,
39246        value: bool,
39247    ) -> Self {
39248        self.inner.shader_storage_texel_buffer_array_non_uniform_indexing = value as u32;
39249        self
39250    }
39251    #[inline]
39252    pub fn descriptor_binding_uniform_buffer_update_after_bind(
39253        mut self,
39254        value: bool,
39255    ) -> Self {
39256        self.inner.descriptor_binding_uniform_buffer_update_after_bind = value as u32;
39257        self
39258    }
39259    #[inline]
39260    pub fn descriptor_binding_sampled_image_update_after_bind(
39261        mut self,
39262        value: bool,
39263    ) -> Self {
39264        self.inner.descriptor_binding_sampled_image_update_after_bind = value as u32;
39265        self
39266    }
39267    #[inline]
39268    pub fn descriptor_binding_storage_image_update_after_bind(
39269        mut self,
39270        value: bool,
39271    ) -> Self {
39272        self.inner.descriptor_binding_storage_image_update_after_bind = value as u32;
39273        self
39274    }
39275    #[inline]
39276    pub fn descriptor_binding_storage_buffer_update_after_bind(
39277        mut self,
39278        value: bool,
39279    ) -> Self {
39280        self.inner.descriptor_binding_storage_buffer_update_after_bind = value as u32;
39281        self
39282    }
39283    #[inline]
39284    pub fn descriptor_binding_uniform_texel_buffer_update_after_bind(
39285        mut self,
39286        value: bool,
39287    ) -> Self {
39288        self.inner.descriptor_binding_uniform_texel_buffer_update_after_bind = value
39289            as u32;
39290        self
39291    }
39292    #[inline]
39293    pub fn descriptor_binding_storage_texel_buffer_update_after_bind(
39294        mut self,
39295        value: bool,
39296    ) -> Self {
39297        self.inner.descriptor_binding_storage_texel_buffer_update_after_bind = value
39298            as u32;
39299        self
39300    }
39301    #[inline]
39302    pub fn descriptor_binding_update_unused_while_pending(
39303        mut self,
39304        value: bool,
39305    ) -> Self {
39306        self.inner.descriptor_binding_update_unused_while_pending = value as u32;
39307        self
39308    }
39309    #[inline]
39310    pub fn descriptor_binding_partially_bound(mut self, value: bool) -> Self {
39311        self.inner.descriptor_binding_partially_bound = value as u32;
39312        self
39313    }
39314    #[inline]
39315    pub fn descriptor_binding_variable_descriptor_count(mut self, value: bool) -> Self {
39316        self.inner.descriptor_binding_variable_descriptor_count = value as u32;
39317        self
39318    }
39319    #[inline]
39320    pub fn runtime_descriptor_array(mut self, value: bool) -> Self {
39321        self.inner.runtime_descriptor_array = value as u32;
39322        self
39323    }
39324    #[inline]
39325    pub fn sampler_filter_minmax(mut self, value: bool) -> Self {
39326        self.inner.sampler_filter_minmax = value as u32;
39327        self
39328    }
39329    #[inline]
39330    pub fn scalar_block_layout(mut self, value: bool) -> Self {
39331        self.inner.scalar_block_layout = value as u32;
39332        self
39333    }
39334    #[inline]
39335    pub fn imageless_framebuffer(mut self, value: bool) -> Self {
39336        self.inner.imageless_framebuffer = value as u32;
39337        self
39338    }
39339    #[inline]
39340    pub fn uniform_buffer_standard_layout(mut self, value: bool) -> Self {
39341        self.inner.uniform_buffer_standard_layout = value as u32;
39342        self
39343    }
39344    #[inline]
39345    pub fn shader_subgroup_extended_types(mut self, value: bool) -> Self {
39346        self.inner.shader_subgroup_extended_types = value as u32;
39347        self
39348    }
39349    #[inline]
39350    pub fn separate_depth_stencil_layouts(mut self, value: bool) -> Self {
39351        self.inner.separate_depth_stencil_layouts = value as u32;
39352        self
39353    }
39354    #[inline]
39355    pub fn host_query_reset(mut self, value: bool) -> Self {
39356        self.inner.host_query_reset = value as u32;
39357        self
39358    }
39359    #[inline]
39360    pub fn timeline_semaphore(mut self, value: bool) -> Self {
39361        self.inner.timeline_semaphore = value as u32;
39362        self
39363    }
39364    #[inline]
39365    pub fn buffer_device_address(mut self, value: bool) -> Self {
39366        self.inner.buffer_device_address = value as u32;
39367        self
39368    }
39369    #[inline]
39370    pub fn buffer_device_address_capture_replay(mut self, value: bool) -> Self {
39371        self.inner.buffer_device_address_capture_replay = value as u32;
39372        self
39373    }
39374    #[inline]
39375    pub fn buffer_device_address_multi_device(mut self, value: bool) -> Self {
39376        self.inner.buffer_device_address_multi_device = value as u32;
39377        self
39378    }
39379    #[inline]
39380    pub fn vulkan_memory_model(mut self, value: bool) -> Self {
39381        self.inner.vulkan_memory_model = value as u32;
39382        self
39383    }
39384    #[inline]
39385    pub fn vulkan_memory_model_device_scope(mut self, value: bool) -> Self {
39386        self.inner.vulkan_memory_model_device_scope = value as u32;
39387        self
39388    }
39389    #[inline]
39390    pub fn vulkan_memory_model_availability_visibility_chains(
39391        mut self,
39392        value: bool,
39393    ) -> Self {
39394        self.inner.vulkan_memory_model_availability_visibility_chains = value as u32;
39395        self
39396    }
39397    #[inline]
39398    pub fn shader_output_viewport_index(mut self, value: bool) -> Self {
39399        self.inner.shader_output_viewport_index = value as u32;
39400        self
39401    }
39402    #[inline]
39403    pub fn shader_output_layer(mut self, value: bool) -> Self {
39404        self.inner.shader_output_layer = value as u32;
39405        self
39406    }
39407    #[inline]
39408    pub fn subgroup_broadcast_dynamic_id(mut self, value: bool) -> Self {
39409        self.inner.subgroup_broadcast_dynamic_id = value as u32;
39410        self
39411    }
39412    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceVulkan12Features`]'s **Extended By** section for valid types.
39413    #[inline]
39414    pub fn push_next<T: ExtendsPhysicalDeviceVulkan12Features>(
39415        mut self,
39416        next: &'a mut T,
39417    ) -> Self {
39418        unsafe {
39419            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
39420            (*next_ptr).p_next = self.inner.p_next as *mut _;
39421            self.inner.p_next = <*mut BaseOutStructure>::cast::<
39422                core::ffi::c_void,
39423            >(next_ptr);
39424        }
39425        self
39426    }
39427}
39428impl<'a> core::ops::Deref for PhysicalDeviceVulkan12FeaturesBuilder<'a> {
39429    type Target = PhysicalDeviceVulkan12Features;
39430    #[inline]
39431    fn deref(&self) -> &Self::Target {
39432        &self.inner
39433    }
39434}
39435impl<'a> core::ops::DerefMut for PhysicalDeviceVulkan12FeaturesBuilder<'a> {
39436    #[inline]
39437    fn deref_mut(&mut self) -> &mut Self::Target {
39438        &mut self.inner
39439    }
39440}
39441///Builder for [`PhysicalDeviceVulkan12Properties`] with lifetime-tied pNext safety.
39442pub struct PhysicalDeviceVulkan12PropertiesBuilder<'a> {
39443    inner: PhysicalDeviceVulkan12Properties,
39444    _marker: core::marker::PhantomData<&'a ()>,
39445}
39446impl PhysicalDeviceVulkan12Properties {
39447    /// Start building this struct; `s_type` is already set to the correct variant.
39448    #[inline]
39449    pub fn builder<'a>() -> PhysicalDeviceVulkan12PropertiesBuilder<'a> {
39450        PhysicalDeviceVulkan12PropertiesBuilder {
39451            inner: PhysicalDeviceVulkan12Properties {
39452                s_type: StructureType::from_raw(52i32),
39453                ..Default::default()
39454            },
39455            _marker: core::marker::PhantomData,
39456        }
39457    }
39458}
39459impl<'a> PhysicalDeviceVulkan12PropertiesBuilder<'a> {
39460    #[inline]
39461    pub fn driver_id(mut self, value: DriverId) -> Self {
39462        self.inner.driver_id = value;
39463        self
39464    }
39465    #[inline]
39466    pub fn driver_name(
39467        mut self,
39468        value: crate::StringArray<{ MAX_DRIVER_NAME_SIZE as usize }>,
39469    ) -> Self {
39470        self.inner.driver_name = value;
39471        self
39472    }
39473    #[inline]
39474    pub fn driver_info(
39475        mut self,
39476        value: crate::StringArray<{ MAX_DRIVER_INFO_SIZE as usize }>,
39477    ) -> Self {
39478        self.inner.driver_info = value;
39479        self
39480    }
39481    #[inline]
39482    pub fn conformance_version(mut self, value: ConformanceVersion) -> Self {
39483        self.inner.conformance_version = value;
39484        self
39485    }
39486    #[inline]
39487    pub fn denorm_behavior_independence(
39488        mut self,
39489        value: ShaderFloatControlsIndependence,
39490    ) -> Self {
39491        self.inner.denorm_behavior_independence = value;
39492        self
39493    }
39494    #[inline]
39495    pub fn rounding_mode_independence(
39496        mut self,
39497        value: ShaderFloatControlsIndependence,
39498    ) -> Self {
39499        self.inner.rounding_mode_independence = value;
39500        self
39501    }
39502    #[inline]
39503    pub fn shader_signed_zero_inf_nan_preserve_float16(mut self, value: bool) -> Self {
39504        self.inner.shader_signed_zero_inf_nan_preserve_float16 = value as u32;
39505        self
39506    }
39507    #[inline]
39508    pub fn shader_signed_zero_inf_nan_preserve_float32(mut self, value: bool) -> Self {
39509        self.inner.shader_signed_zero_inf_nan_preserve_float32 = value as u32;
39510        self
39511    }
39512    #[inline]
39513    pub fn shader_signed_zero_inf_nan_preserve_float64(mut self, value: bool) -> Self {
39514        self.inner.shader_signed_zero_inf_nan_preserve_float64 = value as u32;
39515        self
39516    }
39517    #[inline]
39518    pub fn shader_denorm_preserve_float16(mut self, value: bool) -> Self {
39519        self.inner.shader_denorm_preserve_float16 = value as u32;
39520        self
39521    }
39522    #[inline]
39523    pub fn shader_denorm_preserve_float32(mut self, value: bool) -> Self {
39524        self.inner.shader_denorm_preserve_float32 = value as u32;
39525        self
39526    }
39527    #[inline]
39528    pub fn shader_denorm_preserve_float64(mut self, value: bool) -> Self {
39529        self.inner.shader_denorm_preserve_float64 = value as u32;
39530        self
39531    }
39532    #[inline]
39533    pub fn shader_denorm_flush_to_zero_float16(mut self, value: bool) -> Self {
39534        self.inner.shader_denorm_flush_to_zero_float16 = value as u32;
39535        self
39536    }
39537    #[inline]
39538    pub fn shader_denorm_flush_to_zero_float32(mut self, value: bool) -> Self {
39539        self.inner.shader_denorm_flush_to_zero_float32 = value as u32;
39540        self
39541    }
39542    #[inline]
39543    pub fn shader_denorm_flush_to_zero_float64(mut self, value: bool) -> Self {
39544        self.inner.shader_denorm_flush_to_zero_float64 = value as u32;
39545        self
39546    }
39547    #[inline]
39548    pub fn shader_rounding_mode_rte_float16(mut self, value: bool) -> Self {
39549        self.inner.shader_rounding_mode_rte_float16 = value as u32;
39550        self
39551    }
39552    #[inline]
39553    pub fn shader_rounding_mode_rte_float32(mut self, value: bool) -> Self {
39554        self.inner.shader_rounding_mode_rte_float32 = value as u32;
39555        self
39556    }
39557    #[inline]
39558    pub fn shader_rounding_mode_rte_float64(mut self, value: bool) -> Self {
39559        self.inner.shader_rounding_mode_rte_float64 = value as u32;
39560        self
39561    }
39562    #[inline]
39563    pub fn shader_rounding_mode_rtz_float16(mut self, value: bool) -> Self {
39564        self.inner.shader_rounding_mode_rtz_float16 = value as u32;
39565        self
39566    }
39567    #[inline]
39568    pub fn shader_rounding_mode_rtz_float32(mut self, value: bool) -> Self {
39569        self.inner.shader_rounding_mode_rtz_float32 = value as u32;
39570        self
39571    }
39572    #[inline]
39573    pub fn shader_rounding_mode_rtz_float64(mut self, value: bool) -> Self {
39574        self.inner.shader_rounding_mode_rtz_float64 = value as u32;
39575        self
39576    }
39577    #[inline]
39578    pub fn max_update_after_bind_descriptors_in_all_pools(mut self, value: u32) -> Self {
39579        self.inner.max_update_after_bind_descriptors_in_all_pools = value;
39580        self
39581    }
39582    #[inline]
39583    pub fn shader_uniform_buffer_array_non_uniform_indexing_native(
39584        mut self,
39585        value: bool,
39586    ) -> Self {
39587        self.inner.shader_uniform_buffer_array_non_uniform_indexing_native = value
39588            as u32;
39589        self
39590    }
39591    #[inline]
39592    pub fn shader_sampled_image_array_non_uniform_indexing_native(
39593        mut self,
39594        value: bool,
39595    ) -> Self {
39596        self.inner.shader_sampled_image_array_non_uniform_indexing_native = value as u32;
39597        self
39598    }
39599    #[inline]
39600    pub fn shader_storage_buffer_array_non_uniform_indexing_native(
39601        mut self,
39602        value: bool,
39603    ) -> Self {
39604        self.inner.shader_storage_buffer_array_non_uniform_indexing_native = value
39605            as u32;
39606        self
39607    }
39608    #[inline]
39609    pub fn shader_storage_image_array_non_uniform_indexing_native(
39610        mut self,
39611        value: bool,
39612    ) -> Self {
39613        self.inner.shader_storage_image_array_non_uniform_indexing_native = value as u32;
39614        self
39615    }
39616    #[inline]
39617    pub fn shader_input_attachment_array_non_uniform_indexing_native(
39618        mut self,
39619        value: bool,
39620    ) -> Self {
39621        self.inner.shader_input_attachment_array_non_uniform_indexing_native = value
39622            as u32;
39623        self
39624    }
39625    #[inline]
39626    pub fn robust_buffer_access_update_after_bind(mut self, value: bool) -> Self {
39627        self.inner.robust_buffer_access_update_after_bind = value as u32;
39628        self
39629    }
39630    #[inline]
39631    pub fn quad_divergent_implicit_lod(mut self, value: bool) -> Self {
39632        self.inner.quad_divergent_implicit_lod = value as u32;
39633        self
39634    }
39635    #[inline]
39636    pub fn max_per_stage_descriptor_update_after_bind_samplers(
39637        mut self,
39638        value: u32,
39639    ) -> Self {
39640        self.inner.max_per_stage_descriptor_update_after_bind_samplers = value;
39641        self
39642    }
39643    #[inline]
39644    pub fn max_per_stage_descriptor_update_after_bind_uniform_buffers(
39645        mut self,
39646        value: u32,
39647    ) -> Self {
39648        self.inner.max_per_stage_descriptor_update_after_bind_uniform_buffers = value;
39649        self
39650    }
39651    #[inline]
39652    pub fn max_per_stage_descriptor_update_after_bind_storage_buffers(
39653        mut self,
39654        value: u32,
39655    ) -> Self {
39656        self.inner.max_per_stage_descriptor_update_after_bind_storage_buffers = value;
39657        self
39658    }
39659    #[inline]
39660    pub fn max_per_stage_descriptor_update_after_bind_sampled_images(
39661        mut self,
39662        value: u32,
39663    ) -> Self {
39664        self.inner.max_per_stage_descriptor_update_after_bind_sampled_images = value;
39665        self
39666    }
39667    #[inline]
39668    pub fn max_per_stage_descriptor_update_after_bind_storage_images(
39669        mut self,
39670        value: u32,
39671    ) -> Self {
39672        self.inner.max_per_stage_descriptor_update_after_bind_storage_images = value;
39673        self
39674    }
39675    #[inline]
39676    pub fn max_per_stage_descriptor_update_after_bind_input_attachments(
39677        mut self,
39678        value: u32,
39679    ) -> Self {
39680        self.inner.max_per_stage_descriptor_update_after_bind_input_attachments = value;
39681        self
39682    }
39683    #[inline]
39684    pub fn max_per_stage_update_after_bind_resources(mut self, value: u32) -> Self {
39685        self.inner.max_per_stage_update_after_bind_resources = value;
39686        self
39687    }
39688    #[inline]
39689    pub fn max_descriptor_set_update_after_bind_samplers(mut self, value: u32) -> Self {
39690        self.inner.max_descriptor_set_update_after_bind_samplers = value;
39691        self
39692    }
39693    #[inline]
39694    pub fn max_descriptor_set_update_after_bind_uniform_buffers(
39695        mut self,
39696        value: u32,
39697    ) -> Self {
39698        self.inner.max_descriptor_set_update_after_bind_uniform_buffers = value;
39699        self
39700    }
39701    #[inline]
39702    pub fn max_descriptor_set_update_after_bind_uniform_buffers_dynamic(
39703        mut self,
39704        value: u32,
39705    ) -> Self {
39706        self.inner.max_descriptor_set_update_after_bind_uniform_buffers_dynamic = value;
39707        self
39708    }
39709    #[inline]
39710    pub fn max_descriptor_set_update_after_bind_storage_buffers(
39711        mut self,
39712        value: u32,
39713    ) -> Self {
39714        self.inner.max_descriptor_set_update_after_bind_storage_buffers = value;
39715        self
39716    }
39717    #[inline]
39718    pub fn max_descriptor_set_update_after_bind_storage_buffers_dynamic(
39719        mut self,
39720        value: u32,
39721    ) -> Self {
39722        self.inner.max_descriptor_set_update_after_bind_storage_buffers_dynamic = value;
39723        self
39724    }
39725    #[inline]
39726    pub fn max_descriptor_set_update_after_bind_sampled_images(
39727        mut self,
39728        value: u32,
39729    ) -> Self {
39730        self.inner.max_descriptor_set_update_after_bind_sampled_images = value;
39731        self
39732    }
39733    #[inline]
39734    pub fn max_descriptor_set_update_after_bind_storage_images(
39735        mut self,
39736        value: u32,
39737    ) -> Self {
39738        self.inner.max_descriptor_set_update_after_bind_storage_images = value;
39739        self
39740    }
39741    #[inline]
39742    pub fn max_descriptor_set_update_after_bind_input_attachments(
39743        mut self,
39744        value: u32,
39745    ) -> Self {
39746        self.inner.max_descriptor_set_update_after_bind_input_attachments = value;
39747        self
39748    }
39749    #[inline]
39750    pub fn supported_depth_resolve_modes(mut self, value: ResolveModeFlags) -> Self {
39751        self.inner.supported_depth_resolve_modes = value;
39752        self
39753    }
39754    #[inline]
39755    pub fn supported_stencil_resolve_modes(mut self, value: ResolveModeFlags) -> Self {
39756        self.inner.supported_stencil_resolve_modes = value;
39757        self
39758    }
39759    #[inline]
39760    pub fn independent_resolve_none(mut self, value: bool) -> Self {
39761        self.inner.independent_resolve_none = value as u32;
39762        self
39763    }
39764    #[inline]
39765    pub fn independent_resolve(mut self, value: bool) -> Self {
39766        self.inner.independent_resolve = value as u32;
39767        self
39768    }
39769    #[inline]
39770    pub fn filter_minmax_single_component_formats(mut self, value: bool) -> Self {
39771        self.inner.filter_minmax_single_component_formats = value as u32;
39772        self
39773    }
39774    #[inline]
39775    pub fn filter_minmax_image_component_mapping(mut self, value: bool) -> Self {
39776        self.inner.filter_minmax_image_component_mapping = value as u32;
39777        self
39778    }
39779    #[inline]
39780    pub fn max_timeline_semaphore_value_difference(mut self, value: u64) -> Self {
39781        self.inner.max_timeline_semaphore_value_difference = value;
39782        self
39783    }
39784    #[inline]
39785    pub fn framebuffer_integer_color_sample_counts(
39786        mut self,
39787        value: SampleCountFlags,
39788    ) -> Self {
39789        self.inner.framebuffer_integer_color_sample_counts = value;
39790        self
39791    }
39792}
39793impl<'a> core::ops::Deref for PhysicalDeviceVulkan12PropertiesBuilder<'a> {
39794    type Target = PhysicalDeviceVulkan12Properties;
39795    #[inline]
39796    fn deref(&self) -> &Self::Target {
39797        &self.inner
39798    }
39799}
39800impl<'a> core::ops::DerefMut for PhysicalDeviceVulkan12PropertiesBuilder<'a> {
39801    #[inline]
39802    fn deref_mut(&mut self) -> &mut Self::Target {
39803        &mut self.inner
39804    }
39805}
39806///Builder for [`PhysicalDeviceVulkan13Features`] with lifetime-tied pNext safety.
39807pub struct PhysicalDeviceVulkan13FeaturesBuilder<'a> {
39808    inner: PhysicalDeviceVulkan13Features,
39809    _marker: core::marker::PhantomData<&'a ()>,
39810}
39811impl PhysicalDeviceVulkan13Features {
39812    /// Start building this struct; `s_type` is already set to the correct variant.
39813    #[inline]
39814    pub fn builder<'a>() -> PhysicalDeviceVulkan13FeaturesBuilder<'a> {
39815        PhysicalDeviceVulkan13FeaturesBuilder {
39816            inner: PhysicalDeviceVulkan13Features {
39817                s_type: StructureType::from_raw(53i32),
39818                ..Default::default()
39819            },
39820            _marker: core::marker::PhantomData,
39821        }
39822    }
39823}
39824impl<'a> PhysicalDeviceVulkan13FeaturesBuilder<'a> {
39825    #[inline]
39826    pub fn robust_image_access(mut self, value: bool) -> Self {
39827        self.inner.robust_image_access = value as u32;
39828        self
39829    }
39830    #[inline]
39831    pub fn inline_uniform_block(mut self, value: bool) -> Self {
39832        self.inner.inline_uniform_block = value as u32;
39833        self
39834    }
39835    #[inline]
39836    pub fn descriptor_binding_inline_uniform_block_update_after_bind(
39837        mut self,
39838        value: bool,
39839    ) -> Self {
39840        self.inner.descriptor_binding_inline_uniform_block_update_after_bind = value
39841            as u32;
39842        self
39843    }
39844    #[inline]
39845    pub fn pipeline_creation_cache_control(mut self, value: bool) -> Self {
39846        self.inner.pipeline_creation_cache_control = value as u32;
39847        self
39848    }
39849    #[inline]
39850    pub fn private_data(mut self, value: bool) -> Self {
39851        self.inner.private_data = value as u32;
39852        self
39853    }
39854    #[inline]
39855    pub fn shader_demote_to_helper_invocation(mut self, value: bool) -> Self {
39856        self.inner.shader_demote_to_helper_invocation = value as u32;
39857        self
39858    }
39859    #[inline]
39860    pub fn shader_terminate_invocation(mut self, value: bool) -> Self {
39861        self.inner.shader_terminate_invocation = value as u32;
39862        self
39863    }
39864    #[inline]
39865    pub fn subgroup_size_control(mut self, value: bool) -> Self {
39866        self.inner.subgroup_size_control = value as u32;
39867        self
39868    }
39869    #[inline]
39870    pub fn compute_full_subgroups(mut self, value: bool) -> Self {
39871        self.inner.compute_full_subgroups = value as u32;
39872        self
39873    }
39874    #[inline]
39875    pub fn synchronization2(mut self, value: bool) -> Self {
39876        self.inner.synchronization2 = value as u32;
39877        self
39878    }
39879    #[inline]
39880    pub fn texture_compression_astc_hdr(mut self, value: bool) -> Self {
39881        self.inner.texture_compression_astc_hdr = value as u32;
39882        self
39883    }
39884    #[inline]
39885    pub fn shader_zero_initialize_workgroup_memory(mut self, value: bool) -> Self {
39886        self.inner.shader_zero_initialize_workgroup_memory = value as u32;
39887        self
39888    }
39889    #[inline]
39890    pub fn dynamic_rendering(mut self, value: bool) -> Self {
39891        self.inner.dynamic_rendering = value as u32;
39892        self
39893    }
39894    #[inline]
39895    pub fn shader_integer_dot_product(mut self, value: bool) -> Self {
39896        self.inner.shader_integer_dot_product = value as u32;
39897        self
39898    }
39899    #[inline]
39900    pub fn maintenance4(mut self, value: bool) -> Self {
39901        self.inner.maintenance4 = value as u32;
39902        self
39903    }
39904    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceVulkan13Features`]'s **Extended By** section for valid types.
39905    #[inline]
39906    pub fn push_next<T: ExtendsPhysicalDeviceVulkan13Features>(
39907        mut self,
39908        next: &'a mut T,
39909    ) -> Self {
39910        unsafe {
39911            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
39912            (*next_ptr).p_next = self.inner.p_next as *mut _;
39913            self.inner.p_next = <*mut BaseOutStructure>::cast::<
39914                core::ffi::c_void,
39915            >(next_ptr);
39916        }
39917        self
39918    }
39919}
39920impl<'a> core::ops::Deref for PhysicalDeviceVulkan13FeaturesBuilder<'a> {
39921    type Target = PhysicalDeviceVulkan13Features;
39922    #[inline]
39923    fn deref(&self) -> &Self::Target {
39924        &self.inner
39925    }
39926}
39927impl<'a> core::ops::DerefMut for PhysicalDeviceVulkan13FeaturesBuilder<'a> {
39928    #[inline]
39929    fn deref_mut(&mut self) -> &mut Self::Target {
39930        &mut self.inner
39931    }
39932}
39933///Builder for [`PhysicalDeviceVulkan13Properties`] with lifetime-tied pNext safety.
39934pub struct PhysicalDeviceVulkan13PropertiesBuilder<'a> {
39935    inner: PhysicalDeviceVulkan13Properties,
39936    _marker: core::marker::PhantomData<&'a ()>,
39937}
39938impl PhysicalDeviceVulkan13Properties {
39939    /// Start building this struct; `s_type` is already set to the correct variant.
39940    #[inline]
39941    pub fn builder<'a>() -> PhysicalDeviceVulkan13PropertiesBuilder<'a> {
39942        PhysicalDeviceVulkan13PropertiesBuilder {
39943            inner: PhysicalDeviceVulkan13Properties {
39944                s_type: StructureType::from_raw(54i32),
39945                ..Default::default()
39946            },
39947            _marker: core::marker::PhantomData,
39948        }
39949    }
39950}
39951impl<'a> PhysicalDeviceVulkan13PropertiesBuilder<'a> {
39952    #[inline]
39953    pub fn min_subgroup_size(mut self, value: u32) -> Self {
39954        self.inner.min_subgroup_size = value;
39955        self
39956    }
39957    #[inline]
39958    pub fn max_subgroup_size(mut self, value: u32) -> Self {
39959        self.inner.max_subgroup_size = value;
39960        self
39961    }
39962    #[inline]
39963    pub fn max_compute_workgroup_subgroups(mut self, value: u32) -> Self {
39964        self.inner.max_compute_workgroup_subgroups = value;
39965        self
39966    }
39967    #[inline]
39968    pub fn required_subgroup_size_stages(mut self, value: ShaderStageFlags) -> Self {
39969        self.inner.required_subgroup_size_stages = value;
39970        self
39971    }
39972    #[inline]
39973    pub fn max_inline_uniform_block_size(mut self, value: u32) -> Self {
39974        self.inner.max_inline_uniform_block_size = value;
39975        self
39976    }
39977    #[inline]
39978    pub fn max_per_stage_descriptor_inline_uniform_blocks(mut self, value: u32) -> Self {
39979        self.inner.max_per_stage_descriptor_inline_uniform_blocks = value;
39980        self
39981    }
39982    #[inline]
39983    pub fn max_per_stage_descriptor_update_after_bind_inline_uniform_blocks(
39984        mut self,
39985        value: u32,
39986    ) -> Self {
39987        self.inner.max_per_stage_descriptor_update_after_bind_inline_uniform_blocks = value;
39988        self
39989    }
39990    #[inline]
39991    pub fn max_descriptor_set_inline_uniform_blocks(mut self, value: u32) -> Self {
39992        self.inner.max_descriptor_set_inline_uniform_blocks = value;
39993        self
39994    }
39995    #[inline]
39996    pub fn max_descriptor_set_update_after_bind_inline_uniform_blocks(
39997        mut self,
39998        value: u32,
39999    ) -> Self {
40000        self.inner.max_descriptor_set_update_after_bind_inline_uniform_blocks = value;
40001        self
40002    }
40003    #[inline]
40004    pub fn max_inline_uniform_total_size(mut self, value: u32) -> Self {
40005        self.inner.max_inline_uniform_total_size = value;
40006        self
40007    }
40008    #[inline]
40009    pub fn integer_dot_product8_bit_unsigned_accelerated(mut self, value: bool) -> Self {
40010        self.inner.integer_dot_product8_bit_unsigned_accelerated = value as u32;
40011        self
40012    }
40013    #[inline]
40014    pub fn integer_dot_product8_bit_signed_accelerated(mut self, value: bool) -> Self {
40015        self.inner.integer_dot_product8_bit_signed_accelerated = value as u32;
40016        self
40017    }
40018    #[inline]
40019    pub fn integer_dot_product8_bit_mixed_signedness_accelerated(
40020        mut self,
40021        value: bool,
40022    ) -> Self {
40023        self.inner.integer_dot_product8_bit_mixed_signedness_accelerated = value as u32;
40024        self
40025    }
40026    #[inline]
40027    pub fn integer_dot_product4x8_bit_packed_unsigned_accelerated(
40028        mut self,
40029        value: bool,
40030    ) -> Self {
40031        self.inner.integer_dot_product4x8_bit_packed_unsigned_accelerated = value as u32;
40032        self
40033    }
40034    #[inline]
40035    pub fn integer_dot_product4x8_bit_packed_signed_accelerated(
40036        mut self,
40037        value: bool,
40038    ) -> Self {
40039        self.inner.integer_dot_product4x8_bit_packed_signed_accelerated = value as u32;
40040        self
40041    }
40042    #[inline]
40043    pub fn integer_dot_product4x8_bit_packed_mixed_signedness_accelerated(
40044        mut self,
40045        value: bool,
40046    ) -> Self {
40047        self.inner.integer_dot_product4x8_bit_packed_mixed_signedness_accelerated = value
40048            as u32;
40049        self
40050    }
40051    #[inline]
40052    pub fn integer_dot_product16_bit_unsigned_accelerated(
40053        mut self,
40054        value: bool,
40055    ) -> Self {
40056        self.inner.integer_dot_product16_bit_unsigned_accelerated = value as u32;
40057        self
40058    }
40059    #[inline]
40060    pub fn integer_dot_product16_bit_signed_accelerated(mut self, value: bool) -> Self {
40061        self.inner.integer_dot_product16_bit_signed_accelerated = value as u32;
40062        self
40063    }
40064    #[inline]
40065    pub fn integer_dot_product16_bit_mixed_signedness_accelerated(
40066        mut self,
40067        value: bool,
40068    ) -> Self {
40069        self.inner.integer_dot_product16_bit_mixed_signedness_accelerated = value as u32;
40070        self
40071    }
40072    #[inline]
40073    pub fn integer_dot_product32_bit_unsigned_accelerated(
40074        mut self,
40075        value: bool,
40076    ) -> Self {
40077        self.inner.integer_dot_product32_bit_unsigned_accelerated = value as u32;
40078        self
40079    }
40080    #[inline]
40081    pub fn integer_dot_product32_bit_signed_accelerated(mut self, value: bool) -> Self {
40082        self.inner.integer_dot_product32_bit_signed_accelerated = value as u32;
40083        self
40084    }
40085    #[inline]
40086    pub fn integer_dot_product32_bit_mixed_signedness_accelerated(
40087        mut self,
40088        value: bool,
40089    ) -> Self {
40090        self.inner.integer_dot_product32_bit_mixed_signedness_accelerated = value as u32;
40091        self
40092    }
40093    #[inline]
40094    pub fn integer_dot_product64_bit_unsigned_accelerated(
40095        mut self,
40096        value: bool,
40097    ) -> Self {
40098        self.inner.integer_dot_product64_bit_unsigned_accelerated = value as u32;
40099        self
40100    }
40101    #[inline]
40102    pub fn integer_dot_product64_bit_signed_accelerated(mut self, value: bool) -> Self {
40103        self.inner.integer_dot_product64_bit_signed_accelerated = value as u32;
40104        self
40105    }
40106    #[inline]
40107    pub fn integer_dot_product64_bit_mixed_signedness_accelerated(
40108        mut self,
40109        value: bool,
40110    ) -> Self {
40111        self.inner.integer_dot_product64_bit_mixed_signedness_accelerated = value as u32;
40112        self
40113    }
40114    #[inline]
40115    pub fn integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated(
40116        mut self,
40117        value: bool,
40118    ) -> Self {
40119        self
40120            .inner
40121            .integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated = value
40122            as u32;
40123        self
40124    }
40125    #[inline]
40126    pub fn integer_dot_product_accumulating_saturating8_bit_signed_accelerated(
40127        mut self,
40128        value: bool,
40129    ) -> Self {
40130        self.inner.integer_dot_product_accumulating_saturating8_bit_signed_accelerated = value
40131            as u32;
40132        self
40133    }
40134    #[inline]
40135    pub fn integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated(
40136        mut self,
40137        value: bool,
40138    ) -> Self {
40139        self
40140            .inner
40141            .integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated = value
40142            as u32;
40143        self
40144    }
40145    #[inline]
40146    pub fn integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated(
40147        mut self,
40148        value: bool,
40149    ) -> Self {
40150        self
40151            .inner
40152            .integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated = value
40153            as u32;
40154        self
40155    }
40156    #[inline]
40157    pub fn integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated(
40158        mut self,
40159        value: bool,
40160    ) -> Self {
40161        self
40162            .inner
40163            .integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated = value
40164            as u32;
40165        self
40166    }
40167    #[inline]
40168    pub fn integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated(
40169        mut self,
40170        value: bool,
40171    ) -> Self {
40172        self
40173            .inner
40174            .integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated = value
40175            as u32;
40176        self
40177    }
40178    #[inline]
40179    pub fn integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated(
40180        mut self,
40181        value: bool,
40182    ) -> Self {
40183        self
40184            .inner
40185            .integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated = value
40186            as u32;
40187        self
40188    }
40189    #[inline]
40190    pub fn integer_dot_product_accumulating_saturating16_bit_signed_accelerated(
40191        mut self,
40192        value: bool,
40193    ) -> Self {
40194        self
40195            .inner
40196            .integer_dot_product_accumulating_saturating16_bit_signed_accelerated = value
40197            as u32;
40198        self
40199    }
40200    #[inline]
40201    pub fn integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated(
40202        mut self,
40203        value: bool,
40204    ) -> Self {
40205        self
40206            .inner
40207            .integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated = value
40208            as u32;
40209        self
40210    }
40211    #[inline]
40212    pub fn integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated(
40213        mut self,
40214        value: bool,
40215    ) -> Self {
40216        self
40217            .inner
40218            .integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated = value
40219            as u32;
40220        self
40221    }
40222    #[inline]
40223    pub fn integer_dot_product_accumulating_saturating32_bit_signed_accelerated(
40224        mut self,
40225        value: bool,
40226    ) -> Self {
40227        self
40228            .inner
40229            .integer_dot_product_accumulating_saturating32_bit_signed_accelerated = value
40230            as u32;
40231        self
40232    }
40233    #[inline]
40234    pub fn integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated(
40235        mut self,
40236        value: bool,
40237    ) -> Self {
40238        self
40239            .inner
40240            .integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated = value
40241            as u32;
40242        self
40243    }
40244    #[inline]
40245    pub fn integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated(
40246        mut self,
40247        value: bool,
40248    ) -> Self {
40249        self
40250            .inner
40251            .integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated = value
40252            as u32;
40253        self
40254    }
40255    #[inline]
40256    pub fn integer_dot_product_accumulating_saturating64_bit_signed_accelerated(
40257        mut self,
40258        value: bool,
40259    ) -> Self {
40260        self
40261            .inner
40262            .integer_dot_product_accumulating_saturating64_bit_signed_accelerated = value
40263            as u32;
40264        self
40265    }
40266    #[inline]
40267    pub fn integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated(
40268        mut self,
40269        value: bool,
40270    ) -> Self {
40271        self
40272            .inner
40273            .integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated = value
40274            as u32;
40275        self
40276    }
40277    #[inline]
40278    pub fn storage_texel_buffer_offset_alignment_bytes(mut self, value: u64) -> Self {
40279        self.inner.storage_texel_buffer_offset_alignment_bytes = value;
40280        self
40281    }
40282    #[inline]
40283    pub fn storage_texel_buffer_offset_single_texel_alignment(
40284        mut self,
40285        value: bool,
40286    ) -> Self {
40287        self.inner.storage_texel_buffer_offset_single_texel_alignment = value as u32;
40288        self
40289    }
40290    #[inline]
40291    pub fn uniform_texel_buffer_offset_alignment_bytes(mut self, value: u64) -> Self {
40292        self.inner.uniform_texel_buffer_offset_alignment_bytes = value;
40293        self
40294    }
40295    #[inline]
40296    pub fn uniform_texel_buffer_offset_single_texel_alignment(
40297        mut self,
40298        value: bool,
40299    ) -> Self {
40300        self.inner.uniform_texel_buffer_offset_single_texel_alignment = value as u32;
40301        self
40302    }
40303    #[inline]
40304    pub fn max_buffer_size(mut self, value: u64) -> Self {
40305        self.inner.max_buffer_size = value;
40306        self
40307    }
40308}
40309impl<'a> core::ops::Deref for PhysicalDeviceVulkan13PropertiesBuilder<'a> {
40310    type Target = PhysicalDeviceVulkan13Properties;
40311    #[inline]
40312    fn deref(&self) -> &Self::Target {
40313        &self.inner
40314    }
40315}
40316impl<'a> core::ops::DerefMut for PhysicalDeviceVulkan13PropertiesBuilder<'a> {
40317    #[inline]
40318    fn deref_mut(&mut self) -> &mut Self::Target {
40319        &mut self.inner
40320    }
40321}
40322///Builder for [`PhysicalDeviceVulkan14Features`] with lifetime-tied pNext safety.
40323pub struct PhysicalDeviceVulkan14FeaturesBuilder<'a> {
40324    inner: PhysicalDeviceVulkan14Features,
40325    _marker: core::marker::PhantomData<&'a ()>,
40326}
40327impl PhysicalDeviceVulkan14Features {
40328    /// Start building this struct; `s_type` is already set to the correct variant.
40329    #[inline]
40330    pub fn builder<'a>() -> PhysicalDeviceVulkan14FeaturesBuilder<'a> {
40331        PhysicalDeviceVulkan14FeaturesBuilder {
40332            inner: PhysicalDeviceVulkan14Features {
40333                s_type: StructureType::from_raw(55i32),
40334                ..Default::default()
40335            },
40336            _marker: core::marker::PhantomData,
40337        }
40338    }
40339}
40340impl<'a> PhysicalDeviceVulkan14FeaturesBuilder<'a> {
40341    #[inline]
40342    pub fn global_priority_query(mut self, value: bool) -> Self {
40343        self.inner.global_priority_query = value as u32;
40344        self
40345    }
40346    #[inline]
40347    pub fn shader_subgroup_rotate(mut self, value: bool) -> Self {
40348        self.inner.shader_subgroup_rotate = value as u32;
40349        self
40350    }
40351    #[inline]
40352    pub fn shader_subgroup_rotate_clustered(mut self, value: bool) -> Self {
40353        self.inner.shader_subgroup_rotate_clustered = value as u32;
40354        self
40355    }
40356    #[inline]
40357    pub fn shader_float_controls2(mut self, value: bool) -> Self {
40358        self.inner.shader_float_controls2 = value as u32;
40359        self
40360    }
40361    #[inline]
40362    pub fn shader_expect_assume(mut self, value: bool) -> Self {
40363        self.inner.shader_expect_assume = value as u32;
40364        self
40365    }
40366    #[inline]
40367    pub fn rectangular_lines(mut self, value: bool) -> Self {
40368        self.inner.rectangular_lines = value as u32;
40369        self
40370    }
40371    #[inline]
40372    pub fn bresenham_lines(mut self, value: bool) -> Self {
40373        self.inner.bresenham_lines = value as u32;
40374        self
40375    }
40376    #[inline]
40377    pub fn smooth_lines(mut self, value: bool) -> Self {
40378        self.inner.smooth_lines = value as u32;
40379        self
40380    }
40381    #[inline]
40382    pub fn stippled_rectangular_lines(mut self, value: bool) -> Self {
40383        self.inner.stippled_rectangular_lines = value as u32;
40384        self
40385    }
40386    #[inline]
40387    pub fn stippled_bresenham_lines(mut self, value: bool) -> Self {
40388        self.inner.stippled_bresenham_lines = value as u32;
40389        self
40390    }
40391    #[inline]
40392    pub fn stippled_smooth_lines(mut self, value: bool) -> Self {
40393        self.inner.stippled_smooth_lines = value as u32;
40394        self
40395    }
40396    #[inline]
40397    pub fn vertex_attribute_instance_rate_divisor(mut self, value: bool) -> Self {
40398        self.inner.vertex_attribute_instance_rate_divisor = value as u32;
40399        self
40400    }
40401    #[inline]
40402    pub fn vertex_attribute_instance_rate_zero_divisor(mut self, value: bool) -> Self {
40403        self.inner.vertex_attribute_instance_rate_zero_divisor = value as u32;
40404        self
40405    }
40406    #[inline]
40407    pub fn index_type_uint8(mut self, value: bool) -> Self {
40408        self.inner.index_type_uint8 = value as u32;
40409        self
40410    }
40411    #[inline]
40412    pub fn dynamic_rendering_local_read(mut self, value: bool) -> Self {
40413        self.inner.dynamic_rendering_local_read = value as u32;
40414        self
40415    }
40416    #[inline]
40417    pub fn maintenance5(mut self, value: bool) -> Self {
40418        self.inner.maintenance5 = value as u32;
40419        self
40420    }
40421    #[inline]
40422    pub fn maintenance6(mut self, value: bool) -> Self {
40423        self.inner.maintenance6 = value as u32;
40424        self
40425    }
40426    #[inline]
40427    pub fn pipeline_protected_access(mut self, value: bool) -> Self {
40428        self.inner.pipeline_protected_access = value as u32;
40429        self
40430    }
40431    #[inline]
40432    pub fn pipeline_robustness(mut self, value: bool) -> Self {
40433        self.inner.pipeline_robustness = value as u32;
40434        self
40435    }
40436    #[inline]
40437    pub fn host_image_copy(mut self, value: bool) -> Self {
40438        self.inner.host_image_copy = value as u32;
40439        self
40440    }
40441    #[inline]
40442    pub fn push_descriptor(mut self, value: bool) -> Self {
40443        self.inner.push_descriptor = value as u32;
40444        self
40445    }
40446    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceVulkan14Features`]'s **Extended By** section for valid types.
40447    #[inline]
40448    pub fn push_next<T: ExtendsPhysicalDeviceVulkan14Features>(
40449        mut self,
40450        next: &'a mut T,
40451    ) -> Self {
40452        unsafe {
40453            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
40454            (*next_ptr).p_next = self.inner.p_next as *mut _;
40455            self.inner.p_next = <*mut BaseOutStructure>::cast::<
40456                core::ffi::c_void,
40457            >(next_ptr);
40458        }
40459        self
40460    }
40461}
40462impl<'a> core::ops::Deref for PhysicalDeviceVulkan14FeaturesBuilder<'a> {
40463    type Target = PhysicalDeviceVulkan14Features;
40464    #[inline]
40465    fn deref(&self) -> &Self::Target {
40466        &self.inner
40467    }
40468}
40469impl<'a> core::ops::DerefMut for PhysicalDeviceVulkan14FeaturesBuilder<'a> {
40470    #[inline]
40471    fn deref_mut(&mut self) -> &mut Self::Target {
40472        &mut self.inner
40473    }
40474}
40475///Builder for [`PhysicalDeviceVulkan14Properties`] with lifetime-tied pNext safety.
40476pub struct PhysicalDeviceVulkan14PropertiesBuilder<'a> {
40477    inner: PhysicalDeviceVulkan14Properties,
40478    _marker: core::marker::PhantomData<&'a ()>,
40479}
40480impl PhysicalDeviceVulkan14Properties {
40481    /// Start building this struct; `s_type` is already set to the correct variant.
40482    #[inline]
40483    pub fn builder<'a>() -> PhysicalDeviceVulkan14PropertiesBuilder<'a> {
40484        PhysicalDeviceVulkan14PropertiesBuilder {
40485            inner: PhysicalDeviceVulkan14Properties {
40486                s_type: StructureType::from_raw(56i32),
40487                ..Default::default()
40488            },
40489            _marker: core::marker::PhantomData,
40490        }
40491    }
40492}
40493impl<'a> PhysicalDeviceVulkan14PropertiesBuilder<'a> {
40494    #[inline]
40495    pub fn line_sub_pixel_precision_bits(mut self, value: u32) -> Self {
40496        self.inner.line_sub_pixel_precision_bits = value;
40497        self
40498    }
40499    #[inline]
40500    pub fn max_vertex_attrib_divisor(mut self, value: u32) -> Self {
40501        self.inner.max_vertex_attrib_divisor = value;
40502        self
40503    }
40504    #[inline]
40505    pub fn supports_non_zero_first_instance(mut self, value: bool) -> Self {
40506        self.inner.supports_non_zero_first_instance = value as u32;
40507        self
40508    }
40509    #[inline]
40510    pub fn max_push_descriptors(mut self, value: u32) -> Self {
40511        self.inner.max_push_descriptors = value;
40512        self
40513    }
40514    #[inline]
40515    pub fn dynamic_rendering_local_read_depth_stencil_attachments(
40516        mut self,
40517        value: bool,
40518    ) -> Self {
40519        self.inner.dynamic_rendering_local_read_depth_stencil_attachments = value as u32;
40520        self
40521    }
40522    #[inline]
40523    pub fn dynamic_rendering_local_read_multisampled_attachments(
40524        mut self,
40525        value: bool,
40526    ) -> Self {
40527        self.inner.dynamic_rendering_local_read_multisampled_attachments = value as u32;
40528        self
40529    }
40530    #[inline]
40531    pub fn early_fragment_multisample_coverage_after_sample_counting(
40532        mut self,
40533        value: bool,
40534    ) -> Self {
40535        self.inner.early_fragment_multisample_coverage_after_sample_counting = value
40536            as u32;
40537        self
40538    }
40539    #[inline]
40540    pub fn early_fragment_sample_mask_test_before_sample_counting(
40541        mut self,
40542        value: bool,
40543    ) -> Self {
40544        self.inner.early_fragment_sample_mask_test_before_sample_counting = value as u32;
40545        self
40546    }
40547    #[inline]
40548    pub fn depth_stencil_swizzle_one_support(mut self, value: bool) -> Self {
40549        self.inner.depth_stencil_swizzle_one_support = value as u32;
40550        self
40551    }
40552    #[inline]
40553    pub fn polygon_mode_point_size(mut self, value: bool) -> Self {
40554        self.inner.polygon_mode_point_size = value as u32;
40555        self
40556    }
40557    #[inline]
40558    pub fn non_strict_single_pixel_wide_lines_use_parallelogram(
40559        mut self,
40560        value: bool,
40561    ) -> Self {
40562        self.inner.non_strict_single_pixel_wide_lines_use_parallelogram = value as u32;
40563        self
40564    }
40565    #[inline]
40566    pub fn non_strict_wide_lines_use_parallelogram(mut self, value: bool) -> Self {
40567        self.inner.non_strict_wide_lines_use_parallelogram = value as u32;
40568        self
40569    }
40570    #[inline]
40571    pub fn block_texel_view_compatible_multiple_layers(mut self, value: bool) -> Self {
40572        self.inner.block_texel_view_compatible_multiple_layers = value as u32;
40573        self
40574    }
40575    #[inline]
40576    pub fn max_combined_image_sampler_descriptor_count(mut self, value: u32) -> Self {
40577        self.inner.max_combined_image_sampler_descriptor_count = value;
40578        self
40579    }
40580    #[inline]
40581    pub fn fragment_shading_rate_clamp_combiner_inputs(mut self, value: bool) -> Self {
40582        self.inner.fragment_shading_rate_clamp_combiner_inputs = value as u32;
40583        self
40584    }
40585    #[inline]
40586    pub fn default_robustness_storage_buffers(
40587        mut self,
40588        value: PipelineRobustnessBufferBehavior,
40589    ) -> Self {
40590        self.inner.default_robustness_storage_buffers = value;
40591        self
40592    }
40593    #[inline]
40594    pub fn default_robustness_uniform_buffers(
40595        mut self,
40596        value: PipelineRobustnessBufferBehavior,
40597    ) -> Self {
40598        self.inner.default_robustness_uniform_buffers = value;
40599        self
40600    }
40601    #[inline]
40602    pub fn default_robustness_vertex_inputs(
40603        mut self,
40604        value: PipelineRobustnessBufferBehavior,
40605    ) -> Self {
40606        self.inner.default_robustness_vertex_inputs = value;
40607        self
40608    }
40609    #[inline]
40610    pub fn default_robustness_images(
40611        mut self,
40612        value: PipelineRobustnessImageBehavior,
40613    ) -> Self {
40614        self.inner.default_robustness_images = value;
40615        self
40616    }
40617    #[inline]
40618    pub fn copy_src_layout_count(mut self, value: u32) -> Self {
40619        self.inner.copy_src_layout_count = value;
40620        self
40621    }
40622    #[inline]
40623    pub fn copy_src_layouts(mut self, slice: &'a mut [ImageLayout]) -> Self {
40624        self.inner.copy_src_layout_count = slice.len() as u32;
40625        self.inner.p_copy_src_layouts = slice.as_mut_ptr();
40626        self
40627    }
40628    #[inline]
40629    pub fn copy_dst_layout_count(mut self, value: u32) -> Self {
40630        self.inner.copy_dst_layout_count = value;
40631        self
40632    }
40633    #[inline]
40634    pub fn copy_dst_layouts(mut self, slice: &'a mut [ImageLayout]) -> Self {
40635        self.inner.copy_dst_layout_count = slice.len() as u32;
40636        self.inner.p_copy_dst_layouts = slice.as_mut_ptr();
40637        self
40638    }
40639    #[inline]
40640    pub fn optimal_tiling_layout_uuid(
40641        mut self,
40642        value: [u8; UUID_SIZE as usize],
40643    ) -> Self {
40644        self.inner.optimal_tiling_layout_uuid = value;
40645        self
40646    }
40647    #[inline]
40648    pub fn identical_memory_type_requirements(mut self, value: bool) -> Self {
40649        self.inner.identical_memory_type_requirements = value as u32;
40650        self
40651    }
40652}
40653impl<'a> core::ops::Deref for PhysicalDeviceVulkan14PropertiesBuilder<'a> {
40654    type Target = PhysicalDeviceVulkan14Properties;
40655    #[inline]
40656    fn deref(&self) -> &Self::Target {
40657        &self.inner
40658    }
40659}
40660impl<'a> core::ops::DerefMut for PhysicalDeviceVulkan14PropertiesBuilder<'a> {
40661    #[inline]
40662    fn deref_mut(&mut self) -> &mut Self::Target {
40663        &mut self.inner
40664    }
40665}
40666///Builder for [`PipelineCompilerControlCreateInfoAMD`] with lifetime-tied pNext safety.
40667pub struct PipelineCompilerControlCreateInfoAMDBuilder<'a> {
40668    inner: PipelineCompilerControlCreateInfoAMD,
40669    _marker: core::marker::PhantomData<&'a ()>,
40670}
40671impl PipelineCompilerControlCreateInfoAMD {
40672    /// Start building this struct; `s_type` is already set to the correct variant.
40673    #[inline]
40674    pub fn builder<'a>() -> PipelineCompilerControlCreateInfoAMDBuilder<'a> {
40675        PipelineCompilerControlCreateInfoAMDBuilder {
40676            inner: PipelineCompilerControlCreateInfoAMD {
40677                s_type: StructureType::from_raw(1000183000i32),
40678                ..Default::default()
40679            },
40680            _marker: core::marker::PhantomData,
40681        }
40682    }
40683}
40684impl<'a> PipelineCompilerControlCreateInfoAMDBuilder<'a> {
40685    #[inline]
40686    pub fn compiler_control_flags(
40687        mut self,
40688        value: PipelineCompilerControlFlagsAMD,
40689    ) -> Self {
40690        self.inner.compiler_control_flags = value;
40691        self
40692    }
40693    ///Prepend a struct to the pNext chain. See [`PipelineCompilerControlCreateInfoAMD`]'s **Extended By** section for valid types.
40694    #[inline]
40695    pub fn push_next<T: ExtendsPipelineCompilerControlCreateInfoAMD>(
40696        mut self,
40697        next: &'a mut T,
40698    ) -> Self {
40699        unsafe {
40700            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
40701            (*next_ptr).p_next = self.inner.p_next as *mut _;
40702            self.inner.p_next = <*mut BaseOutStructure>::cast::<
40703                core::ffi::c_void,
40704            >(next_ptr) as *const _;
40705        }
40706        self
40707    }
40708}
40709impl<'a> core::ops::Deref for PipelineCompilerControlCreateInfoAMDBuilder<'a> {
40710    type Target = PipelineCompilerControlCreateInfoAMD;
40711    #[inline]
40712    fn deref(&self) -> &Self::Target {
40713        &self.inner
40714    }
40715}
40716impl<'a> core::ops::DerefMut for PipelineCompilerControlCreateInfoAMDBuilder<'a> {
40717    #[inline]
40718    fn deref_mut(&mut self) -> &mut Self::Target {
40719        &mut self.inner
40720    }
40721}
40722///Builder for [`PhysicalDeviceCoherentMemoryFeaturesAMD`] with lifetime-tied pNext safety.
40723pub struct PhysicalDeviceCoherentMemoryFeaturesAMDBuilder<'a> {
40724    inner: PhysicalDeviceCoherentMemoryFeaturesAMD,
40725    _marker: core::marker::PhantomData<&'a ()>,
40726}
40727impl PhysicalDeviceCoherentMemoryFeaturesAMD {
40728    /// Start building this struct; `s_type` is already set to the correct variant.
40729    #[inline]
40730    pub fn builder<'a>() -> PhysicalDeviceCoherentMemoryFeaturesAMDBuilder<'a> {
40731        PhysicalDeviceCoherentMemoryFeaturesAMDBuilder {
40732            inner: PhysicalDeviceCoherentMemoryFeaturesAMD {
40733                s_type: StructureType::from_raw(1000229000i32),
40734                ..Default::default()
40735            },
40736            _marker: core::marker::PhantomData,
40737        }
40738    }
40739}
40740impl<'a> PhysicalDeviceCoherentMemoryFeaturesAMDBuilder<'a> {
40741    #[inline]
40742    pub fn device_coherent_memory(mut self, value: bool) -> Self {
40743        self.inner.device_coherent_memory = value as u32;
40744        self
40745    }
40746    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceCoherentMemoryFeaturesAMD`]'s **Extended By** section for valid types.
40747    #[inline]
40748    pub fn push_next<T: ExtendsPhysicalDeviceCoherentMemoryFeaturesAMD>(
40749        mut self,
40750        next: &'a mut T,
40751    ) -> Self {
40752        unsafe {
40753            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
40754            (*next_ptr).p_next = self.inner.p_next as *mut _;
40755            self.inner.p_next = <*mut BaseOutStructure>::cast::<
40756                core::ffi::c_void,
40757            >(next_ptr);
40758        }
40759        self
40760    }
40761}
40762impl<'a> core::ops::Deref for PhysicalDeviceCoherentMemoryFeaturesAMDBuilder<'a> {
40763    type Target = PhysicalDeviceCoherentMemoryFeaturesAMD;
40764    #[inline]
40765    fn deref(&self) -> &Self::Target {
40766        &self.inner
40767    }
40768}
40769impl<'a> core::ops::DerefMut for PhysicalDeviceCoherentMemoryFeaturesAMDBuilder<'a> {
40770    #[inline]
40771    fn deref_mut(&mut self) -> &mut Self::Target {
40772        &mut self.inner
40773    }
40774}
40775///Builder for [`FaultData`] with lifetime-tied pNext safety.
40776pub struct FaultDataBuilder<'a> {
40777    inner: FaultData,
40778    _marker: core::marker::PhantomData<&'a ()>,
40779}
40780impl FaultData {
40781    /// Start building this struct; `s_type` is already set to the correct variant.
40782    #[inline]
40783    pub fn builder<'a>() -> FaultDataBuilder<'a> {
40784        FaultDataBuilder {
40785            inner: FaultData {
40786                s_type: StructureType::from_raw(1000298007i32),
40787                ..Default::default()
40788            },
40789            _marker: core::marker::PhantomData,
40790        }
40791    }
40792}
40793impl<'a> FaultDataBuilder<'a> {
40794    #[inline]
40795    pub fn fault_level(mut self, value: FaultLevel) -> Self {
40796        self.inner.fault_level = value;
40797        self
40798    }
40799    #[inline]
40800    pub fn fault_type(mut self, value: FaultType) -> Self {
40801        self.inner.fault_type = value;
40802        self
40803    }
40804}
40805impl<'a> core::ops::Deref for FaultDataBuilder<'a> {
40806    type Target = FaultData;
40807    #[inline]
40808    fn deref(&self) -> &Self::Target {
40809        &self.inner
40810    }
40811}
40812impl<'a> core::ops::DerefMut for FaultDataBuilder<'a> {
40813    #[inline]
40814    fn deref_mut(&mut self) -> &mut Self::Target {
40815        &mut self.inner
40816    }
40817}
40818///Builder for [`FaultCallbackInfo`] with lifetime-tied pNext safety.
40819pub struct FaultCallbackInfoBuilder<'a> {
40820    inner: FaultCallbackInfo,
40821    _marker: core::marker::PhantomData<&'a ()>,
40822}
40823impl FaultCallbackInfo {
40824    /// Start building this struct; `s_type` is already set to the correct variant.
40825    #[inline]
40826    pub fn builder<'a>() -> FaultCallbackInfoBuilder<'a> {
40827        FaultCallbackInfoBuilder {
40828            inner: FaultCallbackInfo {
40829                s_type: StructureType::from_raw(1000298008i32),
40830                ..Default::default()
40831            },
40832            _marker: core::marker::PhantomData,
40833        }
40834    }
40835}
40836impl<'a> FaultCallbackInfoBuilder<'a> {
40837    #[inline]
40838    pub fn fault_count(mut self, value: u32) -> Self {
40839        self.inner.fault_count = value;
40840        self
40841    }
40842    #[inline]
40843    pub fn faults(mut self, slice: &'a mut [FaultData]) -> Self {
40844        self.inner.fault_count = slice.len() as u32;
40845        self.inner.p_faults = slice.as_mut_ptr();
40846        self
40847    }
40848    #[inline]
40849    pub fn pfn_fault_callback(mut self, value: PFN_vkFaultCallbackFunction) -> Self {
40850        self.inner.pfn_fault_callback = value;
40851        self
40852    }
40853    ///Prepend a struct to the pNext chain. See [`FaultCallbackInfo`]'s **Extended By** section for valid types.
40854    #[inline]
40855    pub fn push_next<T: ExtendsFaultCallbackInfo>(mut self, next: &'a mut T) -> Self {
40856        unsafe {
40857            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
40858            (*next_ptr).p_next = self.inner.p_next as *mut _;
40859            self.inner.p_next = <*mut BaseOutStructure>::cast::<
40860                core::ffi::c_void,
40861            >(next_ptr) as *const _;
40862        }
40863        self
40864    }
40865}
40866impl<'a> core::ops::Deref for FaultCallbackInfoBuilder<'a> {
40867    type Target = FaultCallbackInfo;
40868    #[inline]
40869    fn deref(&self) -> &Self::Target {
40870        &self.inner
40871    }
40872}
40873impl<'a> core::ops::DerefMut for FaultCallbackInfoBuilder<'a> {
40874    #[inline]
40875    fn deref_mut(&mut self) -> &mut Self::Target {
40876        &mut self.inner
40877    }
40878}
40879///Builder for [`PhysicalDeviceToolProperties`] with lifetime-tied pNext safety.
40880pub struct PhysicalDeviceToolPropertiesBuilder<'a> {
40881    inner: PhysicalDeviceToolProperties,
40882    _marker: core::marker::PhantomData<&'a ()>,
40883}
40884impl PhysicalDeviceToolProperties {
40885    /// Start building this struct; `s_type` is already set to the correct variant.
40886    #[inline]
40887    pub fn builder<'a>() -> PhysicalDeviceToolPropertiesBuilder<'a> {
40888        PhysicalDeviceToolPropertiesBuilder {
40889            inner: PhysicalDeviceToolProperties {
40890                s_type: StructureType::from_raw(1000245000i32),
40891                ..Default::default()
40892            },
40893            _marker: core::marker::PhantomData,
40894        }
40895    }
40896}
40897impl<'a> PhysicalDeviceToolPropertiesBuilder<'a> {
40898    #[inline]
40899    pub fn name(
40900        mut self,
40901        value: crate::StringArray<{ MAX_EXTENSION_NAME_SIZE as usize }>,
40902    ) -> Self {
40903        self.inner.name = value;
40904        self
40905    }
40906    #[inline]
40907    pub fn version(
40908        mut self,
40909        value: crate::StringArray<{ MAX_EXTENSION_NAME_SIZE as usize }>,
40910    ) -> Self {
40911        self.inner.version = value;
40912        self
40913    }
40914    #[inline]
40915    pub fn purposes(mut self, value: ToolPurposeFlags) -> Self {
40916        self.inner.purposes = value;
40917        self
40918    }
40919    #[inline]
40920    pub fn description(
40921        mut self,
40922        value: crate::StringArray<{ MAX_DESCRIPTION_SIZE as usize }>,
40923    ) -> Self {
40924        self.inner.description = value;
40925        self
40926    }
40927    #[inline]
40928    pub fn layer(
40929        mut self,
40930        value: crate::StringArray<{ MAX_EXTENSION_NAME_SIZE as usize }>,
40931    ) -> Self {
40932        self.inner.layer = value;
40933        self
40934    }
40935}
40936impl<'a> core::ops::Deref for PhysicalDeviceToolPropertiesBuilder<'a> {
40937    type Target = PhysicalDeviceToolProperties;
40938    #[inline]
40939    fn deref(&self) -> &Self::Target {
40940        &self.inner
40941    }
40942}
40943impl<'a> core::ops::DerefMut for PhysicalDeviceToolPropertiesBuilder<'a> {
40944    #[inline]
40945    fn deref_mut(&mut self) -> &mut Self::Target {
40946        &mut self.inner
40947    }
40948}
40949///Builder for [`SamplerCustomBorderColorCreateInfoEXT`] with lifetime-tied pNext safety.
40950pub struct SamplerCustomBorderColorCreateInfoEXTBuilder<'a> {
40951    inner: SamplerCustomBorderColorCreateInfoEXT,
40952    _marker: core::marker::PhantomData<&'a ()>,
40953}
40954impl SamplerCustomBorderColorCreateInfoEXT {
40955    /// Start building this struct; `s_type` is already set to the correct variant.
40956    #[inline]
40957    pub fn builder<'a>() -> SamplerCustomBorderColorCreateInfoEXTBuilder<'a> {
40958        SamplerCustomBorderColorCreateInfoEXTBuilder {
40959            inner: SamplerCustomBorderColorCreateInfoEXT {
40960                s_type: StructureType::from_raw(1000287000i32),
40961                ..Default::default()
40962            },
40963            _marker: core::marker::PhantomData,
40964        }
40965    }
40966}
40967impl<'a> SamplerCustomBorderColorCreateInfoEXTBuilder<'a> {
40968    #[inline]
40969    pub fn custom_border_color(mut self, value: ClearColorValue) -> Self {
40970        self.inner.custom_border_color = value;
40971        self
40972    }
40973    #[inline]
40974    pub fn format(mut self, value: Format) -> Self {
40975        self.inner.format = value;
40976        self
40977    }
40978    ///Prepend a struct to the pNext chain. See [`SamplerCustomBorderColorCreateInfoEXT`]'s **Extended By** section for valid types.
40979    #[inline]
40980    pub fn push_next<T: ExtendsSamplerCustomBorderColorCreateInfoEXT>(
40981        mut self,
40982        next: &'a mut T,
40983    ) -> Self {
40984        unsafe {
40985            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
40986            (*next_ptr).p_next = self.inner.p_next as *mut _;
40987            self.inner.p_next = <*mut BaseOutStructure>::cast::<
40988                core::ffi::c_void,
40989            >(next_ptr) as *const _;
40990        }
40991        self
40992    }
40993}
40994impl<'a> core::ops::Deref for SamplerCustomBorderColorCreateInfoEXTBuilder<'a> {
40995    type Target = SamplerCustomBorderColorCreateInfoEXT;
40996    #[inline]
40997    fn deref(&self) -> &Self::Target {
40998        &self.inner
40999    }
41000}
41001impl<'a> core::ops::DerefMut for SamplerCustomBorderColorCreateInfoEXTBuilder<'a> {
41002    #[inline]
41003    fn deref_mut(&mut self) -> &mut Self::Target {
41004        &mut self.inner
41005    }
41006}
41007///Builder for [`PhysicalDeviceCustomBorderColorPropertiesEXT`] with lifetime-tied pNext safety.
41008pub struct PhysicalDeviceCustomBorderColorPropertiesEXTBuilder<'a> {
41009    inner: PhysicalDeviceCustomBorderColorPropertiesEXT,
41010    _marker: core::marker::PhantomData<&'a ()>,
41011}
41012impl PhysicalDeviceCustomBorderColorPropertiesEXT {
41013    /// Start building this struct; `s_type` is already set to the correct variant.
41014    #[inline]
41015    pub fn builder<'a>() -> PhysicalDeviceCustomBorderColorPropertiesEXTBuilder<'a> {
41016        PhysicalDeviceCustomBorderColorPropertiesEXTBuilder {
41017            inner: PhysicalDeviceCustomBorderColorPropertiesEXT {
41018                s_type: StructureType::from_raw(1000287001i32),
41019                ..Default::default()
41020            },
41021            _marker: core::marker::PhantomData,
41022        }
41023    }
41024}
41025impl<'a> PhysicalDeviceCustomBorderColorPropertiesEXTBuilder<'a> {
41026    #[inline]
41027    pub fn max_custom_border_color_samplers(mut self, value: u32) -> Self {
41028        self.inner.max_custom_border_color_samplers = value;
41029        self
41030    }
41031}
41032impl<'a> core::ops::Deref for PhysicalDeviceCustomBorderColorPropertiesEXTBuilder<'a> {
41033    type Target = PhysicalDeviceCustomBorderColorPropertiesEXT;
41034    #[inline]
41035    fn deref(&self) -> &Self::Target {
41036        &self.inner
41037    }
41038}
41039impl<'a> core::ops::DerefMut
41040for PhysicalDeviceCustomBorderColorPropertiesEXTBuilder<'a> {
41041    #[inline]
41042    fn deref_mut(&mut self) -> &mut Self::Target {
41043        &mut self.inner
41044    }
41045}
41046///Builder for [`PhysicalDeviceCustomBorderColorFeaturesEXT`] with lifetime-tied pNext safety.
41047pub struct PhysicalDeviceCustomBorderColorFeaturesEXTBuilder<'a> {
41048    inner: PhysicalDeviceCustomBorderColorFeaturesEXT,
41049    _marker: core::marker::PhantomData<&'a ()>,
41050}
41051impl PhysicalDeviceCustomBorderColorFeaturesEXT {
41052    /// Start building this struct; `s_type` is already set to the correct variant.
41053    #[inline]
41054    pub fn builder<'a>() -> PhysicalDeviceCustomBorderColorFeaturesEXTBuilder<'a> {
41055        PhysicalDeviceCustomBorderColorFeaturesEXTBuilder {
41056            inner: PhysicalDeviceCustomBorderColorFeaturesEXT {
41057                s_type: StructureType::from_raw(1000287002i32),
41058                ..Default::default()
41059            },
41060            _marker: core::marker::PhantomData,
41061        }
41062    }
41063}
41064impl<'a> PhysicalDeviceCustomBorderColorFeaturesEXTBuilder<'a> {
41065    #[inline]
41066    pub fn custom_border_colors(mut self, value: bool) -> Self {
41067        self.inner.custom_border_colors = value as u32;
41068        self
41069    }
41070    #[inline]
41071    pub fn custom_border_color_without_format(mut self, value: bool) -> Self {
41072        self.inner.custom_border_color_without_format = value as u32;
41073        self
41074    }
41075    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceCustomBorderColorFeaturesEXT`]'s **Extended By** section for valid types.
41076    #[inline]
41077    pub fn push_next<T: ExtendsPhysicalDeviceCustomBorderColorFeaturesEXT>(
41078        mut self,
41079        next: &'a mut T,
41080    ) -> Self {
41081        unsafe {
41082            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
41083            (*next_ptr).p_next = self.inner.p_next as *mut _;
41084            self.inner.p_next = <*mut BaseOutStructure>::cast::<
41085                core::ffi::c_void,
41086            >(next_ptr);
41087        }
41088        self
41089    }
41090}
41091impl<'a> core::ops::Deref for PhysicalDeviceCustomBorderColorFeaturesEXTBuilder<'a> {
41092    type Target = PhysicalDeviceCustomBorderColorFeaturesEXT;
41093    #[inline]
41094    fn deref(&self) -> &Self::Target {
41095        &self.inner
41096    }
41097}
41098impl<'a> core::ops::DerefMut for PhysicalDeviceCustomBorderColorFeaturesEXTBuilder<'a> {
41099    #[inline]
41100    fn deref_mut(&mut self) -> &mut Self::Target {
41101        &mut self.inner
41102    }
41103}
41104///Builder for [`SamplerBorderColorComponentMappingCreateInfoEXT`] with lifetime-tied pNext safety.
41105pub struct SamplerBorderColorComponentMappingCreateInfoEXTBuilder<'a> {
41106    inner: SamplerBorderColorComponentMappingCreateInfoEXT,
41107    _marker: core::marker::PhantomData<&'a ()>,
41108}
41109impl SamplerBorderColorComponentMappingCreateInfoEXT {
41110    /// Start building this struct; `s_type` is already set to the correct variant.
41111    #[inline]
41112    pub fn builder<'a>() -> SamplerBorderColorComponentMappingCreateInfoEXTBuilder<'a> {
41113        SamplerBorderColorComponentMappingCreateInfoEXTBuilder {
41114            inner: SamplerBorderColorComponentMappingCreateInfoEXT {
41115                s_type: StructureType::from_raw(1000411001i32),
41116                ..Default::default()
41117            },
41118            _marker: core::marker::PhantomData,
41119        }
41120    }
41121}
41122impl<'a> SamplerBorderColorComponentMappingCreateInfoEXTBuilder<'a> {
41123    #[inline]
41124    pub fn components(mut self, value: ComponentMapping) -> Self {
41125        self.inner.components = value;
41126        self
41127    }
41128    #[inline]
41129    pub fn srgb(mut self, value: bool) -> Self {
41130        self.inner.srgb = value as u32;
41131        self
41132    }
41133    ///Prepend a struct to the pNext chain. See [`SamplerBorderColorComponentMappingCreateInfoEXT`]'s **Extended By** section for valid types.
41134    #[inline]
41135    pub fn push_next<T: ExtendsSamplerBorderColorComponentMappingCreateInfoEXT>(
41136        mut self,
41137        next: &'a mut T,
41138    ) -> Self {
41139        unsafe {
41140            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
41141            (*next_ptr).p_next = self.inner.p_next as *mut _;
41142            self.inner.p_next = <*mut BaseOutStructure>::cast::<
41143                core::ffi::c_void,
41144            >(next_ptr) as *const _;
41145        }
41146        self
41147    }
41148}
41149impl<'a> core::ops::Deref
41150for SamplerBorderColorComponentMappingCreateInfoEXTBuilder<'a> {
41151    type Target = SamplerBorderColorComponentMappingCreateInfoEXT;
41152    #[inline]
41153    fn deref(&self) -> &Self::Target {
41154        &self.inner
41155    }
41156}
41157impl<'a> core::ops::DerefMut
41158for SamplerBorderColorComponentMappingCreateInfoEXTBuilder<'a> {
41159    #[inline]
41160    fn deref_mut(&mut self) -> &mut Self::Target {
41161        &mut self.inner
41162    }
41163}
41164///Builder for [`PhysicalDeviceBorderColorSwizzleFeaturesEXT`] with lifetime-tied pNext safety.
41165pub struct PhysicalDeviceBorderColorSwizzleFeaturesEXTBuilder<'a> {
41166    inner: PhysicalDeviceBorderColorSwizzleFeaturesEXT,
41167    _marker: core::marker::PhantomData<&'a ()>,
41168}
41169impl PhysicalDeviceBorderColorSwizzleFeaturesEXT {
41170    /// Start building this struct; `s_type` is already set to the correct variant.
41171    #[inline]
41172    pub fn builder<'a>() -> PhysicalDeviceBorderColorSwizzleFeaturesEXTBuilder<'a> {
41173        PhysicalDeviceBorderColorSwizzleFeaturesEXTBuilder {
41174            inner: PhysicalDeviceBorderColorSwizzleFeaturesEXT {
41175                s_type: StructureType::from_raw(1000411000i32),
41176                ..Default::default()
41177            },
41178            _marker: core::marker::PhantomData,
41179        }
41180    }
41181}
41182impl<'a> PhysicalDeviceBorderColorSwizzleFeaturesEXTBuilder<'a> {
41183    #[inline]
41184    pub fn border_color_swizzle(mut self, value: bool) -> Self {
41185        self.inner.border_color_swizzle = value as u32;
41186        self
41187    }
41188    #[inline]
41189    pub fn border_color_swizzle_from_image(mut self, value: bool) -> Self {
41190        self.inner.border_color_swizzle_from_image = value as u32;
41191        self
41192    }
41193    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceBorderColorSwizzleFeaturesEXT`]'s **Extended By** section for valid types.
41194    #[inline]
41195    pub fn push_next<T: ExtendsPhysicalDeviceBorderColorSwizzleFeaturesEXT>(
41196        mut self,
41197        next: &'a mut T,
41198    ) -> Self {
41199        unsafe {
41200            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
41201            (*next_ptr).p_next = self.inner.p_next as *mut _;
41202            self.inner.p_next = <*mut BaseOutStructure>::cast::<
41203                core::ffi::c_void,
41204            >(next_ptr);
41205        }
41206        self
41207    }
41208}
41209impl<'a> core::ops::Deref for PhysicalDeviceBorderColorSwizzleFeaturesEXTBuilder<'a> {
41210    type Target = PhysicalDeviceBorderColorSwizzleFeaturesEXT;
41211    #[inline]
41212    fn deref(&self) -> &Self::Target {
41213        &self.inner
41214    }
41215}
41216impl<'a> core::ops::DerefMut for PhysicalDeviceBorderColorSwizzleFeaturesEXTBuilder<'a> {
41217    #[inline]
41218    fn deref_mut(&mut self) -> &mut Self::Target {
41219        &mut self.inner
41220    }
41221}
41222///Builder for [`AccelerationStructureGeometryTrianglesDataKHR`] with lifetime-tied pNext safety.
41223pub struct AccelerationStructureGeometryTrianglesDataKHRBuilder<'a> {
41224    inner: AccelerationStructureGeometryTrianglesDataKHR,
41225    _marker: core::marker::PhantomData<&'a ()>,
41226}
41227impl AccelerationStructureGeometryTrianglesDataKHR {
41228    /// Start building this struct; `s_type` is already set to the correct variant.
41229    #[inline]
41230    pub fn builder<'a>() -> AccelerationStructureGeometryTrianglesDataKHRBuilder<'a> {
41231        AccelerationStructureGeometryTrianglesDataKHRBuilder {
41232            inner: AccelerationStructureGeometryTrianglesDataKHR {
41233                s_type: StructureType::from_raw(1000150005i32),
41234                ..Default::default()
41235            },
41236            _marker: core::marker::PhantomData,
41237        }
41238    }
41239}
41240impl<'a> AccelerationStructureGeometryTrianglesDataKHRBuilder<'a> {
41241    #[inline]
41242    pub fn vertex_format(mut self, value: Format) -> Self {
41243        self.inner.vertex_format = value;
41244        self
41245    }
41246    #[inline]
41247    pub fn vertex_data(mut self, value: DeviceOrHostAddressConstKHR) -> Self {
41248        self.inner.vertex_data = value;
41249        self
41250    }
41251    #[inline]
41252    pub fn vertex_stride(mut self, value: u64) -> Self {
41253        self.inner.vertex_stride = value;
41254        self
41255    }
41256    #[inline]
41257    pub fn max_vertex(mut self, value: u32) -> Self {
41258        self.inner.max_vertex = value;
41259        self
41260    }
41261    #[inline]
41262    pub fn index_type(mut self, value: IndexType) -> Self {
41263        self.inner.index_type = value;
41264        self
41265    }
41266    #[inline]
41267    pub fn index_data(mut self, value: DeviceOrHostAddressConstKHR) -> Self {
41268        self.inner.index_data = value;
41269        self
41270    }
41271    #[inline]
41272    pub fn transform_data(mut self, value: DeviceOrHostAddressConstKHR) -> Self {
41273        self.inner.transform_data = value;
41274        self
41275    }
41276    ///Prepend a struct to the pNext chain. See [`AccelerationStructureGeometryTrianglesDataKHR`]'s **Extended By** section for valid types.
41277    #[inline]
41278    pub fn push_next<T: ExtendsAccelerationStructureGeometryTrianglesDataKHR>(
41279        mut self,
41280        next: &'a mut T,
41281    ) -> Self {
41282        unsafe {
41283            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
41284            (*next_ptr).p_next = self.inner.p_next as *mut _;
41285            self.inner.p_next = <*mut BaseOutStructure>::cast::<
41286                core::ffi::c_void,
41287            >(next_ptr) as *const _;
41288        }
41289        self
41290    }
41291}
41292impl<'a> core::ops::Deref for AccelerationStructureGeometryTrianglesDataKHRBuilder<'a> {
41293    type Target = AccelerationStructureGeometryTrianglesDataKHR;
41294    #[inline]
41295    fn deref(&self) -> &Self::Target {
41296        &self.inner
41297    }
41298}
41299impl<'a> core::ops::DerefMut
41300for AccelerationStructureGeometryTrianglesDataKHRBuilder<'a> {
41301    #[inline]
41302    fn deref_mut(&mut self) -> &mut Self::Target {
41303        &mut self.inner
41304    }
41305}
41306///Builder for [`AccelerationStructureGeometryAabbsDataKHR`] with lifetime-tied pNext safety.
41307pub struct AccelerationStructureGeometryAabbsDataKHRBuilder<'a> {
41308    inner: AccelerationStructureGeometryAabbsDataKHR,
41309    _marker: core::marker::PhantomData<&'a ()>,
41310}
41311impl AccelerationStructureGeometryAabbsDataKHR {
41312    /// Start building this struct; `s_type` is already set to the correct variant.
41313    #[inline]
41314    pub fn builder<'a>() -> AccelerationStructureGeometryAabbsDataKHRBuilder<'a> {
41315        AccelerationStructureGeometryAabbsDataKHRBuilder {
41316            inner: AccelerationStructureGeometryAabbsDataKHR {
41317                s_type: StructureType::from_raw(1000150003i32),
41318                ..Default::default()
41319            },
41320            _marker: core::marker::PhantomData,
41321        }
41322    }
41323}
41324impl<'a> AccelerationStructureGeometryAabbsDataKHRBuilder<'a> {
41325    #[inline]
41326    pub fn data(mut self, value: DeviceOrHostAddressConstKHR) -> Self {
41327        self.inner.data = value;
41328        self
41329    }
41330    #[inline]
41331    pub fn stride(mut self, value: u64) -> Self {
41332        self.inner.stride = value;
41333        self
41334    }
41335    ///Prepend a struct to the pNext chain. See [`AccelerationStructureGeometryAabbsDataKHR`]'s **Extended By** section for valid types.
41336    #[inline]
41337    pub fn push_next<T: ExtendsAccelerationStructureGeometryAabbsDataKHR>(
41338        mut self,
41339        next: &'a mut T,
41340    ) -> Self {
41341        unsafe {
41342            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
41343            (*next_ptr).p_next = self.inner.p_next as *mut _;
41344            self.inner.p_next = <*mut BaseOutStructure>::cast::<
41345                core::ffi::c_void,
41346            >(next_ptr) as *const _;
41347        }
41348        self
41349    }
41350}
41351impl<'a> core::ops::Deref for AccelerationStructureGeometryAabbsDataKHRBuilder<'a> {
41352    type Target = AccelerationStructureGeometryAabbsDataKHR;
41353    #[inline]
41354    fn deref(&self) -> &Self::Target {
41355        &self.inner
41356    }
41357}
41358impl<'a> core::ops::DerefMut for AccelerationStructureGeometryAabbsDataKHRBuilder<'a> {
41359    #[inline]
41360    fn deref_mut(&mut self) -> &mut Self::Target {
41361        &mut self.inner
41362    }
41363}
41364///Builder for [`AccelerationStructureGeometryInstancesDataKHR`] with lifetime-tied pNext safety.
41365pub struct AccelerationStructureGeometryInstancesDataKHRBuilder<'a> {
41366    inner: AccelerationStructureGeometryInstancesDataKHR,
41367    _marker: core::marker::PhantomData<&'a ()>,
41368}
41369impl AccelerationStructureGeometryInstancesDataKHR {
41370    /// Start building this struct; `s_type` is already set to the correct variant.
41371    #[inline]
41372    pub fn builder<'a>() -> AccelerationStructureGeometryInstancesDataKHRBuilder<'a> {
41373        AccelerationStructureGeometryInstancesDataKHRBuilder {
41374            inner: AccelerationStructureGeometryInstancesDataKHR {
41375                s_type: StructureType::from_raw(1000150004i32),
41376                ..Default::default()
41377            },
41378            _marker: core::marker::PhantomData,
41379        }
41380    }
41381}
41382impl<'a> AccelerationStructureGeometryInstancesDataKHRBuilder<'a> {
41383    #[inline]
41384    pub fn array_of_pointers(mut self, value: bool) -> Self {
41385        self.inner.array_of_pointers = value as u32;
41386        self
41387    }
41388    #[inline]
41389    pub fn data(mut self, value: DeviceOrHostAddressConstKHR) -> Self {
41390        self.inner.data = value;
41391        self
41392    }
41393    ///Prepend a struct to the pNext chain. See [`AccelerationStructureGeometryInstancesDataKHR`]'s **Extended By** section for valid types.
41394    #[inline]
41395    pub fn push_next<T: ExtendsAccelerationStructureGeometryInstancesDataKHR>(
41396        mut self,
41397        next: &'a mut T,
41398    ) -> Self {
41399        unsafe {
41400            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
41401            (*next_ptr).p_next = self.inner.p_next as *mut _;
41402            self.inner.p_next = <*mut BaseOutStructure>::cast::<
41403                core::ffi::c_void,
41404            >(next_ptr) as *const _;
41405        }
41406        self
41407    }
41408}
41409impl<'a> core::ops::Deref for AccelerationStructureGeometryInstancesDataKHRBuilder<'a> {
41410    type Target = AccelerationStructureGeometryInstancesDataKHR;
41411    #[inline]
41412    fn deref(&self) -> &Self::Target {
41413        &self.inner
41414    }
41415}
41416impl<'a> core::ops::DerefMut
41417for AccelerationStructureGeometryInstancesDataKHRBuilder<'a> {
41418    #[inline]
41419    fn deref_mut(&mut self) -> &mut Self::Target {
41420        &mut self.inner
41421    }
41422}
41423///Builder for [`AccelerationStructureGeometryLinearSweptSpheresDataNV`] with lifetime-tied pNext safety.
41424pub struct AccelerationStructureGeometryLinearSweptSpheresDataNVBuilder<'a> {
41425    inner: AccelerationStructureGeometryLinearSweptSpheresDataNV,
41426    _marker: core::marker::PhantomData<&'a ()>,
41427}
41428impl AccelerationStructureGeometryLinearSweptSpheresDataNV {
41429    /// Start building this struct; `s_type` is already set to the correct variant.
41430    #[inline]
41431    pub fn builder<'a>() -> AccelerationStructureGeometryLinearSweptSpheresDataNVBuilder<
41432        'a,
41433    > {
41434        AccelerationStructureGeometryLinearSweptSpheresDataNVBuilder {
41435            inner: AccelerationStructureGeometryLinearSweptSpheresDataNV {
41436                s_type: StructureType::from_raw(1000429009i32),
41437                ..Default::default()
41438            },
41439            _marker: core::marker::PhantomData,
41440        }
41441    }
41442}
41443impl<'a> AccelerationStructureGeometryLinearSweptSpheresDataNVBuilder<'a> {
41444    #[inline]
41445    pub fn vertex_format(mut self, value: Format) -> Self {
41446        self.inner.vertex_format = value;
41447        self
41448    }
41449    #[inline]
41450    pub fn vertex_data(mut self, value: DeviceOrHostAddressConstKHR) -> Self {
41451        self.inner.vertex_data = value;
41452        self
41453    }
41454    #[inline]
41455    pub fn vertex_stride(mut self, value: u64) -> Self {
41456        self.inner.vertex_stride = value;
41457        self
41458    }
41459    #[inline]
41460    pub fn radius_format(mut self, value: Format) -> Self {
41461        self.inner.radius_format = value;
41462        self
41463    }
41464    #[inline]
41465    pub fn radius_data(mut self, value: DeviceOrHostAddressConstKHR) -> Self {
41466        self.inner.radius_data = value;
41467        self
41468    }
41469    #[inline]
41470    pub fn radius_stride(mut self, value: u64) -> Self {
41471        self.inner.radius_stride = value;
41472        self
41473    }
41474    #[inline]
41475    pub fn index_type(mut self, value: IndexType) -> Self {
41476        self.inner.index_type = value;
41477        self
41478    }
41479    #[inline]
41480    pub fn index_data(mut self, value: DeviceOrHostAddressConstKHR) -> Self {
41481        self.inner.index_data = value;
41482        self
41483    }
41484    #[inline]
41485    pub fn index_stride(mut self, value: u64) -> Self {
41486        self.inner.index_stride = value;
41487        self
41488    }
41489    #[inline]
41490    pub fn indexing_mode(mut self, value: RayTracingLssIndexingModeNV) -> Self {
41491        self.inner.indexing_mode = value;
41492        self
41493    }
41494    #[inline]
41495    pub fn end_caps_mode(mut self, value: RayTracingLssPrimitiveEndCapsModeNV) -> Self {
41496        self.inner.end_caps_mode = value;
41497        self
41498    }
41499    ///Prepend a struct to the pNext chain. See [`AccelerationStructureGeometryLinearSweptSpheresDataNV`]'s **Extended By** section for valid types.
41500    #[inline]
41501    pub fn push_next<T: ExtendsAccelerationStructureGeometryLinearSweptSpheresDataNV>(
41502        mut self,
41503        next: &'a mut T,
41504    ) -> Self {
41505        unsafe {
41506            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
41507            (*next_ptr).p_next = self.inner.p_next as *mut _;
41508            self.inner.p_next = <*mut BaseOutStructure>::cast::<
41509                core::ffi::c_void,
41510            >(next_ptr) as *const _;
41511        }
41512        self
41513    }
41514}
41515impl<'a> core::ops::Deref
41516for AccelerationStructureGeometryLinearSweptSpheresDataNVBuilder<'a> {
41517    type Target = AccelerationStructureGeometryLinearSweptSpheresDataNV;
41518    #[inline]
41519    fn deref(&self) -> &Self::Target {
41520        &self.inner
41521    }
41522}
41523impl<'a> core::ops::DerefMut
41524for AccelerationStructureGeometryLinearSweptSpheresDataNVBuilder<'a> {
41525    #[inline]
41526    fn deref_mut(&mut self) -> &mut Self::Target {
41527        &mut self.inner
41528    }
41529}
41530///Builder for [`AccelerationStructureGeometrySpheresDataNV`] with lifetime-tied pNext safety.
41531pub struct AccelerationStructureGeometrySpheresDataNVBuilder<'a> {
41532    inner: AccelerationStructureGeometrySpheresDataNV,
41533    _marker: core::marker::PhantomData<&'a ()>,
41534}
41535impl AccelerationStructureGeometrySpheresDataNV {
41536    /// Start building this struct; `s_type` is already set to the correct variant.
41537    #[inline]
41538    pub fn builder<'a>() -> AccelerationStructureGeometrySpheresDataNVBuilder<'a> {
41539        AccelerationStructureGeometrySpheresDataNVBuilder {
41540            inner: AccelerationStructureGeometrySpheresDataNV {
41541                s_type: StructureType::from_raw(1000429010i32),
41542                ..Default::default()
41543            },
41544            _marker: core::marker::PhantomData,
41545        }
41546    }
41547}
41548impl<'a> AccelerationStructureGeometrySpheresDataNVBuilder<'a> {
41549    #[inline]
41550    pub fn vertex_format(mut self, value: Format) -> Self {
41551        self.inner.vertex_format = value;
41552        self
41553    }
41554    #[inline]
41555    pub fn vertex_data(mut self, value: DeviceOrHostAddressConstKHR) -> Self {
41556        self.inner.vertex_data = value;
41557        self
41558    }
41559    #[inline]
41560    pub fn vertex_stride(mut self, value: u64) -> Self {
41561        self.inner.vertex_stride = value;
41562        self
41563    }
41564    #[inline]
41565    pub fn radius_format(mut self, value: Format) -> Self {
41566        self.inner.radius_format = value;
41567        self
41568    }
41569    #[inline]
41570    pub fn radius_data(mut self, value: DeviceOrHostAddressConstKHR) -> Self {
41571        self.inner.radius_data = value;
41572        self
41573    }
41574    #[inline]
41575    pub fn radius_stride(mut self, value: u64) -> Self {
41576        self.inner.radius_stride = value;
41577        self
41578    }
41579    #[inline]
41580    pub fn index_type(mut self, value: IndexType) -> Self {
41581        self.inner.index_type = value;
41582        self
41583    }
41584    #[inline]
41585    pub fn index_data(mut self, value: DeviceOrHostAddressConstKHR) -> Self {
41586        self.inner.index_data = value;
41587        self
41588    }
41589    #[inline]
41590    pub fn index_stride(mut self, value: u64) -> Self {
41591        self.inner.index_stride = value;
41592        self
41593    }
41594    ///Prepend a struct to the pNext chain. See [`AccelerationStructureGeometrySpheresDataNV`]'s **Extended By** section for valid types.
41595    #[inline]
41596    pub fn push_next<T: ExtendsAccelerationStructureGeometrySpheresDataNV>(
41597        mut self,
41598        next: &'a mut T,
41599    ) -> Self {
41600        unsafe {
41601            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
41602            (*next_ptr).p_next = self.inner.p_next as *mut _;
41603            self.inner.p_next = <*mut BaseOutStructure>::cast::<
41604                core::ffi::c_void,
41605            >(next_ptr) as *const _;
41606        }
41607        self
41608    }
41609}
41610impl<'a> core::ops::Deref for AccelerationStructureGeometrySpheresDataNVBuilder<'a> {
41611    type Target = AccelerationStructureGeometrySpheresDataNV;
41612    #[inline]
41613    fn deref(&self) -> &Self::Target {
41614        &self.inner
41615    }
41616}
41617impl<'a> core::ops::DerefMut for AccelerationStructureGeometrySpheresDataNVBuilder<'a> {
41618    #[inline]
41619    fn deref_mut(&mut self) -> &mut Self::Target {
41620        &mut self.inner
41621    }
41622}
41623///Builder for [`AccelerationStructureGeometryKHR`] with lifetime-tied pNext safety.
41624pub struct AccelerationStructureGeometryKHRBuilder<'a> {
41625    inner: AccelerationStructureGeometryKHR,
41626    _marker: core::marker::PhantomData<&'a ()>,
41627}
41628impl AccelerationStructureGeometryKHR {
41629    /// Start building this struct; `s_type` is already set to the correct variant.
41630    #[inline]
41631    pub fn builder<'a>() -> AccelerationStructureGeometryKHRBuilder<'a> {
41632        AccelerationStructureGeometryKHRBuilder {
41633            inner: AccelerationStructureGeometryKHR {
41634                s_type: StructureType::from_raw(1000150006i32),
41635                ..Default::default()
41636            },
41637            _marker: core::marker::PhantomData,
41638        }
41639    }
41640}
41641impl<'a> AccelerationStructureGeometryKHRBuilder<'a> {
41642    #[inline]
41643    pub fn geometry_type(mut self, value: GeometryTypeKHR) -> Self {
41644        self.inner.geometry_type = value;
41645        self
41646    }
41647    #[inline]
41648    pub fn geometry(mut self, value: AccelerationStructureGeometryDataKHR) -> Self {
41649        self.inner.geometry = value;
41650        self
41651    }
41652    #[inline]
41653    pub fn flags(mut self, value: GeometryFlagsKHR) -> Self {
41654        self.inner.flags = value;
41655        self
41656    }
41657    ///Prepend a struct to the pNext chain. See [`AccelerationStructureGeometryKHR`]'s **Extended By** section for valid types.
41658    #[inline]
41659    pub fn push_next<T: ExtendsAccelerationStructureGeometryKHR>(
41660        mut self,
41661        next: &'a mut T,
41662    ) -> Self {
41663        unsafe {
41664            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
41665            (*next_ptr).p_next = self.inner.p_next as *mut _;
41666            self.inner.p_next = <*mut BaseOutStructure>::cast::<
41667                core::ffi::c_void,
41668            >(next_ptr) as *const _;
41669        }
41670        self
41671    }
41672}
41673impl<'a> core::ops::Deref for AccelerationStructureGeometryKHRBuilder<'a> {
41674    type Target = AccelerationStructureGeometryKHR;
41675    #[inline]
41676    fn deref(&self) -> &Self::Target {
41677        &self.inner
41678    }
41679}
41680impl<'a> core::ops::DerefMut for AccelerationStructureGeometryKHRBuilder<'a> {
41681    #[inline]
41682    fn deref_mut(&mut self) -> &mut Self::Target {
41683        &mut self.inner
41684    }
41685}
41686///Builder for [`AccelerationStructureBuildGeometryInfoKHR`] with lifetime-tied pNext safety.
41687pub struct AccelerationStructureBuildGeometryInfoKHRBuilder<'a> {
41688    inner: AccelerationStructureBuildGeometryInfoKHR,
41689    _marker: core::marker::PhantomData<&'a ()>,
41690}
41691impl AccelerationStructureBuildGeometryInfoKHR {
41692    /// Start building this struct; `s_type` is already set to the correct variant.
41693    #[inline]
41694    pub fn builder<'a>() -> AccelerationStructureBuildGeometryInfoKHRBuilder<'a> {
41695        AccelerationStructureBuildGeometryInfoKHRBuilder {
41696            inner: AccelerationStructureBuildGeometryInfoKHR {
41697                s_type: StructureType::from_raw(1000150000i32),
41698                ..Default::default()
41699            },
41700            _marker: core::marker::PhantomData,
41701        }
41702    }
41703}
41704impl<'a> AccelerationStructureBuildGeometryInfoKHRBuilder<'a> {
41705    #[inline]
41706    pub fn r#type(mut self, value: AccelerationStructureTypeKHR) -> Self {
41707        self.inner.r#type = value;
41708        self
41709    }
41710    #[inline]
41711    pub fn flags(mut self, value: BuildAccelerationStructureFlagsKHR) -> Self {
41712        self.inner.flags = value;
41713        self
41714    }
41715    #[inline]
41716    pub fn mode(mut self, value: BuildAccelerationStructureModeKHR) -> Self {
41717        self.inner.mode = value;
41718        self
41719    }
41720    #[inline]
41721    pub fn src_acceleration_structure(
41722        mut self,
41723        value: AccelerationStructureKHR,
41724    ) -> Self {
41725        self.inner.src_acceleration_structure = value;
41726        self
41727    }
41728    #[inline]
41729    pub fn dst_acceleration_structure(
41730        mut self,
41731        value: AccelerationStructureKHR,
41732    ) -> Self {
41733        self.inner.dst_acceleration_structure = value;
41734        self
41735    }
41736    #[inline]
41737    pub fn geometry_count(mut self, value: u32) -> Self {
41738        self.inner.geometry_count = value;
41739        self
41740    }
41741    #[inline]
41742    pub fn geometries(mut self, slice: &'a [AccelerationStructureGeometryKHR]) -> Self {
41743        self.inner.geometry_count = slice.len() as u32;
41744        self.inner.p_geometries = slice.as_ptr();
41745        self
41746    }
41747    #[inline]
41748    pub fn pp_geometries(
41749        mut self,
41750        value: *const *const AccelerationStructureGeometryKHR,
41751    ) -> Self {
41752        self.inner.pp_geometries = value;
41753        self
41754    }
41755    #[inline]
41756    pub fn scratch_data(mut self, value: DeviceOrHostAddressKHR) -> Self {
41757        self.inner.scratch_data = value;
41758        self
41759    }
41760    ///Prepend a struct to the pNext chain. See [`AccelerationStructureBuildGeometryInfoKHR`]'s **Extended By** section for valid types.
41761    #[inline]
41762    pub fn push_next<T: ExtendsAccelerationStructureBuildGeometryInfoKHR>(
41763        mut self,
41764        next: &'a mut T,
41765    ) -> Self {
41766        unsafe {
41767            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
41768            (*next_ptr).p_next = self.inner.p_next as *mut _;
41769            self.inner.p_next = <*mut BaseOutStructure>::cast::<
41770                core::ffi::c_void,
41771            >(next_ptr) as *const _;
41772        }
41773        self
41774    }
41775}
41776impl<'a> core::ops::Deref for AccelerationStructureBuildGeometryInfoKHRBuilder<'a> {
41777    type Target = AccelerationStructureBuildGeometryInfoKHR;
41778    #[inline]
41779    fn deref(&self) -> &Self::Target {
41780        &self.inner
41781    }
41782}
41783impl<'a> core::ops::DerefMut for AccelerationStructureBuildGeometryInfoKHRBuilder<'a> {
41784    #[inline]
41785    fn deref_mut(&mut self) -> &mut Self::Target {
41786        &mut self.inner
41787    }
41788}
41789///Builder for [`AccelerationStructureBuildRangeInfoKHR`].
41790pub struct AccelerationStructureBuildRangeInfoKHRBuilder {
41791    inner: AccelerationStructureBuildRangeInfoKHR,
41792}
41793impl AccelerationStructureBuildRangeInfoKHR {
41794    /// Start building this struct.
41795    #[inline]
41796    pub fn builder() -> AccelerationStructureBuildRangeInfoKHRBuilder {
41797        AccelerationStructureBuildRangeInfoKHRBuilder {
41798            inner: AccelerationStructureBuildRangeInfoKHR {
41799                ..Default::default()
41800            },
41801        }
41802    }
41803}
41804impl AccelerationStructureBuildRangeInfoKHRBuilder {
41805    #[inline]
41806    pub fn primitive_count(mut self, value: u32) -> Self {
41807        self.inner.primitive_count = value;
41808        self
41809    }
41810    #[inline]
41811    pub fn primitive_offset(mut self, value: u32) -> Self {
41812        self.inner.primitive_offset = value;
41813        self
41814    }
41815    #[inline]
41816    pub fn first_vertex(mut self, value: u32) -> Self {
41817        self.inner.first_vertex = value;
41818        self
41819    }
41820    #[inline]
41821    pub fn transform_offset(mut self, value: u32) -> Self {
41822        self.inner.transform_offset = value;
41823        self
41824    }
41825}
41826impl core::ops::Deref for AccelerationStructureBuildRangeInfoKHRBuilder {
41827    type Target = AccelerationStructureBuildRangeInfoKHR;
41828    #[inline]
41829    fn deref(&self) -> &Self::Target {
41830        &self.inner
41831    }
41832}
41833impl core::ops::DerefMut for AccelerationStructureBuildRangeInfoKHRBuilder {
41834    #[inline]
41835    fn deref_mut(&mut self) -> &mut Self::Target {
41836        &mut self.inner
41837    }
41838}
41839///Builder for [`AccelerationStructureCreateInfoKHR`] with lifetime-tied pNext safety.
41840pub struct AccelerationStructureCreateInfoKHRBuilder<'a> {
41841    inner: AccelerationStructureCreateInfoKHR,
41842    _marker: core::marker::PhantomData<&'a ()>,
41843}
41844impl AccelerationStructureCreateInfoKHR {
41845    /// Start building this struct; `s_type` is already set to the correct variant.
41846    #[inline]
41847    pub fn builder<'a>() -> AccelerationStructureCreateInfoKHRBuilder<'a> {
41848        AccelerationStructureCreateInfoKHRBuilder {
41849            inner: AccelerationStructureCreateInfoKHR {
41850                s_type: StructureType::from_raw(1000150017i32),
41851                ..Default::default()
41852            },
41853            _marker: core::marker::PhantomData,
41854        }
41855    }
41856}
41857impl<'a> AccelerationStructureCreateInfoKHRBuilder<'a> {
41858    #[inline]
41859    pub fn create_flags(mut self, value: AccelerationStructureCreateFlagsKHR) -> Self {
41860        self.inner.create_flags = value;
41861        self
41862    }
41863    #[inline]
41864    pub fn buffer(mut self, value: Buffer) -> Self {
41865        self.inner.buffer = value;
41866        self
41867    }
41868    #[inline]
41869    pub fn offset(mut self, value: u64) -> Self {
41870        self.inner.offset = value;
41871        self
41872    }
41873    #[inline]
41874    pub fn size(mut self, value: u64) -> Self {
41875        self.inner.size = value;
41876        self
41877    }
41878    #[inline]
41879    pub fn r#type(mut self, value: AccelerationStructureTypeKHR) -> Self {
41880        self.inner.r#type = value;
41881        self
41882    }
41883    #[inline]
41884    pub fn device_address(mut self, value: u64) -> Self {
41885        self.inner.device_address = value;
41886        self
41887    }
41888    ///Prepend a struct to the pNext chain. See [`AccelerationStructureCreateInfoKHR`]'s **Extended By** section for valid types.
41889    #[inline]
41890    pub fn push_next<T: ExtendsAccelerationStructureCreateInfoKHR>(
41891        mut self,
41892        next: &'a mut T,
41893    ) -> Self {
41894        unsafe {
41895            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
41896            (*next_ptr).p_next = self.inner.p_next as *mut _;
41897            self.inner.p_next = <*mut BaseOutStructure>::cast::<
41898                core::ffi::c_void,
41899            >(next_ptr) as *const _;
41900        }
41901        self
41902    }
41903}
41904impl<'a> core::ops::Deref for AccelerationStructureCreateInfoKHRBuilder<'a> {
41905    type Target = AccelerationStructureCreateInfoKHR;
41906    #[inline]
41907    fn deref(&self) -> &Self::Target {
41908        &self.inner
41909    }
41910}
41911impl<'a> core::ops::DerefMut for AccelerationStructureCreateInfoKHRBuilder<'a> {
41912    #[inline]
41913    fn deref_mut(&mut self) -> &mut Self::Target {
41914        &mut self.inner
41915    }
41916}
41917///Builder for [`AabbPositionsKHR`].
41918pub struct AabbPositionsKHRBuilder {
41919    inner: AabbPositionsKHR,
41920}
41921impl AabbPositionsKHR {
41922    /// Start building this struct.
41923    #[inline]
41924    pub fn builder() -> AabbPositionsKHRBuilder {
41925        AabbPositionsKHRBuilder {
41926            inner: AabbPositionsKHR {
41927                ..Default::default()
41928            },
41929        }
41930    }
41931}
41932impl AabbPositionsKHRBuilder {
41933    #[inline]
41934    pub fn min_x(mut self, value: f32) -> Self {
41935        self.inner.min_x = value;
41936        self
41937    }
41938    #[inline]
41939    pub fn min_y(mut self, value: f32) -> Self {
41940        self.inner.min_y = value;
41941        self
41942    }
41943    #[inline]
41944    pub fn min_z(mut self, value: f32) -> Self {
41945        self.inner.min_z = value;
41946        self
41947    }
41948    #[inline]
41949    pub fn max_x(mut self, value: f32) -> Self {
41950        self.inner.max_x = value;
41951        self
41952    }
41953    #[inline]
41954    pub fn max_y(mut self, value: f32) -> Self {
41955        self.inner.max_y = value;
41956        self
41957    }
41958    #[inline]
41959    pub fn max_z(mut self, value: f32) -> Self {
41960        self.inner.max_z = value;
41961        self
41962    }
41963}
41964impl core::ops::Deref for AabbPositionsKHRBuilder {
41965    type Target = AabbPositionsKHR;
41966    #[inline]
41967    fn deref(&self) -> &Self::Target {
41968        &self.inner
41969    }
41970}
41971impl core::ops::DerefMut for AabbPositionsKHRBuilder {
41972    #[inline]
41973    fn deref_mut(&mut self) -> &mut Self::Target {
41974        &mut self.inner
41975    }
41976}
41977///Builder for [`TransformMatrixKHR`].
41978pub struct TransformMatrixKHRBuilder {
41979    inner: TransformMatrixKHR,
41980}
41981impl TransformMatrixKHR {
41982    /// Start building this struct.
41983    #[inline]
41984    pub fn builder() -> TransformMatrixKHRBuilder {
41985        TransformMatrixKHRBuilder {
41986            inner: TransformMatrixKHR {
41987                ..Default::default()
41988            },
41989        }
41990    }
41991}
41992impl TransformMatrixKHRBuilder {
41993    #[inline]
41994    pub fn matrix(mut self, value: [[f32; 4usize]; 3usize]) -> Self {
41995        self.inner.matrix = value;
41996        self
41997    }
41998}
41999impl core::ops::Deref for TransformMatrixKHRBuilder {
42000    type Target = TransformMatrixKHR;
42001    #[inline]
42002    fn deref(&self) -> &Self::Target {
42003        &self.inner
42004    }
42005}
42006impl core::ops::DerefMut for TransformMatrixKHRBuilder {
42007    #[inline]
42008    fn deref_mut(&mut self) -> &mut Self::Target {
42009        &mut self.inner
42010    }
42011}
42012///Builder for [`AccelerationStructureDeviceAddressInfoKHR`] with lifetime-tied pNext safety.
42013pub struct AccelerationStructureDeviceAddressInfoKHRBuilder<'a> {
42014    inner: AccelerationStructureDeviceAddressInfoKHR,
42015    _marker: core::marker::PhantomData<&'a ()>,
42016}
42017impl AccelerationStructureDeviceAddressInfoKHR {
42018    /// Start building this struct; `s_type` is already set to the correct variant.
42019    #[inline]
42020    pub fn builder<'a>() -> AccelerationStructureDeviceAddressInfoKHRBuilder<'a> {
42021        AccelerationStructureDeviceAddressInfoKHRBuilder {
42022            inner: AccelerationStructureDeviceAddressInfoKHR {
42023                s_type: StructureType::from_raw(1000150002i32),
42024                ..Default::default()
42025            },
42026            _marker: core::marker::PhantomData,
42027        }
42028    }
42029}
42030impl<'a> AccelerationStructureDeviceAddressInfoKHRBuilder<'a> {
42031    #[inline]
42032    pub fn acceleration_structure(mut self, value: AccelerationStructureKHR) -> Self {
42033        self.inner.acceleration_structure = value;
42034        self
42035    }
42036    ///Prepend a struct to the pNext chain. See [`AccelerationStructureDeviceAddressInfoKHR`]'s **Extended By** section for valid types.
42037    #[inline]
42038    pub fn push_next<T: ExtendsAccelerationStructureDeviceAddressInfoKHR>(
42039        mut self,
42040        next: &'a mut T,
42041    ) -> Self {
42042        unsafe {
42043            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
42044            (*next_ptr).p_next = self.inner.p_next as *mut _;
42045            self.inner.p_next = <*mut BaseOutStructure>::cast::<
42046                core::ffi::c_void,
42047            >(next_ptr) as *const _;
42048        }
42049        self
42050    }
42051}
42052impl<'a> core::ops::Deref for AccelerationStructureDeviceAddressInfoKHRBuilder<'a> {
42053    type Target = AccelerationStructureDeviceAddressInfoKHR;
42054    #[inline]
42055    fn deref(&self) -> &Self::Target {
42056        &self.inner
42057    }
42058}
42059impl<'a> core::ops::DerefMut for AccelerationStructureDeviceAddressInfoKHRBuilder<'a> {
42060    #[inline]
42061    fn deref_mut(&mut self) -> &mut Self::Target {
42062        &mut self.inner
42063    }
42064}
42065///Builder for [`AccelerationStructureVersionInfoKHR`] with lifetime-tied pNext safety.
42066pub struct AccelerationStructureVersionInfoKHRBuilder<'a> {
42067    inner: AccelerationStructureVersionInfoKHR,
42068    _marker: core::marker::PhantomData<&'a ()>,
42069}
42070impl AccelerationStructureVersionInfoKHR {
42071    /// Start building this struct; `s_type` is already set to the correct variant.
42072    #[inline]
42073    pub fn builder<'a>() -> AccelerationStructureVersionInfoKHRBuilder<'a> {
42074        AccelerationStructureVersionInfoKHRBuilder {
42075            inner: AccelerationStructureVersionInfoKHR {
42076                s_type: StructureType::from_raw(1000150009i32),
42077                ..Default::default()
42078            },
42079            _marker: core::marker::PhantomData,
42080        }
42081    }
42082}
42083impl<'a> AccelerationStructureVersionInfoKHRBuilder<'a> {
42084    #[inline]
42085    pub fn version_data(mut self, value: *const u8) -> Self {
42086        self.inner.p_version_data = value;
42087        self
42088    }
42089    ///Prepend a struct to the pNext chain. See [`AccelerationStructureVersionInfoKHR`]'s **Extended By** section for valid types.
42090    #[inline]
42091    pub fn push_next<T: ExtendsAccelerationStructureVersionInfoKHR>(
42092        mut self,
42093        next: &'a mut T,
42094    ) -> Self {
42095        unsafe {
42096            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
42097            (*next_ptr).p_next = self.inner.p_next as *mut _;
42098            self.inner.p_next = <*mut BaseOutStructure>::cast::<
42099                core::ffi::c_void,
42100            >(next_ptr) as *const _;
42101        }
42102        self
42103    }
42104}
42105impl<'a> core::ops::Deref for AccelerationStructureVersionInfoKHRBuilder<'a> {
42106    type Target = AccelerationStructureVersionInfoKHR;
42107    #[inline]
42108    fn deref(&self) -> &Self::Target {
42109        &self.inner
42110    }
42111}
42112impl<'a> core::ops::DerefMut for AccelerationStructureVersionInfoKHRBuilder<'a> {
42113    #[inline]
42114    fn deref_mut(&mut self) -> &mut Self::Target {
42115        &mut self.inner
42116    }
42117}
42118///Builder for [`CopyAccelerationStructureInfoKHR`] with lifetime-tied pNext safety.
42119pub struct CopyAccelerationStructureInfoKHRBuilder<'a> {
42120    inner: CopyAccelerationStructureInfoKHR,
42121    _marker: core::marker::PhantomData<&'a ()>,
42122}
42123impl CopyAccelerationStructureInfoKHR {
42124    /// Start building this struct; `s_type` is already set to the correct variant.
42125    #[inline]
42126    pub fn builder<'a>() -> CopyAccelerationStructureInfoKHRBuilder<'a> {
42127        CopyAccelerationStructureInfoKHRBuilder {
42128            inner: CopyAccelerationStructureInfoKHR {
42129                s_type: StructureType::from_raw(1000150010i32),
42130                ..Default::default()
42131            },
42132            _marker: core::marker::PhantomData,
42133        }
42134    }
42135}
42136impl<'a> CopyAccelerationStructureInfoKHRBuilder<'a> {
42137    #[inline]
42138    pub fn src(mut self, value: AccelerationStructureKHR) -> Self {
42139        self.inner.src = value;
42140        self
42141    }
42142    #[inline]
42143    pub fn dst(mut self, value: AccelerationStructureKHR) -> Self {
42144        self.inner.dst = value;
42145        self
42146    }
42147    #[inline]
42148    pub fn mode(mut self, value: CopyAccelerationStructureModeKHR) -> Self {
42149        self.inner.mode = value;
42150        self
42151    }
42152    ///Prepend a struct to the pNext chain. See [`CopyAccelerationStructureInfoKHR`]'s **Extended By** section for valid types.
42153    #[inline]
42154    pub fn push_next<T: ExtendsCopyAccelerationStructureInfoKHR>(
42155        mut self,
42156        next: &'a mut T,
42157    ) -> Self {
42158        unsafe {
42159            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
42160            (*next_ptr).p_next = self.inner.p_next as *mut _;
42161            self.inner.p_next = <*mut BaseOutStructure>::cast::<
42162                core::ffi::c_void,
42163            >(next_ptr) as *const _;
42164        }
42165        self
42166    }
42167}
42168impl<'a> core::ops::Deref for CopyAccelerationStructureInfoKHRBuilder<'a> {
42169    type Target = CopyAccelerationStructureInfoKHR;
42170    #[inline]
42171    fn deref(&self) -> &Self::Target {
42172        &self.inner
42173    }
42174}
42175impl<'a> core::ops::DerefMut for CopyAccelerationStructureInfoKHRBuilder<'a> {
42176    #[inline]
42177    fn deref_mut(&mut self) -> &mut Self::Target {
42178        &mut self.inner
42179    }
42180}
42181///Builder for [`CopyAccelerationStructureToMemoryInfoKHR`] with lifetime-tied pNext safety.
42182pub struct CopyAccelerationStructureToMemoryInfoKHRBuilder<'a> {
42183    inner: CopyAccelerationStructureToMemoryInfoKHR,
42184    _marker: core::marker::PhantomData<&'a ()>,
42185}
42186impl CopyAccelerationStructureToMemoryInfoKHR {
42187    /// Start building this struct; `s_type` is already set to the correct variant.
42188    #[inline]
42189    pub fn builder<'a>() -> CopyAccelerationStructureToMemoryInfoKHRBuilder<'a> {
42190        CopyAccelerationStructureToMemoryInfoKHRBuilder {
42191            inner: CopyAccelerationStructureToMemoryInfoKHR {
42192                s_type: StructureType::from_raw(1000150011i32),
42193                ..Default::default()
42194            },
42195            _marker: core::marker::PhantomData,
42196        }
42197    }
42198}
42199impl<'a> CopyAccelerationStructureToMemoryInfoKHRBuilder<'a> {
42200    #[inline]
42201    pub fn src(mut self, value: AccelerationStructureKHR) -> Self {
42202        self.inner.src = value;
42203        self
42204    }
42205    #[inline]
42206    pub fn dst(mut self, value: DeviceOrHostAddressKHR) -> Self {
42207        self.inner.dst = value;
42208        self
42209    }
42210    #[inline]
42211    pub fn mode(mut self, value: CopyAccelerationStructureModeKHR) -> Self {
42212        self.inner.mode = value;
42213        self
42214    }
42215    ///Prepend a struct to the pNext chain. See [`CopyAccelerationStructureToMemoryInfoKHR`]'s **Extended By** section for valid types.
42216    #[inline]
42217    pub fn push_next<T: ExtendsCopyAccelerationStructureToMemoryInfoKHR>(
42218        mut self,
42219        next: &'a mut T,
42220    ) -> Self {
42221        unsafe {
42222            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
42223            (*next_ptr).p_next = self.inner.p_next as *mut _;
42224            self.inner.p_next = <*mut BaseOutStructure>::cast::<
42225                core::ffi::c_void,
42226            >(next_ptr) as *const _;
42227        }
42228        self
42229    }
42230}
42231impl<'a> core::ops::Deref for CopyAccelerationStructureToMemoryInfoKHRBuilder<'a> {
42232    type Target = CopyAccelerationStructureToMemoryInfoKHR;
42233    #[inline]
42234    fn deref(&self) -> &Self::Target {
42235        &self.inner
42236    }
42237}
42238impl<'a> core::ops::DerefMut for CopyAccelerationStructureToMemoryInfoKHRBuilder<'a> {
42239    #[inline]
42240    fn deref_mut(&mut self) -> &mut Self::Target {
42241        &mut self.inner
42242    }
42243}
42244///Builder for [`CopyMemoryToAccelerationStructureInfoKHR`] with lifetime-tied pNext safety.
42245pub struct CopyMemoryToAccelerationStructureInfoKHRBuilder<'a> {
42246    inner: CopyMemoryToAccelerationStructureInfoKHR,
42247    _marker: core::marker::PhantomData<&'a ()>,
42248}
42249impl CopyMemoryToAccelerationStructureInfoKHR {
42250    /// Start building this struct; `s_type` is already set to the correct variant.
42251    #[inline]
42252    pub fn builder<'a>() -> CopyMemoryToAccelerationStructureInfoKHRBuilder<'a> {
42253        CopyMemoryToAccelerationStructureInfoKHRBuilder {
42254            inner: CopyMemoryToAccelerationStructureInfoKHR {
42255                s_type: StructureType::from_raw(1000150012i32),
42256                ..Default::default()
42257            },
42258            _marker: core::marker::PhantomData,
42259        }
42260    }
42261}
42262impl<'a> CopyMemoryToAccelerationStructureInfoKHRBuilder<'a> {
42263    #[inline]
42264    pub fn src(mut self, value: DeviceOrHostAddressConstKHR) -> Self {
42265        self.inner.src = value;
42266        self
42267    }
42268    #[inline]
42269    pub fn dst(mut self, value: AccelerationStructureKHR) -> Self {
42270        self.inner.dst = value;
42271        self
42272    }
42273    #[inline]
42274    pub fn mode(mut self, value: CopyAccelerationStructureModeKHR) -> Self {
42275        self.inner.mode = value;
42276        self
42277    }
42278    ///Prepend a struct to the pNext chain. See [`CopyMemoryToAccelerationStructureInfoKHR`]'s **Extended By** section for valid types.
42279    #[inline]
42280    pub fn push_next<T: ExtendsCopyMemoryToAccelerationStructureInfoKHR>(
42281        mut self,
42282        next: &'a mut T,
42283    ) -> Self {
42284        unsafe {
42285            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
42286            (*next_ptr).p_next = self.inner.p_next as *mut _;
42287            self.inner.p_next = <*mut BaseOutStructure>::cast::<
42288                core::ffi::c_void,
42289            >(next_ptr) as *const _;
42290        }
42291        self
42292    }
42293}
42294impl<'a> core::ops::Deref for CopyMemoryToAccelerationStructureInfoKHRBuilder<'a> {
42295    type Target = CopyMemoryToAccelerationStructureInfoKHR;
42296    #[inline]
42297    fn deref(&self) -> &Self::Target {
42298        &self.inner
42299    }
42300}
42301impl<'a> core::ops::DerefMut for CopyMemoryToAccelerationStructureInfoKHRBuilder<'a> {
42302    #[inline]
42303    fn deref_mut(&mut self) -> &mut Self::Target {
42304        &mut self.inner
42305    }
42306}
42307///Builder for [`RayTracingPipelineInterfaceCreateInfoKHR`] with lifetime-tied pNext safety.
42308pub struct RayTracingPipelineInterfaceCreateInfoKHRBuilder<'a> {
42309    inner: RayTracingPipelineInterfaceCreateInfoKHR,
42310    _marker: core::marker::PhantomData<&'a ()>,
42311}
42312impl RayTracingPipelineInterfaceCreateInfoKHR {
42313    /// Start building this struct; `s_type` is already set to the correct variant.
42314    #[inline]
42315    pub fn builder<'a>() -> RayTracingPipelineInterfaceCreateInfoKHRBuilder<'a> {
42316        RayTracingPipelineInterfaceCreateInfoKHRBuilder {
42317            inner: RayTracingPipelineInterfaceCreateInfoKHR {
42318                s_type: StructureType::from_raw(1000150018i32),
42319                ..Default::default()
42320            },
42321            _marker: core::marker::PhantomData,
42322        }
42323    }
42324}
42325impl<'a> RayTracingPipelineInterfaceCreateInfoKHRBuilder<'a> {
42326    #[inline]
42327    pub fn max_pipeline_ray_payload_size(mut self, value: u32) -> Self {
42328        self.inner.max_pipeline_ray_payload_size = value;
42329        self
42330    }
42331    #[inline]
42332    pub fn max_pipeline_ray_hit_attribute_size(mut self, value: u32) -> Self {
42333        self.inner.max_pipeline_ray_hit_attribute_size = value;
42334        self
42335    }
42336    ///Prepend a struct to the pNext chain. See [`RayTracingPipelineInterfaceCreateInfoKHR`]'s **Extended By** section for valid types.
42337    #[inline]
42338    pub fn push_next<T: ExtendsRayTracingPipelineInterfaceCreateInfoKHR>(
42339        mut self,
42340        next: &'a mut T,
42341    ) -> Self {
42342        unsafe {
42343            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
42344            (*next_ptr).p_next = self.inner.p_next as *mut _;
42345            self.inner.p_next = <*mut BaseOutStructure>::cast::<
42346                core::ffi::c_void,
42347            >(next_ptr) as *const _;
42348        }
42349        self
42350    }
42351}
42352impl<'a> core::ops::Deref for RayTracingPipelineInterfaceCreateInfoKHRBuilder<'a> {
42353    type Target = RayTracingPipelineInterfaceCreateInfoKHR;
42354    #[inline]
42355    fn deref(&self) -> &Self::Target {
42356        &self.inner
42357    }
42358}
42359impl<'a> core::ops::DerefMut for RayTracingPipelineInterfaceCreateInfoKHRBuilder<'a> {
42360    #[inline]
42361    fn deref_mut(&mut self) -> &mut Self::Target {
42362        &mut self.inner
42363    }
42364}
42365///Builder for [`PipelineLibraryCreateInfoKHR`] with lifetime-tied pNext safety.
42366pub struct PipelineLibraryCreateInfoKHRBuilder<'a> {
42367    inner: PipelineLibraryCreateInfoKHR,
42368    _marker: core::marker::PhantomData<&'a ()>,
42369}
42370impl PipelineLibraryCreateInfoKHR {
42371    /// Start building this struct; `s_type` is already set to the correct variant.
42372    #[inline]
42373    pub fn builder<'a>() -> PipelineLibraryCreateInfoKHRBuilder<'a> {
42374        PipelineLibraryCreateInfoKHRBuilder {
42375            inner: PipelineLibraryCreateInfoKHR {
42376                s_type: StructureType::from_raw(1000290000i32),
42377                ..Default::default()
42378            },
42379            _marker: core::marker::PhantomData,
42380        }
42381    }
42382}
42383impl<'a> PipelineLibraryCreateInfoKHRBuilder<'a> {
42384    #[inline]
42385    pub fn libraries(mut self, slice: &'a [Pipeline]) -> Self {
42386        self.inner.library_count = slice.len() as u32;
42387        self.inner.p_libraries = slice.as_ptr();
42388        self
42389    }
42390    ///Prepend a struct to the pNext chain. See [`PipelineLibraryCreateInfoKHR`]'s **Extended By** section for valid types.
42391    #[inline]
42392    pub fn push_next<T: ExtendsPipelineLibraryCreateInfoKHR>(
42393        mut self,
42394        next: &'a mut T,
42395    ) -> Self {
42396        unsafe {
42397            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
42398            (*next_ptr).p_next = self.inner.p_next as *mut _;
42399            self.inner.p_next = <*mut BaseOutStructure>::cast::<
42400                core::ffi::c_void,
42401            >(next_ptr) as *const _;
42402        }
42403        self
42404    }
42405}
42406impl<'a> core::ops::Deref for PipelineLibraryCreateInfoKHRBuilder<'a> {
42407    type Target = PipelineLibraryCreateInfoKHR;
42408    #[inline]
42409    fn deref(&self) -> &Self::Target {
42410        &self.inner
42411    }
42412}
42413impl<'a> core::ops::DerefMut for PipelineLibraryCreateInfoKHRBuilder<'a> {
42414    #[inline]
42415    fn deref_mut(&mut self) -> &mut Self::Target {
42416        &mut self.inner
42417    }
42418}
42419///Builder for [`RefreshObjectKHR`].
42420pub struct RefreshObjectKHRBuilder {
42421    inner: RefreshObjectKHR,
42422}
42423impl RefreshObjectKHR {
42424    /// Start building this struct.
42425    #[inline]
42426    pub fn builder() -> RefreshObjectKHRBuilder {
42427        RefreshObjectKHRBuilder {
42428            inner: RefreshObjectKHR {
42429                ..Default::default()
42430            },
42431        }
42432    }
42433}
42434impl RefreshObjectKHRBuilder {
42435    #[inline]
42436    pub fn object_type(mut self, value: ObjectType) -> Self {
42437        self.inner.object_type = value;
42438        self
42439    }
42440    #[inline]
42441    pub fn object_handle(mut self, value: u64) -> Self {
42442        self.inner.object_handle = value;
42443        self
42444    }
42445    #[inline]
42446    pub fn flags(mut self, value: RefreshObjectFlagsKHR) -> Self {
42447        self.inner.flags = value;
42448        self
42449    }
42450}
42451impl core::ops::Deref for RefreshObjectKHRBuilder {
42452    type Target = RefreshObjectKHR;
42453    #[inline]
42454    fn deref(&self) -> &Self::Target {
42455        &self.inner
42456    }
42457}
42458impl core::ops::DerefMut for RefreshObjectKHRBuilder {
42459    #[inline]
42460    fn deref_mut(&mut self) -> &mut Self::Target {
42461        &mut self.inner
42462    }
42463}
42464///Builder for [`RefreshObjectListKHR`] with lifetime-tied pNext safety.
42465pub struct RefreshObjectListKHRBuilder<'a> {
42466    inner: RefreshObjectListKHR,
42467    _marker: core::marker::PhantomData<&'a ()>,
42468}
42469impl RefreshObjectListKHR {
42470    /// Start building this struct; `s_type` is already set to the correct variant.
42471    #[inline]
42472    pub fn builder<'a>() -> RefreshObjectListKHRBuilder<'a> {
42473        RefreshObjectListKHRBuilder {
42474            inner: RefreshObjectListKHR {
42475                s_type: Default::default(),
42476                ..Default::default()
42477            },
42478            _marker: core::marker::PhantomData,
42479        }
42480    }
42481}
42482impl<'a> RefreshObjectListKHRBuilder<'a> {
42483    #[inline]
42484    pub fn objects(mut self, slice: &'a [RefreshObjectKHR]) -> Self {
42485        self.inner.object_count = slice.len() as u32;
42486        self.inner.p_objects = slice.as_ptr();
42487        self
42488    }
42489    ///Prepend a struct to the pNext chain. See [`RefreshObjectListKHR`]'s **Extended By** section for valid types.
42490    #[inline]
42491    pub fn push_next<T: ExtendsRefreshObjectListKHR>(mut self, next: &'a mut T) -> Self {
42492        unsafe {
42493            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
42494            (*next_ptr).p_next = self.inner.p_next as *mut _;
42495            self.inner.p_next = <*mut BaseOutStructure>::cast::<
42496                core::ffi::c_void,
42497            >(next_ptr) as *const _;
42498        }
42499        self
42500    }
42501}
42502impl<'a> core::ops::Deref for RefreshObjectListKHRBuilder<'a> {
42503    type Target = RefreshObjectListKHR;
42504    #[inline]
42505    fn deref(&self) -> &Self::Target {
42506        &self.inner
42507    }
42508}
42509impl<'a> core::ops::DerefMut for RefreshObjectListKHRBuilder<'a> {
42510    #[inline]
42511    fn deref_mut(&mut self) -> &mut Self::Target {
42512        &mut self.inner
42513    }
42514}
42515///Builder for [`PhysicalDeviceExtendedDynamicStateFeaturesEXT`] with lifetime-tied pNext safety.
42516pub struct PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder<'a> {
42517    inner: PhysicalDeviceExtendedDynamicStateFeaturesEXT,
42518    _marker: core::marker::PhantomData<&'a ()>,
42519}
42520impl PhysicalDeviceExtendedDynamicStateFeaturesEXT {
42521    /// Start building this struct; `s_type` is already set to the correct variant.
42522    #[inline]
42523    pub fn builder<'a>() -> PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder<'a> {
42524        PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder {
42525            inner: PhysicalDeviceExtendedDynamicStateFeaturesEXT {
42526                s_type: StructureType::from_raw(1000267000i32),
42527                ..Default::default()
42528            },
42529            _marker: core::marker::PhantomData,
42530        }
42531    }
42532}
42533impl<'a> PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder<'a> {
42534    #[inline]
42535    pub fn extended_dynamic_state(mut self, value: bool) -> Self {
42536        self.inner.extended_dynamic_state = value as u32;
42537        self
42538    }
42539    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceExtendedDynamicStateFeaturesEXT`]'s **Extended By** section for valid types.
42540    #[inline]
42541    pub fn push_next<T: ExtendsPhysicalDeviceExtendedDynamicStateFeaturesEXT>(
42542        mut self,
42543        next: &'a mut T,
42544    ) -> Self {
42545        unsafe {
42546            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
42547            (*next_ptr).p_next = self.inner.p_next as *mut _;
42548            self.inner.p_next = <*mut BaseOutStructure>::cast::<
42549                core::ffi::c_void,
42550            >(next_ptr);
42551        }
42552        self
42553    }
42554}
42555impl<'a> core::ops::Deref for PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder<'a> {
42556    type Target = PhysicalDeviceExtendedDynamicStateFeaturesEXT;
42557    #[inline]
42558    fn deref(&self) -> &Self::Target {
42559        &self.inner
42560    }
42561}
42562impl<'a> core::ops::DerefMut
42563for PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder<'a> {
42564    #[inline]
42565    fn deref_mut(&mut self) -> &mut Self::Target {
42566        &mut self.inner
42567    }
42568}
42569///Builder for [`PhysicalDeviceExtendedDynamicState2FeaturesEXT`] with lifetime-tied pNext safety.
42570pub struct PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder<'a> {
42571    inner: PhysicalDeviceExtendedDynamicState2FeaturesEXT,
42572    _marker: core::marker::PhantomData<&'a ()>,
42573}
42574impl PhysicalDeviceExtendedDynamicState2FeaturesEXT {
42575    /// Start building this struct; `s_type` is already set to the correct variant.
42576    #[inline]
42577    pub fn builder<'a>() -> PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder<'a> {
42578        PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder {
42579            inner: PhysicalDeviceExtendedDynamicState2FeaturesEXT {
42580                s_type: StructureType::from_raw(1000377000i32),
42581                ..Default::default()
42582            },
42583            _marker: core::marker::PhantomData,
42584        }
42585    }
42586}
42587impl<'a> PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder<'a> {
42588    #[inline]
42589    pub fn extended_dynamic_state2(mut self, value: bool) -> Self {
42590        self.inner.extended_dynamic_state2 = value as u32;
42591        self
42592    }
42593    #[inline]
42594    pub fn extended_dynamic_state2_logic_op(mut self, value: bool) -> Self {
42595        self.inner.extended_dynamic_state2_logic_op = value as u32;
42596        self
42597    }
42598    #[inline]
42599    pub fn extended_dynamic_state2_patch_control_points(mut self, value: bool) -> Self {
42600        self.inner.extended_dynamic_state2_patch_control_points = value as u32;
42601        self
42602    }
42603    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceExtendedDynamicState2FeaturesEXT`]'s **Extended By** section for valid types.
42604    #[inline]
42605    pub fn push_next<T: ExtendsPhysicalDeviceExtendedDynamicState2FeaturesEXT>(
42606        mut self,
42607        next: &'a mut T,
42608    ) -> Self {
42609        unsafe {
42610            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
42611            (*next_ptr).p_next = self.inner.p_next as *mut _;
42612            self.inner.p_next = <*mut BaseOutStructure>::cast::<
42613                core::ffi::c_void,
42614            >(next_ptr);
42615        }
42616        self
42617    }
42618}
42619impl<'a> core::ops::Deref for PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder<'a> {
42620    type Target = PhysicalDeviceExtendedDynamicState2FeaturesEXT;
42621    #[inline]
42622    fn deref(&self) -> &Self::Target {
42623        &self.inner
42624    }
42625}
42626impl<'a> core::ops::DerefMut
42627for PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder<'a> {
42628    #[inline]
42629    fn deref_mut(&mut self) -> &mut Self::Target {
42630        &mut self.inner
42631    }
42632}
42633///Builder for [`PhysicalDeviceExtendedDynamicState3FeaturesEXT`] with lifetime-tied pNext safety.
42634pub struct PhysicalDeviceExtendedDynamicState3FeaturesEXTBuilder<'a> {
42635    inner: PhysicalDeviceExtendedDynamicState3FeaturesEXT,
42636    _marker: core::marker::PhantomData<&'a ()>,
42637}
42638impl PhysicalDeviceExtendedDynamicState3FeaturesEXT {
42639    /// Start building this struct; `s_type` is already set to the correct variant.
42640    #[inline]
42641    pub fn builder<'a>() -> PhysicalDeviceExtendedDynamicState3FeaturesEXTBuilder<'a> {
42642        PhysicalDeviceExtendedDynamicState3FeaturesEXTBuilder {
42643            inner: PhysicalDeviceExtendedDynamicState3FeaturesEXT {
42644                s_type: StructureType::from_raw(1000455000i32),
42645                ..Default::default()
42646            },
42647            _marker: core::marker::PhantomData,
42648        }
42649    }
42650}
42651impl<'a> PhysicalDeviceExtendedDynamicState3FeaturesEXTBuilder<'a> {
42652    #[inline]
42653    pub fn extended_dynamic_state3_tessellation_domain_origin(
42654        mut self,
42655        value: bool,
42656    ) -> Self {
42657        self.inner.extended_dynamic_state3_tessellation_domain_origin = value as u32;
42658        self
42659    }
42660    #[inline]
42661    pub fn extended_dynamic_state3_depth_clamp_enable(mut self, value: bool) -> Self {
42662        self.inner.extended_dynamic_state3_depth_clamp_enable = value as u32;
42663        self
42664    }
42665    #[inline]
42666    pub fn extended_dynamic_state3_polygon_mode(mut self, value: bool) -> Self {
42667        self.inner.extended_dynamic_state3_polygon_mode = value as u32;
42668        self
42669    }
42670    #[inline]
42671    pub fn extended_dynamic_state3_rasterization_samples(mut self, value: bool) -> Self {
42672        self.inner.extended_dynamic_state3_rasterization_samples = value as u32;
42673        self
42674    }
42675    #[inline]
42676    pub fn extended_dynamic_state3_sample_mask(mut self, value: bool) -> Self {
42677        self.inner.extended_dynamic_state3_sample_mask = value as u32;
42678        self
42679    }
42680    #[inline]
42681    pub fn extended_dynamic_state3_alpha_to_coverage_enable(
42682        mut self,
42683        value: bool,
42684    ) -> Self {
42685        self.inner.extended_dynamic_state3_alpha_to_coverage_enable = value as u32;
42686        self
42687    }
42688    #[inline]
42689    pub fn extended_dynamic_state3_alpha_to_one_enable(mut self, value: bool) -> Self {
42690        self.inner.extended_dynamic_state3_alpha_to_one_enable = value as u32;
42691        self
42692    }
42693    #[inline]
42694    pub fn extended_dynamic_state3_logic_op_enable(mut self, value: bool) -> Self {
42695        self.inner.extended_dynamic_state3_logic_op_enable = value as u32;
42696        self
42697    }
42698    #[inline]
42699    pub fn extended_dynamic_state3_color_blend_enable(mut self, value: bool) -> Self {
42700        self.inner.extended_dynamic_state3_color_blend_enable = value as u32;
42701        self
42702    }
42703    #[inline]
42704    pub fn extended_dynamic_state3_color_blend_equation(mut self, value: bool) -> Self {
42705        self.inner.extended_dynamic_state3_color_blend_equation = value as u32;
42706        self
42707    }
42708    #[inline]
42709    pub fn extended_dynamic_state3_color_write_mask(mut self, value: bool) -> Self {
42710        self.inner.extended_dynamic_state3_color_write_mask = value as u32;
42711        self
42712    }
42713    #[inline]
42714    pub fn extended_dynamic_state3_rasterization_stream(mut self, value: bool) -> Self {
42715        self.inner.extended_dynamic_state3_rasterization_stream = value as u32;
42716        self
42717    }
42718    #[inline]
42719    pub fn extended_dynamic_state3_conservative_rasterization_mode(
42720        mut self,
42721        value: bool,
42722    ) -> Self {
42723        self.inner.extended_dynamic_state3_conservative_rasterization_mode = value
42724            as u32;
42725        self
42726    }
42727    #[inline]
42728    pub fn extended_dynamic_state3_extra_primitive_overestimation_size(
42729        mut self,
42730        value: bool,
42731    ) -> Self {
42732        self.inner.extended_dynamic_state3_extra_primitive_overestimation_size = value
42733            as u32;
42734        self
42735    }
42736    #[inline]
42737    pub fn extended_dynamic_state3_depth_clip_enable(mut self, value: bool) -> Self {
42738        self.inner.extended_dynamic_state3_depth_clip_enable = value as u32;
42739        self
42740    }
42741    #[inline]
42742    pub fn extended_dynamic_state3_sample_locations_enable(
42743        mut self,
42744        value: bool,
42745    ) -> Self {
42746        self.inner.extended_dynamic_state3_sample_locations_enable = value as u32;
42747        self
42748    }
42749    #[inline]
42750    pub fn extended_dynamic_state3_color_blend_advanced(mut self, value: bool) -> Self {
42751        self.inner.extended_dynamic_state3_color_blend_advanced = value as u32;
42752        self
42753    }
42754    #[inline]
42755    pub fn extended_dynamic_state3_provoking_vertex_mode(mut self, value: bool) -> Self {
42756        self.inner.extended_dynamic_state3_provoking_vertex_mode = value as u32;
42757        self
42758    }
42759    #[inline]
42760    pub fn extended_dynamic_state3_line_rasterization_mode(
42761        mut self,
42762        value: bool,
42763    ) -> Self {
42764        self.inner.extended_dynamic_state3_line_rasterization_mode = value as u32;
42765        self
42766    }
42767    #[inline]
42768    pub fn extended_dynamic_state3_line_stipple_enable(mut self, value: bool) -> Self {
42769        self.inner.extended_dynamic_state3_line_stipple_enable = value as u32;
42770        self
42771    }
42772    #[inline]
42773    pub fn extended_dynamic_state3_depth_clip_negative_one_to_one(
42774        mut self,
42775        value: bool,
42776    ) -> Self {
42777        self.inner.extended_dynamic_state3_depth_clip_negative_one_to_one = value as u32;
42778        self
42779    }
42780    #[inline]
42781    pub fn extended_dynamic_state3_viewport_w_scaling_enable(
42782        mut self,
42783        value: bool,
42784    ) -> Self {
42785        self.inner.extended_dynamic_state3_viewport_w_scaling_enable = value as u32;
42786        self
42787    }
42788    #[inline]
42789    pub fn extended_dynamic_state3_viewport_swizzle(mut self, value: bool) -> Self {
42790        self.inner.extended_dynamic_state3_viewport_swizzle = value as u32;
42791        self
42792    }
42793    #[inline]
42794    pub fn extended_dynamic_state3_coverage_to_color_enable(
42795        mut self,
42796        value: bool,
42797    ) -> Self {
42798        self.inner.extended_dynamic_state3_coverage_to_color_enable = value as u32;
42799        self
42800    }
42801    #[inline]
42802    pub fn extended_dynamic_state3_coverage_to_color_location(
42803        mut self,
42804        value: bool,
42805    ) -> Self {
42806        self.inner.extended_dynamic_state3_coverage_to_color_location = value as u32;
42807        self
42808    }
42809    #[inline]
42810    pub fn extended_dynamic_state3_coverage_modulation_mode(
42811        mut self,
42812        value: bool,
42813    ) -> Self {
42814        self.inner.extended_dynamic_state3_coverage_modulation_mode = value as u32;
42815        self
42816    }
42817    #[inline]
42818    pub fn extended_dynamic_state3_coverage_modulation_table_enable(
42819        mut self,
42820        value: bool,
42821    ) -> Self {
42822        self.inner.extended_dynamic_state3_coverage_modulation_table_enable = value
42823            as u32;
42824        self
42825    }
42826    #[inline]
42827    pub fn extended_dynamic_state3_coverage_modulation_table(
42828        mut self,
42829        value: bool,
42830    ) -> Self {
42831        self.inner.extended_dynamic_state3_coverage_modulation_table = value as u32;
42832        self
42833    }
42834    #[inline]
42835    pub fn extended_dynamic_state3_coverage_reduction_mode(
42836        mut self,
42837        value: bool,
42838    ) -> Self {
42839        self.inner.extended_dynamic_state3_coverage_reduction_mode = value as u32;
42840        self
42841    }
42842    #[inline]
42843    pub fn extended_dynamic_state3_representative_fragment_test_enable(
42844        mut self,
42845        value: bool,
42846    ) -> Self {
42847        self.inner.extended_dynamic_state3_representative_fragment_test_enable = value
42848            as u32;
42849        self
42850    }
42851    #[inline]
42852    pub fn extended_dynamic_state3_shading_rate_image_enable(
42853        mut self,
42854        value: bool,
42855    ) -> Self {
42856        self.inner.extended_dynamic_state3_shading_rate_image_enable = value as u32;
42857        self
42858    }
42859    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceExtendedDynamicState3FeaturesEXT`]'s **Extended By** section for valid types.
42860    #[inline]
42861    pub fn push_next<T: ExtendsPhysicalDeviceExtendedDynamicState3FeaturesEXT>(
42862        mut self,
42863        next: &'a mut T,
42864    ) -> Self {
42865        unsafe {
42866            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
42867            (*next_ptr).p_next = self.inner.p_next as *mut _;
42868            self.inner.p_next = <*mut BaseOutStructure>::cast::<
42869                core::ffi::c_void,
42870            >(next_ptr);
42871        }
42872        self
42873    }
42874}
42875impl<'a> core::ops::Deref for PhysicalDeviceExtendedDynamicState3FeaturesEXTBuilder<'a> {
42876    type Target = PhysicalDeviceExtendedDynamicState3FeaturesEXT;
42877    #[inline]
42878    fn deref(&self) -> &Self::Target {
42879        &self.inner
42880    }
42881}
42882impl<'a> core::ops::DerefMut
42883for PhysicalDeviceExtendedDynamicState3FeaturesEXTBuilder<'a> {
42884    #[inline]
42885    fn deref_mut(&mut self) -> &mut Self::Target {
42886        &mut self.inner
42887    }
42888}
42889///Builder for [`PhysicalDeviceExtendedDynamicState3PropertiesEXT`] with lifetime-tied pNext safety.
42890pub struct PhysicalDeviceExtendedDynamicState3PropertiesEXTBuilder<'a> {
42891    inner: PhysicalDeviceExtendedDynamicState3PropertiesEXT,
42892    _marker: core::marker::PhantomData<&'a ()>,
42893}
42894impl PhysicalDeviceExtendedDynamicState3PropertiesEXT {
42895    /// Start building this struct; `s_type` is already set to the correct variant.
42896    #[inline]
42897    pub fn builder<'a>() -> PhysicalDeviceExtendedDynamicState3PropertiesEXTBuilder<'a> {
42898        PhysicalDeviceExtendedDynamicState3PropertiesEXTBuilder {
42899            inner: PhysicalDeviceExtendedDynamicState3PropertiesEXT {
42900                s_type: StructureType::from_raw(1000455001i32),
42901                ..Default::default()
42902            },
42903            _marker: core::marker::PhantomData,
42904        }
42905    }
42906}
42907impl<'a> PhysicalDeviceExtendedDynamicState3PropertiesEXTBuilder<'a> {
42908    #[inline]
42909    pub fn dynamic_primitive_topology_unrestricted(mut self, value: bool) -> Self {
42910        self.inner.dynamic_primitive_topology_unrestricted = value as u32;
42911        self
42912    }
42913}
42914impl<'a> core::ops::Deref
42915for PhysicalDeviceExtendedDynamicState3PropertiesEXTBuilder<'a> {
42916    type Target = PhysicalDeviceExtendedDynamicState3PropertiesEXT;
42917    #[inline]
42918    fn deref(&self) -> &Self::Target {
42919        &self.inner
42920    }
42921}
42922impl<'a> core::ops::DerefMut
42923for PhysicalDeviceExtendedDynamicState3PropertiesEXTBuilder<'a> {
42924    #[inline]
42925    fn deref_mut(&mut self) -> &mut Self::Target {
42926        &mut self.inner
42927    }
42928}
42929///Builder for [`ColorBlendEquationEXT`].
42930pub struct ColorBlendEquationEXTBuilder {
42931    inner: ColorBlendEquationEXT,
42932}
42933impl ColorBlendEquationEXT {
42934    /// Start building this struct.
42935    #[inline]
42936    pub fn builder() -> ColorBlendEquationEXTBuilder {
42937        ColorBlendEquationEXTBuilder {
42938            inner: ColorBlendEquationEXT {
42939                ..Default::default()
42940            },
42941        }
42942    }
42943}
42944impl ColorBlendEquationEXTBuilder {
42945    #[inline]
42946    pub fn src_color_blend_factor(mut self, value: BlendFactor) -> Self {
42947        self.inner.src_color_blend_factor = value;
42948        self
42949    }
42950    #[inline]
42951    pub fn dst_color_blend_factor(mut self, value: BlendFactor) -> Self {
42952        self.inner.dst_color_blend_factor = value;
42953        self
42954    }
42955    #[inline]
42956    pub fn color_blend_op(mut self, value: BlendOp) -> Self {
42957        self.inner.color_blend_op = value;
42958        self
42959    }
42960    #[inline]
42961    pub fn src_alpha_blend_factor(mut self, value: BlendFactor) -> Self {
42962        self.inner.src_alpha_blend_factor = value;
42963        self
42964    }
42965    #[inline]
42966    pub fn dst_alpha_blend_factor(mut self, value: BlendFactor) -> Self {
42967        self.inner.dst_alpha_blend_factor = value;
42968        self
42969    }
42970    #[inline]
42971    pub fn alpha_blend_op(mut self, value: BlendOp) -> Self {
42972        self.inner.alpha_blend_op = value;
42973        self
42974    }
42975}
42976impl core::ops::Deref for ColorBlendEquationEXTBuilder {
42977    type Target = ColorBlendEquationEXT;
42978    #[inline]
42979    fn deref(&self) -> &Self::Target {
42980        &self.inner
42981    }
42982}
42983impl core::ops::DerefMut for ColorBlendEquationEXTBuilder {
42984    #[inline]
42985    fn deref_mut(&mut self) -> &mut Self::Target {
42986        &mut self.inner
42987    }
42988}
42989///Builder for [`ColorBlendAdvancedEXT`].
42990pub struct ColorBlendAdvancedEXTBuilder {
42991    inner: ColorBlendAdvancedEXT,
42992}
42993impl ColorBlendAdvancedEXT {
42994    /// Start building this struct.
42995    #[inline]
42996    pub fn builder() -> ColorBlendAdvancedEXTBuilder {
42997        ColorBlendAdvancedEXTBuilder {
42998            inner: ColorBlendAdvancedEXT {
42999                ..Default::default()
43000            },
43001        }
43002    }
43003}
43004impl ColorBlendAdvancedEXTBuilder {
43005    #[inline]
43006    pub fn advanced_blend_op(mut self, value: BlendOp) -> Self {
43007        self.inner.advanced_blend_op = value;
43008        self
43009    }
43010    #[inline]
43011    pub fn src_premultiplied(mut self, value: bool) -> Self {
43012        self.inner.src_premultiplied = value as u32;
43013        self
43014    }
43015    #[inline]
43016    pub fn dst_premultiplied(mut self, value: bool) -> Self {
43017        self.inner.dst_premultiplied = value as u32;
43018        self
43019    }
43020    #[inline]
43021    pub fn blend_overlap(mut self, value: BlendOverlapEXT) -> Self {
43022        self.inner.blend_overlap = value;
43023        self
43024    }
43025    #[inline]
43026    pub fn clamp_results(mut self, value: bool) -> Self {
43027        self.inner.clamp_results = value as u32;
43028        self
43029    }
43030}
43031impl core::ops::Deref for ColorBlendAdvancedEXTBuilder {
43032    type Target = ColorBlendAdvancedEXT;
43033    #[inline]
43034    fn deref(&self) -> &Self::Target {
43035        &self.inner
43036    }
43037}
43038impl core::ops::DerefMut for ColorBlendAdvancedEXTBuilder {
43039    #[inline]
43040    fn deref_mut(&mut self) -> &mut Self::Target {
43041        &mut self.inner
43042    }
43043}
43044///Builder for [`RenderPassTransformBeginInfoQCOM`] with lifetime-tied pNext safety.
43045pub struct RenderPassTransformBeginInfoQCOMBuilder<'a> {
43046    inner: RenderPassTransformBeginInfoQCOM,
43047    _marker: core::marker::PhantomData<&'a ()>,
43048}
43049impl RenderPassTransformBeginInfoQCOM {
43050    /// Start building this struct; `s_type` is already set to the correct variant.
43051    #[inline]
43052    pub fn builder<'a>() -> RenderPassTransformBeginInfoQCOMBuilder<'a> {
43053        RenderPassTransformBeginInfoQCOMBuilder {
43054            inner: RenderPassTransformBeginInfoQCOM {
43055                s_type: StructureType::from_raw(1000282001i32),
43056                ..Default::default()
43057            },
43058            _marker: core::marker::PhantomData,
43059        }
43060    }
43061}
43062impl<'a> RenderPassTransformBeginInfoQCOMBuilder<'a> {
43063    #[inline]
43064    pub fn transform(mut self, value: SurfaceTransformFlagBitsKHR) -> Self {
43065        self.inner.transform = value;
43066        self
43067    }
43068    ///Prepend a struct to the pNext chain. See [`RenderPassTransformBeginInfoQCOM`]'s **Extended By** section for valid types.
43069    #[inline]
43070    pub fn push_next<T: ExtendsRenderPassTransformBeginInfoQCOM>(
43071        mut self,
43072        next: &'a mut T,
43073    ) -> Self {
43074        unsafe {
43075            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
43076            (*next_ptr).p_next = self.inner.p_next as *mut _;
43077            self.inner.p_next = <*mut BaseOutStructure>::cast::<
43078                core::ffi::c_void,
43079            >(next_ptr) as *const _;
43080        }
43081        self
43082    }
43083}
43084impl<'a> core::ops::Deref for RenderPassTransformBeginInfoQCOMBuilder<'a> {
43085    type Target = RenderPassTransformBeginInfoQCOM;
43086    #[inline]
43087    fn deref(&self) -> &Self::Target {
43088        &self.inner
43089    }
43090}
43091impl<'a> core::ops::DerefMut for RenderPassTransformBeginInfoQCOMBuilder<'a> {
43092    #[inline]
43093    fn deref_mut(&mut self) -> &mut Self::Target {
43094        &mut self.inner
43095    }
43096}
43097///Builder for [`CopyCommandTransformInfoQCOM`] with lifetime-tied pNext safety.
43098pub struct CopyCommandTransformInfoQCOMBuilder<'a> {
43099    inner: CopyCommandTransformInfoQCOM,
43100    _marker: core::marker::PhantomData<&'a ()>,
43101}
43102impl CopyCommandTransformInfoQCOM {
43103    /// Start building this struct; `s_type` is already set to the correct variant.
43104    #[inline]
43105    pub fn builder<'a>() -> CopyCommandTransformInfoQCOMBuilder<'a> {
43106        CopyCommandTransformInfoQCOMBuilder {
43107            inner: CopyCommandTransformInfoQCOM {
43108                s_type: StructureType::from_raw(1000333000i32),
43109                ..Default::default()
43110            },
43111            _marker: core::marker::PhantomData,
43112        }
43113    }
43114}
43115impl<'a> CopyCommandTransformInfoQCOMBuilder<'a> {
43116    #[inline]
43117    pub fn transform(mut self, value: SurfaceTransformFlagBitsKHR) -> Self {
43118        self.inner.transform = value;
43119        self
43120    }
43121    ///Prepend a struct to the pNext chain. See [`CopyCommandTransformInfoQCOM`]'s **Extended By** section for valid types.
43122    #[inline]
43123    pub fn push_next<T: ExtendsCopyCommandTransformInfoQCOM>(
43124        mut self,
43125        next: &'a mut T,
43126    ) -> Self {
43127        unsafe {
43128            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
43129            (*next_ptr).p_next = self.inner.p_next as *mut _;
43130            self.inner.p_next = <*mut BaseOutStructure>::cast::<
43131                core::ffi::c_void,
43132            >(next_ptr) as *const _;
43133        }
43134        self
43135    }
43136}
43137impl<'a> core::ops::Deref for CopyCommandTransformInfoQCOMBuilder<'a> {
43138    type Target = CopyCommandTransformInfoQCOM;
43139    #[inline]
43140    fn deref(&self) -> &Self::Target {
43141        &self.inner
43142    }
43143}
43144impl<'a> core::ops::DerefMut for CopyCommandTransformInfoQCOMBuilder<'a> {
43145    #[inline]
43146    fn deref_mut(&mut self) -> &mut Self::Target {
43147        &mut self.inner
43148    }
43149}
43150///Builder for [`CommandBufferInheritanceRenderPassTransformInfoQCOM`] with lifetime-tied pNext safety.
43151pub struct CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder<'a> {
43152    inner: CommandBufferInheritanceRenderPassTransformInfoQCOM,
43153    _marker: core::marker::PhantomData<&'a ()>,
43154}
43155impl CommandBufferInheritanceRenderPassTransformInfoQCOM {
43156    /// Start building this struct; `s_type` is already set to the correct variant.
43157    #[inline]
43158    pub fn builder<'a>() -> CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder<
43159        'a,
43160    > {
43161        CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder {
43162            inner: CommandBufferInheritanceRenderPassTransformInfoQCOM {
43163                s_type: StructureType::from_raw(1000282000i32),
43164                ..Default::default()
43165            },
43166            _marker: core::marker::PhantomData,
43167        }
43168    }
43169}
43170impl<'a> CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder<'a> {
43171    #[inline]
43172    pub fn transform(mut self, value: SurfaceTransformFlagBitsKHR) -> Self {
43173        self.inner.transform = value;
43174        self
43175    }
43176    #[inline]
43177    pub fn render_area(mut self, value: Rect2D) -> Self {
43178        self.inner.render_area = value;
43179        self
43180    }
43181    ///Prepend a struct to the pNext chain. See [`CommandBufferInheritanceRenderPassTransformInfoQCOM`]'s **Extended By** section for valid types.
43182    #[inline]
43183    pub fn push_next<T: ExtendsCommandBufferInheritanceRenderPassTransformInfoQCOM>(
43184        mut self,
43185        next: &'a mut T,
43186    ) -> Self {
43187        unsafe {
43188            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
43189            (*next_ptr).p_next = self.inner.p_next as *mut _;
43190            self.inner.p_next = <*mut BaseOutStructure>::cast::<
43191                core::ffi::c_void,
43192            >(next_ptr) as *const _;
43193        }
43194        self
43195    }
43196}
43197impl<'a> core::ops::Deref
43198for CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder<'a> {
43199    type Target = CommandBufferInheritanceRenderPassTransformInfoQCOM;
43200    #[inline]
43201    fn deref(&self) -> &Self::Target {
43202        &self.inner
43203    }
43204}
43205impl<'a> core::ops::DerefMut
43206for CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder<'a> {
43207    #[inline]
43208    fn deref_mut(&mut self) -> &mut Self::Target {
43209        &mut self.inner
43210    }
43211}
43212///Builder for [`PhysicalDevicePartitionedAccelerationStructureFeaturesNV`] with lifetime-tied pNext safety.
43213pub struct PhysicalDevicePartitionedAccelerationStructureFeaturesNVBuilder<'a> {
43214    inner: PhysicalDevicePartitionedAccelerationStructureFeaturesNV,
43215    _marker: core::marker::PhantomData<&'a ()>,
43216}
43217impl PhysicalDevicePartitionedAccelerationStructureFeaturesNV {
43218    /// Start building this struct; `s_type` is already set to the correct variant.
43219    #[inline]
43220    pub fn builder<'a>() -> PhysicalDevicePartitionedAccelerationStructureFeaturesNVBuilder<
43221        'a,
43222    > {
43223        PhysicalDevicePartitionedAccelerationStructureFeaturesNVBuilder {
43224            inner: PhysicalDevicePartitionedAccelerationStructureFeaturesNV {
43225                s_type: StructureType::from_raw(1000570000i32),
43226                ..Default::default()
43227            },
43228            _marker: core::marker::PhantomData,
43229        }
43230    }
43231}
43232impl<'a> PhysicalDevicePartitionedAccelerationStructureFeaturesNVBuilder<'a> {
43233    #[inline]
43234    pub fn partitioned_acceleration_structure(mut self, value: bool) -> Self {
43235        self.inner.partitioned_acceleration_structure = value as u32;
43236        self
43237    }
43238    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePartitionedAccelerationStructureFeaturesNV`]'s **Extended By** section for valid types.
43239    #[inline]
43240    pub fn push_next<T: ExtendsPhysicalDevicePartitionedAccelerationStructureFeaturesNV>(
43241        mut self,
43242        next: &'a mut T,
43243    ) -> Self {
43244        unsafe {
43245            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
43246            (*next_ptr).p_next = self.inner.p_next as *mut _;
43247            self.inner.p_next = <*mut BaseOutStructure>::cast::<
43248                core::ffi::c_void,
43249            >(next_ptr);
43250        }
43251        self
43252    }
43253}
43254impl<'a> core::ops::Deref
43255for PhysicalDevicePartitionedAccelerationStructureFeaturesNVBuilder<'a> {
43256    type Target = PhysicalDevicePartitionedAccelerationStructureFeaturesNV;
43257    #[inline]
43258    fn deref(&self) -> &Self::Target {
43259        &self.inner
43260    }
43261}
43262impl<'a> core::ops::DerefMut
43263for PhysicalDevicePartitionedAccelerationStructureFeaturesNVBuilder<'a> {
43264    #[inline]
43265    fn deref_mut(&mut self) -> &mut Self::Target {
43266        &mut self.inner
43267    }
43268}
43269///Builder for [`PhysicalDevicePartitionedAccelerationStructurePropertiesNV`] with lifetime-tied pNext safety.
43270pub struct PhysicalDevicePartitionedAccelerationStructurePropertiesNVBuilder<'a> {
43271    inner: PhysicalDevicePartitionedAccelerationStructurePropertiesNV,
43272    _marker: core::marker::PhantomData<&'a ()>,
43273}
43274impl PhysicalDevicePartitionedAccelerationStructurePropertiesNV {
43275    /// Start building this struct; `s_type` is already set to the correct variant.
43276    #[inline]
43277    pub fn builder<'a>() -> PhysicalDevicePartitionedAccelerationStructurePropertiesNVBuilder<
43278        'a,
43279    > {
43280        PhysicalDevicePartitionedAccelerationStructurePropertiesNVBuilder {
43281            inner: PhysicalDevicePartitionedAccelerationStructurePropertiesNV {
43282                s_type: StructureType::from_raw(1000570001i32),
43283                ..Default::default()
43284            },
43285            _marker: core::marker::PhantomData,
43286        }
43287    }
43288}
43289impl<'a> PhysicalDevicePartitionedAccelerationStructurePropertiesNVBuilder<'a> {
43290    #[inline]
43291    pub fn max_partition_count(mut self, value: u32) -> Self {
43292        self.inner.max_partition_count = value;
43293        self
43294    }
43295}
43296impl<'a> core::ops::Deref
43297for PhysicalDevicePartitionedAccelerationStructurePropertiesNVBuilder<'a> {
43298    type Target = PhysicalDevicePartitionedAccelerationStructurePropertiesNV;
43299    #[inline]
43300    fn deref(&self) -> &Self::Target {
43301        &self.inner
43302    }
43303}
43304impl<'a> core::ops::DerefMut
43305for PhysicalDevicePartitionedAccelerationStructurePropertiesNVBuilder<'a> {
43306    #[inline]
43307    fn deref_mut(&mut self) -> &mut Self::Target {
43308        &mut self.inner
43309    }
43310}
43311///Builder for [`BuildPartitionedAccelerationStructureIndirectCommandNV`].
43312pub struct BuildPartitionedAccelerationStructureIndirectCommandNVBuilder {
43313    inner: BuildPartitionedAccelerationStructureIndirectCommandNV,
43314}
43315impl BuildPartitionedAccelerationStructureIndirectCommandNV {
43316    /// Start building this struct.
43317    #[inline]
43318    pub fn builder() -> BuildPartitionedAccelerationStructureIndirectCommandNVBuilder {
43319        BuildPartitionedAccelerationStructureIndirectCommandNVBuilder {
43320            inner: BuildPartitionedAccelerationStructureIndirectCommandNV {
43321                ..Default::default()
43322            },
43323        }
43324    }
43325}
43326impl BuildPartitionedAccelerationStructureIndirectCommandNVBuilder {
43327    #[inline]
43328    pub fn op_type(mut self, value: PartitionedAccelerationStructureOpTypeNV) -> Self {
43329        self.inner.op_type = value;
43330        self
43331    }
43332    #[inline]
43333    pub fn arg_count(mut self, value: u32) -> Self {
43334        self.inner.arg_count = value;
43335        self
43336    }
43337    #[inline]
43338    pub fn arg_data(mut self, value: StridedDeviceAddressNV) -> Self {
43339        self.inner.arg_data = value;
43340        self
43341    }
43342}
43343impl core::ops::Deref for BuildPartitionedAccelerationStructureIndirectCommandNVBuilder {
43344    type Target = BuildPartitionedAccelerationStructureIndirectCommandNV;
43345    #[inline]
43346    fn deref(&self) -> &Self::Target {
43347        &self.inner
43348    }
43349}
43350impl core::ops::DerefMut
43351for BuildPartitionedAccelerationStructureIndirectCommandNVBuilder {
43352    #[inline]
43353    fn deref_mut(&mut self) -> &mut Self::Target {
43354        &mut self.inner
43355    }
43356}
43357///Builder for [`PartitionedAccelerationStructureFlagsNV`] with lifetime-tied pNext safety.
43358pub struct PartitionedAccelerationStructureFlagsNVBuilder<'a> {
43359    inner: PartitionedAccelerationStructureFlagsNV,
43360    _marker: core::marker::PhantomData<&'a ()>,
43361}
43362impl PartitionedAccelerationStructureFlagsNV {
43363    /// Start building this struct; `s_type` is already set to the correct variant.
43364    #[inline]
43365    pub fn builder<'a>() -> PartitionedAccelerationStructureFlagsNVBuilder<'a> {
43366        PartitionedAccelerationStructureFlagsNVBuilder {
43367            inner: PartitionedAccelerationStructureFlagsNV {
43368                s_type: StructureType::from_raw(1000570005i32),
43369                ..Default::default()
43370            },
43371            _marker: core::marker::PhantomData,
43372        }
43373    }
43374}
43375impl<'a> PartitionedAccelerationStructureFlagsNVBuilder<'a> {
43376    #[inline]
43377    pub fn enable_partition_translation(mut self, value: bool) -> Self {
43378        self.inner.enable_partition_translation = value as u32;
43379        self
43380    }
43381    ///Prepend a struct to the pNext chain. See [`PartitionedAccelerationStructureFlagsNV`]'s **Extended By** section for valid types.
43382    #[inline]
43383    pub fn push_next<T: ExtendsPartitionedAccelerationStructureFlagsNV>(
43384        mut self,
43385        next: &'a mut T,
43386    ) -> Self {
43387        unsafe {
43388            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
43389            (*next_ptr).p_next = self.inner.p_next as *mut _;
43390            self.inner.p_next = <*mut BaseOutStructure>::cast::<
43391                core::ffi::c_void,
43392            >(next_ptr);
43393        }
43394        self
43395    }
43396}
43397impl<'a> core::ops::Deref for PartitionedAccelerationStructureFlagsNVBuilder<'a> {
43398    type Target = PartitionedAccelerationStructureFlagsNV;
43399    #[inline]
43400    fn deref(&self) -> &Self::Target {
43401        &self.inner
43402    }
43403}
43404impl<'a> core::ops::DerefMut for PartitionedAccelerationStructureFlagsNVBuilder<'a> {
43405    #[inline]
43406    fn deref_mut(&mut self) -> &mut Self::Target {
43407        &mut self.inner
43408    }
43409}
43410///Builder for [`PartitionedAccelerationStructureWriteInstanceDataNV`].
43411pub struct PartitionedAccelerationStructureWriteInstanceDataNVBuilder {
43412    inner: PartitionedAccelerationStructureWriteInstanceDataNV,
43413}
43414impl PartitionedAccelerationStructureWriteInstanceDataNV {
43415    /// Start building this struct.
43416    #[inline]
43417    pub fn builder() -> PartitionedAccelerationStructureWriteInstanceDataNVBuilder {
43418        PartitionedAccelerationStructureWriteInstanceDataNVBuilder {
43419            inner: PartitionedAccelerationStructureWriteInstanceDataNV {
43420                ..Default::default()
43421            },
43422        }
43423    }
43424}
43425impl PartitionedAccelerationStructureWriteInstanceDataNVBuilder {
43426    #[inline]
43427    pub fn transform(mut self, value: TransformMatrixKHR) -> Self {
43428        self.inner.transform = value;
43429        self
43430    }
43431    #[inline]
43432    pub fn explicit_aabb(mut self, value: [f32; 6usize]) -> Self {
43433        self.inner.explicit_aabb = value;
43434        self
43435    }
43436    #[inline]
43437    pub fn instance_id(mut self, value: u32) -> Self {
43438        self.inner.instance_id = value;
43439        self
43440    }
43441    #[inline]
43442    pub fn instance_mask(mut self, value: u32) -> Self {
43443        self.inner.instance_mask = value;
43444        self
43445    }
43446    #[inline]
43447    pub fn instance_contribution_to_hit_group_index(mut self, value: u32) -> Self {
43448        self.inner.instance_contribution_to_hit_group_index = value;
43449        self
43450    }
43451    #[inline]
43452    pub fn instance_flags(
43453        mut self,
43454        value: PartitionedAccelerationStructureInstanceFlagsNV,
43455    ) -> Self {
43456        self.inner.instance_flags = value;
43457        self
43458    }
43459    #[inline]
43460    pub fn instance_index(mut self, value: u32) -> Self {
43461        self.inner.instance_index = value;
43462        self
43463    }
43464    #[inline]
43465    pub fn partition_index(mut self, value: u32) -> Self {
43466        self.inner.partition_index = value;
43467        self
43468    }
43469    #[inline]
43470    pub fn acceleration_structure(mut self, value: u64) -> Self {
43471        self.inner.acceleration_structure = value;
43472        self
43473    }
43474}
43475impl core::ops::Deref for PartitionedAccelerationStructureWriteInstanceDataNVBuilder {
43476    type Target = PartitionedAccelerationStructureWriteInstanceDataNV;
43477    #[inline]
43478    fn deref(&self) -> &Self::Target {
43479        &self.inner
43480    }
43481}
43482impl core::ops::DerefMut for PartitionedAccelerationStructureWriteInstanceDataNVBuilder {
43483    #[inline]
43484    fn deref_mut(&mut self) -> &mut Self::Target {
43485        &mut self.inner
43486    }
43487}
43488///Builder for [`PartitionedAccelerationStructureUpdateInstanceDataNV`].
43489pub struct PartitionedAccelerationStructureUpdateInstanceDataNVBuilder {
43490    inner: PartitionedAccelerationStructureUpdateInstanceDataNV,
43491}
43492impl PartitionedAccelerationStructureUpdateInstanceDataNV {
43493    /// Start building this struct.
43494    #[inline]
43495    pub fn builder() -> PartitionedAccelerationStructureUpdateInstanceDataNVBuilder {
43496        PartitionedAccelerationStructureUpdateInstanceDataNVBuilder {
43497            inner: PartitionedAccelerationStructureUpdateInstanceDataNV {
43498                ..Default::default()
43499            },
43500        }
43501    }
43502}
43503impl PartitionedAccelerationStructureUpdateInstanceDataNVBuilder {
43504    #[inline]
43505    pub fn instance_index(mut self, value: u32) -> Self {
43506        self.inner.instance_index = value;
43507        self
43508    }
43509    #[inline]
43510    pub fn instance_contribution_to_hit_group_index(mut self, value: u32) -> Self {
43511        self.inner.instance_contribution_to_hit_group_index = value;
43512        self
43513    }
43514    #[inline]
43515    pub fn acceleration_structure(mut self, value: u64) -> Self {
43516        self.inner.acceleration_structure = value;
43517        self
43518    }
43519}
43520impl core::ops::Deref for PartitionedAccelerationStructureUpdateInstanceDataNVBuilder {
43521    type Target = PartitionedAccelerationStructureUpdateInstanceDataNV;
43522    #[inline]
43523    fn deref(&self) -> &Self::Target {
43524        &self.inner
43525    }
43526}
43527impl core::ops::DerefMut
43528for PartitionedAccelerationStructureUpdateInstanceDataNVBuilder {
43529    #[inline]
43530    fn deref_mut(&mut self) -> &mut Self::Target {
43531        &mut self.inner
43532    }
43533}
43534///Builder for [`PartitionedAccelerationStructureWritePartitionTranslationDataNV`].
43535pub struct PartitionedAccelerationStructureWritePartitionTranslationDataNVBuilder {
43536    inner: PartitionedAccelerationStructureWritePartitionTranslationDataNV,
43537}
43538impl PartitionedAccelerationStructureWritePartitionTranslationDataNV {
43539    /// Start building this struct.
43540    #[inline]
43541    pub fn builder() -> PartitionedAccelerationStructureWritePartitionTranslationDataNVBuilder {
43542        PartitionedAccelerationStructureWritePartitionTranslationDataNVBuilder {
43543            inner: PartitionedAccelerationStructureWritePartitionTranslationDataNV {
43544                ..Default::default()
43545            },
43546        }
43547    }
43548}
43549impl PartitionedAccelerationStructureWritePartitionTranslationDataNVBuilder {
43550    #[inline]
43551    pub fn partition_index(mut self, value: u32) -> Self {
43552        self.inner.partition_index = value;
43553        self
43554    }
43555    #[inline]
43556    pub fn partition_translation(mut self, value: [f32; 3usize]) -> Self {
43557        self.inner.partition_translation = value;
43558        self
43559    }
43560}
43561impl core::ops::Deref
43562for PartitionedAccelerationStructureWritePartitionTranslationDataNVBuilder {
43563    type Target = PartitionedAccelerationStructureWritePartitionTranslationDataNV;
43564    #[inline]
43565    fn deref(&self) -> &Self::Target {
43566        &self.inner
43567    }
43568}
43569impl core::ops::DerefMut
43570for PartitionedAccelerationStructureWritePartitionTranslationDataNVBuilder {
43571    #[inline]
43572    fn deref_mut(&mut self) -> &mut Self::Target {
43573        &mut self.inner
43574    }
43575}
43576///Builder for [`WriteDescriptorSetPartitionedAccelerationStructureNV`] with lifetime-tied pNext safety.
43577pub struct WriteDescriptorSetPartitionedAccelerationStructureNVBuilder<'a> {
43578    inner: WriteDescriptorSetPartitionedAccelerationStructureNV,
43579    _marker: core::marker::PhantomData<&'a ()>,
43580}
43581impl WriteDescriptorSetPartitionedAccelerationStructureNV {
43582    /// Start building this struct; `s_type` is already set to the correct variant.
43583    #[inline]
43584    pub fn builder<'a>() -> WriteDescriptorSetPartitionedAccelerationStructureNVBuilder<
43585        'a,
43586    > {
43587        WriteDescriptorSetPartitionedAccelerationStructureNVBuilder {
43588            inner: WriteDescriptorSetPartitionedAccelerationStructureNV {
43589                s_type: StructureType::from_raw(1000570002i32),
43590                ..Default::default()
43591            },
43592            _marker: core::marker::PhantomData,
43593        }
43594    }
43595}
43596impl<'a> WriteDescriptorSetPartitionedAccelerationStructureNVBuilder<'a> {
43597    #[inline]
43598    pub fn acceleration_structure_count(mut self, value: u32) -> Self {
43599        self.inner.acceleration_structure_count = value;
43600        self
43601    }
43602    #[inline]
43603    pub fn acceleration_structures(mut self, slice: &'a [u64]) -> Self {
43604        self.inner.acceleration_structure_count = slice.len() as u32;
43605        self.inner.p_acceleration_structures = slice.as_ptr();
43606        self
43607    }
43608    ///Prepend a struct to the pNext chain. See [`WriteDescriptorSetPartitionedAccelerationStructureNV`]'s **Extended By** section for valid types.
43609    #[inline]
43610    pub fn push_next<T: ExtendsWriteDescriptorSetPartitionedAccelerationStructureNV>(
43611        mut self,
43612        next: &'a mut T,
43613    ) -> Self {
43614        unsafe {
43615            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
43616            (*next_ptr).p_next = self.inner.p_next as *mut _;
43617            self.inner.p_next = <*mut BaseOutStructure>::cast::<
43618                core::ffi::c_void,
43619            >(next_ptr);
43620        }
43621        self
43622    }
43623}
43624impl<'a> core::ops::Deref
43625for WriteDescriptorSetPartitionedAccelerationStructureNVBuilder<'a> {
43626    type Target = WriteDescriptorSetPartitionedAccelerationStructureNV;
43627    #[inline]
43628    fn deref(&self) -> &Self::Target {
43629        &self.inner
43630    }
43631}
43632impl<'a> core::ops::DerefMut
43633for WriteDescriptorSetPartitionedAccelerationStructureNVBuilder<'a> {
43634    #[inline]
43635    fn deref_mut(&mut self) -> &mut Self::Target {
43636        &mut self.inner
43637    }
43638}
43639///Builder for [`PartitionedAccelerationStructureInstancesInputNV`] with lifetime-tied pNext safety.
43640pub struct PartitionedAccelerationStructureInstancesInputNVBuilder<'a> {
43641    inner: PartitionedAccelerationStructureInstancesInputNV,
43642    _marker: core::marker::PhantomData<&'a ()>,
43643}
43644impl PartitionedAccelerationStructureInstancesInputNV {
43645    /// Start building this struct; `s_type` is already set to the correct variant.
43646    #[inline]
43647    pub fn builder<'a>() -> PartitionedAccelerationStructureInstancesInputNVBuilder<'a> {
43648        PartitionedAccelerationStructureInstancesInputNVBuilder {
43649            inner: PartitionedAccelerationStructureInstancesInputNV {
43650                s_type: StructureType::from_raw(1000570003i32),
43651                ..Default::default()
43652            },
43653            _marker: core::marker::PhantomData,
43654        }
43655    }
43656}
43657impl<'a> PartitionedAccelerationStructureInstancesInputNVBuilder<'a> {
43658    #[inline]
43659    pub fn flags(mut self, value: BuildAccelerationStructureFlagsKHR) -> Self {
43660        self.inner.flags = value;
43661        self
43662    }
43663    #[inline]
43664    pub fn instance_count(mut self, value: u32) -> Self {
43665        self.inner.instance_count = value;
43666        self
43667    }
43668    #[inline]
43669    pub fn max_instance_per_partition_count(mut self, value: u32) -> Self {
43670        self.inner.max_instance_per_partition_count = value;
43671        self
43672    }
43673    #[inline]
43674    pub fn partition_count(mut self, value: u32) -> Self {
43675        self.inner.partition_count = value;
43676        self
43677    }
43678    #[inline]
43679    pub fn max_instance_in_global_partition_count(mut self, value: u32) -> Self {
43680        self.inner.max_instance_in_global_partition_count = value;
43681        self
43682    }
43683    ///Prepend a struct to the pNext chain. See [`PartitionedAccelerationStructureInstancesInputNV`]'s **Extended By** section for valid types.
43684    #[inline]
43685    pub fn push_next<T: ExtendsPartitionedAccelerationStructureInstancesInputNV>(
43686        mut self,
43687        next: &'a mut T,
43688    ) -> Self {
43689        unsafe {
43690            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
43691            (*next_ptr).p_next = self.inner.p_next as *mut _;
43692            self.inner.p_next = <*mut BaseOutStructure>::cast::<
43693                core::ffi::c_void,
43694            >(next_ptr);
43695        }
43696        self
43697    }
43698}
43699impl<'a> core::ops::Deref
43700for PartitionedAccelerationStructureInstancesInputNVBuilder<'a> {
43701    type Target = PartitionedAccelerationStructureInstancesInputNV;
43702    #[inline]
43703    fn deref(&self) -> &Self::Target {
43704        &self.inner
43705    }
43706}
43707impl<'a> core::ops::DerefMut
43708for PartitionedAccelerationStructureInstancesInputNVBuilder<'a> {
43709    #[inline]
43710    fn deref_mut(&mut self) -> &mut Self::Target {
43711        &mut self.inner
43712    }
43713}
43714///Builder for [`BuildPartitionedAccelerationStructureInfoNV`] with lifetime-tied pNext safety.
43715pub struct BuildPartitionedAccelerationStructureInfoNVBuilder<'a> {
43716    inner: BuildPartitionedAccelerationStructureInfoNV,
43717    _marker: core::marker::PhantomData<&'a ()>,
43718}
43719impl BuildPartitionedAccelerationStructureInfoNV {
43720    /// Start building this struct; `s_type` is already set to the correct variant.
43721    #[inline]
43722    pub fn builder<'a>() -> BuildPartitionedAccelerationStructureInfoNVBuilder<'a> {
43723        BuildPartitionedAccelerationStructureInfoNVBuilder {
43724            inner: BuildPartitionedAccelerationStructureInfoNV {
43725                s_type: StructureType::from_raw(1000570004i32),
43726                ..Default::default()
43727            },
43728            _marker: core::marker::PhantomData,
43729        }
43730    }
43731}
43732impl<'a> BuildPartitionedAccelerationStructureInfoNVBuilder<'a> {
43733    #[inline]
43734    pub fn input(
43735        mut self,
43736        value: PartitionedAccelerationStructureInstancesInputNV,
43737    ) -> Self {
43738        self.inner.input = value;
43739        self
43740    }
43741    #[inline]
43742    pub fn src_acceleration_structure_data(mut self, value: u64) -> Self {
43743        self.inner.src_acceleration_structure_data = value;
43744        self
43745    }
43746    #[inline]
43747    pub fn dst_acceleration_structure_data(mut self, value: u64) -> Self {
43748        self.inner.dst_acceleration_structure_data = value;
43749        self
43750    }
43751    #[inline]
43752    pub fn scratch_data(mut self, value: u64) -> Self {
43753        self.inner.scratch_data = value;
43754        self
43755    }
43756    #[inline]
43757    pub fn src_infos(mut self, value: u64) -> Self {
43758        self.inner.src_infos = value;
43759        self
43760    }
43761    #[inline]
43762    pub fn src_infos_count(mut self, value: u64) -> Self {
43763        self.inner.src_infos_count = value;
43764        self
43765    }
43766    ///Prepend a struct to the pNext chain. See [`BuildPartitionedAccelerationStructureInfoNV`]'s **Extended By** section for valid types.
43767    #[inline]
43768    pub fn push_next<T: ExtendsBuildPartitionedAccelerationStructureInfoNV>(
43769        mut self,
43770        next: &'a mut T,
43771    ) -> Self {
43772        unsafe {
43773            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
43774            (*next_ptr).p_next = self.inner.p_next as *mut _;
43775            self.inner.p_next = <*mut BaseOutStructure>::cast::<
43776                core::ffi::c_void,
43777            >(next_ptr);
43778        }
43779        self
43780    }
43781}
43782impl<'a> core::ops::Deref for BuildPartitionedAccelerationStructureInfoNVBuilder<'a> {
43783    type Target = BuildPartitionedAccelerationStructureInfoNV;
43784    #[inline]
43785    fn deref(&self) -> &Self::Target {
43786        &self.inner
43787    }
43788}
43789impl<'a> core::ops::DerefMut for BuildPartitionedAccelerationStructureInfoNVBuilder<'a> {
43790    #[inline]
43791    fn deref_mut(&mut self) -> &mut Self::Target {
43792        &mut self.inner
43793    }
43794}
43795///Builder for [`PhysicalDeviceDiagnosticsConfigFeaturesNV`] with lifetime-tied pNext safety.
43796pub struct PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder<'a> {
43797    inner: PhysicalDeviceDiagnosticsConfigFeaturesNV,
43798    _marker: core::marker::PhantomData<&'a ()>,
43799}
43800impl PhysicalDeviceDiagnosticsConfigFeaturesNV {
43801    /// Start building this struct; `s_type` is already set to the correct variant.
43802    #[inline]
43803    pub fn builder<'a>() -> PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder<'a> {
43804        PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder {
43805            inner: PhysicalDeviceDiagnosticsConfigFeaturesNV {
43806                s_type: StructureType::from_raw(1000300000i32),
43807                ..Default::default()
43808            },
43809            _marker: core::marker::PhantomData,
43810        }
43811    }
43812}
43813impl<'a> PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder<'a> {
43814    #[inline]
43815    pub fn diagnostics_config(mut self, value: bool) -> Self {
43816        self.inner.diagnostics_config = value as u32;
43817        self
43818    }
43819    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDiagnosticsConfigFeaturesNV`]'s **Extended By** section for valid types.
43820    #[inline]
43821    pub fn push_next<T: ExtendsPhysicalDeviceDiagnosticsConfigFeaturesNV>(
43822        mut self,
43823        next: &'a mut T,
43824    ) -> Self {
43825        unsafe {
43826            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
43827            (*next_ptr).p_next = self.inner.p_next as *mut _;
43828            self.inner.p_next = <*mut BaseOutStructure>::cast::<
43829                core::ffi::c_void,
43830            >(next_ptr);
43831        }
43832        self
43833    }
43834}
43835impl<'a> core::ops::Deref for PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder<'a> {
43836    type Target = PhysicalDeviceDiagnosticsConfigFeaturesNV;
43837    #[inline]
43838    fn deref(&self) -> &Self::Target {
43839        &self.inner
43840    }
43841}
43842impl<'a> core::ops::DerefMut for PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder<'a> {
43843    #[inline]
43844    fn deref_mut(&mut self) -> &mut Self::Target {
43845        &mut self.inner
43846    }
43847}
43848///Builder for [`DeviceDiagnosticsConfigCreateInfoNV`] with lifetime-tied pNext safety.
43849pub struct DeviceDiagnosticsConfigCreateInfoNVBuilder<'a> {
43850    inner: DeviceDiagnosticsConfigCreateInfoNV,
43851    _marker: core::marker::PhantomData<&'a ()>,
43852}
43853impl DeviceDiagnosticsConfigCreateInfoNV {
43854    /// Start building this struct; `s_type` is already set to the correct variant.
43855    #[inline]
43856    pub fn builder<'a>() -> DeviceDiagnosticsConfigCreateInfoNVBuilder<'a> {
43857        DeviceDiagnosticsConfigCreateInfoNVBuilder {
43858            inner: DeviceDiagnosticsConfigCreateInfoNV {
43859                s_type: StructureType::from_raw(1000300001i32),
43860                ..Default::default()
43861            },
43862            _marker: core::marker::PhantomData,
43863        }
43864    }
43865}
43866impl<'a> DeviceDiagnosticsConfigCreateInfoNVBuilder<'a> {
43867    #[inline]
43868    pub fn flags(mut self, value: DeviceDiagnosticsConfigFlagsNV) -> Self {
43869        self.inner.flags = value;
43870        self
43871    }
43872    ///Prepend a struct to the pNext chain. See [`DeviceDiagnosticsConfigCreateInfoNV`]'s **Extended By** section for valid types.
43873    #[inline]
43874    pub fn push_next<T: ExtendsDeviceDiagnosticsConfigCreateInfoNV>(
43875        mut self,
43876        next: &'a mut T,
43877    ) -> Self {
43878        unsafe {
43879            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
43880            (*next_ptr).p_next = self.inner.p_next as *mut _;
43881            self.inner.p_next = <*mut BaseOutStructure>::cast::<
43882                core::ffi::c_void,
43883            >(next_ptr) as *const _;
43884        }
43885        self
43886    }
43887}
43888impl<'a> core::ops::Deref for DeviceDiagnosticsConfigCreateInfoNVBuilder<'a> {
43889    type Target = DeviceDiagnosticsConfigCreateInfoNV;
43890    #[inline]
43891    fn deref(&self) -> &Self::Target {
43892        &self.inner
43893    }
43894}
43895impl<'a> core::ops::DerefMut for DeviceDiagnosticsConfigCreateInfoNVBuilder<'a> {
43896    #[inline]
43897    fn deref_mut(&mut self) -> &mut Self::Target {
43898        &mut self.inner
43899    }
43900}
43901///Builder for [`PipelineOfflineCreateInfo`] with lifetime-tied pNext safety.
43902pub struct PipelineOfflineCreateInfoBuilder<'a> {
43903    inner: PipelineOfflineCreateInfo,
43904    _marker: core::marker::PhantomData<&'a ()>,
43905}
43906impl PipelineOfflineCreateInfo {
43907    /// Start building this struct; `s_type` is already set to the correct variant.
43908    #[inline]
43909    pub fn builder<'a>() -> PipelineOfflineCreateInfoBuilder<'a> {
43910        PipelineOfflineCreateInfoBuilder {
43911            inner: PipelineOfflineCreateInfo {
43912                s_type: StructureType::from_raw(1000298010i32),
43913                ..Default::default()
43914            },
43915            _marker: core::marker::PhantomData,
43916        }
43917    }
43918}
43919impl<'a> PipelineOfflineCreateInfoBuilder<'a> {
43920    #[inline]
43921    pub fn pipeline_identifier(mut self, value: [u8; UUID_SIZE as usize]) -> Self {
43922        self.inner.pipeline_identifier = value;
43923        self
43924    }
43925    #[inline]
43926    pub fn match_control(mut self, value: PipelineMatchControl) -> Self {
43927        self.inner.match_control = value;
43928        self
43929    }
43930    #[inline]
43931    pub fn pool_entry_size(mut self, value: u64) -> Self {
43932        self.inner.pool_entry_size = value;
43933        self
43934    }
43935    ///Prepend a struct to the pNext chain. See [`PipelineOfflineCreateInfo`]'s **Extended By** section for valid types.
43936    #[inline]
43937    pub fn push_next<T: ExtendsPipelineOfflineCreateInfo>(
43938        mut self,
43939        next: &'a mut T,
43940    ) -> Self {
43941        unsafe {
43942            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
43943            (*next_ptr).p_next = self.inner.p_next as *mut _;
43944            self.inner.p_next = <*mut BaseOutStructure>::cast::<
43945                core::ffi::c_void,
43946            >(next_ptr) as *const _;
43947        }
43948        self
43949    }
43950}
43951impl<'a> core::ops::Deref for PipelineOfflineCreateInfoBuilder<'a> {
43952    type Target = PipelineOfflineCreateInfo;
43953    #[inline]
43954    fn deref(&self) -> &Self::Target {
43955        &self.inner
43956    }
43957}
43958impl<'a> core::ops::DerefMut for PipelineOfflineCreateInfoBuilder<'a> {
43959    #[inline]
43960    fn deref_mut(&mut self) -> &mut Self::Target {
43961        &mut self.inner
43962    }
43963}
43964///Builder for [`PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures`] with lifetime-tied pNext safety.
43965pub struct PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesBuilder<'a> {
43966    inner: PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures,
43967    _marker: core::marker::PhantomData<&'a ()>,
43968}
43969impl PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {
43970    /// Start building this struct; `s_type` is already set to the correct variant.
43971    #[inline]
43972    pub fn builder<'a>() -> PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesBuilder<
43973        'a,
43974    > {
43975        PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesBuilder {
43976            inner: PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {
43977                s_type: StructureType::from_raw(1000325000i32),
43978                ..Default::default()
43979            },
43980            _marker: core::marker::PhantomData,
43981        }
43982    }
43983}
43984impl<'a> PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesBuilder<'a> {
43985    #[inline]
43986    pub fn shader_zero_initialize_workgroup_memory(mut self, value: bool) -> Self {
43987        self.inner.shader_zero_initialize_workgroup_memory = value as u32;
43988        self
43989    }
43990    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures`]'s **Extended By** section for valid types.
43991    #[inline]
43992    pub fn push_next<T: ExtendsPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures>(
43993        mut self,
43994        next: &'a mut T,
43995    ) -> Self {
43996        unsafe {
43997            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
43998            (*next_ptr).p_next = self.inner.p_next as *mut _;
43999            self.inner.p_next = <*mut BaseOutStructure>::cast::<
44000                core::ffi::c_void,
44001            >(next_ptr);
44002        }
44003        self
44004    }
44005}
44006impl<'a> core::ops::Deref
44007for PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesBuilder<'a> {
44008    type Target = PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
44009    #[inline]
44010    fn deref(&self) -> &Self::Target {
44011        &self.inner
44012    }
44013}
44014impl<'a> core::ops::DerefMut
44015for PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesBuilder<'a> {
44016    #[inline]
44017    fn deref_mut(&mut self) -> &mut Self::Target {
44018        &mut self.inner
44019    }
44020}
44021///Builder for [`PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR`] with lifetime-tied pNext safety.
44022pub struct PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder<'a> {
44023    inner: PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR,
44024    _marker: core::marker::PhantomData<&'a ()>,
44025}
44026impl PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
44027    /// Start building this struct; `s_type` is already set to the correct variant.
44028    #[inline]
44029    pub fn builder<'a>() -> PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder<
44030        'a,
44031    > {
44032        PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder {
44033            inner: PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
44034                s_type: StructureType::from_raw(1000323000i32),
44035                ..Default::default()
44036            },
44037            _marker: core::marker::PhantomData,
44038        }
44039    }
44040}
44041impl<'a> PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder<'a> {
44042    #[inline]
44043    pub fn shader_subgroup_uniform_control_flow(mut self, value: bool) -> Self {
44044        self.inner.shader_subgroup_uniform_control_flow = value as u32;
44045        self
44046    }
44047    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR`]'s **Extended By** section for valid types.
44048    #[inline]
44049    pub fn push_next<
44050        T: ExtendsPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR,
44051    >(mut self, next: &'a mut T) -> Self {
44052        unsafe {
44053            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
44054            (*next_ptr).p_next = self.inner.p_next as *mut _;
44055            self.inner.p_next = <*mut BaseOutStructure>::cast::<
44056                core::ffi::c_void,
44057            >(next_ptr);
44058        }
44059        self
44060    }
44061}
44062impl<'a> core::ops::Deref
44063for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder<'a> {
44064    type Target = PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
44065    #[inline]
44066    fn deref(&self) -> &Self::Target {
44067        &self.inner
44068    }
44069}
44070impl<'a> core::ops::DerefMut
44071for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder<'a> {
44072    #[inline]
44073    fn deref_mut(&mut self) -> &mut Self::Target {
44074        &mut self.inner
44075    }
44076}
44077///Builder for [`PhysicalDeviceRobustness2FeaturesKHR`] with lifetime-tied pNext safety.
44078pub struct PhysicalDeviceRobustness2FeaturesKHRBuilder<'a> {
44079    inner: PhysicalDeviceRobustness2FeaturesKHR,
44080    _marker: core::marker::PhantomData<&'a ()>,
44081}
44082impl PhysicalDeviceRobustness2FeaturesKHR {
44083    /// Start building this struct; `s_type` is already set to the correct variant.
44084    #[inline]
44085    pub fn builder<'a>() -> PhysicalDeviceRobustness2FeaturesKHRBuilder<'a> {
44086        PhysicalDeviceRobustness2FeaturesKHRBuilder {
44087            inner: PhysicalDeviceRobustness2FeaturesKHR {
44088                s_type: StructureType::from_raw(1000286000i32),
44089                ..Default::default()
44090            },
44091            _marker: core::marker::PhantomData,
44092        }
44093    }
44094}
44095impl<'a> PhysicalDeviceRobustness2FeaturesKHRBuilder<'a> {
44096    #[inline]
44097    pub fn robust_buffer_access2(mut self, value: bool) -> Self {
44098        self.inner.robust_buffer_access2 = value as u32;
44099        self
44100    }
44101    #[inline]
44102    pub fn robust_image_access2(mut self, value: bool) -> Self {
44103        self.inner.robust_image_access2 = value as u32;
44104        self
44105    }
44106    #[inline]
44107    pub fn null_descriptor(mut self, value: bool) -> Self {
44108        self.inner.null_descriptor = value as u32;
44109        self
44110    }
44111    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceRobustness2FeaturesKHR`]'s **Extended By** section for valid types.
44112    #[inline]
44113    pub fn push_next<T: ExtendsPhysicalDeviceRobustness2FeaturesKHR>(
44114        mut self,
44115        next: &'a mut T,
44116    ) -> Self {
44117        unsafe {
44118            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
44119            (*next_ptr).p_next = self.inner.p_next as *mut _;
44120            self.inner.p_next = <*mut BaseOutStructure>::cast::<
44121                core::ffi::c_void,
44122            >(next_ptr);
44123        }
44124        self
44125    }
44126}
44127impl<'a> core::ops::Deref for PhysicalDeviceRobustness2FeaturesKHRBuilder<'a> {
44128    type Target = PhysicalDeviceRobustness2FeaturesKHR;
44129    #[inline]
44130    fn deref(&self) -> &Self::Target {
44131        &self.inner
44132    }
44133}
44134impl<'a> core::ops::DerefMut for PhysicalDeviceRobustness2FeaturesKHRBuilder<'a> {
44135    #[inline]
44136    fn deref_mut(&mut self) -> &mut Self::Target {
44137        &mut self.inner
44138    }
44139}
44140///Builder for [`PhysicalDeviceRobustness2PropertiesKHR`] with lifetime-tied pNext safety.
44141pub struct PhysicalDeviceRobustness2PropertiesKHRBuilder<'a> {
44142    inner: PhysicalDeviceRobustness2PropertiesKHR,
44143    _marker: core::marker::PhantomData<&'a ()>,
44144}
44145impl PhysicalDeviceRobustness2PropertiesKHR {
44146    /// Start building this struct; `s_type` is already set to the correct variant.
44147    #[inline]
44148    pub fn builder<'a>() -> PhysicalDeviceRobustness2PropertiesKHRBuilder<'a> {
44149        PhysicalDeviceRobustness2PropertiesKHRBuilder {
44150            inner: PhysicalDeviceRobustness2PropertiesKHR {
44151                s_type: StructureType::from_raw(1000286001i32),
44152                ..Default::default()
44153            },
44154            _marker: core::marker::PhantomData,
44155        }
44156    }
44157}
44158impl<'a> PhysicalDeviceRobustness2PropertiesKHRBuilder<'a> {
44159    #[inline]
44160    pub fn robust_storage_buffer_access_size_alignment(mut self, value: u64) -> Self {
44161        self.inner.robust_storage_buffer_access_size_alignment = value;
44162        self
44163    }
44164    #[inline]
44165    pub fn robust_uniform_buffer_access_size_alignment(mut self, value: u64) -> Self {
44166        self.inner.robust_uniform_buffer_access_size_alignment = value;
44167        self
44168    }
44169}
44170impl<'a> core::ops::Deref for PhysicalDeviceRobustness2PropertiesKHRBuilder<'a> {
44171    type Target = PhysicalDeviceRobustness2PropertiesKHR;
44172    #[inline]
44173    fn deref(&self) -> &Self::Target {
44174        &self.inner
44175    }
44176}
44177impl<'a> core::ops::DerefMut for PhysicalDeviceRobustness2PropertiesKHRBuilder<'a> {
44178    #[inline]
44179    fn deref_mut(&mut self) -> &mut Self::Target {
44180        &mut self.inner
44181    }
44182}
44183///Builder for [`PhysicalDeviceImageRobustnessFeatures`] with lifetime-tied pNext safety.
44184pub struct PhysicalDeviceImageRobustnessFeaturesBuilder<'a> {
44185    inner: PhysicalDeviceImageRobustnessFeatures,
44186    _marker: core::marker::PhantomData<&'a ()>,
44187}
44188impl PhysicalDeviceImageRobustnessFeatures {
44189    /// Start building this struct; `s_type` is already set to the correct variant.
44190    #[inline]
44191    pub fn builder<'a>() -> PhysicalDeviceImageRobustnessFeaturesBuilder<'a> {
44192        PhysicalDeviceImageRobustnessFeaturesBuilder {
44193            inner: PhysicalDeviceImageRobustnessFeatures {
44194                s_type: StructureType::from_raw(1000335000i32),
44195                ..Default::default()
44196            },
44197            _marker: core::marker::PhantomData,
44198        }
44199    }
44200}
44201impl<'a> PhysicalDeviceImageRobustnessFeaturesBuilder<'a> {
44202    #[inline]
44203    pub fn robust_image_access(mut self, value: bool) -> Self {
44204        self.inner.robust_image_access = value as u32;
44205        self
44206    }
44207    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceImageRobustnessFeatures`]'s **Extended By** section for valid types.
44208    #[inline]
44209    pub fn push_next<T: ExtendsPhysicalDeviceImageRobustnessFeatures>(
44210        mut self,
44211        next: &'a mut T,
44212    ) -> Self {
44213        unsafe {
44214            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
44215            (*next_ptr).p_next = self.inner.p_next as *mut _;
44216            self.inner.p_next = <*mut BaseOutStructure>::cast::<
44217                core::ffi::c_void,
44218            >(next_ptr);
44219        }
44220        self
44221    }
44222}
44223impl<'a> core::ops::Deref for PhysicalDeviceImageRobustnessFeaturesBuilder<'a> {
44224    type Target = PhysicalDeviceImageRobustnessFeatures;
44225    #[inline]
44226    fn deref(&self) -> &Self::Target {
44227        &self.inner
44228    }
44229}
44230impl<'a> core::ops::DerefMut for PhysicalDeviceImageRobustnessFeaturesBuilder<'a> {
44231    #[inline]
44232    fn deref_mut(&mut self) -> &mut Self::Target {
44233        &mut self.inner
44234    }
44235}
44236///Builder for [`PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR`] with lifetime-tied pNext safety.
44237pub struct PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder<'a> {
44238    inner: PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR,
44239    _marker: core::marker::PhantomData<&'a ()>,
44240}
44241impl PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
44242    /// Start building this struct; `s_type` is already set to the correct variant.
44243    #[inline]
44244    pub fn builder<'a>() -> PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder<
44245        'a,
44246    > {
44247        PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder {
44248            inner: PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
44249                s_type: StructureType::from_raw(1000336000i32),
44250                ..Default::default()
44251            },
44252            _marker: core::marker::PhantomData,
44253        }
44254    }
44255}
44256impl<'a> PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder<'a> {
44257    #[inline]
44258    pub fn workgroup_memory_explicit_layout(mut self, value: bool) -> Self {
44259        self.inner.workgroup_memory_explicit_layout = value as u32;
44260        self
44261    }
44262    #[inline]
44263    pub fn workgroup_memory_explicit_layout_scalar_block_layout(
44264        mut self,
44265        value: bool,
44266    ) -> Self {
44267        self.inner.workgroup_memory_explicit_layout_scalar_block_layout = value as u32;
44268        self
44269    }
44270    #[inline]
44271    pub fn workgroup_memory_explicit_layout8_bit_access(mut self, value: bool) -> Self {
44272        self.inner.workgroup_memory_explicit_layout8_bit_access = value as u32;
44273        self
44274    }
44275    #[inline]
44276    pub fn workgroup_memory_explicit_layout16_bit_access(mut self, value: bool) -> Self {
44277        self.inner.workgroup_memory_explicit_layout16_bit_access = value as u32;
44278        self
44279    }
44280    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR`]'s **Extended By** section for valid types.
44281    #[inline]
44282    pub fn push_next<T: ExtendsPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>(
44283        mut self,
44284        next: &'a mut T,
44285    ) -> Self {
44286        unsafe {
44287            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
44288            (*next_ptr).p_next = self.inner.p_next as *mut _;
44289            self.inner.p_next = <*mut BaseOutStructure>::cast::<
44290                core::ffi::c_void,
44291            >(next_ptr);
44292        }
44293        self
44294    }
44295}
44296impl<'a> core::ops::Deref
44297for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder<'a> {
44298    type Target = PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
44299    #[inline]
44300    fn deref(&self) -> &Self::Target {
44301        &self.inner
44302    }
44303}
44304impl<'a> core::ops::DerefMut
44305for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder<'a> {
44306    #[inline]
44307    fn deref_mut(&mut self) -> &mut Self::Target {
44308        &mut self.inner
44309    }
44310}
44311///Builder for [`PhysicalDevicePortabilitySubsetFeaturesKHR`] with lifetime-tied pNext safety.
44312pub struct PhysicalDevicePortabilitySubsetFeaturesKHRBuilder<'a> {
44313    inner: PhysicalDevicePortabilitySubsetFeaturesKHR,
44314    _marker: core::marker::PhantomData<&'a ()>,
44315}
44316impl PhysicalDevicePortabilitySubsetFeaturesKHR {
44317    /// Start building this struct; `s_type` is already set to the correct variant.
44318    #[inline]
44319    pub fn builder<'a>() -> PhysicalDevicePortabilitySubsetFeaturesKHRBuilder<'a> {
44320        PhysicalDevicePortabilitySubsetFeaturesKHRBuilder {
44321            inner: PhysicalDevicePortabilitySubsetFeaturesKHR {
44322                s_type: StructureType::from_raw(1000163000i32),
44323                ..Default::default()
44324            },
44325            _marker: core::marker::PhantomData,
44326        }
44327    }
44328}
44329impl<'a> PhysicalDevicePortabilitySubsetFeaturesKHRBuilder<'a> {
44330    #[inline]
44331    pub fn constant_alpha_color_blend_factors(mut self, value: bool) -> Self {
44332        self.inner.constant_alpha_color_blend_factors = value as u32;
44333        self
44334    }
44335    #[inline]
44336    pub fn events(mut self, value: bool) -> Self {
44337        self.inner.events = value as u32;
44338        self
44339    }
44340    #[inline]
44341    pub fn image_view_format_reinterpretation(mut self, value: bool) -> Self {
44342        self.inner.image_view_format_reinterpretation = value as u32;
44343        self
44344    }
44345    #[inline]
44346    pub fn image_view_format_swizzle(mut self, value: bool) -> Self {
44347        self.inner.image_view_format_swizzle = value as u32;
44348        self
44349    }
44350    #[inline]
44351    pub fn image_view2_d_on3_d_image(mut self, value: bool) -> Self {
44352        self.inner.image_view2_d_on3_d_image = value as u32;
44353        self
44354    }
44355    #[inline]
44356    pub fn multisample_array_image(mut self, value: bool) -> Self {
44357        self.inner.multisample_array_image = value as u32;
44358        self
44359    }
44360    #[inline]
44361    pub fn mutable_comparison_samplers(mut self, value: bool) -> Self {
44362        self.inner.mutable_comparison_samplers = value as u32;
44363        self
44364    }
44365    #[inline]
44366    pub fn point_polygons(mut self, value: bool) -> Self {
44367        self.inner.point_polygons = value as u32;
44368        self
44369    }
44370    #[inline]
44371    pub fn sampler_mip_lod_bias(mut self, value: bool) -> Self {
44372        self.inner.sampler_mip_lod_bias = value as u32;
44373        self
44374    }
44375    #[inline]
44376    pub fn separate_stencil_mask_ref(mut self, value: bool) -> Self {
44377        self.inner.separate_stencil_mask_ref = value as u32;
44378        self
44379    }
44380    #[inline]
44381    pub fn shader_sample_rate_interpolation_functions(mut self, value: bool) -> Self {
44382        self.inner.shader_sample_rate_interpolation_functions = value as u32;
44383        self
44384    }
44385    #[inline]
44386    pub fn tessellation_isolines(mut self, value: bool) -> Self {
44387        self.inner.tessellation_isolines = value as u32;
44388        self
44389    }
44390    #[inline]
44391    pub fn tessellation_point_mode(mut self, value: bool) -> Self {
44392        self.inner.tessellation_point_mode = value as u32;
44393        self
44394    }
44395    #[inline]
44396    pub fn triangle_fans(mut self, value: bool) -> Self {
44397        self.inner.triangle_fans = value as u32;
44398        self
44399    }
44400    #[inline]
44401    pub fn vertex_attribute_access_beyond_stride(mut self, value: bool) -> Self {
44402        self.inner.vertex_attribute_access_beyond_stride = value as u32;
44403        self
44404    }
44405    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePortabilitySubsetFeaturesKHR`]'s **Extended By** section for valid types.
44406    #[inline]
44407    pub fn push_next<T: ExtendsPhysicalDevicePortabilitySubsetFeaturesKHR>(
44408        mut self,
44409        next: &'a mut T,
44410    ) -> Self {
44411        unsafe {
44412            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
44413            (*next_ptr).p_next = self.inner.p_next as *mut _;
44414            self.inner.p_next = <*mut BaseOutStructure>::cast::<
44415                core::ffi::c_void,
44416            >(next_ptr);
44417        }
44418        self
44419    }
44420}
44421impl<'a> core::ops::Deref for PhysicalDevicePortabilitySubsetFeaturesKHRBuilder<'a> {
44422    type Target = PhysicalDevicePortabilitySubsetFeaturesKHR;
44423    #[inline]
44424    fn deref(&self) -> &Self::Target {
44425        &self.inner
44426    }
44427}
44428impl<'a> core::ops::DerefMut for PhysicalDevicePortabilitySubsetFeaturesKHRBuilder<'a> {
44429    #[inline]
44430    fn deref_mut(&mut self) -> &mut Self::Target {
44431        &mut self.inner
44432    }
44433}
44434///Builder for [`PhysicalDevicePortabilitySubsetPropertiesKHR`] with lifetime-tied pNext safety.
44435pub struct PhysicalDevicePortabilitySubsetPropertiesKHRBuilder<'a> {
44436    inner: PhysicalDevicePortabilitySubsetPropertiesKHR,
44437    _marker: core::marker::PhantomData<&'a ()>,
44438}
44439impl PhysicalDevicePortabilitySubsetPropertiesKHR {
44440    /// Start building this struct; `s_type` is already set to the correct variant.
44441    #[inline]
44442    pub fn builder<'a>() -> PhysicalDevicePortabilitySubsetPropertiesKHRBuilder<'a> {
44443        PhysicalDevicePortabilitySubsetPropertiesKHRBuilder {
44444            inner: PhysicalDevicePortabilitySubsetPropertiesKHR {
44445                s_type: StructureType::from_raw(1000163001i32),
44446                ..Default::default()
44447            },
44448            _marker: core::marker::PhantomData,
44449        }
44450    }
44451}
44452impl<'a> PhysicalDevicePortabilitySubsetPropertiesKHRBuilder<'a> {
44453    #[inline]
44454    pub fn min_vertex_input_binding_stride_alignment(mut self, value: u32) -> Self {
44455        self.inner.min_vertex_input_binding_stride_alignment = value;
44456        self
44457    }
44458}
44459impl<'a> core::ops::Deref for PhysicalDevicePortabilitySubsetPropertiesKHRBuilder<'a> {
44460    type Target = PhysicalDevicePortabilitySubsetPropertiesKHR;
44461    #[inline]
44462    fn deref(&self) -> &Self::Target {
44463        &self.inner
44464    }
44465}
44466impl<'a> core::ops::DerefMut
44467for PhysicalDevicePortabilitySubsetPropertiesKHRBuilder<'a> {
44468    #[inline]
44469    fn deref_mut(&mut self) -> &mut Self::Target {
44470        &mut self.inner
44471    }
44472}
44473///Builder for [`PhysicalDevice4444FormatsFeaturesEXT`] with lifetime-tied pNext safety.
44474pub struct PhysicalDevice4444FormatsFeaturesEXTBuilder<'a> {
44475    inner: PhysicalDevice4444FormatsFeaturesEXT,
44476    _marker: core::marker::PhantomData<&'a ()>,
44477}
44478impl PhysicalDevice4444FormatsFeaturesEXT {
44479    /// Start building this struct; `s_type` is already set to the correct variant.
44480    #[inline]
44481    pub fn builder<'a>() -> PhysicalDevice4444FormatsFeaturesEXTBuilder<'a> {
44482        PhysicalDevice4444FormatsFeaturesEXTBuilder {
44483            inner: PhysicalDevice4444FormatsFeaturesEXT {
44484                s_type: StructureType::from_raw(1000340000i32),
44485                ..Default::default()
44486            },
44487            _marker: core::marker::PhantomData,
44488        }
44489    }
44490}
44491impl<'a> PhysicalDevice4444FormatsFeaturesEXTBuilder<'a> {
44492    #[inline]
44493    pub fn format_a4r4g4b4(mut self, value: bool) -> Self {
44494        self.inner.format_a4r4g4b4 = value as u32;
44495        self
44496    }
44497    #[inline]
44498    pub fn format_a4b4g4r4(mut self, value: bool) -> Self {
44499        self.inner.format_a4b4g4r4 = value as u32;
44500        self
44501    }
44502    ///Prepend a struct to the pNext chain. See [`PhysicalDevice4444FormatsFeaturesEXT`]'s **Extended By** section for valid types.
44503    #[inline]
44504    pub fn push_next<T: ExtendsPhysicalDevice4444FormatsFeaturesEXT>(
44505        mut self,
44506        next: &'a mut T,
44507    ) -> Self {
44508        unsafe {
44509            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
44510            (*next_ptr).p_next = self.inner.p_next as *mut _;
44511            self.inner.p_next = <*mut BaseOutStructure>::cast::<
44512                core::ffi::c_void,
44513            >(next_ptr);
44514        }
44515        self
44516    }
44517}
44518impl<'a> core::ops::Deref for PhysicalDevice4444FormatsFeaturesEXTBuilder<'a> {
44519    type Target = PhysicalDevice4444FormatsFeaturesEXT;
44520    #[inline]
44521    fn deref(&self) -> &Self::Target {
44522        &self.inner
44523    }
44524}
44525impl<'a> core::ops::DerefMut for PhysicalDevice4444FormatsFeaturesEXTBuilder<'a> {
44526    #[inline]
44527    fn deref_mut(&mut self) -> &mut Self::Target {
44528        &mut self.inner
44529    }
44530}
44531///Builder for [`PhysicalDeviceSubpassShadingFeaturesHUAWEI`] with lifetime-tied pNext safety.
44532pub struct PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder<'a> {
44533    inner: PhysicalDeviceSubpassShadingFeaturesHUAWEI,
44534    _marker: core::marker::PhantomData<&'a ()>,
44535}
44536impl PhysicalDeviceSubpassShadingFeaturesHUAWEI {
44537    /// Start building this struct; `s_type` is already set to the correct variant.
44538    #[inline]
44539    pub fn builder<'a>() -> PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder<'a> {
44540        PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder {
44541            inner: PhysicalDeviceSubpassShadingFeaturesHUAWEI {
44542                s_type: StructureType::from_raw(1000369001i32),
44543                ..Default::default()
44544            },
44545            _marker: core::marker::PhantomData,
44546        }
44547    }
44548}
44549impl<'a> PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder<'a> {
44550    #[inline]
44551    pub fn subpass_shading(mut self, value: bool) -> Self {
44552        self.inner.subpass_shading = value as u32;
44553        self
44554    }
44555    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceSubpassShadingFeaturesHUAWEI`]'s **Extended By** section for valid types.
44556    #[inline]
44557    pub fn push_next<T: ExtendsPhysicalDeviceSubpassShadingFeaturesHUAWEI>(
44558        mut self,
44559        next: &'a mut T,
44560    ) -> Self {
44561        unsafe {
44562            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
44563            (*next_ptr).p_next = self.inner.p_next as *mut _;
44564            self.inner.p_next = <*mut BaseOutStructure>::cast::<
44565                core::ffi::c_void,
44566            >(next_ptr);
44567        }
44568        self
44569    }
44570}
44571impl<'a> core::ops::Deref for PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder<'a> {
44572    type Target = PhysicalDeviceSubpassShadingFeaturesHUAWEI;
44573    #[inline]
44574    fn deref(&self) -> &Self::Target {
44575        &self.inner
44576    }
44577}
44578impl<'a> core::ops::DerefMut for PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder<'a> {
44579    #[inline]
44580    fn deref_mut(&mut self) -> &mut Self::Target {
44581        &mut self.inner
44582    }
44583}
44584///Builder for [`PhysicalDeviceClusterCullingShaderFeaturesHUAWEI`] with lifetime-tied pNext safety.
44585pub struct PhysicalDeviceClusterCullingShaderFeaturesHUAWEIBuilder<'a> {
44586    inner: PhysicalDeviceClusterCullingShaderFeaturesHUAWEI,
44587    _marker: core::marker::PhantomData<&'a ()>,
44588}
44589impl PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
44590    /// Start building this struct; `s_type` is already set to the correct variant.
44591    #[inline]
44592    pub fn builder<'a>() -> PhysicalDeviceClusterCullingShaderFeaturesHUAWEIBuilder<'a> {
44593        PhysicalDeviceClusterCullingShaderFeaturesHUAWEIBuilder {
44594            inner: PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
44595                s_type: StructureType::from_raw(1000404000i32),
44596                ..Default::default()
44597            },
44598            _marker: core::marker::PhantomData,
44599        }
44600    }
44601}
44602impl<'a> PhysicalDeviceClusterCullingShaderFeaturesHUAWEIBuilder<'a> {
44603    #[inline]
44604    pub fn clusterculling_shader(mut self, value: bool) -> Self {
44605        self.inner.clusterculling_shader = value as u32;
44606        self
44607    }
44608    #[inline]
44609    pub fn multiview_cluster_culling_shader(mut self, value: bool) -> Self {
44610        self.inner.multiview_cluster_culling_shader = value as u32;
44611        self
44612    }
44613    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceClusterCullingShaderFeaturesHUAWEI`]'s **Extended By** section for valid types.
44614    #[inline]
44615    pub fn push_next<T: ExtendsPhysicalDeviceClusterCullingShaderFeaturesHUAWEI>(
44616        mut self,
44617        next: &'a mut T,
44618    ) -> Self {
44619        unsafe {
44620            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
44621            (*next_ptr).p_next = self.inner.p_next as *mut _;
44622            self.inner.p_next = <*mut BaseOutStructure>::cast::<
44623                core::ffi::c_void,
44624            >(next_ptr);
44625        }
44626        self
44627    }
44628}
44629impl<'a> core::ops::Deref
44630for PhysicalDeviceClusterCullingShaderFeaturesHUAWEIBuilder<'a> {
44631    type Target = PhysicalDeviceClusterCullingShaderFeaturesHUAWEI;
44632    #[inline]
44633    fn deref(&self) -> &Self::Target {
44634        &self.inner
44635    }
44636}
44637impl<'a> core::ops::DerefMut
44638for PhysicalDeviceClusterCullingShaderFeaturesHUAWEIBuilder<'a> {
44639    #[inline]
44640    fn deref_mut(&mut self) -> &mut Self::Target {
44641        &mut self.inner
44642    }
44643}
44644///Builder for [`PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI`] with lifetime-tied pNext safety.
44645pub struct PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEIBuilder<'a> {
44646    inner: PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI,
44647    _marker: core::marker::PhantomData<&'a ()>,
44648}
44649impl PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
44650    /// Start building this struct; `s_type` is already set to the correct variant.
44651    #[inline]
44652    pub fn builder<'a>() -> PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEIBuilder<
44653        'a,
44654    > {
44655        PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEIBuilder {
44656            inner: PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
44657                s_type: StructureType::from_raw(1000404002i32),
44658                ..Default::default()
44659            },
44660            _marker: core::marker::PhantomData,
44661        }
44662    }
44663}
44664impl<'a> PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEIBuilder<'a> {
44665    #[inline]
44666    pub fn cluster_shading_rate(mut self, value: bool) -> Self {
44667        self.inner.cluster_shading_rate = value as u32;
44668        self
44669    }
44670    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI`]'s **Extended By** section for valid types.
44671    #[inline]
44672    pub fn push_next<T: ExtendsPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI>(
44673        mut self,
44674        next: &'a mut T,
44675    ) -> Self {
44676        unsafe {
44677            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
44678            (*next_ptr).p_next = self.inner.p_next as *mut _;
44679            self.inner.p_next = <*mut BaseOutStructure>::cast::<
44680                core::ffi::c_void,
44681            >(next_ptr);
44682        }
44683        self
44684    }
44685}
44686impl<'a> core::ops::Deref
44687for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEIBuilder<'a> {
44688    type Target = PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI;
44689    #[inline]
44690    fn deref(&self) -> &Self::Target {
44691        &self.inner
44692    }
44693}
44694impl<'a> core::ops::DerefMut
44695for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEIBuilder<'a> {
44696    #[inline]
44697    fn deref_mut(&mut self) -> &mut Self::Target {
44698        &mut self.inner
44699    }
44700}
44701///Builder for [`BufferCopy2`] with lifetime-tied pNext safety.
44702pub struct BufferCopy2Builder<'a> {
44703    inner: BufferCopy2,
44704    _marker: core::marker::PhantomData<&'a ()>,
44705}
44706impl BufferCopy2 {
44707    /// Start building this struct; `s_type` is already set to the correct variant.
44708    #[inline]
44709    pub fn builder<'a>() -> BufferCopy2Builder<'a> {
44710        BufferCopy2Builder {
44711            inner: BufferCopy2 {
44712                s_type: StructureType::from_raw(1000337006i32),
44713                ..Default::default()
44714            },
44715            _marker: core::marker::PhantomData,
44716        }
44717    }
44718}
44719impl<'a> BufferCopy2Builder<'a> {
44720    #[inline]
44721    pub fn src_offset(mut self, value: u64) -> Self {
44722        self.inner.src_offset = value;
44723        self
44724    }
44725    #[inline]
44726    pub fn dst_offset(mut self, value: u64) -> Self {
44727        self.inner.dst_offset = value;
44728        self
44729    }
44730    #[inline]
44731    pub fn size(mut self, value: u64) -> Self {
44732        self.inner.size = value;
44733        self
44734    }
44735    ///Prepend a struct to the pNext chain. See [`BufferCopy2`]'s **Extended By** section for valid types.
44736    #[inline]
44737    pub fn push_next<T: ExtendsBufferCopy2>(mut self, next: &'a mut T) -> Self {
44738        unsafe {
44739            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
44740            (*next_ptr).p_next = self.inner.p_next as *mut _;
44741            self.inner.p_next = <*mut BaseOutStructure>::cast::<
44742                core::ffi::c_void,
44743            >(next_ptr) as *const _;
44744        }
44745        self
44746    }
44747}
44748impl<'a> core::ops::Deref for BufferCopy2Builder<'a> {
44749    type Target = BufferCopy2;
44750    #[inline]
44751    fn deref(&self) -> &Self::Target {
44752        &self.inner
44753    }
44754}
44755impl<'a> core::ops::DerefMut for BufferCopy2Builder<'a> {
44756    #[inline]
44757    fn deref_mut(&mut self) -> &mut Self::Target {
44758        &mut self.inner
44759    }
44760}
44761///Builder for [`ImageCopy2`] with lifetime-tied pNext safety.
44762pub struct ImageCopy2Builder<'a> {
44763    inner: ImageCopy2,
44764    _marker: core::marker::PhantomData<&'a ()>,
44765}
44766impl ImageCopy2 {
44767    /// Start building this struct; `s_type` is already set to the correct variant.
44768    #[inline]
44769    pub fn builder<'a>() -> ImageCopy2Builder<'a> {
44770        ImageCopy2Builder {
44771            inner: ImageCopy2 {
44772                s_type: StructureType::from_raw(1000337007i32),
44773                ..Default::default()
44774            },
44775            _marker: core::marker::PhantomData,
44776        }
44777    }
44778}
44779impl<'a> ImageCopy2Builder<'a> {
44780    #[inline]
44781    pub fn src_subresource(mut self, value: ImageSubresourceLayers) -> Self {
44782        self.inner.src_subresource = value;
44783        self
44784    }
44785    #[inline]
44786    pub fn src_offset(mut self, value: Offset3D) -> Self {
44787        self.inner.src_offset = value;
44788        self
44789    }
44790    #[inline]
44791    pub fn dst_subresource(mut self, value: ImageSubresourceLayers) -> Self {
44792        self.inner.dst_subresource = value;
44793        self
44794    }
44795    #[inline]
44796    pub fn dst_offset(mut self, value: Offset3D) -> Self {
44797        self.inner.dst_offset = value;
44798        self
44799    }
44800    #[inline]
44801    pub fn extent(mut self, value: Extent3D) -> Self {
44802        self.inner.extent = value;
44803        self
44804    }
44805    ///Prepend a struct to the pNext chain. See [`ImageCopy2`]'s **Extended By** section for valid types.
44806    #[inline]
44807    pub fn push_next<T: ExtendsImageCopy2>(mut self, next: &'a mut T) -> Self {
44808        unsafe {
44809            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
44810            (*next_ptr).p_next = self.inner.p_next as *mut _;
44811            self.inner.p_next = <*mut BaseOutStructure>::cast::<
44812                core::ffi::c_void,
44813            >(next_ptr) as *const _;
44814        }
44815        self
44816    }
44817}
44818impl<'a> core::ops::Deref for ImageCopy2Builder<'a> {
44819    type Target = ImageCopy2;
44820    #[inline]
44821    fn deref(&self) -> &Self::Target {
44822        &self.inner
44823    }
44824}
44825impl<'a> core::ops::DerefMut for ImageCopy2Builder<'a> {
44826    #[inline]
44827    fn deref_mut(&mut self) -> &mut Self::Target {
44828        &mut self.inner
44829    }
44830}
44831///Builder for [`ImageBlit2`] with lifetime-tied pNext safety.
44832pub struct ImageBlit2Builder<'a> {
44833    inner: ImageBlit2,
44834    _marker: core::marker::PhantomData<&'a ()>,
44835}
44836impl ImageBlit2 {
44837    /// Start building this struct; `s_type` is already set to the correct variant.
44838    #[inline]
44839    pub fn builder<'a>() -> ImageBlit2Builder<'a> {
44840        ImageBlit2Builder {
44841            inner: ImageBlit2 {
44842                s_type: StructureType::from_raw(1000337008i32),
44843                ..Default::default()
44844            },
44845            _marker: core::marker::PhantomData,
44846        }
44847    }
44848}
44849impl<'a> ImageBlit2Builder<'a> {
44850    #[inline]
44851    pub fn src_subresource(mut self, value: ImageSubresourceLayers) -> Self {
44852        self.inner.src_subresource = value;
44853        self
44854    }
44855    #[inline]
44856    pub fn src_offsets(mut self, value: [Offset3D; 2usize]) -> Self {
44857        self.inner.src_offsets = value;
44858        self
44859    }
44860    #[inline]
44861    pub fn dst_subresource(mut self, value: ImageSubresourceLayers) -> Self {
44862        self.inner.dst_subresource = value;
44863        self
44864    }
44865    #[inline]
44866    pub fn dst_offsets(mut self, value: [Offset3D; 2usize]) -> Self {
44867        self.inner.dst_offsets = value;
44868        self
44869    }
44870    ///Prepend a struct to the pNext chain. See [`ImageBlit2`]'s **Extended By** section for valid types.
44871    #[inline]
44872    pub fn push_next<T: ExtendsImageBlit2>(mut self, next: &'a mut T) -> Self {
44873        unsafe {
44874            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
44875            (*next_ptr).p_next = self.inner.p_next as *mut _;
44876            self.inner.p_next = <*mut BaseOutStructure>::cast::<
44877                core::ffi::c_void,
44878            >(next_ptr) as *const _;
44879        }
44880        self
44881    }
44882}
44883impl<'a> core::ops::Deref for ImageBlit2Builder<'a> {
44884    type Target = ImageBlit2;
44885    #[inline]
44886    fn deref(&self) -> &Self::Target {
44887        &self.inner
44888    }
44889}
44890impl<'a> core::ops::DerefMut for ImageBlit2Builder<'a> {
44891    #[inline]
44892    fn deref_mut(&mut self) -> &mut Self::Target {
44893        &mut self.inner
44894    }
44895}
44896///Builder for [`BufferImageCopy2`] with lifetime-tied pNext safety.
44897pub struct BufferImageCopy2Builder<'a> {
44898    inner: BufferImageCopy2,
44899    _marker: core::marker::PhantomData<&'a ()>,
44900}
44901impl BufferImageCopy2 {
44902    /// Start building this struct; `s_type` is already set to the correct variant.
44903    #[inline]
44904    pub fn builder<'a>() -> BufferImageCopy2Builder<'a> {
44905        BufferImageCopy2Builder {
44906            inner: BufferImageCopy2 {
44907                s_type: StructureType::from_raw(1000337009i32),
44908                ..Default::default()
44909            },
44910            _marker: core::marker::PhantomData,
44911        }
44912    }
44913}
44914impl<'a> BufferImageCopy2Builder<'a> {
44915    #[inline]
44916    pub fn buffer_offset(mut self, value: u64) -> Self {
44917        self.inner.buffer_offset = value;
44918        self
44919    }
44920    #[inline]
44921    pub fn buffer_row_length(mut self, value: u32) -> Self {
44922        self.inner.buffer_row_length = value;
44923        self
44924    }
44925    #[inline]
44926    pub fn buffer_image_height(mut self, value: u32) -> Self {
44927        self.inner.buffer_image_height = value;
44928        self
44929    }
44930    #[inline]
44931    pub fn image_subresource(mut self, value: ImageSubresourceLayers) -> Self {
44932        self.inner.image_subresource = value;
44933        self
44934    }
44935    #[inline]
44936    pub fn image_offset(mut self, value: Offset3D) -> Self {
44937        self.inner.image_offset = value;
44938        self
44939    }
44940    #[inline]
44941    pub fn image_extent(mut self, value: Extent3D) -> Self {
44942        self.inner.image_extent = value;
44943        self
44944    }
44945    ///Prepend a struct to the pNext chain. See [`BufferImageCopy2`]'s **Extended By** section for valid types.
44946    #[inline]
44947    pub fn push_next<T: ExtendsBufferImageCopy2>(mut self, next: &'a mut T) -> Self {
44948        unsafe {
44949            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
44950            (*next_ptr).p_next = self.inner.p_next as *mut _;
44951            self.inner.p_next = <*mut BaseOutStructure>::cast::<
44952                core::ffi::c_void,
44953            >(next_ptr) as *const _;
44954        }
44955        self
44956    }
44957}
44958impl<'a> core::ops::Deref for BufferImageCopy2Builder<'a> {
44959    type Target = BufferImageCopy2;
44960    #[inline]
44961    fn deref(&self) -> &Self::Target {
44962        &self.inner
44963    }
44964}
44965impl<'a> core::ops::DerefMut for BufferImageCopy2Builder<'a> {
44966    #[inline]
44967    fn deref_mut(&mut self) -> &mut Self::Target {
44968        &mut self.inner
44969    }
44970}
44971///Builder for [`ImageResolve2`] with lifetime-tied pNext safety.
44972pub struct ImageResolve2Builder<'a> {
44973    inner: ImageResolve2,
44974    _marker: core::marker::PhantomData<&'a ()>,
44975}
44976impl ImageResolve2 {
44977    /// Start building this struct; `s_type` is already set to the correct variant.
44978    #[inline]
44979    pub fn builder<'a>() -> ImageResolve2Builder<'a> {
44980        ImageResolve2Builder {
44981            inner: ImageResolve2 {
44982                s_type: StructureType::from_raw(1000337010i32),
44983                ..Default::default()
44984            },
44985            _marker: core::marker::PhantomData,
44986        }
44987    }
44988}
44989impl<'a> ImageResolve2Builder<'a> {
44990    #[inline]
44991    pub fn src_subresource(mut self, value: ImageSubresourceLayers) -> Self {
44992        self.inner.src_subresource = value;
44993        self
44994    }
44995    #[inline]
44996    pub fn src_offset(mut self, value: Offset3D) -> Self {
44997        self.inner.src_offset = value;
44998        self
44999    }
45000    #[inline]
45001    pub fn dst_subresource(mut self, value: ImageSubresourceLayers) -> Self {
45002        self.inner.dst_subresource = value;
45003        self
45004    }
45005    #[inline]
45006    pub fn dst_offset(mut self, value: Offset3D) -> Self {
45007        self.inner.dst_offset = value;
45008        self
45009    }
45010    #[inline]
45011    pub fn extent(mut self, value: Extent3D) -> Self {
45012        self.inner.extent = value;
45013        self
45014    }
45015    ///Prepend a struct to the pNext chain. See [`ImageResolve2`]'s **Extended By** section for valid types.
45016    #[inline]
45017    pub fn push_next<T: ExtendsImageResolve2>(mut self, next: &'a mut T) -> Self {
45018        unsafe {
45019            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
45020            (*next_ptr).p_next = self.inner.p_next as *mut _;
45021            self.inner.p_next = <*mut BaseOutStructure>::cast::<
45022                core::ffi::c_void,
45023            >(next_ptr) as *const _;
45024        }
45025        self
45026    }
45027}
45028impl<'a> core::ops::Deref for ImageResolve2Builder<'a> {
45029    type Target = ImageResolve2;
45030    #[inline]
45031    fn deref(&self) -> &Self::Target {
45032        &self.inner
45033    }
45034}
45035impl<'a> core::ops::DerefMut for ImageResolve2Builder<'a> {
45036    #[inline]
45037    fn deref_mut(&mut self) -> &mut Self::Target {
45038        &mut self.inner
45039    }
45040}
45041///Builder for [`CopyBufferInfo2`] with lifetime-tied pNext safety.
45042pub struct CopyBufferInfo2Builder<'a> {
45043    inner: CopyBufferInfo2,
45044    _marker: core::marker::PhantomData<&'a ()>,
45045}
45046impl CopyBufferInfo2 {
45047    /// Start building this struct; `s_type` is already set to the correct variant.
45048    #[inline]
45049    pub fn builder<'a>() -> CopyBufferInfo2Builder<'a> {
45050        CopyBufferInfo2Builder {
45051            inner: CopyBufferInfo2 {
45052                s_type: StructureType::from_raw(1000337000i32),
45053                ..Default::default()
45054            },
45055            _marker: core::marker::PhantomData,
45056        }
45057    }
45058}
45059impl<'a> CopyBufferInfo2Builder<'a> {
45060    #[inline]
45061    pub fn src_buffer(mut self, value: Buffer) -> Self {
45062        self.inner.src_buffer = value;
45063        self
45064    }
45065    #[inline]
45066    pub fn dst_buffer(mut self, value: Buffer) -> Self {
45067        self.inner.dst_buffer = value;
45068        self
45069    }
45070    #[inline]
45071    pub fn regions(mut self, slice: &'a [BufferCopy2]) -> Self {
45072        self.inner.region_count = slice.len() as u32;
45073        self.inner.p_regions = slice.as_ptr();
45074        self
45075    }
45076    ///Prepend a struct to the pNext chain. See [`CopyBufferInfo2`]'s **Extended By** section for valid types.
45077    #[inline]
45078    pub fn push_next<T: ExtendsCopyBufferInfo2>(mut self, next: &'a mut T) -> Self {
45079        unsafe {
45080            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
45081            (*next_ptr).p_next = self.inner.p_next as *mut _;
45082            self.inner.p_next = <*mut BaseOutStructure>::cast::<
45083                core::ffi::c_void,
45084            >(next_ptr) as *const _;
45085        }
45086        self
45087    }
45088}
45089impl<'a> core::ops::Deref for CopyBufferInfo2Builder<'a> {
45090    type Target = CopyBufferInfo2;
45091    #[inline]
45092    fn deref(&self) -> &Self::Target {
45093        &self.inner
45094    }
45095}
45096impl<'a> core::ops::DerefMut for CopyBufferInfo2Builder<'a> {
45097    #[inline]
45098    fn deref_mut(&mut self) -> &mut Self::Target {
45099        &mut self.inner
45100    }
45101}
45102///Builder for [`CopyImageInfo2`] with lifetime-tied pNext safety.
45103pub struct CopyImageInfo2Builder<'a> {
45104    inner: CopyImageInfo2,
45105    _marker: core::marker::PhantomData<&'a ()>,
45106}
45107impl CopyImageInfo2 {
45108    /// Start building this struct; `s_type` is already set to the correct variant.
45109    #[inline]
45110    pub fn builder<'a>() -> CopyImageInfo2Builder<'a> {
45111        CopyImageInfo2Builder {
45112            inner: CopyImageInfo2 {
45113                s_type: StructureType::from_raw(1000337001i32),
45114                ..Default::default()
45115            },
45116            _marker: core::marker::PhantomData,
45117        }
45118    }
45119}
45120impl<'a> CopyImageInfo2Builder<'a> {
45121    #[inline]
45122    pub fn src_image(mut self, value: Image) -> Self {
45123        self.inner.src_image = value;
45124        self
45125    }
45126    #[inline]
45127    pub fn src_image_layout(mut self, value: ImageLayout) -> Self {
45128        self.inner.src_image_layout = value;
45129        self
45130    }
45131    #[inline]
45132    pub fn dst_image(mut self, value: Image) -> Self {
45133        self.inner.dst_image = value;
45134        self
45135    }
45136    #[inline]
45137    pub fn dst_image_layout(mut self, value: ImageLayout) -> Self {
45138        self.inner.dst_image_layout = value;
45139        self
45140    }
45141    #[inline]
45142    pub fn regions(mut self, slice: &'a [ImageCopy2]) -> Self {
45143        self.inner.region_count = slice.len() as u32;
45144        self.inner.p_regions = slice.as_ptr();
45145        self
45146    }
45147    ///Prepend a struct to the pNext chain. See [`CopyImageInfo2`]'s **Extended By** section for valid types.
45148    #[inline]
45149    pub fn push_next<T: ExtendsCopyImageInfo2>(mut self, next: &'a mut T) -> Self {
45150        unsafe {
45151            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
45152            (*next_ptr).p_next = self.inner.p_next as *mut _;
45153            self.inner.p_next = <*mut BaseOutStructure>::cast::<
45154                core::ffi::c_void,
45155            >(next_ptr) as *const _;
45156        }
45157        self
45158    }
45159}
45160impl<'a> core::ops::Deref for CopyImageInfo2Builder<'a> {
45161    type Target = CopyImageInfo2;
45162    #[inline]
45163    fn deref(&self) -> &Self::Target {
45164        &self.inner
45165    }
45166}
45167impl<'a> core::ops::DerefMut for CopyImageInfo2Builder<'a> {
45168    #[inline]
45169    fn deref_mut(&mut self) -> &mut Self::Target {
45170        &mut self.inner
45171    }
45172}
45173///Builder for [`BlitImageInfo2`] with lifetime-tied pNext safety.
45174pub struct BlitImageInfo2Builder<'a> {
45175    inner: BlitImageInfo2,
45176    _marker: core::marker::PhantomData<&'a ()>,
45177}
45178impl BlitImageInfo2 {
45179    /// Start building this struct; `s_type` is already set to the correct variant.
45180    #[inline]
45181    pub fn builder<'a>() -> BlitImageInfo2Builder<'a> {
45182        BlitImageInfo2Builder {
45183            inner: BlitImageInfo2 {
45184                s_type: StructureType::from_raw(1000337004i32),
45185                ..Default::default()
45186            },
45187            _marker: core::marker::PhantomData,
45188        }
45189    }
45190}
45191impl<'a> BlitImageInfo2Builder<'a> {
45192    #[inline]
45193    pub fn src_image(mut self, value: Image) -> Self {
45194        self.inner.src_image = value;
45195        self
45196    }
45197    #[inline]
45198    pub fn src_image_layout(mut self, value: ImageLayout) -> Self {
45199        self.inner.src_image_layout = value;
45200        self
45201    }
45202    #[inline]
45203    pub fn dst_image(mut self, value: Image) -> Self {
45204        self.inner.dst_image = value;
45205        self
45206    }
45207    #[inline]
45208    pub fn dst_image_layout(mut self, value: ImageLayout) -> Self {
45209        self.inner.dst_image_layout = value;
45210        self
45211    }
45212    #[inline]
45213    pub fn regions(mut self, slice: &'a [ImageBlit2]) -> Self {
45214        self.inner.region_count = slice.len() as u32;
45215        self.inner.p_regions = slice.as_ptr();
45216        self
45217    }
45218    #[inline]
45219    pub fn filter(mut self, value: Filter) -> Self {
45220        self.inner.filter = value;
45221        self
45222    }
45223    ///Prepend a struct to the pNext chain. See [`BlitImageInfo2`]'s **Extended By** section for valid types.
45224    #[inline]
45225    pub fn push_next<T: ExtendsBlitImageInfo2>(mut self, next: &'a mut T) -> Self {
45226        unsafe {
45227            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
45228            (*next_ptr).p_next = self.inner.p_next as *mut _;
45229            self.inner.p_next = <*mut BaseOutStructure>::cast::<
45230                core::ffi::c_void,
45231            >(next_ptr) as *const _;
45232        }
45233        self
45234    }
45235}
45236impl<'a> core::ops::Deref for BlitImageInfo2Builder<'a> {
45237    type Target = BlitImageInfo2;
45238    #[inline]
45239    fn deref(&self) -> &Self::Target {
45240        &self.inner
45241    }
45242}
45243impl<'a> core::ops::DerefMut for BlitImageInfo2Builder<'a> {
45244    #[inline]
45245    fn deref_mut(&mut self) -> &mut Self::Target {
45246        &mut self.inner
45247    }
45248}
45249///Builder for [`CopyBufferToImageInfo2`] with lifetime-tied pNext safety.
45250pub struct CopyBufferToImageInfo2Builder<'a> {
45251    inner: CopyBufferToImageInfo2,
45252    _marker: core::marker::PhantomData<&'a ()>,
45253}
45254impl CopyBufferToImageInfo2 {
45255    /// Start building this struct; `s_type` is already set to the correct variant.
45256    #[inline]
45257    pub fn builder<'a>() -> CopyBufferToImageInfo2Builder<'a> {
45258        CopyBufferToImageInfo2Builder {
45259            inner: CopyBufferToImageInfo2 {
45260                s_type: StructureType::from_raw(1000337002i32),
45261                ..Default::default()
45262            },
45263            _marker: core::marker::PhantomData,
45264        }
45265    }
45266}
45267impl<'a> CopyBufferToImageInfo2Builder<'a> {
45268    #[inline]
45269    pub fn src_buffer(mut self, value: Buffer) -> Self {
45270        self.inner.src_buffer = value;
45271        self
45272    }
45273    #[inline]
45274    pub fn dst_image(mut self, value: Image) -> Self {
45275        self.inner.dst_image = value;
45276        self
45277    }
45278    #[inline]
45279    pub fn dst_image_layout(mut self, value: ImageLayout) -> Self {
45280        self.inner.dst_image_layout = value;
45281        self
45282    }
45283    #[inline]
45284    pub fn regions(mut self, slice: &'a [BufferImageCopy2]) -> Self {
45285        self.inner.region_count = slice.len() as u32;
45286        self.inner.p_regions = slice.as_ptr();
45287        self
45288    }
45289    ///Prepend a struct to the pNext chain. See [`CopyBufferToImageInfo2`]'s **Extended By** section for valid types.
45290    #[inline]
45291    pub fn push_next<T: ExtendsCopyBufferToImageInfo2>(
45292        mut self,
45293        next: &'a mut T,
45294    ) -> Self {
45295        unsafe {
45296            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
45297            (*next_ptr).p_next = self.inner.p_next as *mut _;
45298            self.inner.p_next = <*mut BaseOutStructure>::cast::<
45299                core::ffi::c_void,
45300            >(next_ptr) as *const _;
45301        }
45302        self
45303    }
45304}
45305impl<'a> core::ops::Deref for CopyBufferToImageInfo2Builder<'a> {
45306    type Target = CopyBufferToImageInfo2;
45307    #[inline]
45308    fn deref(&self) -> &Self::Target {
45309        &self.inner
45310    }
45311}
45312impl<'a> core::ops::DerefMut for CopyBufferToImageInfo2Builder<'a> {
45313    #[inline]
45314    fn deref_mut(&mut self) -> &mut Self::Target {
45315        &mut self.inner
45316    }
45317}
45318///Builder for [`CopyImageToBufferInfo2`] with lifetime-tied pNext safety.
45319pub struct CopyImageToBufferInfo2Builder<'a> {
45320    inner: CopyImageToBufferInfo2,
45321    _marker: core::marker::PhantomData<&'a ()>,
45322}
45323impl CopyImageToBufferInfo2 {
45324    /// Start building this struct; `s_type` is already set to the correct variant.
45325    #[inline]
45326    pub fn builder<'a>() -> CopyImageToBufferInfo2Builder<'a> {
45327        CopyImageToBufferInfo2Builder {
45328            inner: CopyImageToBufferInfo2 {
45329                s_type: StructureType::from_raw(1000337003i32),
45330                ..Default::default()
45331            },
45332            _marker: core::marker::PhantomData,
45333        }
45334    }
45335}
45336impl<'a> CopyImageToBufferInfo2Builder<'a> {
45337    #[inline]
45338    pub fn src_image(mut self, value: Image) -> Self {
45339        self.inner.src_image = value;
45340        self
45341    }
45342    #[inline]
45343    pub fn src_image_layout(mut self, value: ImageLayout) -> Self {
45344        self.inner.src_image_layout = value;
45345        self
45346    }
45347    #[inline]
45348    pub fn dst_buffer(mut self, value: Buffer) -> Self {
45349        self.inner.dst_buffer = value;
45350        self
45351    }
45352    #[inline]
45353    pub fn regions(mut self, slice: &'a [BufferImageCopy2]) -> Self {
45354        self.inner.region_count = slice.len() as u32;
45355        self.inner.p_regions = slice.as_ptr();
45356        self
45357    }
45358    ///Prepend a struct to the pNext chain. See [`CopyImageToBufferInfo2`]'s **Extended By** section for valid types.
45359    #[inline]
45360    pub fn push_next<T: ExtendsCopyImageToBufferInfo2>(
45361        mut self,
45362        next: &'a mut T,
45363    ) -> Self {
45364        unsafe {
45365            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
45366            (*next_ptr).p_next = self.inner.p_next as *mut _;
45367            self.inner.p_next = <*mut BaseOutStructure>::cast::<
45368                core::ffi::c_void,
45369            >(next_ptr) as *const _;
45370        }
45371        self
45372    }
45373}
45374impl<'a> core::ops::Deref for CopyImageToBufferInfo2Builder<'a> {
45375    type Target = CopyImageToBufferInfo2;
45376    #[inline]
45377    fn deref(&self) -> &Self::Target {
45378        &self.inner
45379    }
45380}
45381impl<'a> core::ops::DerefMut for CopyImageToBufferInfo2Builder<'a> {
45382    #[inline]
45383    fn deref_mut(&mut self) -> &mut Self::Target {
45384        &mut self.inner
45385    }
45386}
45387///Builder for [`ResolveImageInfo2`] with lifetime-tied pNext safety.
45388pub struct ResolveImageInfo2Builder<'a> {
45389    inner: ResolveImageInfo2,
45390    _marker: core::marker::PhantomData<&'a ()>,
45391}
45392impl ResolveImageInfo2 {
45393    /// Start building this struct; `s_type` is already set to the correct variant.
45394    #[inline]
45395    pub fn builder<'a>() -> ResolveImageInfo2Builder<'a> {
45396        ResolveImageInfo2Builder {
45397            inner: ResolveImageInfo2 {
45398                s_type: StructureType::from_raw(1000337005i32),
45399                ..Default::default()
45400            },
45401            _marker: core::marker::PhantomData,
45402        }
45403    }
45404}
45405impl<'a> ResolveImageInfo2Builder<'a> {
45406    #[inline]
45407    pub fn src_image(mut self, value: Image) -> Self {
45408        self.inner.src_image = value;
45409        self
45410    }
45411    #[inline]
45412    pub fn src_image_layout(mut self, value: ImageLayout) -> Self {
45413        self.inner.src_image_layout = value;
45414        self
45415    }
45416    #[inline]
45417    pub fn dst_image(mut self, value: Image) -> Self {
45418        self.inner.dst_image = value;
45419        self
45420    }
45421    #[inline]
45422    pub fn dst_image_layout(mut self, value: ImageLayout) -> Self {
45423        self.inner.dst_image_layout = value;
45424        self
45425    }
45426    #[inline]
45427    pub fn regions(mut self, slice: &'a [ImageResolve2]) -> Self {
45428        self.inner.region_count = slice.len() as u32;
45429        self.inner.p_regions = slice.as_ptr();
45430        self
45431    }
45432    ///Prepend a struct to the pNext chain. See [`ResolveImageInfo2`]'s **Extended By** section for valid types.
45433    #[inline]
45434    pub fn push_next<T: ExtendsResolveImageInfo2>(mut self, next: &'a mut T) -> Self {
45435        unsafe {
45436            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
45437            (*next_ptr).p_next = self.inner.p_next as *mut _;
45438            self.inner.p_next = <*mut BaseOutStructure>::cast::<
45439                core::ffi::c_void,
45440            >(next_ptr) as *const _;
45441        }
45442        self
45443    }
45444}
45445impl<'a> core::ops::Deref for ResolveImageInfo2Builder<'a> {
45446    type Target = ResolveImageInfo2;
45447    #[inline]
45448    fn deref(&self) -> &Self::Target {
45449        &self.inner
45450    }
45451}
45452impl<'a> core::ops::DerefMut for ResolveImageInfo2Builder<'a> {
45453    #[inline]
45454    fn deref_mut(&mut self) -> &mut Self::Target {
45455        &mut self.inner
45456    }
45457}
45458///Builder for [`PhysicalDeviceShaderImageAtomicInt64FeaturesEXT`] with lifetime-tied pNext safety.
45459pub struct PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder<'a> {
45460    inner: PhysicalDeviceShaderImageAtomicInt64FeaturesEXT,
45461    _marker: core::marker::PhantomData<&'a ()>,
45462}
45463impl PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
45464    /// Start building this struct; `s_type` is already set to the correct variant.
45465    #[inline]
45466    pub fn builder<'a>() -> PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder<'a> {
45467        PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder {
45468            inner: PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
45469                s_type: StructureType::from_raw(1000234000i32),
45470                ..Default::default()
45471            },
45472            _marker: core::marker::PhantomData,
45473        }
45474    }
45475}
45476impl<'a> PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder<'a> {
45477    #[inline]
45478    pub fn shader_image_int64_atomics(mut self, value: bool) -> Self {
45479        self.inner.shader_image_int64_atomics = value as u32;
45480        self
45481    }
45482    #[inline]
45483    pub fn sparse_image_int64_atomics(mut self, value: bool) -> Self {
45484        self.inner.sparse_image_int64_atomics = value as u32;
45485        self
45486    }
45487    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderImageAtomicInt64FeaturesEXT`]'s **Extended By** section for valid types.
45488    #[inline]
45489    pub fn push_next<T: ExtendsPhysicalDeviceShaderImageAtomicInt64FeaturesEXT>(
45490        mut self,
45491        next: &'a mut T,
45492    ) -> Self {
45493        unsafe {
45494            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
45495            (*next_ptr).p_next = self.inner.p_next as *mut _;
45496            self.inner.p_next = <*mut BaseOutStructure>::cast::<
45497                core::ffi::c_void,
45498            >(next_ptr);
45499        }
45500        self
45501    }
45502}
45503impl<'a> core::ops::Deref
45504for PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder<'a> {
45505    type Target = PhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
45506    #[inline]
45507    fn deref(&self) -> &Self::Target {
45508        &self.inner
45509    }
45510}
45511impl<'a> core::ops::DerefMut
45512for PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder<'a> {
45513    #[inline]
45514    fn deref_mut(&mut self) -> &mut Self::Target {
45515        &mut self.inner
45516    }
45517}
45518///Builder for [`FragmentShadingRateAttachmentInfoKHR`] with lifetime-tied pNext safety.
45519pub struct FragmentShadingRateAttachmentInfoKHRBuilder<'a> {
45520    inner: FragmentShadingRateAttachmentInfoKHR,
45521    _marker: core::marker::PhantomData<&'a ()>,
45522}
45523impl FragmentShadingRateAttachmentInfoKHR {
45524    /// Start building this struct; `s_type` is already set to the correct variant.
45525    #[inline]
45526    pub fn builder<'a>() -> FragmentShadingRateAttachmentInfoKHRBuilder<'a> {
45527        FragmentShadingRateAttachmentInfoKHRBuilder {
45528            inner: FragmentShadingRateAttachmentInfoKHR {
45529                s_type: StructureType::from_raw(1000226000i32),
45530                ..Default::default()
45531            },
45532            _marker: core::marker::PhantomData,
45533        }
45534    }
45535}
45536impl<'a> FragmentShadingRateAttachmentInfoKHRBuilder<'a> {
45537    #[inline]
45538    pub fn fragment_shading_rate_attachment(
45539        mut self,
45540        value: &'a AttachmentReference2,
45541    ) -> Self {
45542        self.inner.p_fragment_shading_rate_attachment = value;
45543        self
45544    }
45545    #[inline]
45546    pub fn shading_rate_attachment_texel_size(mut self, value: Extent2D) -> Self {
45547        self.inner.shading_rate_attachment_texel_size = value;
45548        self
45549    }
45550    ///Prepend a struct to the pNext chain. See [`FragmentShadingRateAttachmentInfoKHR`]'s **Extended By** section for valid types.
45551    #[inline]
45552    pub fn push_next<T: ExtendsFragmentShadingRateAttachmentInfoKHR>(
45553        mut self,
45554        next: &'a mut T,
45555    ) -> Self {
45556        unsafe {
45557            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
45558            (*next_ptr).p_next = self.inner.p_next as *mut _;
45559            self.inner.p_next = <*mut BaseOutStructure>::cast::<
45560                core::ffi::c_void,
45561            >(next_ptr) as *const _;
45562        }
45563        self
45564    }
45565}
45566impl<'a> core::ops::Deref for FragmentShadingRateAttachmentInfoKHRBuilder<'a> {
45567    type Target = FragmentShadingRateAttachmentInfoKHR;
45568    #[inline]
45569    fn deref(&self) -> &Self::Target {
45570        &self.inner
45571    }
45572}
45573impl<'a> core::ops::DerefMut for FragmentShadingRateAttachmentInfoKHRBuilder<'a> {
45574    #[inline]
45575    fn deref_mut(&mut self) -> &mut Self::Target {
45576        &mut self.inner
45577    }
45578}
45579///Builder for [`PipelineFragmentShadingRateStateCreateInfoKHR`] with lifetime-tied pNext safety.
45580pub struct PipelineFragmentShadingRateStateCreateInfoKHRBuilder<'a> {
45581    inner: PipelineFragmentShadingRateStateCreateInfoKHR,
45582    _marker: core::marker::PhantomData<&'a ()>,
45583}
45584impl PipelineFragmentShadingRateStateCreateInfoKHR {
45585    /// Start building this struct; `s_type` is already set to the correct variant.
45586    #[inline]
45587    pub fn builder<'a>() -> PipelineFragmentShadingRateStateCreateInfoKHRBuilder<'a> {
45588        PipelineFragmentShadingRateStateCreateInfoKHRBuilder {
45589            inner: PipelineFragmentShadingRateStateCreateInfoKHR {
45590                s_type: StructureType::from_raw(1000226001i32),
45591                ..Default::default()
45592            },
45593            _marker: core::marker::PhantomData,
45594        }
45595    }
45596}
45597impl<'a> PipelineFragmentShadingRateStateCreateInfoKHRBuilder<'a> {
45598    #[inline]
45599    pub fn fragment_size(mut self, value: Extent2D) -> Self {
45600        self.inner.fragment_size = value;
45601        self
45602    }
45603    #[inline]
45604    pub fn combiner_ops(
45605        mut self,
45606        value: [FragmentShadingRateCombinerOpKHR; 2usize],
45607    ) -> Self {
45608        self.inner.combiner_ops = value;
45609        self
45610    }
45611    ///Prepend a struct to the pNext chain. See [`PipelineFragmentShadingRateStateCreateInfoKHR`]'s **Extended By** section for valid types.
45612    #[inline]
45613    pub fn push_next<T: ExtendsPipelineFragmentShadingRateStateCreateInfoKHR>(
45614        mut self,
45615        next: &'a mut T,
45616    ) -> Self {
45617        unsafe {
45618            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
45619            (*next_ptr).p_next = self.inner.p_next as *mut _;
45620            self.inner.p_next = <*mut BaseOutStructure>::cast::<
45621                core::ffi::c_void,
45622            >(next_ptr) as *const _;
45623        }
45624        self
45625    }
45626}
45627impl<'a> core::ops::Deref for PipelineFragmentShadingRateStateCreateInfoKHRBuilder<'a> {
45628    type Target = PipelineFragmentShadingRateStateCreateInfoKHR;
45629    #[inline]
45630    fn deref(&self) -> &Self::Target {
45631        &self.inner
45632    }
45633}
45634impl<'a> core::ops::DerefMut
45635for PipelineFragmentShadingRateStateCreateInfoKHRBuilder<'a> {
45636    #[inline]
45637    fn deref_mut(&mut self) -> &mut Self::Target {
45638        &mut self.inner
45639    }
45640}
45641///Builder for [`PhysicalDeviceFragmentShadingRateFeaturesKHR`] with lifetime-tied pNext safety.
45642pub struct PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder<'a> {
45643    inner: PhysicalDeviceFragmentShadingRateFeaturesKHR,
45644    _marker: core::marker::PhantomData<&'a ()>,
45645}
45646impl PhysicalDeviceFragmentShadingRateFeaturesKHR {
45647    /// Start building this struct; `s_type` is already set to the correct variant.
45648    #[inline]
45649    pub fn builder<'a>() -> PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder<'a> {
45650        PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder {
45651            inner: PhysicalDeviceFragmentShadingRateFeaturesKHR {
45652                s_type: StructureType::from_raw(1000226003i32),
45653                ..Default::default()
45654            },
45655            _marker: core::marker::PhantomData,
45656        }
45657    }
45658}
45659impl<'a> PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder<'a> {
45660    #[inline]
45661    pub fn pipeline_fragment_shading_rate(mut self, value: bool) -> Self {
45662        self.inner.pipeline_fragment_shading_rate = value as u32;
45663        self
45664    }
45665    #[inline]
45666    pub fn primitive_fragment_shading_rate(mut self, value: bool) -> Self {
45667        self.inner.primitive_fragment_shading_rate = value as u32;
45668        self
45669    }
45670    #[inline]
45671    pub fn attachment_fragment_shading_rate(mut self, value: bool) -> Self {
45672        self.inner.attachment_fragment_shading_rate = value as u32;
45673        self
45674    }
45675    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceFragmentShadingRateFeaturesKHR`]'s **Extended By** section for valid types.
45676    #[inline]
45677    pub fn push_next<T: ExtendsPhysicalDeviceFragmentShadingRateFeaturesKHR>(
45678        mut self,
45679        next: &'a mut T,
45680    ) -> Self {
45681        unsafe {
45682            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
45683            (*next_ptr).p_next = self.inner.p_next as *mut _;
45684            self.inner.p_next = <*mut BaseOutStructure>::cast::<
45685                core::ffi::c_void,
45686            >(next_ptr);
45687        }
45688        self
45689    }
45690}
45691impl<'a> core::ops::Deref for PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder<'a> {
45692    type Target = PhysicalDeviceFragmentShadingRateFeaturesKHR;
45693    #[inline]
45694    fn deref(&self) -> &Self::Target {
45695        &self.inner
45696    }
45697}
45698impl<'a> core::ops::DerefMut
45699for PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder<'a> {
45700    #[inline]
45701    fn deref_mut(&mut self) -> &mut Self::Target {
45702        &mut self.inner
45703    }
45704}
45705///Builder for [`PhysicalDeviceFragmentShadingRatePropertiesKHR`] with lifetime-tied pNext safety.
45706pub struct PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder<'a> {
45707    inner: PhysicalDeviceFragmentShadingRatePropertiesKHR,
45708    _marker: core::marker::PhantomData<&'a ()>,
45709}
45710impl PhysicalDeviceFragmentShadingRatePropertiesKHR {
45711    /// Start building this struct; `s_type` is already set to the correct variant.
45712    #[inline]
45713    pub fn builder<'a>() -> PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder<'a> {
45714        PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder {
45715            inner: PhysicalDeviceFragmentShadingRatePropertiesKHR {
45716                s_type: StructureType::from_raw(1000226002i32),
45717                ..Default::default()
45718            },
45719            _marker: core::marker::PhantomData,
45720        }
45721    }
45722}
45723impl<'a> PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder<'a> {
45724    #[inline]
45725    pub fn min_fragment_shading_rate_attachment_texel_size(
45726        mut self,
45727        value: Extent2D,
45728    ) -> Self {
45729        self.inner.min_fragment_shading_rate_attachment_texel_size = value;
45730        self
45731    }
45732    #[inline]
45733    pub fn max_fragment_shading_rate_attachment_texel_size(
45734        mut self,
45735        value: Extent2D,
45736    ) -> Self {
45737        self.inner.max_fragment_shading_rate_attachment_texel_size = value;
45738        self
45739    }
45740    #[inline]
45741    pub fn max_fragment_shading_rate_attachment_texel_size_aspect_ratio(
45742        mut self,
45743        value: u32,
45744    ) -> Self {
45745        self.inner.max_fragment_shading_rate_attachment_texel_size_aspect_ratio = value;
45746        self
45747    }
45748    #[inline]
45749    pub fn primitive_fragment_shading_rate_with_multiple_viewports(
45750        mut self,
45751        value: bool,
45752    ) -> Self {
45753        self.inner.primitive_fragment_shading_rate_with_multiple_viewports = value
45754            as u32;
45755        self
45756    }
45757    #[inline]
45758    pub fn layered_shading_rate_attachments(mut self, value: bool) -> Self {
45759        self.inner.layered_shading_rate_attachments = value as u32;
45760        self
45761    }
45762    #[inline]
45763    pub fn fragment_shading_rate_non_trivial_combiner_ops(
45764        mut self,
45765        value: bool,
45766    ) -> Self {
45767        self.inner.fragment_shading_rate_non_trivial_combiner_ops = value as u32;
45768        self
45769    }
45770    #[inline]
45771    pub fn max_fragment_size(mut self, value: Extent2D) -> Self {
45772        self.inner.max_fragment_size = value;
45773        self
45774    }
45775    #[inline]
45776    pub fn max_fragment_size_aspect_ratio(mut self, value: u32) -> Self {
45777        self.inner.max_fragment_size_aspect_ratio = value;
45778        self
45779    }
45780    #[inline]
45781    pub fn max_fragment_shading_rate_coverage_samples(mut self, value: u32) -> Self {
45782        self.inner.max_fragment_shading_rate_coverage_samples = value;
45783        self
45784    }
45785    #[inline]
45786    pub fn max_fragment_shading_rate_rasterization_samples(
45787        mut self,
45788        value: SampleCountFlagBits,
45789    ) -> Self {
45790        self.inner.max_fragment_shading_rate_rasterization_samples = value;
45791        self
45792    }
45793    #[inline]
45794    pub fn fragment_shading_rate_with_shader_depth_stencil_writes(
45795        mut self,
45796        value: bool,
45797    ) -> Self {
45798        self.inner.fragment_shading_rate_with_shader_depth_stencil_writes = value as u32;
45799        self
45800    }
45801    #[inline]
45802    pub fn fragment_shading_rate_with_sample_mask(mut self, value: bool) -> Self {
45803        self.inner.fragment_shading_rate_with_sample_mask = value as u32;
45804        self
45805    }
45806    #[inline]
45807    pub fn fragment_shading_rate_with_shader_sample_mask(mut self, value: bool) -> Self {
45808        self.inner.fragment_shading_rate_with_shader_sample_mask = value as u32;
45809        self
45810    }
45811    #[inline]
45812    pub fn fragment_shading_rate_with_conservative_rasterization(
45813        mut self,
45814        value: bool,
45815    ) -> Self {
45816        self.inner.fragment_shading_rate_with_conservative_rasterization = value as u32;
45817        self
45818    }
45819    #[inline]
45820    pub fn fragment_shading_rate_with_fragment_shader_interlock(
45821        mut self,
45822        value: bool,
45823    ) -> Self {
45824        self.inner.fragment_shading_rate_with_fragment_shader_interlock = value as u32;
45825        self
45826    }
45827    #[inline]
45828    pub fn fragment_shading_rate_with_custom_sample_locations(
45829        mut self,
45830        value: bool,
45831    ) -> Self {
45832        self.inner.fragment_shading_rate_with_custom_sample_locations = value as u32;
45833        self
45834    }
45835    #[inline]
45836    pub fn fragment_shading_rate_strict_multiply_combiner(
45837        mut self,
45838        value: bool,
45839    ) -> Self {
45840        self.inner.fragment_shading_rate_strict_multiply_combiner = value as u32;
45841        self
45842    }
45843}
45844impl<'a> core::ops::Deref for PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder<'a> {
45845    type Target = PhysicalDeviceFragmentShadingRatePropertiesKHR;
45846    #[inline]
45847    fn deref(&self) -> &Self::Target {
45848        &self.inner
45849    }
45850}
45851impl<'a> core::ops::DerefMut
45852for PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder<'a> {
45853    #[inline]
45854    fn deref_mut(&mut self) -> &mut Self::Target {
45855        &mut self.inner
45856    }
45857}
45858///Builder for [`PhysicalDeviceFragmentShadingRateKHR`] with lifetime-tied pNext safety.
45859pub struct PhysicalDeviceFragmentShadingRateKHRBuilder<'a> {
45860    inner: PhysicalDeviceFragmentShadingRateKHR,
45861    _marker: core::marker::PhantomData<&'a ()>,
45862}
45863impl PhysicalDeviceFragmentShadingRateKHR {
45864    /// Start building this struct; `s_type` is already set to the correct variant.
45865    #[inline]
45866    pub fn builder<'a>() -> PhysicalDeviceFragmentShadingRateKHRBuilder<'a> {
45867        PhysicalDeviceFragmentShadingRateKHRBuilder {
45868            inner: PhysicalDeviceFragmentShadingRateKHR {
45869                s_type: StructureType::from_raw(1000226004i32),
45870                ..Default::default()
45871            },
45872            _marker: core::marker::PhantomData,
45873        }
45874    }
45875}
45876impl<'a> PhysicalDeviceFragmentShadingRateKHRBuilder<'a> {
45877    #[inline]
45878    pub fn sample_counts(mut self, value: SampleCountFlags) -> Self {
45879        self.inner.sample_counts = value;
45880        self
45881    }
45882    #[inline]
45883    pub fn fragment_size(mut self, value: Extent2D) -> Self {
45884        self.inner.fragment_size = value;
45885        self
45886    }
45887}
45888impl<'a> core::ops::Deref for PhysicalDeviceFragmentShadingRateKHRBuilder<'a> {
45889    type Target = PhysicalDeviceFragmentShadingRateKHR;
45890    #[inline]
45891    fn deref(&self) -> &Self::Target {
45892        &self.inner
45893    }
45894}
45895impl<'a> core::ops::DerefMut for PhysicalDeviceFragmentShadingRateKHRBuilder<'a> {
45896    #[inline]
45897    fn deref_mut(&mut self) -> &mut Self::Target {
45898        &mut self.inner
45899    }
45900}
45901///Builder for [`PhysicalDeviceShaderTerminateInvocationFeatures`] with lifetime-tied pNext safety.
45902pub struct PhysicalDeviceShaderTerminateInvocationFeaturesBuilder<'a> {
45903    inner: PhysicalDeviceShaderTerminateInvocationFeatures,
45904    _marker: core::marker::PhantomData<&'a ()>,
45905}
45906impl PhysicalDeviceShaderTerminateInvocationFeatures {
45907    /// Start building this struct; `s_type` is already set to the correct variant.
45908    #[inline]
45909    pub fn builder<'a>() -> PhysicalDeviceShaderTerminateInvocationFeaturesBuilder<'a> {
45910        PhysicalDeviceShaderTerminateInvocationFeaturesBuilder {
45911            inner: PhysicalDeviceShaderTerminateInvocationFeatures {
45912                s_type: StructureType::from_raw(1000215000i32),
45913                ..Default::default()
45914            },
45915            _marker: core::marker::PhantomData,
45916        }
45917    }
45918}
45919impl<'a> PhysicalDeviceShaderTerminateInvocationFeaturesBuilder<'a> {
45920    #[inline]
45921    pub fn shader_terminate_invocation(mut self, value: bool) -> Self {
45922        self.inner.shader_terminate_invocation = value as u32;
45923        self
45924    }
45925    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderTerminateInvocationFeatures`]'s **Extended By** section for valid types.
45926    #[inline]
45927    pub fn push_next<T: ExtendsPhysicalDeviceShaderTerminateInvocationFeatures>(
45928        mut self,
45929        next: &'a mut T,
45930    ) -> Self {
45931        unsafe {
45932            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
45933            (*next_ptr).p_next = self.inner.p_next as *mut _;
45934            self.inner.p_next = <*mut BaseOutStructure>::cast::<
45935                core::ffi::c_void,
45936            >(next_ptr);
45937        }
45938        self
45939    }
45940}
45941impl<'a> core::ops::Deref
45942for PhysicalDeviceShaderTerminateInvocationFeaturesBuilder<'a> {
45943    type Target = PhysicalDeviceShaderTerminateInvocationFeatures;
45944    #[inline]
45945    fn deref(&self) -> &Self::Target {
45946        &self.inner
45947    }
45948}
45949impl<'a> core::ops::DerefMut
45950for PhysicalDeviceShaderTerminateInvocationFeaturesBuilder<'a> {
45951    #[inline]
45952    fn deref_mut(&mut self) -> &mut Self::Target {
45953        &mut self.inner
45954    }
45955}
45956///Builder for [`PhysicalDeviceFragmentShadingRateEnumsFeaturesNV`] with lifetime-tied pNext safety.
45957pub struct PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder<'a> {
45958    inner: PhysicalDeviceFragmentShadingRateEnumsFeaturesNV,
45959    _marker: core::marker::PhantomData<&'a ()>,
45960}
45961impl PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
45962    /// Start building this struct; `s_type` is already set to the correct variant.
45963    #[inline]
45964    pub fn builder<'a>() -> PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder<'a> {
45965        PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder {
45966            inner: PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
45967                s_type: StructureType::from_raw(1000326001i32),
45968                ..Default::default()
45969            },
45970            _marker: core::marker::PhantomData,
45971        }
45972    }
45973}
45974impl<'a> PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder<'a> {
45975    #[inline]
45976    pub fn fragment_shading_rate_enums(mut self, value: bool) -> Self {
45977        self.inner.fragment_shading_rate_enums = value as u32;
45978        self
45979    }
45980    #[inline]
45981    pub fn supersample_fragment_shading_rates(mut self, value: bool) -> Self {
45982        self.inner.supersample_fragment_shading_rates = value as u32;
45983        self
45984    }
45985    #[inline]
45986    pub fn no_invocation_fragment_shading_rates(mut self, value: bool) -> Self {
45987        self.inner.no_invocation_fragment_shading_rates = value as u32;
45988        self
45989    }
45990    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceFragmentShadingRateEnumsFeaturesNV`]'s **Extended By** section for valid types.
45991    #[inline]
45992    pub fn push_next<T: ExtendsPhysicalDeviceFragmentShadingRateEnumsFeaturesNV>(
45993        mut self,
45994        next: &'a mut T,
45995    ) -> Self {
45996        unsafe {
45997            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
45998            (*next_ptr).p_next = self.inner.p_next as *mut _;
45999            self.inner.p_next = <*mut BaseOutStructure>::cast::<
46000                core::ffi::c_void,
46001            >(next_ptr);
46002        }
46003        self
46004    }
46005}
46006impl<'a> core::ops::Deref
46007for PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder<'a> {
46008    type Target = PhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
46009    #[inline]
46010    fn deref(&self) -> &Self::Target {
46011        &self.inner
46012    }
46013}
46014impl<'a> core::ops::DerefMut
46015for PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder<'a> {
46016    #[inline]
46017    fn deref_mut(&mut self) -> &mut Self::Target {
46018        &mut self.inner
46019    }
46020}
46021///Builder for [`PhysicalDeviceFragmentShadingRateEnumsPropertiesNV`] with lifetime-tied pNext safety.
46022pub struct PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder<'a> {
46023    inner: PhysicalDeviceFragmentShadingRateEnumsPropertiesNV,
46024    _marker: core::marker::PhantomData<&'a ()>,
46025}
46026impl PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
46027    /// Start building this struct; `s_type` is already set to the correct variant.
46028    #[inline]
46029    pub fn builder<'a>() -> PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder<
46030        'a,
46031    > {
46032        PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder {
46033            inner: PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
46034                s_type: StructureType::from_raw(1000326000i32),
46035                ..Default::default()
46036            },
46037            _marker: core::marker::PhantomData,
46038        }
46039    }
46040}
46041impl<'a> PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder<'a> {
46042    #[inline]
46043    pub fn max_fragment_shading_rate_invocation_count(
46044        mut self,
46045        value: SampleCountFlagBits,
46046    ) -> Self {
46047        self.inner.max_fragment_shading_rate_invocation_count = value;
46048        self
46049    }
46050}
46051impl<'a> core::ops::Deref
46052for PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder<'a> {
46053    type Target = PhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
46054    #[inline]
46055    fn deref(&self) -> &Self::Target {
46056        &self.inner
46057    }
46058}
46059impl<'a> core::ops::DerefMut
46060for PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder<'a> {
46061    #[inline]
46062    fn deref_mut(&mut self) -> &mut Self::Target {
46063        &mut self.inner
46064    }
46065}
46066///Builder for [`PipelineFragmentShadingRateEnumStateCreateInfoNV`] with lifetime-tied pNext safety.
46067pub struct PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder<'a> {
46068    inner: PipelineFragmentShadingRateEnumStateCreateInfoNV,
46069    _marker: core::marker::PhantomData<&'a ()>,
46070}
46071impl PipelineFragmentShadingRateEnumStateCreateInfoNV {
46072    /// Start building this struct; `s_type` is already set to the correct variant.
46073    #[inline]
46074    pub fn builder<'a>() -> PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder<'a> {
46075        PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder {
46076            inner: PipelineFragmentShadingRateEnumStateCreateInfoNV {
46077                s_type: StructureType::from_raw(1000326002i32),
46078                ..Default::default()
46079            },
46080            _marker: core::marker::PhantomData,
46081        }
46082    }
46083}
46084impl<'a> PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder<'a> {
46085    #[inline]
46086    pub fn shading_rate_type(mut self, value: FragmentShadingRateTypeNV) -> Self {
46087        self.inner.shading_rate_type = value;
46088        self
46089    }
46090    #[inline]
46091    pub fn shading_rate(mut self, value: FragmentShadingRateNV) -> Self {
46092        self.inner.shading_rate = value;
46093        self
46094    }
46095    #[inline]
46096    pub fn combiner_ops(
46097        mut self,
46098        value: [FragmentShadingRateCombinerOpKHR; 2usize],
46099    ) -> Self {
46100        self.inner.combiner_ops = value;
46101        self
46102    }
46103    ///Prepend a struct to the pNext chain. See [`PipelineFragmentShadingRateEnumStateCreateInfoNV`]'s **Extended By** section for valid types.
46104    #[inline]
46105    pub fn push_next<T: ExtendsPipelineFragmentShadingRateEnumStateCreateInfoNV>(
46106        mut self,
46107        next: &'a mut T,
46108    ) -> Self {
46109        unsafe {
46110            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
46111            (*next_ptr).p_next = self.inner.p_next as *mut _;
46112            self.inner.p_next = <*mut BaseOutStructure>::cast::<
46113                core::ffi::c_void,
46114            >(next_ptr) as *const _;
46115        }
46116        self
46117    }
46118}
46119impl<'a> core::ops::Deref
46120for PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder<'a> {
46121    type Target = PipelineFragmentShadingRateEnumStateCreateInfoNV;
46122    #[inline]
46123    fn deref(&self) -> &Self::Target {
46124        &self.inner
46125    }
46126}
46127impl<'a> core::ops::DerefMut
46128for PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder<'a> {
46129    #[inline]
46130    fn deref_mut(&mut self) -> &mut Self::Target {
46131        &mut self.inner
46132    }
46133}
46134///Builder for [`AccelerationStructureBuildSizesInfoKHR`] with lifetime-tied pNext safety.
46135pub struct AccelerationStructureBuildSizesInfoKHRBuilder<'a> {
46136    inner: AccelerationStructureBuildSizesInfoKHR,
46137    _marker: core::marker::PhantomData<&'a ()>,
46138}
46139impl AccelerationStructureBuildSizesInfoKHR {
46140    /// Start building this struct; `s_type` is already set to the correct variant.
46141    #[inline]
46142    pub fn builder<'a>() -> AccelerationStructureBuildSizesInfoKHRBuilder<'a> {
46143        AccelerationStructureBuildSizesInfoKHRBuilder {
46144            inner: AccelerationStructureBuildSizesInfoKHR {
46145                s_type: StructureType::from_raw(1000150020i32),
46146                ..Default::default()
46147            },
46148            _marker: core::marker::PhantomData,
46149        }
46150    }
46151}
46152impl<'a> AccelerationStructureBuildSizesInfoKHRBuilder<'a> {
46153    #[inline]
46154    pub fn acceleration_structure_size(mut self, value: u64) -> Self {
46155        self.inner.acceleration_structure_size = value;
46156        self
46157    }
46158    #[inline]
46159    pub fn update_scratch_size(mut self, value: u64) -> Self {
46160        self.inner.update_scratch_size = value;
46161        self
46162    }
46163    #[inline]
46164    pub fn build_scratch_size(mut self, value: u64) -> Self {
46165        self.inner.build_scratch_size = value;
46166        self
46167    }
46168}
46169impl<'a> core::ops::Deref for AccelerationStructureBuildSizesInfoKHRBuilder<'a> {
46170    type Target = AccelerationStructureBuildSizesInfoKHR;
46171    #[inline]
46172    fn deref(&self) -> &Self::Target {
46173        &self.inner
46174    }
46175}
46176impl<'a> core::ops::DerefMut for AccelerationStructureBuildSizesInfoKHRBuilder<'a> {
46177    #[inline]
46178    fn deref_mut(&mut self) -> &mut Self::Target {
46179        &mut self.inner
46180    }
46181}
46182///Builder for [`PhysicalDeviceImage2DViewOf3DFeaturesEXT`] with lifetime-tied pNext safety.
46183pub struct PhysicalDeviceImage2DViewOf3DFeaturesEXTBuilder<'a> {
46184    inner: PhysicalDeviceImage2DViewOf3DFeaturesEXT,
46185    _marker: core::marker::PhantomData<&'a ()>,
46186}
46187impl PhysicalDeviceImage2DViewOf3DFeaturesEXT {
46188    /// Start building this struct; `s_type` is already set to the correct variant.
46189    #[inline]
46190    pub fn builder<'a>() -> PhysicalDeviceImage2DViewOf3DFeaturesEXTBuilder<'a> {
46191        PhysicalDeviceImage2DViewOf3DFeaturesEXTBuilder {
46192            inner: PhysicalDeviceImage2DViewOf3DFeaturesEXT {
46193                s_type: StructureType::from_raw(1000393000i32),
46194                ..Default::default()
46195            },
46196            _marker: core::marker::PhantomData,
46197        }
46198    }
46199}
46200impl<'a> PhysicalDeviceImage2DViewOf3DFeaturesEXTBuilder<'a> {
46201    #[inline]
46202    pub fn image2_d_view_of3_d(mut self, value: bool) -> Self {
46203        self.inner.image2_d_view_of3_d = value as u32;
46204        self
46205    }
46206    #[inline]
46207    pub fn sampler2_d_view_of3_d(mut self, value: bool) -> Self {
46208        self.inner.sampler2_d_view_of3_d = value as u32;
46209        self
46210    }
46211    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceImage2DViewOf3DFeaturesEXT`]'s **Extended By** section for valid types.
46212    #[inline]
46213    pub fn push_next<T: ExtendsPhysicalDeviceImage2DViewOf3DFeaturesEXT>(
46214        mut self,
46215        next: &'a mut T,
46216    ) -> Self {
46217        unsafe {
46218            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
46219            (*next_ptr).p_next = self.inner.p_next as *mut _;
46220            self.inner.p_next = <*mut BaseOutStructure>::cast::<
46221                core::ffi::c_void,
46222            >(next_ptr);
46223        }
46224        self
46225    }
46226}
46227impl<'a> core::ops::Deref for PhysicalDeviceImage2DViewOf3DFeaturesEXTBuilder<'a> {
46228    type Target = PhysicalDeviceImage2DViewOf3DFeaturesEXT;
46229    #[inline]
46230    fn deref(&self) -> &Self::Target {
46231        &self.inner
46232    }
46233}
46234impl<'a> core::ops::DerefMut for PhysicalDeviceImage2DViewOf3DFeaturesEXTBuilder<'a> {
46235    #[inline]
46236    fn deref_mut(&mut self) -> &mut Self::Target {
46237        &mut self.inner
46238    }
46239}
46240///Builder for [`PhysicalDeviceImageSlicedViewOf3DFeaturesEXT`] with lifetime-tied pNext safety.
46241pub struct PhysicalDeviceImageSlicedViewOf3DFeaturesEXTBuilder<'a> {
46242    inner: PhysicalDeviceImageSlicedViewOf3DFeaturesEXT,
46243    _marker: core::marker::PhantomData<&'a ()>,
46244}
46245impl PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {
46246    /// Start building this struct; `s_type` is already set to the correct variant.
46247    #[inline]
46248    pub fn builder<'a>() -> PhysicalDeviceImageSlicedViewOf3DFeaturesEXTBuilder<'a> {
46249        PhysicalDeviceImageSlicedViewOf3DFeaturesEXTBuilder {
46250            inner: PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {
46251                s_type: StructureType::from_raw(1000418000i32),
46252                ..Default::default()
46253            },
46254            _marker: core::marker::PhantomData,
46255        }
46256    }
46257}
46258impl<'a> PhysicalDeviceImageSlicedViewOf3DFeaturesEXTBuilder<'a> {
46259    #[inline]
46260    pub fn image_sliced_view_of3_d(mut self, value: bool) -> Self {
46261        self.inner.image_sliced_view_of3_d = value as u32;
46262        self
46263    }
46264    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceImageSlicedViewOf3DFeaturesEXT`]'s **Extended By** section for valid types.
46265    #[inline]
46266    pub fn push_next<T: ExtendsPhysicalDeviceImageSlicedViewOf3DFeaturesEXT>(
46267        mut self,
46268        next: &'a mut T,
46269    ) -> Self {
46270        unsafe {
46271            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
46272            (*next_ptr).p_next = self.inner.p_next as *mut _;
46273            self.inner.p_next = <*mut BaseOutStructure>::cast::<
46274                core::ffi::c_void,
46275            >(next_ptr);
46276        }
46277        self
46278    }
46279}
46280impl<'a> core::ops::Deref for PhysicalDeviceImageSlicedViewOf3DFeaturesEXTBuilder<'a> {
46281    type Target = PhysicalDeviceImageSlicedViewOf3DFeaturesEXT;
46282    #[inline]
46283    fn deref(&self) -> &Self::Target {
46284        &self.inner
46285    }
46286}
46287impl<'a> core::ops::DerefMut
46288for PhysicalDeviceImageSlicedViewOf3DFeaturesEXTBuilder<'a> {
46289    #[inline]
46290    fn deref_mut(&mut self) -> &mut Self::Target {
46291        &mut self.inner
46292    }
46293}
46294///Builder for [`PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT`] with lifetime-tied pNext safety.
46295pub struct PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXTBuilder<'a> {
46296    inner: PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT,
46297    _marker: core::marker::PhantomData<&'a ()>,
46298}
46299impl PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
46300    /// Start building this struct; `s_type` is already set to the correct variant.
46301    #[inline]
46302    pub fn builder<'a>() -> PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXTBuilder<
46303        'a,
46304    > {
46305        PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXTBuilder {
46306            inner: PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
46307                s_type: StructureType::from_raw(1000524000i32),
46308                ..Default::default()
46309            },
46310            _marker: core::marker::PhantomData,
46311        }
46312    }
46313}
46314impl<'a> PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXTBuilder<'a> {
46315    #[inline]
46316    pub fn attachment_feedback_loop_dynamic_state(mut self, value: bool) -> Self {
46317        self.inner.attachment_feedback_loop_dynamic_state = value as u32;
46318        self
46319    }
46320    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT`]'s **Extended By** section for valid types.
46321    #[inline]
46322    pub fn push_next<
46323        T: ExtendsPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT,
46324    >(mut self, next: &'a mut T) -> Self {
46325        unsafe {
46326            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
46327            (*next_ptr).p_next = self.inner.p_next as *mut _;
46328            self.inner.p_next = <*mut BaseOutStructure>::cast::<
46329                core::ffi::c_void,
46330            >(next_ptr);
46331        }
46332        self
46333    }
46334}
46335impl<'a> core::ops::Deref
46336for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXTBuilder<'a> {
46337    type Target = PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT;
46338    #[inline]
46339    fn deref(&self) -> &Self::Target {
46340        &self.inner
46341    }
46342}
46343impl<'a> core::ops::DerefMut
46344for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXTBuilder<'a> {
46345    #[inline]
46346    fn deref_mut(&mut self) -> &mut Self::Target {
46347        &mut self.inner
46348    }
46349}
46350///Builder for [`PhysicalDeviceLegacyVertexAttributesFeaturesEXT`] with lifetime-tied pNext safety.
46351pub struct PhysicalDeviceLegacyVertexAttributesFeaturesEXTBuilder<'a> {
46352    inner: PhysicalDeviceLegacyVertexAttributesFeaturesEXT,
46353    _marker: core::marker::PhantomData<&'a ()>,
46354}
46355impl PhysicalDeviceLegacyVertexAttributesFeaturesEXT {
46356    /// Start building this struct; `s_type` is already set to the correct variant.
46357    #[inline]
46358    pub fn builder<'a>() -> PhysicalDeviceLegacyVertexAttributesFeaturesEXTBuilder<'a> {
46359        PhysicalDeviceLegacyVertexAttributesFeaturesEXTBuilder {
46360            inner: PhysicalDeviceLegacyVertexAttributesFeaturesEXT {
46361                s_type: StructureType::from_raw(1000495000i32),
46362                ..Default::default()
46363            },
46364            _marker: core::marker::PhantomData,
46365        }
46366    }
46367}
46368impl<'a> PhysicalDeviceLegacyVertexAttributesFeaturesEXTBuilder<'a> {
46369    #[inline]
46370    pub fn legacy_vertex_attributes(mut self, value: bool) -> Self {
46371        self.inner.legacy_vertex_attributes = value as u32;
46372        self
46373    }
46374    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceLegacyVertexAttributesFeaturesEXT`]'s **Extended By** section for valid types.
46375    #[inline]
46376    pub fn push_next<T: ExtendsPhysicalDeviceLegacyVertexAttributesFeaturesEXT>(
46377        mut self,
46378        next: &'a mut T,
46379    ) -> Self {
46380        unsafe {
46381            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
46382            (*next_ptr).p_next = self.inner.p_next as *mut _;
46383            self.inner.p_next = <*mut BaseOutStructure>::cast::<
46384                core::ffi::c_void,
46385            >(next_ptr);
46386        }
46387        self
46388    }
46389}
46390impl<'a> core::ops::Deref
46391for PhysicalDeviceLegacyVertexAttributesFeaturesEXTBuilder<'a> {
46392    type Target = PhysicalDeviceLegacyVertexAttributesFeaturesEXT;
46393    #[inline]
46394    fn deref(&self) -> &Self::Target {
46395        &self.inner
46396    }
46397}
46398impl<'a> core::ops::DerefMut
46399for PhysicalDeviceLegacyVertexAttributesFeaturesEXTBuilder<'a> {
46400    #[inline]
46401    fn deref_mut(&mut self) -> &mut Self::Target {
46402        &mut self.inner
46403    }
46404}
46405///Builder for [`PhysicalDeviceLegacyVertexAttributesPropertiesEXT`] with lifetime-tied pNext safety.
46406pub struct PhysicalDeviceLegacyVertexAttributesPropertiesEXTBuilder<'a> {
46407    inner: PhysicalDeviceLegacyVertexAttributesPropertiesEXT,
46408    _marker: core::marker::PhantomData<&'a ()>,
46409}
46410impl PhysicalDeviceLegacyVertexAttributesPropertiesEXT {
46411    /// Start building this struct; `s_type` is already set to the correct variant.
46412    #[inline]
46413    pub fn builder<'a>() -> PhysicalDeviceLegacyVertexAttributesPropertiesEXTBuilder<
46414        'a,
46415    > {
46416        PhysicalDeviceLegacyVertexAttributesPropertiesEXTBuilder {
46417            inner: PhysicalDeviceLegacyVertexAttributesPropertiesEXT {
46418                s_type: StructureType::from_raw(1000495001i32),
46419                ..Default::default()
46420            },
46421            _marker: core::marker::PhantomData,
46422        }
46423    }
46424}
46425impl<'a> PhysicalDeviceLegacyVertexAttributesPropertiesEXTBuilder<'a> {
46426    #[inline]
46427    pub fn native_unaligned_performance(mut self, value: bool) -> Self {
46428        self.inner.native_unaligned_performance = value as u32;
46429        self
46430    }
46431}
46432impl<'a> core::ops::Deref
46433for PhysicalDeviceLegacyVertexAttributesPropertiesEXTBuilder<'a> {
46434    type Target = PhysicalDeviceLegacyVertexAttributesPropertiesEXT;
46435    #[inline]
46436    fn deref(&self) -> &Self::Target {
46437        &self.inner
46438    }
46439}
46440impl<'a> core::ops::DerefMut
46441for PhysicalDeviceLegacyVertexAttributesPropertiesEXTBuilder<'a> {
46442    #[inline]
46443    fn deref_mut(&mut self) -> &mut Self::Target {
46444        &mut self.inner
46445    }
46446}
46447///Builder for [`PhysicalDeviceMutableDescriptorTypeFeaturesEXT`] with lifetime-tied pNext safety.
46448pub struct PhysicalDeviceMutableDescriptorTypeFeaturesEXTBuilder<'a> {
46449    inner: PhysicalDeviceMutableDescriptorTypeFeaturesEXT,
46450    _marker: core::marker::PhantomData<&'a ()>,
46451}
46452impl PhysicalDeviceMutableDescriptorTypeFeaturesEXT {
46453    /// Start building this struct; `s_type` is already set to the correct variant.
46454    #[inline]
46455    pub fn builder<'a>() -> PhysicalDeviceMutableDescriptorTypeFeaturesEXTBuilder<'a> {
46456        PhysicalDeviceMutableDescriptorTypeFeaturesEXTBuilder {
46457            inner: PhysicalDeviceMutableDescriptorTypeFeaturesEXT {
46458                s_type: StructureType::from_raw(1000351000i32),
46459                ..Default::default()
46460            },
46461            _marker: core::marker::PhantomData,
46462        }
46463    }
46464}
46465impl<'a> PhysicalDeviceMutableDescriptorTypeFeaturesEXTBuilder<'a> {
46466    #[inline]
46467    pub fn mutable_descriptor_type(mut self, value: bool) -> Self {
46468        self.inner.mutable_descriptor_type = value as u32;
46469        self
46470    }
46471    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceMutableDescriptorTypeFeaturesEXT`]'s **Extended By** section for valid types.
46472    #[inline]
46473    pub fn push_next<T: ExtendsPhysicalDeviceMutableDescriptorTypeFeaturesEXT>(
46474        mut self,
46475        next: &'a mut T,
46476    ) -> Self {
46477        unsafe {
46478            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
46479            (*next_ptr).p_next = self.inner.p_next as *mut _;
46480            self.inner.p_next = <*mut BaseOutStructure>::cast::<
46481                core::ffi::c_void,
46482            >(next_ptr);
46483        }
46484        self
46485    }
46486}
46487impl<'a> core::ops::Deref for PhysicalDeviceMutableDescriptorTypeFeaturesEXTBuilder<'a> {
46488    type Target = PhysicalDeviceMutableDescriptorTypeFeaturesEXT;
46489    #[inline]
46490    fn deref(&self) -> &Self::Target {
46491        &self.inner
46492    }
46493}
46494impl<'a> core::ops::DerefMut
46495for PhysicalDeviceMutableDescriptorTypeFeaturesEXTBuilder<'a> {
46496    #[inline]
46497    fn deref_mut(&mut self) -> &mut Self::Target {
46498        &mut self.inner
46499    }
46500}
46501///Builder for [`MutableDescriptorTypeListEXT`].
46502pub struct MutableDescriptorTypeListEXTBuilder<'a> {
46503    inner: MutableDescriptorTypeListEXT,
46504    _marker: core::marker::PhantomData<&'a ()>,
46505}
46506impl MutableDescriptorTypeListEXT {
46507    /// Start building this struct.
46508    #[inline]
46509    pub fn builder<'a>() -> MutableDescriptorTypeListEXTBuilder<'a> {
46510        MutableDescriptorTypeListEXTBuilder {
46511            inner: MutableDescriptorTypeListEXT {
46512                ..Default::default()
46513            },
46514            _marker: core::marker::PhantomData,
46515        }
46516    }
46517}
46518impl<'a> MutableDescriptorTypeListEXTBuilder<'a> {
46519    #[inline]
46520    pub fn descriptor_types(mut self, slice: &'a [DescriptorType]) -> Self {
46521        self.inner.descriptor_type_count = slice.len() as u32;
46522        self.inner.p_descriptor_types = slice.as_ptr();
46523        self
46524    }
46525}
46526impl<'a> core::ops::Deref for MutableDescriptorTypeListEXTBuilder<'a> {
46527    type Target = MutableDescriptorTypeListEXT;
46528    #[inline]
46529    fn deref(&self) -> &Self::Target {
46530        &self.inner
46531    }
46532}
46533impl<'a> core::ops::DerefMut for MutableDescriptorTypeListEXTBuilder<'a> {
46534    #[inline]
46535    fn deref_mut(&mut self) -> &mut Self::Target {
46536        &mut self.inner
46537    }
46538}
46539///Builder for [`MutableDescriptorTypeCreateInfoEXT`] with lifetime-tied pNext safety.
46540pub struct MutableDescriptorTypeCreateInfoEXTBuilder<'a> {
46541    inner: MutableDescriptorTypeCreateInfoEXT,
46542    _marker: core::marker::PhantomData<&'a ()>,
46543}
46544impl MutableDescriptorTypeCreateInfoEXT {
46545    /// Start building this struct; `s_type` is already set to the correct variant.
46546    #[inline]
46547    pub fn builder<'a>() -> MutableDescriptorTypeCreateInfoEXTBuilder<'a> {
46548        MutableDescriptorTypeCreateInfoEXTBuilder {
46549            inner: MutableDescriptorTypeCreateInfoEXT {
46550                s_type: StructureType::from_raw(1000351002i32),
46551                ..Default::default()
46552            },
46553            _marker: core::marker::PhantomData,
46554        }
46555    }
46556}
46557impl<'a> MutableDescriptorTypeCreateInfoEXTBuilder<'a> {
46558    #[inline]
46559    pub fn mutable_descriptor_type_lists(
46560        mut self,
46561        slice: &'a [MutableDescriptorTypeListEXT],
46562    ) -> Self {
46563        self.inner.mutable_descriptor_type_list_count = slice.len() as u32;
46564        self.inner.p_mutable_descriptor_type_lists = slice.as_ptr();
46565        self
46566    }
46567    ///Prepend a struct to the pNext chain. See [`MutableDescriptorTypeCreateInfoEXT`]'s **Extended By** section for valid types.
46568    #[inline]
46569    pub fn push_next<T: ExtendsMutableDescriptorTypeCreateInfoEXT>(
46570        mut self,
46571        next: &'a mut T,
46572    ) -> Self {
46573        unsafe {
46574            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
46575            (*next_ptr).p_next = self.inner.p_next as *mut _;
46576            self.inner.p_next = <*mut BaseOutStructure>::cast::<
46577                core::ffi::c_void,
46578            >(next_ptr) as *const _;
46579        }
46580        self
46581    }
46582}
46583impl<'a> core::ops::Deref for MutableDescriptorTypeCreateInfoEXTBuilder<'a> {
46584    type Target = MutableDescriptorTypeCreateInfoEXT;
46585    #[inline]
46586    fn deref(&self) -> &Self::Target {
46587        &self.inner
46588    }
46589}
46590impl<'a> core::ops::DerefMut for MutableDescriptorTypeCreateInfoEXTBuilder<'a> {
46591    #[inline]
46592    fn deref_mut(&mut self) -> &mut Self::Target {
46593        &mut self.inner
46594    }
46595}
46596///Builder for [`PhysicalDeviceDepthClipControlFeaturesEXT`] with lifetime-tied pNext safety.
46597pub struct PhysicalDeviceDepthClipControlFeaturesEXTBuilder<'a> {
46598    inner: PhysicalDeviceDepthClipControlFeaturesEXT,
46599    _marker: core::marker::PhantomData<&'a ()>,
46600}
46601impl PhysicalDeviceDepthClipControlFeaturesEXT {
46602    /// Start building this struct; `s_type` is already set to the correct variant.
46603    #[inline]
46604    pub fn builder<'a>() -> PhysicalDeviceDepthClipControlFeaturesEXTBuilder<'a> {
46605        PhysicalDeviceDepthClipControlFeaturesEXTBuilder {
46606            inner: PhysicalDeviceDepthClipControlFeaturesEXT {
46607                s_type: StructureType::from_raw(1000355000i32),
46608                ..Default::default()
46609            },
46610            _marker: core::marker::PhantomData,
46611        }
46612    }
46613}
46614impl<'a> PhysicalDeviceDepthClipControlFeaturesEXTBuilder<'a> {
46615    #[inline]
46616    pub fn depth_clip_control(mut self, value: bool) -> Self {
46617        self.inner.depth_clip_control = value as u32;
46618        self
46619    }
46620    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDepthClipControlFeaturesEXT`]'s **Extended By** section for valid types.
46621    #[inline]
46622    pub fn push_next<T: ExtendsPhysicalDeviceDepthClipControlFeaturesEXT>(
46623        mut self,
46624        next: &'a mut T,
46625    ) -> Self {
46626        unsafe {
46627            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
46628            (*next_ptr).p_next = self.inner.p_next as *mut _;
46629            self.inner.p_next = <*mut BaseOutStructure>::cast::<
46630                core::ffi::c_void,
46631            >(next_ptr);
46632        }
46633        self
46634    }
46635}
46636impl<'a> core::ops::Deref for PhysicalDeviceDepthClipControlFeaturesEXTBuilder<'a> {
46637    type Target = PhysicalDeviceDepthClipControlFeaturesEXT;
46638    #[inline]
46639    fn deref(&self) -> &Self::Target {
46640        &self.inner
46641    }
46642}
46643impl<'a> core::ops::DerefMut for PhysicalDeviceDepthClipControlFeaturesEXTBuilder<'a> {
46644    #[inline]
46645    fn deref_mut(&mut self) -> &mut Self::Target {
46646        &mut self.inner
46647    }
46648}
46649///Builder for [`PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT`] with lifetime-tied pNext safety.
46650pub struct PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXTBuilder<'a> {
46651    inner: PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT,
46652    _marker: core::marker::PhantomData<&'a ()>,
46653}
46654impl PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {
46655    /// Start building this struct; `s_type` is already set to the correct variant.
46656    #[inline]
46657    pub fn builder<'a>() -> PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXTBuilder<
46658        'a,
46659    > {
46660        PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXTBuilder {
46661            inner: PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {
46662                s_type: StructureType::from_raw(1000620000i32),
46663                ..Default::default()
46664            },
46665            _marker: core::marker::PhantomData,
46666        }
46667    }
46668}
46669impl<'a> PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXTBuilder<'a> {
46670    #[inline]
46671    pub fn zero_initialize_device_memory(mut self, value: bool) -> Self {
46672        self.inner.zero_initialize_device_memory = value as u32;
46673        self
46674    }
46675    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT`]'s **Extended By** section for valid types.
46676    #[inline]
46677    pub fn push_next<T: ExtendsPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT>(
46678        mut self,
46679        next: &'a mut T,
46680    ) -> Self {
46681        unsafe {
46682            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
46683            (*next_ptr).p_next = self.inner.p_next as *mut _;
46684            self.inner.p_next = <*mut BaseOutStructure>::cast::<
46685                core::ffi::c_void,
46686            >(next_ptr);
46687        }
46688        self
46689    }
46690}
46691impl<'a> core::ops::Deref
46692for PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXTBuilder<'a> {
46693    type Target = PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT;
46694    #[inline]
46695    fn deref(&self) -> &Self::Target {
46696        &self.inner
46697    }
46698}
46699impl<'a> core::ops::DerefMut
46700for PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXTBuilder<'a> {
46701    #[inline]
46702    fn deref_mut(&mut self) -> &mut Self::Target {
46703        &mut self.inner
46704    }
46705}
46706///Builder for [`BeginCustomResolveInfoEXT`] with lifetime-tied pNext safety.
46707pub struct BeginCustomResolveInfoEXTBuilder<'a> {
46708    inner: BeginCustomResolveInfoEXT,
46709    _marker: core::marker::PhantomData<&'a ()>,
46710}
46711impl BeginCustomResolveInfoEXT {
46712    /// Start building this struct; `s_type` is already set to the correct variant.
46713    #[inline]
46714    pub fn builder<'a>() -> BeginCustomResolveInfoEXTBuilder<'a> {
46715        BeginCustomResolveInfoEXTBuilder {
46716            inner: BeginCustomResolveInfoEXT {
46717                s_type: StructureType::from_raw(1000628001i32),
46718                ..Default::default()
46719            },
46720            _marker: core::marker::PhantomData,
46721        }
46722    }
46723}
46724impl<'a> BeginCustomResolveInfoEXTBuilder<'a> {
46725    ///Prepend a struct to the pNext chain. See [`BeginCustomResolveInfoEXT`]'s **Extended By** section for valid types.
46726    #[inline]
46727    pub fn push_next<T: ExtendsBeginCustomResolveInfoEXT>(
46728        mut self,
46729        next: &'a mut T,
46730    ) -> Self {
46731        unsafe {
46732            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
46733            (*next_ptr).p_next = self.inner.p_next as *mut _;
46734            self.inner.p_next = <*mut BaseOutStructure>::cast::<
46735                core::ffi::c_void,
46736            >(next_ptr);
46737        }
46738        self
46739    }
46740}
46741impl<'a> core::ops::Deref for BeginCustomResolveInfoEXTBuilder<'a> {
46742    type Target = BeginCustomResolveInfoEXT;
46743    #[inline]
46744    fn deref(&self) -> &Self::Target {
46745        &self.inner
46746    }
46747}
46748impl<'a> core::ops::DerefMut for BeginCustomResolveInfoEXTBuilder<'a> {
46749    #[inline]
46750    fn deref_mut(&mut self) -> &mut Self::Target {
46751        &mut self.inner
46752    }
46753}
46754///Builder for [`PhysicalDeviceCustomResolveFeaturesEXT`] with lifetime-tied pNext safety.
46755pub struct PhysicalDeviceCustomResolveFeaturesEXTBuilder<'a> {
46756    inner: PhysicalDeviceCustomResolveFeaturesEXT,
46757    _marker: core::marker::PhantomData<&'a ()>,
46758}
46759impl PhysicalDeviceCustomResolveFeaturesEXT {
46760    /// Start building this struct; `s_type` is already set to the correct variant.
46761    #[inline]
46762    pub fn builder<'a>() -> PhysicalDeviceCustomResolveFeaturesEXTBuilder<'a> {
46763        PhysicalDeviceCustomResolveFeaturesEXTBuilder {
46764            inner: PhysicalDeviceCustomResolveFeaturesEXT {
46765                s_type: StructureType::from_raw(1000628000i32),
46766                ..Default::default()
46767            },
46768            _marker: core::marker::PhantomData,
46769        }
46770    }
46771}
46772impl<'a> PhysicalDeviceCustomResolveFeaturesEXTBuilder<'a> {
46773    #[inline]
46774    pub fn custom_resolve(mut self, value: bool) -> Self {
46775        self.inner.custom_resolve = value as u32;
46776        self
46777    }
46778    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceCustomResolveFeaturesEXT`]'s **Extended By** section for valid types.
46779    #[inline]
46780    pub fn push_next<T: ExtendsPhysicalDeviceCustomResolveFeaturesEXT>(
46781        mut self,
46782        next: &'a mut T,
46783    ) -> Self {
46784        unsafe {
46785            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
46786            (*next_ptr).p_next = self.inner.p_next as *mut _;
46787            self.inner.p_next = <*mut BaseOutStructure>::cast::<
46788                core::ffi::c_void,
46789            >(next_ptr);
46790        }
46791        self
46792    }
46793}
46794impl<'a> core::ops::Deref for PhysicalDeviceCustomResolveFeaturesEXTBuilder<'a> {
46795    type Target = PhysicalDeviceCustomResolveFeaturesEXT;
46796    #[inline]
46797    fn deref(&self) -> &Self::Target {
46798        &self.inner
46799    }
46800}
46801impl<'a> core::ops::DerefMut for PhysicalDeviceCustomResolveFeaturesEXTBuilder<'a> {
46802    #[inline]
46803    fn deref_mut(&mut self) -> &mut Self::Target {
46804        &mut self.inner
46805    }
46806}
46807///Builder for [`CustomResolveCreateInfoEXT`] with lifetime-tied pNext safety.
46808pub struct CustomResolveCreateInfoEXTBuilder<'a> {
46809    inner: CustomResolveCreateInfoEXT,
46810    _marker: core::marker::PhantomData<&'a ()>,
46811}
46812impl CustomResolveCreateInfoEXT {
46813    /// Start building this struct; `s_type` is already set to the correct variant.
46814    #[inline]
46815    pub fn builder<'a>() -> CustomResolveCreateInfoEXTBuilder<'a> {
46816        CustomResolveCreateInfoEXTBuilder {
46817            inner: CustomResolveCreateInfoEXT {
46818                s_type: StructureType::from_raw(1000628002i32),
46819                ..Default::default()
46820            },
46821            _marker: core::marker::PhantomData,
46822        }
46823    }
46824}
46825impl<'a> CustomResolveCreateInfoEXTBuilder<'a> {
46826    #[inline]
46827    pub fn custom_resolve(mut self, value: bool) -> Self {
46828        self.inner.custom_resolve = value as u32;
46829        self
46830    }
46831    #[inline]
46832    pub fn color_attachment_formats(mut self, slice: &'a [Format]) -> Self {
46833        self.inner.color_attachment_count = slice.len() as u32;
46834        self.inner.p_color_attachment_formats = slice.as_ptr();
46835        self
46836    }
46837    #[inline]
46838    pub fn depth_attachment_format(mut self, value: Format) -> Self {
46839        self.inner.depth_attachment_format = value;
46840        self
46841    }
46842    #[inline]
46843    pub fn stencil_attachment_format(mut self, value: Format) -> Self {
46844        self.inner.stencil_attachment_format = value;
46845        self
46846    }
46847    ///Prepend a struct to the pNext chain. See [`CustomResolveCreateInfoEXT`]'s **Extended By** section for valid types.
46848    #[inline]
46849    pub fn push_next<T: ExtendsCustomResolveCreateInfoEXT>(
46850        mut self,
46851        next: &'a mut T,
46852    ) -> Self {
46853        unsafe {
46854            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
46855            (*next_ptr).p_next = self.inner.p_next as *mut _;
46856            self.inner.p_next = <*mut BaseOutStructure>::cast::<
46857                core::ffi::c_void,
46858            >(next_ptr) as *const _;
46859        }
46860        self
46861    }
46862}
46863impl<'a> core::ops::Deref for CustomResolveCreateInfoEXTBuilder<'a> {
46864    type Target = CustomResolveCreateInfoEXT;
46865    #[inline]
46866    fn deref(&self) -> &Self::Target {
46867        &self.inner
46868    }
46869}
46870impl<'a> core::ops::DerefMut for CustomResolveCreateInfoEXTBuilder<'a> {
46871    #[inline]
46872    fn deref_mut(&mut self) -> &mut Self::Target {
46873        &mut self.inner
46874    }
46875}
46876///Builder for [`PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT`] with lifetime-tied pNext safety.
46877pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesEXTBuilder<'a> {
46878    inner: PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT,
46879    _marker: core::marker::PhantomData<&'a ()>,
46880}
46881impl PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {
46882    /// Start building this struct; `s_type` is already set to the correct variant.
46883    #[inline]
46884    pub fn builder<'a>() -> PhysicalDeviceDeviceGeneratedCommandsFeaturesEXTBuilder<'a> {
46885        PhysicalDeviceDeviceGeneratedCommandsFeaturesEXTBuilder {
46886            inner: PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {
46887                s_type: StructureType::from_raw(1000572000i32),
46888                ..Default::default()
46889            },
46890            _marker: core::marker::PhantomData,
46891        }
46892    }
46893}
46894impl<'a> PhysicalDeviceDeviceGeneratedCommandsFeaturesEXTBuilder<'a> {
46895    #[inline]
46896    pub fn device_generated_commands(mut self, value: bool) -> Self {
46897        self.inner.device_generated_commands = value as u32;
46898        self
46899    }
46900    #[inline]
46901    pub fn dynamic_generated_pipeline_layout(mut self, value: bool) -> Self {
46902        self.inner.dynamic_generated_pipeline_layout = value as u32;
46903        self
46904    }
46905    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT`]'s **Extended By** section for valid types.
46906    #[inline]
46907    pub fn push_next<T: ExtendsPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT>(
46908        mut self,
46909        next: &'a mut T,
46910    ) -> Self {
46911        unsafe {
46912            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
46913            (*next_ptr).p_next = self.inner.p_next as *mut _;
46914            self.inner.p_next = <*mut BaseOutStructure>::cast::<
46915                core::ffi::c_void,
46916            >(next_ptr);
46917        }
46918        self
46919    }
46920}
46921impl<'a> core::ops::Deref
46922for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXTBuilder<'a> {
46923    type Target = PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT;
46924    #[inline]
46925    fn deref(&self) -> &Self::Target {
46926        &self.inner
46927    }
46928}
46929impl<'a> core::ops::DerefMut
46930for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXTBuilder<'a> {
46931    #[inline]
46932    fn deref_mut(&mut self) -> &mut Self::Target {
46933        &mut self.inner
46934    }
46935}
46936///Builder for [`PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT`] with lifetime-tied pNext safety.
46937pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesEXTBuilder<'a> {
46938    inner: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT,
46939    _marker: core::marker::PhantomData<&'a ()>,
46940}
46941impl PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {
46942    /// Start building this struct; `s_type` is already set to the correct variant.
46943    #[inline]
46944    pub fn builder<'a>() -> PhysicalDeviceDeviceGeneratedCommandsPropertiesEXTBuilder<
46945        'a,
46946    > {
46947        PhysicalDeviceDeviceGeneratedCommandsPropertiesEXTBuilder {
46948            inner: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {
46949                s_type: StructureType::from_raw(1000572001i32),
46950                ..Default::default()
46951            },
46952            _marker: core::marker::PhantomData,
46953        }
46954    }
46955}
46956impl<'a> PhysicalDeviceDeviceGeneratedCommandsPropertiesEXTBuilder<'a> {
46957    #[inline]
46958    pub fn max_indirect_pipeline_count(mut self, value: u32) -> Self {
46959        self.inner.max_indirect_pipeline_count = value;
46960        self
46961    }
46962    #[inline]
46963    pub fn max_indirect_shader_object_count(mut self, value: u32) -> Self {
46964        self.inner.max_indirect_shader_object_count = value;
46965        self
46966    }
46967    #[inline]
46968    pub fn max_indirect_sequence_count(mut self, value: u32) -> Self {
46969        self.inner.max_indirect_sequence_count = value;
46970        self
46971    }
46972    #[inline]
46973    pub fn max_indirect_commands_token_count(mut self, value: u32) -> Self {
46974        self.inner.max_indirect_commands_token_count = value;
46975        self
46976    }
46977    #[inline]
46978    pub fn max_indirect_commands_token_offset(mut self, value: u32) -> Self {
46979        self.inner.max_indirect_commands_token_offset = value;
46980        self
46981    }
46982    #[inline]
46983    pub fn max_indirect_commands_indirect_stride(mut self, value: u32) -> Self {
46984        self.inner.max_indirect_commands_indirect_stride = value;
46985        self
46986    }
46987    #[inline]
46988    pub fn supported_indirect_commands_input_modes(
46989        mut self,
46990        value: IndirectCommandsInputModeFlagsEXT,
46991    ) -> Self {
46992        self.inner.supported_indirect_commands_input_modes = value;
46993        self
46994    }
46995    #[inline]
46996    pub fn supported_indirect_commands_shader_stages(
46997        mut self,
46998        value: ShaderStageFlags,
46999    ) -> Self {
47000        self.inner.supported_indirect_commands_shader_stages = value;
47001        self
47002    }
47003    #[inline]
47004    pub fn supported_indirect_commands_shader_stages_pipeline_binding(
47005        mut self,
47006        value: ShaderStageFlags,
47007    ) -> Self {
47008        self.inner.supported_indirect_commands_shader_stages_pipeline_binding = value;
47009        self
47010    }
47011    #[inline]
47012    pub fn supported_indirect_commands_shader_stages_shader_binding(
47013        mut self,
47014        value: ShaderStageFlags,
47015    ) -> Self {
47016        self.inner.supported_indirect_commands_shader_stages_shader_binding = value;
47017        self
47018    }
47019    #[inline]
47020    pub fn device_generated_commands_transform_feedback(mut self, value: bool) -> Self {
47021        self.inner.device_generated_commands_transform_feedback = value as u32;
47022        self
47023    }
47024    #[inline]
47025    pub fn device_generated_commands_multi_draw_indirect_count(
47026        mut self,
47027        value: bool,
47028    ) -> Self {
47029        self.inner.device_generated_commands_multi_draw_indirect_count = value as u32;
47030        self
47031    }
47032}
47033impl<'a> core::ops::Deref
47034for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXTBuilder<'a> {
47035    type Target = PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT;
47036    #[inline]
47037    fn deref(&self) -> &Self::Target {
47038        &self.inner
47039    }
47040}
47041impl<'a> core::ops::DerefMut
47042for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXTBuilder<'a> {
47043    #[inline]
47044    fn deref_mut(&mut self) -> &mut Self::Target {
47045        &mut self.inner
47046    }
47047}
47048///Builder for [`GeneratedCommandsPipelineInfoEXT`] with lifetime-tied pNext safety.
47049pub struct GeneratedCommandsPipelineInfoEXTBuilder<'a> {
47050    inner: GeneratedCommandsPipelineInfoEXT,
47051    _marker: core::marker::PhantomData<&'a ()>,
47052}
47053impl GeneratedCommandsPipelineInfoEXT {
47054    /// Start building this struct; `s_type` is already set to the correct variant.
47055    #[inline]
47056    pub fn builder<'a>() -> GeneratedCommandsPipelineInfoEXTBuilder<'a> {
47057        GeneratedCommandsPipelineInfoEXTBuilder {
47058            inner: GeneratedCommandsPipelineInfoEXT {
47059                s_type: StructureType::from_raw(1000572013i32),
47060                ..Default::default()
47061            },
47062            _marker: core::marker::PhantomData,
47063        }
47064    }
47065}
47066impl<'a> GeneratedCommandsPipelineInfoEXTBuilder<'a> {
47067    #[inline]
47068    pub fn pipeline(mut self, value: Pipeline) -> Self {
47069        self.inner.pipeline = value;
47070        self
47071    }
47072    ///Prepend a struct to the pNext chain. See [`GeneratedCommandsPipelineInfoEXT`]'s **Extended By** section for valid types.
47073    #[inline]
47074    pub fn push_next<T: ExtendsGeneratedCommandsPipelineInfoEXT>(
47075        mut self,
47076        next: &'a mut T,
47077    ) -> Self {
47078        unsafe {
47079            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
47080            (*next_ptr).p_next = self.inner.p_next as *mut _;
47081            self.inner.p_next = <*mut BaseOutStructure>::cast::<
47082                core::ffi::c_void,
47083            >(next_ptr);
47084        }
47085        self
47086    }
47087}
47088impl<'a> core::ops::Deref for GeneratedCommandsPipelineInfoEXTBuilder<'a> {
47089    type Target = GeneratedCommandsPipelineInfoEXT;
47090    #[inline]
47091    fn deref(&self) -> &Self::Target {
47092        &self.inner
47093    }
47094}
47095impl<'a> core::ops::DerefMut for GeneratedCommandsPipelineInfoEXTBuilder<'a> {
47096    #[inline]
47097    fn deref_mut(&mut self) -> &mut Self::Target {
47098        &mut self.inner
47099    }
47100}
47101///Builder for [`GeneratedCommandsShaderInfoEXT`] with lifetime-tied pNext safety.
47102pub struct GeneratedCommandsShaderInfoEXTBuilder<'a> {
47103    inner: GeneratedCommandsShaderInfoEXT,
47104    _marker: core::marker::PhantomData<&'a ()>,
47105}
47106impl GeneratedCommandsShaderInfoEXT {
47107    /// Start building this struct; `s_type` is already set to the correct variant.
47108    #[inline]
47109    pub fn builder<'a>() -> GeneratedCommandsShaderInfoEXTBuilder<'a> {
47110        GeneratedCommandsShaderInfoEXTBuilder {
47111            inner: GeneratedCommandsShaderInfoEXT {
47112                s_type: StructureType::from_raw(1000572014i32),
47113                ..Default::default()
47114            },
47115            _marker: core::marker::PhantomData,
47116        }
47117    }
47118}
47119impl<'a> GeneratedCommandsShaderInfoEXTBuilder<'a> {
47120    #[inline]
47121    pub fn shaders(mut self, slice: &'a [ShaderEXT]) -> Self {
47122        self.inner.shader_count = slice.len() as u32;
47123        self.inner.p_shaders = slice.as_ptr();
47124        self
47125    }
47126    ///Prepend a struct to the pNext chain. See [`GeneratedCommandsShaderInfoEXT`]'s **Extended By** section for valid types.
47127    #[inline]
47128    pub fn push_next<T: ExtendsGeneratedCommandsShaderInfoEXT>(
47129        mut self,
47130        next: &'a mut T,
47131    ) -> Self {
47132        unsafe {
47133            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
47134            (*next_ptr).p_next = self.inner.p_next as *mut _;
47135            self.inner.p_next = <*mut BaseOutStructure>::cast::<
47136                core::ffi::c_void,
47137            >(next_ptr);
47138        }
47139        self
47140    }
47141}
47142impl<'a> core::ops::Deref for GeneratedCommandsShaderInfoEXTBuilder<'a> {
47143    type Target = GeneratedCommandsShaderInfoEXT;
47144    #[inline]
47145    fn deref(&self) -> &Self::Target {
47146        &self.inner
47147    }
47148}
47149impl<'a> core::ops::DerefMut for GeneratedCommandsShaderInfoEXTBuilder<'a> {
47150    #[inline]
47151    fn deref_mut(&mut self) -> &mut Self::Target {
47152        &mut self.inner
47153    }
47154}
47155///Builder for [`GeneratedCommandsMemoryRequirementsInfoEXT`] with lifetime-tied pNext safety.
47156pub struct GeneratedCommandsMemoryRequirementsInfoEXTBuilder<'a> {
47157    inner: GeneratedCommandsMemoryRequirementsInfoEXT,
47158    _marker: core::marker::PhantomData<&'a ()>,
47159}
47160impl GeneratedCommandsMemoryRequirementsInfoEXT {
47161    /// Start building this struct; `s_type` is already set to the correct variant.
47162    #[inline]
47163    pub fn builder<'a>() -> GeneratedCommandsMemoryRequirementsInfoEXTBuilder<'a> {
47164        GeneratedCommandsMemoryRequirementsInfoEXTBuilder {
47165            inner: GeneratedCommandsMemoryRequirementsInfoEXT {
47166                s_type: StructureType::from_raw(1000572002i32),
47167                ..Default::default()
47168            },
47169            _marker: core::marker::PhantomData,
47170        }
47171    }
47172}
47173impl<'a> GeneratedCommandsMemoryRequirementsInfoEXTBuilder<'a> {
47174    #[inline]
47175    pub fn indirect_execution_set(mut self, value: IndirectExecutionSetEXT) -> Self {
47176        self.inner.indirect_execution_set = value;
47177        self
47178    }
47179    #[inline]
47180    pub fn indirect_commands_layout(mut self, value: IndirectCommandsLayoutEXT) -> Self {
47181        self.inner.indirect_commands_layout = value;
47182        self
47183    }
47184    #[inline]
47185    pub fn max_sequence_count(mut self, value: u32) -> Self {
47186        self.inner.max_sequence_count = value;
47187        self
47188    }
47189    #[inline]
47190    pub fn max_draw_count(mut self, value: u32) -> Self {
47191        self.inner.max_draw_count = value;
47192        self
47193    }
47194    ///Prepend a struct to the pNext chain. See [`GeneratedCommandsMemoryRequirementsInfoEXT`]'s **Extended By** section for valid types.
47195    #[inline]
47196    pub fn push_next<T: ExtendsGeneratedCommandsMemoryRequirementsInfoEXT>(
47197        mut self,
47198        next: &'a mut T,
47199    ) -> Self {
47200        unsafe {
47201            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
47202            (*next_ptr).p_next = self.inner.p_next as *mut _;
47203            self.inner.p_next = <*mut BaseOutStructure>::cast::<
47204                core::ffi::c_void,
47205            >(next_ptr) as *const _;
47206        }
47207        self
47208    }
47209}
47210impl<'a> core::ops::Deref for GeneratedCommandsMemoryRequirementsInfoEXTBuilder<'a> {
47211    type Target = GeneratedCommandsMemoryRequirementsInfoEXT;
47212    #[inline]
47213    fn deref(&self) -> &Self::Target {
47214        &self.inner
47215    }
47216}
47217impl<'a> core::ops::DerefMut for GeneratedCommandsMemoryRequirementsInfoEXTBuilder<'a> {
47218    #[inline]
47219    fn deref_mut(&mut self) -> &mut Self::Target {
47220        &mut self.inner
47221    }
47222}
47223///Builder for [`IndirectExecutionSetPipelineInfoEXT`] with lifetime-tied pNext safety.
47224pub struct IndirectExecutionSetPipelineInfoEXTBuilder<'a> {
47225    inner: IndirectExecutionSetPipelineInfoEXT,
47226    _marker: core::marker::PhantomData<&'a ()>,
47227}
47228impl IndirectExecutionSetPipelineInfoEXT {
47229    /// Start building this struct; `s_type` is already set to the correct variant.
47230    #[inline]
47231    pub fn builder<'a>() -> IndirectExecutionSetPipelineInfoEXTBuilder<'a> {
47232        IndirectExecutionSetPipelineInfoEXTBuilder {
47233            inner: IndirectExecutionSetPipelineInfoEXT {
47234                s_type: StructureType::from_raw(1000572010i32),
47235                ..Default::default()
47236            },
47237            _marker: core::marker::PhantomData,
47238        }
47239    }
47240}
47241impl<'a> IndirectExecutionSetPipelineInfoEXTBuilder<'a> {
47242    #[inline]
47243    pub fn initial_pipeline(mut self, value: Pipeline) -> Self {
47244        self.inner.initial_pipeline = value;
47245        self
47246    }
47247    #[inline]
47248    pub fn max_pipeline_count(mut self, value: u32) -> Self {
47249        self.inner.max_pipeline_count = value;
47250        self
47251    }
47252    ///Prepend a struct to the pNext chain. See [`IndirectExecutionSetPipelineInfoEXT`]'s **Extended By** section for valid types.
47253    #[inline]
47254    pub fn push_next<T: ExtendsIndirectExecutionSetPipelineInfoEXT>(
47255        mut self,
47256        next: &'a mut T,
47257    ) -> Self {
47258        unsafe {
47259            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
47260            (*next_ptr).p_next = self.inner.p_next as *mut _;
47261            self.inner.p_next = <*mut BaseOutStructure>::cast::<
47262                core::ffi::c_void,
47263            >(next_ptr) as *const _;
47264        }
47265        self
47266    }
47267}
47268impl<'a> core::ops::Deref for IndirectExecutionSetPipelineInfoEXTBuilder<'a> {
47269    type Target = IndirectExecutionSetPipelineInfoEXT;
47270    #[inline]
47271    fn deref(&self) -> &Self::Target {
47272        &self.inner
47273    }
47274}
47275impl<'a> core::ops::DerefMut for IndirectExecutionSetPipelineInfoEXTBuilder<'a> {
47276    #[inline]
47277    fn deref_mut(&mut self) -> &mut Self::Target {
47278        &mut self.inner
47279    }
47280}
47281///Builder for [`IndirectExecutionSetShaderLayoutInfoEXT`] with lifetime-tied pNext safety.
47282pub struct IndirectExecutionSetShaderLayoutInfoEXTBuilder<'a> {
47283    inner: IndirectExecutionSetShaderLayoutInfoEXT,
47284    _marker: core::marker::PhantomData<&'a ()>,
47285}
47286impl IndirectExecutionSetShaderLayoutInfoEXT {
47287    /// Start building this struct; `s_type` is already set to the correct variant.
47288    #[inline]
47289    pub fn builder<'a>() -> IndirectExecutionSetShaderLayoutInfoEXTBuilder<'a> {
47290        IndirectExecutionSetShaderLayoutInfoEXTBuilder {
47291            inner: IndirectExecutionSetShaderLayoutInfoEXT {
47292                s_type: StructureType::from_raw(1000572012i32),
47293                ..Default::default()
47294            },
47295            _marker: core::marker::PhantomData,
47296        }
47297    }
47298}
47299impl<'a> IndirectExecutionSetShaderLayoutInfoEXTBuilder<'a> {
47300    #[inline]
47301    pub fn set_layout_count(mut self, value: u32) -> Self {
47302        self.inner.set_layout_count = value;
47303        self
47304    }
47305    #[inline]
47306    pub fn set_layouts(mut self, slice: &'a [DescriptorSetLayout]) -> Self {
47307        self.inner.set_layout_count = slice.len() as u32;
47308        self.inner.p_set_layouts = slice.as_ptr();
47309        self
47310    }
47311    ///Prepend a struct to the pNext chain. See [`IndirectExecutionSetShaderLayoutInfoEXT`]'s **Extended By** section for valid types.
47312    #[inline]
47313    pub fn push_next<T: ExtendsIndirectExecutionSetShaderLayoutInfoEXT>(
47314        mut self,
47315        next: &'a mut T,
47316    ) -> Self {
47317        unsafe {
47318            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
47319            (*next_ptr).p_next = self.inner.p_next as *mut _;
47320            self.inner.p_next = <*mut BaseOutStructure>::cast::<
47321                core::ffi::c_void,
47322            >(next_ptr) as *const _;
47323        }
47324        self
47325    }
47326}
47327impl<'a> core::ops::Deref for IndirectExecutionSetShaderLayoutInfoEXTBuilder<'a> {
47328    type Target = IndirectExecutionSetShaderLayoutInfoEXT;
47329    #[inline]
47330    fn deref(&self) -> &Self::Target {
47331        &self.inner
47332    }
47333}
47334impl<'a> core::ops::DerefMut for IndirectExecutionSetShaderLayoutInfoEXTBuilder<'a> {
47335    #[inline]
47336    fn deref_mut(&mut self) -> &mut Self::Target {
47337        &mut self.inner
47338    }
47339}
47340///Builder for [`IndirectExecutionSetShaderInfoEXT`] with lifetime-tied pNext safety.
47341pub struct IndirectExecutionSetShaderInfoEXTBuilder<'a> {
47342    inner: IndirectExecutionSetShaderInfoEXT,
47343    _marker: core::marker::PhantomData<&'a ()>,
47344}
47345impl IndirectExecutionSetShaderInfoEXT {
47346    /// Start building this struct; `s_type` is already set to the correct variant.
47347    #[inline]
47348    pub fn builder<'a>() -> IndirectExecutionSetShaderInfoEXTBuilder<'a> {
47349        IndirectExecutionSetShaderInfoEXTBuilder {
47350            inner: IndirectExecutionSetShaderInfoEXT {
47351                s_type: StructureType::from_raw(1000572011i32),
47352                ..Default::default()
47353            },
47354            _marker: core::marker::PhantomData,
47355        }
47356    }
47357}
47358impl<'a> IndirectExecutionSetShaderInfoEXTBuilder<'a> {
47359    #[inline]
47360    pub fn initial_shaders(mut self, slice: &'a [ShaderEXT]) -> Self {
47361        self.inner.shader_count = slice.len() as u32;
47362        self.inner.p_initial_shaders = slice.as_ptr();
47363        self
47364    }
47365    #[inline]
47366    pub fn set_layout_infos(
47367        mut self,
47368        slice: &'a [IndirectExecutionSetShaderLayoutInfoEXT],
47369    ) -> Self {
47370        self.inner.shader_count = slice.len() as u32;
47371        self.inner.p_set_layout_infos = slice.as_ptr();
47372        self
47373    }
47374    #[inline]
47375    pub fn max_shader_count(mut self, value: u32) -> Self {
47376        self.inner.max_shader_count = value;
47377        self
47378    }
47379    #[inline]
47380    pub fn push_constant_ranges(mut self, slice: &'a [PushConstantRange]) -> Self {
47381        self.inner.push_constant_range_count = slice.len() as u32;
47382        self.inner.p_push_constant_ranges = slice.as_ptr();
47383        self
47384    }
47385    ///Prepend a struct to the pNext chain. See [`IndirectExecutionSetShaderInfoEXT`]'s **Extended By** section for valid types.
47386    #[inline]
47387    pub fn push_next<T: ExtendsIndirectExecutionSetShaderInfoEXT>(
47388        mut self,
47389        next: &'a mut T,
47390    ) -> Self {
47391        unsafe {
47392            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
47393            (*next_ptr).p_next = self.inner.p_next as *mut _;
47394            self.inner.p_next = <*mut BaseOutStructure>::cast::<
47395                core::ffi::c_void,
47396            >(next_ptr) as *const _;
47397        }
47398        self
47399    }
47400}
47401impl<'a> core::ops::Deref for IndirectExecutionSetShaderInfoEXTBuilder<'a> {
47402    type Target = IndirectExecutionSetShaderInfoEXT;
47403    #[inline]
47404    fn deref(&self) -> &Self::Target {
47405        &self.inner
47406    }
47407}
47408impl<'a> core::ops::DerefMut for IndirectExecutionSetShaderInfoEXTBuilder<'a> {
47409    #[inline]
47410    fn deref_mut(&mut self) -> &mut Self::Target {
47411        &mut self.inner
47412    }
47413}
47414///Builder for [`IndirectExecutionSetCreateInfoEXT`] with lifetime-tied pNext safety.
47415pub struct IndirectExecutionSetCreateInfoEXTBuilder<'a> {
47416    inner: IndirectExecutionSetCreateInfoEXT,
47417    _marker: core::marker::PhantomData<&'a ()>,
47418}
47419impl IndirectExecutionSetCreateInfoEXT {
47420    /// Start building this struct; `s_type` is already set to the correct variant.
47421    #[inline]
47422    pub fn builder<'a>() -> IndirectExecutionSetCreateInfoEXTBuilder<'a> {
47423        IndirectExecutionSetCreateInfoEXTBuilder {
47424            inner: IndirectExecutionSetCreateInfoEXT {
47425                s_type: StructureType::from_raw(1000572003i32),
47426                ..Default::default()
47427            },
47428            _marker: core::marker::PhantomData,
47429        }
47430    }
47431}
47432impl<'a> IndirectExecutionSetCreateInfoEXTBuilder<'a> {
47433    #[inline]
47434    pub fn r#type(mut self, value: IndirectExecutionSetInfoTypeEXT) -> Self {
47435        self.inner.r#type = value;
47436        self
47437    }
47438    #[inline]
47439    pub fn info(mut self, value: IndirectExecutionSetInfoEXT) -> Self {
47440        self.inner.info = value;
47441        self
47442    }
47443    ///Prepend a struct to the pNext chain. See [`IndirectExecutionSetCreateInfoEXT`]'s **Extended By** section for valid types.
47444    #[inline]
47445    pub fn push_next<T: ExtendsIndirectExecutionSetCreateInfoEXT>(
47446        mut self,
47447        next: &'a mut T,
47448    ) -> Self {
47449        unsafe {
47450            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
47451            (*next_ptr).p_next = self.inner.p_next as *mut _;
47452            self.inner.p_next = <*mut BaseOutStructure>::cast::<
47453                core::ffi::c_void,
47454            >(next_ptr) as *const _;
47455        }
47456        self
47457    }
47458}
47459impl<'a> core::ops::Deref for IndirectExecutionSetCreateInfoEXTBuilder<'a> {
47460    type Target = IndirectExecutionSetCreateInfoEXT;
47461    #[inline]
47462    fn deref(&self) -> &Self::Target {
47463        &self.inner
47464    }
47465}
47466impl<'a> core::ops::DerefMut for IndirectExecutionSetCreateInfoEXTBuilder<'a> {
47467    #[inline]
47468    fn deref_mut(&mut self) -> &mut Self::Target {
47469        &mut self.inner
47470    }
47471}
47472///Builder for [`GeneratedCommandsInfoEXT`] with lifetime-tied pNext safety.
47473pub struct GeneratedCommandsInfoEXTBuilder<'a> {
47474    inner: GeneratedCommandsInfoEXT,
47475    _marker: core::marker::PhantomData<&'a ()>,
47476}
47477impl GeneratedCommandsInfoEXT {
47478    /// Start building this struct; `s_type` is already set to the correct variant.
47479    #[inline]
47480    pub fn builder<'a>() -> GeneratedCommandsInfoEXTBuilder<'a> {
47481        GeneratedCommandsInfoEXTBuilder {
47482            inner: GeneratedCommandsInfoEXT {
47483                s_type: StructureType::from_raw(1000572004i32),
47484                ..Default::default()
47485            },
47486            _marker: core::marker::PhantomData,
47487        }
47488    }
47489}
47490impl<'a> GeneratedCommandsInfoEXTBuilder<'a> {
47491    #[inline]
47492    pub fn shader_stages(mut self, value: ShaderStageFlags) -> Self {
47493        self.inner.shader_stages = value;
47494        self
47495    }
47496    #[inline]
47497    pub fn indirect_execution_set(mut self, value: IndirectExecutionSetEXT) -> Self {
47498        self.inner.indirect_execution_set = value;
47499        self
47500    }
47501    #[inline]
47502    pub fn indirect_commands_layout(mut self, value: IndirectCommandsLayoutEXT) -> Self {
47503        self.inner.indirect_commands_layout = value;
47504        self
47505    }
47506    #[inline]
47507    pub fn indirect_address(mut self, value: u64) -> Self {
47508        self.inner.indirect_address = value;
47509        self
47510    }
47511    #[inline]
47512    pub fn indirect_address_size(mut self, value: u64) -> Self {
47513        self.inner.indirect_address_size = value;
47514        self
47515    }
47516    #[inline]
47517    pub fn preprocess_address(mut self, value: u64) -> Self {
47518        self.inner.preprocess_address = value;
47519        self
47520    }
47521    #[inline]
47522    pub fn preprocess_size(mut self, value: u64) -> Self {
47523        self.inner.preprocess_size = value;
47524        self
47525    }
47526    #[inline]
47527    pub fn max_sequence_count(mut self, value: u32) -> Self {
47528        self.inner.max_sequence_count = value;
47529        self
47530    }
47531    #[inline]
47532    pub fn sequence_count_address(mut self, value: u64) -> Self {
47533        self.inner.sequence_count_address = value;
47534        self
47535    }
47536    #[inline]
47537    pub fn max_draw_count(mut self, value: u32) -> Self {
47538        self.inner.max_draw_count = value;
47539        self
47540    }
47541    ///Prepend a struct to the pNext chain. See [`GeneratedCommandsInfoEXT`]'s **Extended By** section for valid types.
47542    #[inline]
47543    pub fn push_next<T: ExtendsGeneratedCommandsInfoEXT>(
47544        mut self,
47545        next: &'a mut T,
47546    ) -> Self {
47547        unsafe {
47548            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
47549            (*next_ptr).p_next = self.inner.p_next as *mut _;
47550            self.inner.p_next = <*mut BaseOutStructure>::cast::<
47551                core::ffi::c_void,
47552            >(next_ptr) as *const _;
47553        }
47554        self
47555    }
47556}
47557impl<'a> core::ops::Deref for GeneratedCommandsInfoEXTBuilder<'a> {
47558    type Target = GeneratedCommandsInfoEXT;
47559    #[inline]
47560    fn deref(&self) -> &Self::Target {
47561        &self.inner
47562    }
47563}
47564impl<'a> core::ops::DerefMut for GeneratedCommandsInfoEXTBuilder<'a> {
47565    #[inline]
47566    fn deref_mut(&mut self) -> &mut Self::Target {
47567        &mut self.inner
47568    }
47569}
47570///Builder for [`WriteIndirectExecutionSetPipelineEXT`] with lifetime-tied pNext safety.
47571pub struct WriteIndirectExecutionSetPipelineEXTBuilder<'a> {
47572    inner: WriteIndirectExecutionSetPipelineEXT,
47573    _marker: core::marker::PhantomData<&'a ()>,
47574}
47575impl WriteIndirectExecutionSetPipelineEXT {
47576    /// Start building this struct; `s_type` is already set to the correct variant.
47577    #[inline]
47578    pub fn builder<'a>() -> WriteIndirectExecutionSetPipelineEXTBuilder<'a> {
47579        WriteIndirectExecutionSetPipelineEXTBuilder {
47580            inner: WriteIndirectExecutionSetPipelineEXT {
47581                s_type: StructureType::from_raw(1000572008i32),
47582                ..Default::default()
47583            },
47584            _marker: core::marker::PhantomData,
47585        }
47586    }
47587}
47588impl<'a> WriteIndirectExecutionSetPipelineEXTBuilder<'a> {
47589    #[inline]
47590    pub fn index(mut self, value: u32) -> Self {
47591        self.inner.index = value;
47592        self
47593    }
47594    #[inline]
47595    pub fn pipeline(mut self, value: Pipeline) -> Self {
47596        self.inner.pipeline = value;
47597        self
47598    }
47599    ///Prepend a struct to the pNext chain. See [`WriteIndirectExecutionSetPipelineEXT`]'s **Extended By** section for valid types.
47600    #[inline]
47601    pub fn push_next<T: ExtendsWriteIndirectExecutionSetPipelineEXT>(
47602        mut self,
47603        next: &'a mut T,
47604    ) -> Self {
47605        unsafe {
47606            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
47607            (*next_ptr).p_next = self.inner.p_next as *mut _;
47608            self.inner.p_next = <*mut BaseOutStructure>::cast::<
47609                core::ffi::c_void,
47610            >(next_ptr) as *const _;
47611        }
47612        self
47613    }
47614}
47615impl<'a> core::ops::Deref for WriteIndirectExecutionSetPipelineEXTBuilder<'a> {
47616    type Target = WriteIndirectExecutionSetPipelineEXT;
47617    #[inline]
47618    fn deref(&self) -> &Self::Target {
47619        &self.inner
47620    }
47621}
47622impl<'a> core::ops::DerefMut for WriteIndirectExecutionSetPipelineEXTBuilder<'a> {
47623    #[inline]
47624    fn deref_mut(&mut self) -> &mut Self::Target {
47625        &mut self.inner
47626    }
47627}
47628///Builder for [`WriteIndirectExecutionSetShaderEXT`] with lifetime-tied pNext safety.
47629pub struct WriteIndirectExecutionSetShaderEXTBuilder<'a> {
47630    inner: WriteIndirectExecutionSetShaderEXT,
47631    _marker: core::marker::PhantomData<&'a ()>,
47632}
47633impl WriteIndirectExecutionSetShaderEXT {
47634    /// Start building this struct; `s_type` is already set to the correct variant.
47635    #[inline]
47636    pub fn builder<'a>() -> WriteIndirectExecutionSetShaderEXTBuilder<'a> {
47637        WriteIndirectExecutionSetShaderEXTBuilder {
47638            inner: WriteIndirectExecutionSetShaderEXT {
47639                s_type: StructureType::from_raw(1000572009i32),
47640                ..Default::default()
47641            },
47642            _marker: core::marker::PhantomData,
47643        }
47644    }
47645}
47646impl<'a> WriteIndirectExecutionSetShaderEXTBuilder<'a> {
47647    #[inline]
47648    pub fn index(mut self, value: u32) -> Self {
47649        self.inner.index = value;
47650        self
47651    }
47652    #[inline]
47653    pub fn shader(mut self, value: ShaderEXT) -> Self {
47654        self.inner.shader = value;
47655        self
47656    }
47657    ///Prepend a struct to the pNext chain. See [`WriteIndirectExecutionSetShaderEXT`]'s **Extended By** section for valid types.
47658    #[inline]
47659    pub fn push_next<T: ExtendsWriteIndirectExecutionSetShaderEXT>(
47660        mut self,
47661        next: &'a mut T,
47662    ) -> Self {
47663        unsafe {
47664            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
47665            (*next_ptr).p_next = self.inner.p_next as *mut _;
47666            self.inner.p_next = <*mut BaseOutStructure>::cast::<
47667                core::ffi::c_void,
47668            >(next_ptr) as *const _;
47669        }
47670        self
47671    }
47672}
47673impl<'a> core::ops::Deref for WriteIndirectExecutionSetShaderEXTBuilder<'a> {
47674    type Target = WriteIndirectExecutionSetShaderEXT;
47675    #[inline]
47676    fn deref(&self) -> &Self::Target {
47677        &self.inner
47678    }
47679}
47680impl<'a> core::ops::DerefMut for WriteIndirectExecutionSetShaderEXTBuilder<'a> {
47681    #[inline]
47682    fn deref_mut(&mut self) -> &mut Self::Target {
47683        &mut self.inner
47684    }
47685}
47686///Builder for [`IndirectCommandsLayoutCreateInfoEXT`] with lifetime-tied pNext safety.
47687pub struct IndirectCommandsLayoutCreateInfoEXTBuilder<'a> {
47688    inner: IndirectCommandsLayoutCreateInfoEXT,
47689    _marker: core::marker::PhantomData<&'a ()>,
47690}
47691impl IndirectCommandsLayoutCreateInfoEXT {
47692    /// Start building this struct; `s_type` is already set to the correct variant.
47693    #[inline]
47694    pub fn builder<'a>() -> IndirectCommandsLayoutCreateInfoEXTBuilder<'a> {
47695        IndirectCommandsLayoutCreateInfoEXTBuilder {
47696            inner: IndirectCommandsLayoutCreateInfoEXT {
47697                s_type: StructureType::from_raw(1000572006i32),
47698                ..Default::default()
47699            },
47700            _marker: core::marker::PhantomData,
47701        }
47702    }
47703}
47704impl<'a> IndirectCommandsLayoutCreateInfoEXTBuilder<'a> {
47705    #[inline]
47706    pub fn flags(mut self, value: IndirectCommandsLayoutUsageFlagsEXT) -> Self {
47707        self.inner.flags = value;
47708        self
47709    }
47710    #[inline]
47711    pub fn shader_stages(mut self, value: ShaderStageFlags) -> Self {
47712        self.inner.shader_stages = value;
47713        self
47714    }
47715    #[inline]
47716    pub fn indirect_stride(mut self, value: u32) -> Self {
47717        self.inner.indirect_stride = value;
47718        self
47719    }
47720    #[inline]
47721    pub fn pipeline_layout(mut self, value: PipelineLayout) -> Self {
47722        self.inner.pipeline_layout = value;
47723        self
47724    }
47725    #[inline]
47726    pub fn tokens(mut self, slice: &'a [IndirectCommandsLayoutTokenEXT]) -> Self {
47727        self.inner.token_count = slice.len() as u32;
47728        self.inner.p_tokens = slice.as_ptr();
47729        self
47730    }
47731    ///Prepend a struct to the pNext chain. See [`IndirectCommandsLayoutCreateInfoEXT`]'s **Extended By** section for valid types.
47732    #[inline]
47733    pub fn push_next<T: ExtendsIndirectCommandsLayoutCreateInfoEXT>(
47734        mut self,
47735        next: &'a mut T,
47736    ) -> Self {
47737        unsafe {
47738            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
47739            (*next_ptr).p_next = self.inner.p_next as *mut _;
47740            self.inner.p_next = <*mut BaseOutStructure>::cast::<
47741                core::ffi::c_void,
47742            >(next_ptr) as *const _;
47743        }
47744        self
47745    }
47746}
47747impl<'a> core::ops::Deref for IndirectCommandsLayoutCreateInfoEXTBuilder<'a> {
47748    type Target = IndirectCommandsLayoutCreateInfoEXT;
47749    #[inline]
47750    fn deref(&self) -> &Self::Target {
47751        &self.inner
47752    }
47753}
47754impl<'a> core::ops::DerefMut for IndirectCommandsLayoutCreateInfoEXTBuilder<'a> {
47755    #[inline]
47756    fn deref_mut(&mut self) -> &mut Self::Target {
47757        &mut self.inner
47758    }
47759}
47760///Builder for [`IndirectCommandsLayoutTokenEXT`] with lifetime-tied pNext safety.
47761pub struct IndirectCommandsLayoutTokenEXTBuilder<'a> {
47762    inner: IndirectCommandsLayoutTokenEXT,
47763    _marker: core::marker::PhantomData<&'a ()>,
47764}
47765impl IndirectCommandsLayoutTokenEXT {
47766    /// Start building this struct; `s_type` is already set to the correct variant.
47767    #[inline]
47768    pub fn builder<'a>() -> IndirectCommandsLayoutTokenEXTBuilder<'a> {
47769        IndirectCommandsLayoutTokenEXTBuilder {
47770            inner: IndirectCommandsLayoutTokenEXT {
47771                s_type: StructureType::from_raw(1000572007i32),
47772                ..Default::default()
47773            },
47774            _marker: core::marker::PhantomData,
47775        }
47776    }
47777}
47778impl<'a> IndirectCommandsLayoutTokenEXTBuilder<'a> {
47779    #[inline]
47780    pub fn r#type(mut self, value: IndirectCommandsTokenTypeEXT) -> Self {
47781        self.inner.r#type = value;
47782        self
47783    }
47784    #[inline]
47785    pub fn data(mut self, value: IndirectCommandsTokenDataEXT) -> Self {
47786        self.inner.data = value;
47787        self
47788    }
47789    #[inline]
47790    pub fn offset(mut self, value: u32) -> Self {
47791        self.inner.offset = value;
47792        self
47793    }
47794    ///Prepend a struct to the pNext chain. See [`IndirectCommandsLayoutTokenEXT`]'s **Extended By** section for valid types.
47795    #[inline]
47796    pub fn push_next<T: ExtendsIndirectCommandsLayoutTokenEXT>(
47797        mut self,
47798        next: &'a mut T,
47799    ) -> Self {
47800        unsafe {
47801            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
47802            (*next_ptr).p_next = self.inner.p_next as *mut _;
47803            self.inner.p_next = <*mut BaseOutStructure>::cast::<
47804                core::ffi::c_void,
47805            >(next_ptr) as *const _;
47806        }
47807        self
47808    }
47809}
47810impl<'a> core::ops::Deref for IndirectCommandsLayoutTokenEXTBuilder<'a> {
47811    type Target = IndirectCommandsLayoutTokenEXT;
47812    #[inline]
47813    fn deref(&self) -> &Self::Target {
47814        &self.inner
47815    }
47816}
47817impl<'a> core::ops::DerefMut for IndirectCommandsLayoutTokenEXTBuilder<'a> {
47818    #[inline]
47819    fn deref_mut(&mut self) -> &mut Self::Target {
47820        &mut self.inner
47821    }
47822}
47823///Builder for [`DrawIndirectCountIndirectCommandEXT`].
47824pub struct DrawIndirectCountIndirectCommandEXTBuilder {
47825    inner: DrawIndirectCountIndirectCommandEXT,
47826}
47827impl DrawIndirectCountIndirectCommandEXT {
47828    /// Start building this struct.
47829    #[inline]
47830    pub fn builder() -> DrawIndirectCountIndirectCommandEXTBuilder {
47831        DrawIndirectCountIndirectCommandEXTBuilder {
47832            inner: DrawIndirectCountIndirectCommandEXT {
47833                ..Default::default()
47834            },
47835        }
47836    }
47837}
47838impl DrawIndirectCountIndirectCommandEXTBuilder {
47839    #[inline]
47840    pub fn buffer_address(mut self, value: u64) -> Self {
47841        self.inner.buffer_address = value;
47842        self
47843    }
47844    #[inline]
47845    pub fn stride(mut self, value: u32) -> Self {
47846        self.inner.stride = value;
47847        self
47848    }
47849    #[inline]
47850    pub fn command_count(mut self, value: u32) -> Self {
47851        self.inner.command_count = value;
47852        self
47853    }
47854}
47855impl core::ops::Deref for DrawIndirectCountIndirectCommandEXTBuilder {
47856    type Target = DrawIndirectCountIndirectCommandEXT;
47857    #[inline]
47858    fn deref(&self) -> &Self::Target {
47859        &self.inner
47860    }
47861}
47862impl core::ops::DerefMut for DrawIndirectCountIndirectCommandEXTBuilder {
47863    #[inline]
47864    fn deref_mut(&mut self) -> &mut Self::Target {
47865        &mut self.inner
47866    }
47867}
47868///Builder for [`IndirectCommandsVertexBufferTokenEXT`].
47869pub struct IndirectCommandsVertexBufferTokenEXTBuilder {
47870    inner: IndirectCommandsVertexBufferTokenEXT,
47871}
47872impl IndirectCommandsVertexBufferTokenEXT {
47873    /// Start building this struct.
47874    #[inline]
47875    pub fn builder() -> IndirectCommandsVertexBufferTokenEXTBuilder {
47876        IndirectCommandsVertexBufferTokenEXTBuilder {
47877            inner: IndirectCommandsVertexBufferTokenEXT {
47878                ..Default::default()
47879            },
47880        }
47881    }
47882}
47883impl IndirectCommandsVertexBufferTokenEXTBuilder {
47884    #[inline]
47885    pub fn vertex_binding_unit(mut self, value: u32) -> Self {
47886        self.inner.vertex_binding_unit = value;
47887        self
47888    }
47889}
47890impl core::ops::Deref for IndirectCommandsVertexBufferTokenEXTBuilder {
47891    type Target = IndirectCommandsVertexBufferTokenEXT;
47892    #[inline]
47893    fn deref(&self) -> &Self::Target {
47894        &self.inner
47895    }
47896}
47897impl core::ops::DerefMut for IndirectCommandsVertexBufferTokenEXTBuilder {
47898    #[inline]
47899    fn deref_mut(&mut self) -> &mut Self::Target {
47900        &mut self.inner
47901    }
47902}
47903///Builder for [`BindVertexBufferIndirectCommandEXT`].
47904pub struct BindVertexBufferIndirectCommandEXTBuilder {
47905    inner: BindVertexBufferIndirectCommandEXT,
47906}
47907impl BindVertexBufferIndirectCommandEXT {
47908    /// Start building this struct.
47909    #[inline]
47910    pub fn builder() -> BindVertexBufferIndirectCommandEXTBuilder {
47911        BindVertexBufferIndirectCommandEXTBuilder {
47912            inner: BindVertexBufferIndirectCommandEXT {
47913                ..Default::default()
47914            },
47915        }
47916    }
47917}
47918impl BindVertexBufferIndirectCommandEXTBuilder {
47919    #[inline]
47920    pub fn buffer_address(mut self, value: u64) -> Self {
47921        self.inner.buffer_address = value;
47922        self
47923    }
47924    #[inline]
47925    pub fn size(mut self, value: u32) -> Self {
47926        self.inner.size = value;
47927        self
47928    }
47929    #[inline]
47930    pub fn stride(mut self, value: u32) -> Self {
47931        self.inner.stride = value;
47932        self
47933    }
47934}
47935impl core::ops::Deref for BindVertexBufferIndirectCommandEXTBuilder {
47936    type Target = BindVertexBufferIndirectCommandEXT;
47937    #[inline]
47938    fn deref(&self) -> &Self::Target {
47939        &self.inner
47940    }
47941}
47942impl core::ops::DerefMut for BindVertexBufferIndirectCommandEXTBuilder {
47943    #[inline]
47944    fn deref_mut(&mut self) -> &mut Self::Target {
47945        &mut self.inner
47946    }
47947}
47948///Builder for [`IndirectCommandsIndexBufferTokenEXT`].
47949pub struct IndirectCommandsIndexBufferTokenEXTBuilder {
47950    inner: IndirectCommandsIndexBufferTokenEXT,
47951}
47952impl IndirectCommandsIndexBufferTokenEXT {
47953    /// Start building this struct.
47954    #[inline]
47955    pub fn builder() -> IndirectCommandsIndexBufferTokenEXTBuilder {
47956        IndirectCommandsIndexBufferTokenEXTBuilder {
47957            inner: IndirectCommandsIndexBufferTokenEXT {
47958                ..Default::default()
47959            },
47960        }
47961    }
47962}
47963impl IndirectCommandsIndexBufferTokenEXTBuilder {
47964    #[inline]
47965    pub fn mode(mut self, value: IndirectCommandsInputModeFlagBitsEXT) -> Self {
47966        self.inner.mode = value;
47967        self
47968    }
47969}
47970impl core::ops::Deref for IndirectCommandsIndexBufferTokenEXTBuilder {
47971    type Target = IndirectCommandsIndexBufferTokenEXT;
47972    #[inline]
47973    fn deref(&self) -> &Self::Target {
47974        &self.inner
47975    }
47976}
47977impl core::ops::DerefMut for IndirectCommandsIndexBufferTokenEXTBuilder {
47978    #[inline]
47979    fn deref_mut(&mut self) -> &mut Self::Target {
47980        &mut self.inner
47981    }
47982}
47983///Builder for [`BindIndexBufferIndirectCommandEXT`].
47984pub struct BindIndexBufferIndirectCommandEXTBuilder {
47985    inner: BindIndexBufferIndirectCommandEXT,
47986}
47987impl BindIndexBufferIndirectCommandEXT {
47988    /// Start building this struct.
47989    #[inline]
47990    pub fn builder() -> BindIndexBufferIndirectCommandEXTBuilder {
47991        BindIndexBufferIndirectCommandEXTBuilder {
47992            inner: BindIndexBufferIndirectCommandEXT {
47993                ..Default::default()
47994            },
47995        }
47996    }
47997}
47998impl BindIndexBufferIndirectCommandEXTBuilder {
47999    #[inline]
48000    pub fn buffer_address(mut self, value: u64) -> Self {
48001        self.inner.buffer_address = value;
48002        self
48003    }
48004    #[inline]
48005    pub fn size(mut self, value: u32) -> Self {
48006        self.inner.size = value;
48007        self
48008    }
48009    #[inline]
48010    pub fn index_type(mut self, value: IndexType) -> Self {
48011        self.inner.index_type = value;
48012        self
48013    }
48014}
48015impl core::ops::Deref for BindIndexBufferIndirectCommandEXTBuilder {
48016    type Target = BindIndexBufferIndirectCommandEXT;
48017    #[inline]
48018    fn deref(&self) -> &Self::Target {
48019        &self.inner
48020    }
48021}
48022impl core::ops::DerefMut for BindIndexBufferIndirectCommandEXTBuilder {
48023    #[inline]
48024    fn deref_mut(&mut self) -> &mut Self::Target {
48025        &mut self.inner
48026    }
48027}
48028///Builder for [`IndirectCommandsPushConstantTokenEXT`].
48029pub struct IndirectCommandsPushConstantTokenEXTBuilder {
48030    inner: IndirectCommandsPushConstantTokenEXT,
48031}
48032impl IndirectCommandsPushConstantTokenEXT {
48033    /// Start building this struct.
48034    #[inline]
48035    pub fn builder() -> IndirectCommandsPushConstantTokenEXTBuilder {
48036        IndirectCommandsPushConstantTokenEXTBuilder {
48037            inner: IndirectCommandsPushConstantTokenEXT {
48038                ..Default::default()
48039            },
48040        }
48041    }
48042}
48043impl IndirectCommandsPushConstantTokenEXTBuilder {
48044    #[inline]
48045    pub fn update_range(mut self, value: PushConstantRange) -> Self {
48046        self.inner.update_range = value;
48047        self
48048    }
48049}
48050impl core::ops::Deref for IndirectCommandsPushConstantTokenEXTBuilder {
48051    type Target = IndirectCommandsPushConstantTokenEXT;
48052    #[inline]
48053    fn deref(&self) -> &Self::Target {
48054        &self.inner
48055    }
48056}
48057impl core::ops::DerefMut for IndirectCommandsPushConstantTokenEXTBuilder {
48058    #[inline]
48059    fn deref_mut(&mut self) -> &mut Self::Target {
48060        &mut self.inner
48061    }
48062}
48063///Builder for [`IndirectCommandsExecutionSetTokenEXT`].
48064pub struct IndirectCommandsExecutionSetTokenEXTBuilder {
48065    inner: IndirectCommandsExecutionSetTokenEXT,
48066}
48067impl IndirectCommandsExecutionSetTokenEXT {
48068    /// Start building this struct.
48069    #[inline]
48070    pub fn builder() -> IndirectCommandsExecutionSetTokenEXTBuilder {
48071        IndirectCommandsExecutionSetTokenEXTBuilder {
48072            inner: IndirectCommandsExecutionSetTokenEXT {
48073                ..Default::default()
48074            },
48075        }
48076    }
48077}
48078impl IndirectCommandsExecutionSetTokenEXTBuilder {
48079    #[inline]
48080    pub fn r#type(mut self, value: IndirectExecutionSetInfoTypeEXT) -> Self {
48081        self.inner.r#type = value;
48082        self
48083    }
48084    #[inline]
48085    pub fn shader_stages(mut self, value: ShaderStageFlags) -> Self {
48086        self.inner.shader_stages = value;
48087        self
48088    }
48089}
48090impl core::ops::Deref for IndirectCommandsExecutionSetTokenEXTBuilder {
48091    type Target = IndirectCommandsExecutionSetTokenEXT;
48092    #[inline]
48093    fn deref(&self) -> &Self::Target {
48094        &self.inner
48095    }
48096}
48097impl core::ops::DerefMut for IndirectCommandsExecutionSetTokenEXTBuilder {
48098    #[inline]
48099    fn deref_mut(&mut self) -> &mut Self::Target {
48100        &mut self.inner
48101    }
48102}
48103///Builder for [`PipelineViewportDepthClipControlCreateInfoEXT`] with lifetime-tied pNext safety.
48104pub struct PipelineViewportDepthClipControlCreateInfoEXTBuilder<'a> {
48105    inner: PipelineViewportDepthClipControlCreateInfoEXT,
48106    _marker: core::marker::PhantomData<&'a ()>,
48107}
48108impl PipelineViewportDepthClipControlCreateInfoEXT {
48109    /// Start building this struct; `s_type` is already set to the correct variant.
48110    #[inline]
48111    pub fn builder<'a>() -> PipelineViewportDepthClipControlCreateInfoEXTBuilder<'a> {
48112        PipelineViewportDepthClipControlCreateInfoEXTBuilder {
48113            inner: PipelineViewportDepthClipControlCreateInfoEXT {
48114                s_type: StructureType::from_raw(1000355001i32),
48115                ..Default::default()
48116            },
48117            _marker: core::marker::PhantomData,
48118        }
48119    }
48120}
48121impl<'a> PipelineViewportDepthClipControlCreateInfoEXTBuilder<'a> {
48122    #[inline]
48123    pub fn negative_one_to_one(mut self, value: bool) -> Self {
48124        self.inner.negative_one_to_one = value as u32;
48125        self
48126    }
48127    ///Prepend a struct to the pNext chain. See [`PipelineViewportDepthClipControlCreateInfoEXT`]'s **Extended By** section for valid types.
48128    #[inline]
48129    pub fn push_next<T: ExtendsPipelineViewportDepthClipControlCreateInfoEXT>(
48130        mut self,
48131        next: &'a mut T,
48132    ) -> Self {
48133        unsafe {
48134            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
48135            (*next_ptr).p_next = self.inner.p_next as *mut _;
48136            self.inner.p_next = <*mut BaseOutStructure>::cast::<
48137                core::ffi::c_void,
48138            >(next_ptr) as *const _;
48139        }
48140        self
48141    }
48142}
48143impl<'a> core::ops::Deref for PipelineViewportDepthClipControlCreateInfoEXTBuilder<'a> {
48144    type Target = PipelineViewportDepthClipControlCreateInfoEXT;
48145    #[inline]
48146    fn deref(&self) -> &Self::Target {
48147        &self.inner
48148    }
48149}
48150impl<'a> core::ops::DerefMut
48151for PipelineViewportDepthClipControlCreateInfoEXTBuilder<'a> {
48152    #[inline]
48153    fn deref_mut(&mut self) -> &mut Self::Target {
48154        &mut self.inner
48155    }
48156}
48157///Builder for [`PhysicalDeviceDepthClampControlFeaturesEXT`] with lifetime-tied pNext safety.
48158pub struct PhysicalDeviceDepthClampControlFeaturesEXTBuilder<'a> {
48159    inner: PhysicalDeviceDepthClampControlFeaturesEXT,
48160    _marker: core::marker::PhantomData<&'a ()>,
48161}
48162impl PhysicalDeviceDepthClampControlFeaturesEXT {
48163    /// Start building this struct; `s_type` is already set to the correct variant.
48164    #[inline]
48165    pub fn builder<'a>() -> PhysicalDeviceDepthClampControlFeaturesEXTBuilder<'a> {
48166        PhysicalDeviceDepthClampControlFeaturesEXTBuilder {
48167            inner: PhysicalDeviceDepthClampControlFeaturesEXT {
48168                s_type: StructureType::from_raw(1000582000i32),
48169                ..Default::default()
48170            },
48171            _marker: core::marker::PhantomData,
48172        }
48173    }
48174}
48175impl<'a> PhysicalDeviceDepthClampControlFeaturesEXTBuilder<'a> {
48176    #[inline]
48177    pub fn depth_clamp_control(mut self, value: bool) -> Self {
48178        self.inner.depth_clamp_control = value as u32;
48179        self
48180    }
48181    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDepthClampControlFeaturesEXT`]'s **Extended By** section for valid types.
48182    #[inline]
48183    pub fn push_next<T: ExtendsPhysicalDeviceDepthClampControlFeaturesEXT>(
48184        mut self,
48185        next: &'a mut T,
48186    ) -> Self {
48187        unsafe {
48188            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
48189            (*next_ptr).p_next = self.inner.p_next as *mut _;
48190            self.inner.p_next = <*mut BaseOutStructure>::cast::<
48191                core::ffi::c_void,
48192            >(next_ptr);
48193        }
48194        self
48195    }
48196}
48197impl<'a> core::ops::Deref for PhysicalDeviceDepthClampControlFeaturesEXTBuilder<'a> {
48198    type Target = PhysicalDeviceDepthClampControlFeaturesEXT;
48199    #[inline]
48200    fn deref(&self) -> &Self::Target {
48201        &self.inner
48202    }
48203}
48204impl<'a> core::ops::DerefMut for PhysicalDeviceDepthClampControlFeaturesEXTBuilder<'a> {
48205    #[inline]
48206    fn deref_mut(&mut self) -> &mut Self::Target {
48207        &mut self.inner
48208    }
48209}
48210///Builder for [`PipelineViewportDepthClampControlCreateInfoEXT`] with lifetime-tied pNext safety.
48211pub struct PipelineViewportDepthClampControlCreateInfoEXTBuilder<'a> {
48212    inner: PipelineViewportDepthClampControlCreateInfoEXT,
48213    _marker: core::marker::PhantomData<&'a ()>,
48214}
48215impl PipelineViewportDepthClampControlCreateInfoEXT {
48216    /// Start building this struct; `s_type` is already set to the correct variant.
48217    #[inline]
48218    pub fn builder<'a>() -> PipelineViewportDepthClampControlCreateInfoEXTBuilder<'a> {
48219        PipelineViewportDepthClampControlCreateInfoEXTBuilder {
48220            inner: PipelineViewportDepthClampControlCreateInfoEXT {
48221                s_type: StructureType::from_raw(1000582001i32),
48222                ..Default::default()
48223            },
48224            _marker: core::marker::PhantomData,
48225        }
48226    }
48227}
48228impl<'a> PipelineViewportDepthClampControlCreateInfoEXTBuilder<'a> {
48229    #[inline]
48230    pub fn depth_clamp_mode(mut self, value: DepthClampModeEXT) -> Self {
48231        self.inner.depth_clamp_mode = value;
48232        self
48233    }
48234    #[inline]
48235    pub fn depth_clamp_range(mut self, value: &'a DepthClampRangeEXT) -> Self {
48236        self.inner.p_depth_clamp_range = value;
48237        self
48238    }
48239    ///Prepend a struct to the pNext chain. See [`PipelineViewportDepthClampControlCreateInfoEXT`]'s **Extended By** section for valid types.
48240    #[inline]
48241    pub fn push_next<T: ExtendsPipelineViewportDepthClampControlCreateInfoEXT>(
48242        mut self,
48243        next: &'a mut T,
48244    ) -> Self {
48245        unsafe {
48246            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
48247            (*next_ptr).p_next = self.inner.p_next as *mut _;
48248            self.inner.p_next = <*mut BaseOutStructure>::cast::<
48249                core::ffi::c_void,
48250            >(next_ptr) as *const _;
48251        }
48252        self
48253    }
48254}
48255impl<'a> core::ops::Deref for PipelineViewportDepthClampControlCreateInfoEXTBuilder<'a> {
48256    type Target = PipelineViewportDepthClampControlCreateInfoEXT;
48257    #[inline]
48258    fn deref(&self) -> &Self::Target {
48259        &self.inner
48260    }
48261}
48262impl<'a> core::ops::DerefMut
48263for PipelineViewportDepthClampControlCreateInfoEXTBuilder<'a> {
48264    #[inline]
48265    fn deref_mut(&mut self) -> &mut Self::Target {
48266        &mut self.inner
48267    }
48268}
48269///Builder for [`PhysicalDeviceVertexInputDynamicStateFeaturesEXT`] with lifetime-tied pNext safety.
48270pub struct PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder<'a> {
48271    inner: PhysicalDeviceVertexInputDynamicStateFeaturesEXT,
48272    _marker: core::marker::PhantomData<&'a ()>,
48273}
48274impl PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
48275    /// Start building this struct; `s_type` is already set to the correct variant.
48276    #[inline]
48277    pub fn builder<'a>() -> PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder<'a> {
48278        PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder {
48279            inner: PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
48280                s_type: StructureType::from_raw(1000352000i32),
48281                ..Default::default()
48282            },
48283            _marker: core::marker::PhantomData,
48284        }
48285    }
48286}
48287impl<'a> PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder<'a> {
48288    #[inline]
48289    pub fn vertex_input_dynamic_state(mut self, value: bool) -> Self {
48290        self.inner.vertex_input_dynamic_state = value as u32;
48291        self
48292    }
48293    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceVertexInputDynamicStateFeaturesEXT`]'s **Extended By** section for valid types.
48294    #[inline]
48295    pub fn push_next<T: ExtendsPhysicalDeviceVertexInputDynamicStateFeaturesEXT>(
48296        mut self,
48297        next: &'a mut T,
48298    ) -> Self {
48299        unsafe {
48300            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
48301            (*next_ptr).p_next = self.inner.p_next as *mut _;
48302            self.inner.p_next = <*mut BaseOutStructure>::cast::<
48303                core::ffi::c_void,
48304            >(next_ptr);
48305        }
48306        self
48307    }
48308}
48309impl<'a> core::ops::Deref
48310for PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder<'a> {
48311    type Target = PhysicalDeviceVertexInputDynamicStateFeaturesEXT;
48312    #[inline]
48313    fn deref(&self) -> &Self::Target {
48314        &self.inner
48315    }
48316}
48317impl<'a> core::ops::DerefMut
48318for PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder<'a> {
48319    #[inline]
48320    fn deref_mut(&mut self) -> &mut Self::Target {
48321        &mut self.inner
48322    }
48323}
48324///Builder for [`PhysicalDeviceExternalMemoryRDMAFeaturesNV`] with lifetime-tied pNext safety.
48325pub struct PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder<'a> {
48326    inner: PhysicalDeviceExternalMemoryRDMAFeaturesNV,
48327    _marker: core::marker::PhantomData<&'a ()>,
48328}
48329impl PhysicalDeviceExternalMemoryRDMAFeaturesNV {
48330    /// Start building this struct; `s_type` is already set to the correct variant.
48331    #[inline]
48332    pub fn builder<'a>() -> PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder<'a> {
48333        PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder {
48334            inner: PhysicalDeviceExternalMemoryRDMAFeaturesNV {
48335                s_type: StructureType::from_raw(1000371001i32),
48336                ..Default::default()
48337            },
48338            _marker: core::marker::PhantomData,
48339        }
48340    }
48341}
48342impl<'a> PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder<'a> {
48343    #[inline]
48344    pub fn external_memory_rdma(mut self, value: bool) -> Self {
48345        self.inner.external_memory_rdma = value as u32;
48346        self
48347    }
48348    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceExternalMemoryRDMAFeaturesNV`]'s **Extended By** section for valid types.
48349    #[inline]
48350    pub fn push_next<T: ExtendsPhysicalDeviceExternalMemoryRDMAFeaturesNV>(
48351        mut self,
48352        next: &'a mut T,
48353    ) -> Self {
48354        unsafe {
48355            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
48356            (*next_ptr).p_next = self.inner.p_next as *mut _;
48357            self.inner.p_next = <*mut BaseOutStructure>::cast::<
48358                core::ffi::c_void,
48359            >(next_ptr);
48360        }
48361        self
48362    }
48363}
48364impl<'a> core::ops::Deref for PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder<'a> {
48365    type Target = PhysicalDeviceExternalMemoryRDMAFeaturesNV;
48366    #[inline]
48367    fn deref(&self) -> &Self::Target {
48368        &self.inner
48369    }
48370}
48371impl<'a> core::ops::DerefMut for PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder<'a> {
48372    #[inline]
48373    fn deref_mut(&mut self) -> &mut Self::Target {
48374        &mut self.inner
48375    }
48376}
48377///Builder for [`PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR`] with lifetime-tied pNext safety.
48378pub struct PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHRBuilder<'a> {
48379    inner: PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR,
48380    _marker: core::marker::PhantomData<&'a ()>,
48381}
48382impl PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {
48383    /// Start building this struct; `s_type` is already set to the correct variant.
48384    #[inline]
48385    pub fn builder<'a>() -> PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHRBuilder<
48386        'a,
48387    > {
48388        PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHRBuilder {
48389            inner: PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {
48390                s_type: StructureType::from_raw(1000558000i32),
48391                ..Default::default()
48392            },
48393            _marker: core::marker::PhantomData,
48394        }
48395    }
48396}
48397impl<'a> PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHRBuilder<'a> {
48398    #[inline]
48399    pub fn shader_relaxed_extended_instruction(mut self, value: bool) -> Self {
48400        self.inner.shader_relaxed_extended_instruction = value as u32;
48401        self
48402    }
48403    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR`]'s **Extended By** section for valid types.
48404    #[inline]
48405    pub fn push_next<
48406        T: ExtendsPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR,
48407    >(mut self, next: &'a mut T) -> Self {
48408        unsafe {
48409            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
48410            (*next_ptr).p_next = self.inner.p_next as *mut _;
48411            self.inner.p_next = <*mut BaseOutStructure>::cast::<
48412                core::ffi::c_void,
48413            >(next_ptr);
48414        }
48415        self
48416    }
48417}
48418impl<'a> core::ops::Deref
48419for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHRBuilder<'a> {
48420    type Target = PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR;
48421    #[inline]
48422    fn deref(&self) -> &Self::Target {
48423        &self.inner
48424    }
48425}
48426impl<'a> core::ops::DerefMut
48427for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHRBuilder<'a> {
48428    #[inline]
48429    fn deref_mut(&mut self) -> &mut Self::Target {
48430        &mut self.inner
48431    }
48432}
48433///Builder for [`VertexInputBindingDescription2EXT`] with lifetime-tied pNext safety.
48434pub struct VertexInputBindingDescription2EXTBuilder<'a> {
48435    inner: VertexInputBindingDescription2EXT,
48436    _marker: core::marker::PhantomData<&'a ()>,
48437}
48438impl VertexInputBindingDescription2EXT {
48439    /// Start building this struct; `s_type` is already set to the correct variant.
48440    #[inline]
48441    pub fn builder<'a>() -> VertexInputBindingDescription2EXTBuilder<'a> {
48442        VertexInputBindingDescription2EXTBuilder {
48443            inner: VertexInputBindingDescription2EXT {
48444                s_type: StructureType::from_raw(1000352001i32),
48445                ..Default::default()
48446            },
48447            _marker: core::marker::PhantomData,
48448        }
48449    }
48450}
48451impl<'a> VertexInputBindingDescription2EXTBuilder<'a> {
48452    #[inline]
48453    pub fn binding(mut self, value: u32) -> Self {
48454        self.inner.binding = value;
48455        self
48456    }
48457    #[inline]
48458    pub fn stride(mut self, value: u32) -> Self {
48459        self.inner.stride = value;
48460        self
48461    }
48462    #[inline]
48463    pub fn input_rate(mut self, value: VertexInputRate) -> Self {
48464        self.inner.input_rate = value;
48465        self
48466    }
48467    #[inline]
48468    pub fn divisor(mut self, value: u32) -> Self {
48469        self.inner.divisor = value;
48470        self
48471    }
48472    ///Prepend a struct to the pNext chain. See [`VertexInputBindingDescription2EXT`]'s **Extended By** section for valid types.
48473    #[inline]
48474    pub fn push_next<T: ExtendsVertexInputBindingDescription2EXT>(
48475        mut self,
48476        next: &'a mut T,
48477    ) -> Self {
48478        unsafe {
48479            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
48480            (*next_ptr).p_next = self.inner.p_next as *mut _;
48481            self.inner.p_next = <*mut BaseOutStructure>::cast::<
48482                core::ffi::c_void,
48483            >(next_ptr);
48484        }
48485        self
48486    }
48487}
48488impl<'a> core::ops::Deref for VertexInputBindingDescription2EXTBuilder<'a> {
48489    type Target = VertexInputBindingDescription2EXT;
48490    #[inline]
48491    fn deref(&self) -> &Self::Target {
48492        &self.inner
48493    }
48494}
48495impl<'a> core::ops::DerefMut for VertexInputBindingDescription2EXTBuilder<'a> {
48496    #[inline]
48497    fn deref_mut(&mut self) -> &mut Self::Target {
48498        &mut self.inner
48499    }
48500}
48501///Builder for [`VertexInputAttributeDescription2EXT`] with lifetime-tied pNext safety.
48502pub struct VertexInputAttributeDescription2EXTBuilder<'a> {
48503    inner: VertexInputAttributeDescription2EXT,
48504    _marker: core::marker::PhantomData<&'a ()>,
48505}
48506impl VertexInputAttributeDescription2EXT {
48507    /// Start building this struct; `s_type` is already set to the correct variant.
48508    #[inline]
48509    pub fn builder<'a>() -> VertexInputAttributeDescription2EXTBuilder<'a> {
48510        VertexInputAttributeDescription2EXTBuilder {
48511            inner: VertexInputAttributeDescription2EXT {
48512                s_type: StructureType::from_raw(1000352002i32),
48513                ..Default::default()
48514            },
48515            _marker: core::marker::PhantomData,
48516        }
48517    }
48518}
48519impl<'a> VertexInputAttributeDescription2EXTBuilder<'a> {
48520    #[inline]
48521    pub fn location(mut self, value: u32) -> Self {
48522        self.inner.location = value;
48523        self
48524    }
48525    #[inline]
48526    pub fn binding(mut self, value: u32) -> Self {
48527        self.inner.binding = value;
48528        self
48529    }
48530    #[inline]
48531    pub fn format(mut self, value: Format) -> Self {
48532        self.inner.format = value;
48533        self
48534    }
48535    #[inline]
48536    pub fn offset(mut self, value: u32) -> Self {
48537        self.inner.offset = value;
48538        self
48539    }
48540    ///Prepend a struct to the pNext chain. See [`VertexInputAttributeDescription2EXT`]'s **Extended By** section for valid types.
48541    #[inline]
48542    pub fn push_next<T: ExtendsVertexInputAttributeDescription2EXT>(
48543        mut self,
48544        next: &'a mut T,
48545    ) -> Self {
48546        unsafe {
48547            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
48548            (*next_ptr).p_next = self.inner.p_next as *mut _;
48549            self.inner.p_next = <*mut BaseOutStructure>::cast::<
48550                core::ffi::c_void,
48551            >(next_ptr);
48552        }
48553        self
48554    }
48555}
48556impl<'a> core::ops::Deref for VertexInputAttributeDescription2EXTBuilder<'a> {
48557    type Target = VertexInputAttributeDescription2EXT;
48558    #[inline]
48559    fn deref(&self) -> &Self::Target {
48560        &self.inner
48561    }
48562}
48563impl<'a> core::ops::DerefMut for VertexInputAttributeDescription2EXTBuilder<'a> {
48564    #[inline]
48565    fn deref_mut(&mut self) -> &mut Self::Target {
48566        &mut self.inner
48567    }
48568}
48569///Builder for [`PhysicalDeviceColorWriteEnableFeaturesEXT`] with lifetime-tied pNext safety.
48570pub struct PhysicalDeviceColorWriteEnableFeaturesEXTBuilder<'a> {
48571    inner: PhysicalDeviceColorWriteEnableFeaturesEXT,
48572    _marker: core::marker::PhantomData<&'a ()>,
48573}
48574impl PhysicalDeviceColorWriteEnableFeaturesEXT {
48575    /// Start building this struct; `s_type` is already set to the correct variant.
48576    #[inline]
48577    pub fn builder<'a>() -> PhysicalDeviceColorWriteEnableFeaturesEXTBuilder<'a> {
48578        PhysicalDeviceColorWriteEnableFeaturesEXTBuilder {
48579            inner: PhysicalDeviceColorWriteEnableFeaturesEXT {
48580                s_type: StructureType::from_raw(1000381000i32),
48581                ..Default::default()
48582            },
48583            _marker: core::marker::PhantomData,
48584        }
48585    }
48586}
48587impl<'a> PhysicalDeviceColorWriteEnableFeaturesEXTBuilder<'a> {
48588    #[inline]
48589    pub fn color_write_enable(mut self, value: bool) -> Self {
48590        self.inner.color_write_enable = value as u32;
48591        self
48592    }
48593    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceColorWriteEnableFeaturesEXT`]'s **Extended By** section for valid types.
48594    #[inline]
48595    pub fn push_next<T: ExtendsPhysicalDeviceColorWriteEnableFeaturesEXT>(
48596        mut self,
48597        next: &'a mut T,
48598    ) -> Self {
48599        unsafe {
48600            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
48601            (*next_ptr).p_next = self.inner.p_next as *mut _;
48602            self.inner.p_next = <*mut BaseOutStructure>::cast::<
48603                core::ffi::c_void,
48604            >(next_ptr);
48605        }
48606        self
48607    }
48608}
48609impl<'a> core::ops::Deref for PhysicalDeviceColorWriteEnableFeaturesEXTBuilder<'a> {
48610    type Target = PhysicalDeviceColorWriteEnableFeaturesEXT;
48611    #[inline]
48612    fn deref(&self) -> &Self::Target {
48613        &self.inner
48614    }
48615}
48616impl<'a> core::ops::DerefMut for PhysicalDeviceColorWriteEnableFeaturesEXTBuilder<'a> {
48617    #[inline]
48618    fn deref_mut(&mut self) -> &mut Self::Target {
48619        &mut self.inner
48620    }
48621}
48622///Builder for [`PipelineColorWriteCreateInfoEXT`] with lifetime-tied pNext safety.
48623pub struct PipelineColorWriteCreateInfoEXTBuilder<'a> {
48624    inner: PipelineColorWriteCreateInfoEXT,
48625    _marker: core::marker::PhantomData<&'a ()>,
48626}
48627impl PipelineColorWriteCreateInfoEXT {
48628    /// Start building this struct; `s_type` is already set to the correct variant.
48629    #[inline]
48630    pub fn builder<'a>() -> PipelineColorWriteCreateInfoEXTBuilder<'a> {
48631        PipelineColorWriteCreateInfoEXTBuilder {
48632            inner: PipelineColorWriteCreateInfoEXT {
48633                s_type: StructureType::from_raw(1000381001i32),
48634                ..Default::default()
48635            },
48636            _marker: core::marker::PhantomData,
48637        }
48638    }
48639}
48640impl<'a> PipelineColorWriteCreateInfoEXTBuilder<'a> {
48641    #[inline]
48642    pub fn color_write_enables(mut self, slice: &'a [u32]) -> Self {
48643        self.inner.attachment_count = slice.len() as u32;
48644        self.inner.p_color_write_enables = slice.as_ptr();
48645        self
48646    }
48647    ///Prepend a struct to the pNext chain. See [`PipelineColorWriteCreateInfoEXT`]'s **Extended By** section for valid types.
48648    #[inline]
48649    pub fn push_next<T: ExtendsPipelineColorWriteCreateInfoEXT>(
48650        mut self,
48651        next: &'a mut T,
48652    ) -> Self {
48653        unsafe {
48654            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
48655            (*next_ptr).p_next = self.inner.p_next as *mut _;
48656            self.inner.p_next = <*mut BaseOutStructure>::cast::<
48657                core::ffi::c_void,
48658            >(next_ptr) as *const _;
48659        }
48660        self
48661    }
48662}
48663impl<'a> core::ops::Deref for PipelineColorWriteCreateInfoEXTBuilder<'a> {
48664    type Target = PipelineColorWriteCreateInfoEXT;
48665    #[inline]
48666    fn deref(&self) -> &Self::Target {
48667        &self.inner
48668    }
48669}
48670impl<'a> core::ops::DerefMut for PipelineColorWriteCreateInfoEXTBuilder<'a> {
48671    #[inline]
48672    fn deref_mut(&mut self) -> &mut Self::Target {
48673        &mut self.inner
48674    }
48675}
48676///Builder for [`MemoryBarrier2`] with lifetime-tied pNext safety.
48677pub struct MemoryBarrier2Builder<'a> {
48678    inner: MemoryBarrier2,
48679    _marker: core::marker::PhantomData<&'a ()>,
48680}
48681impl MemoryBarrier2 {
48682    /// Start building this struct; `s_type` is already set to the correct variant.
48683    #[inline]
48684    pub fn builder<'a>() -> MemoryBarrier2Builder<'a> {
48685        MemoryBarrier2Builder {
48686            inner: MemoryBarrier2 {
48687                s_type: StructureType::from_raw(1000314000i32),
48688                ..Default::default()
48689            },
48690            _marker: core::marker::PhantomData,
48691        }
48692    }
48693}
48694impl<'a> MemoryBarrier2Builder<'a> {
48695    #[inline]
48696    pub fn src_stage_mask(mut self, value: PipelineStageFlags2) -> Self {
48697        self.inner.src_stage_mask = value;
48698        self
48699    }
48700    #[inline]
48701    pub fn src_access_mask(mut self, value: AccessFlags2) -> Self {
48702        self.inner.src_access_mask = value;
48703        self
48704    }
48705    #[inline]
48706    pub fn dst_stage_mask(mut self, value: PipelineStageFlags2) -> Self {
48707        self.inner.dst_stage_mask = value;
48708        self
48709    }
48710    #[inline]
48711    pub fn dst_access_mask(mut self, value: AccessFlags2) -> Self {
48712        self.inner.dst_access_mask = value;
48713        self
48714    }
48715    ///Prepend a struct to the pNext chain. See [`MemoryBarrier2`]'s **Extended By** section for valid types.
48716    #[inline]
48717    pub fn push_next<T: ExtendsMemoryBarrier2>(mut self, next: &'a mut T) -> Self {
48718        unsafe {
48719            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
48720            (*next_ptr).p_next = self.inner.p_next as *mut _;
48721            self.inner.p_next = <*mut BaseOutStructure>::cast::<
48722                core::ffi::c_void,
48723            >(next_ptr) as *const _;
48724        }
48725        self
48726    }
48727}
48728impl<'a> core::ops::Deref for MemoryBarrier2Builder<'a> {
48729    type Target = MemoryBarrier2;
48730    #[inline]
48731    fn deref(&self) -> &Self::Target {
48732        &self.inner
48733    }
48734}
48735impl<'a> core::ops::DerefMut for MemoryBarrier2Builder<'a> {
48736    #[inline]
48737    fn deref_mut(&mut self) -> &mut Self::Target {
48738        &mut self.inner
48739    }
48740}
48741///Builder for [`ImageMemoryBarrier2`] with lifetime-tied pNext safety.
48742pub struct ImageMemoryBarrier2Builder<'a> {
48743    inner: ImageMemoryBarrier2,
48744    _marker: core::marker::PhantomData<&'a ()>,
48745}
48746impl ImageMemoryBarrier2 {
48747    /// Start building this struct; `s_type` is already set to the correct variant.
48748    #[inline]
48749    pub fn builder<'a>() -> ImageMemoryBarrier2Builder<'a> {
48750        ImageMemoryBarrier2Builder {
48751            inner: ImageMemoryBarrier2 {
48752                s_type: StructureType::from_raw(1000314002i32),
48753                ..Default::default()
48754            },
48755            _marker: core::marker::PhantomData,
48756        }
48757    }
48758}
48759impl<'a> ImageMemoryBarrier2Builder<'a> {
48760    #[inline]
48761    pub fn src_stage_mask(mut self, value: PipelineStageFlags2) -> Self {
48762        self.inner.src_stage_mask = value;
48763        self
48764    }
48765    #[inline]
48766    pub fn src_access_mask(mut self, value: AccessFlags2) -> Self {
48767        self.inner.src_access_mask = value;
48768        self
48769    }
48770    #[inline]
48771    pub fn dst_stage_mask(mut self, value: PipelineStageFlags2) -> Self {
48772        self.inner.dst_stage_mask = value;
48773        self
48774    }
48775    #[inline]
48776    pub fn dst_access_mask(mut self, value: AccessFlags2) -> Self {
48777        self.inner.dst_access_mask = value;
48778        self
48779    }
48780    #[inline]
48781    pub fn old_layout(mut self, value: ImageLayout) -> Self {
48782        self.inner.old_layout = value;
48783        self
48784    }
48785    #[inline]
48786    pub fn new_layout(mut self, value: ImageLayout) -> Self {
48787        self.inner.new_layout = value;
48788        self
48789    }
48790    #[inline]
48791    pub fn src_queue_family_index(mut self, value: u32) -> Self {
48792        self.inner.src_queue_family_index = value;
48793        self
48794    }
48795    #[inline]
48796    pub fn dst_queue_family_index(mut self, value: u32) -> Self {
48797        self.inner.dst_queue_family_index = value;
48798        self
48799    }
48800    #[inline]
48801    pub fn image(mut self, value: Image) -> Self {
48802        self.inner.image = value;
48803        self
48804    }
48805    #[inline]
48806    pub fn subresource_range(mut self, value: ImageSubresourceRange) -> Self {
48807        self.inner.subresource_range = value;
48808        self
48809    }
48810    ///Prepend a struct to the pNext chain. See [`ImageMemoryBarrier2`]'s **Extended By** section for valid types.
48811    #[inline]
48812    pub fn push_next<T: ExtendsImageMemoryBarrier2>(mut self, next: &'a mut T) -> Self {
48813        unsafe {
48814            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
48815            (*next_ptr).p_next = self.inner.p_next as *mut _;
48816            self.inner.p_next = <*mut BaseOutStructure>::cast::<
48817                core::ffi::c_void,
48818            >(next_ptr) as *const _;
48819        }
48820        self
48821    }
48822}
48823impl<'a> core::ops::Deref for ImageMemoryBarrier2Builder<'a> {
48824    type Target = ImageMemoryBarrier2;
48825    #[inline]
48826    fn deref(&self) -> &Self::Target {
48827        &self.inner
48828    }
48829}
48830impl<'a> core::ops::DerefMut for ImageMemoryBarrier2Builder<'a> {
48831    #[inline]
48832    fn deref_mut(&mut self) -> &mut Self::Target {
48833        &mut self.inner
48834    }
48835}
48836///Builder for [`BufferMemoryBarrier2`] with lifetime-tied pNext safety.
48837pub struct BufferMemoryBarrier2Builder<'a> {
48838    inner: BufferMemoryBarrier2,
48839    _marker: core::marker::PhantomData<&'a ()>,
48840}
48841impl BufferMemoryBarrier2 {
48842    /// Start building this struct; `s_type` is already set to the correct variant.
48843    #[inline]
48844    pub fn builder<'a>() -> BufferMemoryBarrier2Builder<'a> {
48845        BufferMemoryBarrier2Builder {
48846            inner: BufferMemoryBarrier2 {
48847                s_type: StructureType::from_raw(1000314001i32),
48848                ..Default::default()
48849            },
48850            _marker: core::marker::PhantomData,
48851        }
48852    }
48853}
48854impl<'a> BufferMemoryBarrier2Builder<'a> {
48855    #[inline]
48856    pub fn src_stage_mask(mut self, value: PipelineStageFlags2) -> Self {
48857        self.inner.src_stage_mask = value;
48858        self
48859    }
48860    #[inline]
48861    pub fn src_access_mask(mut self, value: AccessFlags2) -> Self {
48862        self.inner.src_access_mask = value;
48863        self
48864    }
48865    #[inline]
48866    pub fn dst_stage_mask(mut self, value: PipelineStageFlags2) -> Self {
48867        self.inner.dst_stage_mask = value;
48868        self
48869    }
48870    #[inline]
48871    pub fn dst_access_mask(mut self, value: AccessFlags2) -> Self {
48872        self.inner.dst_access_mask = value;
48873        self
48874    }
48875    #[inline]
48876    pub fn src_queue_family_index(mut self, value: u32) -> Self {
48877        self.inner.src_queue_family_index = value;
48878        self
48879    }
48880    #[inline]
48881    pub fn dst_queue_family_index(mut self, value: u32) -> Self {
48882        self.inner.dst_queue_family_index = value;
48883        self
48884    }
48885    #[inline]
48886    pub fn buffer(mut self, value: Buffer) -> Self {
48887        self.inner.buffer = value;
48888        self
48889    }
48890    #[inline]
48891    pub fn offset(mut self, value: u64) -> Self {
48892        self.inner.offset = value;
48893        self
48894    }
48895    #[inline]
48896    pub fn size(mut self, value: u64) -> Self {
48897        self.inner.size = value;
48898        self
48899    }
48900    ///Prepend a struct to the pNext chain. See [`BufferMemoryBarrier2`]'s **Extended By** section for valid types.
48901    #[inline]
48902    pub fn push_next<T: ExtendsBufferMemoryBarrier2>(mut self, next: &'a mut T) -> Self {
48903        unsafe {
48904            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
48905            (*next_ptr).p_next = self.inner.p_next as *mut _;
48906            self.inner.p_next = <*mut BaseOutStructure>::cast::<
48907                core::ffi::c_void,
48908            >(next_ptr) as *const _;
48909        }
48910        self
48911    }
48912}
48913impl<'a> core::ops::Deref for BufferMemoryBarrier2Builder<'a> {
48914    type Target = BufferMemoryBarrier2;
48915    #[inline]
48916    fn deref(&self) -> &Self::Target {
48917        &self.inner
48918    }
48919}
48920impl<'a> core::ops::DerefMut for BufferMemoryBarrier2Builder<'a> {
48921    #[inline]
48922    fn deref_mut(&mut self) -> &mut Self::Target {
48923        &mut self.inner
48924    }
48925}
48926///Builder for [`MemoryBarrierAccessFlags3KHR`] with lifetime-tied pNext safety.
48927pub struct MemoryBarrierAccessFlags3KHRBuilder<'a> {
48928    inner: MemoryBarrierAccessFlags3KHR,
48929    _marker: core::marker::PhantomData<&'a ()>,
48930}
48931impl MemoryBarrierAccessFlags3KHR {
48932    /// Start building this struct; `s_type` is already set to the correct variant.
48933    #[inline]
48934    pub fn builder<'a>() -> MemoryBarrierAccessFlags3KHRBuilder<'a> {
48935        MemoryBarrierAccessFlags3KHRBuilder {
48936            inner: MemoryBarrierAccessFlags3KHR {
48937                s_type: StructureType::from_raw(1000574002i32),
48938                ..Default::default()
48939            },
48940            _marker: core::marker::PhantomData,
48941        }
48942    }
48943}
48944impl<'a> MemoryBarrierAccessFlags3KHRBuilder<'a> {
48945    #[inline]
48946    pub fn src_access_mask3(mut self, value: AccessFlags3KHR) -> Self {
48947        self.inner.src_access_mask3 = value;
48948        self
48949    }
48950    #[inline]
48951    pub fn dst_access_mask3(mut self, value: AccessFlags3KHR) -> Self {
48952        self.inner.dst_access_mask3 = value;
48953        self
48954    }
48955    ///Prepend a struct to the pNext chain. See [`MemoryBarrierAccessFlags3KHR`]'s **Extended By** section for valid types.
48956    #[inline]
48957    pub fn push_next<T: ExtendsMemoryBarrierAccessFlags3KHR>(
48958        mut self,
48959        next: &'a mut T,
48960    ) -> Self {
48961        unsafe {
48962            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
48963            (*next_ptr).p_next = self.inner.p_next as *mut _;
48964            self.inner.p_next = <*mut BaseOutStructure>::cast::<
48965                core::ffi::c_void,
48966            >(next_ptr) as *const _;
48967        }
48968        self
48969    }
48970}
48971impl<'a> core::ops::Deref for MemoryBarrierAccessFlags3KHRBuilder<'a> {
48972    type Target = MemoryBarrierAccessFlags3KHR;
48973    #[inline]
48974    fn deref(&self) -> &Self::Target {
48975        &self.inner
48976    }
48977}
48978impl<'a> core::ops::DerefMut for MemoryBarrierAccessFlags3KHRBuilder<'a> {
48979    #[inline]
48980    fn deref_mut(&mut self) -> &mut Self::Target {
48981        &mut self.inner
48982    }
48983}
48984///Builder for [`DependencyInfo`] with lifetime-tied pNext safety.
48985pub struct DependencyInfoBuilder<'a> {
48986    inner: DependencyInfo,
48987    _marker: core::marker::PhantomData<&'a ()>,
48988}
48989impl DependencyInfo {
48990    /// Start building this struct; `s_type` is already set to the correct variant.
48991    #[inline]
48992    pub fn builder<'a>() -> DependencyInfoBuilder<'a> {
48993        DependencyInfoBuilder {
48994            inner: DependencyInfo {
48995                s_type: StructureType::from_raw(1000314003i32),
48996                ..Default::default()
48997            },
48998            _marker: core::marker::PhantomData,
48999        }
49000    }
49001}
49002impl<'a> DependencyInfoBuilder<'a> {
49003    #[inline]
49004    pub fn dependency_flags(mut self, value: DependencyFlags) -> Self {
49005        self.inner.dependency_flags = value;
49006        self
49007    }
49008    #[inline]
49009    pub fn memory_barriers(mut self, slice: &'a [MemoryBarrier2]) -> Self {
49010        self.inner.memory_barrier_count = slice.len() as u32;
49011        self.inner.p_memory_barriers = slice.as_ptr();
49012        self
49013    }
49014    #[inline]
49015    pub fn buffer_memory_barriers(mut self, slice: &'a [BufferMemoryBarrier2]) -> Self {
49016        self.inner.buffer_memory_barrier_count = slice.len() as u32;
49017        self.inner.p_buffer_memory_barriers = slice.as_ptr();
49018        self
49019    }
49020    #[inline]
49021    pub fn image_memory_barriers(mut self, slice: &'a [ImageMemoryBarrier2]) -> Self {
49022        self.inner.image_memory_barrier_count = slice.len() as u32;
49023        self.inner.p_image_memory_barriers = slice.as_ptr();
49024        self
49025    }
49026    ///Prepend a struct to the pNext chain. See [`DependencyInfo`]'s **Extended By** section for valid types.
49027    #[inline]
49028    pub fn push_next<T: ExtendsDependencyInfo>(mut self, next: &'a mut T) -> Self {
49029        unsafe {
49030            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
49031            (*next_ptr).p_next = self.inner.p_next as *mut _;
49032            self.inner.p_next = <*mut BaseOutStructure>::cast::<
49033                core::ffi::c_void,
49034            >(next_ptr) as *const _;
49035        }
49036        self
49037    }
49038}
49039impl<'a> core::ops::Deref for DependencyInfoBuilder<'a> {
49040    type Target = DependencyInfo;
49041    #[inline]
49042    fn deref(&self) -> &Self::Target {
49043        &self.inner
49044    }
49045}
49046impl<'a> core::ops::DerefMut for DependencyInfoBuilder<'a> {
49047    #[inline]
49048    fn deref_mut(&mut self) -> &mut Self::Target {
49049        &mut self.inner
49050    }
49051}
49052///Builder for [`SemaphoreSubmitInfo`] with lifetime-tied pNext safety.
49053pub struct SemaphoreSubmitInfoBuilder<'a> {
49054    inner: SemaphoreSubmitInfo,
49055    _marker: core::marker::PhantomData<&'a ()>,
49056}
49057impl SemaphoreSubmitInfo {
49058    /// Start building this struct; `s_type` is already set to the correct variant.
49059    #[inline]
49060    pub fn builder<'a>() -> SemaphoreSubmitInfoBuilder<'a> {
49061        SemaphoreSubmitInfoBuilder {
49062            inner: SemaphoreSubmitInfo {
49063                s_type: StructureType::from_raw(1000314005i32),
49064                ..Default::default()
49065            },
49066            _marker: core::marker::PhantomData,
49067        }
49068    }
49069}
49070impl<'a> SemaphoreSubmitInfoBuilder<'a> {
49071    #[inline]
49072    pub fn semaphore(mut self, value: Semaphore) -> Self {
49073        self.inner.semaphore = value;
49074        self
49075    }
49076    #[inline]
49077    pub fn value(mut self, value: u64) -> Self {
49078        self.inner.value = value;
49079        self
49080    }
49081    #[inline]
49082    pub fn stage_mask(mut self, value: PipelineStageFlags2) -> Self {
49083        self.inner.stage_mask = value;
49084        self
49085    }
49086    #[inline]
49087    pub fn device_index(mut self, value: u32) -> Self {
49088        self.inner.device_index = value;
49089        self
49090    }
49091    ///Prepend a struct to the pNext chain. See [`SemaphoreSubmitInfo`]'s **Extended By** section for valid types.
49092    #[inline]
49093    pub fn push_next<T: ExtendsSemaphoreSubmitInfo>(mut self, next: &'a mut T) -> Self {
49094        unsafe {
49095            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
49096            (*next_ptr).p_next = self.inner.p_next as *mut _;
49097            self.inner.p_next = <*mut BaseOutStructure>::cast::<
49098                core::ffi::c_void,
49099            >(next_ptr) as *const _;
49100        }
49101        self
49102    }
49103}
49104impl<'a> core::ops::Deref for SemaphoreSubmitInfoBuilder<'a> {
49105    type Target = SemaphoreSubmitInfo;
49106    #[inline]
49107    fn deref(&self) -> &Self::Target {
49108        &self.inner
49109    }
49110}
49111impl<'a> core::ops::DerefMut for SemaphoreSubmitInfoBuilder<'a> {
49112    #[inline]
49113    fn deref_mut(&mut self) -> &mut Self::Target {
49114        &mut self.inner
49115    }
49116}
49117///Builder for [`CommandBufferSubmitInfo`] with lifetime-tied pNext safety.
49118pub struct CommandBufferSubmitInfoBuilder<'a> {
49119    inner: CommandBufferSubmitInfo,
49120    _marker: core::marker::PhantomData<&'a ()>,
49121}
49122impl CommandBufferSubmitInfo {
49123    /// Start building this struct; `s_type` is already set to the correct variant.
49124    #[inline]
49125    pub fn builder<'a>() -> CommandBufferSubmitInfoBuilder<'a> {
49126        CommandBufferSubmitInfoBuilder {
49127            inner: CommandBufferSubmitInfo {
49128                s_type: StructureType::from_raw(1000314006i32),
49129                ..Default::default()
49130            },
49131            _marker: core::marker::PhantomData,
49132        }
49133    }
49134}
49135impl<'a> CommandBufferSubmitInfoBuilder<'a> {
49136    #[inline]
49137    pub fn command_buffer(mut self, value: CommandBuffer) -> Self {
49138        self.inner.command_buffer = value;
49139        self
49140    }
49141    #[inline]
49142    pub fn device_mask(mut self, value: u32) -> Self {
49143        self.inner.device_mask = value;
49144        self
49145    }
49146    ///Prepend a struct to the pNext chain. See [`CommandBufferSubmitInfo`]'s **Extended By** section for valid types.
49147    #[inline]
49148    pub fn push_next<T: ExtendsCommandBufferSubmitInfo>(
49149        mut self,
49150        next: &'a mut T,
49151    ) -> Self {
49152        unsafe {
49153            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
49154            (*next_ptr).p_next = self.inner.p_next as *mut _;
49155            self.inner.p_next = <*mut BaseOutStructure>::cast::<
49156                core::ffi::c_void,
49157            >(next_ptr) as *const _;
49158        }
49159        self
49160    }
49161}
49162impl<'a> core::ops::Deref for CommandBufferSubmitInfoBuilder<'a> {
49163    type Target = CommandBufferSubmitInfo;
49164    #[inline]
49165    fn deref(&self) -> &Self::Target {
49166        &self.inner
49167    }
49168}
49169impl<'a> core::ops::DerefMut for CommandBufferSubmitInfoBuilder<'a> {
49170    #[inline]
49171    fn deref_mut(&mut self) -> &mut Self::Target {
49172        &mut self.inner
49173    }
49174}
49175///Builder for [`SubmitInfo2`] with lifetime-tied pNext safety.
49176pub struct SubmitInfo2Builder<'a> {
49177    inner: SubmitInfo2,
49178    _marker: core::marker::PhantomData<&'a ()>,
49179}
49180impl SubmitInfo2 {
49181    /// Start building this struct; `s_type` is already set to the correct variant.
49182    #[inline]
49183    pub fn builder<'a>() -> SubmitInfo2Builder<'a> {
49184        SubmitInfo2Builder {
49185            inner: SubmitInfo2 {
49186                s_type: StructureType::from_raw(1000314004i32),
49187                ..Default::default()
49188            },
49189            _marker: core::marker::PhantomData,
49190        }
49191    }
49192}
49193impl<'a> SubmitInfo2Builder<'a> {
49194    #[inline]
49195    pub fn flags(mut self, value: SubmitFlags) -> Self {
49196        self.inner.flags = value;
49197        self
49198    }
49199    #[inline]
49200    pub fn wait_semaphore_infos(mut self, slice: &'a [SemaphoreSubmitInfo]) -> Self {
49201        self.inner.wait_semaphore_info_count = slice.len() as u32;
49202        self.inner.p_wait_semaphore_infos = slice.as_ptr();
49203        self
49204    }
49205    #[inline]
49206    pub fn command_buffer_infos(mut self, slice: &'a [CommandBufferSubmitInfo]) -> Self {
49207        self.inner.command_buffer_info_count = slice.len() as u32;
49208        self.inner.p_command_buffer_infos = slice.as_ptr();
49209        self
49210    }
49211    #[inline]
49212    pub fn signal_semaphore_infos(mut self, slice: &'a [SemaphoreSubmitInfo]) -> Self {
49213        self.inner.signal_semaphore_info_count = slice.len() as u32;
49214        self.inner.p_signal_semaphore_infos = slice.as_ptr();
49215        self
49216    }
49217    ///Prepend a struct to the pNext chain. See [`SubmitInfo2`]'s **Extended By** section for valid types.
49218    #[inline]
49219    pub fn push_next<T: ExtendsSubmitInfo2>(mut self, next: &'a mut T) -> Self {
49220        unsafe {
49221            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
49222            (*next_ptr).p_next = self.inner.p_next as *mut _;
49223            self.inner.p_next = <*mut BaseOutStructure>::cast::<
49224                core::ffi::c_void,
49225            >(next_ptr) as *const _;
49226        }
49227        self
49228    }
49229}
49230impl<'a> core::ops::Deref for SubmitInfo2Builder<'a> {
49231    type Target = SubmitInfo2;
49232    #[inline]
49233    fn deref(&self) -> &Self::Target {
49234        &self.inner
49235    }
49236}
49237impl<'a> core::ops::DerefMut for SubmitInfo2Builder<'a> {
49238    #[inline]
49239    fn deref_mut(&mut self) -> &mut Self::Target {
49240        &mut self.inner
49241    }
49242}
49243///Builder for [`QueueFamilyCheckpointProperties2NV`] with lifetime-tied pNext safety.
49244pub struct QueueFamilyCheckpointProperties2NVBuilder<'a> {
49245    inner: QueueFamilyCheckpointProperties2NV,
49246    _marker: core::marker::PhantomData<&'a ()>,
49247}
49248impl QueueFamilyCheckpointProperties2NV {
49249    /// Start building this struct; `s_type` is already set to the correct variant.
49250    #[inline]
49251    pub fn builder<'a>() -> QueueFamilyCheckpointProperties2NVBuilder<'a> {
49252        QueueFamilyCheckpointProperties2NVBuilder {
49253            inner: QueueFamilyCheckpointProperties2NV {
49254                s_type: StructureType::from_raw(1000314008i32),
49255                ..Default::default()
49256            },
49257            _marker: core::marker::PhantomData,
49258        }
49259    }
49260}
49261impl<'a> QueueFamilyCheckpointProperties2NVBuilder<'a> {
49262    #[inline]
49263    pub fn checkpoint_execution_stage_mask(
49264        mut self,
49265        value: PipelineStageFlags2,
49266    ) -> Self {
49267        self.inner.checkpoint_execution_stage_mask = value;
49268        self
49269    }
49270}
49271impl<'a> core::ops::Deref for QueueFamilyCheckpointProperties2NVBuilder<'a> {
49272    type Target = QueueFamilyCheckpointProperties2NV;
49273    #[inline]
49274    fn deref(&self) -> &Self::Target {
49275        &self.inner
49276    }
49277}
49278impl<'a> core::ops::DerefMut for QueueFamilyCheckpointProperties2NVBuilder<'a> {
49279    #[inline]
49280    fn deref_mut(&mut self) -> &mut Self::Target {
49281        &mut self.inner
49282    }
49283}
49284///Builder for [`CheckpointData2NV`] with lifetime-tied pNext safety.
49285pub struct CheckpointData2NVBuilder<'a> {
49286    inner: CheckpointData2NV,
49287    _marker: core::marker::PhantomData<&'a ()>,
49288}
49289impl CheckpointData2NV {
49290    /// Start building this struct; `s_type` is already set to the correct variant.
49291    #[inline]
49292    pub fn builder<'a>() -> CheckpointData2NVBuilder<'a> {
49293        CheckpointData2NVBuilder {
49294            inner: CheckpointData2NV {
49295                s_type: StructureType::from_raw(1000314009i32),
49296                ..Default::default()
49297            },
49298            _marker: core::marker::PhantomData,
49299        }
49300    }
49301}
49302impl<'a> CheckpointData2NVBuilder<'a> {
49303    #[inline]
49304    pub fn stage(mut self, value: PipelineStageFlags2) -> Self {
49305        self.inner.stage = value;
49306        self
49307    }
49308    #[inline]
49309    pub fn checkpoint_marker(mut self, value: *mut core::ffi::c_void) -> Self {
49310        self.inner.p_checkpoint_marker = value;
49311        self
49312    }
49313}
49314impl<'a> core::ops::Deref for CheckpointData2NVBuilder<'a> {
49315    type Target = CheckpointData2NV;
49316    #[inline]
49317    fn deref(&self) -> &Self::Target {
49318        &self.inner
49319    }
49320}
49321impl<'a> core::ops::DerefMut for CheckpointData2NVBuilder<'a> {
49322    #[inline]
49323    fn deref_mut(&mut self) -> &mut Self::Target {
49324        &mut self.inner
49325    }
49326}
49327///Builder for [`PhysicalDeviceSynchronization2Features`] with lifetime-tied pNext safety.
49328pub struct PhysicalDeviceSynchronization2FeaturesBuilder<'a> {
49329    inner: PhysicalDeviceSynchronization2Features,
49330    _marker: core::marker::PhantomData<&'a ()>,
49331}
49332impl PhysicalDeviceSynchronization2Features {
49333    /// Start building this struct; `s_type` is already set to the correct variant.
49334    #[inline]
49335    pub fn builder<'a>() -> PhysicalDeviceSynchronization2FeaturesBuilder<'a> {
49336        PhysicalDeviceSynchronization2FeaturesBuilder {
49337            inner: PhysicalDeviceSynchronization2Features {
49338                s_type: StructureType::from_raw(1000314007i32),
49339                ..Default::default()
49340            },
49341            _marker: core::marker::PhantomData,
49342        }
49343    }
49344}
49345impl<'a> PhysicalDeviceSynchronization2FeaturesBuilder<'a> {
49346    #[inline]
49347    pub fn synchronization2(mut self, value: bool) -> Self {
49348        self.inner.synchronization2 = value as u32;
49349        self
49350    }
49351    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceSynchronization2Features`]'s **Extended By** section for valid types.
49352    #[inline]
49353    pub fn push_next<T: ExtendsPhysicalDeviceSynchronization2Features>(
49354        mut self,
49355        next: &'a mut T,
49356    ) -> Self {
49357        unsafe {
49358            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
49359            (*next_ptr).p_next = self.inner.p_next as *mut _;
49360            self.inner.p_next = <*mut BaseOutStructure>::cast::<
49361                core::ffi::c_void,
49362            >(next_ptr);
49363        }
49364        self
49365    }
49366}
49367impl<'a> core::ops::Deref for PhysicalDeviceSynchronization2FeaturesBuilder<'a> {
49368    type Target = PhysicalDeviceSynchronization2Features;
49369    #[inline]
49370    fn deref(&self) -> &Self::Target {
49371        &self.inner
49372    }
49373}
49374impl<'a> core::ops::DerefMut for PhysicalDeviceSynchronization2FeaturesBuilder<'a> {
49375    #[inline]
49376    fn deref_mut(&mut self) -> &mut Self::Target {
49377        &mut self.inner
49378    }
49379}
49380///Builder for [`PhysicalDeviceUnifiedImageLayoutsFeaturesKHR`] with lifetime-tied pNext safety.
49381pub struct PhysicalDeviceUnifiedImageLayoutsFeaturesKHRBuilder<'a> {
49382    inner: PhysicalDeviceUnifiedImageLayoutsFeaturesKHR,
49383    _marker: core::marker::PhantomData<&'a ()>,
49384}
49385impl PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {
49386    /// Start building this struct; `s_type` is already set to the correct variant.
49387    #[inline]
49388    pub fn builder<'a>() -> PhysicalDeviceUnifiedImageLayoutsFeaturesKHRBuilder<'a> {
49389        PhysicalDeviceUnifiedImageLayoutsFeaturesKHRBuilder {
49390            inner: PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {
49391                s_type: StructureType::from_raw(1000527000i32),
49392                ..Default::default()
49393            },
49394            _marker: core::marker::PhantomData,
49395        }
49396    }
49397}
49398impl<'a> PhysicalDeviceUnifiedImageLayoutsFeaturesKHRBuilder<'a> {
49399    #[inline]
49400    pub fn unified_image_layouts(mut self, value: bool) -> Self {
49401        self.inner.unified_image_layouts = value as u32;
49402        self
49403    }
49404    #[inline]
49405    pub fn unified_image_layouts_video(mut self, value: bool) -> Self {
49406        self.inner.unified_image_layouts_video = value as u32;
49407        self
49408    }
49409    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceUnifiedImageLayoutsFeaturesKHR`]'s **Extended By** section for valid types.
49410    #[inline]
49411    pub fn push_next<T: ExtendsPhysicalDeviceUnifiedImageLayoutsFeaturesKHR>(
49412        mut self,
49413        next: &'a mut T,
49414    ) -> Self {
49415        unsafe {
49416            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
49417            (*next_ptr).p_next = self.inner.p_next as *mut _;
49418            self.inner.p_next = <*mut BaseOutStructure>::cast::<
49419                core::ffi::c_void,
49420            >(next_ptr);
49421        }
49422        self
49423    }
49424}
49425impl<'a> core::ops::Deref for PhysicalDeviceUnifiedImageLayoutsFeaturesKHRBuilder<'a> {
49426    type Target = PhysicalDeviceUnifiedImageLayoutsFeaturesKHR;
49427    #[inline]
49428    fn deref(&self) -> &Self::Target {
49429        &self.inner
49430    }
49431}
49432impl<'a> core::ops::DerefMut
49433for PhysicalDeviceUnifiedImageLayoutsFeaturesKHRBuilder<'a> {
49434    #[inline]
49435    fn deref_mut(&mut self) -> &mut Self::Target {
49436        &mut self.inner
49437    }
49438}
49439///Builder for [`PhysicalDeviceHostImageCopyFeatures`] with lifetime-tied pNext safety.
49440pub struct PhysicalDeviceHostImageCopyFeaturesBuilder<'a> {
49441    inner: PhysicalDeviceHostImageCopyFeatures,
49442    _marker: core::marker::PhantomData<&'a ()>,
49443}
49444impl PhysicalDeviceHostImageCopyFeatures {
49445    /// Start building this struct; `s_type` is already set to the correct variant.
49446    #[inline]
49447    pub fn builder<'a>() -> PhysicalDeviceHostImageCopyFeaturesBuilder<'a> {
49448        PhysicalDeviceHostImageCopyFeaturesBuilder {
49449            inner: PhysicalDeviceHostImageCopyFeatures {
49450                s_type: StructureType::from_raw(1000270000i32),
49451                ..Default::default()
49452            },
49453            _marker: core::marker::PhantomData,
49454        }
49455    }
49456}
49457impl<'a> PhysicalDeviceHostImageCopyFeaturesBuilder<'a> {
49458    #[inline]
49459    pub fn host_image_copy(mut self, value: bool) -> Self {
49460        self.inner.host_image_copy = value as u32;
49461        self
49462    }
49463    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceHostImageCopyFeatures`]'s **Extended By** section for valid types.
49464    #[inline]
49465    pub fn push_next<T: ExtendsPhysicalDeviceHostImageCopyFeatures>(
49466        mut self,
49467        next: &'a mut T,
49468    ) -> Self {
49469        unsafe {
49470            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
49471            (*next_ptr).p_next = self.inner.p_next as *mut _;
49472            self.inner.p_next = <*mut BaseOutStructure>::cast::<
49473                core::ffi::c_void,
49474            >(next_ptr);
49475        }
49476        self
49477    }
49478}
49479impl<'a> core::ops::Deref for PhysicalDeviceHostImageCopyFeaturesBuilder<'a> {
49480    type Target = PhysicalDeviceHostImageCopyFeatures;
49481    #[inline]
49482    fn deref(&self) -> &Self::Target {
49483        &self.inner
49484    }
49485}
49486impl<'a> core::ops::DerefMut for PhysicalDeviceHostImageCopyFeaturesBuilder<'a> {
49487    #[inline]
49488    fn deref_mut(&mut self) -> &mut Self::Target {
49489        &mut self.inner
49490    }
49491}
49492///Builder for [`PhysicalDeviceHostImageCopyProperties`] with lifetime-tied pNext safety.
49493pub struct PhysicalDeviceHostImageCopyPropertiesBuilder<'a> {
49494    inner: PhysicalDeviceHostImageCopyProperties,
49495    _marker: core::marker::PhantomData<&'a ()>,
49496}
49497impl PhysicalDeviceHostImageCopyProperties {
49498    /// Start building this struct; `s_type` is already set to the correct variant.
49499    #[inline]
49500    pub fn builder<'a>() -> PhysicalDeviceHostImageCopyPropertiesBuilder<'a> {
49501        PhysicalDeviceHostImageCopyPropertiesBuilder {
49502            inner: PhysicalDeviceHostImageCopyProperties {
49503                s_type: StructureType::from_raw(1000270001i32),
49504                ..Default::default()
49505            },
49506            _marker: core::marker::PhantomData,
49507        }
49508    }
49509}
49510impl<'a> PhysicalDeviceHostImageCopyPropertiesBuilder<'a> {
49511    #[inline]
49512    pub fn copy_src_layout_count(mut self, value: u32) -> Self {
49513        self.inner.copy_src_layout_count = value;
49514        self
49515    }
49516    #[inline]
49517    pub fn copy_src_layouts(mut self, slice: &'a mut [ImageLayout]) -> Self {
49518        self.inner.copy_src_layout_count = slice.len() as u32;
49519        self.inner.p_copy_src_layouts = slice.as_mut_ptr();
49520        self
49521    }
49522    #[inline]
49523    pub fn copy_dst_layout_count(mut self, value: u32) -> Self {
49524        self.inner.copy_dst_layout_count = value;
49525        self
49526    }
49527    #[inline]
49528    pub fn copy_dst_layouts(mut self, slice: &'a mut [ImageLayout]) -> Self {
49529        self.inner.copy_dst_layout_count = slice.len() as u32;
49530        self.inner.p_copy_dst_layouts = slice.as_mut_ptr();
49531        self
49532    }
49533    #[inline]
49534    pub fn optimal_tiling_layout_uuid(
49535        mut self,
49536        value: [u8; UUID_SIZE as usize],
49537    ) -> Self {
49538        self.inner.optimal_tiling_layout_uuid = value;
49539        self
49540    }
49541    #[inline]
49542    pub fn identical_memory_type_requirements(mut self, value: bool) -> Self {
49543        self.inner.identical_memory_type_requirements = value as u32;
49544        self
49545    }
49546    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceHostImageCopyProperties`]'s **Extended By** section for valid types.
49547    #[inline]
49548    pub fn push_next<T: ExtendsPhysicalDeviceHostImageCopyProperties>(
49549        mut self,
49550        next: &'a mut T,
49551    ) -> Self {
49552        unsafe {
49553            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
49554            (*next_ptr).p_next = self.inner.p_next as *mut _;
49555            self.inner.p_next = <*mut BaseOutStructure>::cast::<
49556                core::ffi::c_void,
49557            >(next_ptr);
49558        }
49559        self
49560    }
49561}
49562impl<'a> core::ops::Deref for PhysicalDeviceHostImageCopyPropertiesBuilder<'a> {
49563    type Target = PhysicalDeviceHostImageCopyProperties;
49564    #[inline]
49565    fn deref(&self) -> &Self::Target {
49566        &self.inner
49567    }
49568}
49569impl<'a> core::ops::DerefMut for PhysicalDeviceHostImageCopyPropertiesBuilder<'a> {
49570    #[inline]
49571    fn deref_mut(&mut self) -> &mut Self::Target {
49572        &mut self.inner
49573    }
49574}
49575///Builder for [`MemoryToImageCopy`] with lifetime-tied pNext safety.
49576pub struct MemoryToImageCopyBuilder<'a> {
49577    inner: MemoryToImageCopy,
49578    _marker: core::marker::PhantomData<&'a ()>,
49579}
49580impl MemoryToImageCopy {
49581    /// Start building this struct; `s_type` is already set to the correct variant.
49582    #[inline]
49583    pub fn builder<'a>() -> MemoryToImageCopyBuilder<'a> {
49584        MemoryToImageCopyBuilder {
49585            inner: MemoryToImageCopy {
49586                s_type: StructureType::from_raw(1000270002i32),
49587                ..Default::default()
49588            },
49589            _marker: core::marker::PhantomData,
49590        }
49591    }
49592}
49593impl<'a> MemoryToImageCopyBuilder<'a> {
49594    #[inline]
49595    pub fn host_pointer(mut self, value: *const core::ffi::c_void) -> Self {
49596        self.inner.p_host_pointer = value;
49597        self
49598    }
49599    #[inline]
49600    pub fn memory_row_length(mut self, value: u32) -> Self {
49601        self.inner.memory_row_length = value;
49602        self
49603    }
49604    #[inline]
49605    pub fn memory_image_height(mut self, value: u32) -> Self {
49606        self.inner.memory_image_height = value;
49607        self
49608    }
49609    #[inline]
49610    pub fn image_subresource(mut self, value: ImageSubresourceLayers) -> Self {
49611        self.inner.image_subresource = value;
49612        self
49613    }
49614    #[inline]
49615    pub fn image_offset(mut self, value: Offset3D) -> Self {
49616        self.inner.image_offset = value;
49617        self
49618    }
49619    #[inline]
49620    pub fn image_extent(mut self, value: Extent3D) -> Self {
49621        self.inner.image_extent = value;
49622        self
49623    }
49624    ///Prepend a struct to the pNext chain. See [`MemoryToImageCopy`]'s **Extended By** section for valid types.
49625    #[inline]
49626    pub fn push_next<T: ExtendsMemoryToImageCopy>(mut self, next: &'a mut T) -> Self {
49627        unsafe {
49628            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
49629            (*next_ptr).p_next = self.inner.p_next as *mut _;
49630            self.inner.p_next = <*mut BaseOutStructure>::cast::<
49631                core::ffi::c_void,
49632            >(next_ptr) as *const _;
49633        }
49634        self
49635    }
49636}
49637impl<'a> core::ops::Deref for MemoryToImageCopyBuilder<'a> {
49638    type Target = MemoryToImageCopy;
49639    #[inline]
49640    fn deref(&self) -> &Self::Target {
49641        &self.inner
49642    }
49643}
49644impl<'a> core::ops::DerefMut for MemoryToImageCopyBuilder<'a> {
49645    #[inline]
49646    fn deref_mut(&mut self) -> &mut Self::Target {
49647        &mut self.inner
49648    }
49649}
49650///Builder for [`ImageToMemoryCopy`] with lifetime-tied pNext safety.
49651pub struct ImageToMemoryCopyBuilder<'a> {
49652    inner: ImageToMemoryCopy,
49653    _marker: core::marker::PhantomData<&'a ()>,
49654}
49655impl ImageToMemoryCopy {
49656    /// Start building this struct; `s_type` is already set to the correct variant.
49657    #[inline]
49658    pub fn builder<'a>() -> ImageToMemoryCopyBuilder<'a> {
49659        ImageToMemoryCopyBuilder {
49660            inner: ImageToMemoryCopy {
49661                s_type: StructureType::from_raw(1000270003i32),
49662                ..Default::default()
49663            },
49664            _marker: core::marker::PhantomData,
49665        }
49666    }
49667}
49668impl<'a> ImageToMemoryCopyBuilder<'a> {
49669    #[inline]
49670    pub fn host_pointer(mut self, value: *mut core::ffi::c_void) -> Self {
49671        self.inner.p_host_pointer = value;
49672        self
49673    }
49674    #[inline]
49675    pub fn memory_row_length(mut self, value: u32) -> Self {
49676        self.inner.memory_row_length = value;
49677        self
49678    }
49679    #[inline]
49680    pub fn memory_image_height(mut self, value: u32) -> Self {
49681        self.inner.memory_image_height = value;
49682        self
49683    }
49684    #[inline]
49685    pub fn image_subresource(mut self, value: ImageSubresourceLayers) -> Self {
49686        self.inner.image_subresource = value;
49687        self
49688    }
49689    #[inline]
49690    pub fn image_offset(mut self, value: Offset3D) -> Self {
49691        self.inner.image_offset = value;
49692        self
49693    }
49694    #[inline]
49695    pub fn image_extent(mut self, value: Extent3D) -> Self {
49696        self.inner.image_extent = value;
49697        self
49698    }
49699    ///Prepend a struct to the pNext chain. See [`ImageToMemoryCopy`]'s **Extended By** section for valid types.
49700    #[inline]
49701    pub fn push_next<T: ExtendsImageToMemoryCopy>(mut self, next: &'a mut T) -> Self {
49702        unsafe {
49703            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
49704            (*next_ptr).p_next = self.inner.p_next as *mut _;
49705            self.inner.p_next = <*mut BaseOutStructure>::cast::<
49706                core::ffi::c_void,
49707            >(next_ptr) as *const _;
49708        }
49709        self
49710    }
49711}
49712impl<'a> core::ops::Deref for ImageToMemoryCopyBuilder<'a> {
49713    type Target = ImageToMemoryCopy;
49714    #[inline]
49715    fn deref(&self) -> &Self::Target {
49716        &self.inner
49717    }
49718}
49719impl<'a> core::ops::DerefMut for ImageToMemoryCopyBuilder<'a> {
49720    #[inline]
49721    fn deref_mut(&mut self) -> &mut Self::Target {
49722        &mut self.inner
49723    }
49724}
49725///Builder for [`CopyMemoryToImageInfo`] with lifetime-tied pNext safety.
49726pub struct CopyMemoryToImageInfoBuilder<'a> {
49727    inner: CopyMemoryToImageInfo,
49728    _marker: core::marker::PhantomData<&'a ()>,
49729}
49730impl CopyMemoryToImageInfo {
49731    /// Start building this struct; `s_type` is already set to the correct variant.
49732    #[inline]
49733    pub fn builder<'a>() -> CopyMemoryToImageInfoBuilder<'a> {
49734        CopyMemoryToImageInfoBuilder {
49735            inner: CopyMemoryToImageInfo {
49736                s_type: StructureType::from_raw(1000270005i32),
49737                ..Default::default()
49738            },
49739            _marker: core::marker::PhantomData,
49740        }
49741    }
49742}
49743impl<'a> CopyMemoryToImageInfoBuilder<'a> {
49744    #[inline]
49745    pub fn flags(mut self, value: HostImageCopyFlags) -> Self {
49746        self.inner.flags = value;
49747        self
49748    }
49749    #[inline]
49750    pub fn dst_image(mut self, value: Image) -> Self {
49751        self.inner.dst_image = value;
49752        self
49753    }
49754    #[inline]
49755    pub fn dst_image_layout(mut self, value: ImageLayout) -> Self {
49756        self.inner.dst_image_layout = value;
49757        self
49758    }
49759    #[inline]
49760    pub fn regions(mut self, slice: &'a [MemoryToImageCopy]) -> Self {
49761        self.inner.region_count = slice.len() as u32;
49762        self.inner.p_regions = slice.as_ptr();
49763        self
49764    }
49765    ///Prepend a struct to the pNext chain. See [`CopyMemoryToImageInfo`]'s **Extended By** section for valid types.
49766    #[inline]
49767    pub fn push_next<T: ExtendsCopyMemoryToImageInfo>(
49768        mut self,
49769        next: &'a mut T,
49770    ) -> Self {
49771        unsafe {
49772            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
49773            (*next_ptr).p_next = self.inner.p_next as *mut _;
49774            self.inner.p_next = <*mut BaseOutStructure>::cast::<
49775                core::ffi::c_void,
49776            >(next_ptr) as *const _;
49777        }
49778        self
49779    }
49780}
49781impl<'a> core::ops::Deref for CopyMemoryToImageInfoBuilder<'a> {
49782    type Target = CopyMemoryToImageInfo;
49783    #[inline]
49784    fn deref(&self) -> &Self::Target {
49785        &self.inner
49786    }
49787}
49788impl<'a> core::ops::DerefMut for CopyMemoryToImageInfoBuilder<'a> {
49789    #[inline]
49790    fn deref_mut(&mut self) -> &mut Self::Target {
49791        &mut self.inner
49792    }
49793}
49794///Builder for [`CopyImageToMemoryInfo`] with lifetime-tied pNext safety.
49795pub struct CopyImageToMemoryInfoBuilder<'a> {
49796    inner: CopyImageToMemoryInfo,
49797    _marker: core::marker::PhantomData<&'a ()>,
49798}
49799impl CopyImageToMemoryInfo {
49800    /// Start building this struct; `s_type` is already set to the correct variant.
49801    #[inline]
49802    pub fn builder<'a>() -> CopyImageToMemoryInfoBuilder<'a> {
49803        CopyImageToMemoryInfoBuilder {
49804            inner: CopyImageToMemoryInfo {
49805                s_type: StructureType::from_raw(1000270004i32),
49806                ..Default::default()
49807            },
49808            _marker: core::marker::PhantomData,
49809        }
49810    }
49811}
49812impl<'a> CopyImageToMemoryInfoBuilder<'a> {
49813    #[inline]
49814    pub fn flags(mut self, value: HostImageCopyFlags) -> Self {
49815        self.inner.flags = value;
49816        self
49817    }
49818    #[inline]
49819    pub fn src_image(mut self, value: Image) -> Self {
49820        self.inner.src_image = value;
49821        self
49822    }
49823    #[inline]
49824    pub fn src_image_layout(mut self, value: ImageLayout) -> Self {
49825        self.inner.src_image_layout = value;
49826        self
49827    }
49828    #[inline]
49829    pub fn regions(mut self, slice: &'a [ImageToMemoryCopy]) -> Self {
49830        self.inner.region_count = slice.len() as u32;
49831        self.inner.p_regions = slice.as_ptr();
49832        self
49833    }
49834    ///Prepend a struct to the pNext chain. See [`CopyImageToMemoryInfo`]'s **Extended By** section for valid types.
49835    #[inline]
49836    pub fn push_next<T: ExtendsCopyImageToMemoryInfo>(
49837        mut self,
49838        next: &'a mut T,
49839    ) -> Self {
49840        unsafe {
49841            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
49842            (*next_ptr).p_next = self.inner.p_next as *mut _;
49843            self.inner.p_next = <*mut BaseOutStructure>::cast::<
49844                core::ffi::c_void,
49845            >(next_ptr) as *const _;
49846        }
49847        self
49848    }
49849}
49850impl<'a> core::ops::Deref for CopyImageToMemoryInfoBuilder<'a> {
49851    type Target = CopyImageToMemoryInfo;
49852    #[inline]
49853    fn deref(&self) -> &Self::Target {
49854        &self.inner
49855    }
49856}
49857impl<'a> core::ops::DerefMut for CopyImageToMemoryInfoBuilder<'a> {
49858    #[inline]
49859    fn deref_mut(&mut self) -> &mut Self::Target {
49860        &mut self.inner
49861    }
49862}
49863///Builder for [`CopyImageToImageInfo`] with lifetime-tied pNext safety.
49864pub struct CopyImageToImageInfoBuilder<'a> {
49865    inner: CopyImageToImageInfo,
49866    _marker: core::marker::PhantomData<&'a ()>,
49867}
49868impl CopyImageToImageInfo {
49869    /// Start building this struct; `s_type` is already set to the correct variant.
49870    #[inline]
49871    pub fn builder<'a>() -> CopyImageToImageInfoBuilder<'a> {
49872        CopyImageToImageInfoBuilder {
49873            inner: CopyImageToImageInfo {
49874                s_type: StructureType::from_raw(1000270007i32),
49875                ..Default::default()
49876            },
49877            _marker: core::marker::PhantomData,
49878        }
49879    }
49880}
49881impl<'a> CopyImageToImageInfoBuilder<'a> {
49882    #[inline]
49883    pub fn flags(mut self, value: HostImageCopyFlags) -> Self {
49884        self.inner.flags = value;
49885        self
49886    }
49887    #[inline]
49888    pub fn src_image(mut self, value: Image) -> Self {
49889        self.inner.src_image = value;
49890        self
49891    }
49892    #[inline]
49893    pub fn src_image_layout(mut self, value: ImageLayout) -> Self {
49894        self.inner.src_image_layout = value;
49895        self
49896    }
49897    #[inline]
49898    pub fn dst_image(mut self, value: Image) -> Self {
49899        self.inner.dst_image = value;
49900        self
49901    }
49902    #[inline]
49903    pub fn dst_image_layout(mut self, value: ImageLayout) -> Self {
49904        self.inner.dst_image_layout = value;
49905        self
49906    }
49907    #[inline]
49908    pub fn regions(mut self, slice: &'a [ImageCopy2]) -> Self {
49909        self.inner.region_count = slice.len() as u32;
49910        self.inner.p_regions = slice.as_ptr();
49911        self
49912    }
49913    ///Prepend a struct to the pNext chain. See [`CopyImageToImageInfo`]'s **Extended By** section for valid types.
49914    #[inline]
49915    pub fn push_next<T: ExtendsCopyImageToImageInfo>(mut self, next: &'a mut T) -> Self {
49916        unsafe {
49917            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
49918            (*next_ptr).p_next = self.inner.p_next as *mut _;
49919            self.inner.p_next = <*mut BaseOutStructure>::cast::<
49920                core::ffi::c_void,
49921            >(next_ptr) as *const _;
49922        }
49923        self
49924    }
49925}
49926impl<'a> core::ops::Deref for CopyImageToImageInfoBuilder<'a> {
49927    type Target = CopyImageToImageInfo;
49928    #[inline]
49929    fn deref(&self) -> &Self::Target {
49930        &self.inner
49931    }
49932}
49933impl<'a> core::ops::DerefMut for CopyImageToImageInfoBuilder<'a> {
49934    #[inline]
49935    fn deref_mut(&mut self) -> &mut Self::Target {
49936        &mut self.inner
49937    }
49938}
49939///Builder for [`HostImageLayoutTransitionInfo`] with lifetime-tied pNext safety.
49940pub struct HostImageLayoutTransitionInfoBuilder<'a> {
49941    inner: HostImageLayoutTransitionInfo,
49942    _marker: core::marker::PhantomData<&'a ()>,
49943}
49944impl HostImageLayoutTransitionInfo {
49945    /// Start building this struct; `s_type` is already set to the correct variant.
49946    #[inline]
49947    pub fn builder<'a>() -> HostImageLayoutTransitionInfoBuilder<'a> {
49948        HostImageLayoutTransitionInfoBuilder {
49949            inner: HostImageLayoutTransitionInfo {
49950                s_type: StructureType::from_raw(1000270006i32),
49951                ..Default::default()
49952            },
49953            _marker: core::marker::PhantomData,
49954        }
49955    }
49956}
49957impl<'a> HostImageLayoutTransitionInfoBuilder<'a> {
49958    #[inline]
49959    pub fn image(mut self, value: Image) -> Self {
49960        self.inner.image = value;
49961        self
49962    }
49963    #[inline]
49964    pub fn old_layout(mut self, value: ImageLayout) -> Self {
49965        self.inner.old_layout = value;
49966        self
49967    }
49968    #[inline]
49969    pub fn new_layout(mut self, value: ImageLayout) -> Self {
49970        self.inner.new_layout = value;
49971        self
49972    }
49973    #[inline]
49974    pub fn subresource_range(mut self, value: ImageSubresourceRange) -> Self {
49975        self.inner.subresource_range = value;
49976        self
49977    }
49978    ///Prepend a struct to the pNext chain. See [`HostImageLayoutTransitionInfo`]'s **Extended By** section for valid types.
49979    #[inline]
49980    pub fn push_next<T: ExtendsHostImageLayoutTransitionInfo>(
49981        mut self,
49982        next: &'a mut T,
49983    ) -> Self {
49984        unsafe {
49985            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
49986            (*next_ptr).p_next = self.inner.p_next as *mut _;
49987            self.inner.p_next = <*mut BaseOutStructure>::cast::<
49988                core::ffi::c_void,
49989            >(next_ptr) as *const _;
49990        }
49991        self
49992    }
49993}
49994impl<'a> core::ops::Deref for HostImageLayoutTransitionInfoBuilder<'a> {
49995    type Target = HostImageLayoutTransitionInfo;
49996    #[inline]
49997    fn deref(&self) -> &Self::Target {
49998        &self.inner
49999    }
50000}
50001impl<'a> core::ops::DerefMut for HostImageLayoutTransitionInfoBuilder<'a> {
50002    #[inline]
50003    fn deref_mut(&mut self) -> &mut Self::Target {
50004        &mut self.inner
50005    }
50006}
50007///Builder for [`SubresourceHostMemcpySize`] with lifetime-tied pNext safety.
50008pub struct SubresourceHostMemcpySizeBuilder<'a> {
50009    inner: SubresourceHostMemcpySize,
50010    _marker: core::marker::PhantomData<&'a ()>,
50011}
50012impl SubresourceHostMemcpySize {
50013    /// Start building this struct; `s_type` is already set to the correct variant.
50014    #[inline]
50015    pub fn builder<'a>() -> SubresourceHostMemcpySizeBuilder<'a> {
50016        SubresourceHostMemcpySizeBuilder {
50017            inner: SubresourceHostMemcpySize {
50018                s_type: StructureType::from_raw(1000270008i32),
50019                ..Default::default()
50020            },
50021            _marker: core::marker::PhantomData,
50022        }
50023    }
50024}
50025impl<'a> SubresourceHostMemcpySizeBuilder<'a> {
50026    #[inline]
50027    pub fn size(mut self, value: u64) -> Self {
50028        self.inner.size = value;
50029        self
50030    }
50031}
50032impl<'a> core::ops::Deref for SubresourceHostMemcpySizeBuilder<'a> {
50033    type Target = SubresourceHostMemcpySize;
50034    #[inline]
50035    fn deref(&self) -> &Self::Target {
50036        &self.inner
50037    }
50038}
50039impl<'a> core::ops::DerefMut for SubresourceHostMemcpySizeBuilder<'a> {
50040    #[inline]
50041    fn deref_mut(&mut self) -> &mut Self::Target {
50042        &mut self.inner
50043    }
50044}
50045///Builder for [`HostImageCopyDevicePerformanceQuery`] with lifetime-tied pNext safety.
50046pub struct HostImageCopyDevicePerformanceQueryBuilder<'a> {
50047    inner: HostImageCopyDevicePerformanceQuery,
50048    _marker: core::marker::PhantomData<&'a ()>,
50049}
50050impl HostImageCopyDevicePerformanceQuery {
50051    /// Start building this struct; `s_type` is already set to the correct variant.
50052    #[inline]
50053    pub fn builder<'a>() -> HostImageCopyDevicePerformanceQueryBuilder<'a> {
50054        HostImageCopyDevicePerformanceQueryBuilder {
50055            inner: HostImageCopyDevicePerformanceQuery {
50056                s_type: StructureType::from_raw(1000270009i32),
50057                ..Default::default()
50058            },
50059            _marker: core::marker::PhantomData,
50060        }
50061    }
50062}
50063impl<'a> HostImageCopyDevicePerformanceQueryBuilder<'a> {
50064    #[inline]
50065    pub fn optimal_device_access(mut self, value: bool) -> Self {
50066        self.inner.optimal_device_access = value as u32;
50067        self
50068    }
50069    #[inline]
50070    pub fn identical_memory_layout(mut self, value: bool) -> Self {
50071        self.inner.identical_memory_layout = value as u32;
50072        self
50073    }
50074}
50075impl<'a> core::ops::Deref for HostImageCopyDevicePerformanceQueryBuilder<'a> {
50076    type Target = HostImageCopyDevicePerformanceQuery;
50077    #[inline]
50078    fn deref(&self) -> &Self::Target {
50079        &self.inner
50080    }
50081}
50082impl<'a> core::ops::DerefMut for HostImageCopyDevicePerformanceQueryBuilder<'a> {
50083    #[inline]
50084    fn deref_mut(&mut self) -> &mut Self::Target {
50085        &mut self.inner
50086    }
50087}
50088///Builder for [`PhysicalDeviceVulkanSC10Properties`] with lifetime-tied pNext safety.
50089pub struct PhysicalDeviceVulkanSC10PropertiesBuilder<'a> {
50090    inner: PhysicalDeviceVulkanSC10Properties,
50091    _marker: core::marker::PhantomData<&'a ()>,
50092}
50093impl PhysicalDeviceVulkanSC10Properties {
50094    /// Start building this struct; `s_type` is already set to the correct variant.
50095    #[inline]
50096    pub fn builder<'a>() -> PhysicalDeviceVulkanSC10PropertiesBuilder<'a> {
50097        PhysicalDeviceVulkanSC10PropertiesBuilder {
50098            inner: PhysicalDeviceVulkanSC10Properties {
50099                s_type: StructureType::from_raw(1000298001i32),
50100                ..Default::default()
50101            },
50102            _marker: core::marker::PhantomData,
50103        }
50104    }
50105}
50106impl<'a> PhysicalDeviceVulkanSC10PropertiesBuilder<'a> {
50107    #[inline]
50108    pub fn device_no_dynamic_host_allocations(mut self, value: bool) -> Self {
50109        self.inner.device_no_dynamic_host_allocations = value as u32;
50110        self
50111    }
50112    #[inline]
50113    pub fn device_destroy_frees_memory(mut self, value: bool) -> Self {
50114        self.inner.device_destroy_frees_memory = value as u32;
50115        self
50116    }
50117    #[inline]
50118    pub fn command_pool_multiple_command_buffers_recording(
50119        mut self,
50120        value: bool,
50121    ) -> Self {
50122        self.inner.command_pool_multiple_command_buffers_recording = value as u32;
50123        self
50124    }
50125    #[inline]
50126    pub fn command_pool_reset_command_buffer(mut self, value: bool) -> Self {
50127        self.inner.command_pool_reset_command_buffer = value as u32;
50128        self
50129    }
50130    #[inline]
50131    pub fn command_buffer_simultaneous_use(mut self, value: bool) -> Self {
50132        self.inner.command_buffer_simultaneous_use = value as u32;
50133        self
50134    }
50135    #[inline]
50136    pub fn secondary_command_buffer_null_or_imageless_framebuffer(
50137        mut self,
50138        value: bool,
50139    ) -> Self {
50140        self.inner.secondary_command_buffer_null_or_imageless_framebuffer = value as u32;
50141        self
50142    }
50143    #[inline]
50144    pub fn recycle_descriptor_set_memory(mut self, value: bool) -> Self {
50145        self.inner.recycle_descriptor_set_memory = value as u32;
50146        self
50147    }
50148    #[inline]
50149    pub fn recycle_pipeline_memory(mut self, value: bool) -> Self {
50150        self.inner.recycle_pipeline_memory = value as u32;
50151        self
50152    }
50153    #[inline]
50154    pub fn max_render_pass_subpasses(mut self, value: u32) -> Self {
50155        self.inner.max_render_pass_subpasses = value;
50156        self
50157    }
50158    #[inline]
50159    pub fn max_render_pass_dependencies(mut self, value: u32) -> Self {
50160        self.inner.max_render_pass_dependencies = value;
50161        self
50162    }
50163    #[inline]
50164    pub fn max_subpass_input_attachments(mut self, value: u32) -> Self {
50165        self.inner.max_subpass_input_attachments = value;
50166        self
50167    }
50168    #[inline]
50169    pub fn max_subpass_preserve_attachments(mut self, value: u32) -> Self {
50170        self.inner.max_subpass_preserve_attachments = value;
50171        self
50172    }
50173    #[inline]
50174    pub fn max_framebuffer_attachments(mut self, value: u32) -> Self {
50175        self.inner.max_framebuffer_attachments = value;
50176        self
50177    }
50178    #[inline]
50179    pub fn max_descriptor_set_layout_bindings(mut self, value: u32) -> Self {
50180        self.inner.max_descriptor_set_layout_bindings = value;
50181        self
50182    }
50183    #[inline]
50184    pub fn max_query_fault_count(mut self, value: u32) -> Self {
50185        self.inner.max_query_fault_count = value;
50186        self
50187    }
50188    #[inline]
50189    pub fn max_callback_fault_count(mut self, value: u32) -> Self {
50190        self.inner.max_callback_fault_count = value;
50191        self
50192    }
50193    #[inline]
50194    pub fn max_command_pool_command_buffers(mut self, value: u32) -> Self {
50195        self.inner.max_command_pool_command_buffers = value;
50196        self
50197    }
50198    #[inline]
50199    pub fn max_command_buffer_size(mut self, value: u64) -> Self {
50200        self.inner.max_command_buffer_size = value;
50201        self
50202    }
50203}
50204impl<'a> core::ops::Deref for PhysicalDeviceVulkanSC10PropertiesBuilder<'a> {
50205    type Target = PhysicalDeviceVulkanSC10Properties;
50206    #[inline]
50207    fn deref(&self) -> &Self::Target {
50208        &self.inner
50209    }
50210}
50211impl<'a> core::ops::DerefMut for PhysicalDeviceVulkanSC10PropertiesBuilder<'a> {
50212    #[inline]
50213    fn deref_mut(&mut self) -> &mut Self::Target {
50214        &mut self.inner
50215    }
50216}
50217///Builder for [`PipelinePoolSize`] with lifetime-tied pNext safety.
50218pub struct PipelinePoolSizeBuilder<'a> {
50219    inner: PipelinePoolSize,
50220    _marker: core::marker::PhantomData<&'a ()>,
50221}
50222impl PipelinePoolSize {
50223    /// Start building this struct; `s_type` is already set to the correct variant.
50224    #[inline]
50225    pub fn builder<'a>() -> PipelinePoolSizeBuilder<'a> {
50226        PipelinePoolSizeBuilder {
50227            inner: PipelinePoolSize {
50228                s_type: StructureType::from_raw(1000298005i32),
50229                ..Default::default()
50230            },
50231            _marker: core::marker::PhantomData,
50232        }
50233    }
50234}
50235impl<'a> PipelinePoolSizeBuilder<'a> {
50236    #[inline]
50237    pub fn pool_entry_size(mut self, value: u64) -> Self {
50238        self.inner.pool_entry_size = value;
50239        self
50240    }
50241    #[inline]
50242    pub fn pool_entry_count(mut self, value: u32) -> Self {
50243        self.inner.pool_entry_count = value;
50244        self
50245    }
50246    ///Prepend a struct to the pNext chain. See [`PipelinePoolSize`]'s **Extended By** section for valid types.
50247    #[inline]
50248    pub fn push_next<T: ExtendsPipelinePoolSize>(mut self, next: &'a mut T) -> Self {
50249        unsafe {
50250            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
50251            (*next_ptr).p_next = self.inner.p_next as *mut _;
50252            self.inner.p_next = <*mut BaseOutStructure>::cast::<
50253                core::ffi::c_void,
50254            >(next_ptr) as *const _;
50255        }
50256        self
50257    }
50258}
50259impl<'a> core::ops::Deref for PipelinePoolSizeBuilder<'a> {
50260    type Target = PipelinePoolSize;
50261    #[inline]
50262    fn deref(&self) -> &Self::Target {
50263        &self.inner
50264    }
50265}
50266impl<'a> core::ops::DerefMut for PipelinePoolSizeBuilder<'a> {
50267    #[inline]
50268    fn deref_mut(&mut self) -> &mut Self::Target {
50269        &mut self.inner
50270    }
50271}
50272///Builder for [`DeviceObjectReservationCreateInfo`] with lifetime-tied pNext safety.
50273pub struct DeviceObjectReservationCreateInfoBuilder<'a> {
50274    inner: DeviceObjectReservationCreateInfo,
50275    _marker: core::marker::PhantomData<&'a ()>,
50276}
50277impl DeviceObjectReservationCreateInfo {
50278    /// Start building this struct; `s_type` is already set to the correct variant.
50279    #[inline]
50280    pub fn builder<'a>() -> DeviceObjectReservationCreateInfoBuilder<'a> {
50281        DeviceObjectReservationCreateInfoBuilder {
50282            inner: DeviceObjectReservationCreateInfo {
50283                s_type: StructureType::from_raw(1000298002i32),
50284                ..Default::default()
50285            },
50286            _marker: core::marker::PhantomData,
50287        }
50288    }
50289}
50290impl<'a> DeviceObjectReservationCreateInfoBuilder<'a> {
50291    #[inline]
50292    pub fn pipeline_cache_create_infos(
50293        mut self,
50294        slice: &'a [PipelineCacheCreateInfo],
50295    ) -> Self {
50296        self.inner.pipeline_cache_create_info_count = slice.len() as u32;
50297        self.inner.p_pipeline_cache_create_infos = slice.as_ptr();
50298        self
50299    }
50300    #[inline]
50301    pub fn pipeline_pool_sizes(mut self, slice: &'a [PipelinePoolSize]) -> Self {
50302        self.inner.pipeline_pool_size_count = slice.len() as u32;
50303        self.inner.p_pipeline_pool_sizes = slice.as_ptr();
50304        self
50305    }
50306    #[inline]
50307    pub fn semaphore_request_count(mut self, value: u32) -> Self {
50308        self.inner.semaphore_request_count = value;
50309        self
50310    }
50311    #[inline]
50312    pub fn command_buffer_request_count(mut self, value: u32) -> Self {
50313        self.inner.command_buffer_request_count = value;
50314        self
50315    }
50316    #[inline]
50317    pub fn fence_request_count(mut self, value: u32) -> Self {
50318        self.inner.fence_request_count = value;
50319        self
50320    }
50321    #[inline]
50322    pub fn device_memory_request_count(mut self, value: u32) -> Self {
50323        self.inner.device_memory_request_count = value;
50324        self
50325    }
50326    #[inline]
50327    pub fn buffer_request_count(mut self, value: u32) -> Self {
50328        self.inner.buffer_request_count = value;
50329        self
50330    }
50331    #[inline]
50332    pub fn image_request_count(mut self, value: u32) -> Self {
50333        self.inner.image_request_count = value;
50334        self
50335    }
50336    #[inline]
50337    pub fn event_request_count(mut self, value: u32) -> Self {
50338        self.inner.event_request_count = value;
50339        self
50340    }
50341    #[inline]
50342    pub fn query_pool_request_count(mut self, value: u32) -> Self {
50343        self.inner.query_pool_request_count = value;
50344        self
50345    }
50346    #[inline]
50347    pub fn buffer_view_request_count(mut self, value: u32) -> Self {
50348        self.inner.buffer_view_request_count = value;
50349        self
50350    }
50351    #[inline]
50352    pub fn image_view_request_count(mut self, value: u32) -> Self {
50353        self.inner.image_view_request_count = value;
50354        self
50355    }
50356    #[inline]
50357    pub fn layered_image_view_request_count(mut self, value: u32) -> Self {
50358        self.inner.layered_image_view_request_count = value;
50359        self
50360    }
50361    #[inline]
50362    pub fn pipeline_cache_request_count(mut self, value: u32) -> Self {
50363        self.inner.pipeline_cache_request_count = value;
50364        self
50365    }
50366    #[inline]
50367    pub fn pipeline_layout_request_count(mut self, value: u32) -> Self {
50368        self.inner.pipeline_layout_request_count = value;
50369        self
50370    }
50371    #[inline]
50372    pub fn render_pass_request_count(mut self, value: u32) -> Self {
50373        self.inner.render_pass_request_count = value;
50374        self
50375    }
50376    #[inline]
50377    pub fn graphics_pipeline_request_count(mut self, value: u32) -> Self {
50378        self.inner.graphics_pipeline_request_count = value;
50379        self
50380    }
50381    #[inline]
50382    pub fn compute_pipeline_request_count(mut self, value: u32) -> Self {
50383        self.inner.compute_pipeline_request_count = value;
50384        self
50385    }
50386    #[inline]
50387    pub fn descriptor_set_layout_request_count(mut self, value: u32) -> Self {
50388        self.inner.descriptor_set_layout_request_count = value;
50389        self
50390    }
50391    #[inline]
50392    pub fn sampler_request_count(mut self, value: u32) -> Self {
50393        self.inner.sampler_request_count = value;
50394        self
50395    }
50396    #[inline]
50397    pub fn descriptor_pool_request_count(mut self, value: u32) -> Self {
50398        self.inner.descriptor_pool_request_count = value;
50399        self
50400    }
50401    #[inline]
50402    pub fn descriptor_set_request_count(mut self, value: u32) -> Self {
50403        self.inner.descriptor_set_request_count = value;
50404        self
50405    }
50406    #[inline]
50407    pub fn framebuffer_request_count(mut self, value: u32) -> Self {
50408        self.inner.framebuffer_request_count = value;
50409        self
50410    }
50411    #[inline]
50412    pub fn command_pool_request_count(mut self, value: u32) -> Self {
50413        self.inner.command_pool_request_count = value;
50414        self
50415    }
50416    #[inline]
50417    pub fn sampler_ycbcr_conversion_request_count(mut self, value: u32) -> Self {
50418        self.inner.sampler_ycbcr_conversion_request_count = value;
50419        self
50420    }
50421    #[inline]
50422    pub fn surface_request_count(mut self, value: u32) -> Self {
50423        self.inner.surface_request_count = value;
50424        self
50425    }
50426    #[inline]
50427    pub fn swapchain_request_count(mut self, value: u32) -> Self {
50428        self.inner.swapchain_request_count = value;
50429        self
50430    }
50431    #[inline]
50432    pub fn display_mode_request_count(mut self, value: u32) -> Self {
50433        self.inner.display_mode_request_count = value;
50434        self
50435    }
50436    #[inline]
50437    pub fn subpass_description_request_count(mut self, value: u32) -> Self {
50438        self.inner.subpass_description_request_count = value;
50439        self
50440    }
50441    #[inline]
50442    pub fn attachment_description_request_count(mut self, value: u32) -> Self {
50443        self.inner.attachment_description_request_count = value;
50444        self
50445    }
50446    #[inline]
50447    pub fn descriptor_set_layout_binding_request_count(mut self, value: u32) -> Self {
50448        self.inner.descriptor_set_layout_binding_request_count = value;
50449        self
50450    }
50451    #[inline]
50452    pub fn descriptor_set_layout_binding_limit(mut self, value: u32) -> Self {
50453        self.inner.descriptor_set_layout_binding_limit = value;
50454        self
50455    }
50456    #[inline]
50457    pub fn max_image_view_mip_levels(mut self, value: u32) -> Self {
50458        self.inner.max_image_view_mip_levels = value;
50459        self
50460    }
50461    #[inline]
50462    pub fn max_image_view_array_layers(mut self, value: u32) -> Self {
50463        self.inner.max_image_view_array_layers = value;
50464        self
50465    }
50466    #[inline]
50467    pub fn max_layered_image_view_mip_levels(mut self, value: u32) -> Self {
50468        self.inner.max_layered_image_view_mip_levels = value;
50469        self
50470    }
50471    #[inline]
50472    pub fn max_occlusion_queries_per_pool(mut self, value: u32) -> Self {
50473        self.inner.max_occlusion_queries_per_pool = value;
50474        self
50475    }
50476    #[inline]
50477    pub fn max_pipeline_statistics_queries_per_pool(mut self, value: u32) -> Self {
50478        self.inner.max_pipeline_statistics_queries_per_pool = value;
50479        self
50480    }
50481    #[inline]
50482    pub fn max_timestamp_queries_per_pool(mut self, value: u32) -> Self {
50483        self.inner.max_timestamp_queries_per_pool = value;
50484        self
50485    }
50486    #[inline]
50487    pub fn max_immutable_samplers_per_descriptor_set_layout(
50488        mut self,
50489        value: u32,
50490    ) -> Self {
50491        self.inner.max_immutable_samplers_per_descriptor_set_layout = value;
50492        self
50493    }
50494    ///Prepend a struct to the pNext chain. See [`DeviceObjectReservationCreateInfo`]'s **Extended By** section for valid types.
50495    #[inline]
50496    pub fn push_next<T: ExtendsDeviceObjectReservationCreateInfo>(
50497        mut self,
50498        next: &'a mut T,
50499    ) -> Self {
50500        unsafe {
50501            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
50502            (*next_ptr).p_next = self.inner.p_next as *mut _;
50503            self.inner.p_next = <*mut BaseOutStructure>::cast::<
50504                core::ffi::c_void,
50505            >(next_ptr) as *const _;
50506        }
50507        self
50508    }
50509}
50510impl<'a> core::ops::Deref for DeviceObjectReservationCreateInfoBuilder<'a> {
50511    type Target = DeviceObjectReservationCreateInfo;
50512    #[inline]
50513    fn deref(&self) -> &Self::Target {
50514        &self.inner
50515    }
50516}
50517impl<'a> core::ops::DerefMut for DeviceObjectReservationCreateInfoBuilder<'a> {
50518    #[inline]
50519    fn deref_mut(&mut self) -> &mut Self::Target {
50520        &mut self.inner
50521    }
50522}
50523///Builder for [`CommandPoolMemoryReservationCreateInfo`] with lifetime-tied pNext safety.
50524pub struct CommandPoolMemoryReservationCreateInfoBuilder<'a> {
50525    inner: CommandPoolMemoryReservationCreateInfo,
50526    _marker: core::marker::PhantomData<&'a ()>,
50527}
50528impl CommandPoolMemoryReservationCreateInfo {
50529    /// Start building this struct; `s_type` is already set to the correct variant.
50530    #[inline]
50531    pub fn builder<'a>() -> CommandPoolMemoryReservationCreateInfoBuilder<'a> {
50532        CommandPoolMemoryReservationCreateInfoBuilder {
50533            inner: CommandPoolMemoryReservationCreateInfo {
50534                s_type: StructureType::from_raw(1000298003i32),
50535                ..Default::default()
50536            },
50537            _marker: core::marker::PhantomData,
50538        }
50539    }
50540}
50541impl<'a> CommandPoolMemoryReservationCreateInfoBuilder<'a> {
50542    #[inline]
50543    pub fn command_pool_reserved_size(mut self, value: u64) -> Self {
50544        self.inner.command_pool_reserved_size = value;
50545        self
50546    }
50547    #[inline]
50548    pub fn command_pool_max_command_buffers(mut self, value: u32) -> Self {
50549        self.inner.command_pool_max_command_buffers = value;
50550        self
50551    }
50552    ///Prepend a struct to the pNext chain. See [`CommandPoolMemoryReservationCreateInfo`]'s **Extended By** section for valid types.
50553    #[inline]
50554    pub fn push_next<T: ExtendsCommandPoolMemoryReservationCreateInfo>(
50555        mut self,
50556        next: &'a mut T,
50557    ) -> Self {
50558        unsafe {
50559            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
50560            (*next_ptr).p_next = self.inner.p_next as *mut _;
50561            self.inner.p_next = <*mut BaseOutStructure>::cast::<
50562                core::ffi::c_void,
50563            >(next_ptr) as *const _;
50564        }
50565        self
50566    }
50567}
50568impl<'a> core::ops::Deref for CommandPoolMemoryReservationCreateInfoBuilder<'a> {
50569    type Target = CommandPoolMemoryReservationCreateInfo;
50570    #[inline]
50571    fn deref(&self) -> &Self::Target {
50572        &self.inner
50573    }
50574}
50575impl<'a> core::ops::DerefMut for CommandPoolMemoryReservationCreateInfoBuilder<'a> {
50576    #[inline]
50577    fn deref_mut(&mut self) -> &mut Self::Target {
50578        &mut self.inner
50579    }
50580}
50581///Builder for [`CommandPoolMemoryConsumption`] with lifetime-tied pNext safety.
50582pub struct CommandPoolMemoryConsumptionBuilder<'a> {
50583    inner: CommandPoolMemoryConsumption,
50584    _marker: core::marker::PhantomData<&'a ()>,
50585}
50586impl CommandPoolMemoryConsumption {
50587    /// Start building this struct; `s_type` is already set to the correct variant.
50588    #[inline]
50589    pub fn builder<'a>() -> CommandPoolMemoryConsumptionBuilder<'a> {
50590        CommandPoolMemoryConsumptionBuilder {
50591            inner: CommandPoolMemoryConsumption {
50592                s_type: StructureType::from_raw(1000298004i32),
50593                ..Default::default()
50594            },
50595            _marker: core::marker::PhantomData,
50596        }
50597    }
50598}
50599impl<'a> CommandPoolMemoryConsumptionBuilder<'a> {
50600    #[inline]
50601    pub fn command_pool_allocated(mut self, value: u64) -> Self {
50602        self.inner.command_pool_allocated = value;
50603        self
50604    }
50605    #[inline]
50606    pub fn command_pool_reserved_size(mut self, value: u64) -> Self {
50607        self.inner.command_pool_reserved_size = value;
50608        self
50609    }
50610    #[inline]
50611    pub fn command_buffer_allocated(mut self, value: u64) -> Self {
50612        self.inner.command_buffer_allocated = value;
50613        self
50614    }
50615}
50616impl<'a> core::ops::Deref for CommandPoolMemoryConsumptionBuilder<'a> {
50617    type Target = CommandPoolMemoryConsumption;
50618    #[inline]
50619    fn deref(&self) -> &Self::Target {
50620        &self.inner
50621    }
50622}
50623impl<'a> core::ops::DerefMut for CommandPoolMemoryConsumptionBuilder<'a> {
50624    #[inline]
50625    fn deref_mut(&mut self) -> &mut Self::Target {
50626        &mut self.inner
50627    }
50628}
50629///Builder for [`PhysicalDeviceVulkanSC10Features`] with lifetime-tied pNext safety.
50630pub struct PhysicalDeviceVulkanSC10FeaturesBuilder<'a> {
50631    inner: PhysicalDeviceVulkanSC10Features,
50632    _marker: core::marker::PhantomData<&'a ()>,
50633}
50634impl PhysicalDeviceVulkanSC10Features {
50635    /// Start building this struct; `s_type` is already set to the correct variant.
50636    #[inline]
50637    pub fn builder<'a>() -> PhysicalDeviceVulkanSC10FeaturesBuilder<'a> {
50638        PhysicalDeviceVulkanSC10FeaturesBuilder {
50639            inner: PhysicalDeviceVulkanSC10Features {
50640                s_type: StructureType::from_raw(1000298000i32),
50641                ..Default::default()
50642            },
50643            _marker: core::marker::PhantomData,
50644        }
50645    }
50646}
50647impl<'a> PhysicalDeviceVulkanSC10FeaturesBuilder<'a> {
50648    #[inline]
50649    pub fn shader_atomic_instructions(mut self, value: bool) -> Self {
50650        self.inner.shader_atomic_instructions = value as u32;
50651        self
50652    }
50653    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceVulkanSC10Features`]'s **Extended By** section for valid types.
50654    #[inline]
50655    pub fn push_next<T: ExtendsPhysicalDeviceVulkanSC10Features>(
50656        mut self,
50657        next: &'a mut T,
50658    ) -> Self {
50659        unsafe {
50660            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
50661            (*next_ptr).p_next = self.inner.p_next as *mut _;
50662            self.inner.p_next = <*mut BaseOutStructure>::cast::<
50663                core::ffi::c_void,
50664            >(next_ptr);
50665        }
50666        self
50667    }
50668}
50669impl<'a> core::ops::Deref for PhysicalDeviceVulkanSC10FeaturesBuilder<'a> {
50670    type Target = PhysicalDeviceVulkanSC10Features;
50671    #[inline]
50672    fn deref(&self) -> &Self::Target {
50673        &self.inner
50674    }
50675}
50676impl<'a> core::ops::DerefMut for PhysicalDeviceVulkanSC10FeaturesBuilder<'a> {
50677    #[inline]
50678    fn deref_mut(&mut self) -> &mut Self::Target {
50679        &mut self.inner
50680    }
50681}
50682///Builder for [`PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT`] with lifetime-tied pNext safety.
50683pub struct PhysicalDevicePrimitivesGeneratedQueryFeaturesEXTBuilder<'a> {
50684    inner: PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT,
50685    _marker: core::marker::PhantomData<&'a ()>,
50686}
50687impl PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
50688    /// Start building this struct; `s_type` is already set to the correct variant.
50689    #[inline]
50690    pub fn builder<'a>() -> PhysicalDevicePrimitivesGeneratedQueryFeaturesEXTBuilder<
50691        'a,
50692    > {
50693        PhysicalDevicePrimitivesGeneratedQueryFeaturesEXTBuilder {
50694            inner: PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
50695                s_type: StructureType::from_raw(1000382000i32),
50696                ..Default::default()
50697            },
50698            _marker: core::marker::PhantomData,
50699        }
50700    }
50701}
50702impl<'a> PhysicalDevicePrimitivesGeneratedQueryFeaturesEXTBuilder<'a> {
50703    #[inline]
50704    pub fn primitives_generated_query(mut self, value: bool) -> Self {
50705        self.inner.primitives_generated_query = value as u32;
50706        self
50707    }
50708    #[inline]
50709    pub fn primitives_generated_query_with_rasterizer_discard(
50710        mut self,
50711        value: bool,
50712    ) -> Self {
50713        self.inner.primitives_generated_query_with_rasterizer_discard = value as u32;
50714        self
50715    }
50716    #[inline]
50717    pub fn primitives_generated_query_with_non_zero_streams(
50718        mut self,
50719        value: bool,
50720    ) -> Self {
50721        self.inner.primitives_generated_query_with_non_zero_streams = value as u32;
50722        self
50723    }
50724    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT`]'s **Extended By** section for valid types.
50725    #[inline]
50726    pub fn push_next<T: ExtendsPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT>(
50727        mut self,
50728        next: &'a mut T,
50729    ) -> Self {
50730        unsafe {
50731            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
50732            (*next_ptr).p_next = self.inner.p_next as *mut _;
50733            self.inner.p_next = <*mut BaseOutStructure>::cast::<
50734                core::ffi::c_void,
50735            >(next_ptr);
50736        }
50737        self
50738    }
50739}
50740impl<'a> core::ops::Deref
50741for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXTBuilder<'a> {
50742    type Target = PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT;
50743    #[inline]
50744    fn deref(&self) -> &Self::Target {
50745        &self.inner
50746    }
50747}
50748impl<'a> core::ops::DerefMut
50749for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXTBuilder<'a> {
50750    #[inline]
50751    fn deref_mut(&mut self) -> &mut Self::Target {
50752        &mut self.inner
50753    }
50754}
50755///Builder for [`PhysicalDeviceLegacyDitheringFeaturesEXT`] with lifetime-tied pNext safety.
50756pub struct PhysicalDeviceLegacyDitheringFeaturesEXTBuilder<'a> {
50757    inner: PhysicalDeviceLegacyDitheringFeaturesEXT,
50758    _marker: core::marker::PhantomData<&'a ()>,
50759}
50760impl PhysicalDeviceLegacyDitheringFeaturesEXT {
50761    /// Start building this struct; `s_type` is already set to the correct variant.
50762    #[inline]
50763    pub fn builder<'a>() -> PhysicalDeviceLegacyDitheringFeaturesEXTBuilder<'a> {
50764        PhysicalDeviceLegacyDitheringFeaturesEXTBuilder {
50765            inner: PhysicalDeviceLegacyDitheringFeaturesEXT {
50766                s_type: StructureType::from_raw(1000465000i32),
50767                ..Default::default()
50768            },
50769            _marker: core::marker::PhantomData,
50770        }
50771    }
50772}
50773impl<'a> PhysicalDeviceLegacyDitheringFeaturesEXTBuilder<'a> {
50774    #[inline]
50775    pub fn legacy_dithering(mut self, value: bool) -> Self {
50776        self.inner.legacy_dithering = value as u32;
50777        self
50778    }
50779    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceLegacyDitheringFeaturesEXT`]'s **Extended By** section for valid types.
50780    #[inline]
50781    pub fn push_next<T: ExtendsPhysicalDeviceLegacyDitheringFeaturesEXT>(
50782        mut self,
50783        next: &'a mut T,
50784    ) -> Self {
50785        unsafe {
50786            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
50787            (*next_ptr).p_next = self.inner.p_next as *mut _;
50788            self.inner.p_next = <*mut BaseOutStructure>::cast::<
50789                core::ffi::c_void,
50790            >(next_ptr);
50791        }
50792        self
50793    }
50794}
50795impl<'a> core::ops::Deref for PhysicalDeviceLegacyDitheringFeaturesEXTBuilder<'a> {
50796    type Target = PhysicalDeviceLegacyDitheringFeaturesEXT;
50797    #[inline]
50798    fn deref(&self) -> &Self::Target {
50799        &self.inner
50800    }
50801}
50802impl<'a> core::ops::DerefMut for PhysicalDeviceLegacyDitheringFeaturesEXTBuilder<'a> {
50803    #[inline]
50804    fn deref_mut(&mut self) -> &mut Self::Target {
50805        &mut self.inner
50806    }
50807}
50808///Builder for [`PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT`] with lifetime-tied pNext safety.
50809pub struct PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXTBuilder<'a> {
50810    inner: PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT,
50811    _marker: core::marker::PhantomData<&'a ()>,
50812}
50813impl PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
50814    /// Start building this struct; `s_type` is already set to the correct variant.
50815    #[inline]
50816    pub fn builder<'a>() -> PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXTBuilder<
50817        'a,
50818    > {
50819        PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXTBuilder {
50820            inner: PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
50821                s_type: StructureType::from_raw(1000376000i32),
50822                ..Default::default()
50823            },
50824            _marker: core::marker::PhantomData,
50825        }
50826    }
50827}
50828impl<'a> PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXTBuilder<'a> {
50829    #[inline]
50830    pub fn multisampled_render_to_single_sampled(mut self, value: bool) -> Self {
50831        self.inner.multisampled_render_to_single_sampled = value as u32;
50832        self
50833    }
50834    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT`]'s **Extended By** section for valid types.
50835    #[inline]
50836    pub fn push_next<
50837        T: ExtendsPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT,
50838    >(mut self, next: &'a mut T) -> Self {
50839        unsafe {
50840            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
50841            (*next_ptr).p_next = self.inner.p_next as *mut _;
50842            self.inner.p_next = <*mut BaseOutStructure>::cast::<
50843                core::ffi::c_void,
50844            >(next_ptr);
50845        }
50846        self
50847    }
50848}
50849impl<'a> core::ops::Deref
50850for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXTBuilder<'a> {
50851    type Target = PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT;
50852    #[inline]
50853    fn deref(&self) -> &Self::Target {
50854        &self.inner
50855    }
50856}
50857impl<'a> core::ops::DerefMut
50858for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXTBuilder<'a> {
50859    #[inline]
50860    fn deref_mut(&mut self) -> &mut Self::Target {
50861        &mut self.inner
50862    }
50863}
50864///Builder for [`SurfaceCapabilitiesPresentId2KHR`] with lifetime-tied pNext safety.
50865pub struct SurfaceCapabilitiesPresentId2KHRBuilder<'a> {
50866    inner: SurfaceCapabilitiesPresentId2KHR,
50867    _marker: core::marker::PhantomData<&'a ()>,
50868}
50869impl SurfaceCapabilitiesPresentId2KHR {
50870    /// Start building this struct; `s_type` is already set to the correct variant.
50871    #[inline]
50872    pub fn builder<'a>() -> SurfaceCapabilitiesPresentId2KHRBuilder<'a> {
50873        SurfaceCapabilitiesPresentId2KHRBuilder {
50874            inner: SurfaceCapabilitiesPresentId2KHR {
50875                s_type: StructureType::from_raw(1000479000i32),
50876                ..Default::default()
50877            },
50878            _marker: core::marker::PhantomData,
50879        }
50880    }
50881}
50882impl<'a> SurfaceCapabilitiesPresentId2KHRBuilder<'a> {
50883    #[inline]
50884    pub fn present_id2_supported(mut self, value: bool) -> Self {
50885        self.inner.present_id2_supported = value as u32;
50886        self
50887    }
50888    ///Prepend a struct to the pNext chain. See [`SurfaceCapabilitiesPresentId2KHR`]'s **Extended By** section for valid types.
50889    #[inline]
50890    pub fn push_next<T: ExtendsSurfaceCapabilitiesPresentId2KHR>(
50891        mut self,
50892        next: &'a mut T,
50893    ) -> Self {
50894        unsafe {
50895            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
50896            (*next_ptr).p_next = self.inner.p_next as *mut _;
50897            self.inner.p_next = <*mut BaseOutStructure>::cast::<
50898                core::ffi::c_void,
50899            >(next_ptr);
50900        }
50901        self
50902    }
50903}
50904impl<'a> core::ops::Deref for SurfaceCapabilitiesPresentId2KHRBuilder<'a> {
50905    type Target = SurfaceCapabilitiesPresentId2KHR;
50906    #[inline]
50907    fn deref(&self) -> &Self::Target {
50908        &self.inner
50909    }
50910}
50911impl<'a> core::ops::DerefMut for SurfaceCapabilitiesPresentId2KHRBuilder<'a> {
50912    #[inline]
50913    fn deref_mut(&mut self) -> &mut Self::Target {
50914        &mut self.inner
50915    }
50916}
50917///Builder for [`SurfaceCapabilitiesPresentWait2KHR`] with lifetime-tied pNext safety.
50918pub struct SurfaceCapabilitiesPresentWait2KHRBuilder<'a> {
50919    inner: SurfaceCapabilitiesPresentWait2KHR,
50920    _marker: core::marker::PhantomData<&'a ()>,
50921}
50922impl SurfaceCapabilitiesPresentWait2KHR {
50923    /// Start building this struct; `s_type` is already set to the correct variant.
50924    #[inline]
50925    pub fn builder<'a>() -> SurfaceCapabilitiesPresentWait2KHRBuilder<'a> {
50926        SurfaceCapabilitiesPresentWait2KHRBuilder {
50927            inner: SurfaceCapabilitiesPresentWait2KHR {
50928                s_type: StructureType::from_raw(1000480000i32),
50929                ..Default::default()
50930            },
50931            _marker: core::marker::PhantomData,
50932        }
50933    }
50934}
50935impl<'a> SurfaceCapabilitiesPresentWait2KHRBuilder<'a> {
50936    #[inline]
50937    pub fn present_wait2_supported(mut self, value: bool) -> Self {
50938        self.inner.present_wait2_supported = value as u32;
50939        self
50940    }
50941    ///Prepend a struct to the pNext chain. See [`SurfaceCapabilitiesPresentWait2KHR`]'s **Extended By** section for valid types.
50942    #[inline]
50943    pub fn push_next<T: ExtendsSurfaceCapabilitiesPresentWait2KHR>(
50944        mut self,
50945        next: &'a mut T,
50946    ) -> Self {
50947        unsafe {
50948            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
50949            (*next_ptr).p_next = self.inner.p_next as *mut _;
50950            self.inner.p_next = <*mut BaseOutStructure>::cast::<
50951                core::ffi::c_void,
50952            >(next_ptr);
50953        }
50954        self
50955    }
50956}
50957impl<'a> core::ops::Deref for SurfaceCapabilitiesPresentWait2KHRBuilder<'a> {
50958    type Target = SurfaceCapabilitiesPresentWait2KHR;
50959    #[inline]
50960    fn deref(&self) -> &Self::Target {
50961        &self.inner
50962    }
50963}
50964impl<'a> core::ops::DerefMut for SurfaceCapabilitiesPresentWait2KHRBuilder<'a> {
50965    #[inline]
50966    fn deref_mut(&mut self) -> &mut Self::Target {
50967        &mut self.inner
50968    }
50969}
50970///Builder for [`SubpassResolvePerformanceQueryEXT`] with lifetime-tied pNext safety.
50971pub struct SubpassResolvePerformanceQueryEXTBuilder<'a> {
50972    inner: SubpassResolvePerformanceQueryEXT,
50973    _marker: core::marker::PhantomData<&'a ()>,
50974}
50975impl SubpassResolvePerformanceQueryEXT {
50976    /// Start building this struct; `s_type` is already set to the correct variant.
50977    #[inline]
50978    pub fn builder<'a>() -> SubpassResolvePerformanceQueryEXTBuilder<'a> {
50979        SubpassResolvePerformanceQueryEXTBuilder {
50980            inner: SubpassResolvePerformanceQueryEXT {
50981                s_type: StructureType::from_raw(1000376001i32),
50982                ..Default::default()
50983            },
50984            _marker: core::marker::PhantomData,
50985        }
50986    }
50987}
50988impl<'a> SubpassResolvePerformanceQueryEXTBuilder<'a> {
50989    #[inline]
50990    pub fn optimal(mut self, value: bool) -> Self {
50991        self.inner.optimal = value as u32;
50992        self
50993    }
50994}
50995impl<'a> core::ops::Deref for SubpassResolvePerformanceQueryEXTBuilder<'a> {
50996    type Target = SubpassResolvePerformanceQueryEXT;
50997    #[inline]
50998    fn deref(&self) -> &Self::Target {
50999        &self.inner
51000    }
51001}
51002impl<'a> core::ops::DerefMut for SubpassResolvePerformanceQueryEXTBuilder<'a> {
51003    #[inline]
51004    fn deref_mut(&mut self) -> &mut Self::Target {
51005        &mut self.inner
51006    }
51007}
51008///Builder for [`MultisampledRenderToSingleSampledInfoEXT`] with lifetime-tied pNext safety.
51009pub struct MultisampledRenderToSingleSampledInfoEXTBuilder<'a> {
51010    inner: MultisampledRenderToSingleSampledInfoEXT,
51011    _marker: core::marker::PhantomData<&'a ()>,
51012}
51013impl MultisampledRenderToSingleSampledInfoEXT {
51014    /// Start building this struct; `s_type` is already set to the correct variant.
51015    #[inline]
51016    pub fn builder<'a>() -> MultisampledRenderToSingleSampledInfoEXTBuilder<'a> {
51017        MultisampledRenderToSingleSampledInfoEXTBuilder {
51018            inner: MultisampledRenderToSingleSampledInfoEXT {
51019                s_type: StructureType::from_raw(1000376002i32),
51020                ..Default::default()
51021            },
51022            _marker: core::marker::PhantomData,
51023        }
51024    }
51025}
51026impl<'a> MultisampledRenderToSingleSampledInfoEXTBuilder<'a> {
51027    #[inline]
51028    pub fn multisampled_render_to_single_sampled_enable(mut self, value: bool) -> Self {
51029        self.inner.multisampled_render_to_single_sampled_enable = value as u32;
51030        self
51031    }
51032    #[inline]
51033    pub fn rasterization_samples(mut self, value: SampleCountFlagBits) -> Self {
51034        self.inner.rasterization_samples = value;
51035        self
51036    }
51037    ///Prepend a struct to the pNext chain. See [`MultisampledRenderToSingleSampledInfoEXT`]'s **Extended By** section for valid types.
51038    #[inline]
51039    pub fn push_next<T: ExtendsMultisampledRenderToSingleSampledInfoEXT>(
51040        mut self,
51041        next: &'a mut T,
51042    ) -> Self {
51043        unsafe {
51044            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
51045            (*next_ptr).p_next = self.inner.p_next as *mut _;
51046            self.inner.p_next = <*mut BaseOutStructure>::cast::<
51047                core::ffi::c_void,
51048            >(next_ptr) as *const _;
51049        }
51050        self
51051    }
51052}
51053impl<'a> core::ops::Deref for MultisampledRenderToSingleSampledInfoEXTBuilder<'a> {
51054    type Target = MultisampledRenderToSingleSampledInfoEXT;
51055    #[inline]
51056    fn deref(&self) -> &Self::Target {
51057        &self.inner
51058    }
51059}
51060impl<'a> core::ops::DerefMut for MultisampledRenderToSingleSampledInfoEXTBuilder<'a> {
51061    #[inline]
51062    fn deref_mut(&mut self) -> &mut Self::Target {
51063        &mut self.inner
51064    }
51065}
51066///Builder for [`PhysicalDevicePipelineProtectedAccessFeatures`] with lifetime-tied pNext safety.
51067pub struct PhysicalDevicePipelineProtectedAccessFeaturesBuilder<'a> {
51068    inner: PhysicalDevicePipelineProtectedAccessFeatures,
51069    _marker: core::marker::PhantomData<&'a ()>,
51070}
51071impl PhysicalDevicePipelineProtectedAccessFeatures {
51072    /// Start building this struct; `s_type` is already set to the correct variant.
51073    #[inline]
51074    pub fn builder<'a>() -> PhysicalDevicePipelineProtectedAccessFeaturesBuilder<'a> {
51075        PhysicalDevicePipelineProtectedAccessFeaturesBuilder {
51076            inner: PhysicalDevicePipelineProtectedAccessFeatures {
51077                s_type: StructureType::from_raw(1000466000i32),
51078                ..Default::default()
51079            },
51080            _marker: core::marker::PhantomData,
51081        }
51082    }
51083}
51084impl<'a> PhysicalDevicePipelineProtectedAccessFeaturesBuilder<'a> {
51085    #[inline]
51086    pub fn pipeline_protected_access(mut self, value: bool) -> Self {
51087        self.inner.pipeline_protected_access = value as u32;
51088        self
51089    }
51090    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePipelineProtectedAccessFeatures`]'s **Extended By** section for valid types.
51091    #[inline]
51092    pub fn push_next<T: ExtendsPhysicalDevicePipelineProtectedAccessFeatures>(
51093        mut self,
51094        next: &'a mut T,
51095    ) -> Self {
51096        unsafe {
51097            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
51098            (*next_ptr).p_next = self.inner.p_next as *mut _;
51099            self.inner.p_next = <*mut BaseOutStructure>::cast::<
51100                core::ffi::c_void,
51101            >(next_ptr);
51102        }
51103        self
51104    }
51105}
51106impl<'a> core::ops::Deref for PhysicalDevicePipelineProtectedAccessFeaturesBuilder<'a> {
51107    type Target = PhysicalDevicePipelineProtectedAccessFeatures;
51108    #[inline]
51109    fn deref(&self) -> &Self::Target {
51110        &self.inner
51111    }
51112}
51113impl<'a> core::ops::DerefMut
51114for PhysicalDevicePipelineProtectedAccessFeaturesBuilder<'a> {
51115    #[inline]
51116    fn deref_mut(&mut self) -> &mut Self::Target {
51117        &mut self.inner
51118    }
51119}
51120///Builder for [`QueueFamilyVideoPropertiesKHR`] with lifetime-tied pNext safety.
51121pub struct QueueFamilyVideoPropertiesKHRBuilder<'a> {
51122    inner: QueueFamilyVideoPropertiesKHR,
51123    _marker: core::marker::PhantomData<&'a ()>,
51124}
51125impl QueueFamilyVideoPropertiesKHR {
51126    /// Start building this struct; `s_type` is already set to the correct variant.
51127    #[inline]
51128    pub fn builder<'a>() -> QueueFamilyVideoPropertiesKHRBuilder<'a> {
51129        QueueFamilyVideoPropertiesKHRBuilder {
51130            inner: QueueFamilyVideoPropertiesKHR {
51131                s_type: StructureType::from_raw(1000023012i32),
51132                ..Default::default()
51133            },
51134            _marker: core::marker::PhantomData,
51135        }
51136    }
51137}
51138impl<'a> QueueFamilyVideoPropertiesKHRBuilder<'a> {
51139    #[inline]
51140    pub fn video_codec_operations(mut self, value: VideoCodecOperationFlagsKHR) -> Self {
51141        self.inner.video_codec_operations = value;
51142        self
51143    }
51144}
51145impl<'a> core::ops::Deref for QueueFamilyVideoPropertiesKHRBuilder<'a> {
51146    type Target = QueueFamilyVideoPropertiesKHR;
51147    #[inline]
51148    fn deref(&self) -> &Self::Target {
51149        &self.inner
51150    }
51151}
51152impl<'a> core::ops::DerefMut for QueueFamilyVideoPropertiesKHRBuilder<'a> {
51153    #[inline]
51154    fn deref_mut(&mut self) -> &mut Self::Target {
51155        &mut self.inner
51156    }
51157}
51158///Builder for [`QueueFamilyQueryResultStatusPropertiesKHR`] with lifetime-tied pNext safety.
51159pub struct QueueFamilyQueryResultStatusPropertiesKHRBuilder<'a> {
51160    inner: QueueFamilyQueryResultStatusPropertiesKHR,
51161    _marker: core::marker::PhantomData<&'a ()>,
51162}
51163impl QueueFamilyQueryResultStatusPropertiesKHR {
51164    /// Start building this struct; `s_type` is already set to the correct variant.
51165    #[inline]
51166    pub fn builder<'a>() -> QueueFamilyQueryResultStatusPropertiesKHRBuilder<'a> {
51167        QueueFamilyQueryResultStatusPropertiesKHRBuilder {
51168            inner: QueueFamilyQueryResultStatusPropertiesKHR {
51169                s_type: StructureType::from_raw(1000023016i32),
51170                ..Default::default()
51171            },
51172            _marker: core::marker::PhantomData,
51173        }
51174    }
51175}
51176impl<'a> QueueFamilyQueryResultStatusPropertiesKHRBuilder<'a> {
51177    #[inline]
51178    pub fn query_result_status_support(mut self, value: bool) -> Self {
51179        self.inner.query_result_status_support = value as u32;
51180        self
51181    }
51182}
51183impl<'a> core::ops::Deref for QueueFamilyQueryResultStatusPropertiesKHRBuilder<'a> {
51184    type Target = QueueFamilyQueryResultStatusPropertiesKHR;
51185    #[inline]
51186    fn deref(&self) -> &Self::Target {
51187        &self.inner
51188    }
51189}
51190impl<'a> core::ops::DerefMut for QueueFamilyQueryResultStatusPropertiesKHRBuilder<'a> {
51191    #[inline]
51192    fn deref_mut(&mut self) -> &mut Self::Target {
51193        &mut self.inner
51194    }
51195}
51196///Builder for [`VideoProfileListInfoKHR`] with lifetime-tied pNext safety.
51197pub struct VideoProfileListInfoKHRBuilder<'a> {
51198    inner: VideoProfileListInfoKHR,
51199    _marker: core::marker::PhantomData<&'a ()>,
51200}
51201impl VideoProfileListInfoKHR {
51202    /// Start building this struct; `s_type` is already set to the correct variant.
51203    #[inline]
51204    pub fn builder<'a>() -> VideoProfileListInfoKHRBuilder<'a> {
51205        VideoProfileListInfoKHRBuilder {
51206            inner: VideoProfileListInfoKHR {
51207                s_type: StructureType::from_raw(1000023013i32),
51208                ..Default::default()
51209            },
51210            _marker: core::marker::PhantomData,
51211        }
51212    }
51213}
51214impl<'a> VideoProfileListInfoKHRBuilder<'a> {
51215    #[inline]
51216    pub fn profiles(mut self, slice: &'a [VideoProfileInfoKHR]) -> Self {
51217        self.inner.profile_count = slice.len() as u32;
51218        self.inner.p_profiles = slice.as_ptr();
51219        self
51220    }
51221    ///Prepend a struct to the pNext chain. See [`VideoProfileListInfoKHR`]'s **Extended By** section for valid types.
51222    #[inline]
51223    pub fn push_next<T: ExtendsVideoProfileListInfoKHR>(
51224        mut self,
51225        next: &'a mut T,
51226    ) -> Self {
51227        unsafe {
51228            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
51229            (*next_ptr).p_next = self.inner.p_next as *mut _;
51230            self.inner.p_next = <*mut BaseOutStructure>::cast::<
51231                core::ffi::c_void,
51232            >(next_ptr) as *const _;
51233        }
51234        self
51235    }
51236}
51237impl<'a> core::ops::Deref for VideoProfileListInfoKHRBuilder<'a> {
51238    type Target = VideoProfileListInfoKHR;
51239    #[inline]
51240    fn deref(&self) -> &Self::Target {
51241        &self.inner
51242    }
51243}
51244impl<'a> core::ops::DerefMut for VideoProfileListInfoKHRBuilder<'a> {
51245    #[inline]
51246    fn deref_mut(&mut self) -> &mut Self::Target {
51247        &mut self.inner
51248    }
51249}
51250///Builder for [`PhysicalDeviceVideoFormatInfoKHR`] with lifetime-tied pNext safety.
51251pub struct PhysicalDeviceVideoFormatInfoKHRBuilder<'a> {
51252    inner: PhysicalDeviceVideoFormatInfoKHR,
51253    _marker: core::marker::PhantomData<&'a ()>,
51254}
51255impl PhysicalDeviceVideoFormatInfoKHR {
51256    /// Start building this struct; `s_type` is already set to the correct variant.
51257    #[inline]
51258    pub fn builder<'a>() -> PhysicalDeviceVideoFormatInfoKHRBuilder<'a> {
51259        PhysicalDeviceVideoFormatInfoKHRBuilder {
51260            inner: PhysicalDeviceVideoFormatInfoKHR {
51261                s_type: StructureType::from_raw(1000023014i32),
51262                ..Default::default()
51263            },
51264            _marker: core::marker::PhantomData,
51265        }
51266    }
51267}
51268impl<'a> PhysicalDeviceVideoFormatInfoKHRBuilder<'a> {
51269    #[inline]
51270    pub fn image_usage(mut self, value: ImageUsageFlags) -> Self {
51271        self.inner.image_usage = value;
51272        self
51273    }
51274    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceVideoFormatInfoKHR`]'s **Extended By** section for valid types.
51275    #[inline]
51276    pub fn push_next<T: ExtendsPhysicalDeviceVideoFormatInfoKHR>(
51277        mut self,
51278        next: &'a mut T,
51279    ) -> Self {
51280        unsafe {
51281            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
51282            (*next_ptr).p_next = self.inner.p_next as *mut _;
51283            self.inner.p_next = <*mut BaseOutStructure>::cast::<
51284                core::ffi::c_void,
51285            >(next_ptr) as *const _;
51286        }
51287        self
51288    }
51289}
51290impl<'a> core::ops::Deref for PhysicalDeviceVideoFormatInfoKHRBuilder<'a> {
51291    type Target = PhysicalDeviceVideoFormatInfoKHR;
51292    #[inline]
51293    fn deref(&self) -> &Self::Target {
51294        &self.inner
51295    }
51296}
51297impl<'a> core::ops::DerefMut for PhysicalDeviceVideoFormatInfoKHRBuilder<'a> {
51298    #[inline]
51299    fn deref_mut(&mut self) -> &mut Self::Target {
51300        &mut self.inner
51301    }
51302}
51303///Builder for [`VideoFormatPropertiesKHR`] with lifetime-tied pNext safety.
51304pub struct VideoFormatPropertiesKHRBuilder<'a> {
51305    inner: VideoFormatPropertiesKHR,
51306    _marker: core::marker::PhantomData<&'a ()>,
51307}
51308impl VideoFormatPropertiesKHR {
51309    /// Start building this struct; `s_type` is already set to the correct variant.
51310    #[inline]
51311    pub fn builder<'a>() -> VideoFormatPropertiesKHRBuilder<'a> {
51312        VideoFormatPropertiesKHRBuilder {
51313            inner: VideoFormatPropertiesKHR {
51314                s_type: StructureType::from_raw(1000023015i32),
51315                ..Default::default()
51316            },
51317            _marker: core::marker::PhantomData,
51318        }
51319    }
51320}
51321impl<'a> VideoFormatPropertiesKHRBuilder<'a> {
51322    #[inline]
51323    pub fn format(mut self, value: Format) -> Self {
51324        self.inner.format = value;
51325        self
51326    }
51327    #[inline]
51328    pub fn component_mapping(mut self, value: ComponentMapping) -> Self {
51329        self.inner.component_mapping = value;
51330        self
51331    }
51332    #[inline]
51333    pub fn image_create_flags(mut self, value: ImageCreateFlags) -> Self {
51334        self.inner.image_create_flags = value;
51335        self
51336    }
51337    #[inline]
51338    pub fn image_type(mut self, value: ImageType) -> Self {
51339        self.inner.image_type = value;
51340        self
51341    }
51342    #[inline]
51343    pub fn image_tiling(mut self, value: ImageTiling) -> Self {
51344        self.inner.image_tiling = value;
51345        self
51346    }
51347    #[inline]
51348    pub fn image_usage_flags(mut self, value: ImageUsageFlags) -> Self {
51349        self.inner.image_usage_flags = value;
51350        self
51351    }
51352}
51353impl<'a> core::ops::Deref for VideoFormatPropertiesKHRBuilder<'a> {
51354    type Target = VideoFormatPropertiesKHR;
51355    #[inline]
51356    fn deref(&self) -> &Self::Target {
51357        &self.inner
51358    }
51359}
51360impl<'a> core::ops::DerefMut for VideoFormatPropertiesKHRBuilder<'a> {
51361    #[inline]
51362    fn deref_mut(&mut self) -> &mut Self::Target {
51363        &mut self.inner
51364    }
51365}
51366///Builder for [`VideoEncodeQuantizationMapCapabilitiesKHR`] with lifetime-tied pNext safety.
51367pub struct VideoEncodeQuantizationMapCapabilitiesKHRBuilder<'a> {
51368    inner: VideoEncodeQuantizationMapCapabilitiesKHR,
51369    _marker: core::marker::PhantomData<&'a ()>,
51370}
51371impl VideoEncodeQuantizationMapCapabilitiesKHR {
51372    /// Start building this struct; `s_type` is already set to the correct variant.
51373    #[inline]
51374    pub fn builder<'a>() -> VideoEncodeQuantizationMapCapabilitiesKHRBuilder<'a> {
51375        VideoEncodeQuantizationMapCapabilitiesKHRBuilder {
51376            inner: VideoEncodeQuantizationMapCapabilitiesKHR {
51377                s_type: StructureType::from_raw(1000553000i32),
51378                ..Default::default()
51379            },
51380            _marker: core::marker::PhantomData,
51381        }
51382    }
51383}
51384impl<'a> VideoEncodeQuantizationMapCapabilitiesKHRBuilder<'a> {
51385    #[inline]
51386    pub fn max_quantization_map_extent(mut self, value: Extent2D) -> Self {
51387        self.inner.max_quantization_map_extent = value;
51388        self
51389    }
51390}
51391impl<'a> core::ops::Deref for VideoEncodeQuantizationMapCapabilitiesKHRBuilder<'a> {
51392    type Target = VideoEncodeQuantizationMapCapabilitiesKHR;
51393    #[inline]
51394    fn deref(&self) -> &Self::Target {
51395        &self.inner
51396    }
51397}
51398impl<'a> core::ops::DerefMut for VideoEncodeQuantizationMapCapabilitiesKHRBuilder<'a> {
51399    #[inline]
51400    fn deref_mut(&mut self) -> &mut Self::Target {
51401        &mut self.inner
51402    }
51403}
51404///Builder for [`VideoEncodeH264QuantizationMapCapabilitiesKHR`] with lifetime-tied pNext safety.
51405pub struct VideoEncodeH264QuantizationMapCapabilitiesKHRBuilder<'a> {
51406    inner: VideoEncodeH264QuantizationMapCapabilitiesKHR,
51407    _marker: core::marker::PhantomData<&'a ()>,
51408}
51409impl VideoEncodeH264QuantizationMapCapabilitiesKHR {
51410    /// Start building this struct; `s_type` is already set to the correct variant.
51411    #[inline]
51412    pub fn builder<'a>() -> VideoEncodeH264QuantizationMapCapabilitiesKHRBuilder<'a> {
51413        VideoEncodeH264QuantizationMapCapabilitiesKHRBuilder {
51414            inner: VideoEncodeH264QuantizationMapCapabilitiesKHR {
51415                s_type: StructureType::from_raw(1000553003i32),
51416                ..Default::default()
51417            },
51418            _marker: core::marker::PhantomData,
51419        }
51420    }
51421}
51422impl<'a> VideoEncodeH264QuantizationMapCapabilitiesKHRBuilder<'a> {
51423    #[inline]
51424    pub fn min_qp_delta(mut self, value: i32) -> Self {
51425        self.inner.min_qp_delta = value;
51426        self
51427    }
51428    #[inline]
51429    pub fn max_qp_delta(mut self, value: i32) -> Self {
51430        self.inner.max_qp_delta = value;
51431        self
51432    }
51433}
51434impl<'a> core::ops::Deref for VideoEncodeH264QuantizationMapCapabilitiesKHRBuilder<'a> {
51435    type Target = VideoEncodeH264QuantizationMapCapabilitiesKHR;
51436    #[inline]
51437    fn deref(&self) -> &Self::Target {
51438        &self.inner
51439    }
51440}
51441impl<'a> core::ops::DerefMut
51442for VideoEncodeH264QuantizationMapCapabilitiesKHRBuilder<'a> {
51443    #[inline]
51444    fn deref_mut(&mut self) -> &mut Self::Target {
51445        &mut self.inner
51446    }
51447}
51448///Builder for [`VideoEncodeH265QuantizationMapCapabilitiesKHR`] with lifetime-tied pNext safety.
51449pub struct VideoEncodeH265QuantizationMapCapabilitiesKHRBuilder<'a> {
51450    inner: VideoEncodeH265QuantizationMapCapabilitiesKHR,
51451    _marker: core::marker::PhantomData<&'a ()>,
51452}
51453impl VideoEncodeH265QuantizationMapCapabilitiesKHR {
51454    /// Start building this struct; `s_type` is already set to the correct variant.
51455    #[inline]
51456    pub fn builder<'a>() -> VideoEncodeH265QuantizationMapCapabilitiesKHRBuilder<'a> {
51457        VideoEncodeH265QuantizationMapCapabilitiesKHRBuilder {
51458            inner: VideoEncodeH265QuantizationMapCapabilitiesKHR {
51459                s_type: StructureType::from_raw(1000553004i32),
51460                ..Default::default()
51461            },
51462            _marker: core::marker::PhantomData,
51463        }
51464    }
51465}
51466impl<'a> VideoEncodeH265QuantizationMapCapabilitiesKHRBuilder<'a> {
51467    #[inline]
51468    pub fn min_qp_delta(mut self, value: i32) -> Self {
51469        self.inner.min_qp_delta = value;
51470        self
51471    }
51472    #[inline]
51473    pub fn max_qp_delta(mut self, value: i32) -> Self {
51474        self.inner.max_qp_delta = value;
51475        self
51476    }
51477}
51478impl<'a> core::ops::Deref for VideoEncodeH265QuantizationMapCapabilitiesKHRBuilder<'a> {
51479    type Target = VideoEncodeH265QuantizationMapCapabilitiesKHR;
51480    #[inline]
51481    fn deref(&self) -> &Self::Target {
51482        &self.inner
51483    }
51484}
51485impl<'a> core::ops::DerefMut
51486for VideoEncodeH265QuantizationMapCapabilitiesKHRBuilder<'a> {
51487    #[inline]
51488    fn deref_mut(&mut self) -> &mut Self::Target {
51489        &mut self.inner
51490    }
51491}
51492///Builder for [`VideoEncodeAV1QuantizationMapCapabilitiesKHR`] with lifetime-tied pNext safety.
51493pub struct VideoEncodeAV1QuantizationMapCapabilitiesKHRBuilder<'a> {
51494    inner: VideoEncodeAV1QuantizationMapCapabilitiesKHR,
51495    _marker: core::marker::PhantomData<&'a ()>,
51496}
51497impl VideoEncodeAV1QuantizationMapCapabilitiesKHR {
51498    /// Start building this struct; `s_type` is already set to the correct variant.
51499    #[inline]
51500    pub fn builder<'a>() -> VideoEncodeAV1QuantizationMapCapabilitiesKHRBuilder<'a> {
51501        VideoEncodeAV1QuantizationMapCapabilitiesKHRBuilder {
51502            inner: VideoEncodeAV1QuantizationMapCapabilitiesKHR {
51503                s_type: StructureType::from_raw(1000553007i32),
51504                ..Default::default()
51505            },
51506            _marker: core::marker::PhantomData,
51507        }
51508    }
51509}
51510impl<'a> VideoEncodeAV1QuantizationMapCapabilitiesKHRBuilder<'a> {
51511    #[inline]
51512    pub fn min_q_index_delta(mut self, value: i32) -> Self {
51513        self.inner.min_q_index_delta = value;
51514        self
51515    }
51516    #[inline]
51517    pub fn max_q_index_delta(mut self, value: i32) -> Self {
51518        self.inner.max_q_index_delta = value;
51519        self
51520    }
51521}
51522impl<'a> core::ops::Deref for VideoEncodeAV1QuantizationMapCapabilitiesKHRBuilder<'a> {
51523    type Target = VideoEncodeAV1QuantizationMapCapabilitiesKHR;
51524    #[inline]
51525    fn deref(&self) -> &Self::Target {
51526        &self.inner
51527    }
51528}
51529impl<'a> core::ops::DerefMut
51530for VideoEncodeAV1QuantizationMapCapabilitiesKHRBuilder<'a> {
51531    #[inline]
51532    fn deref_mut(&mut self) -> &mut Self::Target {
51533        &mut self.inner
51534    }
51535}
51536///Builder for [`VideoFormatQuantizationMapPropertiesKHR`] with lifetime-tied pNext safety.
51537pub struct VideoFormatQuantizationMapPropertiesKHRBuilder<'a> {
51538    inner: VideoFormatQuantizationMapPropertiesKHR,
51539    _marker: core::marker::PhantomData<&'a ()>,
51540}
51541impl VideoFormatQuantizationMapPropertiesKHR {
51542    /// Start building this struct; `s_type` is already set to the correct variant.
51543    #[inline]
51544    pub fn builder<'a>() -> VideoFormatQuantizationMapPropertiesKHRBuilder<'a> {
51545        VideoFormatQuantizationMapPropertiesKHRBuilder {
51546            inner: VideoFormatQuantizationMapPropertiesKHR {
51547                s_type: StructureType::from_raw(1000553001i32),
51548                ..Default::default()
51549            },
51550            _marker: core::marker::PhantomData,
51551        }
51552    }
51553}
51554impl<'a> VideoFormatQuantizationMapPropertiesKHRBuilder<'a> {
51555    #[inline]
51556    pub fn quantization_map_texel_size(mut self, value: Extent2D) -> Self {
51557        self.inner.quantization_map_texel_size = value;
51558        self
51559    }
51560}
51561impl<'a> core::ops::Deref for VideoFormatQuantizationMapPropertiesKHRBuilder<'a> {
51562    type Target = VideoFormatQuantizationMapPropertiesKHR;
51563    #[inline]
51564    fn deref(&self) -> &Self::Target {
51565        &self.inner
51566    }
51567}
51568impl<'a> core::ops::DerefMut for VideoFormatQuantizationMapPropertiesKHRBuilder<'a> {
51569    #[inline]
51570    fn deref_mut(&mut self) -> &mut Self::Target {
51571        &mut self.inner
51572    }
51573}
51574///Builder for [`VideoFormatH265QuantizationMapPropertiesKHR`] with lifetime-tied pNext safety.
51575pub struct VideoFormatH265QuantizationMapPropertiesKHRBuilder<'a> {
51576    inner: VideoFormatH265QuantizationMapPropertiesKHR,
51577    _marker: core::marker::PhantomData<&'a ()>,
51578}
51579impl VideoFormatH265QuantizationMapPropertiesKHR {
51580    /// Start building this struct; `s_type` is already set to the correct variant.
51581    #[inline]
51582    pub fn builder<'a>() -> VideoFormatH265QuantizationMapPropertiesKHRBuilder<'a> {
51583        VideoFormatH265QuantizationMapPropertiesKHRBuilder {
51584            inner: VideoFormatH265QuantizationMapPropertiesKHR {
51585                s_type: StructureType::from_raw(1000553006i32),
51586                ..Default::default()
51587            },
51588            _marker: core::marker::PhantomData,
51589        }
51590    }
51591}
51592impl<'a> VideoFormatH265QuantizationMapPropertiesKHRBuilder<'a> {
51593    #[inline]
51594    pub fn compatible_ctb_sizes(
51595        mut self,
51596        value: VideoEncodeH265CtbSizeFlagsKHR,
51597    ) -> Self {
51598        self.inner.compatible_ctb_sizes = value;
51599        self
51600    }
51601}
51602impl<'a> core::ops::Deref for VideoFormatH265QuantizationMapPropertiesKHRBuilder<'a> {
51603    type Target = VideoFormatH265QuantizationMapPropertiesKHR;
51604    #[inline]
51605    fn deref(&self) -> &Self::Target {
51606        &self.inner
51607    }
51608}
51609impl<'a> core::ops::DerefMut for VideoFormatH265QuantizationMapPropertiesKHRBuilder<'a> {
51610    #[inline]
51611    fn deref_mut(&mut self) -> &mut Self::Target {
51612        &mut self.inner
51613    }
51614}
51615///Builder for [`VideoFormatAV1QuantizationMapPropertiesKHR`] with lifetime-tied pNext safety.
51616pub struct VideoFormatAV1QuantizationMapPropertiesKHRBuilder<'a> {
51617    inner: VideoFormatAV1QuantizationMapPropertiesKHR,
51618    _marker: core::marker::PhantomData<&'a ()>,
51619}
51620impl VideoFormatAV1QuantizationMapPropertiesKHR {
51621    /// Start building this struct; `s_type` is already set to the correct variant.
51622    #[inline]
51623    pub fn builder<'a>() -> VideoFormatAV1QuantizationMapPropertiesKHRBuilder<'a> {
51624        VideoFormatAV1QuantizationMapPropertiesKHRBuilder {
51625            inner: VideoFormatAV1QuantizationMapPropertiesKHR {
51626                s_type: StructureType::from_raw(1000553008i32),
51627                ..Default::default()
51628            },
51629            _marker: core::marker::PhantomData,
51630        }
51631    }
51632}
51633impl<'a> VideoFormatAV1QuantizationMapPropertiesKHRBuilder<'a> {
51634    #[inline]
51635    pub fn compatible_superblock_sizes(
51636        mut self,
51637        value: VideoEncodeAV1SuperblockSizeFlagsKHR,
51638    ) -> Self {
51639        self.inner.compatible_superblock_sizes = value;
51640        self
51641    }
51642}
51643impl<'a> core::ops::Deref for VideoFormatAV1QuantizationMapPropertiesKHRBuilder<'a> {
51644    type Target = VideoFormatAV1QuantizationMapPropertiesKHR;
51645    #[inline]
51646    fn deref(&self) -> &Self::Target {
51647        &self.inner
51648    }
51649}
51650impl<'a> core::ops::DerefMut for VideoFormatAV1QuantizationMapPropertiesKHRBuilder<'a> {
51651    #[inline]
51652    fn deref_mut(&mut self) -> &mut Self::Target {
51653        &mut self.inner
51654    }
51655}
51656///Builder for [`VideoProfileInfoKHR`] with lifetime-tied pNext safety.
51657pub struct VideoProfileInfoKHRBuilder<'a> {
51658    inner: VideoProfileInfoKHR,
51659    _marker: core::marker::PhantomData<&'a ()>,
51660}
51661impl VideoProfileInfoKHR {
51662    /// Start building this struct; `s_type` is already set to the correct variant.
51663    #[inline]
51664    pub fn builder<'a>() -> VideoProfileInfoKHRBuilder<'a> {
51665        VideoProfileInfoKHRBuilder {
51666            inner: VideoProfileInfoKHR {
51667                s_type: StructureType::from_raw(1000023000i32),
51668                ..Default::default()
51669            },
51670            _marker: core::marker::PhantomData,
51671        }
51672    }
51673}
51674impl<'a> VideoProfileInfoKHRBuilder<'a> {
51675    #[inline]
51676    pub fn video_codec_operation(
51677        mut self,
51678        value: VideoCodecOperationFlagBitsKHR,
51679    ) -> Self {
51680        self.inner.video_codec_operation = value;
51681        self
51682    }
51683    #[inline]
51684    pub fn chroma_subsampling(mut self, value: VideoChromaSubsamplingFlagsKHR) -> Self {
51685        self.inner.chroma_subsampling = value;
51686        self
51687    }
51688    #[inline]
51689    pub fn luma_bit_depth(mut self, value: VideoComponentBitDepthFlagsKHR) -> Self {
51690        self.inner.luma_bit_depth = value;
51691        self
51692    }
51693    #[inline]
51694    pub fn chroma_bit_depth(mut self, value: VideoComponentBitDepthFlagsKHR) -> Self {
51695        self.inner.chroma_bit_depth = value;
51696        self
51697    }
51698    ///Prepend a struct to the pNext chain. See [`VideoProfileInfoKHR`]'s **Extended By** section for valid types.
51699    #[inline]
51700    pub fn push_next<T: ExtendsVideoProfileInfoKHR>(mut self, next: &'a mut T) -> Self {
51701        unsafe {
51702            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
51703            (*next_ptr).p_next = self.inner.p_next as *mut _;
51704            self.inner.p_next = <*mut BaseOutStructure>::cast::<
51705                core::ffi::c_void,
51706            >(next_ptr) as *const _;
51707        }
51708        self
51709    }
51710}
51711impl<'a> core::ops::Deref for VideoProfileInfoKHRBuilder<'a> {
51712    type Target = VideoProfileInfoKHR;
51713    #[inline]
51714    fn deref(&self) -> &Self::Target {
51715        &self.inner
51716    }
51717}
51718impl<'a> core::ops::DerefMut for VideoProfileInfoKHRBuilder<'a> {
51719    #[inline]
51720    fn deref_mut(&mut self) -> &mut Self::Target {
51721        &mut self.inner
51722    }
51723}
51724///Builder for [`VideoCapabilitiesKHR`] with lifetime-tied pNext safety.
51725pub struct VideoCapabilitiesKHRBuilder<'a> {
51726    inner: VideoCapabilitiesKHR,
51727    _marker: core::marker::PhantomData<&'a ()>,
51728}
51729impl VideoCapabilitiesKHR {
51730    /// Start building this struct; `s_type` is already set to the correct variant.
51731    #[inline]
51732    pub fn builder<'a>() -> VideoCapabilitiesKHRBuilder<'a> {
51733        VideoCapabilitiesKHRBuilder {
51734            inner: VideoCapabilitiesKHR {
51735                s_type: StructureType::from_raw(1000023001i32),
51736                ..Default::default()
51737            },
51738            _marker: core::marker::PhantomData,
51739        }
51740    }
51741}
51742impl<'a> VideoCapabilitiesKHRBuilder<'a> {
51743    #[inline]
51744    pub fn flags(mut self, value: VideoCapabilityFlagsKHR) -> Self {
51745        self.inner.flags = value;
51746        self
51747    }
51748    #[inline]
51749    pub fn min_bitstream_buffer_offset_alignment(mut self, value: u64) -> Self {
51750        self.inner.min_bitstream_buffer_offset_alignment = value;
51751        self
51752    }
51753    #[inline]
51754    pub fn min_bitstream_buffer_size_alignment(mut self, value: u64) -> Self {
51755        self.inner.min_bitstream_buffer_size_alignment = value;
51756        self
51757    }
51758    #[inline]
51759    pub fn picture_access_granularity(mut self, value: Extent2D) -> Self {
51760        self.inner.picture_access_granularity = value;
51761        self
51762    }
51763    #[inline]
51764    pub fn min_coded_extent(mut self, value: Extent2D) -> Self {
51765        self.inner.min_coded_extent = value;
51766        self
51767    }
51768    #[inline]
51769    pub fn max_coded_extent(mut self, value: Extent2D) -> Self {
51770        self.inner.max_coded_extent = value;
51771        self
51772    }
51773    #[inline]
51774    pub fn max_dpb_slots(mut self, value: u32) -> Self {
51775        self.inner.max_dpb_slots = value;
51776        self
51777    }
51778    #[inline]
51779    pub fn max_active_reference_pictures(mut self, value: u32) -> Self {
51780        self.inner.max_active_reference_pictures = value;
51781        self
51782    }
51783    #[inline]
51784    pub fn std_header_version(mut self, value: ExtensionProperties) -> Self {
51785        self.inner.std_header_version = value;
51786        self
51787    }
51788}
51789impl<'a> core::ops::Deref for VideoCapabilitiesKHRBuilder<'a> {
51790    type Target = VideoCapabilitiesKHR;
51791    #[inline]
51792    fn deref(&self) -> &Self::Target {
51793        &self.inner
51794    }
51795}
51796impl<'a> core::ops::DerefMut for VideoCapabilitiesKHRBuilder<'a> {
51797    #[inline]
51798    fn deref_mut(&mut self) -> &mut Self::Target {
51799        &mut self.inner
51800    }
51801}
51802///Builder for [`VideoSessionMemoryRequirementsKHR`] with lifetime-tied pNext safety.
51803pub struct VideoSessionMemoryRequirementsKHRBuilder<'a> {
51804    inner: VideoSessionMemoryRequirementsKHR,
51805    _marker: core::marker::PhantomData<&'a ()>,
51806}
51807impl VideoSessionMemoryRequirementsKHR {
51808    /// Start building this struct; `s_type` is already set to the correct variant.
51809    #[inline]
51810    pub fn builder<'a>() -> VideoSessionMemoryRequirementsKHRBuilder<'a> {
51811        VideoSessionMemoryRequirementsKHRBuilder {
51812            inner: VideoSessionMemoryRequirementsKHR {
51813                s_type: StructureType::from_raw(1000023003i32),
51814                ..Default::default()
51815            },
51816            _marker: core::marker::PhantomData,
51817        }
51818    }
51819}
51820impl<'a> VideoSessionMemoryRequirementsKHRBuilder<'a> {
51821    #[inline]
51822    pub fn memory_bind_index(mut self, value: u32) -> Self {
51823        self.inner.memory_bind_index = value;
51824        self
51825    }
51826    #[inline]
51827    pub fn memory_requirements(mut self, value: MemoryRequirements) -> Self {
51828        self.inner.memory_requirements = value;
51829        self
51830    }
51831}
51832impl<'a> core::ops::Deref for VideoSessionMemoryRequirementsKHRBuilder<'a> {
51833    type Target = VideoSessionMemoryRequirementsKHR;
51834    #[inline]
51835    fn deref(&self) -> &Self::Target {
51836        &self.inner
51837    }
51838}
51839impl<'a> core::ops::DerefMut for VideoSessionMemoryRequirementsKHRBuilder<'a> {
51840    #[inline]
51841    fn deref_mut(&mut self) -> &mut Self::Target {
51842        &mut self.inner
51843    }
51844}
51845///Builder for [`BindVideoSessionMemoryInfoKHR`] with lifetime-tied pNext safety.
51846pub struct BindVideoSessionMemoryInfoKHRBuilder<'a> {
51847    inner: BindVideoSessionMemoryInfoKHR,
51848    _marker: core::marker::PhantomData<&'a ()>,
51849}
51850impl BindVideoSessionMemoryInfoKHR {
51851    /// Start building this struct; `s_type` is already set to the correct variant.
51852    #[inline]
51853    pub fn builder<'a>() -> BindVideoSessionMemoryInfoKHRBuilder<'a> {
51854        BindVideoSessionMemoryInfoKHRBuilder {
51855            inner: BindVideoSessionMemoryInfoKHR {
51856                s_type: StructureType::from_raw(1000023004i32),
51857                ..Default::default()
51858            },
51859            _marker: core::marker::PhantomData,
51860        }
51861    }
51862}
51863impl<'a> BindVideoSessionMemoryInfoKHRBuilder<'a> {
51864    #[inline]
51865    pub fn memory_bind_index(mut self, value: u32) -> Self {
51866        self.inner.memory_bind_index = value;
51867        self
51868    }
51869    #[inline]
51870    pub fn memory(mut self, value: DeviceMemory) -> Self {
51871        self.inner.memory = value;
51872        self
51873    }
51874    #[inline]
51875    pub fn memory_offset(mut self, value: u64) -> Self {
51876        self.inner.memory_offset = value;
51877        self
51878    }
51879    #[inline]
51880    pub fn memory_size(mut self, value: u64) -> Self {
51881        self.inner.memory_size = value;
51882        self
51883    }
51884    ///Prepend a struct to the pNext chain. See [`BindVideoSessionMemoryInfoKHR`]'s **Extended By** section for valid types.
51885    #[inline]
51886    pub fn push_next<T: ExtendsBindVideoSessionMemoryInfoKHR>(
51887        mut self,
51888        next: &'a mut T,
51889    ) -> Self {
51890        unsafe {
51891            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
51892            (*next_ptr).p_next = self.inner.p_next as *mut _;
51893            self.inner.p_next = <*mut BaseOutStructure>::cast::<
51894                core::ffi::c_void,
51895            >(next_ptr) as *const _;
51896        }
51897        self
51898    }
51899}
51900impl<'a> core::ops::Deref for BindVideoSessionMemoryInfoKHRBuilder<'a> {
51901    type Target = BindVideoSessionMemoryInfoKHR;
51902    #[inline]
51903    fn deref(&self) -> &Self::Target {
51904        &self.inner
51905    }
51906}
51907impl<'a> core::ops::DerefMut for BindVideoSessionMemoryInfoKHRBuilder<'a> {
51908    #[inline]
51909    fn deref_mut(&mut self) -> &mut Self::Target {
51910        &mut self.inner
51911    }
51912}
51913///Builder for [`VideoPictureResourceInfoKHR`] with lifetime-tied pNext safety.
51914pub struct VideoPictureResourceInfoKHRBuilder<'a> {
51915    inner: VideoPictureResourceInfoKHR,
51916    _marker: core::marker::PhantomData<&'a ()>,
51917}
51918impl VideoPictureResourceInfoKHR {
51919    /// Start building this struct; `s_type` is already set to the correct variant.
51920    #[inline]
51921    pub fn builder<'a>() -> VideoPictureResourceInfoKHRBuilder<'a> {
51922        VideoPictureResourceInfoKHRBuilder {
51923            inner: VideoPictureResourceInfoKHR {
51924                s_type: StructureType::from_raw(1000023002i32),
51925                ..Default::default()
51926            },
51927            _marker: core::marker::PhantomData,
51928        }
51929    }
51930}
51931impl<'a> VideoPictureResourceInfoKHRBuilder<'a> {
51932    #[inline]
51933    pub fn coded_offset(mut self, value: Offset2D) -> Self {
51934        self.inner.coded_offset = value;
51935        self
51936    }
51937    #[inline]
51938    pub fn coded_extent(mut self, value: Extent2D) -> Self {
51939        self.inner.coded_extent = value;
51940        self
51941    }
51942    #[inline]
51943    pub fn base_array_layer(mut self, value: u32) -> Self {
51944        self.inner.base_array_layer = value;
51945        self
51946    }
51947    #[inline]
51948    pub fn image_view_binding(mut self, value: ImageView) -> Self {
51949        self.inner.image_view_binding = value;
51950        self
51951    }
51952    ///Prepend a struct to the pNext chain. See [`VideoPictureResourceInfoKHR`]'s **Extended By** section for valid types.
51953    #[inline]
51954    pub fn push_next<T: ExtendsVideoPictureResourceInfoKHR>(
51955        mut self,
51956        next: &'a mut T,
51957    ) -> Self {
51958        unsafe {
51959            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
51960            (*next_ptr).p_next = self.inner.p_next as *mut _;
51961            self.inner.p_next = <*mut BaseOutStructure>::cast::<
51962                core::ffi::c_void,
51963            >(next_ptr) as *const _;
51964        }
51965        self
51966    }
51967}
51968impl<'a> core::ops::Deref for VideoPictureResourceInfoKHRBuilder<'a> {
51969    type Target = VideoPictureResourceInfoKHR;
51970    #[inline]
51971    fn deref(&self) -> &Self::Target {
51972        &self.inner
51973    }
51974}
51975impl<'a> core::ops::DerefMut for VideoPictureResourceInfoKHRBuilder<'a> {
51976    #[inline]
51977    fn deref_mut(&mut self) -> &mut Self::Target {
51978        &mut self.inner
51979    }
51980}
51981///Builder for [`VideoReferenceSlotInfoKHR`] with lifetime-tied pNext safety.
51982pub struct VideoReferenceSlotInfoKHRBuilder<'a> {
51983    inner: VideoReferenceSlotInfoKHR,
51984    _marker: core::marker::PhantomData<&'a ()>,
51985}
51986impl VideoReferenceSlotInfoKHR {
51987    /// Start building this struct; `s_type` is already set to the correct variant.
51988    #[inline]
51989    pub fn builder<'a>() -> VideoReferenceSlotInfoKHRBuilder<'a> {
51990        VideoReferenceSlotInfoKHRBuilder {
51991            inner: VideoReferenceSlotInfoKHR {
51992                s_type: StructureType::from_raw(1000023011i32),
51993                ..Default::default()
51994            },
51995            _marker: core::marker::PhantomData,
51996        }
51997    }
51998}
51999impl<'a> VideoReferenceSlotInfoKHRBuilder<'a> {
52000    #[inline]
52001    pub fn slot_index(mut self, value: i32) -> Self {
52002        self.inner.slot_index = value;
52003        self
52004    }
52005    #[inline]
52006    pub fn picture_resource(mut self, value: &'a VideoPictureResourceInfoKHR) -> Self {
52007        self.inner.p_picture_resource = value;
52008        self
52009    }
52010    ///Prepend a struct to the pNext chain. See [`VideoReferenceSlotInfoKHR`]'s **Extended By** section for valid types.
52011    #[inline]
52012    pub fn push_next<T: ExtendsVideoReferenceSlotInfoKHR>(
52013        mut self,
52014        next: &'a mut T,
52015    ) -> Self {
52016        unsafe {
52017            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
52018            (*next_ptr).p_next = self.inner.p_next as *mut _;
52019            self.inner.p_next = <*mut BaseOutStructure>::cast::<
52020                core::ffi::c_void,
52021            >(next_ptr) as *const _;
52022        }
52023        self
52024    }
52025}
52026impl<'a> core::ops::Deref for VideoReferenceSlotInfoKHRBuilder<'a> {
52027    type Target = VideoReferenceSlotInfoKHR;
52028    #[inline]
52029    fn deref(&self) -> &Self::Target {
52030        &self.inner
52031    }
52032}
52033impl<'a> core::ops::DerefMut for VideoReferenceSlotInfoKHRBuilder<'a> {
52034    #[inline]
52035    fn deref_mut(&mut self) -> &mut Self::Target {
52036        &mut self.inner
52037    }
52038}
52039///Builder for [`VideoDecodeCapabilitiesKHR`] with lifetime-tied pNext safety.
52040pub struct VideoDecodeCapabilitiesKHRBuilder<'a> {
52041    inner: VideoDecodeCapabilitiesKHR,
52042    _marker: core::marker::PhantomData<&'a ()>,
52043}
52044impl VideoDecodeCapabilitiesKHR {
52045    /// Start building this struct; `s_type` is already set to the correct variant.
52046    #[inline]
52047    pub fn builder<'a>() -> VideoDecodeCapabilitiesKHRBuilder<'a> {
52048        VideoDecodeCapabilitiesKHRBuilder {
52049            inner: VideoDecodeCapabilitiesKHR {
52050                s_type: StructureType::from_raw(1000024001i32),
52051                ..Default::default()
52052            },
52053            _marker: core::marker::PhantomData,
52054        }
52055    }
52056}
52057impl<'a> VideoDecodeCapabilitiesKHRBuilder<'a> {
52058    #[inline]
52059    pub fn flags(mut self, value: VideoDecodeCapabilityFlagsKHR) -> Self {
52060        self.inner.flags = value;
52061        self
52062    }
52063}
52064impl<'a> core::ops::Deref for VideoDecodeCapabilitiesKHRBuilder<'a> {
52065    type Target = VideoDecodeCapabilitiesKHR;
52066    #[inline]
52067    fn deref(&self) -> &Self::Target {
52068        &self.inner
52069    }
52070}
52071impl<'a> core::ops::DerefMut for VideoDecodeCapabilitiesKHRBuilder<'a> {
52072    #[inline]
52073    fn deref_mut(&mut self) -> &mut Self::Target {
52074        &mut self.inner
52075    }
52076}
52077///Builder for [`VideoDecodeUsageInfoKHR`] with lifetime-tied pNext safety.
52078pub struct VideoDecodeUsageInfoKHRBuilder<'a> {
52079    inner: VideoDecodeUsageInfoKHR,
52080    _marker: core::marker::PhantomData<&'a ()>,
52081}
52082impl VideoDecodeUsageInfoKHR {
52083    /// Start building this struct; `s_type` is already set to the correct variant.
52084    #[inline]
52085    pub fn builder<'a>() -> VideoDecodeUsageInfoKHRBuilder<'a> {
52086        VideoDecodeUsageInfoKHRBuilder {
52087            inner: VideoDecodeUsageInfoKHR {
52088                s_type: StructureType::from_raw(1000024002i32),
52089                ..Default::default()
52090            },
52091            _marker: core::marker::PhantomData,
52092        }
52093    }
52094}
52095impl<'a> VideoDecodeUsageInfoKHRBuilder<'a> {
52096    #[inline]
52097    pub fn video_usage_hints(mut self, value: VideoDecodeUsageFlagsKHR) -> Self {
52098        self.inner.video_usage_hints = value;
52099        self
52100    }
52101    ///Prepend a struct to the pNext chain. See [`VideoDecodeUsageInfoKHR`]'s **Extended By** section for valid types.
52102    #[inline]
52103    pub fn push_next<T: ExtendsVideoDecodeUsageInfoKHR>(
52104        mut self,
52105        next: &'a mut T,
52106    ) -> Self {
52107        unsafe {
52108            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
52109            (*next_ptr).p_next = self.inner.p_next as *mut _;
52110            self.inner.p_next = <*mut BaseOutStructure>::cast::<
52111                core::ffi::c_void,
52112            >(next_ptr) as *const _;
52113        }
52114        self
52115    }
52116}
52117impl<'a> core::ops::Deref for VideoDecodeUsageInfoKHRBuilder<'a> {
52118    type Target = VideoDecodeUsageInfoKHR;
52119    #[inline]
52120    fn deref(&self) -> &Self::Target {
52121        &self.inner
52122    }
52123}
52124impl<'a> core::ops::DerefMut for VideoDecodeUsageInfoKHRBuilder<'a> {
52125    #[inline]
52126    fn deref_mut(&mut self) -> &mut Self::Target {
52127        &mut self.inner
52128    }
52129}
52130///Builder for [`VideoDecodeInfoKHR`] with lifetime-tied pNext safety.
52131pub struct VideoDecodeInfoKHRBuilder<'a> {
52132    inner: VideoDecodeInfoKHR,
52133    _marker: core::marker::PhantomData<&'a ()>,
52134}
52135impl VideoDecodeInfoKHR {
52136    /// Start building this struct; `s_type` is already set to the correct variant.
52137    #[inline]
52138    pub fn builder<'a>() -> VideoDecodeInfoKHRBuilder<'a> {
52139        VideoDecodeInfoKHRBuilder {
52140            inner: VideoDecodeInfoKHR {
52141                s_type: StructureType::from_raw(1000024000i32),
52142                ..Default::default()
52143            },
52144            _marker: core::marker::PhantomData,
52145        }
52146    }
52147}
52148impl<'a> VideoDecodeInfoKHRBuilder<'a> {
52149    #[inline]
52150    pub fn flags(mut self, value: VideoDecodeFlagsKHR) -> Self {
52151        self.inner.flags = value;
52152        self
52153    }
52154    #[inline]
52155    pub fn src_buffer(mut self, value: Buffer) -> Self {
52156        self.inner.src_buffer = value;
52157        self
52158    }
52159    #[inline]
52160    pub fn src_buffer_offset(mut self, value: u64) -> Self {
52161        self.inner.src_buffer_offset = value;
52162        self
52163    }
52164    #[inline]
52165    pub fn src_buffer_range(mut self, value: u64) -> Self {
52166        self.inner.src_buffer_range = value;
52167        self
52168    }
52169    #[inline]
52170    pub fn dst_picture_resource(mut self, value: VideoPictureResourceInfoKHR) -> Self {
52171        self.inner.dst_picture_resource = value;
52172        self
52173    }
52174    #[inline]
52175    pub fn setup_reference_slot(mut self, value: &'a VideoReferenceSlotInfoKHR) -> Self {
52176        self.inner.p_setup_reference_slot = value;
52177        self
52178    }
52179    #[inline]
52180    pub fn reference_slots(mut self, slice: &'a [VideoReferenceSlotInfoKHR]) -> Self {
52181        self.inner.reference_slot_count = slice.len() as u32;
52182        self.inner.p_reference_slots = slice.as_ptr();
52183        self
52184    }
52185    ///Prepend a struct to the pNext chain. See [`VideoDecodeInfoKHR`]'s **Extended By** section for valid types.
52186    #[inline]
52187    pub fn push_next<T: ExtendsVideoDecodeInfoKHR>(mut self, next: &'a mut T) -> Self {
52188        unsafe {
52189            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
52190            (*next_ptr).p_next = self.inner.p_next as *mut _;
52191            self.inner.p_next = <*mut BaseOutStructure>::cast::<
52192                core::ffi::c_void,
52193            >(next_ptr) as *const _;
52194        }
52195        self
52196    }
52197}
52198impl<'a> core::ops::Deref for VideoDecodeInfoKHRBuilder<'a> {
52199    type Target = VideoDecodeInfoKHR;
52200    #[inline]
52201    fn deref(&self) -> &Self::Target {
52202        &self.inner
52203    }
52204}
52205impl<'a> core::ops::DerefMut for VideoDecodeInfoKHRBuilder<'a> {
52206    #[inline]
52207    fn deref_mut(&mut self) -> &mut Self::Target {
52208        &mut self.inner
52209    }
52210}
52211///Builder for [`PhysicalDeviceVideoMaintenance1FeaturesKHR`] with lifetime-tied pNext safety.
52212pub struct PhysicalDeviceVideoMaintenance1FeaturesKHRBuilder<'a> {
52213    inner: PhysicalDeviceVideoMaintenance1FeaturesKHR,
52214    _marker: core::marker::PhantomData<&'a ()>,
52215}
52216impl PhysicalDeviceVideoMaintenance1FeaturesKHR {
52217    /// Start building this struct; `s_type` is already set to the correct variant.
52218    #[inline]
52219    pub fn builder<'a>() -> PhysicalDeviceVideoMaintenance1FeaturesKHRBuilder<'a> {
52220        PhysicalDeviceVideoMaintenance1FeaturesKHRBuilder {
52221            inner: PhysicalDeviceVideoMaintenance1FeaturesKHR {
52222                s_type: StructureType::from_raw(1000515000i32),
52223                ..Default::default()
52224            },
52225            _marker: core::marker::PhantomData,
52226        }
52227    }
52228}
52229impl<'a> PhysicalDeviceVideoMaintenance1FeaturesKHRBuilder<'a> {
52230    #[inline]
52231    pub fn video_maintenance1(mut self, value: bool) -> Self {
52232        self.inner.video_maintenance1 = value as u32;
52233        self
52234    }
52235    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceVideoMaintenance1FeaturesKHR`]'s **Extended By** section for valid types.
52236    #[inline]
52237    pub fn push_next<T: ExtendsPhysicalDeviceVideoMaintenance1FeaturesKHR>(
52238        mut self,
52239        next: &'a mut T,
52240    ) -> Self {
52241        unsafe {
52242            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
52243            (*next_ptr).p_next = self.inner.p_next as *mut _;
52244            self.inner.p_next = <*mut BaseOutStructure>::cast::<
52245                core::ffi::c_void,
52246            >(next_ptr);
52247        }
52248        self
52249    }
52250}
52251impl<'a> core::ops::Deref for PhysicalDeviceVideoMaintenance1FeaturesKHRBuilder<'a> {
52252    type Target = PhysicalDeviceVideoMaintenance1FeaturesKHR;
52253    #[inline]
52254    fn deref(&self) -> &Self::Target {
52255        &self.inner
52256    }
52257}
52258impl<'a> core::ops::DerefMut for PhysicalDeviceVideoMaintenance1FeaturesKHRBuilder<'a> {
52259    #[inline]
52260    fn deref_mut(&mut self) -> &mut Self::Target {
52261        &mut self.inner
52262    }
52263}
52264///Builder for [`PhysicalDeviceVideoMaintenance2FeaturesKHR`] with lifetime-tied pNext safety.
52265pub struct PhysicalDeviceVideoMaintenance2FeaturesKHRBuilder<'a> {
52266    inner: PhysicalDeviceVideoMaintenance2FeaturesKHR,
52267    _marker: core::marker::PhantomData<&'a ()>,
52268}
52269impl PhysicalDeviceVideoMaintenance2FeaturesKHR {
52270    /// Start building this struct; `s_type` is already set to the correct variant.
52271    #[inline]
52272    pub fn builder<'a>() -> PhysicalDeviceVideoMaintenance2FeaturesKHRBuilder<'a> {
52273        PhysicalDeviceVideoMaintenance2FeaturesKHRBuilder {
52274            inner: PhysicalDeviceVideoMaintenance2FeaturesKHR {
52275                s_type: StructureType::from_raw(1000586000i32),
52276                ..Default::default()
52277            },
52278            _marker: core::marker::PhantomData,
52279        }
52280    }
52281}
52282impl<'a> PhysicalDeviceVideoMaintenance2FeaturesKHRBuilder<'a> {
52283    #[inline]
52284    pub fn video_maintenance2(mut self, value: bool) -> Self {
52285        self.inner.video_maintenance2 = value as u32;
52286        self
52287    }
52288    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceVideoMaintenance2FeaturesKHR`]'s **Extended By** section for valid types.
52289    #[inline]
52290    pub fn push_next<T: ExtendsPhysicalDeviceVideoMaintenance2FeaturesKHR>(
52291        mut self,
52292        next: &'a mut T,
52293    ) -> Self {
52294        unsafe {
52295            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
52296            (*next_ptr).p_next = self.inner.p_next as *mut _;
52297            self.inner.p_next = <*mut BaseOutStructure>::cast::<
52298                core::ffi::c_void,
52299            >(next_ptr);
52300        }
52301        self
52302    }
52303}
52304impl<'a> core::ops::Deref for PhysicalDeviceVideoMaintenance2FeaturesKHRBuilder<'a> {
52305    type Target = PhysicalDeviceVideoMaintenance2FeaturesKHR;
52306    #[inline]
52307    fn deref(&self) -> &Self::Target {
52308        &self.inner
52309    }
52310}
52311impl<'a> core::ops::DerefMut for PhysicalDeviceVideoMaintenance2FeaturesKHRBuilder<'a> {
52312    #[inline]
52313    fn deref_mut(&mut self) -> &mut Self::Target {
52314        &mut self.inner
52315    }
52316}
52317///Builder for [`VideoInlineQueryInfoKHR`] with lifetime-tied pNext safety.
52318pub struct VideoInlineQueryInfoKHRBuilder<'a> {
52319    inner: VideoInlineQueryInfoKHR,
52320    _marker: core::marker::PhantomData<&'a ()>,
52321}
52322impl VideoInlineQueryInfoKHR {
52323    /// Start building this struct; `s_type` is already set to the correct variant.
52324    #[inline]
52325    pub fn builder<'a>() -> VideoInlineQueryInfoKHRBuilder<'a> {
52326        VideoInlineQueryInfoKHRBuilder {
52327            inner: VideoInlineQueryInfoKHR {
52328                s_type: StructureType::from_raw(1000515001i32),
52329                ..Default::default()
52330            },
52331            _marker: core::marker::PhantomData,
52332        }
52333    }
52334}
52335impl<'a> VideoInlineQueryInfoKHRBuilder<'a> {
52336    #[inline]
52337    pub fn query_pool(mut self, value: QueryPool) -> Self {
52338        self.inner.query_pool = value;
52339        self
52340    }
52341    #[inline]
52342    pub fn first_query(mut self, value: u32) -> Self {
52343        self.inner.first_query = value;
52344        self
52345    }
52346    #[inline]
52347    pub fn query_count(mut self, value: u32) -> Self {
52348        self.inner.query_count = value;
52349        self
52350    }
52351    ///Prepend a struct to the pNext chain. See [`VideoInlineQueryInfoKHR`]'s **Extended By** section for valid types.
52352    #[inline]
52353    pub fn push_next<T: ExtendsVideoInlineQueryInfoKHR>(
52354        mut self,
52355        next: &'a mut T,
52356    ) -> Self {
52357        unsafe {
52358            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
52359            (*next_ptr).p_next = self.inner.p_next as *mut _;
52360            self.inner.p_next = <*mut BaseOutStructure>::cast::<
52361                core::ffi::c_void,
52362            >(next_ptr) as *const _;
52363        }
52364        self
52365    }
52366}
52367impl<'a> core::ops::Deref for VideoInlineQueryInfoKHRBuilder<'a> {
52368    type Target = VideoInlineQueryInfoKHR;
52369    #[inline]
52370    fn deref(&self) -> &Self::Target {
52371        &self.inner
52372    }
52373}
52374impl<'a> core::ops::DerefMut for VideoInlineQueryInfoKHRBuilder<'a> {
52375    #[inline]
52376    fn deref_mut(&mut self) -> &mut Self::Target {
52377        &mut self.inner
52378    }
52379}
52380///Builder for [`VideoDecodeH264ProfileInfoKHR`] with lifetime-tied pNext safety.
52381pub struct VideoDecodeH264ProfileInfoKHRBuilder<'a> {
52382    inner: VideoDecodeH264ProfileInfoKHR,
52383    _marker: core::marker::PhantomData<&'a ()>,
52384}
52385impl VideoDecodeH264ProfileInfoKHR {
52386    /// Start building this struct; `s_type` is already set to the correct variant.
52387    #[inline]
52388    pub fn builder<'a>() -> VideoDecodeH264ProfileInfoKHRBuilder<'a> {
52389        VideoDecodeH264ProfileInfoKHRBuilder {
52390            inner: VideoDecodeH264ProfileInfoKHR {
52391                s_type: StructureType::from_raw(1000040003i32),
52392                ..Default::default()
52393            },
52394            _marker: core::marker::PhantomData,
52395        }
52396    }
52397}
52398impl<'a> VideoDecodeH264ProfileInfoKHRBuilder<'a> {
52399    #[inline]
52400    pub fn std_profile_idc(mut self, value: StdVideoH264ProfileIdc) -> Self {
52401        self.inner.std_profile_idc = value;
52402        self
52403    }
52404    #[inline]
52405    pub fn picture_layout(
52406        mut self,
52407        value: VideoDecodeH264PictureLayoutFlagBitsKHR,
52408    ) -> Self {
52409        self.inner.picture_layout = value;
52410        self
52411    }
52412    ///Prepend a struct to the pNext chain. See [`VideoDecodeH264ProfileInfoKHR`]'s **Extended By** section for valid types.
52413    #[inline]
52414    pub fn push_next<T: ExtendsVideoDecodeH264ProfileInfoKHR>(
52415        mut self,
52416        next: &'a mut T,
52417    ) -> Self {
52418        unsafe {
52419            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
52420            (*next_ptr).p_next = self.inner.p_next as *mut _;
52421            self.inner.p_next = <*mut BaseOutStructure>::cast::<
52422                core::ffi::c_void,
52423            >(next_ptr) as *const _;
52424        }
52425        self
52426    }
52427}
52428impl<'a> core::ops::Deref for VideoDecodeH264ProfileInfoKHRBuilder<'a> {
52429    type Target = VideoDecodeH264ProfileInfoKHR;
52430    #[inline]
52431    fn deref(&self) -> &Self::Target {
52432        &self.inner
52433    }
52434}
52435impl<'a> core::ops::DerefMut for VideoDecodeH264ProfileInfoKHRBuilder<'a> {
52436    #[inline]
52437    fn deref_mut(&mut self) -> &mut Self::Target {
52438        &mut self.inner
52439    }
52440}
52441///Builder for [`VideoDecodeH264CapabilitiesKHR`] with lifetime-tied pNext safety.
52442pub struct VideoDecodeH264CapabilitiesKHRBuilder<'a> {
52443    inner: VideoDecodeH264CapabilitiesKHR,
52444    _marker: core::marker::PhantomData<&'a ()>,
52445}
52446impl VideoDecodeH264CapabilitiesKHR {
52447    /// Start building this struct; `s_type` is already set to the correct variant.
52448    #[inline]
52449    pub fn builder<'a>() -> VideoDecodeH264CapabilitiesKHRBuilder<'a> {
52450        VideoDecodeH264CapabilitiesKHRBuilder {
52451            inner: VideoDecodeH264CapabilitiesKHR {
52452                s_type: StructureType::from_raw(1000040000i32),
52453                ..Default::default()
52454            },
52455            _marker: core::marker::PhantomData,
52456        }
52457    }
52458}
52459impl<'a> VideoDecodeH264CapabilitiesKHRBuilder<'a> {
52460    #[inline]
52461    pub fn max_level_idc(mut self, value: StdVideoH264LevelIdc) -> Self {
52462        self.inner.max_level_idc = value;
52463        self
52464    }
52465    #[inline]
52466    pub fn field_offset_granularity(mut self, value: Offset2D) -> Self {
52467        self.inner.field_offset_granularity = value;
52468        self
52469    }
52470}
52471impl<'a> core::ops::Deref for VideoDecodeH264CapabilitiesKHRBuilder<'a> {
52472    type Target = VideoDecodeH264CapabilitiesKHR;
52473    #[inline]
52474    fn deref(&self) -> &Self::Target {
52475        &self.inner
52476    }
52477}
52478impl<'a> core::ops::DerefMut for VideoDecodeH264CapabilitiesKHRBuilder<'a> {
52479    #[inline]
52480    fn deref_mut(&mut self) -> &mut Self::Target {
52481        &mut self.inner
52482    }
52483}
52484///Builder for [`VideoDecodeH264SessionParametersAddInfoKHR`] with lifetime-tied pNext safety.
52485pub struct VideoDecodeH264SessionParametersAddInfoKHRBuilder<'a> {
52486    inner: VideoDecodeH264SessionParametersAddInfoKHR,
52487    _marker: core::marker::PhantomData<&'a ()>,
52488}
52489impl VideoDecodeH264SessionParametersAddInfoKHR {
52490    /// Start building this struct; `s_type` is already set to the correct variant.
52491    #[inline]
52492    pub fn builder<'a>() -> VideoDecodeH264SessionParametersAddInfoKHRBuilder<'a> {
52493        VideoDecodeH264SessionParametersAddInfoKHRBuilder {
52494            inner: VideoDecodeH264SessionParametersAddInfoKHR {
52495                s_type: StructureType::from_raw(1000040005i32),
52496                ..Default::default()
52497            },
52498            _marker: core::marker::PhantomData,
52499        }
52500    }
52501}
52502impl<'a> VideoDecodeH264SessionParametersAddInfoKHRBuilder<'a> {
52503    #[inline]
52504    pub fn std_sp_ss(mut self, slice: &'a [StdVideoH264SequenceParameterSet]) -> Self {
52505        self.inner.std_sps_count = slice.len() as u32;
52506        self.inner.p_std_sp_ss = slice.as_ptr();
52507        self
52508    }
52509    #[inline]
52510    pub fn std_pp_ss(mut self, slice: &'a [StdVideoH264PictureParameterSet]) -> Self {
52511        self.inner.std_pps_count = slice.len() as u32;
52512        self.inner.p_std_pp_ss = slice.as_ptr();
52513        self
52514    }
52515    ///Prepend a struct to the pNext chain. See [`VideoDecodeH264SessionParametersAddInfoKHR`]'s **Extended By** section for valid types.
52516    #[inline]
52517    pub fn push_next<T: ExtendsVideoDecodeH264SessionParametersAddInfoKHR>(
52518        mut self,
52519        next: &'a mut T,
52520    ) -> Self {
52521        unsafe {
52522            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
52523            (*next_ptr).p_next = self.inner.p_next as *mut _;
52524            self.inner.p_next = <*mut BaseOutStructure>::cast::<
52525                core::ffi::c_void,
52526            >(next_ptr) as *const _;
52527        }
52528        self
52529    }
52530}
52531impl<'a> core::ops::Deref for VideoDecodeH264SessionParametersAddInfoKHRBuilder<'a> {
52532    type Target = VideoDecodeH264SessionParametersAddInfoKHR;
52533    #[inline]
52534    fn deref(&self) -> &Self::Target {
52535        &self.inner
52536    }
52537}
52538impl<'a> core::ops::DerefMut for VideoDecodeH264SessionParametersAddInfoKHRBuilder<'a> {
52539    #[inline]
52540    fn deref_mut(&mut self) -> &mut Self::Target {
52541        &mut self.inner
52542    }
52543}
52544///Builder for [`VideoDecodeH264SessionParametersCreateInfoKHR`] with lifetime-tied pNext safety.
52545pub struct VideoDecodeH264SessionParametersCreateInfoKHRBuilder<'a> {
52546    inner: VideoDecodeH264SessionParametersCreateInfoKHR,
52547    _marker: core::marker::PhantomData<&'a ()>,
52548}
52549impl VideoDecodeH264SessionParametersCreateInfoKHR {
52550    /// Start building this struct; `s_type` is already set to the correct variant.
52551    #[inline]
52552    pub fn builder<'a>() -> VideoDecodeH264SessionParametersCreateInfoKHRBuilder<'a> {
52553        VideoDecodeH264SessionParametersCreateInfoKHRBuilder {
52554            inner: VideoDecodeH264SessionParametersCreateInfoKHR {
52555                s_type: StructureType::from_raw(1000040004i32),
52556                ..Default::default()
52557            },
52558            _marker: core::marker::PhantomData,
52559        }
52560    }
52561}
52562impl<'a> VideoDecodeH264SessionParametersCreateInfoKHRBuilder<'a> {
52563    #[inline]
52564    pub fn max_std_sps_count(mut self, value: u32) -> Self {
52565        self.inner.max_std_sps_count = value;
52566        self
52567    }
52568    #[inline]
52569    pub fn max_std_pps_count(mut self, value: u32) -> Self {
52570        self.inner.max_std_pps_count = value;
52571        self
52572    }
52573    #[inline]
52574    pub fn parameters_add_info(
52575        mut self,
52576        value: &'a VideoDecodeH264SessionParametersAddInfoKHR,
52577    ) -> Self {
52578        self.inner.p_parameters_add_info = value;
52579        self
52580    }
52581    ///Prepend a struct to the pNext chain. See [`VideoDecodeH264SessionParametersCreateInfoKHR`]'s **Extended By** section for valid types.
52582    #[inline]
52583    pub fn push_next<T: ExtendsVideoDecodeH264SessionParametersCreateInfoKHR>(
52584        mut self,
52585        next: &'a mut T,
52586    ) -> Self {
52587        unsafe {
52588            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
52589            (*next_ptr).p_next = self.inner.p_next as *mut _;
52590            self.inner.p_next = <*mut BaseOutStructure>::cast::<
52591                core::ffi::c_void,
52592            >(next_ptr) as *const _;
52593        }
52594        self
52595    }
52596}
52597impl<'a> core::ops::Deref for VideoDecodeH264SessionParametersCreateInfoKHRBuilder<'a> {
52598    type Target = VideoDecodeH264SessionParametersCreateInfoKHR;
52599    #[inline]
52600    fn deref(&self) -> &Self::Target {
52601        &self.inner
52602    }
52603}
52604impl<'a> core::ops::DerefMut
52605for VideoDecodeH264SessionParametersCreateInfoKHRBuilder<'a> {
52606    #[inline]
52607    fn deref_mut(&mut self) -> &mut Self::Target {
52608        &mut self.inner
52609    }
52610}
52611///Builder for [`VideoDecodeH264InlineSessionParametersInfoKHR`] with lifetime-tied pNext safety.
52612pub struct VideoDecodeH264InlineSessionParametersInfoKHRBuilder<'a> {
52613    inner: VideoDecodeH264InlineSessionParametersInfoKHR,
52614    _marker: core::marker::PhantomData<&'a ()>,
52615}
52616impl VideoDecodeH264InlineSessionParametersInfoKHR {
52617    /// Start building this struct; `s_type` is already set to the correct variant.
52618    #[inline]
52619    pub fn builder<'a>() -> VideoDecodeH264InlineSessionParametersInfoKHRBuilder<'a> {
52620        VideoDecodeH264InlineSessionParametersInfoKHRBuilder {
52621            inner: VideoDecodeH264InlineSessionParametersInfoKHR {
52622                s_type: StructureType::from_raw(1000586001i32),
52623                ..Default::default()
52624            },
52625            _marker: core::marker::PhantomData,
52626        }
52627    }
52628}
52629impl<'a> VideoDecodeH264InlineSessionParametersInfoKHRBuilder<'a> {
52630    #[inline]
52631    pub fn std_sps(mut self, value: *const StdVideoH264SequenceParameterSet) -> Self {
52632        self.inner.p_std_sps = value;
52633        self
52634    }
52635    #[inline]
52636    pub fn std_pps(mut self, value: *const StdVideoH264PictureParameterSet) -> Self {
52637        self.inner.p_std_pps = value;
52638        self
52639    }
52640    ///Prepend a struct to the pNext chain. See [`VideoDecodeH264InlineSessionParametersInfoKHR`]'s **Extended By** section for valid types.
52641    #[inline]
52642    pub fn push_next<T: ExtendsVideoDecodeH264InlineSessionParametersInfoKHR>(
52643        mut self,
52644        next: &'a mut T,
52645    ) -> Self {
52646        unsafe {
52647            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
52648            (*next_ptr).p_next = self.inner.p_next as *mut _;
52649            self.inner.p_next = <*mut BaseOutStructure>::cast::<
52650                core::ffi::c_void,
52651            >(next_ptr) as *const _;
52652        }
52653        self
52654    }
52655}
52656impl<'a> core::ops::Deref for VideoDecodeH264InlineSessionParametersInfoKHRBuilder<'a> {
52657    type Target = VideoDecodeH264InlineSessionParametersInfoKHR;
52658    #[inline]
52659    fn deref(&self) -> &Self::Target {
52660        &self.inner
52661    }
52662}
52663impl<'a> core::ops::DerefMut
52664for VideoDecodeH264InlineSessionParametersInfoKHRBuilder<'a> {
52665    #[inline]
52666    fn deref_mut(&mut self) -> &mut Self::Target {
52667        &mut self.inner
52668    }
52669}
52670///Builder for [`VideoDecodeH264PictureInfoKHR`] with lifetime-tied pNext safety.
52671pub struct VideoDecodeH264PictureInfoKHRBuilder<'a> {
52672    inner: VideoDecodeH264PictureInfoKHR,
52673    _marker: core::marker::PhantomData<&'a ()>,
52674}
52675impl VideoDecodeH264PictureInfoKHR {
52676    /// Start building this struct; `s_type` is already set to the correct variant.
52677    #[inline]
52678    pub fn builder<'a>() -> VideoDecodeH264PictureInfoKHRBuilder<'a> {
52679        VideoDecodeH264PictureInfoKHRBuilder {
52680            inner: VideoDecodeH264PictureInfoKHR {
52681                s_type: StructureType::from_raw(1000040001i32),
52682                ..Default::default()
52683            },
52684            _marker: core::marker::PhantomData,
52685        }
52686    }
52687}
52688impl<'a> VideoDecodeH264PictureInfoKHRBuilder<'a> {
52689    #[inline]
52690    pub fn std_picture_info(
52691        mut self,
52692        value: *const StdVideoDecodeH264PictureInfo,
52693    ) -> Self {
52694        self.inner.p_std_picture_info = value;
52695        self
52696    }
52697    #[inline]
52698    pub fn slice_offsets(mut self, slice: &'a [u32]) -> Self {
52699        self.inner.slice_count = slice.len() as u32;
52700        self.inner.p_slice_offsets = slice.as_ptr();
52701        self
52702    }
52703    ///Prepend a struct to the pNext chain. See [`VideoDecodeH264PictureInfoKHR`]'s **Extended By** section for valid types.
52704    #[inline]
52705    pub fn push_next<T: ExtendsVideoDecodeH264PictureInfoKHR>(
52706        mut self,
52707        next: &'a mut T,
52708    ) -> Self {
52709        unsafe {
52710            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
52711            (*next_ptr).p_next = self.inner.p_next as *mut _;
52712            self.inner.p_next = <*mut BaseOutStructure>::cast::<
52713                core::ffi::c_void,
52714            >(next_ptr) as *const _;
52715        }
52716        self
52717    }
52718}
52719impl<'a> core::ops::Deref for VideoDecodeH264PictureInfoKHRBuilder<'a> {
52720    type Target = VideoDecodeH264PictureInfoKHR;
52721    #[inline]
52722    fn deref(&self) -> &Self::Target {
52723        &self.inner
52724    }
52725}
52726impl<'a> core::ops::DerefMut for VideoDecodeH264PictureInfoKHRBuilder<'a> {
52727    #[inline]
52728    fn deref_mut(&mut self) -> &mut Self::Target {
52729        &mut self.inner
52730    }
52731}
52732///Builder for [`VideoDecodeH264DpbSlotInfoKHR`] with lifetime-tied pNext safety.
52733pub struct VideoDecodeH264DpbSlotInfoKHRBuilder<'a> {
52734    inner: VideoDecodeH264DpbSlotInfoKHR,
52735    _marker: core::marker::PhantomData<&'a ()>,
52736}
52737impl VideoDecodeH264DpbSlotInfoKHR {
52738    /// Start building this struct; `s_type` is already set to the correct variant.
52739    #[inline]
52740    pub fn builder<'a>() -> VideoDecodeH264DpbSlotInfoKHRBuilder<'a> {
52741        VideoDecodeH264DpbSlotInfoKHRBuilder {
52742            inner: VideoDecodeH264DpbSlotInfoKHR {
52743                s_type: StructureType::from_raw(1000040006i32),
52744                ..Default::default()
52745            },
52746            _marker: core::marker::PhantomData,
52747        }
52748    }
52749}
52750impl<'a> VideoDecodeH264DpbSlotInfoKHRBuilder<'a> {
52751    #[inline]
52752    pub fn std_reference_info(
52753        mut self,
52754        value: *const StdVideoDecodeH264ReferenceInfo,
52755    ) -> Self {
52756        self.inner.p_std_reference_info = value;
52757        self
52758    }
52759    ///Prepend a struct to the pNext chain. See [`VideoDecodeH264DpbSlotInfoKHR`]'s **Extended By** section for valid types.
52760    #[inline]
52761    pub fn push_next<T: ExtendsVideoDecodeH264DpbSlotInfoKHR>(
52762        mut self,
52763        next: &'a mut T,
52764    ) -> Self {
52765        unsafe {
52766            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
52767            (*next_ptr).p_next = self.inner.p_next as *mut _;
52768            self.inner.p_next = <*mut BaseOutStructure>::cast::<
52769                core::ffi::c_void,
52770            >(next_ptr) as *const _;
52771        }
52772        self
52773    }
52774}
52775impl<'a> core::ops::Deref for VideoDecodeH264DpbSlotInfoKHRBuilder<'a> {
52776    type Target = VideoDecodeH264DpbSlotInfoKHR;
52777    #[inline]
52778    fn deref(&self) -> &Self::Target {
52779        &self.inner
52780    }
52781}
52782impl<'a> core::ops::DerefMut for VideoDecodeH264DpbSlotInfoKHRBuilder<'a> {
52783    #[inline]
52784    fn deref_mut(&mut self) -> &mut Self::Target {
52785        &mut self.inner
52786    }
52787}
52788///Builder for [`VideoDecodeH265ProfileInfoKHR`] with lifetime-tied pNext safety.
52789pub struct VideoDecodeH265ProfileInfoKHRBuilder<'a> {
52790    inner: VideoDecodeH265ProfileInfoKHR,
52791    _marker: core::marker::PhantomData<&'a ()>,
52792}
52793impl VideoDecodeH265ProfileInfoKHR {
52794    /// Start building this struct; `s_type` is already set to the correct variant.
52795    #[inline]
52796    pub fn builder<'a>() -> VideoDecodeH265ProfileInfoKHRBuilder<'a> {
52797        VideoDecodeH265ProfileInfoKHRBuilder {
52798            inner: VideoDecodeH265ProfileInfoKHR {
52799                s_type: StructureType::from_raw(1000187003i32),
52800                ..Default::default()
52801            },
52802            _marker: core::marker::PhantomData,
52803        }
52804    }
52805}
52806impl<'a> VideoDecodeH265ProfileInfoKHRBuilder<'a> {
52807    #[inline]
52808    pub fn std_profile_idc(mut self, value: StdVideoH265ProfileIdc) -> Self {
52809        self.inner.std_profile_idc = value;
52810        self
52811    }
52812    ///Prepend a struct to the pNext chain. See [`VideoDecodeH265ProfileInfoKHR`]'s **Extended By** section for valid types.
52813    #[inline]
52814    pub fn push_next<T: ExtendsVideoDecodeH265ProfileInfoKHR>(
52815        mut self,
52816        next: &'a mut T,
52817    ) -> Self {
52818        unsafe {
52819            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
52820            (*next_ptr).p_next = self.inner.p_next as *mut _;
52821            self.inner.p_next = <*mut BaseOutStructure>::cast::<
52822                core::ffi::c_void,
52823            >(next_ptr) as *const _;
52824        }
52825        self
52826    }
52827}
52828impl<'a> core::ops::Deref for VideoDecodeH265ProfileInfoKHRBuilder<'a> {
52829    type Target = VideoDecodeH265ProfileInfoKHR;
52830    #[inline]
52831    fn deref(&self) -> &Self::Target {
52832        &self.inner
52833    }
52834}
52835impl<'a> core::ops::DerefMut for VideoDecodeH265ProfileInfoKHRBuilder<'a> {
52836    #[inline]
52837    fn deref_mut(&mut self) -> &mut Self::Target {
52838        &mut self.inner
52839    }
52840}
52841///Builder for [`VideoDecodeH265CapabilitiesKHR`] with lifetime-tied pNext safety.
52842pub struct VideoDecodeH265CapabilitiesKHRBuilder<'a> {
52843    inner: VideoDecodeH265CapabilitiesKHR,
52844    _marker: core::marker::PhantomData<&'a ()>,
52845}
52846impl VideoDecodeH265CapabilitiesKHR {
52847    /// Start building this struct; `s_type` is already set to the correct variant.
52848    #[inline]
52849    pub fn builder<'a>() -> VideoDecodeH265CapabilitiesKHRBuilder<'a> {
52850        VideoDecodeH265CapabilitiesKHRBuilder {
52851            inner: VideoDecodeH265CapabilitiesKHR {
52852                s_type: StructureType::from_raw(1000187000i32),
52853                ..Default::default()
52854            },
52855            _marker: core::marker::PhantomData,
52856        }
52857    }
52858}
52859impl<'a> VideoDecodeH265CapabilitiesKHRBuilder<'a> {
52860    #[inline]
52861    pub fn max_level_idc(mut self, value: StdVideoH265LevelIdc) -> Self {
52862        self.inner.max_level_idc = value;
52863        self
52864    }
52865}
52866impl<'a> core::ops::Deref for VideoDecodeH265CapabilitiesKHRBuilder<'a> {
52867    type Target = VideoDecodeH265CapabilitiesKHR;
52868    #[inline]
52869    fn deref(&self) -> &Self::Target {
52870        &self.inner
52871    }
52872}
52873impl<'a> core::ops::DerefMut for VideoDecodeH265CapabilitiesKHRBuilder<'a> {
52874    #[inline]
52875    fn deref_mut(&mut self) -> &mut Self::Target {
52876        &mut self.inner
52877    }
52878}
52879///Builder for [`VideoDecodeH265SessionParametersAddInfoKHR`] with lifetime-tied pNext safety.
52880pub struct VideoDecodeH265SessionParametersAddInfoKHRBuilder<'a> {
52881    inner: VideoDecodeH265SessionParametersAddInfoKHR,
52882    _marker: core::marker::PhantomData<&'a ()>,
52883}
52884impl VideoDecodeH265SessionParametersAddInfoKHR {
52885    /// Start building this struct; `s_type` is already set to the correct variant.
52886    #[inline]
52887    pub fn builder<'a>() -> VideoDecodeH265SessionParametersAddInfoKHRBuilder<'a> {
52888        VideoDecodeH265SessionParametersAddInfoKHRBuilder {
52889            inner: VideoDecodeH265SessionParametersAddInfoKHR {
52890                s_type: StructureType::from_raw(1000187002i32),
52891                ..Default::default()
52892            },
52893            _marker: core::marker::PhantomData,
52894        }
52895    }
52896}
52897impl<'a> VideoDecodeH265SessionParametersAddInfoKHRBuilder<'a> {
52898    #[inline]
52899    pub fn std_vp_ss(mut self, slice: &'a [StdVideoH265VideoParameterSet]) -> Self {
52900        self.inner.std_vps_count = slice.len() as u32;
52901        self.inner.p_std_vp_ss = slice.as_ptr();
52902        self
52903    }
52904    #[inline]
52905    pub fn std_sp_ss(mut self, slice: &'a [StdVideoH265SequenceParameterSet]) -> Self {
52906        self.inner.std_sps_count = slice.len() as u32;
52907        self.inner.p_std_sp_ss = slice.as_ptr();
52908        self
52909    }
52910    #[inline]
52911    pub fn std_pp_ss(mut self, slice: &'a [StdVideoH265PictureParameterSet]) -> Self {
52912        self.inner.std_pps_count = slice.len() as u32;
52913        self.inner.p_std_pp_ss = slice.as_ptr();
52914        self
52915    }
52916    ///Prepend a struct to the pNext chain. See [`VideoDecodeH265SessionParametersAddInfoKHR`]'s **Extended By** section for valid types.
52917    #[inline]
52918    pub fn push_next<T: ExtendsVideoDecodeH265SessionParametersAddInfoKHR>(
52919        mut self,
52920        next: &'a mut T,
52921    ) -> Self {
52922        unsafe {
52923            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
52924            (*next_ptr).p_next = self.inner.p_next as *mut _;
52925            self.inner.p_next = <*mut BaseOutStructure>::cast::<
52926                core::ffi::c_void,
52927            >(next_ptr) as *const _;
52928        }
52929        self
52930    }
52931}
52932impl<'a> core::ops::Deref for VideoDecodeH265SessionParametersAddInfoKHRBuilder<'a> {
52933    type Target = VideoDecodeH265SessionParametersAddInfoKHR;
52934    #[inline]
52935    fn deref(&self) -> &Self::Target {
52936        &self.inner
52937    }
52938}
52939impl<'a> core::ops::DerefMut for VideoDecodeH265SessionParametersAddInfoKHRBuilder<'a> {
52940    #[inline]
52941    fn deref_mut(&mut self) -> &mut Self::Target {
52942        &mut self.inner
52943    }
52944}
52945///Builder for [`VideoDecodeH265SessionParametersCreateInfoKHR`] with lifetime-tied pNext safety.
52946pub struct VideoDecodeH265SessionParametersCreateInfoKHRBuilder<'a> {
52947    inner: VideoDecodeH265SessionParametersCreateInfoKHR,
52948    _marker: core::marker::PhantomData<&'a ()>,
52949}
52950impl VideoDecodeH265SessionParametersCreateInfoKHR {
52951    /// Start building this struct; `s_type` is already set to the correct variant.
52952    #[inline]
52953    pub fn builder<'a>() -> VideoDecodeH265SessionParametersCreateInfoKHRBuilder<'a> {
52954        VideoDecodeH265SessionParametersCreateInfoKHRBuilder {
52955            inner: VideoDecodeH265SessionParametersCreateInfoKHR {
52956                s_type: StructureType::from_raw(1000187001i32),
52957                ..Default::default()
52958            },
52959            _marker: core::marker::PhantomData,
52960        }
52961    }
52962}
52963impl<'a> VideoDecodeH265SessionParametersCreateInfoKHRBuilder<'a> {
52964    #[inline]
52965    pub fn max_std_vps_count(mut self, value: u32) -> Self {
52966        self.inner.max_std_vps_count = value;
52967        self
52968    }
52969    #[inline]
52970    pub fn max_std_sps_count(mut self, value: u32) -> Self {
52971        self.inner.max_std_sps_count = value;
52972        self
52973    }
52974    #[inline]
52975    pub fn max_std_pps_count(mut self, value: u32) -> Self {
52976        self.inner.max_std_pps_count = value;
52977        self
52978    }
52979    #[inline]
52980    pub fn parameters_add_info(
52981        mut self,
52982        value: &'a VideoDecodeH265SessionParametersAddInfoKHR,
52983    ) -> Self {
52984        self.inner.p_parameters_add_info = value;
52985        self
52986    }
52987    ///Prepend a struct to the pNext chain. See [`VideoDecodeH265SessionParametersCreateInfoKHR`]'s **Extended By** section for valid types.
52988    #[inline]
52989    pub fn push_next<T: ExtendsVideoDecodeH265SessionParametersCreateInfoKHR>(
52990        mut self,
52991        next: &'a mut T,
52992    ) -> Self {
52993        unsafe {
52994            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
52995            (*next_ptr).p_next = self.inner.p_next as *mut _;
52996            self.inner.p_next = <*mut BaseOutStructure>::cast::<
52997                core::ffi::c_void,
52998            >(next_ptr) as *const _;
52999        }
53000        self
53001    }
53002}
53003impl<'a> core::ops::Deref for VideoDecodeH265SessionParametersCreateInfoKHRBuilder<'a> {
53004    type Target = VideoDecodeH265SessionParametersCreateInfoKHR;
53005    #[inline]
53006    fn deref(&self) -> &Self::Target {
53007        &self.inner
53008    }
53009}
53010impl<'a> core::ops::DerefMut
53011for VideoDecodeH265SessionParametersCreateInfoKHRBuilder<'a> {
53012    #[inline]
53013    fn deref_mut(&mut self) -> &mut Self::Target {
53014        &mut self.inner
53015    }
53016}
53017///Builder for [`VideoDecodeH265InlineSessionParametersInfoKHR`] with lifetime-tied pNext safety.
53018pub struct VideoDecodeH265InlineSessionParametersInfoKHRBuilder<'a> {
53019    inner: VideoDecodeH265InlineSessionParametersInfoKHR,
53020    _marker: core::marker::PhantomData<&'a ()>,
53021}
53022impl VideoDecodeH265InlineSessionParametersInfoKHR {
53023    /// Start building this struct; `s_type` is already set to the correct variant.
53024    #[inline]
53025    pub fn builder<'a>() -> VideoDecodeH265InlineSessionParametersInfoKHRBuilder<'a> {
53026        VideoDecodeH265InlineSessionParametersInfoKHRBuilder {
53027            inner: VideoDecodeH265InlineSessionParametersInfoKHR {
53028                s_type: StructureType::from_raw(1000586002i32),
53029                ..Default::default()
53030            },
53031            _marker: core::marker::PhantomData,
53032        }
53033    }
53034}
53035impl<'a> VideoDecodeH265InlineSessionParametersInfoKHRBuilder<'a> {
53036    #[inline]
53037    pub fn std_vps(mut self, value: *const StdVideoH265VideoParameterSet) -> Self {
53038        self.inner.p_std_vps = value;
53039        self
53040    }
53041    #[inline]
53042    pub fn std_sps(mut self, value: *const StdVideoH265SequenceParameterSet) -> Self {
53043        self.inner.p_std_sps = value;
53044        self
53045    }
53046    #[inline]
53047    pub fn std_pps(mut self, value: *const StdVideoH265PictureParameterSet) -> Self {
53048        self.inner.p_std_pps = value;
53049        self
53050    }
53051    ///Prepend a struct to the pNext chain. See [`VideoDecodeH265InlineSessionParametersInfoKHR`]'s **Extended By** section for valid types.
53052    #[inline]
53053    pub fn push_next<T: ExtendsVideoDecodeH265InlineSessionParametersInfoKHR>(
53054        mut self,
53055        next: &'a mut T,
53056    ) -> Self {
53057        unsafe {
53058            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
53059            (*next_ptr).p_next = self.inner.p_next as *mut _;
53060            self.inner.p_next = <*mut BaseOutStructure>::cast::<
53061                core::ffi::c_void,
53062            >(next_ptr) as *const _;
53063        }
53064        self
53065    }
53066}
53067impl<'a> core::ops::Deref for VideoDecodeH265InlineSessionParametersInfoKHRBuilder<'a> {
53068    type Target = VideoDecodeH265InlineSessionParametersInfoKHR;
53069    #[inline]
53070    fn deref(&self) -> &Self::Target {
53071        &self.inner
53072    }
53073}
53074impl<'a> core::ops::DerefMut
53075for VideoDecodeH265InlineSessionParametersInfoKHRBuilder<'a> {
53076    #[inline]
53077    fn deref_mut(&mut self) -> &mut Self::Target {
53078        &mut self.inner
53079    }
53080}
53081///Builder for [`VideoDecodeH265PictureInfoKHR`] with lifetime-tied pNext safety.
53082pub struct VideoDecodeH265PictureInfoKHRBuilder<'a> {
53083    inner: VideoDecodeH265PictureInfoKHR,
53084    _marker: core::marker::PhantomData<&'a ()>,
53085}
53086impl VideoDecodeH265PictureInfoKHR {
53087    /// Start building this struct; `s_type` is already set to the correct variant.
53088    #[inline]
53089    pub fn builder<'a>() -> VideoDecodeH265PictureInfoKHRBuilder<'a> {
53090        VideoDecodeH265PictureInfoKHRBuilder {
53091            inner: VideoDecodeH265PictureInfoKHR {
53092                s_type: StructureType::from_raw(1000187004i32),
53093                ..Default::default()
53094            },
53095            _marker: core::marker::PhantomData,
53096        }
53097    }
53098}
53099impl<'a> VideoDecodeH265PictureInfoKHRBuilder<'a> {
53100    #[inline]
53101    pub fn std_picture_info(
53102        mut self,
53103        value: *const StdVideoDecodeH265PictureInfo,
53104    ) -> Self {
53105        self.inner.p_std_picture_info = value;
53106        self
53107    }
53108    #[inline]
53109    pub fn slice_segment_offsets(mut self, slice: &'a [u32]) -> Self {
53110        self.inner.slice_segment_count = slice.len() as u32;
53111        self.inner.p_slice_segment_offsets = slice.as_ptr();
53112        self
53113    }
53114    ///Prepend a struct to the pNext chain. See [`VideoDecodeH265PictureInfoKHR`]'s **Extended By** section for valid types.
53115    #[inline]
53116    pub fn push_next<T: ExtendsVideoDecodeH265PictureInfoKHR>(
53117        mut self,
53118        next: &'a mut T,
53119    ) -> Self {
53120        unsafe {
53121            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
53122            (*next_ptr).p_next = self.inner.p_next as *mut _;
53123            self.inner.p_next = <*mut BaseOutStructure>::cast::<
53124                core::ffi::c_void,
53125            >(next_ptr) as *const _;
53126        }
53127        self
53128    }
53129}
53130impl<'a> core::ops::Deref for VideoDecodeH265PictureInfoKHRBuilder<'a> {
53131    type Target = VideoDecodeH265PictureInfoKHR;
53132    #[inline]
53133    fn deref(&self) -> &Self::Target {
53134        &self.inner
53135    }
53136}
53137impl<'a> core::ops::DerefMut for VideoDecodeH265PictureInfoKHRBuilder<'a> {
53138    #[inline]
53139    fn deref_mut(&mut self) -> &mut Self::Target {
53140        &mut self.inner
53141    }
53142}
53143///Builder for [`VideoDecodeH265DpbSlotInfoKHR`] with lifetime-tied pNext safety.
53144pub struct VideoDecodeH265DpbSlotInfoKHRBuilder<'a> {
53145    inner: VideoDecodeH265DpbSlotInfoKHR,
53146    _marker: core::marker::PhantomData<&'a ()>,
53147}
53148impl VideoDecodeH265DpbSlotInfoKHR {
53149    /// Start building this struct; `s_type` is already set to the correct variant.
53150    #[inline]
53151    pub fn builder<'a>() -> VideoDecodeH265DpbSlotInfoKHRBuilder<'a> {
53152        VideoDecodeH265DpbSlotInfoKHRBuilder {
53153            inner: VideoDecodeH265DpbSlotInfoKHR {
53154                s_type: StructureType::from_raw(1000187005i32),
53155                ..Default::default()
53156            },
53157            _marker: core::marker::PhantomData,
53158        }
53159    }
53160}
53161impl<'a> VideoDecodeH265DpbSlotInfoKHRBuilder<'a> {
53162    #[inline]
53163    pub fn std_reference_info(
53164        mut self,
53165        value: *const StdVideoDecodeH265ReferenceInfo,
53166    ) -> Self {
53167        self.inner.p_std_reference_info = value;
53168        self
53169    }
53170    ///Prepend a struct to the pNext chain. See [`VideoDecodeH265DpbSlotInfoKHR`]'s **Extended By** section for valid types.
53171    #[inline]
53172    pub fn push_next<T: ExtendsVideoDecodeH265DpbSlotInfoKHR>(
53173        mut self,
53174        next: &'a mut T,
53175    ) -> Self {
53176        unsafe {
53177            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
53178            (*next_ptr).p_next = self.inner.p_next as *mut _;
53179            self.inner.p_next = <*mut BaseOutStructure>::cast::<
53180                core::ffi::c_void,
53181            >(next_ptr) as *const _;
53182        }
53183        self
53184    }
53185}
53186impl<'a> core::ops::Deref for VideoDecodeH265DpbSlotInfoKHRBuilder<'a> {
53187    type Target = VideoDecodeH265DpbSlotInfoKHR;
53188    #[inline]
53189    fn deref(&self) -> &Self::Target {
53190        &self.inner
53191    }
53192}
53193impl<'a> core::ops::DerefMut for VideoDecodeH265DpbSlotInfoKHRBuilder<'a> {
53194    #[inline]
53195    fn deref_mut(&mut self) -> &mut Self::Target {
53196        &mut self.inner
53197    }
53198}
53199///Builder for [`PhysicalDeviceVideoDecodeVP9FeaturesKHR`] with lifetime-tied pNext safety.
53200pub struct PhysicalDeviceVideoDecodeVP9FeaturesKHRBuilder<'a> {
53201    inner: PhysicalDeviceVideoDecodeVP9FeaturesKHR,
53202    _marker: core::marker::PhantomData<&'a ()>,
53203}
53204impl PhysicalDeviceVideoDecodeVP9FeaturesKHR {
53205    /// Start building this struct; `s_type` is already set to the correct variant.
53206    #[inline]
53207    pub fn builder<'a>() -> PhysicalDeviceVideoDecodeVP9FeaturesKHRBuilder<'a> {
53208        PhysicalDeviceVideoDecodeVP9FeaturesKHRBuilder {
53209            inner: PhysicalDeviceVideoDecodeVP9FeaturesKHR {
53210                s_type: StructureType::from_raw(1000514000i32),
53211                ..Default::default()
53212            },
53213            _marker: core::marker::PhantomData,
53214        }
53215    }
53216}
53217impl<'a> PhysicalDeviceVideoDecodeVP9FeaturesKHRBuilder<'a> {
53218    #[inline]
53219    pub fn video_decode_vp9(mut self, value: bool) -> Self {
53220        self.inner.video_decode_vp9 = value as u32;
53221        self
53222    }
53223    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceVideoDecodeVP9FeaturesKHR`]'s **Extended By** section for valid types.
53224    #[inline]
53225    pub fn push_next<T: ExtendsPhysicalDeviceVideoDecodeVP9FeaturesKHR>(
53226        mut self,
53227        next: &'a mut T,
53228    ) -> Self {
53229        unsafe {
53230            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
53231            (*next_ptr).p_next = self.inner.p_next as *mut _;
53232            self.inner.p_next = <*mut BaseOutStructure>::cast::<
53233                core::ffi::c_void,
53234            >(next_ptr);
53235        }
53236        self
53237    }
53238}
53239impl<'a> core::ops::Deref for PhysicalDeviceVideoDecodeVP9FeaturesKHRBuilder<'a> {
53240    type Target = PhysicalDeviceVideoDecodeVP9FeaturesKHR;
53241    #[inline]
53242    fn deref(&self) -> &Self::Target {
53243        &self.inner
53244    }
53245}
53246impl<'a> core::ops::DerefMut for PhysicalDeviceVideoDecodeVP9FeaturesKHRBuilder<'a> {
53247    #[inline]
53248    fn deref_mut(&mut self) -> &mut Self::Target {
53249        &mut self.inner
53250    }
53251}
53252///Builder for [`VideoDecodeVP9ProfileInfoKHR`] with lifetime-tied pNext safety.
53253pub struct VideoDecodeVP9ProfileInfoKHRBuilder<'a> {
53254    inner: VideoDecodeVP9ProfileInfoKHR,
53255    _marker: core::marker::PhantomData<&'a ()>,
53256}
53257impl VideoDecodeVP9ProfileInfoKHR {
53258    /// Start building this struct; `s_type` is already set to the correct variant.
53259    #[inline]
53260    pub fn builder<'a>() -> VideoDecodeVP9ProfileInfoKHRBuilder<'a> {
53261        VideoDecodeVP9ProfileInfoKHRBuilder {
53262            inner: VideoDecodeVP9ProfileInfoKHR {
53263                s_type: StructureType::from_raw(1000514003i32),
53264                ..Default::default()
53265            },
53266            _marker: core::marker::PhantomData,
53267        }
53268    }
53269}
53270impl<'a> VideoDecodeVP9ProfileInfoKHRBuilder<'a> {
53271    #[inline]
53272    pub fn std_profile(mut self, value: StdVideoVP9Profile) -> Self {
53273        self.inner.std_profile = value;
53274        self
53275    }
53276    ///Prepend a struct to the pNext chain. See [`VideoDecodeVP9ProfileInfoKHR`]'s **Extended By** section for valid types.
53277    #[inline]
53278    pub fn push_next<T: ExtendsVideoDecodeVP9ProfileInfoKHR>(
53279        mut self,
53280        next: &'a mut T,
53281    ) -> Self {
53282        unsafe {
53283            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
53284            (*next_ptr).p_next = self.inner.p_next as *mut _;
53285            self.inner.p_next = <*mut BaseOutStructure>::cast::<
53286                core::ffi::c_void,
53287            >(next_ptr) as *const _;
53288        }
53289        self
53290    }
53291}
53292impl<'a> core::ops::Deref for VideoDecodeVP9ProfileInfoKHRBuilder<'a> {
53293    type Target = VideoDecodeVP9ProfileInfoKHR;
53294    #[inline]
53295    fn deref(&self) -> &Self::Target {
53296        &self.inner
53297    }
53298}
53299impl<'a> core::ops::DerefMut for VideoDecodeVP9ProfileInfoKHRBuilder<'a> {
53300    #[inline]
53301    fn deref_mut(&mut self) -> &mut Self::Target {
53302        &mut self.inner
53303    }
53304}
53305///Builder for [`VideoDecodeVP9CapabilitiesKHR`] with lifetime-tied pNext safety.
53306pub struct VideoDecodeVP9CapabilitiesKHRBuilder<'a> {
53307    inner: VideoDecodeVP9CapabilitiesKHR,
53308    _marker: core::marker::PhantomData<&'a ()>,
53309}
53310impl VideoDecodeVP9CapabilitiesKHR {
53311    /// Start building this struct; `s_type` is already set to the correct variant.
53312    #[inline]
53313    pub fn builder<'a>() -> VideoDecodeVP9CapabilitiesKHRBuilder<'a> {
53314        VideoDecodeVP9CapabilitiesKHRBuilder {
53315            inner: VideoDecodeVP9CapabilitiesKHR {
53316                s_type: StructureType::from_raw(1000514001i32),
53317                ..Default::default()
53318            },
53319            _marker: core::marker::PhantomData,
53320        }
53321    }
53322}
53323impl<'a> VideoDecodeVP9CapabilitiesKHRBuilder<'a> {
53324    #[inline]
53325    pub fn max_level(mut self, value: StdVideoVP9Level) -> Self {
53326        self.inner.max_level = value;
53327        self
53328    }
53329}
53330impl<'a> core::ops::Deref for VideoDecodeVP9CapabilitiesKHRBuilder<'a> {
53331    type Target = VideoDecodeVP9CapabilitiesKHR;
53332    #[inline]
53333    fn deref(&self) -> &Self::Target {
53334        &self.inner
53335    }
53336}
53337impl<'a> core::ops::DerefMut for VideoDecodeVP9CapabilitiesKHRBuilder<'a> {
53338    #[inline]
53339    fn deref_mut(&mut self) -> &mut Self::Target {
53340        &mut self.inner
53341    }
53342}
53343///Builder for [`VideoDecodeVP9PictureInfoKHR`] with lifetime-tied pNext safety.
53344pub struct VideoDecodeVP9PictureInfoKHRBuilder<'a> {
53345    inner: VideoDecodeVP9PictureInfoKHR,
53346    _marker: core::marker::PhantomData<&'a ()>,
53347}
53348impl VideoDecodeVP9PictureInfoKHR {
53349    /// Start building this struct; `s_type` is already set to the correct variant.
53350    #[inline]
53351    pub fn builder<'a>() -> VideoDecodeVP9PictureInfoKHRBuilder<'a> {
53352        VideoDecodeVP9PictureInfoKHRBuilder {
53353            inner: VideoDecodeVP9PictureInfoKHR {
53354                s_type: StructureType::from_raw(1000514002i32),
53355                ..Default::default()
53356            },
53357            _marker: core::marker::PhantomData,
53358        }
53359    }
53360}
53361impl<'a> VideoDecodeVP9PictureInfoKHRBuilder<'a> {
53362    #[inline]
53363    pub fn std_picture_info(
53364        mut self,
53365        value: *const StdVideoDecodeVP9PictureInfo,
53366    ) -> Self {
53367        self.inner.p_std_picture_info = value;
53368        self
53369    }
53370    #[inline]
53371    pub fn reference_name_slot_indices(
53372        mut self,
53373        value: [i32; MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR as usize],
53374    ) -> Self {
53375        self.inner.reference_name_slot_indices = value;
53376        self
53377    }
53378    #[inline]
53379    pub fn uncompressed_header_offset(mut self, value: u32) -> Self {
53380        self.inner.uncompressed_header_offset = value;
53381        self
53382    }
53383    #[inline]
53384    pub fn compressed_header_offset(mut self, value: u32) -> Self {
53385        self.inner.compressed_header_offset = value;
53386        self
53387    }
53388    #[inline]
53389    pub fn tiles_offset(mut self, value: u32) -> Self {
53390        self.inner.tiles_offset = value;
53391        self
53392    }
53393    ///Prepend a struct to the pNext chain. See [`VideoDecodeVP9PictureInfoKHR`]'s **Extended By** section for valid types.
53394    #[inline]
53395    pub fn push_next<T: ExtendsVideoDecodeVP9PictureInfoKHR>(
53396        mut self,
53397        next: &'a mut T,
53398    ) -> Self {
53399        unsafe {
53400            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
53401            (*next_ptr).p_next = self.inner.p_next as *mut _;
53402            self.inner.p_next = <*mut BaseOutStructure>::cast::<
53403                core::ffi::c_void,
53404            >(next_ptr) as *const _;
53405        }
53406        self
53407    }
53408}
53409impl<'a> core::ops::Deref for VideoDecodeVP9PictureInfoKHRBuilder<'a> {
53410    type Target = VideoDecodeVP9PictureInfoKHR;
53411    #[inline]
53412    fn deref(&self) -> &Self::Target {
53413        &self.inner
53414    }
53415}
53416impl<'a> core::ops::DerefMut for VideoDecodeVP9PictureInfoKHRBuilder<'a> {
53417    #[inline]
53418    fn deref_mut(&mut self) -> &mut Self::Target {
53419        &mut self.inner
53420    }
53421}
53422///Builder for [`VideoDecodeAV1ProfileInfoKHR`] with lifetime-tied pNext safety.
53423pub struct VideoDecodeAV1ProfileInfoKHRBuilder<'a> {
53424    inner: VideoDecodeAV1ProfileInfoKHR,
53425    _marker: core::marker::PhantomData<&'a ()>,
53426}
53427impl VideoDecodeAV1ProfileInfoKHR {
53428    /// Start building this struct; `s_type` is already set to the correct variant.
53429    #[inline]
53430    pub fn builder<'a>() -> VideoDecodeAV1ProfileInfoKHRBuilder<'a> {
53431        VideoDecodeAV1ProfileInfoKHRBuilder {
53432            inner: VideoDecodeAV1ProfileInfoKHR {
53433                s_type: StructureType::from_raw(1000512003i32),
53434                ..Default::default()
53435            },
53436            _marker: core::marker::PhantomData,
53437        }
53438    }
53439}
53440impl<'a> VideoDecodeAV1ProfileInfoKHRBuilder<'a> {
53441    #[inline]
53442    pub fn std_profile(mut self, value: StdVideoAV1Profile) -> Self {
53443        self.inner.std_profile = value;
53444        self
53445    }
53446    #[inline]
53447    pub fn film_grain_support(mut self, value: bool) -> Self {
53448        self.inner.film_grain_support = value as u32;
53449        self
53450    }
53451    ///Prepend a struct to the pNext chain. See [`VideoDecodeAV1ProfileInfoKHR`]'s **Extended By** section for valid types.
53452    #[inline]
53453    pub fn push_next<T: ExtendsVideoDecodeAV1ProfileInfoKHR>(
53454        mut self,
53455        next: &'a mut T,
53456    ) -> Self {
53457        unsafe {
53458            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
53459            (*next_ptr).p_next = self.inner.p_next as *mut _;
53460            self.inner.p_next = <*mut BaseOutStructure>::cast::<
53461                core::ffi::c_void,
53462            >(next_ptr) as *const _;
53463        }
53464        self
53465    }
53466}
53467impl<'a> core::ops::Deref for VideoDecodeAV1ProfileInfoKHRBuilder<'a> {
53468    type Target = VideoDecodeAV1ProfileInfoKHR;
53469    #[inline]
53470    fn deref(&self) -> &Self::Target {
53471        &self.inner
53472    }
53473}
53474impl<'a> core::ops::DerefMut for VideoDecodeAV1ProfileInfoKHRBuilder<'a> {
53475    #[inline]
53476    fn deref_mut(&mut self) -> &mut Self::Target {
53477        &mut self.inner
53478    }
53479}
53480///Builder for [`VideoDecodeAV1CapabilitiesKHR`] with lifetime-tied pNext safety.
53481pub struct VideoDecodeAV1CapabilitiesKHRBuilder<'a> {
53482    inner: VideoDecodeAV1CapabilitiesKHR,
53483    _marker: core::marker::PhantomData<&'a ()>,
53484}
53485impl VideoDecodeAV1CapabilitiesKHR {
53486    /// Start building this struct; `s_type` is already set to the correct variant.
53487    #[inline]
53488    pub fn builder<'a>() -> VideoDecodeAV1CapabilitiesKHRBuilder<'a> {
53489        VideoDecodeAV1CapabilitiesKHRBuilder {
53490            inner: VideoDecodeAV1CapabilitiesKHR {
53491                s_type: StructureType::from_raw(1000512000i32),
53492                ..Default::default()
53493            },
53494            _marker: core::marker::PhantomData,
53495        }
53496    }
53497}
53498impl<'a> VideoDecodeAV1CapabilitiesKHRBuilder<'a> {
53499    #[inline]
53500    pub fn max_level(mut self, value: StdVideoAV1Level) -> Self {
53501        self.inner.max_level = value;
53502        self
53503    }
53504}
53505impl<'a> core::ops::Deref for VideoDecodeAV1CapabilitiesKHRBuilder<'a> {
53506    type Target = VideoDecodeAV1CapabilitiesKHR;
53507    #[inline]
53508    fn deref(&self) -> &Self::Target {
53509        &self.inner
53510    }
53511}
53512impl<'a> core::ops::DerefMut for VideoDecodeAV1CapabilitiesKHRBuilder<'a> {
53513    #[inline]
53514    fn deref_mut(&mut self) -> &mut Self::Target {
53515        &mut self.inner
53516    }
53517}
53518///Builder for [`VideoDecodeAV1SessionParametersCreateInfoKHR`] with lifetime-tied pNext safety.
53519pub struct VideoDecodeAV1SessionParametersCreateInfoKHRBuilder<'a> {
53520    inner: VideoDecodeAV1SessionParametersCreateInfoKHR,
53521    _marker: core::marker::PhantomData<&'a ()>,
53522}
53523impl VideoDecodeAV1SessionParametersCreateInfoKHR {
53524    /// Start building this struct; `s_type` is already set to the correct variant.
53525    #[inline]
53526    pub fn builder<'a>() -> VideoDecodeAV1SessionParametersCreateInfoKHRBuilder<'a> {
53527        VideoDecodeAV1SessionParametersCreateInfoKHRBuilder {
53528            inner: VideoDecodeAV1SessionParametersCreateInfoKHR {
53529                s_type: StructureType::from_raw(1000512004i32),
53530                ..Default::default()
53531            },
53532            _marker: core::marker::PhantomData,
53533        }
53534    }
53535}
53536impl<'a> VideoDecodeAV1SessionParametersCreateInfoKHRBuilder<'a> {
53537    #[inline]
53538    pub fn std_sequence_header(
53539        mut self,
53540        value: *const StdVideoAV1SequenceHeader,
53541    ) -> Self {
53542        self.inner.p_std_sequence_header = value;
53543        self
53544    }
53545    ///Prepend a struct to the pNext chain. See [`VideoDecodeAV1SessionParametersCreateInfoKHR`]'s **Extended By** section for valid types.
53546    #[inline]
53547    pub fn push_next<T: ExtendsVideoDecodeAV1SessionParametersCreateInfoKHR>(
53548        mut self,
53549        next: &'a mut T,
53550    ) -> Self {
53551        unsafe {
53552            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
53553            (*next_ptr).p_next = self.inner.p_next as *mut _;
53554            self.inner.p_next = <*mut BaseOutStructure>::cast::<
53555                core::ffi::c_void,
53556            >(next_ptr) as *const _;
53557        }
53558        self
53559    }
53560}
53561impl<'a> core::ops::Deref for VideoDecodeAV1SessionParametersCreateInfoKHRBuilder<'a> {
53562    type Target = VideoDecodeAV1SessionParametersCreateInfoKHR;
53563    #[inline]
53564    fn deref(&self) -> &Self::Target {
53565        &self.inner
53566    }
53567}
53568impl<'a> core::ops::DerefMut
53569for VideoDecodeAV1SessionParametersCreateInfoKHRBuilder<'a> {
53570    #[inline]
53571    fn deref_mut(&mut self) -> &mut Self::Target {
53572        &mut self.inner
53573    }
53574}
53575///Builder for [`VideoDecodeAV1InlineSessionParametersInfoKHR`] with lifetime-tied pNext safety.
53576pub struct VideoDecodeAV1InlineSessionParametersInfoKHRBuilder<'a> {
53577    inner: VideoDecodeAV1InlineSessionParametersInfoKHR,
53578    _marker: core::marker::PhantomData<&'a ()>,
53579}
53580impl VideoDecodeAV1InlineSessionParametersInfoKHR {
53581    /// Start building this struct; `s_type` is already set to the correct variant.
53582    #[inline]
53583    pub fn builder<'a>() -> VideoDecodeAV1InlineSessionParametersInfoKHRBuilder<'a> {
53584        VideoDecodeAV1InlineSessionParametersInfoKHRBuilder {
53585            inner: VideoDecodeAV1InlineSessionParametersInfoKHR {
53586                s_type: StructureType::from_raw(1000586003i32),
53587                ..Default::default()
53588            },
53589            _marker: core::marker::PhantomData,
53590        }
53591    }
53592}
53593impl<'a> VideoDecodeAV1InlineSessionParametersInfoKHRBuilder<'a> {
53594    #[inline]
53595    pub fn std_sequence_header(
53596        mut self,
53597        value: *const StdVideoAV1SequenceHeader,
53598    ) -> Self {
53599        self.inner.p_std_sequence_header = value;
53600        self
53601    }
53602    ///Prepend a struct to the pNext chain. See [`VideoDecodeAV1InlineSessionParametersInfoKHR`]'s **Extended By** section for valid types.
53603    #[inline]
53604    pub fn push_next<T: ExtendsVideoDecodeAV1InlineSessionParametersInfoKHR>(
53605        mut self,
53606        next: &'a mut T,
53607    ) -> Self {
53608        unsafe {
53609            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
53610            (*next_ptr).p_next = self.inner.p_next as *mut _;
53611            self.inner.p_next = <*mut BaseOutStructure>::cast::<
53612                core::ffi::c_void,
53613            >(next_ptr) as *const _;
53614        }
53615        self
53616    }
53617}
53618impl<'a> core::ops::Deref for VideoDecodeAV1InlineSessionParametersInfoKHRBuilder<'a> {
53619    type Target = VideoDecodeAV1InlineSessionParametersInfoKHR;
53620    #[inline]
53621    fn deref(&self) -> &Self::Target {
53622        &self.inner
53623    }
53624}
53625impl<'a> core::ops::DerefMut
53626for VideoDecodeAV1InlineSessionParametersInfoKHRBuilder<'a> {
53627    #[inline]
53628    fn deref_mut(&mut self) -> &mut Self::Target {
53629        &mut self.inner
53630    }
53631}
53632///Builder for [`VideoDecodeAV1PictureInfoKHR`] with lifetime-tied pNext safety.
53633pub struct VideoDecodeAV1PictureInfoKHRBuilder<'a> {
53634    inner: VideoDecodeAV1PictureInfoKHR,
53635    _marker: core::marker::PhantomData<&'a ()>,
53636}
53637impl VideoDecodeAV1PictureInfoKHR {
53638    /// Start building this struct; `s_type` is already set to the correct variant.
53639    #[inline]
53640    pub fn builder<'a>() -> VideoDecodeAV1PictureInfoKHRBuilder<'a> {
53641        VideoDecodeAV1PictureInfoKHRBuilder {
53642            inner: VideoDecodeAV1PictureInfoKHR {
53643                s_type: StructureType::from_raw(1000512001i32),
53644                ..Default::default()
53645            },
53646            _marker: core::marker::PhantomData,
53647        }
53648    }
53649}
53650impl<'a> VideoDecodeAV1PictureInfoKHRBuilder<'a> {
53651    #[inline]
53652    pub fn std_picture_info(
53653        mut self,
53654        value: *const StdVideoDecodeAV1PictureInfo,
53655    ) -> Self {
53656        self.inner.p_std_picture_info = value;
53657        self
53658    }
53659    #[inline]
53660    pub fn reference_name_slot_indices(
53661        mut self,
53662        value: [i32; MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR as usize],
53663    ) -> Self {
53664        self.inner.reference_name_slot_indices = value;
53665        self
53666    }
53667    #[inline]
53668    pub fn frame_header_offset(mut self, value: u32) -> Self {
53669        self.inner.frame_header_offset = value;
53670        self
53671    }
53672    #[inline]
53673    pub fn tile_offsets(mut self, slice: &'a [u32]) -> Self {
53674        self.inner.tile_count = slice.len() as u32;
53675        self.inner.p_tile_offsets = slice.as_ptr();
53676        self
53677    }
53678    #[inline]
53679    pub fn tile_sizes(mut self, slice: &'a [u32]) -> Self {
53680        self.inner.tile_count = slice.len() as u32;
53681        self.inner.p_tile_sizes = slice.as_ptr();
53682        self
53683    }
53684    ///Prepend a struct to the pNext chain. See [`VideoDecodeAV1PictureInfoKHR`]'s **Extended By** section for valid types.
53685    #[inline]
53686    pub fn push_next<T: ExtendsVideoDecodeAV1PictureInfoKHR>(
53687        mut self,
53688        next: &'a mut T,
53689    ) -> Self {
53690        unsafe {
53691            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
53692            (*next_ptr).p_next = self.inner.p_next as *mut _;
53693            self.inner.p_next = <*mut BaseOutStructure>::cast::<
53694                core::ffi::c_void,
53695            >(next_ptr) as *const _;
53696        }
53697        self
53698    }
53699}
53700impl<'a> core::ops::Deref for VideoDecodeAV1PictureInfoKHRBuilder<'a> {
53701    type Target = VideoDecodeAV1PictureInfoKHR;
53702    #[inline]
53703    fn deref(&self) -> &Self::Target {
53704        &self.inner
53705    }
53706}
53707impl<'a> core::ops::DerefMut for VideoDecodeAV1PictureInfoKHRBuilder<'a> {
53708    #[inline]
53709    fn deref_mut(&mut self) -> &mut Self::Target {
53710        &mut self.inner
53711    }
53712}
53713///Builder for [`VideoDecodeAV1DpbSlotInfoKHR`] with lifetime-tied pNext safety.
53714pub struct VideoDecodeAV1DpbSlotInfoKHRBuilder<'a> {
53715    inner: VideoDecodeAV1DpbSlotInfoKHR,
53716    _marker: core::marker::PhantomData<&'a ()>,
53717}
53718impl VideoDecodeAV1DpbSlotInfoKHR {
53719    /// Start building this struct; `s_type` is already set to the correct variant.
53720    #[inline]
53721    pub fn builder<'a>() -> VideoDecodeAV1DpbSlotInfoKHRBuilder<'a> {
53722        VideoDecodeAV1DpbSlotInfoKHRBuilder {
53723            inner: VideoDecodeAV1DpbSlotInfoKHR {
53724                s_type: StructureType::from_raw(1000512005i32),
53725                ..Default::default()
53726            },
53727            _marker: core::marker::PhantomData,
53728        }
53729    }
53730}
53731impl<'a> VideoDecodeAV1DpbSlotInfoKHRBuilder<'a> {
53732    #[inline]
53733    pub fn std_reference_info(
53734        mut self,
53735        value: *const StdVideoDecodeAV1ReferenceInfo,
53736    ) -> Self {
53737        self.inner.p_std_reference_info = value;
53738        self
53739    }
53740    ///Prepend a struct to the pNext chain. See [`VideoDecodeAV1DpbSlotInfoKHR`]'s **Extended By** section for valid types.
53741    #[inline]
53742    pub fn push_next<T: ExtendsVideoDecodeAV1DpbSlotInfoKHR>(
53743        mut self,
53744        next: &'a mut T,
53745    ) -> Self {
53746        unsafe {
53747            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
53748            (*next_ptr).p_next = self.inner.p_next as *mut _;
53749            self.inner.p_next = <*mut BaseOutStructure>::cast::<
53750                core::ffi::c_void,
53751            >(next_ptr) as *const _;
53752        }
53753        self
53754    }
53755}
53756impl<'a> core::ops::Deref for VideoDecodeAV1DpbSlotInfoKHRBuilder<'a> {
53757    type Target = VideoDecodeAV1DpbSlotInfoKHR;
53758    #[inline]
53759    fn deref(&self) -> &Self::Target {
53760        &self.inner
53761    }
53762}
53763impl<'a> core::ops::DerefMut for VideoDecodeAV1DpbSlotInfoKHRBuilder<'a> {
53764    #[inline]
53765    fn deref_mut(&mut self) -> &mut Self::Target {
53766        &mut self.inner
53767    }
53768}
53769///Builder for [`VideoSessionCreateInfoKHR`] with lifetime-tied pNext safety.
53770pub struct VideoSessionCreateInfoKHRBuilder<'a> {
53771    inner: VideoSessionCreateInfoKHR,
53772    _marker: core::marker::PhantomData<&'a ()>,
53773}
53774impl VideoSessionCreateInfoKHR {
53775    /// Start building this struct; `s_type` is already set to the correct variant.
53776    #[inline]
53777    pub fn builder<'a>() -> VideoSessionCreateInfoKHRBuilder<'a> {
53778        VideoSessionCreateInfoKHRBuilder {
53779            inner: VideoSessionCreateInfoKHR {
53780                s_type: StructureType::from_raw(1000023005i32),
53781                ..Default::default()
53782            },
53783            _marker: core::marker::PhantomData,
53784        }
53785    }
53786}
53787impl<'a> VideoSessionCreateInfoKHRBuilder<'a> {
53788    #[inline]
53789    pub fn queue_family_index(mut self, value: u32) -> Self {
53790        self.inner.queue_family_index = value;
53791        self
53792    }
53793    #[inline]
53794    pub fn flags(mut self, value: VideoSessionCreateFlagsKHR) -> Self {
53795        self.inner.flags = value;
53796        self
53797    }
53798    #[inline]
53799    pub fn video_profile(mut self, value: &'a VideoProfileInfoKHR) -> Self {
53800        self.inner.p_video_profile = value;
53801        self
53802    }
53803    #[inline]
53804    pub fn picture_format(mut self, value: Format) -> Self {
53805        self.inner.picture_format = value;
53806        self
53807    }
53808    #[inline]
53809    pub fn max_coded_extent(mut self, value: Extent2D) -> Self {
53810        self.inner.max_coded_extent = value;
53811        self
53812    }
53813    #[inline]
53814    pub fn reference_picture_format(mut self, value: Format) -> Self {
53815        self.inner.reference_picture_format = value;
53816        self
53817    }
53818    #[inline]
53819    pub fn max_dpb_slots(mut self, value: u32) -> Self {
53820        self.inner.max_dpb_slots = value;
53821        self
53822    }
53823    #[inline]
53824    pub fn max_active_reference_pictures(mut self, value: u32) -> Self {
53825        self.inner.max_active_reference_pictures = value;
53826        self
53827    }
53828    #[inline]
53829    pub fn std_header_version(mut self, value: &'a ExtensionProperties) -> Self {
53830        self.inner.p_std_header_version = value;
53831        self
53832    }
53833    ///Prepend a struct to the pNext chain. See [`VideoSessionCreateInfoKHR`]'s **Extended By** section for valid types.
53834    #[inline]
53835    pub fn push_next<T: ExtendsVideoSessionCreateInfoKHR>(
53836        mut self,
53837        next: &'a mut T,
53838    ) -> Self {
53839        unsafe {
53840            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
53841            (*next_ptr).p_next = self.inner.p_next as *mut _;
53842            self.inner.p_next = <*mut BaseOutStructure>::cast::<
53843                core::ffi::c_void,
53844            >(next_ptr) as *const _;
53845        }
53846        self
53847    }
53848}
53849impl<'a> core::ops::Deref for VideoSessionCreateInfoKHRBuilder<'a> {
53850    type Target = VideoSessionCreateInfoKHR;
53851    #[inline]
53852    fn deref(&self) -> &Self::Target {
53853        &self.inner
53854    }
53855}
53856impl<'a> core::ops::DerefMut for VideoSessionCreateInfoKHRBuilder<'a> {
53857    #[inline]
53858    fn deref_mut(&mut self) -> &mut Self::Target {
53859        &mut self.inner
53860    }
53861}
53862///Builder for [`VideoSessionParametersCreateInfoKHR`] with lifetime-tied pNext safety.
53863pub struct VideoSessionParametersCreateInfoKHRBuilder<'a> {
53864    inner: VideoSessionParametersCreateInfoKHR,
53865    _marker: core::marker::PhantomData<&'a ()>,
53866}
53867impl VideoSessionParametersCreateInfoKHR {
53868    /// Start building this struct; `s_type` is already set to the correct variant.
53869    #[inline]
53870    pub fn builder<'a>() -> VideoSessionParametersCreateInfoKHRBuilder<'a> {
53871        VideoSessionParametersCreateInfoKHRBuilder {
53872            inner: VideoSessionParametersCreateInfoKHR {
53873                s_type: StructureType::from_raw(1000023006i32),
53874                ..Default::default()
53875            },
53876            _marker: core::marker::PhantomData,
53877        }
53878    }
53879}
53880impl<'a> VideoSessionParametersCreateInfoKHRBuilder<'a> {
53881    #[inline]
53882    pub fn flags(mut self, value: VideoSessionParametersCreateFlagsKHR) -> Self {
53883        self.inner.flags = value;
53884        self
53885    }
53886    #[inline]
53887    pub fn video_session_parameters_template(
53888        mut self,
53889        value: VideoSessionParametersKHR,
53890    ) -> Self {
53891        self.inner.video_session_parameters_template = value;
53892        self
53893    }
53894    #[inline]
53895    pub fn video_session(mut self, value: VideoSessionKHR) -> Self {
53896        self.inner.video_session = value;
53897        self
53898    }
53899    ///Prepend a struct to the pNext chain. See [`VideoSessionParametersCreateInfoKHR`]'s **Extended By** section for valid types.
53900    #[inline]
53901    pub fn push_next<T: ExtendsVideoSessionParametersCreateInfoKHR>(
53902        mut self,
53903        next: &'a mut T,
53904    ) -> Self {
53905        unsafe {
53906            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
53907            (*next_ptr).p_next = self.inner.p_next as *mut _;
53908            self.inner.p_next = <*mut BaseOutStructure>::cast::<
53909                core::ffi::c_void,
53910            >(next_ptr) as *const _;
53911        }
53912        self
53913    }
53914}
53915impl<'a> core::ops::Deref for VideoSessionParametersCreateInfoKHRBuilder<'a> {
53916    type Target = VideoSessionParametersCreateInfoKHR;
53917    #[inline]
53918    fn deref(&self) -> &Self::Target {
53919        &self.inner
53920    }
53921}
53922impl<'a> core::ops::DerefMut for VideoSessionParametersCreateInfoKHRBuilder<'a> {
53923    #[inline]
53924    fn deref_mut(&mut self) -> &mut Self::Target {
53925        &mut self.inner
53926    }
53927}
53928///Builder for [`VideoSessionParametersUpdateInfoKHR`] with lifetime-tied pNext safety.
53929pub struct VideoSessionParametersUpdateInfoKHRBuilder<'a> {
53930    inner: VideoSessionParametersUpdateInfoKHR,
53931    _marker: core::marker::PhantomData<&'a ()>,
53932}
53933impl VideoSessionParametersUpdateInfoKHR {
53934    /// Start building this struct; `s_type` is already set to the correct variant.
53935    #[inline]
53936    pub fn builder<'a>() -> VideoSessionParametersUpdateInfoKHRBuilder<'a> {
53937        VideoSessionParametersUpdateInfoKHRBuilder {
53938            inner: VideoSessionParametersUpdateInfoKHR {
53939                s_type: StructureType::from_raw(1000023007i32),
53940                ..Default::default()
53941            },
53942            _marker: core::marker::PhantomData,
53943        }
53944    }
53945}
53946impl<'a> VideoSessionParametersUpdateInfoKHRBuilder<'a> {
53947    #[inline]
53948    pub fn update_sequence_count(mut self, value: u32) -> Self {
53949        self.inner.update_sequence_count = value;
53950        self
53951    }
53952    ///Prepend a struct to the pNext chain. See [`VideoSessionParametersUpdateInfoKHR`]'s **Extended By** section for valid types.
53953    #[inline]
53954    pub fn push_next<T: ExtendsVideoSessionParametersUpdateInfoKHR>(
53955        mut self,
53956        next: &'a mut T,
53957    ) -> Self {
53958        unsafe {
53959            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
53960            (*next_ptr).p_next = self.inner.p_next as *mut _;
53961            self.inner.p_next = <*mut BaseOutStructure>::cast::<
53962                core::ffi::c_void,
53963            >(next_ptr) as *const _;
53964        }
53965        self
53966    }
53967}
53968impl<'a> core::ops::Deref for VideoSessionParametersUpdateInfoKHRBuilder<'a> {
53969    type Target = VideoSessionParametersUpdateInfoKHR;
53970    #[inline]
53971    fn deref(&self) -> &Self::Target {
53972        &self.inner
53973    }
53974}
53975impl<'a> core::ops::DerefMut for VideoSessionParametersUpdateInfoKHRBuilder<'a> {
53976    #[inline]
53977    fn deref_mut(&mut self) -> &mut Self::Target {
53978        &mut self.inner
53979    }
53980}
53981///Builder for [`VideoEncodeSessionParametersGetInfoKHR`] with lifetime-tied pNext safety.
53982pub struct VideoEncodeSessionParametersGetInfoKHRBuilder<'a> {
53983    inner: VideoEncodeSessionParametersGetInfoKHR,
53984    _marker: core::marker::PhantomData<&'a ()>,
53985}
53986impl VideoEncodeSessionParametersGetInfoKHR {
53987    /// Start building this struct; `s_type` is already set to the correct variant.
53988    #[inline]
53989    pub fn builder<'a>() -> VideoEncodeSessionParametersGetInfoKHRBuilder<'a> {
53990        VideoEncodeSessionParametersGetInfoKHRBuilder {
53991            inner: VideoEncodeSessionParametersGetInfoKHR {
53992                s_type: StructureType::from_raw(1000299009i32),
53993                ..Default::default()
53994            },
53995            _marker: core::marker::PhantomData,
53996        }
53997    }
53998}
53999impl<'a> VideoEncodeSessionParametersGetInfoKHRBuilder<'a> {
54000    #[inline]
54001    pub fn video_session_parameters(mut self, value: VideoSessionParametersKHR) -> Self {
54002        self.inner.video_session_parameters = value;
54003        self
54004    }
54005    ///Prepend a struct to the pNext chain. See [`VideoEncodeSessionParametersGetInfoKHR`]'s **Extended By** section for valid types.
54006    #[inline]
54007    pub fn push_next<T: ExtendsVideoEncodeSessionParametersGetInfoKHR>(
54008        mut self,
54009        next: &'a mut T,
54010    ) -> Self {
54011        unsafe {
54012            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
54013            (*next_ptr).p_next = self.inner.p_next as *mut _;
54014            self.inner.p_next = <*mut BaseOutStructure>::cast::<
54015                core::ffi::c_void,
54016            >(next_ptr) as *const _;
54017        }
54018        self
54019    }
54020}
54021impl<'a> core::ops::Deref for VideoEncodeSessionParametersGetInfoKHRBuilder<'a> {
54022    type Target = VideoEncodeSessionParametersGetInfoKHR;
54023    #[inline]
54024    fn deref(&self) -> &Self::Target {
54025        &self.inner
54026    }
54027}
54028impl<'a> core::ops::DerefMut for VideoEncodeSessionParametersGetInfoKHRBuilder<'a> {
54029    #[inline]
54030    fn deref_mut(&mut self) -> &mut Self::Target {
54031        &mut self.inner
54032    }
54033}
54034///Builder for [`VideoEncodeSessionParametersFeedbackInfoKHR`] with lifetime-tied pNext safety.
54035pub struct VideoEncodeSessionParametersFeedbackInfoKHRBuilder<'a> {
54036    inner: VideoEncodeSessionParametersFeedbackInfoKHR,
54037    _marker: core::marker::PhantomData<&'a ()>,
54038}
54039impl VideoEncodeSessionParametersFeedbackInfoKHR {
54040    /// Start building this struct; `s_type` is already set to the correct variant.
54041    #[inline]
54042    pub fn builder<'a>() -> VideoEncodeSessionParametersFeedbackInfoKHRBuilder<'a> {
54043        VideoEncodeSessionParametersFeedbackInfoKHRBuilder {
54044            inner: VideoEncodeSessionParametersFeedbackInfoKHR {
54045                s_type: StructureType::from_raw(1000299010i32),
54046                ..Default::default()
54047            },
54048            _marker: core::marker::PhantomData,
54049        }
54050    }
54051}
54052impl<'a> VideoEncodeSessionParametersFeedbackInfoKHRBuilder<'a> {
54053    #[inline]
54054    pub fn has_overrides(mut self, value: bool) -> Self {
54055        self.inner.has_overrides = value as u32;
54056        self
54057    }
54058}
54059impl<'a> core::ops::Deref for VideoEncodeSessionParametersFeedbackInfoKHRBuilder<'a> {
54060    type Target = VideoEncodeSessionParametersFeedbackInfoKHR;
54061    #[inline]
54062    fn deref(&self) -> &Self::Target {
54063        &self.inner
54064    }
54065}
54066impl<'a> core::ops::DerefMut for VideoEncodeSessionParametersFeedbackInfoKHRBuilder<'a> {
54067    #[inline]
54068    fn deref_mut(&mut self) -> &mut Self::Target {
54069        &mut self.inner
54070    }
54071}
54072///Builder for [`VideoBeginCodingInfoKHR`] with lifetime-tied pNext safety.
54073pub struct VideoBeginCodingInfoKHRBuilder<'a> {
54074    inner: VideoBeginCodingInfoKHR,
54075    _marker: core::marker::PhantomData<&'a ()>,
54076}
54077impl VideoBeginCodingInfoKHR {
54078    /// Start building this struct; `s_type` is already set to the correct variant.
54079    #[inline]
54080    pub fn builder<'a>() -> VideoBeginCodingInfoKHRBuilder<'a> {
54081        VideoBeginCodingInfoKHRBuilder {
54082            inner: VideoBeginCodingInfoKHR {
54083                s_type: StructureType::from_raw(1000023008i32),
54084                ..Default::default()
54085            },
54086            _marker: core::marker::PhantomData,
54087        }
54088    }
54089}
54090impl<'a> VideoBeginCodingInfoKHRBuilder<'a> {
54091    #[inline]
54092    pub fn flags(mut self, value: VideoBeginCodingFlagsKHR) -> Self {
54093        self.inner.flags = value;
54094        self
54095    }
54096    #[inline]
54097    pub fn video_session(mut self, value: VideoSessionKHR) -> Self {
54098        self.inner.video_session = value;
54099        self
54100    }
54101    #[inline]
54102    pub fn video_session_parameters(mut self, value: VideoSessionParametersKHR) -> Self {
54103        self.inner.video_session_parameters = value;
54104        self
54105    }
54106    #[inline]
54107    pub fn reference_slots(mut self, slice: &'a [VideoReferenceSlotInfoKHR]) -> Self {
54108        self.inner.reference_slot_count = slice.len() as u32;
54109        self.inner.p_reference_slots = slice.as_ptr();
54110        self
54111    }
54112    ///Prepend a struct to the pNext chain. See [`VideoBeginCodingInfoKHR`]'s **Extended By** section for valid types.
54113    #[inline]
54114    pub fn push_next<T: ExtendsVideoBeginCodingInfoKHR>(
54115        mut self,
54116        next: &'a mut T,
54117    ) -> Self {
54118        unsafe {
54119            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
54120            (*next_ptr).p_next = self.inner.p_next as *mut _;
54121            self.inner.p_next = <*mut BaseOutStructure>::cast::<
54122                core::ffi::c_void,
54123            >(next_ptr) as *const _;
54124        }
54125        self
54126    }
54127}
54128impl<'a> core::ops::Deref for VideoBeginCodingInfoKHRBuilder<'a> {
54129    type Target = VideoBeginCodingInfoKHR;
54130    #[inline]
54131    fn deref(&self) -> &Self::Target {
54132        &self.inner
54133    }
54134}
54135impl<'a> core::ops::DerefMut for VideoBeginCodingInfoKHRBuilder<'a> {
54136    #[inline]
54137    fn deref_mut(&mut self) -> &mut Self::Target {
54138        &mut self.inner
54139    }
54140}
54141///Builder for [`VideoEndCodingInfoKHR`] with lifetime-tied pNext safety.
54142pub struct VideoEndCodingInfoKHRBuilder<'a> {
54143    inner: VideoEndCodingInfoKHR,
54144    _marker: core::marker::PhantomData<&'a ()>,
54145}
54146impl VideoEndCodingInfoKHR {
54147    /// Start building this struct; `s_type` is already set to the correct variant.
54148    #[inline]
54149    pub fn builder<'a>() -> VideoEndCodingInfoKHRBuilder<'a> {
54150        VideoEndCodingInfoKHRBuilder {
54151            inner: VideoEndCodingInfoKHR {
54152                s_type: StructureType::from_raw(1000023009i32),
54153                ..Default::default()
54154            },
54155            _marker: core::marker::PhantomData,
54156        }
54157    }
54158}
54159impl<'a> VideoEndCodingInfoKHRBuilder<'a> {
54160    #[inline]
54161    pub fn flags(mut self, value: VideoEndCodingFlagsKHR) -> Self {
54162        self.inner.flags = value;
54163        self
54164    }
54165    ///Prepend a struct to the pNext chain. See [`VideoEndCodingInfoKHR`]'s **Extended By** section for valid types.
54166    #[inline]
54167    pub fn push_next<T: ExtendsVideoEndCodingInfoKHR>(
54168        mut self,
54169        next: &'a mut T,
54170    ) -> Self {
54171        unsafe {
54172            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
54173            (*next_ptr).p_next = self.inner.p_next as *mut _;
54174            self.inner.p_next = <*mut BaseOutStructure>::cast::<
54175                core::ffi::c_void,
54176            >(next_ptr) as *const _;
54177        }
54178        self
54179    }
54180}
54181impl<'a> core::ops::Deref for VideoEndCodingInfoKHRBuilder<'a> {
54182    type Target = VideoEndCodingInfoKHR;
54183    #[inline]
54184    fn deref(&self) -> &Self::Target {
54185        &self.inner
54186    }
54187}
54188impl<'a> core::ops::DerefMut for VideoEndCodingInfoKHRBuilder<'a> {
54189    #[inline]
54190    fn deref_mut(&mut self) -> &mut Self::Target {
54191        &mut self.inner
54192    }
54193}
54194///Builder for [`VideoCodingControlInfoKHR`] with lifetime-tied pNext safety.
54195pub struct VideoCodingControlInfoKHRBuilder<'a> {
54196    inner: VideoCodingControlInfoKHR,
54197    _marker: core::marker::PhantomData<&'a ()>,
54198}
54199impl VideoCodingControlInfoKHR {
54200    /// Start building this struct; `s_type` is already set to the correct variant.
54201    #[inline]
54202    pub fn builder<'a>() -> VideoCodingControlInfoKHRBuilder<'a> {
54203        VideoCodingControlInfoKHRBuilder {
54204            inner: VideoCodingControlInfoKHR {
54205                s_type: StructureType::from_raw(1000023010i32),
54206                ..Default::default()
54207            },
54208            _marker: core::marker::PhantomData,
54209        }
54210    }
54211}
54212impl<'a> VideoCodingControlInfoKHRBuilder<'a> {
54213    #[inline]
54214    pub fn flags(mut self, value: VideoCodingControlFlagsKHR) -> Self {
54215        self.inner.flags = value;
54216        self
54217    }
54218    ///Prepend a struct to the pNext chain. See [`VideoCodingControlInfoKHR`]'s **Extended By** section for valid types.
54219    #[inline]
54220    pub fn push_next<T: ExtendsVideoCodingControlInfoKHR>(
54221        mut self,
54222        next: &'a mut T,
54223    ) -> Self {
54224        unsafe {
54225            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
54226            (*next_ptr).p_next = self.inner.p_next as *mut _;
54227            self.inner.p_next = <*mut BaseOutStructure>::cast::<
54228                core::ffi::c_void,
54229            >(next_ptr) as *const _;
54230        }
54231        self
54232    }
54233}
54234impl<'a> core::ops::Deref for VideoCodingControlInfoKHRBuilder<'a> {
54235    type Target = VideoCodingControlInfoKHR;
54236    #[inline]
54237    fn deref(&self) -> &Self::Target {
54238        &self.inner
54239    }
54240}
54241impl<'a> core::ops::DerefMut for VideoCodingControlInfoKHRBuilder<'a> {
54242    #[inline]
54243    fn deref_mut(&mut self) -> &mut Self::Target {
54244        &mut self.inner
54245    }
54246}
54247///Builder for [`VideoEncodeUsageInfoKHR`] with lifetime-tied pNext safety.
54248pub struct VideoEncodeUsageInfoKHRBuilder<'a> {
54249    inner: VideoEncodeUsageInfoKHR,
54250    _marker: core::marker::PhantomData<&'a ()>,
54251}
54252impl VideoEncodeUsageInfoKHR {
54253    /// Start building this struct; `s_type` is already set to the correct variant.
54254    #[inline]
54255    pub fn builder<'a>() -> VideoEncodeUsageInfoKHRBuilder<'a> {
54256        VideoEncodeUsageInfoKHRBuilder {
54257            inner: VideoEncodeUsageInfoKHR {
54258                s_type: StructureType::from_raw(1000299004i32),
54259                ..Default::default()
54260            },
54261            _marker: core::marker::PhantomData,
54262        }
54263    }
54264}
54265impl<'a> VideoEncodeUsageInfoKHRBuilder<'a> {
54266    #[inline]
54267    pub fn video_usage_hints(mut self, value: VideoEncodeUsageFlagsKHR) -> Self {
54268        self.inner.video_usage_hints = value;
54269        self
54270    }
54271    #[inline]
54272    pub fn video_content_hints(mut self, value: VideoEncodeContentFlagsKHR) -> Self {
54273        self.inner.video_content_hints = value;
54274        self
54275    }
54276    #[inline]
54277    pub fn tuning_mode(mut self, value: VideoEncodeTuningModeKHR) -> Self {
54278        self.inner.tuning_mode = value;
54279        self
54280    }
54281    ///Prepend a struct to the pNext chain. See [`VideoEncodeUsageInfoKHR`]'s **Extended By** section for valid types.
54282    #[inline]
54283    pub fn push_next<T: ExtendsVideoEncodeUsageInfoKHR>(
54284        mut self,
54285        next: &'a mut T,
54286    ) -> Self {
54287        unsafe {
54288            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
54289            (*next_ptr).p_next = self.inner.p_next as *mut _;
54290            self.inner.p_next = <*mut BaseOutStructure>::cast::<
54291                core::ffi::c_void,
54292            >(next_ptr) as *const _;
54293        }
54294        self
54295    }
54296}
54297impl<'a> core::ops::Deref for VideoEncodeUsageInfoKHRBuilder<'a> {
54298    type Target = VideoEncodeUsageInfoKHR;
54299    #[inline]
54300    fn deref(&self) -> &Self::Target {
54301        &self.inner
54302    }
54303}
54304impl<'a> core::ops::DerefMut for VideoEncodeUsageInfoKHRBuilder<'a> {
54305    #[inline]
54306    fn deref_mut(&mut self) -> &mut Self::Target {
54307        &mut self.inner
54308    }
54309}
54310///Builder for [`VideoEncodeInfoKHR`] with lifetime-tied pNext safety.
54311pub struct VideoEncodeInfoKHRBuilder<'a> {
54312    inner: VideoEncodeInfoKHR,
54313    _marker: core::marker::PhantomData<&'a ()>,
54314}
54315impl VideoEncodeInfoKHR {
54316    /// Start building this struct; `s_type` is already set to the correct variant.
54317    #[inline]
54318    pub fn builder<'a>() -> VideoEncodeInfoKHRBuilder<'a> {
54319        VideoEncodeInfoKHRBuilder {
54320            inner: VideoEncodeInfoKHR {
54321                s_type: StructureType::from_raw(1000299000i32),
54322                ..Default::default()
54323            },
54324            _marker: core::marker::PhantomData,
54325        }
54326    }
54327}
54328impl<'a> VideoEncodeInfoKHRBuilder<'a> {
54329    #[inline]
54330    pub fn flags(mut self, value: VideoEncodeFlagsKHR) -> Self {
54331        self.inner.flags = value;
54332        self
54333    }
54334    #[inline]
54335    pub fn dst_buffer(mut self, value: Buffer) -> Self {
54336        self.inner.dst_buffer = value;
54337        self
54338    }
54339    #[inline]
54340    pub fn dst_buffer_offset(mut self, value: u64) -> Self {
54341        self.inner.dst_buffer_offset = value;
54342        self
54343    }
54344    #[inline]
54345    pub fn dst_buffer_range(mut self, value: u64) -> Self {
54346        self.inner.dst_buffer_range = value;
54347        self
54348    }
54349    #[inline]
54350    pub fn src_picture_resource(mut self, value: VideoPictureResourceInfoKHR) -> Self {
54351        self.inner.src_picture_resource = value;
54352        self
54353    }
54354    #[inline]
54355    pub fn setup_reference_slot(mut self, value: &'a VideoReferenceSlotInfoKHR) -> Self {
54356        self.inner.p_setup_reference_slot = value;
54357        self
54358    }
54359    #[inline]
54360    pub fn reference_slots(mut self, slice: &'a [VideoReferenceSlotInfoKHR]) -> Self {
54361        self.inner.reference_slot_count = slice.len() as u32;
54362        self.inner.p_reference_slots = slice.as_ptr();
54363        self
54364    }
54365    #[inline]
54366    pub fn preceding_externally_encoded_bytes(mut self, value: u32) -> Self {
54367        self.inner.preceding_externally_encoded_bytes = value;
54368        self
54369    }
54370    ///Prepend a struct to the pNext chain. See [`VideoEncodeInfoKHR`]'s **Extended By** section for valid types.
54371    #[inline]
54372    pub fn push_next<T: ExtendsVideoEncodeInfoKHR>(mut self, next: &'a mut T) -> Self {
54373        unsafe {
54374            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
54375            (*next_ptr).p_next = self.inner.p_next as *mut _;
54376            self.inner.p_next = <*mut BaseOutStructure>::cast::<
54377                core::ffi::c_void,
54378            >(next_ptr) as *const _;
54379        }
54380        self
54381    }
54382}
54383impl<'a> core::ops::Deref for VideoEncodeInfoKHRBuilder<'a> {
54384    type Target = VideoEncodeInfoKHR;
54385    #[inline]
54386    fn deref(&self) -> &Self::Target {
54387        &self.inner
54388    }
54389}
54390impl<'a> core::ops::DerefMut for VideoEncodeInfoKHRBuilder<'a> {
54391    #[inline]
54392    fn deref_mut(&mut self) -> &mut Self::Target {
54393        &mut self.inner
54394    }
54395}
54396///Builder for [`VideoEncodeQuantizationMapInfoKHR`] with lifetime-tied pNext safety.
54397pub struct VideoEncodeQuantizationMapInfoKHRBuilder<'a> {
54398    inner: VideoEncodeQuantizationMapInfoKHR,
54399    _marker: core::marker::PhantomData<&'a ()>,
54400}
54401impl VideoEncodeQuantizationMapInfoKHR {
54402    /// Start building this struct; `s_type` is already set to the correct variant.
54403    #[inline]
54404    pub fn builder<'a>() -> VideoEncodeQuantizationMapInfoKHRBuilder<'a> {
54405        VideoEncodeQuantizationMapInfoKHRBuilder {
54406            inner: VideoEncodeQuantizationMapInfoKHR {
54407                s_type: StructureType::from_raw(1000553002i32),
54408                ..Default::default()
54409            },
54410            _marker: core::marker::PhantomData,
54411        }
54412    }
54413}
54414impl<'a> VideoEncodeQuantizationMapInfoKHRBuilder<'a> {
54415    #[inline]
54416    pub fn quantization_map(mut self, value: ImageView) -> Self {
54417        self.inner.quantization_map = value;
54418        self
54419    }
54420    #[inline]
54421    pub fn quantization_map_extent(mut self, value: Extent2D) -> Self {
54422        self.inner.quantization_map_extent = value;
54423        self
54424    }
54425    ///Prepend a struct to the pNext chain. See [`VideoEncodeQuantizationMapInfoKHR`]'s **Extended By** section for valid types.
54426    #[inline]
54427    pub fn push_next<T: ExtendsVideoEncodeQuantizationMapInfoKHR>(
54428        mut self,
54429        next: &'a mut T,
54430    ) -> Self {
54431        unsafe {
54432            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
54433            (*next_ptr).p_next = self.inner.p_next as *mut _;
54434            self.inner.p_next = <*mut BaseOutStructure>::cast::<
54435                core::ffi::c_void,
54436            >(next_ptr) as *const _;
54437        }
54438        self
54439    }
54440}
54441impl<'a> core::ops::Deref for VideoEncodeQuantizationMapInfoKHRBuilder<'a> {
54442    type Target = VideoEncodeQuantizationMapInfoKHR;
54443    #[inline]
54444    fn deref(&self) -> &Self::Target {
54445        &self.inner
54446    }
54447}
54448impl<'a> core::ops::DerefMut for VideoEncodeQuantizationMapInfoKHRBuilder<'a> {
54449    #[inline]
54450    fn deref_mut(&mut self) -> &mut Self::Target {
54451        &mut self.inner
54452    }
54453}
54454///Builder for [`VideoEncodeQuantizationMapSessionParametersCreateInfoKHR`] with lifetime-tied pNext safety.
54455pub struct VideoEncodeQuantizationMapSessionParametersCreateInfoKHRBuilder<'a> {
54456    inner: VideoEncodeQuantizationMapSessionParametersCreateInfoKHR,
54457    _marker: core::marker::PhantomData<&'a ()>,
54458}
54459impl VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {
54460    /// Start building this struct; `s_type` is already set to the correct variant.
54461    #[inline]
54462    pub fn builder<'a>() -> VideoEncodeQuantizationMapSessionParametersCreateInfoKHRBuilder<
54463        'a,
54464    > {
54465        VideoEncodeQuantizationMapSessionParametersCreateInfoKHRBuilder {
54466            inner: VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {
54467                s_type: StructureType::from_raw(1000553005i32),
54468                ..Default::default()
54469            },
54470            _marker: core::marker::PhantomData,
54471        }
54472    }
54473}
54474impl<'a> VideoEncodeQuantizationMapSessionParametersCreateInfoKHRBuilder<'a> {
54475    #[inline]
54476    pub fn quantization_map_texel_size(mut self, value: Extent2D) -> Self {
54477        self.inner.quantization_map_texel_size = value;
54478        self
54479    }
54480    ///Prepend a struct to the pNext chain. See [`VideoEncodeQuantizationMapSessionParametersCreateInfoKHR`]'s **Extended By** section for valid types.
54481    #[inline]
54482    pub fn push_next<T: ExtendsVideoEncodeQuantizationMapSessionParametersCreateInfoKHR>(
54483        mut self,
54484        next: &'a mut T,
54485    ) -> Self {
54486        unsafe {
54487            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
54488            (*next_ptr).p_next = self.inner.p_next as *mut _;
54489            self.inner.p_next = <*mut BaseOutStructure>::cast::<
54490                core::ffi::c_void,
54491            >(next_ptr) as *const _;
54492        }
54493        self
54494    }
54495}
54496impl<'a> core::ops::Deref
54497for VideoEncodeQuantizationMapSessionParametersCreateInfoKHRBuilder<'a> {
54498    type Target = VideoEncodeQuantizationMapSessionParametersCreateInfoKHR;
54499    #[inline]
54500    fn deref(&self) -> &Self::Target {
54501        &self.inner
54502    }
54503}
54504impl<'a> core::ops::DerefMut
54505for VideoEncodeQuantizationMapSessionParametersCreateInfoKHRBuilder<'a> {
54506    #[inline]
54507    fn deref_mut(&mut self) -> &mut Self::Target {
54508        &mut self.inner
54509    }
54510}
54511///Builder for [`PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR`] with lifetime-tied pNext safety.
54512pub struct PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHRBuilder<'a> {
54513    inner: PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR,
54514    _marker: core::marker::PhantomData<&'a ()>,
54515}
54516impl PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {
54517    /// Start building this struct; `s_type` is already set to the correct variant.
54518    #[inline]
54519    pub fn builder<'a>() -> PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHRBuilder<
54520        'a,
54521    > {
54522        PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHRBuilder {
54523            inner: PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {
54524                s_type: StructureType::from_raw(1000553009i32),
54525                ..Default::default()
54526            },
54527            _marker: core::marker::PhantomData,
54528        }
54529    }
54530}
54531impl<'a> PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHRBuilder<'a> {
54532    #[inline]
54533    pub fn video_encode_quantization_map(mut self, value: bool) -> Self {
54534        self.inner.video_encode_quantization_map = value as u32;
54535        self
54536    }
54537    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR`]'s **Extended By** section for valid types.
54538    #[inline]
54539    pub fn push_next<T: ExtendsPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR>(
54540        mut self,
54541        next: &'a mut T,
54542    ) -> Self {
54543        unsafe {
54544            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
54545            (*next_ptr).p_next = self.inner.p_next as *mut _;
54546            self.inner.p_next = <*mut BaseOutStructure>::cast::<
54547                core::ffi::c_void,
54548            >(next_ptr);
54549        }
54550        self
54551    }
54552}
54553impl<'a> core::ops::Deref
54554for PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHRBuilder<'a> {
54555    type Target = PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR;
54556    #[inline]
54557    fn deref(&self) -> &Self::Target {
54558        &self.inner
54559    }
54560}
54561impl<'a> core::ops::DerefMut
54562for PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHRBuilder<'a> {
54563    #[inline]
54564    fn deref_mut(&mut self) -> &mut Self::Target {
54565        &mut self.inner
54566    }
54567}
54568///Builder for [`QueryPoolVideoEncodeFeedbackCreateInfoKHR`] with lifetime-tied pNext safety.
54569pub struct QueryPoolVideoEncodeFeedbackCreateInfoKHRBuilder<'a> {
54570    inner: QueryPoolVideoEncodeFeedbackCreateInfoKHR,
54571    _marker: core::marker::PhantomData<&'a ()>,
54572}
54573impl QueryPoolVideoEncodeFeedbackCreateInfoKHR {
54574    /// Start building this struct; `s_type` is already set to the correct variant.
54575    #[inline]
54576    pub fn builder<'a>() -> QueryPoolVideoEncodeFeedbackCreateInfoKHRBuilder<'a> {
54577        QueryPoolVideoEncodeFeedbackCreateInfoKHRBuilder {
54578            inner: QueryPoolVideoEncodeFeedbackCreateInfoKHR {
54579                s_type: StructureType::from_raw(1000299005i32),
54580                ..Default::default()
54581            },
54582            _marker: core::marker::PhantomData,
54583        }
54584    }
54585}
54586impl<'a> QueryPoolVideoEncodeFeedbackCreateInfoKHRBuilder<'a> {
54587    #[inline]
54588    pub fn encode_feedback_flags(mut self, value: VideoEncodeFeedbackFlagsKHR) -> Self {
54589        self.inner.encode_feedback_flags = value;
54590        self
54591    }
54592    ///Prepend a struct to the pNext chain. See [`QueryPoolVideoEncodeFeedbackCreateInfoKHR`]'s **Extended By** section for valid types.
54593    #[inline]
54594    pub fn push_next<T: ExtendsQueryPoolVideoEncodeFeedbackCreateInfoKHR>(
54595        mut self,
54596        next: &'a mut T,
54597    ) -> Self {
54598        unsafe {
54599            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
54600            (*next_ptr).p_next = self.inner.p_next as *mut _;
54601            self.inner.p_next = <*mut BaseOutStructure>::cast::<
54602                core::ffi::c_void,
54603            >(next_ptr) as *const _;
54604        }
54605        self
54606    }
54607}
54608impl<'a> core::ops::Deref for QueryPoolVideoEncodeFeedbackCreateInfoKHRBuilder<'a> {
54609    type Target = QueryPoolVideoEncodeFeedbackCreateInfoKHR;
54610    #[inline]
54611    fn deref(&self) -> &Self::Target {
54612        &self.inner
54613    }
54614}
54615impl<'a> core::ops::DerefMut for QueryPoolVideoEncodeFeedbackCreateInfoKHRBuilder<'a> {
54616    #[inline]
54617    fn deref_mut(&mut self) -> &mut Self::Target {
54618        &mut self.inner
54619    }
54620}
54621///Builder for [`VideoEncodeQualityLevelInfoKHR`] with lifetime-tied pNext safety.
54622pub struct VideoEncodeQualityLevelInfoKHRBuilder<'a> {
54623    inner: VideoEncodeQualityLevelInfoKHR,
54624    _marker: core::marker::PhantomData<&'a ()>,
54625}
54626impl VideoEncodeQualityLevelInfoKHR {
54627    /// Start building this struct; `s_type` is already set to the correct variant.
54628    #[inline]
54629    pub fn builder<'a>() -> VideoEncodeQualityLevelInfoKHRBuilder<'a> {
54630        VideoEncodeQualityLevelInfoKHRBuilder {
54631            inner: VideoEncodeQualityLevelInfoKHR {
54632                s_type: StructureType::from_raw(1000299008i32),
54633                ..Default::default()
54634            },
54635            _marker: core::marker::PhantomData,
54636        }
54637    }
54638}
54639impl<'a> VideoEncodeQualityLevelInfoKHRBuilder<'a> {
54640    #[inline]
54641    pub fn quality_level(mut self, value: u32) -> Self {
54642        self.inner.quality_level = value;
54643        self
54644    }
54645    ///Prepend a struct to the pNext chain. See [`VideoEncodeQualityLevelInfoKHR`]'s **Extended By** section for valid types.
54646    #[inline]
54647    pub fn push_next<T: ExtendsVideoEncodeQualityLevelInfoKHR>(
54648        mut self,
54649        next: &'a mut T,
54650    ) -> Self {
54651        unsafe {
54652            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
54653            (*next_ptr).p_next = self.inner.p_next as *mut _;
54654            self.inner.p_next = <*mut BaseOutStructure>::cast::<
54655                core::ffi::c_void,
54656            >(next_ptr) as *const _;
54657        }
54658        self
54659    }
54660}
54661impl<'a> core::ops::Deref for VideoEncodeQualityLevelInfoKHRBuilder<'a> {
54662    type Target = VideoEncodeQualityLevelInfoKHR;
54663    #[inline]
54664    fn deref(&self) -> &Self::Target {
54665        &self.inner
54666    }
54667}
54668impl<'a> core::ops::DerefMut for VideoEncodeQualityLevelInfoKHRBuilder<'a> {
54669    #[inline]
54670    fn deref_mut(&mut self) -> &mut Self::Target {
54671        &mut self.inner
54672    }
54673}
54674///Builder for [`PhysicalDeviceVideoEncodeQualityLevelInfoKHR`] with lifetime-tied pNext safety.
54675pub struct PhysicalDeviceVideoEncodeQualityLevelInfoKHRBuilder<'a> {
54676    inner: PhysicalDeviceVideoEncodeQualityLevelInfoKHR,
54677    _marker: core::marker::PhantomData<&'a ()>,
54678}
54679impl PhysicalDeviceVideoEncodeQualityLevelInfoKHR {
54680    /// Start building this struct; `s_type` is already set to the correct variant.
54681    #[inline]
54682    pub fn builder<'a>() -> PhysicalDeviceVideoEncodeQualityLevelInfoKHRBuilder<'a> {
54683        PhysicalDeviceVideoEncodeQualityLevelInfoKHRBuilder {
54684            inner: PhysicalDeviceVideoEncodeQualityLevelInfoKHR {
54685                s_type: StructureType::from_raw(1000299006i32),
54686                ..Default::default()
54687            },
54688            _marker: core::marker::PhantomData,
54689        }
54690    }
54691}
54692impl<'a> PhysicalDeviceVideoEncodeQualityLevelInfoKHRBuilder<'a> {
54693    #[inline]
54694    pub fn video_profile(mut self, value: &'a VideoProfileInfoKHR) -> Self {
54695        self.inner.p_video_profile = value;
54696        self
54697    }
54698    #[inline]
54699    pub fn quality_level(mut self, value: u32) -> Self {
54700        self.inner.quality_level = value;
54701        self
54702    }
54703    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceVideoEncodeQualityLevelInfoKHR`]'s **Extended By** section for valid types.
54704    #[inline]
54705    pub fn push_next<T: ExtendsPhysicalDeviceVideoEncodeQualityLevelInfoKHR>(
54706        mut self,
54707        next: &'a mut T,
54708    ) -> Self {
54709        unsafe {
54710            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
54711            (*next_ptr).p_next = self.inner.p_next as *mut _;
54712            self.inner.p_next = <*mut BaseOutStructure>::cast::<
54713                core::ffi::c_void,
54714            >(next_ptr) as *const _;
54715        }
54716        self
54717    }
54718}
54719impl<'a> core::ops::Deref for PhysicalDeviceVideoEncodeQualityLevelInfoKHRBuilder<'a> {
54720    type Target = PhysicalDeviceVideoEncodeQualityLevelInfoKHR;
54721    #[inline]
54722    fn deref(&self) -> &Self::Target {
54723        &self.inner
54724    }
54725}
54726impl<'a> core::ops::DerefMut
54727for PhysicalDeviceVideoEncodeQualityLevelInfoKHRBuilder<'a> {
54728    #[inline]
54729    fn deref_mut(&mut self) -> &mut Self::Target {
54730        &mut self.inner
54731    }
54732}
54733///Builder for [`VideoEncodeQualityLevelPropertiesKHR`] with lifetime-tied pNext safety.
54734pub struct VideoEncodeQualityLevelPropertiesKHRBuilder<'a> {
54735    inner: VideoEncodeQualityLevelPropertiesKHR,
54736    _marker: core::marker::PhantomData<&'a ()>,
54737}
54738impl VideoEncodeQualityLevelPropertiesKHR {
54739    /// Start building this struct; `s_type` is already set to the correct variant.
54740    #[inline]
54741    pub fn builder<'a>() -> VideoEncodeQualityLevelPropertiesKHRBuilder<'a> {
54742        VideoEncodeQualityLevelPropertiesKHRBuilder {
54743            inner: VideoEncodeQualityLevelPropertiesKHR {
54744                s_type: StructureType::from_raw(1000299007i32),
54745                ..Default::default()
54746            },
54747            _marker: core::marker::PhantomData,
54748        }
54749    }
54750}
54751impl<'a> VideoEncodeQualityLevelPropertiesKHRBuilder<'a> {
54752    #[inline]
54753    pub fn preferred_rate_control_mode(
54754        mut self,
54755        value: VideoEncodeRateControlModeFlagBitsKHR,
54756    ) -> Self {
54757        self.inner.preferred_rate_control_mode = value;
54758        self
54759    }
54760    #[inline]
54761    pub fn preferred_rate_control_layer_count(mut self, value: u32) -> Self {
54762        self.inner.preferred_rate_control_layer_count = value;
54763        self
54764    }
54765}
54766impl<'a> core::ops::Deref for VideoEncodeQualityLevelPropertiesKHRBuilder<'a> {
54767    type Target = VideoEncodeQualityLevelPropertiesKHR;
54768    #[inline]
54769    fn deref(&self) -> &Self::Target {
54770        &self.inner
54771    }
54772}
54773impl<'a> core::ops::DerefMut for VideoEncodeQualityLevelPropertiesKHRBuilder<'a> {
54774    #[inline]
54775    fn deref_mut(&mut self) -> &mut Self::Target {
54776        &mut self.inner
54777    }
54778}
54779///Builder for [`VideoEncodeRateControlInfoKHR`] with lifetime-tied pNext safety.
54780pub struct VideoEncodeRateControlInfoKHRBuilder<'a> {
54781    inner: VideoEncodeRateControlInfoKHR,
54782    _marker: core::marker::PhantomData<&'a ()>,
54783}
54784impl VideoEncodeRateControlInfoKHR {
54785    /// Start building this struct; `s_type` is already set to the correct variant.
54786    #[inline]
54787    pub fn builder<'a>() -> VideoEncodeRateControlInfoKHRBuilder<'a> {
54788        VideoEncodeRateControlInfoKHRBuilder {
54789            inner: VideoEncodeRateControlInfoKHR {
54790                s_type: StructureType::from_raw(1000299001i32),
54791                ..Default::default()
54792            },
54793            _marker: core::marker::PhantomData,
54794        }
54795    }
54796}
54797impl<'a> VideoEncodeRateControlInfoKHRBuilder<'a> {
54798    #[inline]
54799    pub fn flags(mut self, value: VideoEncodeRateControlFlagsKHR) -> Self {
54800        self.inner.flags = value;
54801        self
54802    }
54803    #[inline]
54804    pub fn rate_control_mode(
54805        mut self,
54806        value: VideoEncodeRateControlModeFlagBitsKHR,
54807    ) -> Self {
54808        self.inner.rate_control_mode = value;
54809        self
54810    }
54811    #[inline]
54812    pub fn layers(mut self, slice: &'a [VideoEncodeRateControlLayerInfoKHR]) -> Self {
54813        self.inner.layer_count = slice.len() as u32;
54814        self.inner.p_layers = slice.as_ptr();
54815        self
54816    }
54817    #[inline]
54818    pub fn virtual_buffer_size_in_ms(mut self, value: u32) -> Self {
54819        self.inner.virtual_buffer_size_in_ms = value;
54820        self
54821    }
54822    #[inline]
54823    pub fn initial_virtual_buffer_size_in_ms(mut self, value: u32) -> Self {
54824        self.inner.initial_virtual_buffer_size_in_ms = value;
54825        self
54826    }
54827    ///Prepend a struct to the pNext chain. See [`VideoEncodeRateControlInfoKHR`]'s **Extended By** section for valid types.
54828    #[inline]
54829    pub fn push_next<T: ExtendsVideoEncodeRateControlInfoKHR>(
54830        mut self,
54831        next: &'a mut T,
54832    ) -> Self {
54833        unsafe {
54834            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
54835            (*next_ptr).p_next = self.inner.p_next as *mut _;
54836            self.inner.p_next = <*mut BaseOutStructure>::cast::<
54837                core::ffi::c_void,
54838            >(next_ptr) as *const _;
54839        }
54840        self
54841    }
54842}
54843impl<'a> core::ops::Deref for VideoEncodeRateControlInfoKHRBuilder<'a> {
54844    type Target = VideoEncodeRateControlInfoKHR;
54845    #[inline]
54846    fn deref(&self) -> &Self::Target {
54847        &self.inner
54848    }
54849}
54850impl<'a> core::ops::DerefMut for VideoEncodeRateControlInfoKHRBuilder<'a> {
54851    #[inline]
54852    fn deref_mut(&mut self) -> &mut Self::Target {
54853        &mut self.inner
54854    }
54855}
54856///Builder for [`VideoEncodeRateControlLayerInfoKHR`] with lifetime-tied pNext safety.
54857pub struct VideoEncodeRateControlLayerInfoKHRBuilder<'a> {
54858    inner: VideoEncodeRateControlLayerInfoKHR,
54859    _marker: core::marker::PhantomData<&'a ()>,
54860}
54861impl VideoEncodeRateControlLayerInfoKHR {
54862    /// Start building this struct; `s_type` is already set to the correct variant.
54863    #[inline]
54864    pub fn builder<'a>() -> VideoEncodeRateControlLayerInfoKHRBuilder<'a> {
54865        VideoEncodeRateControlLayerInfoKHRBuilder {
54866            inner: VideoEncodeRateControlLayerInfoKHR {
54867                s_type: StructureType::from_raw(1000299002i32),
54868                ..Default::default()
54869            },
54870            _marker: core::marker::PhantomData,
54871        }
54872    }
54873}
54874impl<'a> VideoEncodeRateControlLayerInfoKHRBuilder<'a> {
54875    #[inline]
54876    pub fn average_bitrate(mut self, value: u64) -> Self {
54877        self.inner.average_bitrate = value;
54878        self
54879    }
54880    #[inline]
54881    pub fn max_bitrate(mut self, value: u64) -> Self {
54882        self.inner.max_bitrate = value;
54883        self
54884    }
54885    #[inline]
54886    pub fn frame_rate_numerator(mut self, value: u32) -> Self {
54887        self.inner.frame_rate_numerator = value;
54888        self
54889    }
54890    #[inline]
54891    pub fn frame_rate_denominator(mut self, value: u32) -> Self {
54892        self.inner.frame_rate_denominator = value;
54893        self
54894    }
54895    ///Prepend a struct to the pNext chain. See [`VideoEncodeRateControlLayerInfoKHR`]'s **Extended By** section for valid types.
54896    #[inline]
54897    pub fn push_next<T: ExtendsVideoEncodeRateControlLayerInfoKHR>(
54898        mut self,
54899        next: &'a mut T,
54900    ) -> Self {
54901        unsafe {
54902            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
54903            (*next_ptr).p_next = self.inner.p_next as *mut _;
54904            self.inner.p_next = <*mut BaseOutStructure>::cast::<
54905                core::ffi::c_void,
54906            >(next_ptr) as *const _;
54907        }
54908        self
54909    }
54910}
54911impl<'a> core::ops::Deref for VideoEncodeRateControlLayerInfoKHRBuilder<'a> {
54912    type Target = VideoEncodeRateControlLayerInfoKHR;
54913    #[inline]
54914    fn deref(&self) -> &Self::Target {
54915        &self.inner
54916    }
54917}
54918impl<'a> core::ops::DerefMut for VideoEncodeRateControlLayerInfoKHRBuilder<'a> {
54919    #[inline]
54920    fn deref_mut(&mut self) -> &mut Self::Target {
54921        &mut self.inner
54922    }
54923}
54924///Builder for [`VideoEncodeCapabilitiesKHR`] with lifetime-tied pNext safety.
54925pub struct VideoEncodeCapabilitiesKHRBuilder<'a> {
54926    inner: VideoEncodeCapabilitiesKHR,
54927    _marker: core::marker::PhantomData<&'a ()>,
54928}
54929impl VideoEncodeCapabilitiesKHR {
54930    /// Start building this struct; `s_type` is already set to the correct variant.
54931    #[inline]
54932    pub fn builder<'a>() -> VideoEncodeCapabilitiesKHRBuilder<'a> {
54933        VideoEncodeCapabilitiesKHRBuilder {
54934            inner: VideoEncodeCapabilitiesKHR {
54935                s_type: StructureType::from_raw(1000299003i32),
54936                ..Default::default()
54937            },
54938            _marker: core::marker::PhantomData,
54939        }
54940    }
54941}
54942impl<'a> VideoEncodeCapabilitiesKHRBuilder<'a> {
54943    #[inline]
54944    pub fn flags(mut self, value: VideoEncodeCapabilityFlagsKHR) -> Self {
54945        self.inner.flags = value;
54946        self
54947    }
54948    #[inline]
54949    pub fn rate_control_modes(
54950        mut self,
54951        value: VideoEncodeRateControlModeFlagsKHR,
54952    ) -> Self {
54953        self.inner.rate_control_modes = value;
54954        self
54955    }
54956    #[inline]
54957    pub fn max_rate_control_layers(mut self, value: u32) -> Self {
54958        self.inner.max_rate_control_layers = value;
54959        self
54960    }
54961    #[inline]
54962    pub fn max_bitrate(mut self, value: u64) -> Self {
54963        self.inner.max_bitrate = value;
54964        self
54965    }
54966    #[inline]
54967    pub fn max_quality_levels(mut self, value: u32) -> Self {
54968        self.inner.max_quality_levels = value;
54969        self
54970    }
54971    #[inline]
54972    pub fn encode_input_picture_granularity(mut self, value: Extent2D) -> Self {
54973        self.inner.encode_input_picture_granularity = value;
54974        self
54975    }
54976    #[inline]
54977    pub fn supported_encode_feedback_flags(
54978        mut self,
54979        value: VideoEncodeFeedbackFlagsKHR,
54980    ) -> Self {
54981        self.inner.supported_encode_feedback_flags = value;
54982        self
54983    }
54984}
54985impl<'a> core::ops::Deref for VideoEncodeCapabilitiesKHRBuilder<'a> {
54986    type Target = VideoEncodeCapabilitiesKHR;
54987    #[inline]
54988    fn deref(&self) -> &Self::Target {
54989        &self.inner
54990    }
54991}
54992impl<'a> core::ops::DerefMut for VideoEncodeCapabilitiesKHRBuilder<'a> {
54993    #[inline]
54994    fn deref_mut(&mut self) -> &mut Self::Target {
54995        &mut self.inner
54996    }
54997}
54998///Builder for [`VideoEncodeH264CapabilitiesKHR`] with lifetime-tied pNext safety.
54999pub struct VideoEncodeH264CapabilitiesKHRBuilder<'a> {
55000    inner: VideoEncodeH264CapabilitiesKHR,
55001    _marker: core::marker::PhantomData<&'a ()>,
55002}
55003impl VideoEncodeH264CapabilitiesKHR {
55004    /// Start building this struct; `s_type` is already set to the correct variant.
55005    #[inline]
55006    pub fn builder<'a>() -> VideoEncodeH264CapabilitiesKHRBuilder<'a> {
55007        VideoEncodeH264CapabilitiesKHRBuilder {
55008            inner: VideoEncodeH264CapabilitiesKHR {
55009                s_type: StructureType::from_raw(1000038000i32),
55010                ..Default::default()
55011            },
55012            _marker: core::marker::PhantomData,
55013        }
55014    }
55015}
55016impl<'a> VideoEncodeH264CapabilitiesKHRBuilder<'a> {
55017    #[inline]
55018    pub fn flags(mut self, value: VideoEncodeH264CapabilityFlagsKHR) -> Self {
55019        self.inner.flags = value;
55020        self
55021    }
55022    #[inline]
55023    pub fn max_level_idc(mut self, value: StdVideoH264LevelIdc) -> Self {
55024        self.inner.max_level_idc = value;
55025        self
55026    }
55027    #[inline]
55028    pub fn max_slice_count(mut self, value: u32) -> Self {
55029        self.inner.max_slice_count = value;
55030        self
55031    }
55032    #[inline]
55033    pub fn max_p_picture_l0_reference_count(mut self, value: u32) -> Self {
55034        self.inner.max_p_picture_l0_reference_count = value;
55035        self
55036    }
55037    #[inline]
55038    pub fn max_b_picture_l0_reference_count(mut self, value: u32) -> Self {
55039        self.inner.max_b_picture_l0_reference_count = value;
55040        self
55041    }
55042    #[inline]
55043    pub fn max_l1_reference_count(mut self, value: u32) -> Self {
55044        self.inner.max_l1_reference_count = value;
55045        self
55046    }
55047    #[inline]
55048    pub fn max_temporal_layer_count(mut self, value: u32) -> Self {
55049        self.inner.max_temporal_layer_count = value;
55050        self
55051    }
55052    #[inline]
55053    pub fn expect_dyadic_temporal_layer_pattern(mut self, value: bool) -> Self {
55054        self.inner.expect_dyadic_temporal_layer_pattern = value as u32;
55055        self
55056    }
55057    #[inline]
55058    pub fn min_qp(mut self, value: i32) -> Self {
55059        self.inner.min_qp = value;
55060        self
55061    }
55062    #[inline]
55063    pub fn max_qp(mut self, value: i32) -> Self {
55064        self.inner.max_qp = value;
55065        self
55066    }
55067    #[inline]
55068    pub fn prefers_gop_remaining_frames(mut self, value: bool) -> Self {
55069        self.inner.prefers_gop_remaining_frames = value as u32;
55070        self
55071    }
55072    #[inline]
55073    pub fn requires_gop_remaining_frames(mut self, value: bool) -> Self {
55074        self.inner.requires_gop_remaining_frames = value as u32;
55075        self
55076    }
55077    #[inline]
55078    pub fn std_syntax_flags(mut self, value: VideoEncodeH264StdFlagsKHR) -> Self {
55079        self.inner.std_syntax_flags = value;
55080        self
55081    }
55082}
55083impl<'a> core::ops::Deref for VideoEncodeH264CapabilitiesKHRBuilder<'a> {
55084    type Target = VideoEncodeH264CapabilitiesKHR;
55085    #[inline]
55086    fn deref(&self) -> &Self::Target {
55087        &self.inner
55088    }
55089}
55090impl<'a> core::ops::DerefMut for VideoEncodeH264CapabilitiesKHRBuilder<'a> {
55091    #[inline]
55092    fn deref_mut(&mut self) -> &mut Self::Target {
55093        &mut self.inner
55094    }
55095}
55096///Builder for [`VideoEncodeH264QualityLevelPropertiesKHR`] with lifetime-tied pNext safety.
55097pub struct VideoEncodeH264QualityLevelPropertiesKHRBuilder<'a> {
55098    inner: VideoEncodeH264QualityLevelPropertiesKHR,
55099    _marker: core::marker::PhantomData<&'a ()>,
55100}
55101impl VideoEncodeH264QualityLevelPropertiesKHR {
55102    /// Start building this struct; `s_type` is already set to the correct variant.
55103    #[inline]
55104    pub fn builder<'a>() -> VideoEncodeH264QualityLevelPropertiesKHRBuilder<'a> {
55105        VideoEncodeH264QualityLevelPropertiesKHRBuilder {
55106            inner: VideoEncodeH264QualityLevelPropertiesKHR {
55107                s_type: StructureType::from_raw(1000038011i32),
55108                ..Default::default()
55109            },
55110            _marker: core::marker::PhantomData,
55111        }
55112    }
55113}
55114impl<'a> VideoEncodeH264QualityLevelPropertiesKHRBuilder<'a> {
55115    #[inline]
55116    pub fn preferred_rate_control_flags(
55117        mut self,
55118        value: VideoEncodeH264RateControlFlagsKHR,
55119    ) -> Self {
55120        self.inner.preferred_rate_control_flags = value;
55121        self
55122    }
55123    #[inline]
55124    pub fn preferred_gop_frame_count(mut self, value: u32) -> Self {
55125        self.inner.preferred_gop_frame_count = value;
55126        self
55127    }
55128    #[inline]
55129    pub fn preferred_idr_period(mut self, value: u32) -> Self {
55130        self.inner.preferred_idr_period = value;
55131        self
55132    }
55133    #[inline]
55134    pub fn preferred_consecutive_b_frame_count(mut self, value: u32) -> Self {
55135        self.inner.preferred_consecutive_b_frame_count = value;
55136        self
55137    }
55138    #[inline]
55139    pub fn preferred_temporal_layer_count(mut self, value: u32) -> Self {
55140        self.inner.preferred_temporal_layer_count = value;
55141        self
55142    }
55143    #[inline]
55144    pub fn preferred_constant_qp(mut self, value: VideoEncodeH264QpKHR) -> Self {
55145        self.inner.preferred_constant_qp = value;
55146        self
55147    }
55148    #[inline]
55149    pub fn preferred_max_l0_reference_count(mut self, value: u32) -> Self {
55150        self.inner.preferred_max_l0_reference_count = value;
55151        self
55152    }
55153    #[inline]
55154    pub fn preferred_max_l1_reference_count(mut self, value: u32) -> Self {
55155        self.inner.preferred_max_l1_reference_count = value;
55156        self
55157    }
55158    #[inline]
55159    pub fn preferred_std_entropy_coding_mode_flag(mut self, value: bool) -> Self {
55160        self.inner.preferred_std_entropy_coding_mode_flag = value as u32;
55161        self
55162    }
55163}
55164impl<'a> core::ops::Deref for VideoEncodeH264QualityLevelPropertiesKHRBuilder<'a> {
55165    type Target = VideoEncodeH264QualityLevelPropertiesKHR;
55166    #[inline]
55167    fn deref(&self) -> &Self::Target {
55168        &self.inner
55169    }
55170}
55171impl<'a> core::ops::DerefMut for VideoEncodeH264QualityLevelPropertiesKHRBuilder<'a> {
55172    #[inline]
55173    fn deref_mut(&mut self) -> &mut Self::Target {
55174        &mut self.inner
55175    }
55176}
55177///Builder for [`VideoEncodeH264SessionCreateInfoKHR`] with lifetime-tied pNext safety.
55178pub struct VideoEncodeH264SessionCreateInfoKHRBuilder<'a> {
55179    inner: VideoEncodeH264SessionCreateInfoKHR,
55180    _marker: core::marker::PhantomData<&'a ()>,
55181}
55182impl VideoEncodeH264SessionCreateInfoKHR {
55183    /// Start building this struct; `s_type` is already set to the correct variant.
55184    #[inline]
55185    pub fn builder<'a>() -> VideoEncodeH264SessionCreateInfoKHRBuilder<'a> {
55186        VideoEncodeH264SessionCreateInfoKHRBuilder {
55187            inner: VideoEncodeH264SessionCreateInfoKHR {
55188                s_type: StructureType::from_raw(1000038010i32),
55189                ..Default::default()
55190            },
55191            _marker: core::marker::PhantomData,
55192        }
55193    }
55194}
55195impl<'a> VideoEncodeH264SessionCreateInfoKHRBuilder<'a> {
55196    #[inline]
55197    pub fn use_max_level_idc(mut self, value: bool) -> Self {
55198        self.inner.use_max_level_idc = value as u32;
55199        self
55200    }
55201    #[inline]
55202    pub fn max_level_idc(mut self, value: StdVideoH264LevelIdc) -> Self {
55203        self.inner.max_level_idc = value;
55204        self
55205    }
55206    ///Prepend a struct to the pNext chain. See [`VideoEncodeH264SessionCreateInfoKHR`]'s **Extended By** section for valid types.
55207    #[inline]
55208    pub fn push_next<T: ExtendsVideoEncodeH264SessionCreateInfoKHR>(
55209        mut self,
55210        next: &'a mut T,
55211    ) -> Self {
55212        unsafe {
55213            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
55214            (*next_ptr).p_next = self.inner.p_next as *mut _;
55215            self.inner.p_next = <*mut BaseOutStructure>::cast::<
55216                core::ffi::c_void,
55217            >(next_ptr) as *const _;
55218        }
55219        self
55220    }
55221}
55222impl<'a> core::ops::Deref for VideoEncodeH264SessionCreateInfoKHRBuilder<'a> {
55223    type Target = VideoEncodeH264SessionCreateInfoKHR;
55224    #[inline]
55225    fn deref(&self) -> &Self::Target {
55226        &self.inner
55227    }
55228}
55229impl<'a> core::ops::DerefMut for VideoEncodeH264SessionCreateInfoKHRBuilder<'a> {
55230    #[inline]
55231    fn deref_mut(&mut self) -> &mut Self::Target {
55232        &mut self.inner
55233    }
55234}
55235///Builder for [`VideoEncodeH264SessionParametersAddInfoKHR`] with lifetime-tied pNext safety.
55236pub struct VideoEncodeH264SessionParametersAddInfoKHRBuilder<'a> {
55237    inner: VideoEncodeH264SessionParametersAddInfoKHR,
55238    _marker: core::marker::PhantomData<&'a ()>,
55239}
55240impl VideoEncodeH264SessionParametersAddInfoKHR {
55241    /// Start building this struct; `s_type` is already set to the correct variant.
55242    #[inline]
55243    pub fn builder<'a>() -> VideoEncodeH264SessionParametersAddInfoKHRBuilder<'a> {
55244        VideoEncodeH264SessionParametersAddInfoKHRBuilder {
55245            inner: VideoEncodeH264SessionParametersAddInfoKHR {
55246                s_type: StructureType::from_raw(1000038002i32),
55247                ..Default::default()
55248            },
55249            _marker: core::marker::PhantomData,
55250        }
55251    }
55252}
55253impl<'a> VideoEncodeH264SessionParametersAddInfoKHRBuilder<'a> {
55254    #[inline]
55255    pub fn std_sps_count(mut self, value: u32) -> Self {
55256        self.inner.std_sps_count = value;
55257        self
55258    }
55259    #[inline]
55260    pub fn std_sp_ss(mut self, slice: &'a [StdVideoH264SequenceParameterSet]) -> Self {
55261        self.inner.std_sps_count = slice.len() as u32;
55262        self.inner.p_std_sp_ss = slice.as_ptr();
55263        self
55264    }
55265    #[inline]
55266    pub fn std_pps_count(mut self, value: u32) -> Self {
55267        self.inner.std_pps_count = value;
55268        self
55269    }
55270    #[inline]
55271    pub fn std_pp_ss(mut self, slice: &'a [StdVideoH264PictureParameterSet]) -> Self {
55272        self.inner.std_pps_count = slice.len() as u32;
55273        self.inner.p_std_pp_ss = slice.as_ptr();
55274        self
55275    }
55276    ///Prepend a struct to the pNext chain. See [`VideoEncodeH264SessionParametersAddInfoKHR`]'s **Extended By** section for valid types.
55277    #[inline]
55278    pub fn push_next<T: ExtendsVideoEncodeH264SessionParametersAddInfoKHR>(
55279        mut self,
55280        next: &'a mut T,
55281    ) -> Self {
55282        unsafe {
55283            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
55284            (*next_ptr).p_next = self.inner.p_next as *mut _;
55285            self.inner.p_next = <*mut BaseOutStructure>::cast::<
55286                core::ffi::c_void,
55287            >(next_ptr) as *const _;
55288        }
55289        self
55290    }
55291}
55292impl<'a> core::ops::Deref for VideoEncodeH264SessionParametersAddInfoKHRBuilder<'a> {
55293    type Target = VideoEncodeH264SessionParametersAddInfoKHR;
55294    #[inline]
55295    fn deref(&self) -> &Self::Target {
55296        &self.inner
55297    }
55298}
55299impl<'a> core::ops::DerefMut for VideoEncodeH264SessionParametersAddInfoKHRBuilder<'a> {
55300    #[inline]
55301    fn deref_mut(&mut self) -> &mut Self::Target {
55302        &mut self.inner
55303    }
55304}
55305///Builder for [`VideoEncodeH264SessionParametersCreateInfoKHR`] with lifetime-tied pNext safety.
55306pub struct VideoEncodeH264SessionParametersCreateInfoKHRBuilder<'a> {
55307    inner: VideoEncodeH264SessionParametersCreateInfoKHR,
55308    _marker: core::marker::PhantomData<&'a ()>,
55309}
55310impl VideoEncodeH264SessionParametersCreateInfoKHR {
55311    /// Start building this struct; `s_type` is already set to the correct variant.
55312    #[inline]
55313    pub fn builder<'a>() -> VideoEncodeH264SessionParametersCreateInfoKHRBuilder<'a> {
55314        VideoEncodeH264SessionParametersCreateInfoKHRBuilder {
55315            inner: VideoEncodeH264SessionParametersCreateInfoKHR {
55316                s_type: StructureType::from_raw(1000038001i32),
55317                ..Default::default()
55318            },
55319            _marker: core::marker::PhantomData,
55320        }
55321    }
55322}
55323impl<'a> VideoEncodeH264SessionParametersCreateInfoKHRBuilder<'a> {
55324    #[inline]
55325    pub fn max_std_sps_count(mut self, value: u32) -> Self {
55326        self.inner.max_std_sps_count = value;
55327        self
55328    }
55329    #[inline]
55330    pub fn max_std_pps_count(mut self, value: u32) -> Self {
55331        self.inner.max_std_pps_count = value;
55332        self
55333    }
55334    #[inline]
55335    pub fn parameters_add_info(
55336        mut self,
55337        value: &'a VideoEncodeH264SessionParametersAddInfoKHR,
55338    ) -> Self {
55339        self.inner.p_parameters_add_info = value;
55340        self
55341    }
55342    ///Prepend a struct to the pNext chain. See [`VideoEncodeH264SessionParametersCreateInfoKHR`]'s **Extended By** section for valid types.
55343    #[inline]
55344    pub fn push_next<T: ExtendsVideoEncodeH264SessionParametersCreateInfoKHR>(
55345        mut self,
55346        next: &'a mut T,
55347    ) -> Self {
55348        unsafe {
55349            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
55350            (*next_ptr).p_next = self.inner.p_next as *mut _;
55351            self.inner.p_next = <*mut BaseOutStructure>::cast::<
55352                core::ffi::c_void,
55353            >(next_ptr) as *const _;
55354        }
55355        self
55356    }
55357}
55358impl<'a> core::ops::Deref for VideoEncodeH264SessionParametersCreateInfoKHRBuilder<'a> {
55359    type Target = VideoEncodeH264SessionParametersCreateInfoKHR;
55360    #[inline]
55361    fn deref(&self) -> &Self::Target {
55362        &self.inner
55363    }
55364}
55365impl<'a> core::ops::DerefMut
55366for VideoEncodeH264SessionParametersCreateInfoKHRBuilder<'a> {
55367    #[inline]
55368    fn deref_mut(&mut self) -> &mut Self::Target {
55369        &mut self.inner
55370    }
55371}
55372///Builder for [`VideoEncodeH264SessionParametersGetInfoKHR`] with lifetime-tied pNext safety.
55373pub struct VideoEncodeH264SessionParametersGetInfoKHRBuilder<'a> {
55374    inner: VideoEncodeH264SessionParametersGetInfoKHR,
55375    _marker: core::marker::PhantomData<&'a ()>,
55376}
55377impl VideoEncodeH264SessionParametersGetInfoKHR {
55378    /// Start building this struct; `s_type` is already set to the correct variant.
55379    #[inline]
55380    pub fn builder<'a>() -> VideoEncodeH264SessionParametersGetInfoKHRBuilder<'a> {
55381        VideoEncodeH264SessionParametersGetInfoKHRBuilder {
55382            inner: VideoEncodeH264SessionParametersGetInfoKHR {
55383                s_type: StructureType::from_raw(1000038012i32),
55384                ..Default::default()
55385            },
55386            _marker: core::marker::PhantomData,
55387        }
55388    }
55389}
55390impl<'a> VideoEncodeH264SessionParametersGetInfoKHRBuilder<'a> {
55391    #[inline]
55392    pub fn write_std_sps(mut self, value: bool) -> Self {
55393        self.inner.write_std_sps = value as u32;
55394        self
55395    }
55396    #[inline]
55397    pub fn write_std_pps(mut self, value: bool) -> Self {
55398        self.inner.write_std_pps = value as u32;
55399        self
55400    }
55401    #[inline]
55402    pub fn std_sps_id(mut self, value: u32) -> Self {
55403        self.inner.std_sps_id = value;
55404        self
55405    }
55406    #[inline]
55407    pub fn std_pps_id(mut self, value: u32) -> Self {
55408        self.inner.std_pps_id = value;
55409        self
55410    }
55411    ///Prepend a struct to the pNext chain. See [`VideoEncodeH264SessionParametersGetInfoKHR`]'s **Extended By** section for valid types.
55412    #[inline]
55413    pub fn push_next<T: ExtendsVideoEncodeH264SessionParametersGetInfoKHR>(
55414        mut self,
55415        next: &'a mut T,
55416    ) -> Self {
55417        unsafe {
55418            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
55419            (*next_ptr).p_next = self.inner.p_next as *mut _;
55420            self.inner.p_next = <*mut BaseOutStructure>::cast::<
55421                core::ffi::c_void,
55422            >(next_ptr) as *const _;
55423        }
55424        self
55425    }
55426}
55427impl<'a> core::ops::Deref for VideoEncodeH264SessionParametersGetInfoKHRBuilder<'a> {
55428    type Target = VideoEncodeH264SessionParametersGetInfoKHR;
55429    #[inline]
55430    fn deref(&self) -> &Self::Target {
55431        &self.inner
55432    }
55433}
55434impl<'a> core::ops::DerefMut for VideoEncodeH264SessionParametersGetInfoKHRBuilder<'a> {
55435    #[inline]
55436    fn deref_mut(&mut self) -> &mut Self::Target {
55437        &mut self.inner
55438    }
55439}
55440///Builder for [`VideoEncodeH264SessionParametersFeedbackInfoKHR`] with lifetime-tied pNext safety.
55441pub struct VideoEncodeH264SessionParametersFeedbackInfoKHRBuilder<'a> {
55442    inner: VideoEncodeH264SessionParametersFeedbackInfoKHR,
55443    _marker: core::marker::PhantomData<&'a ()>,
55444}
55445impl VideoEncodeH264SessionParametersFeedbackInfoKHR {
55446    /// Start building this struct; `s_type` is already set to the correct variant.
55447    #[inline]
55448    pub fn builder<'a>() -> VideoEncodeH264SessionParametersFeedbackInfoKHRBuilder<'a> {
55449        VideoEncodeH264SessionParametersFeedbackInfoKHRBuilder {
55450            inner: VideoEncodeH264SessionParametersFeedbackInfoKHR {
55451                s_type: StructureType::from_raw(1000038013i32),
55452                ..Default::default()
55453            },
55454            _marker: core::marker::PhantomData,
55455        }
55456    }
55457}
55458impl<'a> VideoEncodeH264SessionParametersFeedbackInfoKHRBuilder<'a> {
55459    #[inline]
55460    pub fn has_std_sps_overrides(mut self, value: bool) -> Self {
55461        self.inner.has_std_sps_overrides = value as u32;
55462        self
55463    }
55464    #[inline]
55465    pub fn has_std_pps_overrides(mut self, value: bool) -> Self {
55466        self.inner.has_std_pps_overrides = value as u32;
55467        self
55468    }
55469}
55470impl<'a> core::ops::Deref
55471for VideoEncodeH264SessionParametersFeedbackInfoKHRBuilder<'a> {
55472    type Target = VideoEncodeH264SessionParametersFeedbackInfoKHR;
55473    #[inline]
55474    fn deref(&self) -> &Self::Target {
55475        &self.inner
55476    }
55477}
55478impl<'a> core::ops::DerefMut
55479for VideoEncodeH264SessionParametersFeedbackInfoKHRBuilder<'a> {
55480    #[inline]
55481    fn deref_mut(&mut self) -> &mut Self::Target {
55482        &mut self.inner
55483    }
55484}
55485///Builder for [`VideoEncodeH264DpbSlotInfoKHR`] with lifetime-tied pNext safety.
55486pub struct VideoEncodeH264DpbSlotInfoKHRBuilder<'a> {
55487    inner: VideoEncodeH264DpbSlotInfoKHR,
55488    _marker: core::marker::PhantomData<&'a ()>,
55489}
55490impl VideoEncodeH264DpbSlotInfoKHR {
55491    /// Start building this struct; `s_type` is already set to the correct variant.
55492    #[inline]
55493    pub fn builder<'a>() -> VideoEncodeH264DpbSlotInfoKHRBuilder<'a> {
55494        VideoEncodeH264DpbSlotInfoKHRBuilder {
55495            inner: VideoEncodeH264DpbSlotInfoKHR {
55496                s_type: StructureType::from_raw(1000038004i32),
55497                ..Default::default()
55498            },
55499            _marker: core::marker::PhantomData,
55500        }
55501    }
55502}
55503impl<'a> VideoEncodeH264DpbSlotInfoKHRBuilder<'a> {
55504    #[inline]
55505    pub fn std_reference_info(
55506        mut self,
55507        value: *const StdVideoEncodeH264ReferenceInfo,
55508    ) -> Self {
55509        self.inner.p_std_reference_info = value;
55510        self
55511    }
55512    ///Prepend a struct to the pNext chain. See [`VideoEncodeH264DpbSlotInfoKHR`]'s **Extended By** section for valid types.
55513    #[inline]
55514    pub fn push_next<T: ExtendsVideoEncodeH264DpbSlotInfoKHR>(
55515        mut self,
55516        next: &'a mut T,
55517    ) -> Self {
55518        unsafe {
55519            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
55520            (*next_ptr).p_next = self.inner.p_next as *mut _;
55521            self.inner.p_next = <*mut BaseOutStructure>::cast::<
55522                core::ffi::c_void,
55523            >(next_ptr) as *const _;
55524        }
55525        self
55526    }
55527}
55528impl<'a> core::ops::Deref for VideoEncodeH264DpbSlotInfoKHRBuilder<'a> {
55529    type Target = VideoEncodeH264DpbSlotInfoKHR;
55530    #[inline]
55531    fn deref(&self) -> &Self::Target {
55532        &self.inner
55533    }
55534}
55535impl<'a> core::ops::DerefMut for VideoEncodeH264DpbSlotInfoKHRBuilder<'a> {
55536    #[inline]
55537    fn deref_mut(&mut self) -> &mut Self::Target {
55538        &mut self.inner
55539    }
55540}
55541///Builder for [`VideoEncodeH264PictureInfoKHR`] with lifetime-tied pNext safety.
55542pub struct VideoEncodeH264PictureInfoKHRBuilder<'a> {
55543    inner: VideoEncodeH264PictureInfoKHR,
55544    _marker: core::marker::PhantomData<&'a ()>,
55545}
55546impl VideoEncodeH264PictureInfoKHR {
55547    /// Start building this struct; `s_type` is already set to the correct variant.
55548    #[inline]
55549    pub fn builder<'a>() -> VideoEncodeH264PictureInfoKHRBuilder<'a> {
55550        VideoEncodeH264PictureInfoKHRBuilder {
55551            inner: VideoEncodeH264PictureInfoKHR {
55552                s_type: StructureType::from_raw(1000038003i32),
55553                ..Default::default()
55554            },
55555            _marker: core::marker::PhantomData,
55556        }
55557    }
55558}
55559impl<'a> VideoEncodeH264PictureInfoKHRBuilder<'a> {
55560    #[inline]
55561    pub fn nalu_slice_entries(
55562        mut self,
55563        slice: &'a [VideoEncodeH264NaluSliceInfoKHR],
55564    ) -> Self {
55565        self.inner.nalu_slice_entry_count = slice.len() as u32;
55566        self.inner.p_nalu_slice_entries = slice.as_ptr();
55567        self
55568    }
55569    #[inline]
55570    pub fn std_picture_info(
55571        mut self,
55572        value: *const StdVideoEncodeH264PictureInfo,
55573    ) -> Self {
55574        self.inner.p_std_picture_info = value;
55575        self
55576    }
55577    #[inline]
55578    pub fn generate_prefix_nalu(mut self, value: bool) -> Self {
55579        self.inner.generate_prefix_nalu = value as u32;
55580        self
55581    }
55582    ///Prepend a struct to the pNext chain. See [`VideoEncodeH264PictureInfoKHR`]'s **Extended By** section for valid types.
55583    #[inline]
55584    pub fn push_next<T: ExtendsVideoEncodeH264PictureInfoKHR>(
55585        mut self,
55586        next: &'a mut T,
55587    ) -> Self {
55588        unsafe {
55589            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
55590            (*next_ptr).p_next = self.inner.p_next as *mut _;
55591            self.inner.p_next = <*mut BaseOutStructure>::cast::<
55592                core::ffi::c_void,
55593            >(next_ptr) as *const _;
55594        }
55595        self
55596    }
55597}
55598impl<'a> core::ops::Deref for VideoEncodeH264PictureInfoKHRBuilder<'a> {
55599    type Target = VideoEncodeH264PictureInfoKHR;
55600    #[inline]
55601    fn deref(&self) -> &Self::Target {
55602        &self.inner
55603    }
55604}
55605impl<'a> core::ops::DerefMut for VideoEncodeH264PictureInfoKHRBuilder<'a> {
55606    #[inline]
55607    fn deref_mut(&mut self) -> &mut Self::Target {
55608        &mut self.inner
55609    }
55610}
55611///Builder for [`VideoEncodeH264ProfileInfoKHR`] with lifetime-tied pNext safety.
55612pub struct VideoEncodeH264ProfileInfoKHRBuilder<'a> {
55613    inner: VideoEncodeH264ProfileInfoKHR,
55614    _marker: core::marker::PhantomData<&'a ()>,
55615}
55616impl VideoEncodeH264ProfileInfoKHR {
55617    /// Start building this struct; `s_type` is already set to the correct variant.
55618    #[inline]
55619    pub fn builder<'a>() -> VideoEncodeH264ProfileInfoKHRBuilder<'a> {
55620        VideoEncodeH264ProfileInfoKHRBuilder {
55621            inner: VideoEncodeH264ProfileInfoKHR {
55622                s_type: StructureType::from_raw(1000038007i32),
55623                ..Default::default()
55624            },
55625            _marker: core::marker::PhantomData,
55626        }
55627    }
55628}
55629impl<'a> VideoEncodeH264ProfileInfoKHRBuilder<'a> {
55630    #[inline]
55631    pub fn std_profile_idc(mut self, value: StdVideoH264ProfileIdc) -> Self {
55632        self.inner.std_profile_idc = value;
55633        self
55634    }
55635    ///Prepend a struct to the pNext chain. See [`VideoEncodeH264ProfileInfoKHR`]'s **Extended By** section for valid types.
55636    #[inline]
55637    pub fn push_next<T: ExtendsVideoEncodeH264ProfileInfoKHR>(
55638        mut self,
55639        next: &'a mut T,
55640    ) -> Self {
55641        unsafe {
55642            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
55643            (*next_ptr).p_next = self.inner.p_next as *mut _;
55644            self.inner.p_next = <*mut BaseOutStructure>::cast::<
55645                core::ffi::c_void,
55646            >(next_ptr) as *const _;
55647        }
55648        self
55649    }
55650}
55651impl<'a> core::ops::Deref for VideoEncodeH264ProfileInfoKHRBuilder<'a> {
55652    type Target = VideoEncodeH264ProfileInfoKHR;
55653    #[inline]
55654    fn deref(&self) -> &Self::Target {
55655        &self.inner
55656    }
55657}
55658impl<'a> core::ops::DerefMut for VideoEncodeH264ProfileInfoKHRBuilder<'a> {
55659    #[inline]
55660    fn deref_mut(&mut self) -> &mut Self::Target {
55661        &mut self.inner
55662    }
55663}
55664///Builder for [`VideoEncodeH264NaluSliceInfoKHR`] with lifetime-tied pNext safety.
55665pub struct VideoEncodeH264NaluSliceInfoKHRBuilder<'a> {
55666    inner: VideoEncodeH264NaluSliceInfoKHR,
55667    _marker: core::marker::PhantomData<&'a ()>,
55668}
55669impl VideoEncodeH264NaluSliceInfoKHR {
55670    /// Start building this struct; `s_type` is already set to the correct variant.
55671    #[inline]
55672    pub fn builder<'a>() -> VideoEncodeH264NaluSliceInfoKHRBuilder<'a> {
55673        VideoEncodeH264NaluSliceInfoKHRBuilder {
55674            inner: VideoEncodeH264NaluSliceInfoKHR {
55675                s_type: StructureType::from_raw(1000038005i32),
55676                ..Default::default()
55677            },
55678            _marker: core::marker::PhantomData,
55679        }
55680    }
55681}
55682impl<'a> VideoEncodeH264NaluSliceInfoKHRBuilder<'a> {
55683    #[inline]
55684    pub fn constant_qp(mut self, value: i32) -> Self {
55685        self.inner.constant_qp = value;
55686        self
55687    }
55688    #[inline]
55689    pub fn std_slice_header(
55690        mut self,
55691        value: *const StdVideoEncodeH264SliceHeader,
55692    ) -> Self {
55693        self.inner.p_std_slice_header = value;
55694        self
55695    }
55696    ///Prepend a struct to the pNext chain. See [`VideoEncodeH264NaluSliceInfoKHR`]'s **Extended By** section for valid types.
55697    #[inline]
55698    pub fn push_next<T: ExtendsVideoEncodeH264NaluSliceInfoKHR>(
55699        mut self,
55700        next: &'a mut T,
55701    ) -> Self {
55702        unsafe {
55703            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
55704            (*next_ptr).p_next = self.inner.p_next as *mut _;
55705            self.inner.p_next = <*mut BaseOutStructure>::cast::<
55706                core::ffi::c_void,
55707            >(next_ptr) as *const _;
55708        }
55709        self
55710    }
55711}
55712impl<'a> core::ops::Deref for VideoEncodeH264NaluSliceInfoKHRBuilder<'a> {
55713    type Target = VideoEncodeH264NaluSliceInfoKHR;
55714    #[inline]
55715    fn deref(&self) -> &Self::Target {
55716        &self.inner
55717    }
55718}
55719impl<'a> core::ops::DerefMut for VideoEncodeH264NaluSliceInfoKHRBuilder<'a> {
55720    #[inline]
55721    fn deref_mut(&mut self) -> &mut Self::Target {
55722        &mut self.inner
55723    }
55724}
55725///Builder for [`VideoEncodeH264RateControlInfoKHR`] with lifetime-tied pNext safety.
55726pub struct VideoEncodeH264RateControlInfoKHRBuilder<'a> {
55727    inner: VideoEncodeH264RateControlInfoKHR,
55728    _marker: core::marker::PhantomData<&'a ()>,
55729}
55730impl VideoEncodeH264RateControlInfoKHR {
55731    /// Start building this struct; `s_type` is already set to the correct variant.
55732    #[inline]
55733    pub fn builder<'a>() -> VideoEncodeH264RateControlInfoKHRBuilder<'a> {
55734        VideoEncodeH264RateControlInfoKHRBuilder {
55735            inner: VideoEncodeH264RateControlInfoKHR {
55736                s_type: StructureType::from_raw(1000038008i32),
55737                ..Default::default()
55738            },
55739            _marker: core::marker::PhantomData,
55740        }
55741    }
55742}
55743impl<'a> VideoEncodeH264RateControlInfoKHRBuilder<'a> {
55744    #[inline]
55745    pub fn flags(mut self, value: VideoEncodeH264RateControlFlagsKHR) -> Self {
55746        self.inner.flags = value;
55747        self
55748    }
55749    #[inline]
55750    pub fn gop_frame_count(mut self, value: u32) -> Self {
55751        self.inner.gop_frame_count = value;
55752        self
55753    }
55754    #[inline]
55755    pub fn idr_period(mut self, value: u32) -> Self {
55756        self.inner.idr_period = value;
55757        self
55758    }
55759    #[inline]
55760    pub fn consecutive_b_frame_count(mut self, value: u32) -> Self {
55761        self.inner.consecutive_b_frame_count = value;
55762        self
55763    }
55764    #[inline]
55765    pub fn temporal_layer_count(mut self, value: u32) -> Self {
55766        self.inner.temporal_layer_count = value;
55767        self
55768    }
55769    ///Prepend a struct to the pNext chain. See [`VideoEncodeH264RateControlInfoKHR`]'s **Extended By** section for valid types.
55770    #[inline]
55771    pub fn push_next<T: ExtendsVideoEncodeH264RateControlInfoKHR>(
55772        mut self,
55773        next: &'a mut T,
55774    ) -> Self {
55775        unsafe {
55776            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
55777            (*next_ptr).p_next = self.inner.p_next as *mut _;
55778            self.inner.p_next = <*mut BaseOutStructure>::cast::<
55779                core::ffi::c_void,
55780            >(next_ptr) as *const _;
55781        }
55782        self
55783    }
55784}
55785impl<'a> core::ops::Deref for VideoEncodeH264RateControlInfoKHRBuilder<'a> {
55786    type Target = VideoEncodeH264RateControlInfoKHR;
55787    #[inline]
55788    fn deref(&self) -> &Self::Target {
55789        &self.inner
55790    }
55791}
55792impl<'a> core::ops::DerefMut for VideoEncodeH264RateControlInfoKHRBuilder<'a> {
55793    #[inline]
55794    fn deref_mut(&mut self) -> &mut Self::Target {
55795        &mut self.inner
55796    }
55797}
55798///Builder for [`VideoEncodeH264QpKHR`].
55799pub struct VideoEncodeH264QpKHRBuilder {
55800    inner: VideoEncodeH264QpKHR,
55801}
55802impl VideoEncodeH264QpKHR {
55803    /// Start building this struct.
55804    #[inline]
55805    pub fn builder() -> VideoEncodeH264QpKHRBuilder {
55806        VideoEncodeH264QpKHRBuilder {
55807            inner: VideoEncodeH264QpKHR {
55808                ..Default::default()
55809            },
55810        }
55811    }
55812}
55813impl VideoEncodeH264QpKHRBuilder {
55814    #[inline]
55815    pub fn qp_i(mut self, value: i32) -> Self {
55816        self.inner.qp_i = value;
55817        self
55818    }
55819    #[inline]
55820    pub fn qp_p(mut self, value: i32) -> Self {
55821        self.inner.qp_p = value;
55822        self
55823    }
55824    #[inline]
55825    pub fn qp_b(mut self, value: i32) -> Self {
55826        self.inner.qp_b = value;
55827        self
55828    }
55829}
55830impl core::ops::Deref for VideoEncodeH264QpKHRBuilder {
55831    type Target = VideoEncodeH264QpKHR;
55832    #[inline]
55833    fn deref(&self) -> &Self::Target {
55834        &self.inner
55835    }
55836}
55837impl core::ops::DerefMut for VideoEncodeH264QpKHRBuilder {
55838    #[inline]
55839    fn deref_mut(&mut self) -> &mut Self::Target {
55840        &mut self.inner
55841    }
55842}
55843///Builder for [`VideoEncodeH264FrameSizeKHR`].
55844pub struct VideoEncodeH264FrameSizeKHRBuilder {
55845    inner: VideoEncodeH264FrameSizeKHR,
55846}
55847impl VideoEncodeH264FrameSizeKHR {
55848    /// Start building this struct.
55849    #[inline]
55850    pub fn builder() -> VideoEncodeH264FrameSizeKHRBuilder {
55851        VideoEncodeH264FrameSizeKHRBuilder {
55852            inner: VideoEncodeH264FrameSizeKHR {
55853                ..Default::default()
55854            },
55855        }
55856    }
55857}
55858impl VideoEncodeH264FrameSizeKHRBuilder {
55859    #[inline]
55860    pub fn frame_i_size(mut self, value: u32) -> Self {
55861        self.inner.frame_i_size = value;
55862        self
55863    }
55864    #[inline]
55865    pub fn frame_p_size(mut self, value: u32) -> Self {
55866        self.inner.frame_p_size = value;
55867        self
55868    }
55869    #[inline]
55870    pub fn frame_b_size(mut self, value: u32) -> Self {
55871        self.inner.frame_b_size = value;
55872        self
55873    }
55874}
55875impl core::ops::Deref for VideoEncodeH264FrameSizeKHRBuilder {
55876    type Target = VideoEncodeH264FrameSizeKHR;
55877    #[inline]
55878    fn deref(&self) -> &Self::Target {
55879        &self.inner
55880    }
55881}
55882impl core::ops::DerefMut for VideoEncodeH264FrameSizeKHRBuilder {
55883    #[inline]
55884    fn deref_mut(&mut self) -> &mut Self::Target {
55885        &mut self.inner
55886    }
55887}
55888///Builder for [`VideoEncodeH264GopRemainingFrameInfoKHR`] with lifetime-tied pNext safety.
55889pub struct VideoEncodeH264GopRemainingFrameInfoKHRBuilder<'a> {
55890    inner: VideoEncodeH264GopRemainingFrameInfoKHR,
55891    _marker: core::marker::PhantomData<&'a ()>,
55892}
55893impl VideoEncodeH264GopRemainingFrameInfoKHR {
55894    /// Start building this struct; `s_type` is already set to the correct variant.
55895    #[inline]
55896    pub fn builder<'a>() -> VideoEncodeH264GopRemainingFrameInfoKHRBuilder<'a> {
55897        VideoEncodeH264GopRemainingFrameInfoKHRBuilder {
55898            inner: VideoEncodeH264GopRemainingFrameInfoKHR {
55899                s_type: StructureType::from_raw(1000038006i32),
55900                ..Default::default()
55901            },
55902            _marker: core::marker::PhantomData,
55903        }
55904    }
55905}
55906impl<'a> VideoEncodeH264GopRemainingFrameInfoKHRBuilder<'a> {
55907    #[inline]
55908    pub fn use_gop_remaining_frames(mut self, value: bool) -> Self {
55909        self.inner.use_gop_remaining_frames = value as u32;
55910        self
55911    }
55912    #[inline]
55913    pub fn gop_remaining_i(mut self, value: u32) -> Self {
55914        self.inner.gop_remaining_i = value;
55915        self
55916    }
55917    #[inline]
55918    pub fn gop_remaining_p(mut self, value: u32) -> Self {
55919        self.inner.gop_remaining_p = value;
55920        self
55921    }
55922    #[inline]
55923    pub fn gop_remaining_b(mut self, value: u32) -> Self {
55924        self.inner.gop_remaining_b = value;
55925        self
55926    }
55927    ///Prepend a struct to the pNext chain. See [`VideoEncodeH264GopRemainingFrameInfoKHR`]'s **Extended By** section for valid types.
55928    #[inline]
55929    pub fn push_next<T: ExtendsVideoEncodeH264GopRemainingFrameInfoKHR>(
55930        mut self,
55931        next: &'a mut T,
55932    ) -> Self {
55933        unsafe {
55934            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
55935            (*next_ptr).p_next = self.inner.p_next as *mut _;
55936            self.inner.p_next = <*mut BaseOutStructure>::cast::<
55937                core::ffi::c_void,
55938            >(next_ptr) as *const _;
55939        }
55940        self
55941    }
55942}
55943impl<'a> core::ops::Deref for VideoEncodeH264GopRemainingFrameInfoKHRBuilder<'a> {
55944    type Target = VideoEncodeH264GopRemainingFrameInfoKHR;
55945    #[inline]
55946    fn deref(&self) -> &Self::Target {
55947        &self.inner
55948    }
55949}
55950impl<'a> core::ops::DerefMut for VideoEncodeH264GopRemainingFrameInfoKHRBuilder<'a> {
55951    #[inline]
55952    fn deref_mut(&mut self) -> &mut Self::Target {
55953        &mut self.inner
55954    }
55955}
55956///Builder for [`VideoEncodeH264RateControlLayerInfoKHR`] with lifetime-tied pNext safety.
55957pub struct VideoEncodeH264RateControlLayerInfoKHRBuilder<'a> {
55958    inner: VideoEncodeH264RateControlLayerInfoKHR,
55959    _marker: core::marker::PhantomData<&'a ()>,
55960}
55961impl VideoEncodeH264RateControlLayerInfoKHR {
55962    /// Start building this struct; `s_type` is already set to the correct variant.
55963    #[inline]
55964    pub fn builder<'a>() -> VideoEncodeH264RateControlLayerInfoKHRBuilder<'a> {
55965        VideoEncodeH264RateControlLayerInfoKHRBuilder {
55966            inner: VideoEncodeH264RateControlLayerInfoKHR {
55967                s_type: StructureType::from_raw(1000038009i32),
55968                ..Default::default()
55969            },
55970            _marker: core::marker::PhantomData,
55971        }
55972    }
55973}
55974impl<'a> VideoEncodeH264RateControlLayerInfoKHRBuilder<'a> {
55975    #[inline]
55976    pub fn use_min_qp(mut self, value: bool) -> Self {
55977        self.inner.use_min_qp = value as u32;
55978        self
55979    }
55980    #[inline]
55981    pub fn min_qp(mut self, value: VideoEncodeH264QpKHR) -> Self {
55982        self.inner.min_qp = value;
55983        self
55984    }
55985    #[inline]
55986    pub fn use_max_qp(mut self, value: bool) -> Self {
55987        self.inner.use_max_qp = value as u32;
55988        self
55989    }
55990    #[inline]
55991    pub fn max_qp(mut self, value: VideoEncodeH264QpKHR) -> Self {
55992        self.inner.max_qp = value;
55993        self
55994    }
55995    #[inline]
55996    pub fn use_max_frame_size(mut self, value: bool) -> Self {
55997        self.inner.use_max_frame_size = value as u32;
55998        self
55999    }
56000    #[inline]
56001    pub fn max_frame_size(mut self, value: VideoEncodeH264FrameSizeKHR) -> Self {
56002        self.inner.max_frame_size = value;
56003        self
56004    }
56005    ///Prepend a struct to the pNext chain. See [`VideoEncodeH264RateControlLayerInfoKHR`]'s **Extended By** section for valid types.
56006    #[inline]
56007    pub fn push_next<T: ExtendsVideoEncodeH264RateControlLayerInfoKHR>(
56008        mut self,
56009        next: &'a mut T,
56010    ) -> Self {
56011        unsafe {
56012            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
56013            (*next_ptr).p_next = self.inner.p_next as *mut _;
56014            self.inner.p_next = <*mut BaseOutStructure>::cast::<
56015                core::ffi::c_void,
56016            >(next_ptr) as *const _;
56017        }
56018        self
56019    }
56020}
56021impl<'a> core::ops::Deref for VideoEncodeH264RateControlLayerInfoKHRBuilder<'a> {
56022    type Target = VideoEncodeH264RateControlLayerInfoKHR;
56023    #[inline]
56024    fn deref(&self) -> &Self::Target {
56025        &self.inner
56026    }
56027}
56028impl<'a> core::ops::DerefMut for VideoEncodeH264RateControlLayerInfoKHRBuilder<'a> {
56029    #[inline]
56030    fn deref_mut(&mut self) -> &mut Self::Target {
56031        &mut self.inner
56032    }
56033}
56034///Builder for [`VideoEncodeH265CapabilitiesKHR`] with lifetime-tied pNext safety.
56035pub struct VideoEncodeH265CapabilitiesKHRBuilder<'a> {
56036    inner: VideoEncodeH265CapabilitiesKHR,
56037    _marker: core::marker::PhantomData<&'a ()>,
56038}
56039impl VideoEncodeH265CapabilitiesKHR {
56040    /// Start building this struct; `s_type` is already set to the correct variant.
56041    #[inline]
56042    pub fn builder<'a>() -> VideoEncodeH265CapabilitiesKHRBuilder<'a> {
56043        VideoEncodeH265CapabilitiesKHRBuilder {
56044            inner: VideoEncodeH265CapabilitiesKHR {
56045                s_type: StructureType::from_raw(1000039000i32),
56046                ..Default::default()
56047            },
56048            _marker: core::marker::PhantomData,
56049        }
56050    }
56051}
56052impl<'a> VideoEncodeH265CapabilitiesKHRBuilder<'a> {
56053    #[inline]
56054    pub fn flags(mut self, value: VideoEncodeH265CapabilityFlagsKHR) -> Self {
56055        self.inner.flags = value;
56056        self
56057    }
56058    #[inline]
56059    pub fn max_level_idc(mut self, value: StdVideoH265LevelIdc) -> Self {
56060        self.inner.max_level_idc = value;
56061        self
56062    }
56063    #[inline]
56064    pub fn max_slice_segment_count(mut self, value: u32) -> Self {
56065        self.inner.max_slice_segment_count = value;
56066        self
56067    }
56068    #[inline]
56069    pub fn max_tiles(mut self, value: Extent2D) -> Self {
56070        self.inner.max_tiles = value;
56071        self
56072    }
56073    #[inline]
56074    pub fn ctb_sizes(mut self, value: VideoEncodeH265CtbSizeFlagsKHR) -> Self {
56075        self.inner.ctb_sizes = value;
56076        self
56077    }
56078    #[inline]
56079    pub fn transform_block_sizes(
56080        mut self,
56081        value: VideoEncodeH265TransformBlockSizeFlagsKHR,
56082    ) -> Self {
56083        self.inner.transform_block_sizes = value;
56084        self
56085    }
56086    #[inline]
56087    pub fn max_p_picture_l0_reference_count(mut self, value: u32) -> Self {
56088        self.inner.max_p_picture_l0_reference_count = value;
56089        self
56090    }
56091    #[inline]
56092    pub fn max_b_picture_l0_reference_count(mut self, value: u32) -> Self {
56093        self.inner.max_b_picture_l0_reference_count = value;
56094        self
56095    }
56096    #[inline]
56097    pub fn max_l1_reference_count(mut self, value: u32) -> Self {
56098        self.inner.max_l1_reference_count = value;
56099        self
56100    }
56101    #[inline]
56102    pub fn max_sub_layer_count(mut self, value: u32) -> Self {
56103        self.inner.max_sub_layer_count = value;
56104        self
56105    }
56106    #[inline]
56107    pub fn expect_dyadic_temporal_sub_layer_pattern(mut self, value: bool) -> Self {
56108        self.inner.expect_dyadic_temporal_sub_layer_pattern = value as u32;
56109        self
56110    }
56111    #[inline]
56112    pub fn min_qp(mut self, value: i32) -> Self {
56113        self.inner.min_qp = value;
56114        self
56115    }
56116    #[inline]
56117    pub fn max_qp(mut self, value: i32) -> Self {
56118        self.inner.max_qp = value;
56119        self
56120    }
56121    #[inline]
56122    pub fn prefers_gop_remaining_frames(mut self, value: bool) -> Self {
56123        self.inner.prefers_gop_remaining_frames = value as u32;
56124        self
56125    }
56126    #[inline]
56127    pub fn requires_gop_remaining_frames(mut self, value: bool) -> Self {
56128        self.inner.requires_gop_remaining_frames = value as u32;
56129        self
56130    }
56131    #[inline]
56132    pub fn std_syntax_flags(mut self, value: VideoEncodeH265StdFlagsKHR) -> Self {
56133        self.inner.std_syntax_flags = value;
56134        self
56135    }
56136}
56137impl<'a> core::ops::Deref for VideoEncodeH265CapabilitiesKHRBuilder<'a> {
56138    type Target = VideoEncodeH265CapabilitiesKHR;
56139    #[inline]
56140    fn deref(&self) -> &Self::Target {
56141        &self.inner
56142    }
56143}
56144impl<'a> core::ops::DerefMut for VideoEncodeH265CapabilitiesKHRBuilder<'a> {
56145    #[inline]
56146    fn deref_mut(&mut self) -> &mut Self::Target {
56147        &mut self.inner
56148    }
56149}
56150///Builder for [`VideoEncodeH265QualityLevelPropertiesKHR`] with lifetime-tied pNext safety.
56151pub struct VideoEncodeH265QualityLevelPropertiesKHRBuilder<'a> {
56152    inner: VideoEncodeH265QualityLevelPropertiesKHR,
56153    _marker: core::marker::PhantomData<&'a ()>,
56154}
56155impl VideoEncodeH265QualityLevelPropertiesKHR {
56156    /// Start building this struct; `s_type` is already set to the correct variant.
56157    #[inline]
56158    pub fn builder<'a>() -> VideoEncodeH265QualityLevelPropertiesKHRBuilder<'a> {
56159        VideoEncodeH265QualityLevelPropertiesKHRBuilder {
56160            inner: VideoEncodeH265QualityLevelPropertiesKHR {
56161                s_type: StructureType::from_raw(1000039012i32),
56162                ..Default::default()
56163            },
56164            _marker: core::marker::PhantomData,
56165        }
56166    }
56167}
56168impl<'a> VideoEncodeH265QualityLevelPropertiesKHRBuilder<'a> {
56169    #[inline]
56170    pub fn preferred_rate_control_flags(
56171        mut self,
56172        value: VideoEncodeH265RateControlFlagsKHR,
56173    ) -> Self {
56174        self.inner.preferred_rate_control_flags = value;
56175        self
56176    }
56177    #[inline]
56178    pub fn preferred_gop_frame_count(mut self, value: u32) -> Self {
56179        self.inner.preferred_gop_frame_count = value;
56180        self
56181    }
56182    #[inline]
56183    pub fn preferred_idr_period(mut self, value: u32) -> Self {
56184        self.inner.preferred_idr_period = value;
56185        self
56186    }
56187    #[inline]
56188    pub fn preferred_consecutive_b_frame_count(mut self, value: u32) -> Self {
56189        self.inner.preferred_consecutive_b_frame_count = value;
56190        self
56191    }
56192    #[inline]
56193    pub fn preferred_sub_layer_count(mut self, value: u32) -> Self {
56194        self.inner.preferred_sub_layer_count = value;
56195        self
56196    }
56197    #[inline]
56198    pub fn preferred_constant_qp(mut self, value: VideoEncodeH265QpKHR) -> Self {
56199        self.inner.preferred_constant_qp = value;
56200        self
56201    }
56202    #[inline]
56203    pub fn preferred_max_l0_reference_count(mut self, value: u32) -> Self {
56204        self.inner.preferred_max_l0_reference_count = value;
56205        self
56206    }
56207    #[inline]
56208    pub fn preferred_max_l1_reference_count(mut self, value: u32) -> Self {
56209        self.inner.preferred_max_l1_reference_count = value;
56210        self
56211    }
56212}
56213impl<'a> core::ops::Deref for VideoEncodeH265QualityLevelPropertiesKHRBuilder<'a> {
56214    type Target = VideoEncodeH265QualityLevelPropertiesKHR;
56215    #[inline]
56216    fn deref(&self) -> &Self::Target {
56217        &self.inner
56218    }
56219}
56220impl<'a> core::ops::DerefMut for VideoEncodeH265QualityLevelPropertiesKHRBuilder<'a> {
56221    #[inline]
56222    fn deref_mut(&mut self) -> &mut Self::Target {
56223        &mut self.inner
56224    }
56225}
56226///Builder for [`VideoEncodeH265SessionCreateInfoKHR`] with lifetime-tied pNext safety.
56227pub struct VideoEncodeH265SessionCreateInfoKHRBuilder<'a> {
56228    inner: VideoEncodeH265SessionCreateInfoKHR,
56229    _marker: core::marker::PhantomData<&'a ()>,
56230}
56231impl VideoEncodeH265SessionCreateInfoKHR {
56232    /// Start building this struct; `s_type` is already set to the correct variant.
56233    #[inline]
56234    pub fn builder<'a>() -> VideoEncodeH265SessionCreateInfoKHRBuilder<'a> {
56235        VideoEncodeH265SessionCreateInfoKHRBuilder {
56236            inner: VideoEncodeH265SessionCreateInfoKHR {
56237                s_type: StructureType::from_raw(1000039011i32),
56238                ..Default::default()
56239            },
56240            _marker: core::marker::PhantomData,
56241        }
56242    }
56243}
56244impl<'a> VideoEncodeH265SessionCreateInfoKHRBuilder<'a> {
56245    #[inline]
56246    pub fn use_max_level_idc(mut self, value: bool) -> Self {
56247        self.inner.use_max_level_idc = value as u32;
56248        self
56249    }
56250    #[inline]
56251    pub fn max_level_idc(mut self, value: StdVideoH265LevelIdc) -> Self {
56252        self.inner.max_level_idc = value;
56253        self
56254    }
56255    ///Prepend a struct to the pNext chain. See [`VideoEncodeH265SessionCreateInfoKHR`]'s **Extended By** section for valid types.
56256    #[inline]
56257    pub fn push_next<T: ExtendsVideoEncodeH265SessionCreateInfoKHR>(
56258        mut self,
56259        next: &'a mut T,
56260    ) -> Self {
56261        unsafe {
56262            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
56263            (*next_ptr).p_next = self.inner.p_next as *mut _;
56264            self.inner.p_next = <*mut BaseOutStructure>::cast::<
56265                core::ffi::c_void,
56266            >(next_ptr) as *const _;
56267        }
56268        self
56269    }
56270}
56271impl<'a> core::ops::Deref for VideoEncodeH265SessionCreateInfoKHRBuilder<'a> {
56272    type Target = VideoEncodeH265SessionCreateInfoKHR;
56273    #[inline]
56274    fn deref(&self) -> &Self::Target {
56275        &self.inner
56276    }
56277}
56278impl<'a> core::ops::DerefMut for VideoEncodeH265SessionCreateInfoKHRBuilder<'a> {
56279    #[inline]
56280    fn deref_mut(&mut self) -> &mut Self::Target {
56281        &mut self.inner
56282    }
56283}
56284///Builder for [`VideoEncodeH265SessionParametersAddInfoKHR`] with lifetime-tied pNext safety.
56285pub struct VideoEncodeH265SessionParametersAddInfoKHRBuilder<'a> {
56286    inner: VideoEncodeH265SessionParametersAddInfoKHR,
56287    _marker: core::marker::PhantomData<&'a ()>,
56288}
56289impl VideoEncodeH265SessionParametersAddInfoKHR {
56290    /// Start building this struct; `s_type` is already set to the correct variant.
56291    #[inline]
56292    pub fn builder<'a>() -> VideoEncodeH265SessionParametersAddInfoKHRBuilder<'a> {
56293        VideoEncodeH265SessionParametersAddInfoKHRBuilder {
56294            inner: VideoEncodeH265SessionParametersAddInfoKHR {
56295                s_type: StructureType::from_raw(1000039002i32),
56296                ..Default::default()
56297            },
56298            _marker: core::marker::PhantomData,
56299        }
56300    }
56301}
56302impl<'a> VideoEncodeH265SessionParametersAddInfoKHRBuilder<'a> {
56303    #[inline]
56304    pub fn std_vps_count(mut self, value: u32) -> Self {
56305        self.inner.std_vps_count = value;
56306        self
56307    }
56308    #[inline]
56309    pub fn std_vp_ss(mut self, slice: &'a [StdVideoH265VideoParameterSet]) -> Self {
56310        self.inner.std_vps_count = slice.len() as u32;
56311        self.inner.p_std_vp_ss = slice.as_ptr();
56312        self
56313    }
56314    #[inline]
56315    pub fn std_sps_count(mut self, value: u32) -> Self {
56316        self.inner.std_sps_count = value;
56317        self
56318    }
56319    #[inline]
56320    pub fn std_sp_ss(mut self, slice: &'a [StdVideoH265SequenceParameterSet]) -> Self {
56321        self.inner.std_sps_count = slice.len() as u32;
56322        self.inner.p_std_sp_ss = slice.as_ptr();
56323        self
56324    }
56325    #[inline]
56326    pub fn std_pps_count(mut self, value: u32) -> Self {
56327        self.inner.std_pps_count = value;
56328        self
56329    }
56330    #[inline]
56331    pub fn std_pp_ss(mut self, slice: &'a [StdVideoH265PictureParameterSet]) -> Self {
56332        self.inner.std_pps_count = slice.len() as u32;
56333        self.inner.p_std_pp_ss = slice.as_ptr();
56334        self
56335    }
56336    ///Prepend a struct to the pNext chain. See [`VideoEncodeH265SessionParametersAddInfoKHR`]'s **Extended By** section for valid types.
56337    #[inline]
56338    pub fn push_next<T: ExtendsVideoEncodeH265SessionParametersAddInfoKHR>(
56339        mut self,
56340        next: &'a mut T,
56341    ) -> Self {
56342        unsafe {
56343            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
56344            (*next_ptr).p_next = self.inner.p_next as *mut _;
56345            self.inner.p_next = <*mut BaseOutStructure>::cast::<
56346                core::ffi::c_void,
56347            >(next_ptr) as *const _;
56348        }
56349        self
56350    }
56351}
56352impl<'a> core::ops::Deref for VideoEncodeH265SessionParametersAddInfoKHRBuilder<'a> {
56353    type Target = VideoEncodeH265SessionParametersAddInfoKHR;
56354    #[inline]
56355    fn deref(&self) -> &Self::Target {
56356        &self.inner
56357    }
56358}
56359impl<'a> core::ops::DerefMut for VideoEncodeH265SessionParametersAddInfoKHRBuilder<'a> {
56360    #[inline]
56361    fn deref_mut(&mut self) -> &mut Self::Target {
56362        &mut self.inner
56363    }
56364}
56365///Builder for [`VideoEncodeH265SessionParametersCreateInfoKHR`] with lifetime-tied pNext safety.
56366pub struct VideoEncodeH265SessionParametersCreateInfoKHRBuilder<'a> {
56367    inner: VideoEncodeH265SessionParametersCreateInfoKHR,
56368    _marker: core::marker::PhantomData<&'a ()>,
56369}
56370impl VideoEncodeH265SessionParametersCreateInfoKHR {
56371    /// Start building this struct; `s_type` is already set to the correct variant.
56372    #[inline]
56373    pub fn builder<'a>() -> VideoEncodeH265SessionParametersCreateInfoKHRBuilder<'a> {
56374        VideoEncodeH265SessionParametersCreateInfoKHRBuilder {
56375            inner: VideoEncodeH265SessionParametersCreateInfoKHR {
56376                s_type: StructureType::from_raw(1000039001i32),
56377                ..Default::default()
56378            },
56379            _marker: core::marker::PhantomData,
56380        }
56381    }
56382}
56383impl<'a> VideoEncodeH265SessionParametersCreateInfoKHRBuilder<'a> {
56384    #[inline]
56385    pub fn max_std_vps_count(mut self, value: u32) -> Self {
56386        self.inner.max_std_vps_count = value;
56387        self
56388    }
56389    #[inline]
56390    pub fn max_std_sps_count(mut self, value: u32) -> Self {
56391        self.inner.max_std_sps_count = value;
56392        self
56393    }
56394    #[inline]
56395    pub fn max_std_pps_count(mut self, value: u32) -> Self {
56396        self.inner.max_std_pps_count = value;
56397        self
56398    }
56399    #[inline]
56400    pub fn parameters_add_info(
56401        mut self,
56402        value: &'a VideoEncodeH265SessionParametersAddInfoKHR,
56403    ) -> Self {
56404        self.inner.p_parameters_add_info = value;
56405        self
56406    }
56407    ///Prepend a struct to the pNext chain. See [`VideoEncodeH265SessionParametersCreateInfoKHR`]'s **Extended By** section for valid types.
56408    #[inline]
56409    pub fn push_next<T: ExtendsVideoEncodeH265SessionParametersCreateInfoKHR>(
56410        mut self,
56411        next: &'a mut T,
56412    ) -> Self {
56413        unsafe {
56414            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
56415            (*next_ptr).p_next = self.inner.p_next as *mut _;
56416            self.inner.p_next = <*mut BaseOutStructure>::cast::<
56417                core::ffi::c_void,
56418            >(next_ptr) as *const _;
56419        }
56420        self
56421    }
56422}
56423impl<'a> core::ops::Deref for VideoEncodeH265SessionParametersCreateInfoKHRBuilder<'a> {
56424    type Target = VideoEncodeH265SessionParametersCreateInfoKHR;
56425    #[inline]
56426    fn deref(&self) -> &Self::Target {
56427        &self.inner
56428    }
56429}
56430impl<'a> core::ops::DerefMut
56431for VideoEncodeH265SessionParametersCreateInfoKHRBuilder<'a> {
56432    #[inline]
56433    fn deref_mut(&mut self) -> &mut Self::Target {
56434        &mut self.inner
56435    }
56436}
56437///Builder for [`VideoEncodeH265SessionParametersGetInfoKHR`] with lifetime-tied pNext safety.
56438pub struct VideoEncodeH265SessionParametersGetInfoKHRBuilder<'a> {
56439    inner: VideoEncodeH265SessionParametersGetInfoKHR,
56440    _marker: core::marker::PhantomData<&'a ()>,
56441}
56442impl VideoEncodeH265SessionParametersGetInfoKHR {
56443    /// Start building this struct; `s_type` is already set to the correct variant.
56444    #[inline]
56445    pub fn builder<'a>() -> VideoEncodeH265SessionParametersGetInfoKHRBuilder<'a> {
56446        VideoEncodeH265SessionParametersGetInfoKHRBuilder {
56447            inner: VideoEncodeH265SessionParametersGetInfoKHR {
56448                s_type: StructureType::from_raw(1000039013i32),
56449                ..Default::default()
56450            },
56451            _marker: core::marker::PhantomData,
56452        }
56453    }
56454}
56455impl<'a> VideoEncodeH265SessionParametersGetInfoKHRBuilder<'a> {
56456    #[inline]
56457    pub fn write_std_vps(mut self, value: bool) -> Self {
56458        self.inner.write_std_vps = value as u32;
56459        self
56460    }
56461    #[inline]
56462    pub fn write_std_sps(mut self, value: bool) -> Self {
56463        self.inner.write_std_sps = value as u32;
56464        self
56465    }
56466    #[inline]
56467    pub fn write_std_pps(mut self, value: bool) -> Self {
56468        self.inner.write_std_pps = value as u32;
56469        self
56470    }
56471    #[inline]
56472    pub fn std_vps_id(mut self, value: u32) -> Self {
56473        self.inner.std_vps_id = value;
56474        self
56475    }
56476    #[inline]
56477    pub fn std_sps_id(mut self, value: u32) -> Self {
56478        self.inner.std_sps_id = value;
56479        self
56480    }
56481    #[inline]
56482    pub fn std_pps_id(mut self, value: u32) -> Self {
56483        self.inner.std_pps_id = value;
56484        self
56485    }
56486    ///Prepend a struct to the pNext chain. See [`VideoEncodeH265SessionParametersGetInfoKHR`]'s **Extended By** section for valid types.
56487    #[inline]
56488    pub fn push_next<T: ExtendsVideoEncodeH265SessionParametersGetInfoKHR>(
56489        mut self,
56490        next: &'a mut T,
56491    ) -> Self {
56492        unsafe {
56493            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
56494            (*next_ptr).p_next = self.inner.p_next as *mut _;
56495            self.inner.p_next = <*mut BaseOutStructure>::cast::<
56496                core::ffi::c_void,
56497            >(next_ptr) as *const _;
56498        }
56499        self
56500    }
56501}
56502impl<'a> core::ops::Deref for VideoEncodeH265SessionParametersGetInfoKHRBuilder<'a> {
56503    type Target = VideoEncodeH265SessionParametersGetInfoKHR;
56504    #[inline]
56505    fn deref(&self) -> &Self::Target {
56506        &self.inner
56507    }
56508}
56509impl<'a> core::ops::DerefMut for VideoEncodeH265SessionParametersGetInfoKHRBuilder<'a> {
56510    #[inline]
56511    fn deref_mut(&mut self) -> &mut Self::Target {
56512        &mut self.inner
56513    }
56514}
56515///Builder for [`VideoEncodeH265SessionParametersFeedbackInfoKHR`] with lifetime-tied pNext safety.
56516pub struct VideoEncodeH265SessionParametersFeedbackInfoKHRBuilder<'a> {
56517    inner: VideoEncodeH265SessionParametersFeedbackInfoKHR,
56518    _marker: core::marker::PhantomData<&'a ()>,
56519}
56520impl VideoEncodeH265SessionParametersFeedbackInfoKHR {
56521    /// Start building this struct; `s_type` is already set to the correct variant.
56522    #[inline]
56523    pub fn builder<'a>() -> VideoEncodeH265SessionParametersFeedbackInfoKHRBuilder<'a> {
56524        VideoEncodeH265SessionParametersFeedbackInfoKHRBuilder {
56525            inner: VideoEncodeH265SessionParametersFeedbackInfoKHR {
56526                s_type: StructureType::from_raw(1000039014i32),
56527                ..Default::default()
56528            },
56529            _marker: core::marker::PhantomData,
56530        }
56531    }
56532}
56533impl<'a> VideoEncodeH265SessionParametersFeedbackInfoKHRBuilder<'a> {
56534    #[inline]
56535    pub fn has_std_vps_overrides(mut self, value: bool) -> Self {
56536        self.inner.has_std_vps_overrides = value as u32;
56537        self
56538    }
56539    #[inline]
56540    pub fn has_std_sps_overrides(mut self, value: bool) -> Self {
56541        self.inner.has_std_sps_overrides = value as u32;
56542        self
56543    }
56544    #[inline]
56545    pub fn has_std_pps_overrides(mut self, value: bool) -> Self {
56546        self.inner.has_std_pps_overrides = value as u32;
56547        self
56548    }
56549}
56550impl<'a> core::ops::Deref
56551for VideoEncodeH265SessionParametersFeedbackInfoKHRBuilder<'a> {
56552    type Target = VideoEncodeH265SessionParametersFeedbackInfoKHR;
56553    #[inline]
56554    fn deref(&self) -> &Self::Target {
56555        &self.inner
56556    }
56557}
56558impl<'a> core::ops::DerefMut
56559for VideoEncodeH265SessionParametersFeedbackInfoKHRBuilder<'a> {
56560    #[inline]
56561    fn deref_mut(&mut self) -> &mut Self::Target {
56562        &mut self.inner
56563    }
56564}
56565///Builder for [`VideoEncodeH265PictureInfoKHR`] with lifetime-tied pNext safety.
56566pub struct VideoEncodeH265PictureInfoKHRBuilder<'a> {
56567    inner: VideoEncodeH265PictureInfoKHR,
56568    _marker: core::marker::PhantomData<&'a ()>,
56569}
56570impl VideoEncodeH265PictureInfoKHR {
56571    /// Start building this struct; `s_type` is already set to the correct variant.
56572    #[inline]
56573    pub fn builder<'a>() -> VideoEncodeH265PictureInfoKHRBuilder<'a> {
56574        VideoEncodeH265PictureInfoKHRBuilder {
56575            inner: VideoEncodeH265PictureInfoKHR {
56576                s_type: StructureType::from_raw(1000039003i32),
56577                ..Default::default()
56578            },
56579            _marker: core::marker::PhantomData,
56580        }
56581    }
56582}
56583impl<'a> VideoEncodeH265PictureInfoKHRBuilder<'a> {
56584    #[inline]
56585    pub fn nalu_slice_segment_entries(
56586        mut self,
56587        slice: &'a [VideoEncodeH265NaluSliceSegmentInfoKHR],
56588    ) -> Self {
56589        self.inner.nalu_slice_segment_entry_count = slice.len() as u32;
56590        self.inner.p_nalu_slice_segment_entries = slice.as_ptr();
56591        self
56592    }
56593    #[inline]
56594    pub fn std_picture_info(
56595        mut self,
56596        value: *const StdVideoEncodeH265PictureInfo,
56597    ) -> Self {
56598        self.inner.p_std_picture_info = value;
56599        self
56600    }
56601    ///Prepend a struct to the pNext chain. See [`VideoEncodeH265PictureInfoKHR`]'s **Extended By** section for valid types.
56602    #[inline]
56603    pub fn push_next<T: ExtendsVideoEncodeH265PictureInfoKHR>(
56604        mut self,
56605        next: &'a mut T,
56606    ) -> Self {
56607        unsafe {
56608            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
56609            (*next_ptr).p_next = self.inner.p_next as *mut _;
56610            self.inner.p_next = <*mut BaseOutStructure>::cast::<
56611                core::ffi::c_void,
56612            >(next_ptr) as *const _;
56613        }
56614        self
56615    }
56616}
56617impl<'a> core::ops::Deref for VideoEncodeH265PictureInfoKHRBuilder<'a> {
56618    type Target = VideoEncodeH265PictureInfoKHR;
56619    #[inline]
56620    fn deref(&self) -> &Self::Target {
56621        &self.inner
56622    }
56623}
56624impl<'a> core::ops::DerefMut for VideoEncodeH265PictureInfoKHRBuilder<'a> {
56625    #[inline]
56626    fn deref_mut(&mut self) -> &mut Self::Target {
56627        &mut self.inner
56628    }
56629}
56630///Builder for [`VideoEncodeH265NaluSliceSegmentInfoKHR`] with lifetime-tied pNext safety.
56631pub struct VideoEncodeH265NaluSliceSegmentInfoKHRBuilder<'a> {
56632    inner: VideoEncodeH265NaluSliceSegmentInfoKHR,
56633    _marker: core::marker::PhantomData<&'a ()>,
56634}
56635impl VideoEncodeH265NaluSliceSegmentInfoKHR {
56636    /// Start building this struct; `s_type` is already set to the correct variant.
56637    #[inline]
56638    pub fn builder<'a>() -> VideoEncodeH265NaluSliceSegmentInfoKHRBuilder<'a> {
56639        VideoEncodeH265NaluSliceSegmentInfoKHRBuilder {
56640            inner: VideoEncodeH265NaluSliceSegmentInfoKHR {
56641                s_type: StructureType::from_raw(1000039005i32),
56642                ..Default::default()
56643            },
56644            _marker: core::marker::PhantomData,
56645        }
56646    }
56647}
56648impl<'a> VideoEncodeH265NaluSliceSegmentInfoKHRBuilder<'a> {
56649    #[inline]
56650    pub fn constant_qp(mut self, value: i32) -> Self {
56651        self.inner.constant_qp = value;
56652        self
56653    }
56654    #[inline]
56655    pub fn std_slice_segment_header(
56656        mut self,
56657        value: *const StdVideoEncodeH265SliceSegmentHeader,
56658    ) -> Self {
56659        self.inner.p_std_slice_segment_header = value;
56660        self
56661    }
56662    ///Prepend a struct to the pNext chain. See [`VideoEncodeH265NaluSliceSegmentInfoKHR`]'s **Extended By** section for valid types.
56663    #[inline]
56664    pub fn push_next<T: ExtendsVideoEncodeH265NaluSliceSegmentInfoKHR>(
56665        mut self,
56666        next: &'a mut T,
56667    ) -> Self {
56668        unsafe {
56669            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
56670            (*next_ptr).p_next = self.inner.p_next as *mut _;
56671            self.inner.p_next = <*mut BaseOutStructure>::cast::<
56672                core::ffi::c_void,
56673            >(next_ptr) as *const _;
56674        }
56675        self
56676    }
56677}
56678impl<'a> core::ops::Deref for VideoEncodeH265NaluSliceSegmentInfoKHRBuilder<'a> {
56679    type Target = VideoEncodeH265NaluSliceSegmentInfoKHR;
56680    #[inline]
56681    fn deref(&self) -> &Self::Target {
56682        &self.inner
56683    }
56684}
56685impl<'a> core::ops::DerefMut for VideoEncodeH265NaluSliceSegmentInfoKHRBuilder<'a> {
56686    #[inline]
56687    fn deref_mut(&mut self) -> &mut Self::Target {
56688        &mut self.inner
56689    }
56690}
56691///Builder for [`VideoEncodeH265RateControlInfoKHR`] with lifetime-tied pNext safety.
56692pub struct VideoEncodeH265RateControlInfoKHRBuilder<'a> {
56693    inner: VideoEncodeH265RateControlInfoKHR,
56694    _marker: core::marker::PhantomData<&'a ()>,
56695}
56696impl VideoEncodeH265RateControlInfoKHR {
56697    /// Start building this struct; `s_type` is already set to the correct variant.
56698    #[inline]
56699    pub fn builder<'a>() -> VideoEncodeH265RateControlInfoKHRBuilder<'a> {
56700        VideoEncodeH265RateControlInfoKHRBuilder {
56701            inner: VideoEncodeH265RateControlInfoKHR {
56702                s_type: StructureType::from_raw(1000039009i32),
56703                ..Default::default()
56704            },
56705            _marker: core::marker::PhantomData,
56706        }
56707    }
56708}
56709impl<'a> VideoEncodeH265RateControlInfoKHRBuilder<'a> {
56710    #[inline]
56711    pub fn flags(mut self, value: VideoEncodeH265RateControlFlagsKHR) -> Self {
56712        self.inner.flags = value;
56713        self
56714    }
56715    #[inline]
56716    pub fn gop_frame_count(mut self, value: u32) -> Self {
56717        self.inner.gop_frame_count = value;
56718        self
56719    }
56720    #[inline]
56721    pub fn idr_period(mut self, value: u32) -> Self {
56722        self.inner.idr_period = value;
56723        self
56724    }
56725    #[inline]
56726    pub fn consecutive_b_frame_count(mut self, value: u32) -> Self {
56727        self.inner.consecutive_b_frame_count = value;
56728        self
56729    }
56730    #[inline]
56731    pub fn sub_layer_count(mut self, value: u32) -> Self {
56732        self.inner.sub_layer_count = value;
56733        self
56734    }
56735    ///Prepend a struct to the pNext chain. See [`VideoEncodeH265RateControlInfoKHR`]'s **Extended By** section for valid types.
56736    #[inline]
56737    pub fn push_next<T: ExtendsVideoEncodeH265RateControlInfoKHR>(
56738        mut self,
56739        next: &'a mut T,
56740    ) -> Self {
56741        unsafe {
56742            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
56743            (*next_ptr).p_next = self.inner.p_next as *mut _;
56744            self.inner.p_next = <*mut BaseOutStructure>::cast::<
56745                core::ffi::c_void,
56746            >(next_ptr) as *const _;
56747        }
56748        self
56749    }
56750}
56751impl<'a> core::ops::Deref for VideoEncodeH265RateControlInfoKHRBuilder<'a> {
56752    type Target = VideoEncodeH265RateControlInfoKHR;
56753    #[inline]
56754    fn deref(&self) -> &Self::Target {
56755        &self.inner
56756    }
56757}
56758impl<'a> core::ops::DerefMut for VideoEncodeH265RateControlInfoKHRBuilder<'a> {
56759    #[inline]
56760    fn deref_mut(&mut self) -> &mut Self::Target {
56761        &mut self.inner
56762    }
56763}
56764///Builder for [`VideoEncodeH265QpKHR`].
56765pub struct VideoEncodeH265QpKHRBuilder {
56766    inner: VideoEncodeH265QpKHR,
56767}
56768impl VideoEncodeH265QpKHR {
56769    /// Start building this struct.
56770    #[inline]
56771    pub fn builder() -> VideoEncodeH265QpKHRBuilder {
56772        VideoEncodeH265QpKHRBuilder {
56773            inner: VideoEncodeH265QpKHR {
56774                ..Default::default()
56775            },
56776        }
56777    }
56778}
56779impl VideoEncodeH265QpKHRBuilder {
56780    #[inline]
56781    pub fn qp_i(mut self, value: i32) -> Self {
56782        self.inner.qp_i = value;
56783        self
56784    }
56785    #[inline]
56786    pub fn qp_p(mut self, value: i32) -> Self {
56787        self.inner.qp_p = value;
56788        self
56789    }
56790    #[inline]
56791    pub fn qp_b(mut self, value: i32) -> Self {
56792        self.inner.qp_b = value;
56793        self
56794    }
56795}
56796impl core::ops::Deref for VideoEncodeH265QpKHRBuilder {
56797    type Target = VideoEncodeH265QpKHR;
56798    #[inline]
56799    fn deref(&self) -> &Self::Target {
56800        &self.inner
56801    }
56802}
56803impl core::ops::DerefMut for VideoEncodeH265QpKHRBuilder {
56804    #[inline]
56805    fn deref_mut(&mut self) -> &mut Self::Target {
56806        &mut self.inner
56807    }
56808}
56809///Builder for [`VideoEncodeH265FrameSizeKHR`].
56810pub struct VideoEncodeH265FrameSizeKHRBuilder {
56811    inner: VideoEncodeH265FrameSizeKHR,
56812}
56813impl VideoEncodeH265FrameSizeKHR {
56814    /// Start building this struct.
56815    #[inline]
56816    pub fn builder() -> VideoEncodeH265FrameSizeKHRBuilder {
56817        VideoEncodeH265FrameSizeKHRBuilder {
56818            inner: VideoEncodeH265FrameSizeKHR {
56819                ..Default::default()
56820            },
56821        }
56822    }
56823}
56824impl VideoEncodeH265FrameSizeKHRBuilder {
56825    #[inline]
56826    pub fn frame_i_size(mut self, value: u32) -> Self {
56827        self.inner.frame_i_size = value;
56828        self
56829    }
56830    #[inline]
56831    pub fn frame_p_size(mut self, value: u32) -> Self {
56832        self.inner.frame_p_size = value;
56833        self
56834    }
56835    #[inline]
56836    pub fn frame_b_size(mut self, value: u32) -> Self {
56837        self.inner.frame_b_size = value;
56838        self
56839    }
56840}
56841impl core::ops::Deref for VideoEncodeH265FrameSizeKHRBuilder {
56842    type Target = VideoEncodeH265FrameSizeKHR;
56843    #[inline]
56844    fn deref(&self) -> &Self::Target {
56845        &self.inner
56846    }
56847}
56848impl core::ops::DerefMut for VideoEncodeH265FrameSizeKHRBuilder {
56849    #[inline]
56850    fn deref_mut(&mut self) -> &mut Self::Target {
56851        &mut self.inner
56852    }
56853}
56854///Builder for [`VideoEncodeH265GopRemainingFrameInfoKHR`] with lifetime-tied pNext safety.
56855pub struct VideoEncodeH265GopRemainingFrameInfoKHRBuilder<'a> {
56856    inner: VideoEncodeH265GopRemainingFrameInfoKHR,
56857    _marker: core::marker::PhantomData<&'a ()>,
56858}
56859impl VideoEncodeH265GopRemainingFrameInfoKHR {
56860    /// Start building this struct; `s_type` is already set to the correct variant.
56861    #[inline]
56862    pub fn builder<'a>() -> VideoEncodeH265GopRemainingFrameInfoKHRBuilder<'a> {
56863        VideoEncodeH265GopRemainingFrameInfoKHRBuilder {
56864            inner: VideoEncodeH265GopRemainingFrameInfoKHR {
56865                s_type: StructureType::from_raw(1000039006i32),
56866                ..Default::default()
56867            },
56868            _marker: core::marker::PhantomData,
56869        }
56870    }
56871}
56872impl<'a> VideoEncodeH265GopRemainingFrameInfoKHRBuilder<'a> {
56873    #[inline]
56874    pub fn use_gop_remaining_frames(mut self, value: bool) -> Self {
56875        self.inner.use_gop_remaining_frames = value as u32;
56876        self
56877    }
56878    #[inline]
56879    pub fn gop_remaining_i(mut self, value: u32) -> Self {
56880        self.inner.gop_remaining_i = value;
56881        self
56882    }
56883    #[inline]
56884    pub fn gop_remaining_p(mut self, value: u32) -> Self {
56885        self.inner.gop_remaining_p = value;
56886        self
56887    }
56888    #[inline]
56889    pub fn gop_remaining_b(mut self, value: u32) -> Self {
56890        self.inner.gop_remaining_b = value;
56891        self
56892    }
56893    ///Prepend a struct to the pNext chain. See [`VideoEncodeH265GopRemainingFrameInfoKHR`]'s **Extended By** section for valid types.
56894    #[inline]
56895    pub fn push_next<T: ExtendsVideoEncodeH265GopRemainingFrameInfoKHR>(
56896        mut self,
56897        next: &'a mut T,
56898    ) -> Self {
56899        unsafe {
56900            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
56901            (*next_ptr).p_next = self.inner.p_next as *mut _;
56902            self.inner.p_next = <*mut BaseOutStructure>::cast::<
56903                core::ffi::c_void,
56904            >(next_ptr) as *const _;
56905        }
56906        self
56907    }
56908}
56909impl<'a> core::ops::Deref for VideoEncodeH265GopRemainingFrameInfoKHRBuilder<'a> {
56910    type Target = VideoEncodeH265GopRemainingFrameInfoKHR;
56911    #[inline]
56912    fn deref(&self) -> &Self::Target {
56913        &self.inner
56914    }
56915}
56916impl<'a> core::ops::DerefMut for VideoEncodeH265GopRemainingFrameInfoKHRBuilder<'a> {
56917    #[inline]
56918    fn deref_mut(&mut self) -> &mut Self::Target {
56919        &mut self.inner
56920    }
56921}
56922///Builder for [`VideoEncodeH265RateControlLayerInfoKHR`] with lifetime-tied pNext safety.
56923pub struct VideoEncodeH265RateControlLayerInfoKHRBuilder<'a> {
56924    inner: VideoEncodeH265RateControlLayerInfoKHR,
56925    _marker: core::marker::PhantomData<&'a ()>,
56926}
56927impl VideoEncodeH265RateControlLayerInfoKHR {
56928    /// Start building this struct; `s_type` is already set to the correct variant.
56929    #[inline]
56930    pub fn builder<'a>() -> VideoEncodeH265RateControlLayerInfoKHRBuilder<'a> {
56931        VideoEncodeH265RateControlLayerInfoKHRBuilder {
56932            inner: VideoEncodeH265RateControlLayerInfoKHR {
56933                s_type: StructureType::from_raw(1000039010i32),
56934                ..Default::default()
56935            },
56936            _marker: core::marker::PhantomData,
56937        }
56938    }
56939}
56940impl<'a> VideoEncodeH265RateControlLayerInfoKHRBuilder<'a> {
56941    #[inline]
56942    pub fn use_min_qp(mut self, value: bool) -> Self {
56943        self.inner.use_min_qp = value as u32;
56944        self
56945    }
56946    #[inline]
56947    pub fn min_qp(mut self, value: VideoEncodeH265QpKHR) -> Self {
56948        self.inner.min_qp = value;
56949        self
56950    }
56951    #[inline]
56952    pub fn use_max_qp(mut self, value: bool) -> Self {
56953        self.inner.use_max_qp = value as u32;
56954        self
56955    }
56956    #[inline]
56957    pub fn max_qp(mut self, value: VideoEncodeH265QpKHR) -> Self {
56958        self.inner.max_qp = value;
56959        self
56960    }
56961    #[inline]
56962    pub fn use_max_frame_size(mut self, value: bool) -> Self {
56963        self.inner.use_max_frame_size = value as u32;
56964        self
56965    }
56966    #[inline]
56967    pub fn max_frame_size(mut self, value: VideoEncodeH265FrameSizeKHR) -> Self {
56968        self.inner.max_frame_size = value;
56969        self
56970    }
56971    ///Prepend a struct to the pNext chain. See [`VideoEncodeH265RateControlLayerInfoKHR`]'s **Extended By** section for valid types.
56972    #[inline]
56973    pub fn push_next<T: ExtendsVideoEncodeH265RateControlLayerInfoKHR>(
56974        mut self,
56975        next: &'a mut T,
56976    ) -> Self {
56977        unsafe {
56978            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
56979            (*next_ptr).p_next = self.inner.p_next as *mut _;
56980            self.inner.p_next = <*mut BaseOutStructure>::cast::<
56981                core::ffi::c_void,
56982            >(next_ptr) as *const _;
56983        }
56984        self
56985    }
56986}
56987impl<'a> core::ops::Deref for VideoEncodeH265RateControlLayerInfoKHRBuilder<'a> {
56988    type Target = VideoEncodeH265RateControlLayerInfoKHR;
56989    #[inline]
56990    fn deref(&self) -> &Self::Target {
56991        &self.inner
56992    }
56993}
56994impl<'a> core::ops::DerefMut for VideoEncodeH265RateControlLayerInfoKHRBuilder<'a> {
56995    #[inline]
56996    fn deref_mut(&mut self) -> &mut Self::Target {
56997        &mut self.inner
56998    }
56999}
57000///Builder for [`VideoEncodeH265ProfileInfoKHR`] with lifetime-tied pNext safety.
57001pub struct VideoEncodeH265ProfileInfoKHRBuilder<'a> {
57002    inner: VideoEncodeH265ProfileInfoKHR,
57003    _marker: core::marker::PhantomData<&'a ()>,
57004}
57005impl VideoEncodeH265ProfileInfoKHR {
57006    /// Start building this struct; `s_type` is already set to the correct variant.
57007    #[inline]
57008    pub fn builder<'a>() -> VideoEncodeH265ProfileInfoKHRBuilder<'a> {
57009        VideoEncodeH265ProfileInfoKHRBuilder {
57010            inner: VideoEncodeH265ProfileInfoKHR {
57011                s_type: StructureType::from_raw(1000039007i32),
57012                ..Default::default()
57013            },
57014            _marker: core::marker::PhantomData,
57015        }
57016    }
57017}
57018impl<'a> VideoEncodeH265ProfileInfoKHRBuilder<'a> {
57019    #[inline]
57020    pub fn std_profile_idc(mut self, value: StdVideoH265ProfileIdc) -> Self {
57021        self.inner.std_profile_idc = value;
57022        self
57023    }
57024    ///Prepend a struct to the pNext chain. See [`VideoEncodeH265ProfileInfoKHR`]'s **Extended By** section for valid types.
57025    #[inline]
57026    pub fn push_next<T: ExtendsVideoEncodeH265ProfileInfoKHR>(
57027        mut self,
57028        next: &'a mut T,
57029    ) -> Self {
57030        unsafe {
57031            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
57032            (*next_ptr).p_next = self.inner.p_next as *mut _;
57033            self.inner.p_next = <*mut BaseOutStructure>::cast::<
57034                core::ffi::c_void,
57035            >(next_ptr) as *const _;
57036        }
57037        self
57038    }
57039}
57040impl<'a> core::ops::Deref for VideoEncodeH265ProfileInfoKHRBuilder<'a> {
57041    type Target = VideoEncodeH265ProfileInfoKHR;
57042    #[inline]
57043    fn deref(&self) -> &Self::Target {
57044        &self.inner
57045    }
57046}
57047impl<'a> core::ops::DerefMut for VideoEncodeH265ProfileInfoKHRBuilder<'a> {
57048    #[inline]
57049    fn deref_mut(&mut self) -> &mut Self::Target {
57050        &mut self.inner
57051    }
57052}
57053///Builder for [`VideoEncodeH265DpbSlotInfoKHR`] with lifetime-tied pNext safety.
57054pub struct VideoEncodeH265DpbSlotInfoKHRBuilder<'a> {
57055    inner: VideoEncodeH265DpbSlotInfoKHR,
57056    _marker: core::marker::PhantomData<&'a ()>,
57057}
57058impl VideoEncodeH265DpbSlotInfoKHR {
57059    /// Start building this struct; `s_type` is already set to the correct variant.
57060    #[inline]
57061    pub fn builder<'a>() -> VideoEncodeH265DpbSlotInfoKHRBuilder<'a> {
57062        VideoEncodeH265DpbSlotInfoKHRBuilder {
57063            inner: VideoEncodeH265DpbSlotInfoKHR {
57064                s_type: StructureType::from_raw(1000039004i32),
57065                ..Default::default()
57066            },
57067            _marker: core::marker::PhantomData,
57068        }
57069    }
57070}
57071impl<'a> VideoEncodeH265DpbSlotInfoKHRBuilder<'a> {
57072    #[inline]
57073    pub fn std_reference_info(
57074        mut self,
57075        value: *const StdVideoEncodeH265ReferenceInfo,
57076    ) -> Self {
57077        self.inner.p_std_reference_info = value;
57078        self
57079    }
57080    ///Prepend a struct to the pNext chain. See [`VideoEncodeH265DpbSlotInfoKHR`]'s **Extended By** section for valid types.
57081    #[inline]
57082    pub fn push_next<T: ExtendsVideoEncodeH265DpbSlotInfoKHR>(
57083        mut self,
57084        next: &'a mut T,
57085    ) -> Self {
57086        unsafe {
57087            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
57088            (*next_ptr).p_next = self.inner.p_next as *mut _;
57089            self.inner.p_next = <*mut BaseOutStructure>::cast::<
57090                core::ffi::c_void,
57091            >(next_ptr) as *const _;
57092        }
57093        self
57094    }
57095}
57096impl<'a> core::ops::Deref for VideoEncodeH265DpbSlotInfoKHRBuilder<'a> {
57097    type Target = VideoEncodeH265DpbSlotInfoKHR;
57098    #[inline]
57099    fn deref(&self) -> &Self::Target {
57100        &self.inner
57101    }
57102}
57103impl<'a> core::ops::DerefMut for VideoEncodeH265DpbSlotInfoKHRBuilder<'a> {
57104    #[inline]
57105    fn deref_mut(&mut self) -> &mut Self::Target {
57106        &mut self.inner
57107    }
57108}
57109///Builder for [`VideoEncodeAV1CapabilitiesKHR`] with lifetime-tied pNext safety.
57110pub struct VideoEncodeAV1CapabilitiesKHRBuilder<'a> {
57111    inner: VideoEncodeAV1CapabilitiesKHR,
57112    _marker: core::marker::PhantomData<&'a ()>,
57113}
57114impl VideoEncodeAV1CapabilitiesKHR {
57115    /// Start building this struct; `s_type` is already set to the correct variant.
57116    #[inline]
57117    pub fn builder<'a>() -> VideoEncodeAV1CapabilitiesKHRBuilder<'a> {
57118        VideoEncodeAV1CapabilitiesKHRBuilder {
57119            inner: VideoEncodeAV1CapabilitiesKHR {
57120                s_type: StructureType::from_raw(1000513000i32),
57121                ..Default::default()
57122            },
57123            _marker: core::marker::PhantomData,
57124        }
57125    }
57126}
57127impl<'a> VideoEncodeAV1CapabilitiesKHRBuilder<'a> {
57128    #[inline]
57129    pub fn flags(mut self, value: VideoEncodeAV1CapabilityFlagsKHR) -> Self {
57130        self.inner.flags = value;
57131        self
57132    }
57133    #[inline]
57134    pub fn max_level(mut self, value: StdVideoAV1Level) -> Self {
57135        self.inner.max_level = value;
57136        self
57137    }
57138    #[inline]
57139    pub fn coded_picture_alignment(mut self, value: Extent2D) -> Self {
57140        self.inner.coded_picture_alignment = value;
57141        self
57142    }
57143    #[inline]
57144    pub fn max_tiles(mut self, value: Extent2D) -> Self {
57145        self.inner.max_tiles = value;
57146        self
57147    }
57148    #[inline]
57149    pub fn min_tile_size(mut self, value: Extent2D) -> Self {
57150        self.inner.min_tile_size = value;
57151        self
57152    }
57153    #[inline]
57154    pub fn max_tile_size(mut self, value: Extent2D) -> Self {
57155        self.inner.max_tile_size = value;
57156        self
57157    }
57158    #[inline]
57159    pub fn superblock_sizes(
57160        mut self,
57161        value: VideoEncodeAV1SuperblockSizeFlagsKHR,
57162    ) -> Self {
57163        self.inner.superblock_sizes = value;
57164        self
57165    }
57166    #[inline]
57167    pub fn max_single_reference_count(mut self, value: u32) -> Self {
57168        self.inner.max_single_reference_count = value;
57169        self
57170    }
57171    #[inline]
57172    pub fn single_reference_name_mask(mut self, value: u32) -> Self {
57173        self.inner.single_reference_name_mask = value;
57174        self
57175    }
57176    #[inline]
57177    pub fn max_unidirectional_compound_reference_count(mut self, value: u32) -> Self {
57178        self.inner.max_unidirectional_compound_reference_count = value;
57179        self
57180    }
57181    #[inline]
57182    pub fn max_unidirectional_compound_group1_reference_count(
57183        mut self,
57184        value: u32,
57185    ) -> Self {
57186        self.inner.max_unidirectional_compound_group1_reference_count = value;
57187        self
57188    }
57189    #[inline]
57190    pub fn unidirectional_compound_reference_name_mask(mut self, value: u32) -> Self {
57191        self.inner.unidirectional_compound_reference_name_mask = value;
57192        self
57193    }
57194    #[inline]
57195    pub fn max_bidirectional_compound_reference_count(mut self, value: u32) -> Self {
57196        self.inner.max_bidirectional_compound_reference_count = value;
57197        self
57198    }
57199    #[inline]
57200    pub fn max_bidirectional_compound_group1_reference_count(
57201        mut self,
57202        value: u32,
57203    ) -> Self {
57204        self.inner.max_bidirectional_compound_group1_reference_count = value;
57205        self
57206    }
57207    #[inline]
57208    pub fn max_bidirectional_compound_group2_reference_count(
57209        mut self,
57210        value: u32,
57211    ) -> Self {
57212        self.inner.max_bidirectional_compound_group2_reference_count = value;
57213        self
57214    }
57215    #[inline]
57216    pub fn bidirectional_compound_reference_name_mask(mut self, value: u32) -> Self {
57217        self.inner.bidirectional_compound_reference_name_mask = value;
57218        self
57219    }
57220    #[inline]
57221    pub fn max_temporal_layer_count(mut self, value: u32) -> Self {
57222        self.inner.max_temporal_layer_count = value;
57223        self
57224    }
57225    #[inline]
57226    pub fn max_spatial_layer_count(mut self, value: u32) -> Self {
57227        self.inner.max_spatial_layer_count = value;
57228        self
57229    }
57230    #[inline]
57231    pub fn max_operating_points(mut self, value: u32) -> Self {
57232        self.inner.max_operating_points = value;
57233        self
57234    }
57235    #[inline]
57236    pub fn min_q_index(mut self, value: u32) -> Self {
57237        self.inner.min_q_index = value;
57238        self
57239    }
57240    #[inline]
57241    pub fn max_q_index(mut self, value: u32) -> Self {
57242        self.inner.max_q_index = value;
57243        self
57244    }
57245    #[inline]
57246    pub fn prefers_gop_remaining_frames(mut self, value: bool) -> Self {
57247        self.inner.prefers_gop_remaining_frames = value as u32;
57248        self
57249    }
57250    #[inline]
57251    pub fn requires_gop_remaining_frames(mut self, value: bool) -> Self {
57252        self.inner.requires_gop_remaining_frames = value as u32;
57253        self
57254    }
57255    #[inline]
57256    pub fn std_syntax_flags(mut self, value: VideoEncodeAV1StdFlagsKHR) -> Self {
57257        self.inner.std_syntax_flags = value;
57258        self
57259    }
57260}
57261impl<'a> core::ops::Deref for VideoEncodeAV1CapabilitiesKHRBuilder<'a> {
57262    type Target = VideoEncodeAV1CapabilitiesKHR;
57263    #[inline]
57264    fn deref(&self) -> &Self::Target {
57265        &self.inner
57266    }
57267}
57268impl<'a> core::ops::DerefMut for VideoEncodeAV1CapabilitiesKHRBuilder<'a> {
57269    #[inline]
57270    fn deref_mut(&mut self) -> &mut Self::Target {
57271        &mut self.inner
57272    }
57273}
57274///Builder for [`VideoEncodeAV1QualityLevelPropertiesKHR`] with lifetime-tied pNext safety.
57275pub struct VideoEncodeAV1QualityLevelPropertiesKHRBuilder<'a> {
57276    inner: VideoEncodeAV1QualityLevelPropertiesKHR,
57277    _marker: core::marker::PhantomData<&'a ()>,
57278}
57279impl VideoEncodeAV1QualityLevelPropertiesKHR {
57280    /// Start building this struct; `s_type` is already set to the correct variant.
57281    #[inline]
57282    pub fn builder<'a>() -> VideoEncodeAV1QualityLevelPropertiesKHRBuilder<'a> {
57283        VideoEncodeAV1QualityLevelPropertiesKHRBuilder {
57284            inner: VideoEncodeAV1QualityLevelPropertiesKHR {
57285                s_type: StructureType::from_raw(1000513008i32),
57286                ..Default::default()
57287            },
57288            _marker: core::marker::PhantomData,
57289        }
57290    }
57291}
57292impl<'a> VideoEncodeAV1QualityLevelPropertiesKHRBuilder<'a> {
57293    #[inline]
57294    pub fn preferred_rate_control_flags(
57295        mut self,
57296        value: VideoEncodeAV1RateControlFlagsKHR,
57297    ) -> Self {
57298        self.inner.preferred_rate_control_flags = value;
57299        self
57300    }
57301    #[inline]
57302    pub fn preferred_gop_frame_count(mut self, value: u32) -> Self {
57303        self.inner.preferred_gop_frame_count = value;
57304        self
57305    }
57306    #[inline]
57307    pub fn preferred_key_frame_period(mut self, value: u32) -> Self {
57308        self.inner.preferred_key_frame_period = value;
57309        self
57310    }
57311    #[inline]
57312    pub fn preferred_consecutive_bipredictive_frame_count(mut self, value: u32) -> Self {
57313        self.inner.preferred_consecutive_bipredictive_frame_count = value;
57314        self
57315    }
57316    #[inline]
57317    pub fn preferred_temporal_layer_count(mut self, value: u32) -> Self {
57318        self.inner.preferred_temporal_layer_count = value;
57319        self
57320    }
57321    #[inline]
57322    pub fn preferred_constant_q_index(mut self, value: VideoEncodeAV1QIndexKHR) -> Self {
57323        self.inner.preferred_constant_q_index = value;
57324        self
57325    }
57326    #[inline]
57327    pub fn preferred_max_single_reference_count(mut self, value: u32) -> Self {
57328        self.inner.preferred_max_single_reference_count = value;
57329        self
57330    }
57331    #[inline]
57332    pub fn preferred_single_reference_name_mask(mut self, value: u32) -> Self {
57333        self.inner.preferred_single_reference_name_mask = value;
57334        self
57335    }
57336    #[inline]
57337    pub fn preferred_max_unidirectional_compound_reference_count(
57338        mut self,
57339        value: u32,
57340    ) -> Self {
57341        self.inner.preferred_max_unidirectional_compound_reference_count = value;
57342        self
57343    }
57344    #[inline]
57345    pub fn preferred_max_unidirectional_compound_group1_reference_count(
57346        mut self,
57347        value: u32,
57348    ) -> Self {
57349        self.inner.preferred_max_unidirectional_compound_group1_reference_count = value;
57350        self
57351    }
57352    #[inline]
57353    pub fn preferred_unidirectional_compound_reference_name_mask(
57354        mut self,
57355        value: u32,
57356    ) -> Self {
57357        self.inner.preferred_unidirectional_compound_reference_name_mask = value;
57358        self
57359    }
57360    #[inline]
57361    pub fn preferred_max_bidirectional_compound_reference_count(
57362        mut self,
57363        value: u32,
57364    ) -> Self {
57365        self.inner.preferred_max_bidirectional_compound_reference_count = value;
57366        self
57367    }
57368    #[inline]
57369    pub fn preferred_max_bidirectional_compound_group1_reference_count(
57370        mut self,
57371        value: u32,
57372    ) -> Self {
57373        self.inner.preferred_max_bidirectional_compound_group1_reference_count = value;
57374        self
57375    }
57376    #[inline]
57377    pub fn preferred_max_bidirectional_compound_group2_reference_count(
57378        mut self,
57379        value: u32,
57380    ) -> Self {
57381        self.inner.preferred_max_bidirectional_compound_group2_reference_count = value;
57382        self
57383    }
57384    #[inline]
57385    pub fn preferred_bidirectional_compound_reference_name_mask(
57386        mut self,
57387        value: u32,
57388    ) -> Self {
57389        self.inner.preferred_bidirectional_compound_reference_name_mask = value;
57390        self
57391    }
57392}
57393impl<'a> core::ops::Deref for VideoEncodeAV1QualityLevelPropertiesKHRBuilder<'a> {
57394    type Target = VideoEncodeAV1QualityLevelPropertiesKHR;
57395    #[inline]
57396    fn deref(&self) -> &Self::Target {
57397        &self.inner
57398    }
57399}
57400impl<'a> core::ops::DerefMut for VideoEncodeAV1QualityLevelPropertiesKHRBuilder<'a> {
57401    #[inline]
57402    fn deref_mut(&mut self) -> &mut Self::Target {
57403        &mut self.inner
57404    }
57405}
57406///Builder for [`PhysicalDeviceVideoEncodeAV1FeaturesKHR`] with lifetime-tied pNext safety.
57407pub struct PhysicalDeviceVideoEncodeAV1FeaturesKHRBuilder<'a> {
57408    inner: PhysicalDeviceVideoEncodeAV1FeaturesKHR,
57409    _marker: core::marker::PhantomData<&'a ()>,
57410}
57411impl PhysicalDeviceVideoEncodeAV1FeaturesKHR {
57412    /// Start building this struct; `s_type` is already set to the correct variant.
57413    #[inline]
57414    pub fn builder<'a>() -> PhysicalDeviceVideoEncodeAV1FeaturesKHRBuilder<'a> {
57415        PhysicalDeviceVideoEncodeAV1FeaturesKHRBuilder {
57416            inner: PhysicalDeviceVideoEncodeAV1FeaturesKHR {
57417                s_type: StructureType::from_raw(1000513004i32),
57418                ..Default::default()
57419            },
57420            _marker: core::marker::PhantomData,
57421        }
57422    }
57423}
57424impl<'a> PhysicalDeviceVideoEncodeAV1FeaturesKHRBuilder<'a> {
57425    #[inline]
57426    pub fn video_encode_av1(mut self, value: bool) -> Self {
57427        self.inner.video_encode_av1 = value as u32;
57428        self
57429    }
57430    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceVideoEncodeAV1FeaturesKHR`]'s **Extended By** section for valid types.
57431    #[inline]
57432    pub fn push_next<T: ExtendsPhysicalDeviceVideoEncodeAV1FeaturesKHR>(
57433        mut self,
57434        next: &'a mut T,
57435    ) -> Self {
57436        unsafe {
57437            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
57438            (*next_ptr).p_next = self.inner.p_next as *mut _;
57439            self.inner.p_next = <*mut BaseOutStructure>::cast::<
57440                core::ffi::c_void,
57441            >(next_ptr);
57442        }
57443        self
57444    }
57445}
57446impl<'a> core::ops::Deref for PhysicalDeviceVideoEncodeAV1FeaturesKHRBuilder<'a> {
57447    type Target = PhysicalDeviceVideoEncodeAV1FeaturesKHR;
57448    #[inline]
57449    fn deref(&self) -> &Self::Target {
57450        &self.inner
57451    }
57452}
57453impl<'a> core::ops::DerefMut for PhysicalDeviceVideoEncodeAV1FeaturesKHRBuilder<'a> {
57454    #[inline]
57455    fn deref_mut(&mut self) -> &mut Self::Target {
57456        &mut self.inner
57457    }
57458}
57459///Builder for [`VideoEncodeAV1SessionCreateInfoKHR`] with lifetime-tied pNext safety.
57460pub struct VideoEncodeAV1SessionCreateInfoKHRBuilder<'a> {
57461    inner: VideoEncodeAV1SessionCreateInfoKHR,
57462    _marker: core::marker::PhantomData<&'a ()>,
57463}
57464impl VideoEncodeAV1SessionCreateInfoKHR {
57465    /// Start building this struct; `s_type` is already set to the correct variant.
57466    #[inline]
57467    pub fn builder<'a>() -> VideoEncodeAV1SessionCreateInfoKHRBuilder<'a> {
57468        VideoEncodeAV1SessionCreateInfoKHRBuilder {
57469            inner: VideoEncodeAV1SessionCreateInfoKHR {
57470                s_type: StructureType::from_raw(1000513009i32),
57471                ..Default::default()
57472            },
57473            _marker: core::marker::PhantomData,
57474        }
57475    }
57476}
57477impl<'a> VideoEncodeAV1SessionCreateInfoKHRBuilder<'a> {
57478    #[inline]
57479    pub fn use_max_level(mut self, value: bool) -> Self {
57480        self.inner.use_max_level = value as u32;
57481        self
57482    }
57483    #[inline]
57484    pub fn max_level(mut self, value: StdVideoAV1Level) -> Self {
57485        self.inner.max_level = value;
57486        self
57487    }
57488    ///Prepend a struct to the pNext chain. See [`VideoEncodeAV1SessionCreateInfoKHR`]'s **Extended By** section for valid types.
57489    #[inline]
57490    pub fn push_next<T: ExtendsVideoEncodeAV1SessionCreateInfoKHR>(
57491        mut self,
57492        next: &'a mut T,
57493    ) -> Self {
57494        unsafe {
57495            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
57496            (*next_ptr).p_next = self.inner.p_next as *mut _;
57497            self.inner.p_next = <*mut BaseOutStructure>::cast::<
57498                core::ffi::c_void,
57499            >(next_ptr) as *const _;
57500        }
57501        self
57502    }
57503}
57504impl<'a> core::ops::Deref for VideoEncodeAV1SessionCreateInfoKHRBuilder<'a> {
57505    type Target = VideoEncodeAV1SessionCreateInfoKHR;
57506    #[inline]
57507    fn deref(&self) -> &Self::Target {
57508        &self.inner
57509    }
57510}
57511impl<'a> core::ops::DerefMut for VideoEncodeAV1SessionCreateInfoKHRBuilder<'a> {
57512    #[inline]
57513    fn deref_mut(&mut self) -> &mut Self::Target {
57514        &mut self.inner
57515    }
57516}
57517///Builder for [`VideoEncodeAV1SessionParametersCreateInfoKHR`] with lifetime-tied pNext safety.
57518pub struct VideoEncodeAV1SessionParametersCreateInfoKHRBuilder<'a> {
57519    inner: VideoEncodeAV1SessionParametersCreateInfoKHR,
57520    _marker: core::marker::PhantomData<&'a ()>,
57521}
57522impl VideoEncodeAV1SessionParametersCreateInfoKHR {
57523    /// Start building this struct; `s_type` is already set to the correct variant.
57524    #[inline]
57525    pub fn builder<'a>() -> VideoEncodeAV1SessionParametersCreateInfoKHRBuilder<'a> {
57526        VideoEncodeAV1SessionParametersCreateInfoKHRBuilder {
57527            inner: VideoEncodeAV1SessionParametersCreateInfoKHR {
57528                s_type: StructureType::from_raw(1000513001i32),
57529                ..Default::default()
57530            },
57531            _marker: core::marker::PhantomData,
57532        }
57533    }
57534}
57535impl<'a> VideoEncodeAV1SessionParametersCreateInfoKHRBuilder<'a> {
57536    #[inline]
57537    pub fn std_sequence_header(
57538        mut self,
57539        value: *const StdVideoAV1SequenceHeader,
57540    ) -> Self {
57541        self.inner.p_std_sequence_header = value;
57542        self
57543    }
57544    #[inline]
57545    pub fn std_decoder_model_info(
57546        mut self,
57547        value: *const StdVideoEncodeAV1DecoderModelInfo,
57548    ) -> Self {
57549        self.inner.p_std_decoder_model_info = value;
57550        self
57551    }
57552    #[inline]
57553    pub fn std_operating_point_count(mut self, value: u32) -> Self {
57554        self.inner.std_operating_point_count = value;
57555        self
57556    }
57557    #[inline]
57558    pub fn std_operating_points(
57559        mut self,
57560        slice: &'a [StdVideoEncodeAV1OperatingPointInfo],
57561    ) -> Self {
57562        self.inner.std_operating_point_count = slice.len() as u32;
57563        self.inner.p_std_operating_points = slice.as_ptr();
57564        self
57565    }
57566    ///Prepend a struct to the pNext chain. See [`VideoEncodeAV1SessionParametersCreateInfoKHR`]'s **Extended By** section for valid types.
57567    #[inline]
57568    pub fn push_next<T: ExtendsVideoEncodeAV1SessionParametersCreateInfoKHR>(
57569        mut self,
57570        next: &'a mut T,
57571    ) -> Self {
57572        unsafe {
57573            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
57574            (*next_ptr).p_next = self.inner.p_next as *mut _;
57575            self.inner.p_next = <*mut BaseOutStructure>::cast::<
57576                core::ffi::c_void,
57577            >(next_ptr) as *const _;
57578        }
57579        self
57580    }
57581}
57582impl<'a> core::ops::Deref for VideoEncodeAV1SessionParametersCreateInfoKHRBuilder<'a> {
57583    type Target = VideoEncodeAV1SessionParametersCreateInfoKHR;
57584    #[inline]
57585    fn deref(&self) -> &Self::Target {
57586        &self.inner
57587    }
57588}
57589impl<'a> core::ops::DerefMut
57590for VideoEncodeAV1SessionParametersCreateInfoKHRBuilder<'a> {
57591    #[inline]
57592    fn deref_mut(&mut self) -> &mut Self::Target {
57593        &mut self.inner
57594    }
57595}
57596///Builder for [`VideoEncodeAV1DpbSlotInfoKHR`] with lifetime-tied pNext safety.
57597pub struct VideoEncodeAV1DpbSlotInfoKHRBuilder<'a> {
57598    inner: VideoEncodeAV1DpbSlotInfoKHR,
57599    _marker: core::marker::PhantomData<&'a ()>,
57600}
57601impl VideoEncodeAV1DpbSlotInfoKHR {
57602    /// Start building this struct; `s_type` is already set to the correct variant.
57603    #[inline]
57604    pub fn builder<'a>() -> VideoEncodeAV1DpbSlotInfoKHRBuilder<'a> {
57605        VideoEncodeAV1DpbSlotInfoKHRBuilder {
57606            inner: VideoEncodeAV1DpbSlotInfoKHR {
57607                s_type: StructureType::from_raw(1000513003i32),
57608                ..Default::default()
57609            },
57610            _marker: core::marker::PhantomData,
57611        }
57612    }
57613}
57614impl<'a> VideoEncodeAV1DpbSlotInfoKHRBuilder<'a> {
57615    #[inline]
57616    pub fn std_reference_info(
57617        mut self,
57618        value: *const StdVideoEncodeAV1ReferenceInfo,
57619    ) -> Self {
57620        self.inner.p_std_reference_info = value;
57621        self
57622    }
57623    ///Prepend a struct to the pNext chain. See [`VideoEncodeAV1DpbSlotInfoKHR`]'s **Extended By** section for valid types.
57624    #[inline]
57625    pub fn push_next<T: ExtendsVideoEncodeAV1DpbSlotInfoKHR>(
57626        mut self,
57627        next: &'a mut T,
57628    ) -> Self {
57629        unsafe {
57630            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
57631            (*next_ptr).p_next = self.inner.p_next as *mut _;
57632            self.inner.p_next = <*mut BaseOutStructure>::cast::<
57633                core::ffi::c_void,
57634            >(next_ptr) as *const _;
57635        }
57636        self
57637    }
57638}
57639impl<'a> core::ops::Deref for VideoEncodeAV1DpbSlotInfoKHRBuilder<'a> {
57640    type Target = VideoEncodeAV1DpbSlotInfoKHR;
57641    #[inline]
57642    fn deref(&self) -> &Self::Target {
57643        &self.inner
57644    }
57645}
57646impl<'a> core::ops::DerefMut for VideoEncodeAV1DpbSlotInfoKHRBuilder<'a> {
57647    #[inline]
57648    fn deref_mut(&mut self) -> &mut Self::Target {
57649        &mut self.inner
57650    }
57651}
57652///Builder for [`VideoEncodeAV1PictureInfoKHR`] with lifetime-tied pNext safety.
57653pub struct VideoEncodeAV1PictureInfoKHRBuilder<'a> {
57654    inner: VideoEncodeAV1PictureInfoKHR,
57655    _marker: core::marker::PhantomData<&'a ()>,
57656}
57657impl VideoEncodeAV1PictureInfoKHR {
57658    /// Start building this struct; `s_type` is already set to the correct variant.
57659    #[inline]
57660    pub fn builder<'a>() -> VideoEncodeAV1PictureInfoKHRBuilder<'a> {
57661        VideoEncodeAV1PictureInfoKHRBuilder {
57662            inner: VideoEncodeAV1PictureInfoKHR {
57663                s_type: StructureType::from_raw(1000513002i32),
57664                ..Default::default()
57665            },
57666            _marker: core::marker::PhantomData,
57667        }
57668    }
57669}
57670impl<'a> VideoEncodeAV1PictureInfoKHRBuilder<'a> {
57671    #[inline]
57672    pub fn prediction_mode(mut self, value: VideoEncodeAV1PredictionModeKHR) -> Self {
57673        self.inner.prediction_mode = value;
57674        self
57675    }
57676    #[inline]
57677    pub fn rate_control_group(
57678        mut self,
57679        value: VideoEncodeAV1RateControlGroupKHR,
57680    ) -> Self {
57681        self.inner.rate_control_group = value;
57682        self
57683    }
57684    #[inline]
57685    pub fn constant_q_index(mut self, value: u32) -> Self {
57686        self.inner.constant_q_index = value;
57687        self
57688    }
57689    #[inline]
57690    pub fn std_picture_info(
57691        mut self,
57692        value: *const StdVideoEncodeAV1PictureInfo,
57693    ) -> Self {
57694        self.inner.p_std_picture_info = value;
57695        self
57696    }
57697    #[inline]
57698    pub fn reference_name_slot_indices(
57699        mut self,
57700        value: [i32; MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR as usize],
57701    ) -> Self {
57702        self.inner.reference_name_slot_indices = value;
57703        self
57704    }
57705    #[inline]
57706    pub fn primary_reference_cdf_only(mut self, value: bool) -> Self {
57707        self.inner.primary_reference_cdf_only = value as u32;
57708        self
57709    }
57710    #[inline]
57711    pub fn generate_obu_extension_header(mut self, value: bool) -> Self {
57712        self.inner.generate_obu_extension_header = value as u32;
57713        self
57714    }
57715    ///Prepend a struct to the pNext chain. See [`VideoEncodeAV1PictureInfoKHR`]'s **Extended By** section for valid types.
57716    #[inline]
57717    pub fn push_next<T: ExtendsVideoEncodeAV1PictureInfoKHR>(
57718        mut self,
57719        next: &'a mut T,
57720    ) -> Self {
57721        unsafe {
57722            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
57723            (*next_ptr).p_next = self.inner.p_next as *mut _;
57724            self.inner.p_next = <*mut BaseOutStructure>::cast::<
57725                core::ffi::c_void,
57726            >(next_ptr) as *const _;
57727        }
57728        self
57729    }
57730}
57731impl<'a> core::ops::Deref for VideoEncodeAV1PictureInfoKHRBuilder<'a> {
57732    type Target = VideoEncodeAV1PictureInfoKHR;
57733    #[inline]
57734    fn deref(&self) -> &Self::Target {
57735        &self.inner
57736    }
57737}
57738impl<'a> core::ops::DerefMut for VideoEncodeAV1PictureInfoKHRBuilder<'a> {
57739    #[inline]
57740    fn deref_mut(&mut self) -> &mut Self::Target {
57741        &mut self.inner
57742    }
57743}
57744///Builder for [`VideoEncodeAV1ProfileInfoKHR`] with lifetime-tied pNext safety.
57745pub struct VideoEncodeAV1ProfileInfoKHRBuilder<'a> {
57746    inner: VideoEncodeAV1ProfileInfoKHR,
57747    _marker: core::marker::PhantomData<&'a ()>,
57748}
57749impl VideoEncodeAV1ProfileInfoKHR {
57750    /// Start building this struct; `s_type` is already set to the correct variant.
57751    #[inline]
57752    pub fn builder<'a>() -> VideoEncodeAV1ProfileInfoKHRBuilder<'a> {
57753        VideoEncodeAV1ProfileInfoKHRBuilder {
57754            inner: VideoEncodeAV1ProfileInfoKHR {
57755                s_type: StructureType::from_raw(1000513005i32),
57756                ..Default::default()
57757            },
57758            _marker: core::marker::PhantomData,
57759        }
57760    }
57761}
57762impl<'a> VideoEncodeAV1ProfileInfoKHRBuilder<'a> {
57763    #[inline]
57764    pub fn std_profile(mut self, value: StdVideoAV1Profile) -> Self {
57765        self.inner.std_profile = value;
57766        self
57767    }
57768    ///Prepend a struct to the pNext chain. See [`VideoEncodeAV1ProfileInfoKHR`]'s **Extended By** section for valid types.
57769    #[inline]
57770    pub fn push_next<T: ExtendsVideoEncodeAV1ProfileInfoKHR>(
57771        mut self,
57772        next: &'a mut T,
57773    ) -> Self {
57774        unsafe {
57775            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
57776            (*next_ptr).p_next = self.inner.p_next as *mut _;
57777            self.inner.p_next = <*mut BaseOutStructure>::cast::<
57778                core::ffi::c_void,
57779            >(next_ptr) as *const _;
57780        }
57781        self
57782    }
57783}
57784impl<'a> core::ops::Deref for VideoEncodeAV1ProfileInfoKHRBuilder<'a> {
57785    type Target = VideoEncodeAV1ProfileInfoKHR;
57786    #[inline]
57787    fn deref(&self) -> &Self::Target {
57788        &self.inner
57789    }
57790}
57791impl<'a> core::ops::DerefMut for VideoEncodeAV1ProfileInfoKHRBuilder<'a> {
57792    #[inline]
57793    fn deref_mut(&mut self) -> &mut Self::Target {
57794        &mut self.inner
57795    }
57796}
57797///Builder for [`VideoEncodeAV1RateControlInfoKHR`] with lifetime-tied pNext safety.
57798pub struct VideoEncodeAV1RateControlInfoKHRBuilder<'a> {
57799    inner: VideoEncodeAV1RateControlInfoKHR,
57800    _marker: core::marker::PhantomData<&'a ()>,
57801}
57802impl VideoEncodeAV1RateControlInfoKHR {
57803    /// Start building this struct; `s_type` is already set to the correct variant.
57804    #[inline]
57805    pub fn builder<'a>() -> VideoEncodeAV1RateControlInfoKHRBuilder<'a> {
57806        VideoEncodeAV1RateControlInfoKHRBuilder {
57807            inner: VideoEncodeAV1RateControlInfoKHR {
57808                s_type: StructureType::from_raw(1000513006i32),
57809                ..Default::default()
57810            },
57811            _marker: core::marker::PhantomData,
57812        }
57813    }
57814}
57815impl<'a> VideoEncodeAV1RateControlInfoKHRBuilder<'a> {
57816    #[inline]
57817    pub fn flags(mut self, value: VideoEncodeAV1RateControlFlagsKHR) -> Self {
57818        self.inner.flags = value;
57819        self
57820    }
57821    #[inline]
57822    pub fn gop_frame_count(mut self, value: u32) -> Self {
57823        self.inner.gop_frame_count = value;
57824        self
57825    }
57826    #[inline]
57827    pub fn key_frame_period(mut self, value: u32) -> Self {
57828        self.inner.key_frame_period = value;
57829        self
57830    }
57831    #[inline]
57832    pub fn consecutive_bipredictive_frame_count(mut self, value: u32) -> Self {
57833        self.inner.consecutive_bipredictive_frame_count = value;
57834        self
57835    }
57836    #[inline]
57837    pub fn temporal_layer_count(mut self, value: u32) -> Self {
57838        self.inner.temporal_layer_count = value;
57839        self
57840    }
57841    ///Prepend a struct to the pNext chain. See [`VideoEncodeAV1RateControlInfoKHR`]'s **Extended By** section for valid types.
57842    #[inline]
57843    pub fn push_next<T: ExtendsVideoEncodeAV1RateControlInfoKHR>(
57844        mut self,
57845        next: &'a mut T,
57846    ) -> Self {
57847        unsafe {
57848            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
57849            (*next_ptr).p_next = self.inner.p_next as *mut _;
57850            self.inner.p_next = <*mut BaseOutStructure>::cast::<
57851                core::ffi::c_void,
57852            >(next_ptr) as *const _;
57853        }
57854        self
57855    }
57856}
57857impl<'a> core::ops::Deref for VideoEncodeAV1RateControlInfoKHRBuilder<'a> {
57858    type Target = VideoEncodeAV1RateControlInfoKHR;
57859    #[inline]
57860    fn deref(&self) -> &Self::Target {
57861        &self.inner
57862    }
57863}
57864impl<'a> core::ops::DerefMut for VideoEncodeAV1RateControlInfoKHRBuilder<'a> {
57865    #[inline]
57866    fn deref_mut(&mut self) -> &mut Self::Target {
57867        &mut self.inner
57868    }
57869}
57870///Builder for [`VideoEncodeAV1QIndexKHR`].
57871pub struct VideoEncodeAV1QIndexKHRBuilder {
57872    inner: VideoEncodeAV1QIndexKHR,
57873}
57874impl VideoEncodeAV1QIndexKHR {
57875    /// Start building this struct.
57876    #[inline]
57877    pub fn builder() -> VideoEncodeAV1QIndexKHRBuilder {
57878        VideoEncodeAV1QIndexKHRBuilder {
57879            inner: VideoEncodeAV1QIndexKHR {
57880                ..Default::default()
57881            },
57882        }
57883    }
57884}
57885impl VideoEncodeAV1QIndexKHRBuilder {
57886    #[inline]
57887    pub fn intra_q_index(mut self, value: u32) -> Self {
57888        self.inner.intra_q_index = value;
57889        self
57890    }
57891    #[inline]
57892    pub fn predictive_q_index(mut self, value: u32) -> Self {
57893        self.inner.predictive_q_index = value;
57894        self
57895    }
57896    #[inline]
57897    pub fn bipredictive_q_index(mut self, value: u32) -> Self {
57898        self.inner.bipredictive_q_index = value;
57899        self
57900    }
57901}
57902impl core::ops::Deref for VideoEncodeAV1QIndexKHRBuilder {
57903    type Target = VideoEncodeAV1QIndexKHR;
57904    #[inline]
57905    fn deref(&self) -> &Self::Target {
57906        &self.inner
57907    }
57908}
57909impl core::ops::DerefMut for VideoEncodeAV1QIndexKHRBuilder {
57910    #[inline]
57911    fn deref_mut(&mut self) -> &mut Self::Target {
57912        &mut self.inner
57913    }
57914}
57915///Builder for [`VideoEncodeAV1FrameSizeKHR`].
57916pub struct VideoEncodeAV1FrameSizeKHRBuilder {
57917    inner: VideoEncodeAV1FrameSizeKHR,
57918}
57919impl VideoEncodeAV1FrameSizeKHR {
57920    /// Start building this struct.
57921    #[inline]
57922    pub fn builder() -> VideoEncodeAV1FrameSizeKHRBuilder {
57923        VideoEncodeAV1FrameSizeKHRBuilder {
57924            inner: VideoEncodeAV1FrameSizeKHR {
57925                ..Default::default()
57926            },
57927        }
57928    }
57929}
57930impl VideoEncodeAV1FrameSizeKHRBuilder {
57931    #[inline]
57932    pub fn intra_frame_size(mut self, value: u32) -> Self {
57933        self.inner.intra_frame_size = value;
57934        self
57935    }
57936    #[inline]
57937    pub fn predictive_frame_size(mut self, value: u32) -> Self {
57938        self.inner.predictive_frame_size = value;
57939        self
57940    }
57941    #[inline]
57942    pub fn bipredictive_frame_size(mut self, value: u32) -> Self {
57943        self.inner.bipredictive_frame_size = value;
57944        self
57945    }
57946}
57947impl core::ops::Deref for VideoEncodeAV1FrameSizeKHRBuilder {
57948    type Target = VideoEncodeAV1FrameSizeKHR;
57949    #[inline]
57950    fn deref(&self) -> &Self::Target {
57951        &self.inner
57952    }
57953}
57954impl core::ops::DerefMut for VideoEncodeAV1FrameSizeKHRBuilder {
57955    #[inline]
57956    fn deref_mut(&mut self) -> &mut Self::Target {
57957        &mut self.inner
57958    }
57959}
57960///Builder for [`VideoEncodeAV1GopRemainingFrameInfoKHR`] with lifetime-tied pNext safety.
57961pub struct VideoEncodeAV1GopRemainingFrameInfoKHRBuilder<'a> {
57962    inner: VideoEncodeAV1GopRemainingFrameInfoKHR,
57963    _marker: core::marker::PhantomData<&'a ()>,
57964}
57965impl VideoEncodeAV1GopRemainingFrameInfoKHR {
57966    /// Start building this struct; `s_type` is already set to the correct variant.
57967    #[inline]
57968    pub fn builder<'a>() -> VideoEncodeAV1GopRemainingFrameInfoKHRBuilder<'a> {
57969        VideoEncodeAV1GopRemainingFrameInfoKHRBuilder {
57970            inner: VideoEncodeAV1GopRemainingFrameInfoKHR {
57971                s_type: StructureType::from_raw(1000513010i32),
57972                ..Default::default()
57973            },
57974            _marker: core::marker::PhantomData,
57975        }
57976    }
57977}
57978impl<'a> VideoEncodeAV1GopRemainingFrameInfoKHRBuilder<'a> {
57979    #[inline]
57980    pub fn use_gop_remaining_frames(mut self, value: bool) -> Self {
57981        self.inner.use_gop_remaining_frames = value as u32;
57982        self
57983    }
57984    #[inline]
57985    pub fn gop_remaining_intra(mut self, value: u32) -> Self {
57986        self.inner.gop_remaining_intra = value;
57987        self
57988    }
57989    #[inline]
57990    pub fn gop_remaining_predictive(mut self, value: u32) -> Self {
57991        self.inner.gop_remaining_predictive = value;
57992        self
57993    }
57994    #[inline]
57995    pub fn gop_remaining_bipredictive(mut self, value: u32) -> Self {
57996        self.inner.gop_remaining_bipredictive = value;
57997        self
57998    }
57999    ///Prepend a struct to the pNext chain. See [`VideoEncodeAV1GopRemainingFrameInfoKHR`]'s **Extended By** section for valid types.
58000    #[inline]
58001    pub fn push_next<T: ExtendsVideoEncodeAV1GopRemainingFrameInfoKHR>(
58002        mut self,
58003        next: &'a mut T,
58004    ) -> Self {
58005        unsafe {
58006            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
58007            (*next_ptr).p_next = self.inner.p_next as *mut _;
58008            self.inner.p_next = <*mut BaseOutStructure>::cast::<
58009                core::ffi::c_void,
58010            >(next_ptr) as *const _;
58011        }
58012        self
58013    }
58014}
58015impl<'a> core::ops::Deref for VideoEncodeAV1GopRemainingFrameInfoKHRBuilder<'a> {
58016    type Target = VideoEncodeAV1GopRemainingFrameInfoKHR;
58017    #[inline]
58018    fn deref(&self) -> &Self::Target {
58019        &self.inner
58020    }
58021}
58022impl<'a> core::ops::DerefMut for VideoEncodeAV1GopRemainingFrameInfoKHRBuilder<'a> {
58023    #[inline]
58024    fn deref_mut(&mut self) -> &mut Self::Target {
58025        &mut self.inner
58026    }
58027}
58028///Builder for [`VideoEncodeAV1RateControlLayerInfoKHR`] with lifetime-tied pNext safety.
58029pub struct VideoEncodeAV1RateControlLayerInfoKHRBuilder<'a> {
58030    inner: VideoEncodeAV1RateControlLayerInfoKHR,
58031    _marker: core::marker::PhantomData<&'a ()>,
58032}
58033impl VideoEncodeAV1RateControlLayerInfoKHR {
58034    /// Start building this struct; `s_type` is already set to the correct variant.
58035    #[inline]
58036    pub fn builder<'a>() -> VideoEncodeAV1RateControlLayerInfoKHRBuilder<'a> {
58037        VideoEncodeAV1RateControlLayerInfoKHRBuilder {
58038            inner: VideoEncodeAV1RateControlLayerInfoKHR {
58039                s_type: StructureType::from_raw(1000513007i32),
58040                ..Default::default()
58041            },
58042            _marker: core::marker::PhantomData,
58043        }
58044    }
58045}
58046impl<'a> VideoEncodeAV1RateControlLayerInfoKHRBuilder<'a> {
58047    #[inline]
58048    pub fn use_min_q_index(mut self, value: bool) -> Self {
58049        self.inner.use_min_q_index = value as u32;
58050        self
58051    }
58052    #[inline]
58053    pub fn min_q_index(mut self, value: VideoEncodeAV1QIndexKHR) -> Self {
58054        self.inner.min_q_index = value;
58055        self
58056    }
58057    #[inline]
58058    pub fn use_max_q_index(mut self, value: bool) -> Self {
58059        self.inner.use_max_q_index = value as u32;
58060        self
58061    }
58062    #[inline]
58063    pub fn max_q_index(mut self, value: VideoEncodeAV1QIndexKHR) -> Self {
58064        self.inner.max_q_index = value;
58065        self
58066    }
58067    #[inline]
58068    pub fn use_max_frame_size(mut self, value: bool) -> Self {
58069        self.inner.use_max_frame_size = value as u32;
58070        self
58071    }
58072    #[inline]
58073    pub fn max_frame_size(mut self, value: VideoEncodeAV1FrameSizeKHR) -> Self {
58074        self.inner.max_frame_size = value;
58075        self
58076    }
58077    ///Prepend a struct to the pNext chain. See [`VideoEncodeAV1RateControlLayerInfoKHR`]'s **Extended By** section for valid types.
58078    #[inline]
58079    pub fn push_next<T: ExtendsVideoEncodeAV1RateControlLayerInfoKHR>(
58080        mut self,
58081        next: &'a mut T,
58082    ) -> Self {
58083        unsafe {
58084            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
58085            (*next_ptr).p_next = self.inner.p_next as *mut _;
58086            self.inner.p_next = <*mut BaseOutStructure>::cast::<
58087                core::ffi::c_void,
58088            >(next_ptr) as *const _;
58089        }
58090        self
58091    }
58092}
58093impl<'a> core::ops::Deref for VideoEncodeAV1RateControlLayerInfoKHRBuilder<'a> {
58094    type Target = VideoEncodeAV1RateControlLayerInfoKHR;
58095    #[inline]
58096    fn deref(&self) -> &Self::Target {
58097        &self.inner
58098    }
58099}
58100impl<'a> core::ops::DerefMut for VideoEncodeAV1RateControlLayerInfoKHRBuilder<'a> {
58101    #[inline]
58102    fn deref_mut(&mut self) -> &mut Self::Target {
58103        &mut self.inner
58104    }
58105}
58106///Builder for [`PhysicalDeviceInheritedViewportScissorFeaturesNV`] with lifetime-tied pNext safety.
58107pub struct PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder<'a> {
58108    inner: PhysicalDeviceInheritedViewportScissorFeaturesNV,
58109    _marker: core::marker::PhantomData<&'a ()>,
58110}
58111impl PhysicalDeviceInheritedViewportScissorFeaturesNV {
58112    /// Start building this struct; `s_type` is already set to the correct variant.
58113    #[inline]
58114    pub fn builder<'a>() -> PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder<'a> {
58115        PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder {
58116            inner: PhysicalDeviceInheritedViewportScissorFeaturesNV {
58117                s_type: StructureType::from_raw(1000278000i32),
58118                ..Default::default()
58119            },
58120            _marker: core::marker::PhantomData,
58121        }
58122    }
58123}
58124impl<'a> PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder<'a> {
58125    #[inline]
58126    pub fn inherited_viewport_scissor2_d(mut self, value: bool) -> Self {
58127        self.inner.inherited_viewport_scissor2_d = value as u32;
58128        self
58129    }
58130    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceInheritedViewportScissorFeaturesNV`]'s **Extended By** section for valid types.
58131    #[inline]
58132    pub fn push_next<T: ExtendsPhysicalDeviceInheritedViewportScissorFeaturesNV>(
58133        mut self,
58134        next: &'a mut T,
58135    ) -> Self {
58136        unsafe {
58137            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
58138            (*next_ptr).p_next = self.inner.p_next as *mut _;
58139            self.inner.p_next = <*mut BaseOutStructure>::cast::<
58140                core::ffi::c_void,
58141            >(next_ptr);
58142        }
58143        self
58144    }
58145}
58146impl<'a> core::ops::Deref
58147for PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder<'a> {
58148    type Target = PhysicalDeviceInheritedViewportScissorFeaturesNV;
58149    #[inline]
58150    fn deref(&self) -> &Self::Target {
58151        &self.inner
58152    }
58153}
58154impl<'a> core::ops::DerefMut
58155for PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder<'a> {
58156    #[inline]
58157    fn deref_mut(&mut self) -> &mut Self::Target {
58158        &mut self.inner
58159    }
58160}
58161///Builder for [`CommandBufferInheritanceViewportScissorInfoNV`] with lifetime-tied pNext safety.
58162pub struct CommandBufferInheritanceViewportScissorInfoNVBuilder<'a> {
58163    inner: CommandBufferInheritanceViewportScissorInfoNV,
58164    _marker: core::marker::PhantomData<&'a ()>,
58165}
58166impl CommandBufferInheritanceViewportScissorInfoNV {
58167    /// Start building this struct; `s_type` is already set to the correct variant.
58168    #[inline]
58169    pub fn builder<'a>() -> CommandBufferInheritanceViewportScissorInfoNVBuilder<'a> {
58170        CommandBufferInheritanceViewportScissorInfoNVBuilder {
58171            inner: CommandBufferInheritanceViewportScissorInfoNV {
58172                s_type: StructureType::from_raw(1000278001i32),
58173                ..Default::default()
58174            },
58175            _marker: core::marker::PhantomData,
58176        }
58177    }
58178}
58179impl<'a> CommandBufferInheritanceViewportScissorInfoNVBuilder<'a> {
58180    #[inline]
58181    pub fn viewport_scissor2_d(mut self, value: bool) -> Self {
58182        self.inner.viewport_scissor2_d = value as u32;
58183        self
58184    }
58185    #[inline]
58186    pub fn viewport_depth_count(mut self, value: u32) -> Self {
58187        self.inner.viewport_depth_count = value;
58188        self
58189    }
58190    #[inline]
58191    pub fn viewport_depths(mut self, value: &'a Viewport) -> Self {
58192        self.inner.p_viewport_depths = value;
58193        self
58194    }
58195    ///Prepend a struct to the pNext chain. See [`CommandBufferInheritanceViewportScissorInfoNV`]'s **Extended By** section for valid types.
58196    #[inline]
58197    pub fn push_next<T: ExtendsCommandBufferInheritanceViewportScissorInfoNV>(
58198        mut self,
58199        next: &'a mut T,
58200    ) -> Self {
58201        unsafe {
58202            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
58203            (*next_ptr).p_next = self.inner.p_next as *mut _;
58204            self.inner.p_next = <*mut BaseOutStructure>::cast::<
58205                core::ffi::c_void,
58206            >(next_ptr) as *const _;
58207        }
58208        self
58209    }
58210}
58211impl<'a> core::ops::Deref for CommandBufferInheritanceViewportScissorInfoNVBuilder<'a> {
58212    type Target = CommandBufferInheritanceViewportScissorInfoNV;
58213    #[inline]
58214    fn deref(&self) -> &Self::Target {
58215        &self.inner
58216    }
58217}
58218impl<'a> core::ops::DerefMut
58219for CommandBufferInheritanceViewportScissorInfoNVBuilder<'a> {
58220    #[inline]
58221    fn deref_mut(&mut self) -> &mut Self::Target {
58222        &mut self.inner
58223    }
58224}
58225///Builder for [`PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT`] with lifetime-tied pNext safety.
58226pub struct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder<'a> {
58227    inner: PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT,
58228    _marker: core::marker::PhantomData<&'a ()>,
58229}
58230impl PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
58231    /// Start building this struct; `s_type` is already set to the correct variant.
58232    #[inline]
58233    pub fn builder<'a>() -> PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder<'a> {
58234        PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder {
58235            inner: PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
58236                s_type: StructureType::from_raw(1000330000i32),
58237                ..Default::default()
58238            },
58239            _marker: core::marker::PhantomData,
58240        }
58241    }
58242}
58243impl<'a> PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder<'a> {
58244    #[inline]
58245    pub fn ycbcr2plane444_formats(mut self, value: bool) -> Self {
58246        self.inner.ycbcr2plane444_formats = value as u32;
58247        self
58248    }
58249    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT`]'s **Extended By** section for valid types.
58250    #[inline]
58251    pub fn push_next<T: ExtendsPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>(
58252        mut self,
58253        next: &'a mut T,
58254    ) -> Self {
58255        unsafe {
58256            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
58257            (*next_ptr).p_next = self.inner.p_next as *mut _;
58258            self.inner.p_next = <*mut BaseOutStructure>::cast::<
58259                core::ffi::c_void,
58260            >(next_ptr);
58261        }
58262        self
58263    }
58264}
58265impl<'a> core::ops::Deref for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder<'a> {
58266    type Target = PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
58267    #[inline]
58268    fn deref(&self) -> &Self::Target {
58269        &self.inner
58270    }
58271}
58272impl<'a> core::ops::DerefMut
58273for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder<'a> {
58274    #[inline]
58275    fn deref_mut(&mut self) -> &mut Self::Target {
58276        &mut self.inner
58277    }
58278}
58279///Builder for [`PhysicalDeviceProvokingVertexFeaturesEXT`] with lifetime-tied pNext safety.
58280pub struct PhysicalDeviceProvokingVertexFeaturesEXTBuilder<'a> {
58281    inner: PhysicalDeviceProvokingVertexFeaturesEXT,
58282    _marker: core::marker::PhantomData<&'a ()>,
58283}
58284impl PhysicalDeviceProvokingVertexFeaturesEXT {
58285    /// Start building this struct; `s_type` is already set to the correct variant.
58286    #[inline]
58287    pub fn builder<'a>() -> PhysicalDeviceProvokingVertexFeaturesEXTBuilder<'a> {
58288        PhysicalDeviceProvokingVertexFeaturesEXTBuilder {
58289            inner: PhysicalDeviceProvokingVertexFeaturesEXT {
58290                s_type: StructureType::from_raw(1000254000i32),
58291                ..Default::default()
58292            },
58293            _marker: core::marker::PhantomData,
58294        }
58295    }
58296}
58297impl<'a> PhysicalDeviceProvokingVertexFeaturesEXTBuilder<'a> {
58298    #[inline]
58299    pub fn provoking_vertex_last(mut self, value: bool) -> Self {
58300        self.inner.provoking_vertex_last = value as u32;
58301        self
58302    }
58303    #[inline]
58304    pub fn transform_feedback_preserves_provoking_vertex(mut self, value: bool) -> Self {
58305        self.inner.transform_feedback_preserves_provoking_vertex = value as u32;
58306        self
58307    }
58308    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceProvokingVertexFeaturesEXT`]'s **Extended By** section for valid types.
58309    #[inline]
58310    pub fn push_next<T: ExtendsPhysicalDeviceProvokingVertexFeaturesEXT>(
58311        mut self,
58312        next: &'a mut T,
58313    ) -> Self {
58314        unsafe {
58315            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
58316            (*next_ptr).p_next = self.inner.p_next as *mut _;
58317            self.inner.p_next = <*mut BaseOutStructure>::cast::<
58318                core::ffi::c_void,
58319            >(next_ptr);
58320        }
58321        self
58322    }
58323}
58324impl<'a> core::ops::Deref for PhysicalDeviceProvokingVertexFeaturesEXTBuilder<'a> {
58325    type Target = PhysicalDeviceProvokingVertexFeaturesEXT;
58326    #[inline]
58327    fn deref(&self) -> &Self::Target {
58328        &self.inner
58329    }
58330}
58331impl<'a> core::ops::DerefMut for PhysicalDeviceProvokingVertexFeaturesEXTBuilder<'a> {
58332    #[inline]
58333    fn deref_mut(&mut self) -> &mut Self::Target {
58334        &mut self.inner
58335    }
58336}
58337///Builder for [`PhysicalDeviceProvokingVertexPropertiesEXT`] with lifetime-tied pNext safety.
58338pub struct PhysicalDeviceProvokingVertexPropertiesEXTBuilder<'a> {
58339    inner: PhysicalDeviceProvokingVertexPropertiesEXT,
58340    _marker: core::marker::PhantomData<&'a ()>,
58341}
58342impl PhysicalDeviceProvokingVertexPropertiesEXT {
58343    /// Start building this struct; `s_type` is already set to the correct variant.
58344    #[inline]
58345    pub fn builder<'a>() -> PhysicalDeviceProvokingVertexPropertiesEXTBuilder<'a> {
58346        PhysicalDeviceProvokingVertexPropertiesEXTBuilder {
58347            inner: PhysicalDeviceProvokingVertexPropertiesEXT {
58348                s_type: StructureType::from_raw(1000254002i32),
58349                ..Default::default()
58350            },
58351            _marker: core::marker::PhantomData,
58352        }
58353    }
58354}
58355impl<'a> PhysicalDeviceProvokingVertexPropertiesEXTBuilder<'a> {
58356    #[inline]
58357    pub fn provoking_vertex_mode_per_pipeline(mut self, value: bool) -> Self {
58358        self.inner.provoking_vertex_mode_per_pipeline = value as u32;
58359        self
58360    }
58361    #[inline]
58362    pub fn transform_feedback_preserves_triangle_fan_provoking_vertex(
58363        mut self,
58364        value: bool,
58365    ) -> Self {
58366        self.inner.transform_feedback_preserves_triangle_fan_provoking_vertex = value
58367            as u32;
58368        self
58369    }
58370}
58371impl<'a> core::ops::Deref for PhysicalDeviceProvokingVertexPropertiesEXTBuilder<'a> {
58372    type Target = PhysicalDeviceProvokingVertexPropertiesEXT;
58373    #[inline]
58374    fn deref(&self) -> &Self::Target {
58375        &self.inner
58376    }
58377}
58378impl<'a> core::ops::DerefMut for PhysicalDeviceProvokingVertexPropertiesEXTBuilder<'a> {
58379    #[inline]
58380    fn deref_mut(&mut self) -> &mut Self::Target {
58381        &mut self.inner
58382    }
58383}
58384///Builder for [`PipelineRasterizationProvokingVertexStateCreateInfoEXT`] with lifetime-tied pNext safety.
58385pub struct PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder<'a> {
58386    inner: PipelineRasterizationProvokingVertexStateCreateInfoEXT,
58387    _marker: core::marker::PhantomData<&'a ()>,
58388}
58389impl PipelineRasterizationProvokingVertexStateCreateInfoEXT {
58390    /// Start building this struct; `s_type` is already set to the correct variant.
58391    #[inline]
58392    pub fn builder<'a>() -> PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder<
58393        'a,
58394    > {
58395        PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder {
58396            inner: PipelineRasterizationProvokingVertexStateCreateInfoEXT {
58397                s_type: StructureType::from_raw(1000254001i32),
58398                ..Default::default()
58399            },
58400            _marker: core::marker::PhantomData,
58401        }
58402    }
58403}
58404impl<'a> PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder<'a> {
58405    #[inline]
58406    pub fn provoking_vertex_mode(mut self, value: ProvokingVertexModeEXT) -> Self {
58407        self.inner.provoking_vertex_mode = value;
58408        self
58409    }
58410    ///Prepend a struct to the pNext chain. See [`PipelineRasterizationProvokingVertexStateCreateInfoEXT`]'s **Extended By** section for valid types.
58411    #[inline]
58412    pub fn push_next<T: ExtendsPipelineRasterizationProvokingVertexStateCreateInfoEXT>(
58413        mut self,
58414        next: &'a mut T,
58415    ) -> Self {
58416        unsafe {
58417            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
58418            (*next_ptr).p_next = self.inner.p_next as *mut _;
58419            self.inner.p_next = <*mut BaseOutStructure>::cast::<
58420                core::ffi::c_void,
58421            >(next_ptr) as *const _;
58422        }
58423        self
58424    }
58425}
58426impl<'a> core::ops::Deref
58427for PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder<'a> {
58428    type Target = PipelineRasterizationProvokingVertexStateCreateInfoEXT;
58429    #[inline]
58430    fn deref(&self) -> &Self::Target {
58431        &self.inner
58432    }
58433}
58434impl<'a> core::ops::DerefMut
58435for PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder<'a> {
58436    #[inline]
58437    fn deref_mut(&mut self) -> &mut Self::Target {
58438        &mut self.inner
58439    }
58440}
58441///Builder for [`VideoEncodeIntraRefreshCapabilitiesKHR`] with lifetime-tied pNext safety.
58442pub struct VideoEncodeIntraRefreshCapabilitiesKHRBuilder<'a> {
58443    inner: VideoEncodeIntraRefreshCapabilitiesKHR,
58444    _marker: core::marker::PhantomData<&'a ()>,
58445}
58446impl VideoEncodeIntraRefreshCapabilitiesKHR {
58447    /// Start building this struct; `s_type` is already set to the correct variant.
58448    #[inline]
58449    pub fn builder<'a>() -> VideoEncodeIntraRefreshCapabilitiesKHRBuilder<'a> {
58450        VideoEncodeIntraRefreshCapabilitiesKHRBuilder {
58451            inner: VideoEncodeIntraRefreshCapabilitiesKHR {
58452                s_type: StructureType::from_raw(1000552000i32),
58453                ..Default::default()
58454            },
58455            _marker: core::marker::PhantomData,
58456        }
58457    }
58458}
58459impl<'a> VideoEncodeIntraRefreshCapabilitiesKHRBuilder<'a> {
58460    #[inline]
58461    pub fn intra_refresh_modes(
58462        mut self,
58463        value: VideoEncodeIntraRefreshModeFlagsKHR,
58464    ) -> Self {
58465        self.inner.intra_refresh_modes = value;
58466        self
58467    }
58468    #[inline]
58469    pub fn max_intra_refresh_cycle_duration(mut self, value: u32) -> Self {
58470        self.inner.max_intra_refresh_cycle_duration = value;
58471        self
58472    }
58473    #[inline]
58474    pub fn max_intra_refresh_active_reference_pictures(mut self, value: u32) -> Self {
58475        self.inner.max_intra_refresh_active_reference_pictures = value;
58476        self
58477    }
58478    #[inline]
58479    pub fn partition_independent_intra_refresh_regions(mut self, value: bool) -> Self {
58480        self.inner.partition_independent_intra_refresh_regions = value as u32;
58481        self
58482    }
58483    #[inline]
58484    pub fn non_rectangular_intra_refresh_regions(mut self, value: bool) -> Self {
58485        self.inner.non_rectangular_intra_refresh_regions = value as u32;
58486        self
58487    }
58488}
58489impl<'a> core::ops::Deref for VideoEncodeIntraRefreshCapabilitiesKHRBuilder<'a> {
58490    type Target = VideoEncodeIntraRefreshCapabilitiesKHR;
58491    #[inline]
58492    fn deref(&self) -> &Self::Target {
58493        &self.inner
58494    }
58495}
58496impl<'a> core::ops::DerefMut for VideoEncodeIntraRefreshCapabilitiesKHRBuilder<'a> {
58497    #[inline]
58498    fn deref_mut(&mut self) -> &mut Self::Target {
58499        &mut self.inner
58500    }
58501}
58502///Builder for [`VideoEncodeSessionIntraRefreshCreateInfoKHR`] with lifetime-tied pNext safety.
58503pub struct VideoEncodeSessionIntraRefreshCreateInfoKHRBuilder<'a> {
58504    inner: VideoEncodeSessionIntraRefreshCreateInfoKHR,
58505    _marker: core::marker::PhantomData<&'a ()>,
58506}
58507impl VideoEncodeSessionIntraRefreshCreateInfoKHR {
58508    /// Start building this struct; `s_type` is already set to the correct variant.
58509    #[inline]
58510    pub fn builder<'a>() -> VideoEncodeSessionIntraRefreshCreateInfoKHRBuilder<'a> {
58511        VideoEncodeSessionIntraRefreshCreateInfoKHRBuilder {
58512            inner: VideoEncodeSessionIntraRefreshCreateInfoKHR {
58513                s_type: StructureType::from_raw(1000552001i32),
58514                ..Default::default()
58515            },
58516            _marker: core::marker::PhantomData,
58517        }
58518    }
58519}
58520impl<'a> VideoEncodeSessionIntraRefreshCreateInfoKHRBuilder<'a> {
58521    #[inline]
58522    pub fn intra_refresh_mode(
58523        mut self,
58524        value: VideoEncodeIntraRefreshModeFlagBitsKHR,
58525    ) -> Self {
58526        self.inner.intra_refresh_mode = value;
58527        self
58528    }
58529    ///Prepend a struct to the pNext chain. See [`VideoEncodeSessionIntraRefreshCreateInfoKHR`]'s **Extended By** section for valid types.
58530    #[inline]
58531    pub fn push_next<T: ExtendsVideoEncodeSessionIntraRefreshCreateInfoKHR>(
58532        mut self,
58533        next: &'a mut T,
58534    ) -> Self {
58535        unsafe {
58536            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
58537            (*next_ptr).p_next = self.inner.p_next as *mut _;
58538            self.inner.p_next = <*mut BaseOutStructure>::cast::<
58539                core::ffi::c_void,
58540            >(next_ptr) as *const _;
58541        }
58542        self
58543    }
58544}
58545impl<'a> core::ops::Deref for VideoEncodeSessionIntraRefreshCreateInfoKHRBuilder<'a> {
58546    type Target = VideoEncodeSessionIntraRefreshCreateInfoKHR;
58547    #[inline]
58548    fn deref(&self) -> &Self::Target {
58549        &self.inner
58550    }
58551}
58552impl<'a> core::ops::DerefMut for VideoEncodeSessionIntraRefreshCreateInfoKHRBuilder<'a> {
58553    #[inline]
58554    fn deref_mut(&mut self) -> &mut Self::Target {
58555        &mut self.inner
58556    }
58557}
58558///Builder for [`VideoEncodeIntraRefreshInfoKHR`] with lifetime-tied pNext safety.
58559pub struct VideoEncodeIntraRefreshInfoKHRBuilder<'a> {
58560    inner: VideoEncodeIntraRefreshInfoKHR,
58561    _marker: core::marker::PhantomData<&'a ()>,
58562}
58563impl VideoEncodeIntraRefreshInfoKHR {
58564    /// Start building this struct; `s_type` is already set to the correct variant.
58565    #[inline]
58566    pub fn builder<'a>() -> VideoEncodeIntraRefreshInfoKHRBuilder<'a> {
58567        VideoEncodeIntraRefreshInfoKHRBuilder {
58568            inner: VideoEncodeIntraRefreshInfoKHR {
58569                s_type: StructureType::from_raw(1000552002i32),
58570                ..Default::default()
58571            },
58572            _marker: core::marker::PhantomData,
58573        }
58574    }
58575}
58576impl<'a> VideoEncodeIntraRefreshInfoKHRBuilder<'a> {
58577    #[inline]
58578    pub fn intra_refresh_cycle_duration(mut self, value: u32) -> Self {
58579        self.inner.intra_refresh_cycle_duration = value;
58580        self
58581    }
58582    #[inline]
58583    pub fn intra_refresh_index(mut self, value: u32) -> Self {
58584        self.inner.intra_refresh_index = value;
58585        self
58586    }
58587    ///Prepend a struct to the pNext chain. See [`VideoEncodeIntraRefreshInfoKHR`]'s **Extended By** section for valid types.
58588    #[inline]
58589    pub fn push_next<T: ExtendsVideoEncodeIntraRefreshInfoKHR>(
58590        mut self,
58591        next: &'a mut T,
58592    ) -> Self {
58593        unsafe {
58594            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
58595            (*next_ptr).p_next = self.inner.p_next as *mut _;
58596            self.inner.p_next = <*mut BaseOutStructure>::cast::<
58597                core::ffi::c_void,
58598            >(next_ptr) as *const _;
58599        }
58600        self
58601    }
58602}
58603impl<'a> core::ops::Deref for VideoEncodeIntraRefreshInfoKHRBuilder<'a> {
58604    type Target = VideoEncodeIntraRefreshInfoKHR;
58605    #[inline]
58606    fn deref(&self) -> &Self::Target {
58607        &self.inner
58608    }
58609}
58610impl<'a> core::ops::DerefMut for VideoEncodeIntraRefreshInfoKHRBuilder<'a> {
58611    #[inline]
58612    fn deref_mut(&mut self) -> &mut Self::Target {
58613        &mut self.inner
58614    }
58615}
58616///Builder for [`VideoReferenceIntraRefreshInfoKHR`] with lifetime-tied pNext safety.
58617pub struct VideoReferenceIntraRefreshInfoKHRBuilder<'a> {
58618    inner: VideoReferenceIntraRefreshInfoKHR,
58619    _marker: core::marker::PhantomData<&'a ()>,
58620}
58621impl VideoReferenceIntraRefreshInfoKHR {
58622    /// Start building this struct; `s_type` is already set to the correct variant.
58623    #[inline]
58624    pub fn builder<'a>() -> VideoReferenceIntraRefreshInfoKHRBuilder<'a> {
58625        VideoReferenceIntraRefreshInfoKHRBuilder {
58626            inner: VideoReferenceIntraRefreshInfoKHR {
58627                s_type: StructureType::from_raw(1000552003i32),
58628                ..Default::default()
58629            },
58630            _marker: core::marker::PhantomData,
58631        }
58632    }
58633}
58634impl<'a> VideoReferenceIntraRefreshInfoKHRBuilder<'a> {
58635    #[inline]
58636    pub fn dirty_intra_refresh_regions(mut self, value: u32) -> Self {
58637        self.inner.dirty_intra_refresh_regions = value;
58638        self
58639    }
58640    ///Prepend a struct to the pNext chain. See [`VideoReferenceIntraRefreshInfoKHR`]'s **Extended By** section for valid types.
58641    #[inline]
58642    pub fn push_next<T: ExtendsVideoReferenceIntraRefreshInfoKHR>(
58643        mut self,
58644        next: &'a mut T,
58645    ) -> Self {
58646        unsafe {
58647            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
58648            (*next_ptr).p_next = self.inner.p_next as *mut _;
58649            self.inner.p_next = <*mut BaseOutStructure>::cast::<
58650                core::ffi::c_void,
58651            >(next_ptr) as *const _;
58652        }
58653        self
58654    }
58655}
58656impl<'a> core::ops::Deref for VideoReferenceIntraRefreshInfoKHRBuilder<'a> {
58657    type Target = VideoReferenceIntraRefreshInfoKHR;
58658    #[inline]
58659    fn deref(&self) -> &Self::Target {
58660        &self.inner
58661    }
58662}
58663impl<'a> core::ops::DerefMut for VideoReferenceIntraRefreshInfoKHRBuilder<'a> {
58664    #[inline]
58665    fn deref_mut(&mut self) -> &mut Self::Target {
58666        &mut self.inner
58667    }
58668}
58669///Builder for [`PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR`] with lifetime-tied pNext safety.
58670pub struct PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHRBuilder<'a> {
58671    inner: PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR,
58672    _marker: core::marker::PhantomData<&'a ()>,
58673}
58674impl PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {
58675    /// Start building this struct; `s_type` is already set to the correct variant.
58676    #[inline]
58677    pub fn builder<'a>() -> PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHRBuilder<'a> {
58678        PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHRBuilder {
58679            inner: PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {
58680                s_type: StructureType::from_raw(1000552004i32),
58681                ..Default::default()
58682            },
58683            _marker: core::marker::PhantomData,
58684        }
58685    }
58686}
58687impl<'a> PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHRBuilder<'a> {
58688    #[inline]
58689    pub fn video_encode_intra_refresh(mut self, value: bool) -> Self {
58690        self.inner.video_encode_intra_refresh = value as u32;
58691        self
58692    }
58693    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR`]'s **Extended By** section for valid types.
58694    #[inline]
58695    pub fn push_next<T: ExtendsPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR>(
58696        mut self,
58697        next: &'a mut T,
58698    ) -> Self {
58699        unsafe {
58700            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
58701            (*next_ptr).p_next = self.inner.p_next as *mut _;
58702            self.inner.p_next = <*mut BaseOutStructure>::cast::<
58703                core::ffi::c_void,
58704            >(next_ptr);
58705        }
58706        self
58707    }
58708}
58709impl<'a> core::ops::Deref
58710for PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHRBuilder<'a> {
58711    type Target = PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR;
58712    #[inline]
58713    fn deref(&self) -> &Self::Target {
58714        &self.inner
58715    }
58716}
58717impl<'a> core::ops::DerefMut
58718for PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHRBuilder<'a> {
58719    #[inline]
58720    fn deref_mut(&mut self) -> &mut Self::Target {
58721        &mut self.inner
58722    }
58723}
58724///Builder for [`CuModuleCreateInfoNVX`] with lifetime-tied pNext safety.
58725pub struct CuModuleCreateInfoNVXBuilder<'a> {
58726    inner: CuModuleCreateInfoNVX,
58727    _marker: core::marker::PhantomData<&'a ()>,
58728}
58729impl CuModuleCreateInfoNVX {
58730    /// Start building this struct; `s_type` is already set to the correct variant.
58731    #[inline]
58732    pub fn builder<'a>() -> CuModuleCreateInfoNVXBuilder<'a> {
58733        CuModuleCreateInfoNVXBuilder {
58734            inner: CuModuleCreateInfoNVX {
58735                s_type: StructureType::from_raw(1000029000i32),
58736                ..Default::default()
58737            },
58738            _marker: core::marker::PhantomData,
58739        }
58740    }
58741}
58742impl<'a> CuModuleCreateInfoNVXBuilder<'a> {
58743    #[inline]
58744    pub fn data(mut self, slice: &'a [core::ffi::c_void]) -> Self {
58745        self.inner.data_size = slice.len();
58746        self.inner.p_data = slice.as_ptr();
58747        self
58748    }
58749    ///Prepend a struct to the pNext chain. See [`CuModuleCreateInfoNVX`]'s **Extended By** section for valid types.
58750    #[inline]
58751    pub fn push_next<T: ExtendsCuModuleCreateInfoNVX>(
58752        mut self,
58753        next: &'a mut T,
58754    ) -> Self {
58755        unsafe {
58756            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
58757            (*next_ptr).p_next = self.inner.p_next as *mut _;
58758            self.inner.p_next = <*mut BaseOutStructure>::cast::<
58759                core::ffi::c_void,
58760            >(next_ptr) as *const _;
58761        }
58762        self
58763    }
58764}
58765impl<'a> core::ops::Deref for CuModuleCreateInfoNVXBuilder<'a> {
58766    type Target = CuModuleCreateInfoNVX;
58767    #[inline]
58768    fn deref(&self) -> &Self::Target {
58769        &self.inner
58770    }
58771}
58772impl<'a> core::ops::DerefMut for CuModuleCreateInfoNVXBuilder<'a> {
58773    #[inline]
58774    fn deref_mut(&mut self) -> &mut Self::Target {
58775        &mut self.inner
58776    }
58777}
58778///Builder for [`CuModuleTexturingModeCreateInfoNVX`] with lifetime-tied pNext safety.
58779pub struct CuModuleTexturingModeCreateInfoNVXBuilder<'a> {
58780    inner: CuModuleTexturingModeCreateInfoNVX,
58781    _marker: core::marker::PhantomData<&'a ()>,
58782}
58783impl CuModuleTexturingModeCreateInfoNVX {
58784    /// Start building this struct; `s_type` is already set to the correct variant.
58785    #[inline]
58786    pub fn builder<'a>() -> CuModuleTexturingModeCreateInfoNVXBuilder<'a> {
58787        CuModuleTexturingModeCreateInfoNVXBuilder {
58788            inner: CuModuleTexturingModeCreateInfoNVX {
58789                s_type: StructureType::from_raw(1000029004i32),
58790                ..Default::default()
58791            },
58792            _marker: core::marker::PhantomData,
58793        }
58794    }
58795}
58796impl<'a> CuModuleTexturingModeCreateInfoNVXBuilder<'a> {
58797    #[inline]
58798    pub fn use64bit_texturing(mut self, value: bool) -> Self {
58799        self.inner.use64bit_texturing = value as u32;
58800        self
58801    }
58802    ///Prepend a struct to the pNext chain. See [`CuModuleTexturingModeCreateInfoNVX`]'s **Extended By** section for valid types.
58803    #[inline]
58804    pub fn push_next<T: ExtendsCuModuleTexturingModeCreateInfoNVX>(
58805        mut self,
58806        next: &'a mut T,
58807    ) -> Self {
58808        unsafe {
58809            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
58810            (*next_ptr).p_next = self.inner.p_next as *mut _;
58811            self.inner.p_next = <*mut BaseOutStructure>::cast::<
58812                core::ffi::c_void,
58813            >(next_ptr) as *const _;
58814        }
58815        self
58816    }
58817}
58818impl<'a> core::ops::Deref for CuModuleTexturingModeCreateInfoNVXBuilder<'a> {
58819    type Target = CuModuleTexturingModeCreateInfoNVX;
58820    #[inline]
58821    fn deref(&self) -> &Self::Target {
58822        &self.inner
58823    }
58824}
58825impl<'a> core::ops::DerefMut for CuModuleTexturingModeCreateInfoNVXBuilder<'a> {
58826    #[inline]
58827    fn deref_mut(&mut self) -> &mut Self::Target {
58828        &mut self.inner
58829    }
58830}
58831///Builder for [`CuFunctionCreateInfoNVX`] with lifetime-tied pNext safety.
58832pub struct CuFunctionCreateInfoNVXBuilder<'a> {
58833    inner: CuFunctionCreateInfoNVX,
58834    _marker: core::marker::PhantomData<&'a ()>,
58835}
58836impl CuFunctionCreateInfoNVX {
58837    /// Start building this struct; `s_type` is already set to the correct variant.
58838    #[inline]
58839    pub fn builder<'a>() -> CuFunctionCreateInfoNVXBuilder<'a> {
58840        CuFunctionCreateInfoNVXBuilder {
58841            inner: CuFunctionCreateInfoNVX {
58842                s_type: StructureType::from_raw(1000029001i32),
58843                ..Default::default()
58844            },
58845            _marker: core::marker::PhantomData,
58846        }
58847    }
58848}
58849impl<'a> CuFunctionCreateInfoNVXBuilder<'a> {
58850    #[inline]
58851    pub fn module(mut self, value: CuModuleNVX) -> Self {
58852        self.inner.module = value;
58853        self
58854    }
58855    #[inline]
58856    pub fn name(mut self, value: &'a core::ffi::CStr) -> Self {
58857        self.inner.p_name = value.as_ptr();
58858        self
58859    }
58860    ///Prepend a struct to the pNext chain. See [`CuFunctionCreateInfoNVX`]'s **Extended By** section for valid types.
58861    #[inline]
58862    pub fn push_next<T: ExtendsCuFunctionCreateInfoNVX>(
58863        mut self,
58864        next: &'a mut T,
58865    ) -> Self {
58866        unsafe {
58867            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
58868            (*next_ptr).p_next = self.inner.p_next as *mut _;
58869            self.inner.p_next = <*mut BaseOutStructure>::cast::<
58870                core::ffi::c_void,
58871            >(next_ptr) as *const _;
58872        }
58873        self
58874    }
58875}
58876impl<'a> core::ops::Deref for CuFunctionCreateInfoNVXBuilder<'a> {
58877    type Target = CuFunctionCreateInfoNVX;
58878    #[inline]
58879    fn deref(&self) -> &Self::Target {
58880        &self.inner
58881    }
58882}
58883impl<'a> core::ops::DerefMut for CuFunctionCreateInfoNVXBuilder<'a> {
58884    #[inline]
58885    fn deref_mut(&mut self) -> &mut Self::Target {
58886        &mut self.inner
58887    }
58888}
58889///Builder for [`CuLaunchInfoNVX`] with lifetime-tied pNext safety.
58890pub struct CuLaunchInfoNVXBuilder<'a> {
58891    inner: CuLaunchInfoNVX,
58892    _marker: core::marker::PhantomData<&'a ()>,
58893}
58894impl CuLaunchInfoNVX {
58895    /// Start building this struct; `s_type` is already set to the correct variant.
58896    #[inline]
58897    pub fn builder<'a>() -> CuLaunchInfoNVXBuilder<'a> {
58898        CuLaunchInfoNVXBuilder {
58899            inner: CuLaunchInfoNVX {
58900                s_type: StructureType::from_raw(1000029002i32),
58901                ..Default::default()
58902            },
58903            _marker: core::marker::PhantomData,
58904        }
58905    }
58906}
58907impl<'a> CuLaunchInfoNVXBuilder<'a> {
58908    #[inline]
58909    pub fn function(mut self, value: CuFunctionNVX) -> Self {
58910        self.inner.function = value;
58911        self
58912    }
58913    #[inline]
58914    pub fn grid_dim_x(mut self, value: u32) -> Self {
58915        self.inner.grid_dim_x = value;
58916        self
58917    }
58918    #[inline]
58919    pub fn grid_dim_y(mut self, value: u32) -> Self {
58920        self.inner.grid_dim_y = value;
58921        self
58922    }
58923    #[inline]
58924    pub fn grid_dim_z(mut self, value: u32) -> Self {
58925        self.inner.grid_dim_z = value;
58926        self
58927    }
58928    #[inline]
58929    pub fn block_dim_x(mut self, value: u32) -> Self {
58930        self.inner.block_dim_x = value;
58931        self
58932    }
58933    #[inline]
58934    pub fn block_dim_y(mut self, value: u32) -> Self {
58935        self.inner.block_dim_y = value;
58936        self
58937    }
58938    #[inline]
58939    pub fn block_dim_z(mut self, value: u32) -> Self {
58940        self.inner.block_dim_z = value;
58941        self
58942    }
58943    #[inline]
58944    pub fn shared_mem_bytes(mut self, value: u32) -> Self {
58945        self.inner.shared_mem_bytes = value;
58946        self
58947    }
58948    #[inline]
58949    pub fn param_count(mut self, value: usize) -> Self {
58950        self.inner.param_count = value;
58951        self
58952    }
58953    #[inline]
58954    pub fn params(mut self, value: *const *const core::ffi::c_void) -> Self {
58955        self.inner.p_params = value;
58956        self
58957    }
58958    #[inline]
58959    pub fn extra_count(mut self, value: usize) -> Self {
58960        self.inner.extra_count = value;
58961        self
58962    }
58963    #[inline]
58964    pub fn extras(mut self, value: *const *const core::ffi::c_void) -> Self {
58965        self.inner.p_extras = value;
58966        self
58967    }
58968    ///Prepend a struct to the pNext chain. See [`CuLaunchInfoNVX`]'s **Extended By** section for valid types.
58969    #[inline]
58970    pub fn push_next<T: ExtendsCuLaunchInfoNVX>(mut self, next: &'a mut T) -> Self {
58971        unsafe {
58972            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
58973            (*next_ptr).p_next = self.inner.p_next as *mut _;
58974            self.inner.p_next = <*mut BaseOutStructure>::cast::<
58975                core::ffi::c_void,
58976            >(next_ptr) as *const _;
58977        }
58978        self
58979    }
58980}
58981impl<'a> core::ops::Deref for CuLaunchInfoNVXBuilder<'a> {
58982    type Target = CuLaunchInfoNVX;
58983    #[inline]
58984    fn deref(&self) -> &Self::Target {
58985        &self.inner
58986    }
58987}
58988impl<'a> core::ops::DerefMut for CuLaunchInfoNVXBuilder<'a> {
58989    #[inline]
58990    fn deref_mut(&mut self) -> &mut Self::Target {
58991        &mut self.inner
58992    }
58993}
58994///Builder for [`PhysicalDeviceDescriptorBufferFeaturesEXT`] with lifetime-tied pNext safety.
58995pub struct PhysicalDeviceDescriptorBufferFeaturesEXTBuilder<'a> {
58996    inner: PhysicalDeviceDescriptorBufferFeaturesEXT,
58997    _marker: core::marker::PhantomData<&'a ()>,
58998}
58999impl PhysicalDeviceDescriptorBufferFeaturesEXT {
59000    /// Start building this struct; `s_type` is already set to the correct variant.
59001    #[inline]
59002    pub fn builder<'a>() -> PhysicalDeviceDescriptorBufferFeaturesEXTBuilder<'a> {
59003        PhysicalDeviceDescriptorBufferFeaturesEXTBuilder {
59004            inner: PhysicalDeviceDescriptorBufferFeaturesEXT {
59005                s_type: StructureType::from_raw(1000316002i32),
59006                ..Default::default()
59007            },
59008            _marker: core::marker::PhantomData,
59009        }
59010    }
59011}
59012impl<'a> PhysicalDeviceDescriptorBufferFeaturesEXTBuilder<'a> {
59013    #[inline]
59014    pub fn descriptor_buffer(mut self, value: bool) -> Self {
59015        self.inner.descriptor_buffer = value as u32;
59016        self
59017    }
59018    #[inline]
59019    pub fn descriptor_buffer_capture_replay(mut self, value: bool) -> Self {
59020        self.inner.descriptor_buffer_capture_replay = value as u32;
59021        self
59022    }
59023    #[inline]
59024    pub fn descriptor_buffer_image_layout_ignored(mut self, value: bool) -> Self {
59025        self.inner.descriptor_buffer_image_layout_ignored = value as u32;
59026        self
59027    }
59028    #[inline]
59029    pub fn descriptor_buffer_push_descriptors(mut self, value: bool) -> Self {
59030        self.inner.descriptor_buffer_push_descriptors = value as u32;
59031        self
59032    }
59033    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDescriptorBufferFeaturesEXT`]'s **Extended By** section for valid types.
59034    #[inline]
59035    pub fn push_next<T: ExtendsPhysicalDeviceDescriptorBufferFeaturesEXT>(
59036        mut self,
59037        next: &'a mut T,
59038    ) -> Self {
59039        unsafe {
59040            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
59041            (*next_ptr).p_next = self.inner.p_next as *mut _;
59042            self.inner.p_next = <*mut BaseOutStructure>::cast::<
59043                core::ffi::c_void,
59044            >(next_ptr);
59045        }
59046        self
59047    }
59048}
59049impl<'a> core::ops::Deref for PhysicalDeviceDescriptorBufferFeaturesEXTBuilder<'a> {
59050    type Target = PhysicalDeviceDescriptorBufferFeaturesEXT;
59051    #[inline]
59052    fn deref(&self) -> &Self::Target {
59053        &self.inner
59054    }
59055}
59056impl<'a> core::ops::DerefMut for PhysicalDeviceDescriptorBufferFeaturesEXTBuilder<'a> {
59057    #[inline]
59058    fn deref_mut(&mut self) -> &mut Self::Target {
59059        &mut self.inner
59060    }
59061}
59062///Builder for [`PhysicalDeviceDescriptorBufferPropertiesEXT`] with lifetime-tied pNext safety.
59063pub struct PhysicalDeviceDescriptorBufferPropertiesEXTBuilder<'a> {
59064    inner: PhysicalDeviceDescriptorBufferPropertiesEXT,
59065    _marker: core::marker::PhantomData<&'a ()>,
59066}
59067impl PhysicalDeviceDescriptorBufferPropertiesEXT {
59068    /// Start building this struct; `s_type` is already set to the correct variant.
59069    #[inline]
59070    pub fn builder<'a>() -> PhysicalDeviceDescriptorBufferPropertiesEXTBuilder<'a> {
59071        PhysicalDeviceDescriptorBufferPropertiesEXTBuilder {
59072            inner: PhysicalDeviceDescriptorBufferPropertiesEXT {
59073                s_type: StructureType::from_raw(1000316000i32),
59074                ..Default::default()
59075            },
59076            _marker: core::marker::PhantomData,
59077        }
59078    }
59079}
59080impl<'a> PhysicalDeviceDescriptorBufferPropertiesEXTBuilder<'a> {
59081    #[inline]
59082    pub fn combined_image_sampler_descriptor_single_array(
59083        mut self,
59084        value: bool,
59085    ) -> Self {
59086        self.inner.combined_image_sampler_descriptor_single_array = value as u32;
59087        self
59088    }
59089    #[inline]
59090    pub fn bufferless_push_descriptors(mut self, value: bool) -> Self {
59091        self.inner.bufferless_push_descriptors = value as u32;
59092        self
59093    }
59094    #[inline]
59095    pub fn allow_sampler_image_view_post_submit_creation(mut self, value: bool) -> Self {
59096        self.inner.allow_sampler_image_view_post_submit_creation = value as u32;
59097        self
59098    }
59099    #[inline]
59100    pub fn descriptor_buffer_offset_alignment(mut self, value: u64) -> Self {
59101        self.inner.descriptor_buffer_offset_alignment = value;
59102        self
59103    }
59104    #[inline]
59105    pub fn max_descriptor_buffer_bindings(mut self, value: u32) -> Self {
59106        self.inner.max_descriptor_buffer_bindings = value;
59107        self
59108    }
59109    #[inline]
59110    pub fn max_resource_descriptor_buffer_bindings(mut self, value: u32) -> Self {
59111        self.inner.max_resource_descriptor_buffer_bindings = value;
59112        self
59113    }
59114    #[inline]
59115    pub fn max_sampler_descriptor_buffer_bindings(mut self, value: u32) -> Self {
59116        self.inner.max_sampler_descriptor_buffer_bindings = value;
59117        self
59118    }
59119    #[inline]
59120    pub fn max_embedded_immutable_sampler_bindings(mut self, value: u32) -> Self {
59121        self.inner.max_embedded_immutable_sampler_bindings = value;
59122        self
59123    }
59124    #[inline]
59125    pub fn max_embedded_immutable_samplers(mut self, value: u32) -> Self {
59126        self.inner.max_embedded_immutable_samplers = value;
59127        self
59128    }
59129    #[inline]
59130    pub fn buffer_capture_replay_descriptor_data_size(mut self, value: usize) -> Self {
59131        self.inner.buffer_capture_replay_descriptor_data_size = value;
59132        self
59133    }
59134    #[inline]
59135    pub fn image_capture_replay_descriptor_data_size(mut self, value: usize) -> Self {
59136        self.inner.image_capture_replay_descriptor_data_size = value;
59137        self
59138    }
59139    #[inline]
59140    pub fn image_view_capture_replay_descriptor_data_size(
59141        mut self,
59142        value: usize,
59143    ) -> Self {
59144        self.inner.image_view_capture_replay_descriptor_data_size = value;
59145        self
59146    }
59147    #[inline]
59148    pub fn sampler_capture_replay_descriptor_data_size(mut self, value: usize) -> Self {
59149        self.inner.sampler_capture_replay_descriptor_data_size = value;
59150        self
59151    }
59152    #[inline]
59153    pub fn acceleration_structure_capture_replay_descriptor_data_size(
59154        mut self,
59155        value: usize,
59156    ) -> Self {
59157        self.inner.acceleration_structure_capture_replay_descriptor_data_size = value;
59158        self
59159    }
59160    #[inline]
59161    pub fn sampler_descriptor_size(mut self, value: usize) -> Self {
59162        self.inner.sampler_descriptor_size = value;
59163        self
59164    }
59165    #[inline]
59166    pub fn combined_image_sampler_descriptor_size(mut self, value: usize) -> Self {
59167        self.inner.combined_image_sampler_descriptor_size = value;
59168        self
59169    }
59170    #[inline]
59171    pub fn sampled_image_descriptor_size(mut self, value: usize) -> Self {
59172        self.inner.sampled_image_descriptor_size = value;
59173        self
59174    }
59175    #[inline]
59176    pub fn storage_image_descriptor_size(mut self, value: usize) -> Self {
59177        self.inner.storage_image_descriptor_size = value;
59178        self
59179    }
59180    #[inline]
59181    pub fn uniform_texel_buffer_descriptor_size(mut self, value: usize) -> Self {
59182        self.inner.uniform_texel_buffer_descriptor_size = value;
59183        self
59184    }
59185    #[inline]
59186    pub fn robust_uniform_texel_buffer_descriptor_size(mut self, value: usize) -> Self {
59187        self.inner.robust_uniform_texel_buffer_descriptor_size = value;
59188        self
59189    }
59190    #[inline]
59191    pub fn storage_texel_buffer_descriptor_size(mut self, value: usize) -> Self {
59192        self.inner.storage_texel_buffer_descriptor_size = value;
59193        self
59194    }
59195    #[inline]
59196    pub fn robust_storage_texel_buffer_descriptor_size(mut self, value: usize) -> Self {
59197        self.inner.robust_storage_texel_buffer_descriptor_size = value;
59198        self
59199    }
59200    #[inline]
59201    pub fn uniform_buffer_descriptor_size(mut self, value: usize) -> Self {
59202        self.inner.uniform_buffer_descriptor_size = value;
59203        self
59204    }
59205    #[inline]
59206    pub fn robust_uniform_buffer_descriptor_size(mut self, value: usize) -> Self {
59207        self.inner.robust_uniform_buffer_descriptor_size = value;
59208        self
59209    }
59210    #[inline]
59211    pub fn storage_buffer_descriptor_size(mut self, value: usize) -> Self {
59212        self.inner.storage_buffer_descriptor_size = value;
59213        self
59214    }
59215    #[inline]
59216    pub fn robust_storage_buffer_descriptor_size(mut self, value: usize) -> Self {
59217        self.inner.robust_storage_buffer_descriptor_size = value;
59218        self
59219    }
59220    #[inline]
59221    pub fn input_attachment_descriptor_size(mut self, value: usize) -> Self {
59222        self.inner.input_attachment_descriptor_size = value;
59223        self
59224    }
59225    #[inline]
59226    pub fn acceleration_structure_descriptor_size(mut self, value: usize) -> Self {
59227        self.inner.acceleration_structure_descriptor_size = value;
59228        self
59229    }
59230    #[inline]
59231    pub fn max_sampler_descriptor_buffer_range(mut self, value: u64) -> Self {
59232        self.inner.max_sampler_descriptor_buffer_range = value;
59233        self
59234    }
59235    #[inline]
59236    pub fn max_resource_descriptor_buffer_range(mut self, value: u64) -> Self {
59237        self.inner.max_resource_descriptor_buffer_range = value;
59238        self
59239    }
59240    #[inline]
59241    pub fn sampler_descriptor_buffer_address_space_size(mut self, value: u64) -> Self {
59242        self.inner.sampler_descriptor_buffer_address_space_size = value;
59243        self
59244    }
59245    #[inline]
59246    pub fn resource_descriptor_buffer_address_space_size(mut self, value: u64) -> Self {
59247        self.inner.resource_descriptor_buffer_address_space_size = value;
59248        self
59249    }
59250    #[inline]
59251    pub fn descriptor_buffer_address_space_size(mut self, value: u64) -> Self {
59252        self.inner.descriptor_buffer_address_space_size = value;
59253        self
59254    }
59255}
59256impl<'a> core::ops::Deref for PhysicalDeviceDescriptorBufferPropertiesEXTBuilder<'a> {
59257    type Target = PhysicalDeviceDescriptorBufferPropertiesEXT;
59258    #[inline]
59259    fn deref(&self) -> &Self::Target {
59260        &self.inner
59261    }
59262}
59263impl<'a> core::ops::DerefMut for PhysicalDeviceDescriptorBufferPropertiesEXTBuilder<'a> {
59264    #[inline]
59265    fn deref_mut(&mut self) -> &mut Self::Target {
59266        &mut self.inner
59267    }
59268}
59269///Builder for [`PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT`] with lifetime-tied pNext safety.
59270pub struct PhysicalDeviceDescriptorBufferDensityMapPropertiesEXTBuilder<'a> {
59271    inner: PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT,
59272    _marker: core::marker::PhantomData<&'a ()>,
59273}
59274impl PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {
59275    /// Start building this struct; `s_type` is already set to the correct variant.
59276    #[inline]
59277    pub fn builder<'a>() -> PhysicalDeviceDescriptorBufferDensityMapPropertiesEXTBuilder<
59278        'a,
59279    > {
59280        PhysicalDeviceDescriptorBufferDensityMapPropertiesEXTBuilder {
59281            inner: PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {
59282                s_type: StructureType::from_raw(1000316001i32),
59283                ..Default::default()
59284            },
59285            _marker: core::marker::PhantomData,
59286        }
59287    }
59288}
59289impl<'a> PhysicalDeviceDescriptorBufferDensityMapPropertiesEXTBuilder<'a> {
59290    #[inline]
59291    pub fn combined_image_sampler_density_map_descriptor_size(
59292        mut self,
59293        value: usize,
59294    ) -> Self {
59295        self.inner.combined_image_sampler_density_map_descriptor_size = value;
59296        self
59297    }
59298}
59299impl<'a> core::ops::Deref
59300for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXTBuilder<'a> {
59301    type Target = PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT;
59302    #[inline]
59303    fn deref(&self) -> &Self::Target {
59304        &self.inner
59305    }
59306}
59307impl<'a> core::ops::DerefMut
59308for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXTBuilder<'a> {
59309    #[inline]
59310    fn deref_mut(&mut self) -> &mut Self::Target {
59311        &mut self.inner
59312    }
59313}
59314///Builder for [`DescriptorAddressInfoEXT`] with lifetime-tied pNext safety.
59315pub struct DescriptorAddressInfoEXTBuilder<'a> {
59316    inner: DescriptorAddressInfoEXT,
59317    _marker: core::marker::PhantomData<&'a ()>,
59318}
59319impl DescriptorAddressInfoEXT {
59320    /// Start building this struct; `s_type` is already set to the correct variant.
59321    #[inline]
59322    pub fn builder<'a>() -> DescriptorAddressInfoEXTBuilder<'a> {
59323        DescriptorAddressInfoEXTBuilder {
59324            inner: DescriptorAddressInfoEXT {
59325                s_type: StructureType::from_raw(1000316003i32),
59326                ..Default::default()
59327            },
59328            _marker: core::marker::PhantomData,
59329        }
59330    }
59331}
59332impl<'a> DescriptorAddressInfoEXTBuilder<'a> {
59333    #[inline]
59334    pub fn address(mut self, value: u64) -> Self {
59335        self.inner.address = value;
59336        self
59337    }
59338    #[inline]
59339    pub fn range(mut self, value: u64) -> Self {
59340        self.inner.range = value;
59341        self
59342    }
59343    #[inline]
59344    pub fn format(mut self, value: Format) -> Self {
59345        self.inner.format = value;
59346        self
59347    }
59348    ///Prepend a struct to the pNext chain. See [`DescriptorAddressInfoEXT`]'s **Extended By** section for valid types.
59349    #[inline]
59350    pub fn push_next<T: ExtendsDescriptorAddressInfoEXT>(
59351        mut self,
59352        next: &'a mut T,
59353    ) -> Self {
59354        unsafe {
59355            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
59356            (*next_ptr).p_next = self.inner.p_next as *mut _;
59357            self.inner.p_next = <*mut BaseOutStructure>::cast::<
59358                core::ffi::c_void,
59359            >(next_ptr);
59360        }
59361        self
59362    }
59363}
59364impl<'a> core::ops::Deref for DescriptorAddressInfoEXTBuilder<'a> {
59365    type Target = DescriptorAddressInfoEXT;
59366    #[inline]
59367    fn deref(&self) -> &Self::Target {
59368        &self.inner
59369    }
59370}
59371impl<'a> core::ops::DerefMut for DescriptorAddressInfoEXTBuilder<'a> {
59372    #[inline]
59373    fn deref_mut(&mut self) -> &mut Self::Target {
59374        &mut self.inner
59375    }
59376}
59377///Builder for [`DescriptorBufferBindingInfoEXT`] with lifetime-tied pNext safety.
59378pub struct DescriptorBufferBindingInfoEXTBuilder<'a> {
59379    inner: DescriptorBufferBindingInfoEXT,
59380    _marker: core::marker::PhantomData<&'a ()>,
59381}
59382impl DescriptorBufferBindingInfoEXT {
59383    /// Start building this struct; `s_type` is already set to the correct variant.
59384    #[inline]
59385    pub fn builder<'a>() -> DescriptorBufferBindingInfoEXTBuilder<'a> {
59386        DescriptorBufferBindingInfoEXTBuilder {
59387            inner: DescriptorBufferBindingInfoEXT {
59388                s_type: StructureType::from_raw(1000316011i32),
59389                ..Default::default()
59390            },
59391            _marker: core::marker::PhantomData,
59392        }
59393    }
59394}
59395impl<'a> DescriptorBufferBindingInfoEXTBuilder<'a> {
59396    #[inline]
59397    pub fn address(mut self, value: u64) -> Self {
59398        self.inner.address = value;
59399        self
59400    }
59401    #[inline]
59402    pub fn usage(mut self, value: BufferUsageFlags) -> Self {
59403        self.inner.usage = value;
59404        self
59405    }
59406    ///Prepend a struct to the pNext chain. See [`DescriptorBufferBindingInfoEXT`]'s **Extended By** section for valid types.
59407    #[inline]
59408    pub fn push_next<T: ExtendsDescriptorBufferBindingInfoEXT>(
59409        mut self,
59410        next: &'a mut T,
59411    ) -> Self {
59412        unsafe {
59413            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
59414            (*next_ptr).p_next = self.inner.p_next as *mut _;
59415            self.inner.p_next = <*mut BaseOutStructure>::cast::<
59416                core::ffi::c_void,
59417            >(next_ptr) as *const _;
59418        }
59419        self
59420    }
59421}
59422impl<'a> core::ops::Deref for DescriptorBufferBindingInfoEXTBuilder<'a> {
59423    type Target = DescriptorBufferBindingInfoEXT;
59424    #[inline]
59425    fn deref(&self) -> &Self::Target {
59426        &self.inner
59427    }
59428}
59429impl<'a> core::ops::DerefMut for DescriptorBufferBindingInfoEXTBuilder<'a> {
59430    #[inline]
59431    fn deref_mut(&mut self) -> &mut Self::Target {
59432        &mut self.inner
59433    }
59434}
59435///Builder for [`DescriptorBufferBindingPushDescriptorBufferHandleEXT`] with lifetime-tied pNext safety.
59436pub struct DescriptorBufferBindingPushDescriptorBufferHandleEXTBuilder<'a> {
59437    inner: DescriptorBufferBindingPushDescriptorBufferHandleEXT,
59438    _marker: core::marker::PhantomData<&'a ()>,
59439}
59440impl DescriptorBufferBindingPushDescriptorBufferHandleEXT {
59441    /// Start building this struct; `s_type` is already set to the correct variant.
59442    #[inline]
59443    pub fn builder<'a>() -> DescriptorBufferBindingPushDescriptorBufferHandleEXTBuilder<
59444        'a,
59445    > {
59446        DescriptorBufferBindingPushDescriptorBufferHandleEXTBuilder {
59447            inner: DescriptorBufferBindingPushDescriptorBufferHandleEXT {
59448                s_type: StructureType::from_raw(1000316012i32),
59449                ..Default::default()
59450            },
59451            _marker: core::marker::PhantomData,
59452        }
59453    }
59454}
59455impl<'a> DescriptorBufferBindingPushDescriptorBufferHandleEXTBuilder<'a> {
59456    #[inline]
59457    pub fn buffer(mut self, value: Buffer) -> Self {
59458        self.inner.buffer = value;
59459        self
59460    }
59461    ///Prepend a struct to the pNext chain. See [`DescriptorBufferBindingPushDescriptorBufferHandleEXT`]'s **Extended By** section for valid types.
59462    #[inline]
59463    pub fn push_next<T: ExtendsDescriptorBufferBindingPushDescriptorBufferHandleEXT>(
59464        mut self,
59465        next: &'a mut T,
59466    ) -> Self {
59467        unsafe {
59468            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
59469            (*next_ptr).p_next = self.inner.p_next as *mut _;
59470            self.inner.p_next = <*mut BaseOutStructure>::cast::<
59471                core::ffi::c_void,
59472            >(next_ptr) as *const _;
59473        }
59474        self
59475    }
59476}
59477impl<'a> core::ops::Deref
59478for DescriptorBufferBindingPushDescriptorBufferHandleEXTBuilder<'a> {
59479    type Target = DescriptorBufferBindingPushDescriptorBufferHandleEXT;
59480    #[inline]
59481    fn deref(&self) -> &Self::Target {
59482        &self.inner
59483    }
59484}
59485impl<'a> core::ops::DerefMut
59486for DescriptorBufferBindingPushDescriptorBufferHandleEXTBuilder<'a> {
59487    #[inline]
59488    fn deref_mut(&mut self) -> &mut Self::Target {
59489        &mut self.inner
59490    }
59491}
59492///Builder for [`DescriptorGetInfoEXT`] with lifetime-tied pNext safety.
59493pub struct DescriptorGetInfoEXTBuilder<'a> {
59494    inner: DescriptorGetInfoEXT,
59495    _marker: core::marker::PhantomData<&'a ()>,
59496}
59497impl DescriptorGetInfoEXT {
59498    /// Start building this struct; `s_type` is already set to the correct variant.
59499    #[inline]
59500    pub fn builder<'a>() -> DescriptorGetInfoEXTBuilder<'a> {
59501        DescriptorGetInfoEXTBuilder {
59502            inner: DescriptorGetInfoEXT {
59503                s_type: StructureType::from_raw(1000316004i32),
59504                ..Default::default()
59505            },
59506            _marker: core::marker::PhantomData,
59507        }
59508    }
59509}
59510impl<'a> DescriptorGetInfoEXTBuilder<'a> {
59511    #[inline]
59512    pub fn r#type(mut self, value: DescriptorType) -> Self {
59513        self.inner.r#type = value;
59514        self
59515    }
59516    #[inline]
59517    pub fn data(mut self, value: DescriptorDataEXT) -> Self {
59518        self.inner.data = value;
59519        self
59520    }
59521    ///Prepend a struct to the pNext chain. See [`DescriptorGetInfoEXT`]'s **Extended By** section for valid types.
59522    #[inline]
59523    pub fn push_next<T: ExtendsDescriptorGetInfoEXT>(mut self, next: &'a mut T) -> Self {
59524        unsafe {
59525            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
59526            (*next_ptr).p_next = self.inner.p_next as *mut _;
59527            self.inner.p_next = <*mut BaseOutStructure>::cast::<
59528                core::ffi::c_void,
59529            >(next_ptr) as *const _;
59530        }
59531        self
59532    }
59533}
59534impl<'a> core::ops::Deref for DescriptorGetInfoEXTBuilder<'a> {
59535    type Target = DescriptorGetInfoEXT;
59536    #[inline]
59537    fn deref(&self) -> &Self::Target {
59538        &self.inner
59539    }
59540}
59541impl<'a> core::ops::DerefMut for DescriptorGetInfoEXTBuilder<'a> {
59542    #[inline]
59543    fn deref_mut(&mut self) -> &mut Self::Target {
59544        &mut self.inner
59545    }
59546}
59547///Builder for [`BufferCaptureDescriptorDataInfoEXT`] with lifetime-tied pNext safety.
59548pub struct BufferCaptureDescriptorDataInfoEXTBuilder<'a> {
59549    inner: BufferCaptureDescriptorDataInfoEXT,
59550    _marker: core::marker::PhantomData<&'a ()>,
59551}
59552impl BufferCaptureDescriptorDataInfoEXT {
59553    /// Start building this struct; `s_type` is already set to the correct variant.
59554    #[inline]
59555    pub fn builder<'a>() -> BufferCaptureDescriptorDataInfoEXTBuilder<'a> {
59556        BufferCaptureDescriptorDataInfoEXTBuilder {
59557            inner: BufferCaptureDescriptorDataInfoEXT {
59558                s_type: StructureType::from_raw(1000316005i32),
59559                ..Default::default()
59560            },
59561            _marker: core::marker::PhantomData,
59562        }
59563    }
59564}
59565impl<'a> BufferCaptureDescriptorDataInfoEXTBuilder<'a> {
59566    #[inline]
59567    pub fn buffer(mut self, value: Buffer) -> Self {
59568        self.inner.buffer = value;
59569        self
59570    }
59571    ///Prepend a struct to the pNext chain. See [`BufferCaptureDescriptorDataInfoEXT`]'s **Extended By** section for valid types.
59572    #[inline]
59573    pub fn push_next<T: ExtendsBufferCaptureDescriptorDataInfoEXT>(
59574        mut self,
59575        next: &'a mut T,
59576    ) -> Self {
59577        unsafe {
59578            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
59579            (*next_ptr).p_next = self.inner.p_next as *mut _;
59580            self.inner.p_next = <*mut BaseOutStructure>::cast::<
59581                core::ffi::c_void,
59582            >(next_ptr) as *const _;
59583        }
59584        self
59585    }
59586}
59587impl<'a> core::ops::Deref for BufferCaptureDescriptorDataInfoEXTBuilder<'a> {
59588    type Target = BufferCaptureDescriptorDataInfoEXT;
59589    #[inline]
59590    fn deref(&self) -> &Self::Target {
59591        &self.inner
59592    }
59593}
59594impl<'a> core::ops::DerefMut for BufferCaptureDescriptorDataInfoEXTBuilder<'a> {
59595    #[inline]
59596    fn deref_mut(&mut self) -> &mut Self::Target {
59597        &mut self.inner
59598    }
59599}
59600///Builder for [`ImageCaptureDescriptorDataInfoEXT`] with lifetime-tied pNext safety.
59601pub struct ImageCaptureDescriptorDataInfoEXTBuilder<'a> {
59602    inner: ImageCaptureDescriptorDataInfoEXT,
59603    _marker: core::marker::PhantomData<&'a ()>,
59604}
59605impl ImageCaptureDescriptorDataInfoEXT {
59606    /// Start building this struct; `s_type` is already set to the correct variant.
59607    #[inline]
59608    pub fn builder<'a>() -> ImageCaptureDescriptorDataInfoEXTBuilder<'a> {
59609        ImageCaptureDescriptorDataInfoEXTBuilder {
59610            inner: ImageCaptureDescriptorDataInfoEXT {
59611                s_type: StructureType::from_raw(1000316006i32),
59612                ..Default::default()
59613            },
59614            _marker: core::marker::PhantomData,
59615        }
59616    }
59617}
59618impl<'a> ImageCaptureDescriptorDataInfoEXTBuilder<'a> {
59619    #[inline]
59620    pub fn image(mut self, value: Image) -> Self {
59621        self.inner.image = value;
59622        self
59623    }
59624    ///Prepend a struct to the pNext chain. See [`ImageCaptureDescriptorDataInfoEXT`]'s **Extended By** section for valid types.
59625    #[inline]
59626    pub fn push_next<T: ExtendsImageCaptureDescriptorDataInfoEXT>(
59627        mut self,
59628        next: &'a mut T,
59629    ) -> Self {
59630        unsafe {
59631            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
59632            (*next_ptr).p_next = self.inner.p_next as *mut _;
59633            self.inner.p_next = <*mut BaseOutStructure>::cast::<
59634                core::ffi::c_void,
59635            >(next_ptr) as *const _;
59636        }
59637        self
59638    }
59639}
59640impl<'a> core::ops::Deref for ImageCaptureDescriptorDataInfoEXTBuilder<'a> {
59641    type Target = ImageCaptureDescriptorDataInfoEXT;
59642    #[inline]
59643    fn deref(&self) -> &Self::Target {
59644        &self.inner
59645    }
59646}
59647impl<'a> core::ops::DerefMut for ImageCaptureDescriptorDataInfoEXTBuilder<'a> {
59648    #[inline]
59649    fn deref_mut(&mut self) -> &mut Self::Target {
59650        &mut self.inner
59651    }
59652}
59653///Builder for [`ImageViewCaptureDescriptorDataInfoEXT`] with lifetime-tied pNext safety.
59654pub struct ImageViewCaptureDescriptorDataInfoEXTBuilder<'a> {
59655    inner: ImageViewCaptureDescriptorDataInfoEXT,
59656    _marker: core::marker::PhantomData<&'a ()>,
59657}
59658impl ImageViewCaptureDescriptorDataInfoEXT {
59659    /// Start building this struct; `s_type` is already set to the correct variant.
59660    #[inline]
59661    pub fn builder<'a>() -> ImageViewCaptureDescriptorDataInfoEXTBuilder<'a> {
59662        ImageViewCaptureDescriptorDataInfoEXTBuilder {
59663            inner: ImageViewCaptureDescriptorDataInfoEXT {
59664                s_type: StructureType::from_raw(1000316007i32),
59665                ..Default::default()
59666            },
59667            _marker: core::marker::PhantomData,
59668        }
59669    }
59670}
59671impl<'a> ImageViewCaptureDescriptorDataInfoEXTBuilder<'a> {
59672    #[inline]
59673    pub fn image_view(mut self, value: ImageView) -> Self {
59674        self.inner.image_view = value;
59675        self
59676    }
59677    ///Prepend a struct to the pNext chain. See [`ImageViewCaptureDescriptorDataInfoEXT`]'s **Extended By** section for valid types.
59678    #[inline]
59679    pub fn push_next<T: ExtendsImageViewCaptureDescriptorDataInfoEXT>(
59680        mut self,
59681        next: &'a mut T,
59682    ) -> Self {
59683        unsafe {
59684            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
59685            (*next_ptr).p_next = self.inner.p_next as *mut _;
59686            self.inner.p_next = <*mut BaseOutStructure>::cast::<
59687                core::ffi::c_void,
59688            >(next_ptr) as *const _;
59689        }
59690        self
59691    }
59692}
59693impl<'a> core::ops::Deref for ImageViewCaptureDescriptorDataInfoEXTBuilder<'a> {
59694    type Target = ImageViewCaptureDescriptorDataInfoEXT;
59695    #[inline]
59696    fn deref(&self) -> &Self::Target {
59697        &self.inner
59698    }
59699}
59700impl<'a> core::ops::DerefMut for ImageViewCaptureDescriptorDataInfoEXTBuilder<'a> {
59701    #[inline]
59702    fn deref_mut(&mut self) -> &mut Self::Target {
59703        &mut self.inner
59704    }
59705}
59706///Builder for [`SamplerCaptureDescriptorDataInfoEXT`] with lifetime-tied pNext safety.
59707pub struct SamplerCaptureDescriptorDataInfoEXTBuilder<'a> {
59708    inner: SamplerCaptureDescriptorDataInfoEXT,
59709    _marker: core::marker::PhantomData<&'a ()>,
59710}
59711impl SamplerCaptureDescriptorDataInfoEXT {
59712    /// Start building this struct; `s_type` is already set to the correct variant.
59713    #[inline]
59714    pub fn builder<'a>() -> SamplerCaptureDescriptorDataInfoEXTBuilder<'a> {
59715        SamplerCaptureDescriptorDataInfoEXTBuilder {
59716            inner: SamplerCaptureDescriptorDataInfoEXT {
59717                s_type: StructureType::from_raw(1000316008i32),
59718                ..Default::default()
59719            },
59720            _marker: core::marker::PhantomData,
59721        }
59722    }
59723}
59724impl<'a> SamplerCaptureDescriptorDataInfoEXTBuilder<'a> {
59725    #[inline]
59726    pub fn sampler(mut self, value: Sampler) -> Self {
59727        self.inner.sampler = value;
59728        self
59729    }
59730    ///Prepend a struct to the pNext chain. See [`SamplerCaptureDescriptorDataInfoEXT`]'s **Extended By** section for valid types.
59731    #[inline]
59732    pub fn push_next<T: ExtendsSamplerCaptureDescriptorDataInfoEXT>(
59733        mut self,
59734        next: &'a mut T,
59735    ) -> Self {
59736        unsafe {
59737            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
59738            (*next_ptr).p_next = self.inner.p_next as *mut _;
59739            self.inner.p_next = <*mut BaseOutStructure>::cast::<
59740                core::ffi::c_void,
59741            >(next_ptr) as *const _;
59742        }
59743        self
59744    }
59745}
59746impl<'a> core::ops::Deref for SamplerCaptureDescriptorDataInfoEXTBuilder<'a> {
59747    type Target = SamplerCaptureDescriptorDataInfoEXT;
59748    #[inline]
59749    fn deref(&self) -> &Self::Target {
59750        &self.inner
59751    }
59752}
59753impl<'a> core::ops::DerefMut for SamplerCaptureDescriptorDataInfoEXTBuilder<'a> {
59754    #[inline]
59755    fn deref_mut(&mut self) -> &mut Self::Target {
59756        &mut self.inner
59757    }
59758}
59759///Builder for [`AccelerationStructureCaptureDescriptorDataInfoEXT`] with lifetime-tied pNext safety.
59760pub struct AccelerationStructureCaptureDescriptorDataInfoEXTBuilder<'a> {
59761    inner: AccelerationStructureCaptureDescriptorDataInfoEXT,
59762    _marker: core::marker::PhantomData<&'a ()>,
59763}
59764impl AccelerationStructureCaptureDescriptorDataInfoEXT {
59765    /// Start building this struct; `s_type` is already set to the correct variant.
59766    #[inline]
59767    pub fn builder<'a>() -> AccelerationStructureCaptureDescriptorDataInfoEXTBuilder<
59768        'a,
59769    > {
59770        AccelerationStructureCaptureDescriptorDataInfoEXTBuilder {
59771            inner: AccelerationStructureCaptureDescriptorDataInfoEXT {
59772                s_type: StructureType::from_raw(1000316009i32),
59773                ..Default::default()
59774            },
59775            _marker: core::marker::PhantomData,
59776        }
59777    }
59778}
59779impl<'a> AccelerationStructureCaptureDescriptorDataInfoEXTBuilder<'a> {
59780    #[inline]
59781    pub fn acceleration_structure(mut self, value: AccelerationStructureKHR) -> Self {
59782        self.inner.acceleration_structure = value;
59783        self
59784    }
59785    #[inline]
59786    pub fn acceleration_structure_nv(mut self, value: AccelerationStructureNV) -> Self {
59787        self.inner.acceleration_structure_nv = value;
59788        self
59789    }
59790    ///Prepend a struct to the pNext chain. See [`AccelerationStructureCaptureDescriptorDataInfoEXT`]'s **Extended By** section for valid types.
59791    #[inline]
59792    pub fn push_next<T: ExtendsAccelerationStructureCaptureDescriptorDataInfoEXT>(
59793        mut self,
59794        next: &'a mut T,
59795    ) -> Self {
59796        unsafe {
59797            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
59798            (*next_ptr).p_next = self.inner.p_next as *mut _;
59799            self.inner.p_next = <*mut BaseOutStructure>::cast::<
59800                core::ffi::c_void,
59801            >(next_ptr) as *const _;
59802        }
59803        self
59804    }
59805}
59806impl<'a> core::ops::Deref
59807for AccelerationStructureCaptureDescriptorDataInfoEXTBuilder<'a> {
59808    type Target = AccelerationStructureCaptureDescriptorDataInfoEXT;
59809    #[inline]
59810    fn deref(&self) -> &Self::Target {
59811        &self.inner
59812    }
59813}
59814impl<'a> core::ops::DerefMut
59815for AccelerationStructureCaptureDescriptorDataInfoEXTBuilder<'a> {
59816    #[inline]
59817    fn deref_mut(&mut self) -> &mut Self::Target {
59818        &mut self.inner
59819    }
59820}
59821///Builder for [`OpaqueCaptureDescriptorDataCreateInfoEXT`] with lifetime-tied pNext safety.
59822pub struct OpaqueCaptureDescriptorDataCreateInfoEXTBuilder<'a> {
59823    inner: OpaqueCaptureDescriptorDataCreateInfoEXT,
59824    _marker: core::marker::PhantomData<&'a ()>,
59825}
59826impl OpaqueCaptureDescriptorDataCreateInfoEXT {
59827    /// Start building this struct; `s_type` is already set to the correct variant.
59828    #[inline]
59829    pub fn builder<'a>() -> OpaqueCaptureDescriptorDataCreateInfoEXTBuilder<'a> {
59830        OpaqueCaptureDescriptorDataCreateInfoEXTBuilder {
59831            inner: OpaqueCaptureDescriptorDataCreateInfoEXT {
59832                s_type: StructureType::from_raw(1000316010i32),
59833                ..Default::default()
59834            },
59835            _marker: core::marker::PhantomData,
59836        }
59837    }
59838}
59839impl<'a> OpaqueCaptureDescriptorDataCreateInfoEXTBuilder<'a> {
59840    #[inline]
59841    pub fn opaque_capture_descriptor_data(
59842        mut self,
59843        value: *const core::ffi::c_void,
59844    ) -> Self {
59845        self.inner.opaque_capture_descriptor_data = value;
59846        self
59847    }
59848    ///Prepend a struct to the pNext chain. See [`OpaqueCaptureDescriptorDataCreateInfoEXT`]'s **Extended By** section for valid types.
59849    #[inline]
59850    pub fn push_next<T: ExtendsOpaqueCaptureDescriptorDataCreateInfoEXT>(
59851        mut self,
59852        next: &'a mut T,
59853    ) -> Self {
59854        unsafe {
59855            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
59856            (*next_ptr).p_next = self.inner.p_next as *mut _;
59857            self.inner.p_next = <*mut BaseOutStructure>::cast::<
59858                core::ffi::c_void,
59859            >(next_ptr) as *const _;
59860        }
59861        self
59862    }
59863}
59864impl<'a> core::ops::Deref for OpaqueCaptureDescriptorDataCreateInfoEXTBuilder<'a> {
59865    type Target = OpaqueCaptureDescriptorDataCreateInfoEXT;
59866    #[inline]
59867    fn deref(&self) -> &Self::Target {
59868        &self.inner
59869    }
59870}
59871impl<'a> core::ops::DerefMut for OpaqueCaptureDescriptorDataCreateInfoEXTBuilder<'a> {
59872    #[inline]
59873    fn deref_mut(&mut self) -> &mut Self::Target {
59874        &mut self.inner
59875    }
59876}
59877///Builder for [`PhysicalDeviceShaderIntegerDotProductFeatures`] with lifetime-tied pNext safety.
59878pub struct PhysicalDeviceShaderIntegerDotProductFeaturesBuilder<'a> {
59879    inner: PhysicalDeviceShaderIntegerDotProductFeatures,
59880    _marker: core::marker::PhantomData<&'a ()>,
59881}
59882impl PhysicalDeviceShaderIntegerDotProductFeatures {
59883    /// Start building this struct; `s_type` is already set to the correct variant.
59884    #[inline]
59885    pub fn builder<'a>() -> PhysicalDeviceShaderIntegerDotProductFeaturesBuilder<'a> {
59886        PhysicalDeviceShaderIntegerDotProductFeaturesBuilder {
59887            inner: PhysicalDeviceShaderIntegerDotProductFeatures {
59888                s_type: StructureType::from_raw(1000280000i32),
59889                ..Default::default()
59890            },
59891            _marker: core::marker::PhantomData,
59892        }
59893    }
59894}
59895impl<'a> PhysicalDeviceShaderIntegerDotProductFeaturesBuilder<'a> {
59896    #[inline]
59897    pub fn shader_integer_dot_product(mut self, value: bool) -> Self {
59898        self.inner.shader_integer_dot_product = value as u32;
59899        self
59900    }
59901    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderIntegerDotProductFeatures`]'s **Extended By** section for valid types.
59902    #[inline]
59903    pub fn push_next<T: ExtendsPhysicalDeviceShaderIntegerDotProductFeatures>(
59904        mut self,
59905        next: &'a mut T,
59906    ) -> Self {
59907        unsafe {
59908            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
59909            (*next_ptr).p_next = self.inner.p_next as *mut _;
59910            self.inner.p_next = <*mut BaseOutStructure>::cast::<
59911                core::ffi::c_void,
59912            >(next_ptr);
59913        }
59914        self
59915    }
59916}
59917impl<'a> core::ops::Deref for PhysicalDeviceShaderIntegerDotProductFeaturesBuilder<'a> {
59918    type Target = PhysicalDeviceShaderIntegerDotProductFeatures;
59919    #[inline]
59920    fn deref(&self) -> &Self::Target {
59921        &self.inner
59922    }
59923}
59924impl<'a> core::ops::DerefMut
59925for PhysicalDeviceShaderIntegerDotProductFeaturesBuilder<'a> {
59926    #[inline]
59927    fn deref_mut(&mut self) -> &mut Self::Target {
59928        &mut self.inner
59929    }
59930}
59931///Builder for [`PhysicalDeviceShaderIntegerDotProductProperties`] with lifetime-tied pNext safety.
59932pub struct PhysicalDeviceShaderIntegerDotProductPropertiesBuilder<'a> {
59933    inner: PhysicalDeviceShaderIntegerDotProductProperties,
59934    _marker: core::marker::PhantomData<&'a ()>,
59935}
59936impl PhysicalDeviceShaderIntegerDotProductProperties {
59937    /// Start building this struct; `s_type` is already set to the correct variant.
59938    #[inline]
59939    pub fn builder<'a>() -> PhysicalDeviceShaderIntegerDotProductPropertiesBuilder<'a> {
59940        PhysicalDeviceShaderIntegerDotProductPropertiesBuilder {
59941            inner: PhysicalDeviceShaderIntegerDotProductProperties {
59942                s_type: StructureType::from_raw(1000280001i32),
59943                ..Default::default()
59944            },
59945            _marker: core::marker::PhantomData,
59946        }
59947    }
59948}
59949impl<'a> PhysicalDeviceShaderIntegerDotProductPropertiesBuilder<'a> {
59950    #[inline]
59951    pub fn integer_dot_product8_bit_unsigned_accelerated(mut self, value: bool) -> Self {
59952        self.inner.integer_dot_product8_bit_unsigned_accelerated = value as u32;
59953        self
59954    }
59955    #[inline]
59956    pub fn integer_dot_product8_bit_signed_accelerated(mut self, value: bool) -> Self {
59957        self.inner.integer_dot_product8_bit_signed_accelerated = value as u32;
59958        self
59959    }
59960    #[inline]
59961    pub fn integer_dot_product8_bit_mixed_signedness_accelerated(
59962        mut self,
59963        value: bool,
59964    ) -> Self {
59965        self.inner.integer_dot_product8_bit_mixed_signedness_accelerated = value as u32;
59966        self
59967    }
59968    #[inline]
59969    pub fn integer_dot_product4x8_bit_packed_unsigned_accelerated(
59970        mut self,
59971        value: bool,
59972    ) -> Self {
59973        self.inner.integer_dot_product4x8_bit_packed_unsigned_accelerated = value as u32;
59974        self
59975    }
59976    #[inline]
59977    pub fn integer_dot_product4x8_bit_packed_signed_accelerated(
59978        mut self,
59979        value: bool,
59980    ) -> Self {
59981        self.inner.integer_dot_product4x8_bit_packed_signed_accelerated = value as u32;
59982        self
59983    }
59984    #[inline]
59985    pub fn integer_dot_product4x8_bit_packed_mixed_signedness_accelerated(
59986        mut self,
59987        value: bool,
59988    ) -> Self {
59989        self.inner.integer_dot_product4x8_bit_packed_mixed_signedness_accelerated = value
59990            as u32;
59991        self
59992    }
59993    #[inline]
59994    pub fn integer_dot_product16_bit_unsigned_accelerated(
59995        mut self,
59996        value: bool,
59997    ) -> Self {
59998        self.inner.integer_dot_product16_bit_unsigned_accelerated = value as u32;
59999        self
60000    }
60001    #[inline]
60002    pub fn integer_dot_product16_bit_signed_accelerated(mut self, value: bool) -> Self {
60003        self.inner.integer_dot_product16_bit_signed_accelerated = value as u32;
60004        self
60005    }
60006    #[inline]
60007    pub fn integer_dot_product16_bit_mixed_signedness_accelerated(
60008        mut self,
60009        value: bool,
60010    ) -> Self {
60011        self.inner.integer_dot_product16_bit_mixed_signedness_accelerated = value as u32;
60012        self
60013    }
60014    #[inline]
60015    pub fn integer_dot_product32_bit_unsigned_accelerated(
60016        mut self,
60017        value: bool,
60018    ) -> Self {
60019        self.inner.integer_dot_product32_bit_unsigned_accelerated = value as u32;
60020        self
60021    }
60022    #[inline]
60023    pub fn integer_dot_product32_bit_signed_accelerated(mut self, value: bool) -> Self {
60024        self.inner.integer_dot_product32_bit_signed_accelerated = value as u32;
60025        self
60026    }
60027    #[inline]
60028    pub fn integer_dot_product32_bit_mixed_signedness_accelerated(
60029        mut self,
60030        value: bool,
60031    ) -> Self {
60032        self.inner.integer_dot_product32_bit_mixed_signedness_accelerated = value as u32;
60033        self
60034    }
60035    #[inline]
60036    pub fn integer_dot_product64_bit_unsigned_accelerated(
60037        mut self,
60038        value: bool,
60039    ) -> Self {
60040        self.inner.integer_dot_product64_bit_unsigned_accelerated = value as u32;
60041        self
60042    }
60043    #[inline]
60044    pub fn integer_dot_product64_bit_signed_accelerated(mut self, value: bool) -> Self {
60045        self.inner.integer_dot_product64_bit_signed_accelerated = value as u32;
60046        self
60047    }
60048    #[inline]
60049    pub fn integer_dot_product64_bit_mixed_signedness_accelerated(
60050        mut self,
60051        value: bool,
60052    ) -> Self {
60053        self.inner.integer_dot_product64_bit_mixed_signedness_accelerated = value as u32;
60054        self
60055    }
60056    #[inline]
60057    pub fn integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated(
60058        mut self,
60059        value: bool,
60060    ) -> Self {
60061        self
60062            .inner
60063            .integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated = value
60064            as u32;
60065        self
60066    }
60067    #[inline]
60068    pub fn integer_dot_product_accumulating_saturating8_bit_signed_accelerated(
60069        mut self,
60070        value: bool,
60071    ) -> Self {
60072        self.inner.integer_dot_product_accumulating_saturating8_bit_signed_accelerated = value
60073            as u32;
60074        self
60075    }
60076    #[inline]
60077    pub fn integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated(
60078        mut self,
60079        value: bool,
60080    ) -> Self {
60081        self
60082            .inner
60083            .integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated = value
60084            as u32;
60085        self
60086    }
60087    #[inline]
60088    pub fn integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated(
60089        mut self,
60090        value: bool,
60091    ) -> Self {
60092        self
60093            .inner
60094            .integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated = value
60095            as u32;
60096        self
60097    }
60098    #[inline]
60099    pub fn integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated(
60100        mut self,
60101        value: bool,
60102    ) -> Self {
60103        self
60104            .inner
60105            .integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated = value
60106            as u32;
60107        self
60108    }
60109    #[inline]
60110    pub fn integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated(
60111        mut self,
60112        value: bool,
60113    ) -> Self {
60114        self
60115            .inner
60116            .integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated = value
60117            as u32;
60118        self
60119    }
60120    #[inline]
60121    pub fn integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated(
60122        mut self,
60123        value: bool,
60124    ) -> Self {
60125        self
60126            .inner
60127            .integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated = value
60128            as u32;
60129        self
60130    }
60131    #[inline]
60132    pub fn integer_dot_product_accumulating_saturating16_bit_signed_accelerated(
60133        mut self,
60134        value: bool,
60135    ) -> Self {
60136        self
60137            .inner
60138            .integer_dot_product_accumulating_saturating16_bit_signed_accelerated = value
60139            as u32;
60140        self
60141    }
60142    #[inline]
60143    pub fn integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated(
60144        mut self,
60145        value: bool,
60146    ) -> Self {
60147        self
60148            .inner
60149            .integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated = value
60150            as u32;
60151        self
60152    }
60153    #[inline]
60154    pub fn integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated(
60155        mut self,
60156        value: bool,
60157    ) -> Self {
60158        self
60159            .inner
60160            .integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated = value
60161            as u32;
60162        self
60163    }
60164    #[inline]
60165    pub fn integer_dot_product_accumulating_saturating32_bit_signed_accelerated(
60166        mut self,
60167        value: bool,
60168    ) -> Self {
60169        self
60170            .inner
60171            .integer_dot_product_accumulating_saturating32_bit_signed_accelerated = value
60172            as u32;
60173        self
60174    }
60175    #[inline]
60176    pub fn integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated(
60177        mut self,
60178        value: bool,
60179    ) -> Self {
60180        self
60181            .inner
60182            .integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated = value
60183            as u32;
60184        self
60185    }
60186    #[inline]
60187    pub fn integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated(
60188        mut self,
60189        value: bool,
60190    ) -> Self {
60191        self
60192            .inner
60193            .integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated = value
60194            as u32;
60195        self
60196    }
60197    #[inline]
60198    pub fn integer_dot_product_accumulating_saturating64_bit_signed_accelerated(
60199        mut self,
60200        value: bool,
60201    ) -> Self {
60202        self
60203            .inner
60204            .integer_dot_product_accumulating_saturating64_bit_signed_accelerated = value
60205            as u32;
60206        self
60207    }
60208    #[inline]
60209    pub fn integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated(
60210        mut self,
60211        value: bool,
60212    ) -> Self {
60213        self
60214            .inner
60215            .integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated = value
60216            as u32;
60217        self
60218    }
60219}
60220impl<'a> core::ops::Deref
60221for PhysicalDeviceShaderIntegerDotProductPropertiesBuilder<'a> {
60222    type Target = PhysicalDeviceShaderIntegerDotProductProperties;
60223    #[inline]
60224    fn deref(&self) -> &Self::Target {
60225        &self.inner
60226    }
60227}
60228impl<'a> core::ops::DerefMut
60229for PhysicalDeviceShaderIntegerDotProductPropertiesBuilder<'a> {
60230    #[inline]
60231    fn deref_mut(&mut self) -> &mut Self::Target {
60232        &mut self.inner
60233    }
60234}
60235///Builder for [`PhysicalDeviceDrmPropertiesEXT`] with lifetime-tied pNext safety.
60236pub struct PhysicalDeviceDrmPropertiesEXTBuilder<'a> {
60237    inner: PhysicalDeviceDrmPropertiesEXT,
60238    _marker: core::marker::PhantomData<&'a ()>,
60239}
60240impl PhysicalDeviceDrmPropertiesEXT {
60241    /// Start building this struct; `s_type` is already set to the correct variant.
60242    #[inline]
60243    pub fn builder<'a>() -> PhysicalDeviceDrmPropertiesEXTBuilder<'a> {
60244        PhysicalDeviceDrmPropertiesEXTBuilder {
60245            inner: PhysicalDeviceDrmPropertiesEXT {
60246                s_type: StructureType::from_raw(1000353000i32),
60247                ..Default::default()
60248            },
60249            _marker: core::marker::PhantomData,
60250        }
60251    }
60252}
60253impl<'a> PhysicalDeviceDrmPropertiesEXTBuilder<'a> {
60254    #[inline]
60255    pub fn has_primary(mut self, value: bool) -> Self {
60256        self.inner.has_primary = value as u32;
60257        self
60258    }
60259    #[inline]
60260    pub fn has_render(mut self, value: bool) -> Self {
60261        self.inner.has_render = value as u32;
60262        self
60263    }
60264    #[inline]
60265    pub fn primary_major(mut self, value: i64) -> Self {
60266        self.inner.primary_major = value;
60267        self
60268    }
60269    #[inline]
60270    pub fn primary_minor(mut self, value: i64) -> Self {
60271        self.inner.primary_minor = value;
60272        self
60273    }
60274    #[inline]
60275    pub fn render_major(mut self, value: i64) -> Self {
60276        self.inner.render_major = value;
60277        self
60278    }
60279    #[inline]
60280    pub fn render_minor(mut self, value: i64) -> Self {
60281        self.inner.render_minor = value;
60282        self
60283    }
60284}
60285impl<'a> core::ops::Deref for PhysicalDeviceDrmPropertiesEXTBuilder<'a> {
60286    type Target = PhysicalDeviceDrmPropertiesEXT;
60287    #[inline]
60288    fn deref(&self) -> &Self::Target {
60289        &self.inner
60290    }
60291}
60292impl<'a> core::ops::DerefMut for PhysicalDeviceDrmPropertiesEXTBuilder<'a> {
60293    #[inline]
60294    fn deref_mut(&mut self) -> &mut Self::Target {
60295        &mut self.inner
60296    }
60297}
60298///Builder for [`PhysicalDeviceFragmentShaderBarycentricFeaturesKHR`] with lifetime-tied pNext safety.
60299pub struct PhysicalDeviceFragmentShaderBarycentricFeaturesKHRBuilder<'a> {
60300    inner: PhysicalDeviceFragmentShaderBarycentricFeaturesKHR,
60301    _marker: core::marker::PhantomData<&'a ()>,
60302}
60303impl PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {
60304    /// Start building this struct; `s_type` is already set to the correct variant.
60305    #[inline]
60306    pub fn builder<'a>() -> PhysicalDeviceFragmentShaderBarycentricFeaturesKHRBuilder<
60307        'a,
60308    > {
60309        PhysicalDeviceFragmentShaderBarycentricFeaturesKHRBuilder {
60310            inner: PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {
60311                s_type: StructureType::from_raw(1000203000i32),
60312                ..Default::default()
60313            },
60314            _marker: core::marker::PhantomData,
60315        }
60316    }
60317}
60318impl<'a> PhysicalDeviceFragmentShaderBarycentricFeaturesKHRBuilder<'a> {
60319    #[inline]
60320    pub fn fragment_shader_barycentric(mut self, value: bool) -> Self {
60321        self.inner.fragment_shader_barycentric = value as u32;
60322        self
60323    }
60324    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceFragmentShaderBarycentricFeaturesKHR`]'s **Extended By** section for valid types.
60325    #[inline]
60326    pub fn push_next<T: ExtendsPhysicalDeviceFragmentShaderBarycentricFeaturesKHR>(
60327        mut self,
60328        next: &'a mut T,
60329    ) -> Self {
60330        unsafe {
60331            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
60332            (*next_ptr).p_next = self.inner.p_next as *mut _;
60333            self.inner.p_next = <*mut BaseOutStructure>::cast::<
60334                core::ffi::c_void,
60335            >(next_ptr);
60336        }
60337        self
60338    }
60339}
60340impl<'a> core::ops::Deref
60341for PhysicalDeviceFragmentShaderBarycentricFeaturesKHRBuilder<'a> {
60342    type Target = PhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
60343    #[inline]
60344    fn deref(&self) -> &Self::Target {
60345        &self.inner
60346    }
60347}
60348impl<'a> core::ops::DerefMut
60349for PhysicalDeviceFragmentShaderBarycentricFeaturesKHRBuilder<'a> {
60350    #[inline]
60351    fn deref_mut(&mut self) -> &mut Self::Target {
60352        &mut self.inner
60353    }
60354}
60355///Builder for [`PhysicalDeviceFragmentShaderBarycentricPropertiesKHR`] with lifetime-tied pNext safety.
60356pub struct PhysicalDeviceFragmentShaderBarycentricPropertiesKHRBuilder<'a> {
60357    inner: PhysicalDeviceFragmentShaderBarycentricPropertiesKHR,
60358    _marker: core::marker::PhantomData<&'a ()>,
60359}
60360impl PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {
60361    /// Start building this struct; `s_type` is already set to the correct variant.
60362    #[inline]
60363    pub fn builder<'a>() -> PhysicalDeviceFragmentShaderBarycentricPropertiesKHRBuilder<
60364        'a,
60365    > {
60366        PhysicalDeviceFragmentShaderBarycentricPropertiesKHRBuilder {
60367            inner: PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {
60368                s_type: StructureType::from_raw(1000322000i32),
60369                ..Default::default()
60370            },
60371            _marker: core::marker::PhantomData,
60372        }
60373    }
60374}
60375impl<'a> PhysicalDeviceFragmentShaderBarycentricPropertiesKHRBuilder<'a> {
60376    #[inline]
60377    pub fn tri_strip_vertex_order_independent_of_provoking_vertex(
60378        mut self,
60379        value: bool,
60380    ) -> Self {
60381        self.inner.tri_strip_vertex_order_independent_of_provoking_vertex = value as u32;
60382        self
60383    }
60384}
60385impl<'a> core::ops::Deref
60386for PhysicalDeviceFragmentShaderBarycentricPropertiesKHRBuilder<'a> {
60387    type Target = PhysicalDeviceFragmentShaderBarycentricPropertiesKHR;
60388    #[inline]
60389    fn deref(&self) -> &Self::Target {
60390        &self.inner
60391    }
60392}
60393impl<'a> core::ops::DerefMut
60394for PhysicalDeviceFragmentShaderBarycentricPropertiesKHRBuilder<'a> {
60395    #[inline]
60396    fn deref_mut(&mut self) -> &mut Self::Target {
60397        &mut self.inner
60398    }
60399}
60400///Builder for [`PhysicalDeviceShaderFmaFeaturesKHR`] with lifetime-tied pNext safety.
60401pub struct PhysicalDeviceShaderFmaFeaturesKHRBuilder<'a> {
60402    inner: PhysicalDeviceShaderFmaFeaturesKHR,
60403    _marker: core::marker::PhantomData<&'a ()>,
60404}
60405impl PhysicalDeviceShaderFmaFeaturesKHR {
60406    /// Start building this struct; `s_type` is already set to the correct variant.
60407    #[inline]
60408    pub fn builder<'a>() -> PhysicalDeviceShaderFmaFeaturesKHRBuilder<'a> {
60409        PhysicalDeviceShaderFmaFeaturesKHRBuilder {
60410            inner: PhysicalDeviceShaderFmaFeaturesKHR {
60411                s_type: StructureType::from_raw(1000579000i32),
60412                ..Default::default()
60413            },
60414            _marker: core::marker::PhantomData,
60415        }
60416    }
60417}
60418impl<'a> PhysicalDeviceShaderFmaFeaturesKHRBuilder<'a> {
60419    #[inline]
60420    pub fn shader_fma_float16(mut self, value: bool) -> Self {
60421        self.inner.shader_fma_float16 = value as u32;
60422        self
60423    }
60424    #[inline]
60425    pub fn shader_fma_float32(mut self, value: bool) -> Self {
60426        self.inner.shader_fma_float32 = value as u32;
60427        self
60428    }
60429    #[inline]
60430    pub fn shader_fma_float64(mut self, value: bool) -> Self {
60431        self.inner.shader_fma_float64 = value as u32;
60432        self
60433    }
60434    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderFmaFeaturesKHR`]'s **Extended By** section for valid types.
60435    #[inline]
60436    pub fn push_next<T: ExtendsPhysicalDeviceShaderFmaFeaturesKHR>(
60437        mut self,
60438        next: &'a mut T,
60439    ) -> Self {
60440        unsafe {
60441            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
60442            (*next_ptr).p_next = self.inner.p_next as *mut _;
60443            self.inner.p_next = <*mut BaseOutStructure>::cast::<
60444                core::ffi::c_void,
60445            >(next_ptr);
60446        }
60447        self
60448    }
60449}
60450impl<'a> core::ops::Deref for PhysicalDeviceShaderFmaFeaturesKHRBuilder<'a> {
60451    type Target = PhysicalDeviceShaderFmaFeaturesKHR;
60452    #[inline]
60453    fn deref(&self) -> &Self::Target {
60454        &self.inner
60455    }
60456}
60457impl<'a> core::ops::DerefMut for PhysicalDeviceShaderFmaFeaturesKHRBuilder<'a> {
60458    #[inline]
60459    fn deref_mut(&mut self) -> &mut Self::Target {
60460        &mut self.inner
60461    }
60462}
60463///Builder for [`PhysicalDeviceRayTracingMotionBlurFeaturesNV`] with lifetime-tied pNext safety.
60464pub struct PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder<'a> {
60465    inner: PhysicalDeviceRayTracingMotionBlurFeaturesNV,
60466    _marker: core::marker::PhantomData<&'a ()>,
60467}
60468impl PhysicalDeviceRayTracingMotionBlurFeaturesNV {
60469    /// Start building this struct; `s_type` is already set to the correct variant.
60470    #[inline]
60471    pub fn builder<'a>() -> PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder<'a> {
60472        PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder {
60473            inner: PhysicalDeviceRayTracingMotionBlurFeaturesNV {
60474                s_type: StructureType::from_raw(1000327001i32),
60475                ..Default::default()
60476            },
60477            _marker: core::marker::PhantomData,
60478        }
60479    }
60480}
60481impl<'a> PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder<'a> {
60482    #[inline]
60483    pub fn ray_tracing_motion_blur(mut self, value: bool) -> Self {
60484        self.inner.ray_tracing_motion_blur = value as u32;
60485        self
60486    }
60487    #[inline]
60488    pub fn ray_tracing_motion_blur_pipeline_trace_rays_indirect(
60489        mut self,
60490        value: bool,
60491    ) -> Self {
60492        self.inner.ray_tracing_motion_blur_pipeline_trace_rays_indirect = value as u32;
60493        self
60494    }
60495    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceRayTracingMotionBlurFeaturesNV`]'s **Extended By** section for valid types.
60496    #[inline]
60497    pub fn push_next<T: ExtendsPhysicalDeviceRayTracingMotionBlurFeaturesNV>(
60498        mut self,
60499        next: &'a mut T,
60500    ) -> Self {
60501        unsafe {
60502            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
60503            (*next_ptr).p_next = self.inner.p_next as *mut _;
60504            self.inner.p_next = <*mut BaseOutStructure>::cast::<
60505                core::ffi::c_void,
60506            >(next_ptr);
60507        }
60508        self
60509    }
60510}
60511impl<'a> core::ops::Deref for PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder<'a> {
60512    type Target = PhysicalDeviceRayTracingMotionBlurFeaturesNV;
60513    #[inline]
60514    fn deref(&self) -> &Self::Target {
60515        &self.inner
60516    }
60517}
60518impl<'a> core::ops::DerefMut
60519for PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder<'a> {
60520    #[inline]
60521    fn deref_mut(&mut self) -> &mut Self::Target {
60522        &mut self.inner
60523    }
60524}
60525///Builder for [`PhysicalDeviceRayTracingValidationFeaturesNV`] with lifetime-tied pNext safety.
60526pub struct PhysicalDeviceRayTracingValidationFeaturesNVBuilder<'a> {
60527    inner: PhysicalDeviceRayTracingValidationFeaturesNV,
60528    _marker: core::marker::PhantomData<&'a ()>,
60529}
60530impl PhysicalDeviceRayTracingValidationFeaturesNV {
60531    /// Start building this struct; `s_type` is already set to the correct variant.
60532    #[inline]
60533    pub fn builder<'a>() -> PhysicalDeviceRayTracingValidationFeaturesNVBuilder<'a> {
60534        PhysicalDeviceRayTracingValidationFeaturesNVBuilder {
60535            inner: PhysicalDeviceRayTracingValidationFeaturesNV {
60536                s_type: StructureType::from_raw(1000568000i32),
60537                ..Default::default()
60538            },
60539            _marker: core::marker::PhantomData,
60540        }
60541    }
60542}
60543impl<'a> PhysicalDeviceRayTracingValidationFeaturesNVBuilder<'a> {
60544    #[inline]
60545    pub fn ray_tracing_validation(mut self, value: bool) -> Self {
60546        self.inner.ray_tracing_validation = value as u32;
60547        self
60548    }
60549    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceRayTracingValidationFeaturesNV`]'s **Extended By** section for valid types.
60550    #[inline]
60551    pub fn push_next<T: ExtendsPhysicalDeviceRayTracingValidationFeaturesNV>(
60552        mut self,
60553        next: &'a mut T,
60554    ) -> Self {
60555        unsafe {
60556            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
60557            (*next_ptr).p_next = self.inner.p_next as *mut _;
60558            self.inner.p_next = <*mut BaseOutStructure>::cast::<
60559                core::ffi::c_void,
60560            >(next_ptr);
60561        }
60562        self
60563    }
60564}
60565impl<'a> core::ops::Deref for PhysicalDeviceRayTracingValidationFeaturesNVBuilder<'a> {
60566    type Target = PhysicalDeviceRayTracingValidationFeaturesNV;
60567    #[inline]
60568    fn deref(&self) -> &Self::Target {
60569        &self.inner
60570    }
60571}
60572impl<'a> core::ops::DerefMut
60573for PhysicalDeviceRayTracingValidationFeaturesNVBuilder<'a> {
60574    #[inline]
60575    fn deref_mut(&mut self) -> &mut Self::Target {
60576        &mut self.inner
60577    }
60578}
60579///Builder for [`PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV`] with lifetime-tied pNext safety.
60580pub struct PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNVBuilder<'a> {
60581    inner: PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV,
60582    _marker: core::marker::PhantomData<&'a ()>,
60583}
60584impl PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {
60585    /// Start building this struct; `s_type` is already set to the correct variant.
60586    #[inline]
60587    pub fn builder<'a>() -> PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNVBuilder<
60588        'a,
60589    > {
60590        PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNVBuilder {
60591            inner: PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {
60592                s_type: StructureType::from_raw(1000429008i32),
60593                ..Default::default()
60594            },
60595            _marker: core::marker::PhantomData,
60596        }
60597    }
60598}
60599impl<'a> PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNVBuilder<'a> {
60600    #[inline]
60601    pub fn spheres(mut self, value: bool) -> Self {
60602        self.inner.spheres = value as u32;
60603        self
60604    }
60605    #[inline]
60606    pub fn linear_swept_spheres(mut self, value: bool) -> Self {
60607        self.inner.linear_swept_spheres = value as u32;
60608        self
60609    }
60610    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV`]'s **Extended By** section for valid types.
60611    #[inline]
60612    pub fn push_next<T: ExtendsPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV>(
60613        mut self,
60614        next: &'a mut T,
60615    ) -> Self {
60616        unsafe {
60617            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
60618            (*next_ptr).p_next = self.inner.p_next as *mut _;
60619            self.inner.p_next = <*mut BaseOutStructure>::cast::<
60620                core::ffi::c_void,
60621            >(next_ptr);
60622        }
60623        self
60624    }
60625}
60626impl<'a> core::ops::Deref
60627for PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNVBuilder<'a> {
60628    type Target = PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV;
60629    #[inline]
60630    fn deref(&self) -> &Self::Target {
60631        &self.inner
60632    }
60633}
60634impl<'a> core::ops::DerefMut
60635for PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNVBuilder<'a> {
60636    #[inline]
60637    fn deref_mut(&mut self) -> &mut Self::Target {
60638        &mut self.inner
60639    }
60640}
60641///Builder for [`AccelerationStructureGeometryMotionTrianglesDataNV`] with lifetime-tied pNext safety.
60642pub struct AccelerationStructureGeometryMotionTrianglesDataNVBuilder<'a> {
60643    inner: AccelerationStructureGeometryMotionTrianglesDataNV,
60644    _marker: core::marker::PhantomData<&'a ()>,
60645}
60646impl AccelerationStructureGeometryMotionTrianglesDataNV {
60647    /// Start building this struct; `s_type` is already set to the correct variant.
60648    #[inline]
60649    pub fn builder<'a>() -> AccelerationStructureGeometryMotionTrianglesDataNVBuilder<
60650        'a,
60651    > {
60652        AccelerationStructureGeometryMotionTrianglesDataNVBuilder {
60653            inner: AccelerationStructureGeometryMotionTrianglesDataNV {
60654                s_type: StructureType::from_raw(1000327000i32),
60655                ..Default::default()
60656            },
60657            _marker: core::marker::PhantomData,
60658        }
60659    }
60660}
60661impl<'a> AccelerationStructureGeometryMotionTrianglesDataNVBuilder<'a> {
60662    #[inline]
60663    pub fn vertex_data(mut self, value: DeviceOrHostAddressConstKHR) -> Self {
60664        self.inner.vertex_data = value;
60665        self
60666    }
60667    ///Prepend a struct to the pNext chain. See [`AccelerationStructureGeometryMotionTrianglesDataNV`]'s **Extended By** section for valid types.
60668    #[inline]
60669    pub fn push_next<T: ExtendsAccelerationStructureGeometryMotionTrianglesDataNV>(
60670        mut self,
60671        next: &'a mut T,
60672    ) -> Self {
60673        unsafe {
60674            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
60675            (*next_ptr).p_next = self.inner.p_next as *mut _;
60676            self.inner.p_next = <*mut BaseOutStructure>::cast::<
60677                core::ffi::c_void,
60678            >(next_ptr) as *const _;
60679        }
60680        self
60681    }
60682}
60683impl<'a> core::ops::Deref
60684for AccelerationStructureGeometryMotionTrianglesDataNVBuilder<'a> {
60685    type Target = AccelerationStructureGeometryMotionTrianglesDataNV;
60686    #[inline]
60687    fn deref(&self) -> &Self::Target {
60688        &self.inner
60689    }
60690}
60691impl<'a> core::ops::DerefMut
60692for AccelerationStructureGeometryMotionTrianglesDataNVBuilder<'a> {
60693    #[inline]
60694    fn deref_mut(&mut self) -> &mut Self::Target {
60695        &mut self.inner
60696    }
60697}
60698///Builder for [`AccelerationStructureMotionInfoNV`] with lifetime-tied pNext safety.
60699pub struct AccelerationStructureMotionInfoNVBuilder<'a> {
60700    inner: AccelerationStructureMotionInfoNV,
60701    _marker: core::marker::PhantomData<&'a ()>,
60702}
60703impl AccelerationStructureMotionInfoNV {
60704    /// Start building this struct; `s_type` is already set to the correct variant.
60705    #[inline]
60706    pub fn builder<'a>() -> AccelerationStructureMotionInfoNVBuilder<'a> {
60707        AccelerationStructureMotionInfoNVBuilder {
60708            inner: AccelerationStructureMotionInfoNV {
60709                s_type: StructureType::from_raw(1000327002i32),
60710                ..Default::default()
60711            },
60712            _marker: core::marker::PhantomData,
60713        }
60714    }
60715}
60716impl<'a> AccelerationStructureMotionInfoNVBuilder<'a> {
60717    #[inline]
60718    pub fn max_instances(mut self, value: u32) -> Self {
60719        self.inner.max_instances = value;
60720        self
60721    }
60722    #[inline]
60723    pub fn flags(mut self, value: AccelerationStructureMotionInfoFlagsNV) -> Self {
60724        self.inner.flags = value;
60725        self
60726    }
60727    ///Prepend a struct to the pNext chain. See [`AccelerationStructureMotionInfoNV`]'s **Extended By** section for valid types.
60728    #[inline]
60729    pub fn push_next<T: ExtendsAccelerationStructureMotionInfoNV>(
60730        mut self,
60731        next: &'a mut T,
60732    ) -> Self {
60733        unsafe {
60734            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
60735            (*next_ptr).p_next = self.inner.p_next as *mut _;
60736            self.inner.p_next = <*mut BaseOutStructure>::cast::<
60737                core::ffi::c_void,
60738            >(next_ptr) as *const _;
60739        }
60740        self
60741    }
60742}
60743impl<'a> core::ops::Deref for AccelerationStructureMotionInfoNVBuilder<'a> {
60744    type Target = AccelerationStructureMotionInfoNV;
60745    #[inline]
60746    fn deref(&self) -> &Self::Target {
60747        &self.inner
60748    }
60749}
60750impl<'a> core::ops::DerefMut for AccelerationStructureMotionInfoNVBuilder<'a> {
60751    #[inline]
60752    fn deref_mut(&mut self) -> &mut Self::Target {
60753        &mut self.inner
60754    }
60755}
60756///Builder for [`SRTDataNV`].
60757pub struct SRTDataNVBuilder {
60758    inner: SRTDataNV,
60759}
60760impl SRTDataNV {
60761    /// Start building this struct.
60762    #[inline]
60763    pub fn builder() -> SRTDataNVBuilder {
60764        SRTDataNVBuilder {
60765            inner: SRTDataNV { ..Default::default() },
60766        }
60767    }
60768}
60769impl SRTDataNVBuilder {
60770    #[inline]
60771    pub fn sx(mut self, value: f32) -> Self {
60772        self.inner.sx = value;
60773        self
60774    }
60775    #[inline]
60776    pub fn a(mut self, value: f32) -> Self {
60777        self.inner.a = value;
60778        self
60779    }
60780    #[inline]
60781    pub fn b(mut self, value: f32) -> Self {
60782        self.inner.b = value;
60783        self
60784    }
60785    #[inline]
60786    pub fn pvx(mut self, value: f32) -> Self {
60787        self.inner.pvx = value;
60788        self
60789    }
60790    #[inline]
60791    pub fn sy(mut self, value: f32) -> Self {
60792        self.inner.sy = value;
60793        self
60794    }
60795    #[inline]
60796    pub fn c(mut self, value: f32) -> Self {
60797        self.inner.c = value;
60798        self
60799    }
60800    #[inline]
60801    pub fn pvy(mut self, value: f32) -> Self {
60802        self.inner.pvy = value;
60803        self
60804    }
60805    #[inline]
60806    pub fn sz(mut self, value: f32) -> Self {
60807        self.inner.sz = value;
60808        self
60809    }
60810    #[inline]
60811    pub fn pvz(mut self, value: f32) -> Self {
60812        self.inner.pvz = value;
60813        self
60814    }
60815    #[inline]
60816    pub fn qx(mut self, value: f32) -> Self {
60817        self.inner.qx = value;
60818        self
60819    }
60820    #[inline]
60821    pub fn qy(mut self, value: f32) -> Self {
60822        self.inner.qy = value;
60823        self
60824    }
60825    #[inline]
60826    pub fn qz(mut self, value: f32) -> Self {
60827        self.inner.qz = value;
60828        self
60829    }
60830    #[inline]
60831    pub fn qw(mut self, value: f32) -> Self {
60832        self.inner.qw = value;
60833        self
60834    }
60835    #[inline]
60836    pub fn tx(mut self, value: f32) -> Self {
60837        self.inner.tx = value;
60838        self
60839    }
60840    #[inline]
60841    pub fn ty(mut self, value: f32) -> Self {
60842        self.inner.ty = value;
60843        self
60844    }
60845    #[inline]
60846    pub fn tz(mut self, value: f32) -> Self {
60847        self.inner.tz = value;
60848        self
60849    }
60850}
60851impl core::ops::Deref for SRTDataNVBuilder {
60852    type Target = SRTDataNV;
60853    #[inline]
60854    fn deref(&self) -> &Self::Target {
60855        &self.inner
60856    }
60857}
60858impl core::ops::DerefMut for SRTDataNVBuilder {
60859    #[inline]
60860    fn deref_mut(&mut self) -> &mut Self::Target {
60861        &mut self.inner
60862    }
60863}
60864///Builder for [`AccelerationStructureMotionInstanceNV`].
60865pub struct AccelerationStructureMotionInstanceNVBuilder {
60866    inner: AccelerationStructureMotionInstanceNV,
60867}
60868impl AccelerationStructureMotionInstanceNV {
60869    /// Start building this struct.
60870    #[inline]
60871    pub fn builder() -> AccelerationStructureMotionInstanceNVBuilder {
60872        AccelerationStructureMotionInstanceNVBuilder {
60873            inner: AccelerationStructureMotionInstanceNV {
60874                ..Default::default()
60875            },
60876        }
60877    }
60878}
60879impl AccelerationStructureMotionInstanceNVBuilder {
60880    #[inline]
60881    pub fn r#type(mut self, value: AccelerationStructureMotionInstanceTypeNV) -> Self {
60882        self.inner.r#type = value;
60883        self
60884    }
60885    #[inline]
60886    pub fn flags(mut self, value: AccelerationStructureMotionInstanceFlagsNV) -> Self {
60887        self.inner.flags = value;
60888        self
60889    }
60890    #[inline]
60891    pub fn data(mut self, value: AccelerationStructureMotionInstanceDataNV) -> Self {
60892        self.inner.data = value;
60893        self
60894    }
60895}
60896impl core::ops::Deref for AccelerationStructureMotionInstanceNVBuilder {
60897    type Target = AccelerationStructureMotionInstanceNV;
60898    #[inline]
60899    fn deref(&self) -> &Self::Target {
60900        &self.inner
60901    }
60902}
60903impl core::ops::DerefMut for AccelerationStructureMotionInstanceNVBuilder {
60904    #[inline]
60905    fn deref_mut(&mut self) -> &mut Self::Target {
60906        &mut self.inner
60907    }
60908}
60909///Builder for [`MemoryGetRemoteAddressInfoNV`] with lifetime-tied pNext safety.
60910pub struct MemoryGetRemoteAddressInfoNVBuilder<'a> {
60911    inner: MemoryGetRemoteAddressInfoNV,
60912    _marker: core::marker::PhantomData<&'a ()>,
60913}
60914impl MemoryGetRemoteAddressInfoNV {
60915    /// Start building this struct; `s_type` is already set to the correct variant.
60916    #[inline]
60917    pub fn builder<'a>() -> MemoryGetRemoteAddressInfoNVBuilder<'a> {
60918        MemoryGetRemoteAddressInfoNVBuilder {
60919            inner: MemoryGetRemoteAddressInfoNV {
60920                s_type: StructureType::from_raw(1000371000i32),
60921                ..Default::default()
60922            },
60923            _marker: core::marker::PhantomData,
60924        }
60925    }
60926}
60927impl<'a> MemoryGetRemoteAddressInfoNVBuilder<'a> {
60928    #[inline]
60929    pub fn memory(mut self, value: DeviceMemory) -> Self {
60930        self.inner.memory = value;
60931        self
60932    }
60933    #[inline]
60934    pub fn handle_type(mut self, value: ExternalMemoryHandleTypeFlagBits) -> Self {
60935        self.inner.handle_type = value;
60936        self
60937    }
60938    ///Prepend a struct to the pNext chain. See [`MemoryGetRemoteAddressInfoNV`]'s **Extended By** section for valid types.
60939    #[inline]
60940    pub fn push_next<T: ExtendsMemoryGetRemoteAddressInfoNV>(
60941        mut self,
60942        next: &'a mut T,
60943    ) -> Self {
60944        unsafe {
60945            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
60946            (*next_ptr).p_next = self.inner.p_next as *mut _;
60947            self.inner.p_next = <*mut BaseOutStructure>::cast::<
60948                core::ffi::c_void,
60949            >(next_ptr) as *const _;
60950        }
60951        self
60952    }
60953}
60954impl<'a> core::ops::Deref for MemoryGetRemoteAddressInfoNVBuilder<'a> {
60955    type Target = MemoryGetRemoteAddressInfoNV;
60956    #[inline]
60957    fn deref(&self) -> &Self::Target {
60958        &self.inner
60959    }
60960}
60961impl<'a> core::ops::DerefMut for MemoryGetRemoteAddressInfoNVBuilder<'a> {
60962    #[inline]
60963    fn deref_mut(&mut self) -> &mut Self::Target {
60964        &mut self.inner
60965    }
60966}
60967///Builder for [`ImportMemoryBufferCollectionFUCHSIA`] with lifetime-tied pNext safety.
60968pub struct ImportMemoryBufferCollectionFUCHSIABuilder<'a> {
60969    inner: ImportMemoryBufferCollectionFUCHSIA,
60970    _marker: core::marker::PhantomData<&'a ()>,
60971}
60972impl ImportMemoryBufferCollectionFUCHSIA {
60973    /// Start building this struct; `s_type` is already set to the correct variant.
60974    #[inline]
60975    pub fn builder<'a>() -> ImportMemoryBufferCollectionFUCHSIABuilder<'a> {
60976        ImportMemoryBufferCollectionFUCHSIABuilder {
60977            inner: ImportMemoryBufferCollectionFUCHSIA {
60978                s_type: StructureType::from_raw(1000366001i32),
60979                ..Default::default()
60980            },
60981            _marker: core::marker::PhantomData,
60982        }
60983    }
60984}
60985impl<'a> ImportMemoryBufferCollectionFUCHSIABuilder<'a> {
60986    #[inline]
60987    pub fn collection(mut self, value: BufferCollectionFUCHSIA) -> Self {
60988        self.inner.collection = value;
60989        self
60990    }
60991    #[inline]
60992    pub fn index(mut self, value: u32) -> Self {
60993        self.inner.index = value;
60994        self
60995    }
60996    ///Prepend a struct to the pNext chain. See [`ImportMemoryBufferCollectionFUCHSIA`]'s **Extended By** section for valid types.
60997    #[inline]
60998    pub fn push_next<T: ExtendsImportMemoryBufferCollectionFUCHSIA>(
60999        mut self,
61000        next: &'a mut T,
61001    ) -> Self {
61002        unsafe {
61003            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
61004            (*next_ptr).p_next = self.inner.p_next as *mut _;
61005            self.inner.p_next = <*mut BaseOutStructure>::cast::<
61006                core::ffi::c_void,
61007            >(next_ptr) as *const _;
61008        }
61009        self
61010    }
61011}
61012impl<'a> core::ops::Deref for ImportMemoryBufferCollectionFUCHSIABuilder<'a> {
61013    type Target = ImportMemoryBufferCollectionFUCHSIA;
61014    #[inline]
61015    fn deref(&self) -> &Self::Target {
61016        &self.inner
61017    }
61018}
61019impl<'a> core::ops::DerefMut for ImportMemoryBufferCollectionFUCHSIABuilder<'a> {
61020    #[inline]
61021    fn deref_mut(&mut self) -> &mut Self::Target {
61022        &mut self.inner
61023    }
61024}
61025///Builder for [`BufferCollectionImageCreateInfoFUCHSIA`] with lifetime-tied pNext safety.
61026pub struct BufferCollectionImageCreateInfoFUCHSIABuilder<'a> {
61027    inner: BufferCollectionImageCreateInfoFUCHSIA,
61028    _marker: core::marker::PhantomData<&'a ()>,
61029}
61030impl BufferCollectionImageCreateInfoFUCHSIA {
61031    /// Start building this struct; `s_type` is already set to the correct variant.
61032    #[inline]
61033    pub fn builder<'a>() -> BufferCollectionImageCreateInfoFUCHSIABuilder<'a> {
61034        BufferCollectionImageCreateInfoFUCHSIABuilder {
61035            inner: BufferCollectionImageCreateInfoFUCHSIA {
61036                s_type: StructureType::from_raw(1000366002i32),
61037                ..Default::default()
61038            },
61039            _marker: core::marker::PhantomData,
61040        }
61041    }
61042}
61043impl<'a> BufferCollectionImageCreateInfoFUCHSIABuilder<'a> {
61044    #[inline]
61045    pub fn collection(mut self, value: BufferCollectionFUCHSIA) -> Self {
61046        self.inner.collection = value;
61047        self
61048    }
61049    #[inline]
61050    pub fn index(mut self, value: u32) -> Self {
61051        self.inner.index = value;
61052        self
61053    }
61054    ///Prepend a struct to the pNext chain. See [`BufferCollectionImageCreateInfoFUCHSIA`]'s **Extended By** section for valid types.
61055    #[inline]
61056    pub fn push_next<T: ExtendsBufferCollectionImageCreateInfoFUCHSIA>(
61057        mut self,
61058        next: &'a mut T,
61059    ) -> Self {
61060        unsafe {
61061            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
61062            (*next_ptr).p_next = self.inner.p_next as *mut _;
61063            self.inner.p_next = <*mut BaseOutStructure>::cast::<
61064                core::ffi::c_void,
61065            >(next_ptr) as *const _;
61066        }
61067        self
61068    }
61069}
61070impl<'a> core::ops::Deref for BufferCollectionImageCreateInfoFUCHSIABuilder<'a> {
61071    type Target = BufferCollectionImageCreateInfoFUCHSIA;
61072    #[inline]
61073    fn deref(&self) -> &Self::Target {
61074        &self.inner
61075    }
61076}
61077impl<'a> core::ops::DerefMut for BufferCollectionImageCreateInfoFUCHSIABuilder<'a> {
61078    #[inline]
61079    fn deref_mut(&mut self) -> &mut Self::Target {
61080        &mut self.inner
61081    }
61082}
61083///Builder for [`BufferCollectionBufferCreateInfoFUCHSIA`] with lifetime-tied pNext safety.
61084pub struct BufferCollectionBufferCreateInfoFUCHSIABuilder<'a> {
61085    inner: BufferCollectionBufferCreateInfoFUCHSIA,
61086    _marker: core::marker::PhantomData<&'a ()>,
61087}
61088impl BufferCollectionBufferCreateInfoFUCHSIA {
61089    /// Start building this struct; `s_type` is already set to the correct variant.
61090    #[inline]
61091    pub fn builder<'a>() -> BufferCollectionBufferCreateInfoFUCHSIABuilder<'a> {
61092        BufferCollectionBufferCreateInfoFUCHSIABuilder {
61093            inner: BufferCollectionBufferCreateInfoFUCHSIA {
61094                s_type: StructureType::from_raw(1000366005i32),
61095                ..Default::default()
61096            },
61097            _marker: core::marker::PhantomData,
61098        }
61099    }
61100}
61101impl<'a> BufferCollectionBufferCreateInfoFUCHSIABuilder<'a> {
61102    #[inline]
61103    pub fn collection(mut self, value: BufferCollectionFUCHSIA) -> Self {
61104        self.inner.collection = value;
61105        self
61106    }
61107    #[inline]
61108    pub fn index(mut self, value: u32) -> Self {
61109        self.inner.index = value;
61110        self
61111    }
61112    ///Prepend a struct to the pNext chain. See [`BufferCollectionBufferCreateInfoFUCHSIA`]'s **Extended By** section for valid types.
61113    #[inline]
61114    pub fn push_next<T: ExtendsBufferCollectionBufferCreateInfoFUCHSIA>(
61115        mut self,
61116        next: &'a mut T,
61117    ) -> Self {
61118        unsafe {
61119            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
61120            (*next_ptr).p_next = self.inner.p_next as *mut _;
61121            self.inner.p_next = <*mut BaseOutStructure>::cast::<
61122                core::ffi::c_void,
61123            >(next_ptr) as *const _;
61124        }
61125        self
61126    }
61127}
61128impl<'a> core::ops::Deref for BufferCollectionBufferCreateInfoFUCHSIABuilder<'a> {
61129    type Target = BufferCollectionBufferCreateInfoFUCHSIA;
61130    #[inline]
61131    fn deref(&self) -> &Self::Target {
61132        &self.inner
61133    }
61134}
61135impl<'a> core::ops::DerefMut for BufferCollectionBufferCreateInfoFUCHSIABuilder<'a> {
61136    #[inline]
61137    fn deref_mut(&mut self) -> &mut Self::Target {
61138        &mut self.inner
61139    }
61140}
61141///Builder for [`BufferCollectionCreateInfoFUCHSIA`] with lifetime-tied pNext safety.
61142pub struct BufferCollectionCreateInfoFUCHSIABuilder<'a> {
61143    inner: BufferCollectionCreateInfoFUCHSIA,
61144    _marker: core::marker::PhantomData<&'a ()>,
61145}
61146impl BufferCollectionCreateInfoFUCHSIA {
61147    /// Start building this struct; `s_type` is already set to the correct variant.
61148    #[inline]
61149    pub fn builder<'a>() -> BufferCollectionCreateInfoFUCHSIABuilder<'a> {
61150        BufferCollectionCreateInfoFUCHSIABuilder {
61151            inner: BufferCollectionCreateInfoFUCHSIA {
61152                s_type: StructureType::from_raw(1000366000i32),
61153                ..Default::default()
61154            },
61155            _marker: core::marker::PhantomData,
61156        }
61157    }
61158}
61159impl<'a> BufferCollectionCreateInfoFUCHSIABuilder<'a> {
61160    #[inline]
61161    pub fn collection_token(mut self, value: u32) -> Self {
61162        self.inner.collection_token = value;
61163        self
61164    }
61165    ///Prepend a struct to the pNext chain. See [`BufferCollectionCreateInfoFUCHSIA`]'s **Extended By** section for valid types.
61166    #[inline]
61167    pub fn push_next<T: ExtendsBufferCollectionCreateInfoFUCHSIA>(
61168        mut self,
61169        next: &'a mut T,
61170    ) -> Self {
61171        unsafe {
61172            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
61173            (*next_ptr).p_next = self.inner.p_next as *mut _;
61174            self.inner.p_next = <*mut BaseOutStructure>::cast::<
61175                core::ffi::c_void,
61176            >(next_ptr) as *const _;
61177        }
61178        self
61179    }
61180}
61181impl<'a> core::ops::Deref for BufferCollectionCreateInfoFUCHSIABuilder<'a> {
61182    type Target = BufferCollectionCreateInfoFUCHSIA;
61183    #[inline]
61184    fn deref(&self) -> &Self::Target {
61185        &self.inner
61186    }
61187}
61188impl<'a> core::ops::DerefMut for BufferCollectionCreateInfoFUCHSIABuilder<'a> {
61189    #[inline]
61190    fn deref_mut(&mut self) -> &mut Self::Target {
61191        &mut self.inner
61192    }
61193}
61194///Builder for [`BufferCollectionPropertiesFUCHSIA`] with lifetime-tied pNext safety.
61195pub struct BufferCollectionPropertiesFUCHSIABuilder<'a> {
61196    inner: BufferCollectionPropertiesFUCHSIA,
61197    _marker: core::marker::PhantomData<&'a ()>,
61198}
61199impl BufferCollectionPropertiesFUCHSIA {
61200    /// Start building this struct; `s_type` is already set to the correct variant.
61201    #[inline]
61202    pub fn builder<'a>() -> BufferCollectionPropertiesFUCHSIABuilder<'a> {
61203        BufferCollectionPropertiesFUCHSIABuilder {
61204            inner: BufferCollectionPropertiesFUCHSIA {
61205                s_type: StructureType::from_raw(1000366003i32),
61206                ..Default::default()
61207            },
61208            _marker: core::marker::PhantomData,
61209        }
61210    }
61211}
61212impl<'a> BufferCollectionPropertiesFUCHSIABuilder<'a> {
61213    #[inline]
61214    pub fn memory_type_bits(mut self, value: u32) -> Self {
61215        self.inner.memory_type_bits = value;
61216        self
61217    }
61218    #[inline]
61219    pub fn buffer_count(mut self, value: u32) -> Self {
61220        self.inner.buffer_count = value;
61221        self
61222    }
61223    #[inline]
61224    pub fn create_info_index(mut self, value: u32) -> Self {
61225        self.inner.create_info_index = value;
61226        self
61227    }
61228    #[inline]
61229    pub fn sysmem_pixel_format(mut self, value: u64) -> Self {
61230        self.inner.sysmem_pixel_format = value;
61231        self
61232    }
61233    #[inline]
61234    pub fn format_features(mut self, value: FormatFeatureFlags) -> Self {
61235        self.inner.format_features = value;
61236        self
61237    }
61238    #[inline]
61239    pub fn sysmem_color_space_index(mut self, value: SysmemColorSpaceFUCHSIA) -> Self {
61240        self.inner.sysmem_color_space_index = value;
61241        self
61242    }
61243    #[inline]
61244    pub fn sampler_ycbcr_conversion_components(
61245        mut self,
61246        value: ComponentMapping,
61247    ) -> Self {
61248        self.inner.sampler_ycbcr_conversion_components = value;
61249        self
61250    }
61251    #[inline]
61252    pub fn suggested_ycbcr_model(mut self, value: SamplerYcbcrModelConversion) -> Self {
61253        self.inner.suggested_ycbcr_model = value;
61254        self
61255    }
61256    #[inline]
61257    pub fn suggested_ycbcr_range(mut self, value: SamplerYcbcrRange) -> Self {
61258        self.inner.suggested_ycbcr_range = value;
61259        self
61260    }
61261    #[inline]
61262    pub fn suggested_x_chroma_offset(mut self, value: ChromaLocation) -> Self {
61263        self.inner.suggested_x_chroma_offset = value;
61264        self
61265    }
61266    #[inline]
61267    pub fn suggested_y_chroma_offset(mut self, value: ChromaLocation) -> Self {
61268        self.inner.suggested_y_chroma_offset = value;
61269        self
61270    }
61271}
61272impl<'a> core::ops::Deref for BufferCollectionPropertiesFUCHSIABuilder<'a> {
61273    type Target = BufferCollectionPropertiesFUCHSIA;
61274    #[inline]
61275    fn deref(&self) -> &Self::Target {
61276        &self.inner
61277    }
61278}
61279impl<'a> core::ops::DerefMut for BufferCollectionPropertiesFUCHSIABuilder<'a> {
61280    #[inline]
61281    fn deref_mut(&mut self) -> &mut Self::Target {
61282        &mut self.inner
61283    }
61284}
61285///Builder for [`BufferConstraintsInfoFUCHSIA`] with lifetime-tied pNext safety.
61286pub struct BufferConstraintsInfoFUCHSIABuilder<'a> {
61287    inner: BufferConstraintsInfoFUCHSIA,
61288    _marker: core::marker::PhantomData<&'a ()>,
61289}
61290impl BufferConstraintsInfoFUCHSIA {
61291    /// Start building this struct; `s_type` is already set to the correct variant.
61292    #[inline]
61293    pub fn builder<'a>() -> BufferConstraintsInfoFUCHSIABuilder<'a> {
61294        BufferConstraintsInfoFUCHSIABuilder {
61295            inner: BufferConstraintsInfoFUCHSIA {
61296                s_type: StructureType::from_raw(1000366004i32),
61297                ..Default::default()
61298            },
61299            _marker: core::marker::PhantomData,
61300        }
61301    }
61302}
61303impl<'a> BufferConstraintsInfoFUCHSIABuilder<'a> {
61304    #[inline]
61305    pub fn create_info(mut self, value: BufferCreateInfo) -> Self {
61306        self.inner.create_info = value;
61307        self
61308    }
61309    #[inline]
61310    pub fn required_format_features(mut self, value: FormatFeatureFlags) -> Self {
61311        self.inner.required_format_features = value;
61312        self
61313    }
61314    #[inline]
61315    pub fn buffer_collection_constraints(
61316        mut self,
61317        value: BufferCollectionConstraintsInfoFUCHSIA,
61318    ) -> Self {
61319        self.inner.buffer_collection_constraints = value;
61320        self
61321    }
61322    ///Prepend a struct to the pNext chain. See [`BufferConstraintsInfoFUCHSIA`]'s **Extended By** section for valid types.
61323    #[inline]
61324    pub fn push_next<T: ExtendsBufferConstraintsInfoFUCHSIA>(
61325        mut self,
61326        next: &'a mut T,
61327    ) -> Self {
61328        unsafe {
61329            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
61330            (*next_ptr).p_next = self.inner.p_next as *mut _;
61331            self.inner.p_next = <*mut BaseOutStructure>::cast::<
61332                core::ffi::c_void,
61333            >(next_ptr) as *const _;
61334        }
61335        self
61336    }
61337}
61338impl<'a> core::ops::Deref for BufferConstraintsInfoFUCHSIABuilder<'a> {
61339    type Target = BufferConstraintsInfoFUCHSIA;
61340    #[inline]
61341    fn deref(&self) -> &Self::Target {
61342        &self.inner
61343    }
61344}
61345impl<'a> core::ops::DerefMut for BufferConstraintsInfoFUCHSIABuilder<'a> {
61346    #[inline]
61347    fn deref_mut(&mut self) -> &mut Self::Target {
61348        &mut self.inner
61349    }
61350}
61351///Builder for [`SysmemColorSpaceFUCHSIA`] with lifetime-tied pNext safety.
61352pub struct SysmemColorSpaceFUCHSIABuilder<'a> {
61353    inner: SysmemColorSpaceFUCHSIA,
61354    _marker: core::marker::PhantomData<&'a ()>,
61355}
61356impl SysmemColorSpaceFUCHSIA {
61357    /// Start building this struct; `s_type` is already set to the correct variant.
61358    #[inline]
61359    pub fn builder<'a>() -> SysmemColorSpaceFUCHSIABuilder<'a> {
61360        SysmemColorSpaceFUCHSIABuilder {
61361            inner: SysmemColorSpaceFUCHSIA {
61362                s_type: StructureType::from_raw(1000366008i32),
61363                ..Default::default()
61364            },
61365            _marker: core::marker::PhantomData,
61366        }
61367    }
61368}
61369impl<'a> SysmemColorSpaceFUCHSIABuilder<'a> {
61370    #[inline]
61371    pub fn color_space(mut self, value: u32) -> Self {
61372        self.inner.color_space = value;
61373        self
61374    }
61375    ///Prepend a struct to the pNext chain. See [`SysmemColorSpaceFUCHSIA`]'s **Extended By** section for valid types.
61376    #[inline]
61377    pub fn push_next<T: ExtendsSysmemColorSpaceFUCHSIA>(
61378        mut self,
61379        next: &'a mut T,
61380    ) -> Self {
61381        unsafe {
61382            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
61383            (*next_ptr).p_next = self.inner.p_next as *mut _;
61384            self.inner.p_next = <*mut BaseOutStructure>::cast::<
61385                core::ffi::c_void,
61386            >(next_ptr) as *const _;
61387        }
61388        self
61389    }
61390}
61391impl<'a> core::ops::Deref for SysmemColorSpaceFUCHSIABuilder<'a> {
61392    type Target = SysmemColorSpaceFUCHSIA;
61393    #[inline]
61394    fn deref(&self) -> &Self::Target {
61395        &self.inner
61396    }
61397}
61398impl<'a> core::ops::DerefMut for SysmemColorSpaceFUCHSIABuilder<'a> {
61399    #[inline]
61400    fn deref_mut(&mut self) -> &mut Self::Target {
61401        &mut self.inner
61402    }
61403}
61404///Builder for [`ImageFormatConstraintsInfoFUCHSIA`] with lifetime-tied pNext safety.
61405pub struct ImageFormatConstraintsInfoFUCHSIABuilder<'a> {
61406    inner: ImageFormatConstraintsInfoFUCHSIA,
61407    _marker: core::marker::PhantomData<&'a ()>,
61408}
61409impl ImageFormatConstraintsInfoFUCHSIA {
61410    /// Start building this struct; `s_type` is already set to the correct variant.
61411    #[inline]
61412    pub fn builder<'a>() -> ImageFormatConstraintsInfoFUCHSIABuilder<'a> {
61413        ImageFormatConstraintsInfoFUCHSIABuilder {
61414            inner: ImageFormatConstraintsInfoFUCHSIA {
61415                s_type: StructureType::from_raw(1000366007i32),
61416                ..Default::default()
61417            },
61418            _marker: core::marker::PhantomData,
61419        }
61420    }
61421}
61422impl<'a> ImageFormatConstraintsInfoFUCHSIABuilder<'a> {
61423    #[inline]
61424    pub fn image_create_info(mut self, value: ImageCreateInfo) -> Self {
61425        self.inner.image_create_info = value;
61426        self
61427    }
61428    #[inline]
61429    pub fn required_format_features(mut self, value: FormatFeatureFlags) -> Self {
61430        self.inner.required_format_features = value;
61431        self
61432    }
61433    #[inline]
61434    pub fn flags(mut self, value: ImageFormatConstraintsFlagsFUCHSIA) -> Self {
61435        self.inner.flags = value;
61436        self
61437    }
61438    #[inline]
61439    pub fn sysmem_pixel_format(mut self, value: u64) -> Self {
61440        self.inner.sysmem_pixel_format = value;
61441        self
61442    }
61443    #[inline]
61444    pub fn color_spaces(mut self, slice: &'a [SysmemColorSpaceFUCHSIA]) -> Self {
61445        self.inner.color_space_count = slice.len() as u32;
61446        self.inner.p_color_spaces = slice.as_ptr();
61447        self
61448    }
61449    ///Prepend a struct to the pNext chain. See [`ImageFormatConstraintsInfoFUCHSIA`]'s **Extended By** section for valid types.
61450    #[inline]
61451    pub fn push_next<T: ExtendsImageFormatConstraintsInfoFUCHSIA>(
61452        mut self,
61453        next: &'a mut T,
61454    ) -> Self {
61455        unsafe {
61456            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
61457            (*next_ptr).p_next = self.inner.p_next as *mut _;
61458            self.inner.p_next = <*mut BaseOutStructure>::cast::<
61459                core::ffi::c_void,
61460            >(next_ptr) as *const _;
61461        }
61462        self
61463    }
61464}
61465impl<'a> core::ops::Deref for ImageFormatConstraintsInfoFUCHSIABuilder<'a> {
61466    type Target = ImageFormatConstraintsInfoFUCHSIA;
61467    #[inline]
61468    fn deref(&self) -> &Self::Target {
61469        &self.inner
61470    }
61471}
61472impl<'a> core::ops::DerefMut for ImageFormatConstraintsInfoFUCHSIABuilder<'a> {
61473    #[inline]
61474    fn deref_mut(&mut self) -> &mut Self::Target {
61475        &mut self.inner
61476    }
61477}
61478///Builder for [`ImageConstraintsInfoFUCHSIA`] with lifetime-tied pNext safety.
61479pub struct ImageConstraintsInfoFUCHSIABuilder<'a> {
61480    inner: ImageConstraintsInfoFUCHSIA,
61481    _marker: core::marker::PhantomData<&'a ()>,
61482}
61483impl ImageConstraintsInfoFUCHSIA {
61484    /// Start building this struct; `s_type` is already set to the correct variant.
61485    #[inline]
61486    pub fn builder<'a>() -> ImageConstraintsInfoFUCHSIABuilder<'a> {
61487        ImageConstraintsInfoFUCHSIABuilder {
61488            inner: ImageConstraintsInfoFUCHSIA {
61489                s_type: StructureType::from_raw(1000366006i32),
61490                ..Default::default()
61491            },
61492            _marker: core::marker::PhantomData,
61493        }
61494    }
61495}
61496impl<'a> ImageConstraintsInfoFUCHSIABuilder<'a> {
61497    #[inline]
61498    pub fn format_constraints(
61499        mut self,
61500        slice: &'a [ImageFormatConstraintsInfoFUCHSIA],
61501    ) -> Self {
61502        self.inner.format_constraints_count = slice.len() as u32;
61503        self.inner.p_format_constraints = slice.as_ptr();
61504        self
61505    }
61506    #[inline]
61507    pub fn buffer_collection_constraints(
61508        mut self,
61509        value: BufferCollectionConstraintsInfoFUCHSIA,
61510    ) -> Self {
61511        self.inner.buffer_collection_constraints = value;
61512        self
61513    }
61514    #[inline]
61515    pub fn flags(mut self, value: ImageConstraintsInfoFlagsFUCHSIA) -> Self {
61516        self.inner.flags = value;
61517        self
61518    }
61519    ///Prepend a struct to the pNext chain. See [`ImageConstraintsInfoFUCHSIA`]'s **Extended By** section for valid types.
61520    #[inline]
61521    pub fn push_next<T: ExtendsImageConstraintsInfoFUCHSIA>(
61522        mut self,
61523        next: &'a mut T,
61524    ) -> Self {
61525        unsafe {
61526            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
61527            (*next_ptr).p_next = self.inner.p_next as *mut _;
61528            self.inner.p_next = <*mut BaseOutStructure>::cast::<
61529                core::ffi::c_void,
61530            >(next_ptr) as *const _;
61531        }
61532        self
61533    }
61534}
61535impl<'a> core::ops::Deref for ImageConstraintsInfoFUCHSIABuilder<'a> {
61536    type Target = ImageConstraintsInfoFUCHSIA;
61537    #[inline]
61538    fn deref(&self) -> &Self::Target {
61539        &self.inner
61540    }
61541}
61542impl<'a> core::ops::DerefMut for ImageConstraintsInfoFUCHSIABuilder<'a> {
61543    #[inline]
61544    fn deref_mut(&mut self) -> &mut Self::Target {
61545        &mut self.inner
61546    }
61547}
61548///Builder for [`BufferCollectionConstraintsInfoFUCHSIA`] with lifetime-tied pNext safety.
61549pub struct BufferCollectionConstraintsInfoFUCHSIABuilder<'a> {
61550    inner: BufferCollectionConstraintsInfoFUCHSIA,
61551    _marker: core::marker::PhantomData<&'a ()>,
61552}
61553impl BufferCollectionConstraintsInfoFUCHSIA {
61554    /// Start building this struct; `s_type` is already set to the correct variant.
61555    #[inline]
61556    pub fn builder<'a>() -> BufferCollectionConstraintsInfoFUCHSIABuilder<'a> {
61557        BufferCollectionConstraintsInfoFUCHSIABuilder {
61558            inner: BufferCollectionConstraintsInfoFUCHSIA {
61559                s_type: StructureType::from_raw(1000366009i32),
61560                ..Default::default()
61561            },
61562            _marker: core::marker::PhantomData,
61563        }
61564    }
61565}
61566impl<'a> BufferCollectionConstraintsInfoFUCHSIABuilder<'a> {
61567    #[inline]
61568    pub fn min_buffer_count(mut self, value: u32) -> Self {
61569        self.inner.min_buffer_count = value;
61570        self
61571    }
61572    #[inline]
61573    pub fn max_buffer_count(mut self, value: u32) -> Self {
61574        self.inner.max_buffer_count = value;
61575        self
61576    }
61577    #[inline]
61578    pub fn min_buffer_count_for_camping(mut self, value: u32) -> Self {
61579        self.inner.min_buffer_count_for_camping = value;
61580        self
61581    }
61582    #[inline]
61583    pub fn min_buffer_count_for_dedicated_slack(mut self, value: u32) -> Self {
61584        self.inner.min_buffer_count_for_dedicated_slack = value;
61585        self
61586    }
61587    #[inline]
61588    pub fn min_buffer_count_for_shared_slack(mut self, value: u32) -> Self {
61589        self.inner.min_buffer_count_for_shared_slack = value;
61590        self
61591    }
61592    ///Prepend a struct to the pNext chain. See [`BufferCollectionConstraintsInfoFUCHSIA`]'s **Extended By** section for valid types.
61593    #[inline]
61594    pub fn push_next<T: ExtendsBufferCollectionConstraintsInfoFUCHSIA>(
61595        mut self,
61596        next: &'a mut T,
61597    ) -> Self {
61598        unsafe {
61599            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
61600            (*next_ptr).p_next = self.inner.p_next as *mut _;
61601            self.inner.p_next = <*mut BaseOutStructure>::cast::<
61602                core::ffi::c_void,
61603            >(next_ptr) as *const _;
61604        }
61605        self
61606    }
61607}
61608impl<'a> core::ops::Deref for BufferCollectionConstraintsInfoFUCHSIABuilder<'a> {
61609    type Target = BufferCollectionConstraintsInfoFUCHSIA;
61610    #[inline]
61611    fn deref(&self) -> &Self::Target {
61612        &self.inner
61613    }
61614}
61615impl<'a> core::ops::DerefMut for BufferCollectionConstraintsInfoFUCHSIABuilder<'a> {
61616    #[inline]
61617    fn deref_mut(&mut self) -> &mut Self::Target {
61618        &mut self.inner
61619    }
61620}
61621///Builder for [`CudaModuleCreateInfoNV`] with lifetime-tied pNext safety.
61622pub struct CudaModuleCreateInfoNVBuilder<'a> {
61623    inner: CudaModuleCreateInfoNV,
61624    _marker: core::marker::PhantomData<&'a ()>,
61625}
61626impl CudaModuleCreateInfoNV {
61627    /// Start building this struct; `s_type` is already set to the correct variant.
61628    #[inline]
61629    pub fn builder<'a>() -> CudaModuleCreateInfoNVBuilder<'a> {
61630        CudaModuleCreateInfoNVBuilder {
61631            inner: CudaModuleCreateInfoNV {
61632                s_type: StructureType::from_raw(1000307000i32),
61633                ..Default::default()
61634            },
61635            _marker: core::marker::PhantomData,
61636        }
61637    }
61638}
61639impl<'a> CudaModuleCreateInfoNVBuilder<'a> {
61640    #[inline]
61641    pub fn data(mut self, slice: &'a [core::ffi::c_void]) -> Self {
61642        self.inner.data_size = slice.len();
61643        self.inner.p_data = slice.as_ptr();
61644        self
61645    }
61646    ///Prepend a struct to the pNext chain. See [`CudaModuleCreateInfoNV`]'s **Extended By** section for valid types.
61647    #[inline]
61648    pub fn push_next<T: ExtendsCudaModuleCreateInfoNV>(
61649        mut self,
61650        next: &'a mut T,
61651    ) -> Self {
61652        unsafe {
61653            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
61654            (*next_ptr).p_next = self.inner.p_next as *mut _;
61655            self.inner.p_next = <*mut BaseOutStructure>::cast::<
61656                core::ffi::c_void,
61657            >(next_ptr) as *const _;
61658        }
61659        self
61660    }
61661}
61662impl<'a> core::ops::Deref for CudaModuleCreateInfoNVBuilder<'a> {
61663    type Target = CudaModuleCreateInfoNV;
61664    #[inline]
61665    fn deref(&self) -> &Self::Target {
61666        &self.inner
61667    }
61668}
61669impl<'a> core::ops::DerefMut for CudaModuleCreateInfoNVBuilder<'a> {
61670    #[inline]
61671    fn deref_mut(&mut self) -> &mut Self::Target {
61672        &mut self.inner
61673    }
61674}
61675///Builder for [`CudaFunctionCreateInfoNV`] with lifetime-tied pNext safety.
61676pub struct CudaFunctionCreateInfoNVBuilder<'a> {
61677    inner: CudaFunctionCreateInfoNV,
61678    _marker: core::marker::PhantomData<&'a ()>,
61679}
61680impl CudaFunctionCreateInfoNV {
61681    /// Start building this struct; `s_type` is already set to the correct variant.
61682    #[inline]
61683    pub fn builder<'a>() -> CudaFunctionCreateInfoNVBuilder<'a> {
61684        CudaFunctionCreateInfoNVBuilder {
61685            inner: CudaFunctionCreateInfoNV {
61686                s_type: StructureType::from_raw(1000307001i32),
61687                ..Default::default()
61688            },
61689            _marker: core::marker::PhantomData,
61690        }
61691    }
61692}
61693impl<'a> CudaFunctionCreateInfoNVBuilder<'a> {
61694    #[inline]
61695    pub fn module(mut self, value: CudaModuleNV) -> Self {
61696        self.inner.module = value;
61697        self
61698    }
61699    #[inline]
61700    pub fn name(mut self, value: &'a core::ffi::CStr) -> Self {
61701        self.inner.p_name = value.as_ptr();
61702        self
61703    }
61704    ///Prepend a struct to the pNext chain. See [`CudaFunctionCreateInfoNV`]'s **Extended By** section for valid types.
61705    #[inline]
61706    pub fn push_next<T: ExtendsCudaFunctionCreateInfoNV>(
61707        mut self,
61708        next: &'a mut T,
61709    ) -> Self {
61710        unsafe {
61711            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
61712            (*next_ptr).p_next = self.inner.p_next as *mut _;
61713            self.inner.p_next = <*mut BaseOutStructure>::cast::<
61714                core::ffi::c_void,
61715            >(next_ptr) as *const _;
61716        }
61717        self
61718    }
61719}
61720impl<'a> core::ops::Deref for CudaFunctionCreateInfoNVBuilder<'a> {
61721    type Target = CudaFunctionCreateInfoNV;
61722    #[inline]
61723    fn deref(&self) -> &Self::Target {
61724        &self.inner
61725    }
61726}
61727impl<'a> core::ops::DerefMut for CudaFunctionCreateInfoNVBuilder<'a> {
61728    #[inline]
61729    fn deref_mut(&mut self) -> &mut Self::Target {
61730        &mut self.inner
61731    }
61732}
61733///Builder for [`CudaLaunchInfoNV`] with lifetime-tied pNext safety.
61734pub struct CudaLaunchInfoNVBuilder<'a> {
61735    inner: CudaLaunchInfoNV,
61736    _marker: core::marker::PhantomData<&'a ()>,
61737}
61738impl CudaLaunchInfoNV {
61739    /// Start building this struct; `s_type` is already set to the correct variant.
61740    #[inline]
61741    pub fn builder<'a>() -> CudaLaunchInfoNVBuilder<'a> {
61742        CudaLaunchInfoNVBuilder {
61743            inner: CudaLaunchInfoNV {
61744                s_type: StructureType::from_raw(1000307002i32),
61745                ..Default::default()
61746            },
61747            _marker: core::marker::PhantomData,
61748        }
61749    }
61750}
61751impl<'a> CudaLaunchInfoNVBuilder<'a> {
61752    #[inline]
61753    pub fn function(mut self, value: CudaFunctionNV) -> Self {
61754        self.inner.function = value;
61755        self
61756    }
61757    #[inline]
61758    pub fn grid_dim_x(mut self, value: u32) -> Self {
61759        self.inner.grid_dim_x = value;
61760        self
61761    }
61762    #[inline]
61763    pub fn grid_dim_y(mut self, value: u32) -> Self {
61764        self.inner.grid_dim_y = value;
61765        self
61766    }
61767    #[inline]
61768    pub fn grid_dim_z(mut self, value: u32) -> Self {
61769        self.inner.grid_dim_z = value;
61770        self
61771    }
61772    #[inline]
61773    pub fn block_dim_x(mut self, value: u32) -> Self {
61774        self.inner.block_dim_x = value;
61775        self
61776    }
61777    #[inline]
61778    pub fn block_dim_y(mut self, value: u32) -> Self {
61779        self.inner.block_dim_y = value;
61780        self
61781    }
61782    #[inline]
61783    pub fn block_dim_z(mut self, value: u32) -> Self {
61784        self.inner.block_dim_z = value;
61785        self
61786    }
61787    #[inline]
61788    pub fn shared_mem_bytes(mut self, value: u32) -> Self {
61789        self.inner.shared_mem_bytes = value;
61790        self
61791    }
61792    #[inline]
61793    pub fn param_count(mut self, value: usize) -> Self {
61794        self.inner.param_count = value;
61795        self
61796    }
61797    #[inline]
61798    pub fn params(mut self, value: *const *const core::ffi::c_void) -> Self {
61799        self.inner.p_params = value;
61800        self
61801    }
61802    #[inline]
61803    pub fn extra_count(mut self, value: usize) -> Self {
61804        self.inner.extra_count = value;
61805        self
61806    }
61807    #[inline]
61808    pub fn extras(mut self, value: *const *const core::ffi::c_void) -> Self {
61809        self.inner.p_extras = value;
61810        self
61811    }
61812    ///Prepend a struct to the pNext chain. See [`CudaLaunchInfoNV`]'s **Extended By** section for valid types.
61813    #[inline]
61814    pub fn push_next<T: ExtendsCudaLaunchInfoNV>(mut self, next: &'a mut T) -> Self {
61815        unsafe {
61816            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
61817            (*next_ptr).p_next = self.inner.p_next as *mut _;
61818            self.inner.p_next = <*mut BaseOutStructure>::cast::<
61819                core::ffi::c_void,
61820            >(next_ptr) as *const _;
61821        }
61822        self
61823    }
61824}
61825impl<'a> core::ops::Deref for CudaLaunchInfoNVBuilder<'a> {
61826    type Target = CudaLaunchInfoNV;
61827    #[inline]
61828    fn deref(&self) -> &Self::Target {
61829        &self.inner
61830    }
61831}
61832impl<'a> core::ops::DerefMut for CudaLaunchInfoNVBuilder<'a> {
61833    #[inline]
61834    fn deref_mut(&mut self) -> &mut Self::Target {
61835        &mut self.inner
61836    }
61837}
61838///Builder for [`PhysicalDeviceRGBA10X6FormatsFeaturesEXT`] with lifetime-tied pNext safety.
61839pub struct PhysicalDeviceRGBA10X6FormatsFeaturesEXTBuilder<'a> {
61840    inner: PhysicalDeviceRGBA10X6FormatsFeaturesEXT,
61841    _marker: core::marker::PhantomData<&'a ()>,
61842}
61843impl PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
61844    /// Start building this struct; `s_type` is already set to the correct variant.
61845    #[inline]
61846    pub fn builder<'a>() -> PhysicalDeviceRGBA10X6FormatsFeaturesEXTBuilder<'a> {
61847        PhysicalDeviceRGBA10X6FormatsFeaturesEXTBuilder {
61848            inner: PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
61849                s_type: StructureType::from_raw(1000344000i32),
61850                ..Default::default()
61851            },
61852            _marker: core::marker::PhantomData,
61853        }
61854    }
61855}
61856impl<'a> PhysicalDeviceRGBA10X6FormatsFeaturesEXTBuilder<'a> {
61857    #[inline]
61858    pub fn format_rgba10x6_without_y_cb_cr_sampler(mut self, value: bool) -> Self {
61859        self.inner.format_rgba10x6_without_y_cb_cr_sampler = value as u32;
61860        self
61861    }
61862    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceRGBA10X6FormatsFeaturesEXT`]'s **Extended By** section for valid types.
61863    #[inline]
61864    pub fn push_next<T: ExtendsPhysicalDeviceRGBA10X6FormatsFeaturesEXT>(
61865        mut self,
61866        next: &'a mut T,
61867    ) -> Self {
61868        unsafe {
61869            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
61870            (*next_ptr).p_next = self.inner.p_next as *mut _;
61871            self.inner.p_next = <*mut BaseOutStructure>::cast::<
61872                core::ffi::c_void,
61873            >(next_ptr);
61874        }
61875        self
61876    }
61877}
61878impl<'a> core::ops::Deref for PhysicalDeviceRGBA10X6FormatsFeaturesEXTBuilder<'a> {
61879    type Target = PhysicalDeviceRGBA10X6FormatsFeaturesEXT;
61880    #[inline]
61881    fn deref(&self) -> &Self::Target {
61882        &self.inner
61883    }
61884}
61885impl<'a> core::ops::DerefMut for PhysicalDeviceRGBA10X6FormatsFeaturesEXTBuilder<'a> {
61886    #[inline]
61887    fn deref_mut(&mut self) -> &mut Self::Target {
61888        &mut self.inner
61889    }
61890}
61891///Builder for [`FormatProperties3`] with lifetime-tied pNext safety.
61892pub struct FormatProperties3Builder<'a> {
61893    inner: FormatProperties3,
61894    _marker: core::marker::PhantomData<&'a ()>,
61895}
61896impl FormatProperties3 {
61897    /// Start building this struct; `s_type` is already set to the correct variant.
61898    #[inline]
61899    pub fn builder<'a>() -> FormatProperties3Builder<'a> {
61900        FormatProperties3Builder {
61901            inner: FormatProperties3 {
61902                s_type: StructureType::from_raw(1000360000i32),
61903                ..Default::default()
61904            },
61905            _marker: core::marker::PhantomData,
61906        }
61907    }
61908}
61909impl<'a> FormatProperties3Builder<'a> {
61910    #[inline]
61911    pub fn linear_tiling_features(mut self, value: FormatFeatureFlags2) -> Self {
61912        self.inner.linear_tiling_features = value;
61913        self
61914    }
61915    #[inline]
61916    pub fn optimal_tiling_features(mut self, value: FormatFeatureFlags2) -> Self {
61917        self.inner.optimal_tiling_features = value;
61918        self
61919    }
61920    #[inline]
61921    pub fn buffer_features(mut self, value: FormatFeatureFlags2) -> Self {
61922        self.inner.buffer_features = value;
61923        self
61924    }
61925}
61926impl<'a> core::ops::Deref for FormatProperties3Builder<'a> {
61927    type Target = FormatProperties3;
61928    #[inline]
61929    fn deref(&self) -> &Self::Target {
61930        &self.inner
61931    }
61932}
61933impl<'a> core::ops::DerefMut for FormatProperties3Builder<'a> {
61934    #[inline]
61935    fn deref_mut(&mut self) -> &mut Self::Target {
61936        &mut self.inner
61937    }
61938}
61939///Builder for [`DrmFormatModifierPropertiesList2EXT`] with lifetime-tied pNext safety.
61940pub struct DrmFormatModifierPropertiesList2EXTBuilder<'a> {
61941    inner: DrmFormatModifierPropertiesList2EXT,
61942    _marker: core::marker::PhantomData<&'a ()>,
61943}
61944impl DrmFormatModifierPropertiesList2EXT {
61945    /// Start building this struct; `s_type` is already set to the correct variant.
61946    #[inline]
61947    pub fn builder<'a>() -> DrmFormatModifierPropertiesList2EXTBuilder<'a> {
61948        DrmFormatModifierPropertiesList2EXTBuilder {
61949            inner: DrmFormatModifierPropertiesList2EXT {
61950                s_type: StructureType::from_raw(1000158006i32),
61951                ..Default::default()
61952            },
61953            _marker: core::marker::PhantomData,
61954        }
61955    }
61956}
61957impl<'a> DrmFormatModifierPropertiesList2EXTBuilder<'a> {
61958    #[inline]
61959    pub fn drm_format_modifier_count(mut self, value: u32) -> Self {
61960        self.inner.drm_format_modifier_count = value;
61961        self
61962    }
61963    #[inline]
61964    pub fn drm_format_modifier_properties(
61965        mut self,
61966        slice: &'a mut [DrmFormatModifierProperties2EXT],
61967    ) -> Self {
61968        self.inner.drm_format_modifier_count = slice.len() as u32;
61969        self.inner.p_drm_format_modifier_properties = slice.as_mut_ptr();
61970        self
61971    }
61972}
61973impl<'a> core::ops::Deref for DrmFormatModifierPropertiesList2EXTBuilder<'a> {
61974    type Target = DrmFormatModifierPropertiesList2EXT;
61975    #[inline]
61976    fn deref(&self) -> &Self::Target {
61977        &self.inner
61978    }
61979}
61980impl<'a> core::ops::DerefMut for DrmFormatModifierPropertiesList2EXTBuilder<'a> {
61981    #[inline]
61982    fn deref_mut(&mut self) -> &mut Self::Target {
61983        &mut self.inner
61984    }
61985}
61986///Builder for [`DrmFormatModifierProperties2EXT`].
61987pub struct DrmFormatModifierProperties2EXTBuilder {
61988    inner: DrmFormatModifierProperties2EXT,
61989}
61990impl DrmFormatModifierProperties2EXT {
61991    /// Start building this struct.
61992    #[inline]
61993    pub fn builder() -> DrmFormatModifierProperties2EXTBuilder {
61994        DrmFormatModifierProperties2EXTBuilder {
61995            inner: DrmFormatModifierProperties2EXT {
61996                ..Default::default()
61997            },
61998        }
61999    }
62000}
62001impl DrmFormatModifierProperties2EXTBuilder {
62002    #[inline]
62003    pub fn drm_format_modifier(mut self, value: u64) -> Self {
62004        self.inner.drm_format_modifier = value;
62005        self
62006    }
62007    #[inline]
62008    pub fn drm_format_modifier_plane_count(mut self, value: u32) -> Self {
62009        self.inner.drm_format_modifier_plane_count = value;
62010        self
62011    }
62012    #[inline]
62013    pub fn drm_format_modifier_tiling_features(
62014        mut self,
62015        value: FormatFeatureFlags2,
62016    ) -> Self {
62017        self.inner.drm_format_modifier_tiling_features = value;
62018        self
62019    }
62020}
62021impl core::ops::Deref for DrmFormatModifierProperties2EXTBuilder {
62022    type Target = DrmFormatModifierProperties2EXT;
62023    #[inline]
62024    fn deref(&self) -> &Self::Target {
62025        &self.inner
62026    }
62027}
62028impl core::ops::DerefMut for DrmFormatModifierProperties2EXTBuilder {
62029    #[inline]
62030    fn deref_mut(&mut self) -> &mut Self::Target {
62031        &mut self.inner
62032    }
62033}
62034///Builder for [`AndroidHardwareBufferFormatProperties2ANDROID`] with lifetime-tied pNext safety.
62035pub struct AndroidHardwareBufferFormatProperties2ANDROIDBuilder<'a> {
62036    inner: AndroidHardwareBufferFormatProperties2ANDROID,
62037    _marker: core::marker::PhantomData<&'a ()>,
62038}
62039impl AndroidHardwareBufferFormatProperties2ANDROID {
62040    /// Start building this struct; `s_type` is already set to the correct variant.
62041    #[inline]
62042    pub fn builder<'a>() -> AndroidHardwareBufferFormatProperties2ANDROIDBuilder<'a> {
62043        AndroidHardwareBufferFormatProperties2ANDROIDBuilder {
62044            inner: AndroidHardwareBufferFormatProperties2ANDROID {
62045                s_type: StructureType::from_raw(1000129006i32),
62046                ..Default::default()
62047            },
62048            _marker: core::marker::PhantomData,
62049        }
62050    }
62051}
62052impl<'a> AndroidHardwareBufferFormatProperties2ANDROIDBuilder<'a> {
62053    #[inline]
62054    pub fn format(mut self, value: Format) -> Self {
62055        self.inner.format = value;
62056        self
62057    }
62058    #[inline]
62059    pub fn external_format(mut self, value: u64) -> Self {
62060        self.inner.external_format = value;
62061        self
62062    }
62063    #[inline]
62064    pub fn format_features(mut self, value: FormatFeatureFlags2) -> Self {
62065        self.inner.format_features = value;
62066        self
62067    }
62068    #[inline]
62069    pub fn sampler_ycbcr_conversion_components(
62070        mut self,
62071        value: ComponentMapping,
62072    ) -> Self {
62073        self.inner.sampler_ycbcr_conversion_components = value;
62074        self
62075    }
62076    #[inline]
62077    pub fn suggested_ycbcr_model(mut self, value: SamplerYcbcrModelConversion) -> Self {
62078        self.inner.suggested_ycbcr_model = value;
62079        self
62080    }
62081    #[inline]
62082    pub fn suggested_ycbcr_range(mut self, value: SamplerYcbcrRange) -> Self {
62083        self.inner.suggested_ycbcr_range = value;
62084        self
62085    }
62086    #[inline]
62087    pub fn suggested_x_chroma_offset(mut self, value: ChromaLocation) -> Self {
62088        self.inner.suggested_x_chroma_offset = value;
62089        self
62090    }
62091    #[inline]
62092    pub fn suggested_y_chroma_offset(mut self, value: ChromaLocation) -> Self {
62093        self.inner.suggested_y_chroma_offset = value;
62094        self
62095    }
62096}
62097impl<'a> core::ops::Deref for AndroidHardwareBufferFormatProperties2ANDROIDBuilder<'a> {
62098    type Target = AndroidHardwareBufferFormatProperties2ANDROID;
62099    #[inline]
62100    fn deref(&self) -> &Self::Target {
62101        &self.inner
62102    }
62103}
62104impl<'a> core::ops::DerefMut
62105for AndroidHardwareBufferFormatProperties2ANDROIDBuilder<'a> {
62106    #[inline]
62107    fn deref_mut(&mut self) -> &mut Self::Target {
62108        &mut self.inner
62109    }
62110}
62111///Builder for [`PipelineRenderingCreateInfo`] with lifetime-tied pNext safety.
62112pub struct PipelineRenderingCreateInfoBuilder<'a> {
62113    inner: PipelineRenderingCreateInfo,
62114    _marker: core::marker::PhantomData<&'a ()>,
62115}
62116impl PipelineRenderingCreateInfo {
62117    /// Start building this struct; `s_type` is already set to the correct variant.
62118    #[inline]
62119    pub fn builder<'a>() -> PipelineRenderingCreateInfoBuilder<'a> {
62120        PipelineRenderingCreateInfoBuilder {
62121            inner: PipelineRenderingCreateInfo {
62122                s_type: StructureType::from_raw(1000044002i32),
62123                ..Default::default()
62124            },
62125            _marker: core::marker::PhantomData,
62126        }
62127    }
62128}
62129impl<'a> PipelineRenderingCreateInfoBuilder<'a> {
62130    #[inline]
62131    pub fn view_mask(mut self, value: u32) -> Self {
62132        self.inner.view_mask = value;
62133        self
62134    }
62135    #[inline]
62136    pub fn color_attachment_formats(mut self, slice: &'a [Format]) -> Self {
62137        self.inner.color_attachment_count = slice.len() as u32;
62138        self.inner.p_color_attachment_formats = slice.as_ptr();
62139        self
62140    }
62141    #[inline]
62142    pub fn depth_attachment_format(mut self, value: Format) -> Self {
62143        self.inner.depth_attachment_format = value;
62144        self
62145    }
62146    #[inline]
62147    pub fn stencil_attachment_format(mut self, value: Format) -> Self {
62148        self.inner.stencil_attachment_format = value;
62149        self
62150    }
62151    ///Prepend a struct to the pNext chain. See [`PipelineRenderingCreateInfo`]'s **Extended By** section for valid types.
62152    #[inline]
62153    pub fn push_next<T: ExtendsPipelineRenderingCreateInfo>(
62154        mut self,
62155        next: &'a mut T,
62156    ) -> Self {
62157        unsafe {
62158            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
62159            (*next_ptr).p_next = self.inner.p_next as *mut _;
62160            self.inner.p_next = <*mut BaseOutStructure>::cast::<
62161                core::ffi::c_void,
62162            >(next_ptr) as *const _;
62163        }
62164        self
62165    }
62166}
62167impl<'a> core::ops::Deref for PipelineRenderingCreateInfoBuilder<'a> {
62168    type Target = PipelineRenderingCreateInfo;
62169    #[inline]
62170    fn deref(&self) -> &Self::Target {
62171        &self.inner
62172    }
62173}
62174impl<'a> core::ops::DerefMut for PipelineRenderingCreateInfoBuilder<'a> {
62175    #[inline]
62176    fn deref_mut(&mut self) -> &mut Self::Target {
62177        &mut self.inner
62178    }
62179}
62180///Builder for [`RenderingInfo`] with lifetime-tied pNext safety.
62181pub struct RenderingInfoBuilder<'a> {
62182    inner: RenderingInfo,
62183    _marker: core::marker::PhantomData<&'a ()>,
62184}
62185impl RenderingInfo {
62186    /// Start building this struct; `s_type` is already set to the correct variant.
62187    #[inline]
62188    pub fn builder<'a>() -> RenderingInfoBuilder<'a> {
62189        RenderingInfoBuilder {
62190            inner: RenderingInfo {
62191                s_type: StructureType::from_raw(1000044000i32),
62192                ..Default::default()
62193            },
62194            _marker: core::marker::PhantomData,
62195        }
62196    }
62197}
62198impl<'a> RenderingInfoBuilder<'a> {
62199    #[inline]
62200    pub fn flags(mut self, value: RenderingFlags) -> Self {
62201        self.inner.flags = value;
62202        self
62203    }
62204    #[inline]
62205    pub fn render_area(mut self, value: Rect2D) -> Self {
62206        self.inner.render_area = value;
62207        self
62208    }
62209    #[inline]
62210    pub fn layer_count(mut self, value: u32) -> Self {
62211        self.inner.layer_count = value;
62212        self
62213    }
62214    #[inline]
62215    pub fn view_mask(mut self, value: u32) -> Self {
62216        self.inner.view_mask = value;
62217        self
62218    }
62219    #[inline]
62220    pub fn color_attachments(mut self, slice: &'a [RenderingAttachmentInfo]) -> Self {
62221        self.inner.color_attachment_count = slice.len() as u32;
62222        self.inner.p_color_attachments = slice.as_ptr();
62223        self
62224    }
62225    #[inline]
62226    pub fn depth_attachment(mut self, value: &'a RenderingAttachmentInfo) -> Self {
62227        self.inner.p_depth_attachment = value;
62228        self
62229    }
62230    #[inline]
62231    pub fn stencil_attachment(mut self, value: &'a RenderingAttachmentInfo) -> Self {
62232        self.inner.p_stencil_attachment = value;
62233        self
62234    }
62235    ///Prepend a struct to the pNext chain. See [`RenderingInfo`]'s **Extended By** section for valid types.
62236    #[inline]
62237    pub fn push_next<T: ExtendsRenderingInfo>(mut self, next: &'a mut T) -> Self {
62238        unsafe {
62239            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
62240            (*next_ptr).p_next = self.inner.p_next as *mut _;
62241            self.inner.p_next = <*mut BaseOutStructure>::cast::<
62242                core::ffi::c_void,
62243            >(next_ptr) as *const _;
62244        }
62245        self
62246    }
62247}
62248impl<'a> core::ops::Deref for RenderingInfoBuilder<'a> {
62249    type Target = RenderingInfo;
62250    #[inline]
62251    fn deref(&self) -> &Self::Target {
62252        &self.inner
62253    }
62254}
62255impl<'a> core::ops::DerefMut for RenderingInfoBuilder<'a> {
62256    #[inline]
62257    fn deref_mut(&mut self) -> &mut Self::Target {
62258        &mut self.inner
62259    }
62260}
62261///Builder for [`RenderingEndInfoKHR`] with lifetime-tied pNext safety.
62262pub struct RenderingEndInfoKHRBuilder<'a> {
62263    inner: RenderingEndInfoKHR,
62264    _marker: core::marker::PhantomData<&'a ()>,
62265}
62266impl RenderingEndInfoKHR {
62267    /// Start building this struct; `s_type` is already set to the correct variant.
62268    #[inline]
62269    pub fn builder<'a>() -> RenderingEndInfoKHRBuilder<'a> {
62270        RenderingEndInfoKHRBuilder {
62271            inner: RenderingEndInfoKHR {
62272                s_type: StructureType::from_raw(1000619003i32),
62273                ..Default::default()
62274            },
62275            _marker: core::marker::PhantomData,
62276        }
62277    }
62278}
62279impl<'a> RenderingEndInfoKHRBuilder<'a> {
62280    ///Prepend a struct to the pNext chain. See [`RenderingEndInfoKHR`]'s **Extended By** section for valid types.
62281    #[inline]
62282    pub fn push_next<T: ExtendsRenderingEndInfoKHR>(mut self, next: &'a mut T) -> Self {
62283        unsafe {
62284            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
62285            (*next_ptr).p_next = self.inner.p_next as *mut _;
62286            self.inner.p_next = <*mut BaseOutStructure>::cast::<
62287                core::ffi::c_void,
62288            >(next_ptr) as *const _;
62289        }
62290        self
62291    }
62292}
62293impl<'a> core::ops::Deref for RenderingEndInfoKHRBuilder<'a> {
62294    type Target = RenderingEndInfoKHR;
62295    #[inline]
62296    fn deref(&self) -> &Self::Target {
62297        &self.inner
62298    }
62299}
62300impl<'a> core::ops::DerefMut for RenderingEndInfoKHRBuilder<'a> {
62301    #[inline]
62302    fn deref_mut(&mut self) -> &mut Self::Target {
62303        &mut self.inner
62304    }
62305}
62306///Builder for [`RenderingAttachmentInfo`] with lifetime-tied pNext safety.
62307pub struct RenderingAttachmentInfoBuilder<'a> {
62308    inner: RenderingAttachmentInfo,
62309    _marker: core::marker::PhantomData<&'a ()>,
62310}
62311impl RenderingAttachmentInfo {
62312    /// Start building this struct; `s_type` is already set to the correct variant.
62313    #[inline]
62314    pub fn builder<'a>() -> RenderingAttachmentInfoBuilder<'a> {
62315        RenderingAttachmentInfoBuilder {
62316            inner: RenderingAttachmentInfo {
62317                s_type: StructureType::from_raw(1000044001i32),
62318                ..Default::default()
62319            },
62320            _marker: core::marker::PhantomData,
62321        }
62322    }
62323}
62324impl<'a> RenderingAttachmentInfoBuilder<'a> {
62325    #[inline]
62326    pub fn image_view(mut self, value: ImageView) -> Self {
62327        self.inner.image_view = value;
62328        self
62329    }
62330    #[inline]
62331    pub fn image_layout(mut self, value: ImageLayout) -> Self {
62332        self.inner.image_layout = value;
62333        self
62334    }
62335    #[inline]
62336    pub fn resolve_mode(mut self, value: ResolveModeFlagBits) -> Self {
62337        self.inner.resolve_mode = value;
62338        self
62339    }
62340    #[inline]
62341    pub fn resolve_image_view(mut self, value: ImageView) -> Self {
62342        self.inner.resolve_image_view = value;
62343        self
62344    }
62345    #[inline]
62346    pub fn resolve_image_layout(mut self, value: ImageLayout) -> Self {
62347        self.inner.resolve_image_layout = value;
62348        self
62349    }
62350    #[inline]
62351    pub fn load_op(mut self, value: AttachmentLoadOp) -> Self {
62352        self.inner.load_op = value;
62353        self
62354    }
62355    #[inline]
62356    pub fn store_op(mut self, value: AttachmentStoreOp) -> Self {
62357        self.inner.store_op = value;
62358        self
62359    }
62360    #[inline]
62361    pub fn clear_value(mut self, value: ClearValue) -> Self {
62362        self.inner.clear_value = value;
62363        self
62364    }
62365    ///Prepend a struct to the pNext chain. See [`RenderingAttachmentInfo`]'s **Extended By** section for valid types.
62366    #[inline]
62367    pub fn push_next<T: ExtendsRenderingAttachmentInfo>(
62368        mut self,
62369        next: &'a mut T,
62370    ) -> Self {
62371        unsafe {
62372            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
62373            (*next_ptr).p_next = self.inner.p_next as *mut _;
62374            self.inner.p_next = <*mut BaseOutStructure>::cast::<
62375                core::ffi::c_void,
62376            >(next_ptr) as *const _;
62377        }
62378        self
62379    }
62380}
62381impl<'a> core::ops::Deref for RenderingAttachmentInfoBuilder<'a> {
62382    type Target = RenderingAttachmentInfo;
62383    #[inline]
62384    fn deref(&self) -> &Self::Target {
62385        &self.inner
62386    }
62387}
62388impl<'a> core::ops::DerefMut for RenderingAttachmentInfoBuilder<'a> {
62389    #[inline]
62390    fn deref_mut(&mut self) -> &mut Self::Target {
62391        &mut self.inner
62392    }
62393}
62394///Builder for [`RenderingFragmentShadingRateAttachmentInfoKHR`] with lifetime-tied pNext safety.
62395pub struct RenderingFragmentShadingRateAttachmentInfoKHRBuilder<'a> {
62396    inner: RenderingFragmentShadingRateAttachmentInfoKHR,
62397    _marker: core::marker::PhantomData<&'a ()>,
62398}
62399impl RenderingFragmentShadingRateAttachmentInfoKHR {
62400    /// Start building this struct; `s_type` is already set to the correct variant.
62401    #[inline]
62402    pub fn builder<'a>() -> RenderingFragmentShadingRateAttachmentInfoKHRBuilder<'a> {
62403        RenderingFragmentShadingRateAttachmentInfoKHRBuilder {
62404            inner: RenderingFragmentShadingRateAttachmentInfoKHR {
62405                s_type: StructureType::from_raw(1000044006i32),
62406                ..Default::default()
62407            },
62408            _marker: core::marker::PhantomData,
62409        }
62410    }
62411}
62412impl<'a> RenderingFragmentShadingRateAttachmentInfoKHRBuilder<'a> {
62413    #[inline]
62414    pub fn image_view(mut self, value: ImageView) -> Self {
62415        self.inner.image_view = value;
62416        self
62417    }
62418    #[inline]
62419    pub fn image_layout(mut self, value: ImageLayout) -> Self {
62420        self.inner.image_layout = value;
62421        self
62422    }
62423    #[inline]
62424    pub fn shading_rate_attachment_texel_size(mut self, value: Extent2D) -> Self {
62425        self.inner.shading_rate_attachment_texel_size = value;
62426        self
62427    }
62428    ///Prepend a struct to the pNext chain. See [`RenderingFragmentShadingRateAttachmentInfoKHR`]'s **Extended By** section for valid types.
62429    #[inline]
62430    pub fn push_next<T: ExtendsRenderingFragmentShadingRateAttachmentInfoKHR>(
62431        mut self,
62432        next: &'a mut T,
62433    ) -> Self {
62434        unsafe {
62435            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
62436            (*next_ptr).p_next = self.inner.p_next as *mut _;
62437            self.inner.p_next = <*mut BaseOutStructure>::cast::<
62438                core::ffi::c_void,
62439            >(next_ptr) as *const _;
62440        }
62441        self
62442    }
62443}
62444impl<'a> core::ops::Deref for RenderingFragmentShadingRateAttachmentInfoKHRBuilder<'a> {
62445    type Target = RenderingFragmentShadingRateAttachmentInfoKHR;
62446    #[inline]
62447    fn deref(&self) -> &Self::Target {
62448        &self.inner
62449    }
62450}
62451impl<'a> core::ops::DerefMut
62452for RenderingFragmentShadingRateAttachmentInfoKHRBuilder<'a> {
62453    #[inline]
62454    fn deref_mut(&mut self) -> &mut Self::Target {
62455        &mut self.inner
62456    }
62457}
62458///Builder for [`RenderingFragmentDensityMapAttachmentInfoEXT`] with lifetime-tied pNext safety.
62459pub struct RenderingFragmentDensityMapAttachmentInfoEXTBuilder<'a> {
62460    inner: RenderingFragmentDensityMapAttachmentInfoEXT,
62461    _marker: core::marker::PhantomData<&'a ()>,
62462}
62463impl RenderingFragmentDensityMapAttachmentInfoEXT {
62464    /// Start building this struct; `s_type` is already set to the correct variant.
62465    #[inline]
62466    pub fn builder<'a>() -> RenderingFragmentDensityMapAttachmentInfoEXTBuilder<'a> {
62467        RenderingFragmentDensityMapAttachmentInfoEXTBuilder {
62468            inner: RenderingFragmentDensityMapAttachmentInfoEXT {
62469                s_type: StructureType::from_raw(1000044007i32),
62470                ..Default::default()
62471            },
62472            _marker: core::marker::PhantomData,
62473        }
62474    }
62475}
62476impl<'a> RenderingFragmentDensityMapAttachmentInfoEXTBuilder<'a> {
62477    #[inline]
62478    pub fn image_view(mut self, value: ImageView) -> Self {
62479        self.inner.image_view = value;
62480        self
62481    }
62482    #[inline]
62483    pub fn image_layout(mut self, value: ImageLayout) -> Self {
62484        self.inner.image_layout = value;
62485        self
62486    }
62487    ///Prepend a struct to the pNext chain. See [`RenderingFragmentDensityMapAttachmentInfoEXT`]'s **Extended By** section for valid types.
62488    #[inline]
62489    pub fn push_next<T: ExtendsRenderingFragmentDensityMapAttachmentInfoEXT>(
62490        mut self,
62491        next: &'a mut T,
62492    ) -> Self {
62493        unsafe {
62494            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
62495            (*next_ptr).p_next = self.inner.p_next as *mut _;
62496            self.inner.p_next = <*mut BaseOutStructure>::cast::<
62497                core::ffi::c_void,
62498            >(next_ptr) as *const _;
62499        }
62500        self
62501    }
62502}
62503impl<'a> core::ops::Deref for RenderingFragmentDensityMapAttachmentInfoEXTBuilder<'a> {
62504    type Target = RenderingFragmentDensityMapAttachmentInfoEXT;
62505    #[inline]
62506    fn deref(&self) -> &Self::Target {
62507        &self.inner
62508    }
62509}
62510impl<'a> core::ops::DerefMut
62511for RenderingFragmentDensityMapAttachmentInfoEXTBuilder<'a> {
62512    #[inline]
62513    fn deref_mut(&mut self) -> &mut Self::Target {
62514        &mut self.inner
62515    }
62516}
62517///Builder for [`PhysicalDeviceDynamicRenderingFeatures`] with lifetime-tied pNext safety.
62518pub struct PhysicalDeviceDynamicRenderingFeaturesBuilder<'a> {
62519    inner: PhysicalDeviceDynamicRenderingFeatures,
62520    _marker: core::marker::PhantomData<&'a ()>,
62521}
62522impl PhysicalDeviceDynamicRenderingFeatures {
62523    /// Start building this struct; `s_type` is already set to the correct variant.
62524    #[inline]
62525    pub fn builder<'a>() -> PhysicalDeviceDynamicRenderingFeaturesBuilder<'a> {
62526        PhysicalDeviceDynamicRenderingFeaturesBuilder {
62527            inner: PhysicalDeviceDynamicRenderingFeatures {
62528                s_type: StructureType::from_raw(1000044003i32),
62529                ..Default::default()
62530            },
62531            _marker: core::marker::PhantomData,
62532        }
62533    }
62534}
62535impl<'a> PhysicalDeviceDynamicRenderingFeaturesBuilder<'a> {
62536    #[inline]
62537    pub fn dynamic_rendering(mut self, value: bool) -> Self {
62538        self.inner.dynamic_rendering = value as u32;
62539        self
62540    }
62541    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDynamicRenderingFeatures`]'s **Extended By** section for valid types.
62542    #[inline]
62543    pub fn push_next<T: ExtendsPhysicalDeviceDynamicRenderingFeatures>(
62544        mut self,
62545        next: &'a mut T,
62546    ) -> Self {
62547        unsafe {
62548            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
62549            (*next_ptr).p_next = self.inner.p_next as *mut _;
62550            self.inner.p_next = <*mut BaseOutStructure>::cast::<
62551                core::ffi::c_void,
62552            >(next_ptr);
62553        }
62554        self
62555    }
62556}
62557impl<'a> core::ops::Deref for PhysicalDeviceDynamicRenderingFeaturesBuilder<'a> {
62558    type Target = PhysicalDeviceDynamicRenderingFeatures;
62559    #[inline]
62560    fn deref(&self) -> &Self::Target {
62561        &self.inner
62562    }
62563}
62564impl<'a> core::ops::DerefMut for PhysicalDeviceDynamicRenderingFeaturesBuilder<'a> {
62565    #[inline]
62566    fn deref_mut(&mut self) -> &mut Self::Target {
62567        &mut self.inner
62568    }
62569}
62570///Builder for [`CommandBufferInheritanceRenderingInfo`] with lifetime-tied pNext safety.
62571pub struct CommandBufferInheritanceRenderingInfoBuilder<'a> {
62572    inner: CommandBufferInheritanceRenderingInfo,
62573    _marker: core::marker::PhantomData<&'a ()>,
62574}
62575impl CommandBufferInheritanceRenderingInfo {
62576    /// Start building this struct; `s_type` is already set to the correct variant.
62577    #[inline]
62578    pub fn builder<'a>() -> CommandBufferInheritanceRenderingInfoBuilder<'a> {
62579        CommandBufferInheritanceRenderingInfoBuilder {
62580            inner: CommandBufferInheritanceRenderingInfo {
62581                s_type: StructureType::from_raw(1000044004i32),
62582                ..Default::default()
62583            },
62584            _marker: core::marker::PhantomData,
62585        }
62586    }
62587}
62588impl<'a> CommandBufferInheritanceRenderingInfoBuilder<'a> {
62589    #[inline]
62590    pub fn flags(mut self, value: RenderingFlags) -> Self {
62591        self.inner.flags = value;
62592        self
62593    }
62594    #[inline]
62595    pub fn view_mask(mut self, value: u32) -> Self {
62596        self.inner.view_mask = value;
62597        self
62598    }
62599    #[inline]
62600    pub fn color_attachment_formats(mut self, slice: &'a [Format]) -> Self {
62601        self.inner.color_attachment_count = slice.len() as u32;
62602        self.inner.p_color_attachment_formats = slice.as_ptr();
62603        self
62604    }
62605    #[inline]
62606    pub fn depth_attachment_format(mut self, value: Format) -> Self {
62607        self.inner.depth_attachment_format = value;
62608        self
62609    }
62610    #[inline]
62611    pub fn stencil_attachment_format(mut self, value: Format) -> Self {
62612        self.inner.stencil_attachment_format = value;
62613        self
62614    }
62615    #[inline]
62616    pub fn rasterization_samples(mut self, value: SampleCountFlagBits) -> Self {
62617        self.inner.rasterization_samples = value;
62618        self
62619    }
62620    ///Prepend a struct to the pNext chain. See [`CommandBufferInheritanceRenderingInfo`]'s **Extended By** section for valid types.
62621    #[inline]
62622    pub fn push_next<T: ExtendsCommandBufferInheritanceRenderingInfo>(
62623        mut self,
62624        next: &'a mut T,
62625    ) -> Self {
62626        unsafe {
62627            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
62628            (*next_ptr).p_next = self.inner.p_next as *mut _;
62629            self.inner.p_next = <*mut BaseOutStructure>::cast::<
62630                core::ffi::c_void,
62631            >(next_ptr) as *const _;
62632        }
62633        self
62634    }
62635}
62636impl<'a> core::ops::Deref for CommandBufferInheritanceRenderingInfoBuilder<'a> {
62637    type Target = CommandBufferInheritanceRenderingInfo;
62638    #[inline]
62639    fn deref(&self) -> &Self::Target {
62640        &self.inner
62641    }
62642}
62643impl<'a> core::ops::DerefMut for CommandBufferInheritanceRenderingInfoBuilder<'a> {
62644    #[inline]
62645    fn deref_mut(&mut self) -> &mut Self::Target {
62646        &mut self.inner
62647    }
62648}
62649///Builder for [`AttachmentSampleCountInfoAMD`] with lifetime-tied pNext safety.
62650pub struct AttachmentSampleCountInfoAMDBuilder<'a> {
62651    inner: AttachmentSampleCountInfoAMD,
62652    _marker: core::marker::PhantomData<&'a ()>,
62653}
62654impl AttachmentSampleCountInfoAMD {
62655    /// Start building this struct; `s_type` is already set to the correct variant.
62656    #[inline]
62657    pub fn builder<'a>() -> AttachmentSampleCountInfoAMDBuilder<'a> {
62658        AttachmentSampleCountInfoAMDBuilder {
62659            inner: AttachmentSampleCountInfoAMD {
62660                s_type: StructureType::from_raw(1000044008i32),
62661                ..Default::default()
62662            },
62663            _marker: core::marker::PhantomData,
62664        }
62665    }
62666}
62667impl<'a> AttachmentSampleCountInfoAMDBuilder<'a> {
62668    #[inline]
62669    pub fn color_attachment_samples(mut self, slice: &'a [SampleCountFlagBits]) -> Self {
62670        self.inner.color_attachment_count = slice.len() as u32;
62671        self.inner.p_color_attachment_samples = slice.as_ptr();
62672        self
62673    }
62674    #[inline]
62675    pub fn depth_stencil_attachment_samples(
62676        mut self,
62677        value: SampleCountFlagBits,
62678    ) -> Self {
62679        self.inner.depth_stencil_attachment_samples = value;
62680        self
62681    }
62682    ///Prepend a struct to the pNext chain. See [`AttachmentSampleCountInfoAMD`]'s **Extended By** section for valid types.
62683    #[inline]
62684    pub fn push_next<T: ExtendsAttachmentSampleCountInfoAMD>(
62685        mut self,
62686        next: &'a mut T,
62687    ) -> Self {
62688        unsafe {
62689            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
62690            (*next_ptr).p_next = self.inner.p_next as *mut _;
62691            self.inner.p_next = <*mut BaseOutStructure>::cast::<
62692                core::ffi::c_void,
62693            >(next_ptr) as *const _;
62694        }
62695        self
62696    }
62697}
62698impl<'a> core::ops::Deref for AttachmentSampleCountInfoAMDBuilder<'a> {
62699    type Target = AttachmentSampleCountInfoAMD;
62700    #[inline]
62701    fn deref(&self) -> &Self::Target {
62702        &self.inner
62703    }
62704}
62705impl<'a> core::ops::DerefMut for AttachmentSampleCountInfoAMDBuilder<'a> {
62706    #[inline]
62707    fn deref_mut(&mut self) -> &mut Self::Target {
62708        &mut self.inner
62709    }
62710}
62711///Builder for [`MultiviewPerViewAttributesInfoNVX`] with lifetime-tied pNext safety.
62712pub struct MultiviewPerViewAttributesInfoNVXBuilder<'a> {
62713    inner: MultiviewPerViewAttributesInfoNVX,
62714    _marker: core::marker::PhantomData<&'a ()>,
62715}
62716impl MultiviewPerViewAttributesInfoNVX {
62717    /// Start building this struct; `s_type` is already set to the correct variant.
62718    #[inline]
62719    pub fn builder<'a>() -> MultiviewPerViewAttributesInfoNVXBuilder<'a> {
62720        MultiviewPerViewAttributesInfoNVXBuilder {
62721            inner: MultiviewPerViewAttributesInfoNVX {
62722                s_type: StructureType::from_raw(1000044009i32),
62723                ..Default::default()
62724            },
62725            _marker: core::marker::PhantomData,
62726        }
62727    }
62728}
62729impl<'a> MultiviewPerViewAttributesInfoNVXBuilder<'a> {
62730    #[inline]
62731    pub fn per_view_attributes(mut self, value: bool) -> Self {
62732        self.inner.per_view_attributes = value as u32;
62733        self
62734    }
62735    #[inline]
62736    pub fn per_view_attributes_position_x_only(mut self, value: bool) -> Self {
62737        self.inner.per_view_attributes_position_x_only = value as u32;
62738        self
62739    }
62740    ///Prepend a struct to the pNext chain. See [`MultiviewPerViewAttributesInfoNVX`]'s **Extended By** section for valid types.
62741    #[inline]
62742    pub fn push_next<T: ExtendsMultiviewPerViewAttributesInfoNVX>(
62743        mut self,
62744        next: &'a mut T,
62745    ) -> Self {
62746        unsafe {
62747            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
62748            (*next_ptr).p_next = self.inner.p_next as *mut _;
62749            self.inner.p_next = <*mut BaseOutStructure>::cast::<
62750                core::ffi::c_void,
62751            >(next_ptr) as *const _;
62752        }
62753        self
62754    }
62755}
62756impl<'a> core::ops::Deref for MultiviewPerViewAttributesInfoNVXBuilder<'a> {
62757    type Target = MultiviewPerViewAttributesInfoNVX;
62758    #[inline]
62759    fn deref(&self) -> &Self::Target {
62760        &self.inner
62761    }
62762}
62763impl<'a> core::ops::DerefMut for MultiviewPerViewAttributesInfoNVXBuilder<'a> {
62764    #[inline]
62765    fn deref_mut(&mut self) -> &mut Self::Target {
62766        &mut self.inner
62767    }
62768}
62769///Builder for [`PhysicalDeviceImageViewMinLodFeaturesEXT`] with lifetime-tied pNext safety.
62770pub struct PhysicalDeviceImageViewMinLodFeaturesEXTBuilder<'a> {
62771    inner: PhysicalDeviceImageViewMinLodFeaturesEXT,
62772    _marker: core::marker::PhantomData<&'a ()>,
62773}
62774impl PhysicalDeviceImageViewMinLodFeaturesEXT {
62775    /// Start building this struct; `s_type` is already set to the correct variant.
62776    #[inline]
62777    pub fn builder<'a>() -> PhysicalDeviceImageViewMinLodFeaturesEXTBuilder<'a> {
62778        PhysicalDeviceImageViewMinLodFeaturesEXTBuilder {
62779            inner: PhysicalDeviceImageViewMinLodFeaturesEXT {
62780                s_type: StructureType::from_raw(1000391000i32),
62781                ..Default::default()
62782            },
62783            _marker: core::marker::PhantomData,
62784        }
62785    }
62786}
62787impl<'a> PhysicalDeviceImageViewMinLodFeaturesEXTBuilder<'a> {
62788    #[inline]
62789    pub fn min_lod(mut self, value: bool) -> Self {
62790        self.inner.min_lod = value as u32;
62791        self
62792    }
62793    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceImageViewMinLodFeaturesEXT`]'s **Extended By** section for valid types.
62794    #[inline]
62795    pub fn push_next<T: ExtendsPhysicalDeviceImageViewMinLodFeaturesEXT>(
62796        mut self,
62797        next: &'a mut T,
62798    ) -> Self {
62799        unsafe {
62800            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
62801            (*next_ptr).p_next = self.inner.p_next as *mut _;
62802            self.inner.p_next = <*mut BaseOutStructure>::cast::<
62803                core::ffi::c_void,
62804            >(next_ptr);
62805        }
62806        self
62807    }
62808}
62809impl<'a> core::ops::Deref for PhysicalDeviceImageViewMinLodFeaturesEXTBuilder<'a> {
62810    type Target = PhysicalDeviceImageViewMinLodFeaturesEXT;
62811    #[inline]
62812    fn deref(&self) -> &Self::Target {
62813        &self.inner
62814    }
62815}
62816impl<'a> core::ops::DerefMut for PhysicalDeviceImageViewMinLodFeaturesEXTBuilder<'a> {
62817    #[inline]
62818    fn deref_mut(&mut self) -> &mut Self::Target {
62819        &mut self.inner
62820    }
62821}
62822///Builder for [`ImageViewMinLodCreateInfoEXT`] with lifetime-tied pNext safety.
62823pub struct ImageViewMinLodCreateInfoEXTBuilder<'a> {
62824    inner: ImageViewMinLodCreateInfoEXT,
62825    _marker: core::marker::PhantomData<&'a ()>,
62826}
62827impl ImageViewMinLodCreateInfoEXT {
62828    /// Start building this struct; `s_type` is already set to the correct variant.
62829    #[inline]
62830    pub fn builder<'a>() -> ImageViewMinLodCreateInfoEXTBuilder<'a> {
62831        ImageViewMinLodCreateInfoEXTBuilder {
62832            inner: ImageViewMinLodCreateInfoEXT {
62833                s_type: StructureType::from_raw(1000391001i32),
62834                ..Default::default()
62835            },
62836            _marker: core::marker::PhantomData,
62837        }
62838    }
62839}
62840impl<'a> ImageViewMinLodCreateInfoEXTBuilder<'a> {
62841    #[inline]
62842    pub fn min_lod(mut self, value: f32) -> Self {
62843        self.inner.min_lod = value;
62844        self
62845    }
62846    ///Prepend a struct to the pNext chain. See [`ImageViewMinLodCreateInfoEXT`]'s **Extended By** section for valid types.
62847    #[inline]
62848    pub fn push_next<T: ExtendsImageViewMinLodCreateInfoEXT>(
62849        mut self,
62850        next: &'a mut T,
62851    ) -> Self {
62852        unsafe {
62853            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
62854            (*next_ptr).p_next = self.inner.p_next as *mut _;
62855            self.inner.p_next = <*mut BaseOutStructure>::cast::<
62856                core::ffi::c_void,
62857            >(next_ptr) as *const _;
62858        }
62859        self
62860    }
62861}
62862impl<'a> core::ops::Deref for ImageViewMinLodCreateInfoEXTBuilder<'a> {
62863    type Target = ImageViewMinLodCreateInfoEXT;
62864    #[inline]
62865    fn deref(&self) -> &Self::Target {
62866        &self.inner
62867    }
62868}
62869impl<'a> core::ops::DerefMut for ImageViewMinLodCreateInfoEXTBuilder<'a> {
62870    #[inline]
62871    fn deref_mut(&mut self) -> &mut Self::Target {
62872        &mut self.inner
62873    }
62874}
62875///Builder for [`PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT`] with lifetime-tied pNext safety.
62876pub struct PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXTBuilder<'a> {
62877    inner: PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT,
62878    _marker: core::marker::PhantomData<&'a ()>,
62879}
62880impl PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {
62881    /// Start building this struct; `s_type` is already set to the correct variant.
62882    #[inline]
62883    pub fn builder<'a>() -> PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXTBuilder<
62884        'a,
62885    > {
62886        PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXTBuilder {
62887            inner: PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {
62888                s_type: StructureType::from_raw(1000342000i32),
62889                ..Default::default()
62890            },
62891            _marker: core::marker::PhantomData,
62892        }
62893    }
62894}
62895impl<'a> PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXTBuilder<'a> {
62896    #[inline]
62897    pub fn rasterization_order_color_attachment_access(mut self, value: bool) -> Self {
62898        self.inner.rasterization_order_color_attachment_access = value as u32;
62899        self
62900    }
62901    #[inline]
62902    pub fn rasterization_order_depth_attachment_access(mut self, value: bool) -> Self {
62903        self.inner.rasterization_order_depth_attachment_access = value as u32;
62904        self
62905    }
62906    #[inline]
62907    pub fn rasterization_order_stencil_attachment_access(mut self, value: bool) -> Self {
62908        self.inner.rasterization_order_stencil_attachment_access = value as u32;
62909        self
62910    }
62911    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT`]'s **Extended By** section for valid types.
62912    #[inline]
62913    pub fn push_next<
62914        T: ExtendsPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT,
62915    >(mut self, next: &'a mut T) -> Self {
62916        unsafe {
62917            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
62918            (*next_ptr).p_next = self.inner.p_next as *mut _;
62919            self.inner.p_next = <*mut BaseOutStructure>::cast::<
62920                core::ffi::c_void,
62921            >(next_ptr);
62922        }
62923        self
62924    }
62925}
62926impl<'a> core::ops::Deref
62927for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXTBuilder<'a> {
62928    type Target = PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
62929    #[inline]
62930    fn deref(&self) -> &Self::Target {
62931        &self.inner
62932    }
62933}
62934impl<'a> core::ops::DerefMut
62935for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXTBuilder<'a> {
62936    #[inline]
62937    fn deref_mut(&mut self) -> &mut Self::Target {
62938        &mut self.inner
62939    }
62940}
62941///Builder for [`PhysicalDeviceLinearColorAttachmentFeaturesNV`] with lifetime-tied pNext safety.
62942pub struct PhysicalDeviceLinearColorAttachmentFeaturesNVBuilder<'a> {
62943    inner: PhysicalDeviceLinearColorAttachmentFeaturesNV,
62944    _marker: core::marker::PhantomData<&'a ()>,
62945}
62946impl PhysicalDeviceLinearColorAttachmentFeaturesNV {
62947    /// Start building this struct; `s_type` is already set to the correct variant.
62948    #[inline]
62949    pub fn builder<'a>() -> PhysicalDeviceLinearColorAttachmentFeaturesNVBuilder<'a> {
62950        PhysicalDeviceLinearColorAttachmentFeaturesNVBuilder {
62951            inner: PhysicalDeviceLinearColorAttachmentFeaturesNV {
62952                s_type: StructureType::from_raw(1000430000i32),
62953                ..Default::default()
62954            },
62955            _marker: core::marker::PhantomData,
62956        }
62957    }
62958}
62959impl<'a> PhysicalDeviceLinearColorAttachmentFeaturesNVBuilder<'a> {
62960    #[inline]
62961    pub fn linear_color_attachment(mut self, value: bool) -> Self {
62962        self.inner.linear_color_attachment = value as u32;
62963        self
62964    }
62965    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceLinearColorAttachmentFeaturesNV`]'s **Extended By** section for valid types.
62966    #[inline]
62967    pub fn push_next<T: ExtendsPhysicalDeviceLinearColorAttachmentFeaturesNV>(
62968        mut self,
62969        next: &'a mut T,
62970    ) -> Self {
62971        unsafe {
62972            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
62973            (*next_ptr).p_next = self.inner.p_next as *mut _;
62974            self.inner.p_next = <*mut BaseOutStructure>::cast::<
62975                core::ffi::c_void,
62976            >(next_ptr);
62977        }
62978        self
62979    }
62980}
62981impl<'a> core::ops::Deref for PhysicalDeviceLinearColorAttachmentFeaturesNVBuilder<'a> {
62982    type Target = PhysicalDeviceLinearColorAttachmentFeaturesNV;
62983    #[inline]
62984    fn deref(&self) -> &Self::Target {
62985        &self.inner
62986    }
62987}
62988impl<'a> core::ops::DerefMut
62989for PhysicalDeviceLinearColorAttachmentFeaturesNVBuilder<'a> {
62990    #[inline]
62991    fn deref_mut(&mut self) -> &mut Self::Target {
62992        &mut self.inner
62993    }
62994}
62995///Builder for [`PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT`] with lifetime-tied pNext safety.
62996pub struct PhysicalDeviceGraphicsPipelineLibraryFeaturesEXTBuilder<'a> {
62997    inner: PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT,
62998    _marker: core::marker::PhantomData<&'a ()>,
62999}
63000impl PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
63001    /// Start building this struct; `s_type` is already set to the correct variant.
63002    #[inline]
63003    pub fn builder<'a>() -> PhysicalDeviceGraphicsPipelineLibraryFeaturesEXTBuilder<'a> {
63004        PhysicalDeviceGraphicsPipelineLibraryFeaturesEXTBuilder {
63005            inner: PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
63006                s_type: StructureType::from_raw(1000320000i32),
63007                ..Default::default()
63008            },
63009            _marker: core::marker::PhantomData,
63010        }
63011    }
63012}
63013impl<'a> PhysicalDeviceGraphicsPipelineLibraryFeaturesEXTBuilder<'a> {
63014    #[inline]
63015    pub fn graphics_pipeline_library(mut self, value: bool) -> Self {
63016        self.inner.graphics_pipeline_library = value as u32;
63017        self
63018    }
63019    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT`]'s **Extended By** section for valid types.
63020    #[inline]
63021    pub fn push_next<T: ExtendsPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT>(
63022        mut self,
63023        next: &'a mut T,
63024    ) -> Self {
63025        unsafe {
63026            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
63027            (*next_ptr).p_next = self.inner.p_next as *mut _;
63028            self.inner.p_next = <*mut BaseOutStructure>::cast::<
63029                core::ffi::c_void,
63030            >(next_ptr);
63031        }
63032        self
63033    }
63034}
63035impl<'a> core::ops::Deref
63036for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXTBuilder<'a> {
63037    type Target = PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT;
63038    #[inline]
63039    fn deref(&self) -> &Self::Target {
63040        &self.inner
63041    }
63042}
63043impl<'a> core::ops::DerefMut
63044for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXTBuilder<'a> {
63045    #[inline]
63046    fn deref_mut(&mut self) -> &mut Self::Target {
63047        &mut self.inner
63048    }
63049}
63050///Builder for [`PhysicalDevicePipelineBinaryFeaturesKHR`] with lifetime-tied pNext safety.
63051pub struct PhysicalDevicePipelineBinaryFeaturesKHRBuilder<'a> {
63052    inner: PhysicalDevicePipelineBinaryFeaturesKHR,
63053    _marker: core::marker::PhantomData<&'a ()>,
63054}
63055impl PhysicalDevicePipelineBinaryFeaturesKHR {
63056    /// Start building this struct; `s_type` is already set to the correct variant.
63057    #[inline]
63058    pub fn builder<'a>() -> PhysicalDevicePipelineBinaryFeaturesKHRBuilder<'a> {
63059        PhysicalDevicePipelineBinaryFeaturesKHRBuilder {
63060            inner: PhysicalDevicePipelineBinaryFeaturesKHR {
63061                s_type: StructureType::from_raw(1000483000i32),
63062                ..Default::default()
63063            },
63064            _marker: core::marker::PhantomData,
63065        }
63066    }
63067}
63068impl<'a> PhysicalDevicePipelineBinaryFeaturesKHRBuilder<'a> {
63069    #[inline]
63070    pub fn pipeline_binaries(mut self, value: bool) -> Self {
63071        self.inner.pipeline_binaries = value as u32;
63072        self
63073    }
63074    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePipelineBinaryFeaturesKHR`]'s **Extended By** section for valid types.
63075    #[inline]
63076    pub fn push_next<T: ExtendsPhysicalDevicePipelineBinaryFeaturesKHR>(
63077        mut self,
63078        next: &'a mut T,
63079    ) -> Self {
63080        unsafe {
63081            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
63082            (*next_ptr).p_next = self.inner.p_next as *mut _;
63083            self.inner.p_next = <*mut BaseOutStructure>::cast::<
63084                core::ffi::c_void,
63085            >(next_ptr);
63086        }
63087        self
63088    }
63089}
63090impl<'a> core::ops::Deref for PhysicalDevicePipelineBinaryFeaturesKHRBuilder<'a> {
63091    type Target = PhysicalDevicePipelineBinaryFeaturesKHR;
63092    #[inline]
63093    fn deref(&self) -> &Self::Target {
63094        &self.inner
63095    }
63096}
63097impl<'a> core::ops::DerefMut for PhysicalDevicePipelineBinaryFeaturesKHRBuilder<'a> {
63098    #[inline]
63099    fn deref_mut(&mut self) -> &mut Self::Target {
63100        &mut self.inner
63101    }
63102}
63103///Builder for [`DevicePipelineBinaryInternalCacheControlKHR`] with lifetime-tied pNext safety.
63104pub struct DevicePipelineBinaryInternalCacheControlKHRBuilder<'a> {
63105    inner: DevicePipelineBinaryInternalCacheControlKHR,
63106    _marker: core::marker::PhantomData<&'a ()>,
63107}
63108impl DevicePipelineBinaryInternalCacheControlKHR {
63109    /// Start building this struct; `s_type` is already set to the correct variant.
63110    #[inline]
63111    pub fn builder<'a>() -> DevicePipelineBinaryInternalCacheControlKHRBuilder<'a> {
63112        DevicePipelineBinaryInternalCacheControlKHRBuilder {
63113            inner: DevicePipelineBinaryInternalCacheControlKHR {
63114                s_type: StructureType::from_raw(1000483008i32),
63115                ..Default::default()
63116            },
63117            _marker: core::marker::PhantomData,
63118        }
63119    }
63120}
63121impl<'a> DevicePipelineBinaryInternalCacheControlKHRBuilder<'a> {
63122    #[inline]
63123    pub fn disable_internal_cache(mut self, value: bool) -> Self {
63124        self.inner.disable_internal_cache = value as u32;
63125        self
63126    }
63127    ///Prepend a struct to the pNext chain. See [`DevicePipelineBinaryInternalCacheControlKHR`]'s **Extended By** section for valid types.
63128    #[inline]
63129    pub fn push_next<T: ExtendsDevicePipelineBinaryInternalCacheControlKHR>(
63130        mut self,
63131        next: &'a mut T,
63132    ) -> Self {
63133        unsafe {
63134            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
63135            (*next_ptr).p_next = self.inner.p_next as *mut _;
63136            self.inner.p_next = <*mut BaseOutStructure>::cast::<
63137                core::ffi::c_void,
63138            >(next_ptr) as *const _;
63139        }
63140        self
63141    }
63142}
63143impl<'a> core::ops::Deref for DevicePipelineBinaryInternalCacheControlKHRBuilder<'a> {
63144    type Target = DevicePipelineBinaryInternalCacheControlKHR;
63145    #[inline]
63146    fn deref(&self) -> &Self::Target {
63147        &self.inner
63148    }
63149}
63150impl<'a> core::ops::DerefMut for DevicePipelineBinaryInternalCacheControlKHRBuilder<'a> {
63151    #[inline]
63152    fn deref_mut(&mut self) -> &mut Self::Target {
63153        &mut self.inner
63154    }
63155}
63156///Builder for [`PhysicalDevicePipelineBinaryPropertiesKHR`] with lifetime-tied pNext safety.
63157pub struct PhysicalDevicePipelineBinaryPropertiesKHRBuilder<'a> {
63158    inner: PhysicalDevicePipelineBinaryPropertiesKHR,
63159    _marker: core::marker::PhantomData<&'a ()>,
63160}
63161impl PhysicalDevicePipelineBinaryPropertiesKHR {
63162    /// Start building this struct; `s_type` is already set to the correct variant.
63163    #[inline]
63164    pub fn builder<'a>() -> PhysicalDevicePipelineBinaryPropertiesKHRBuilder<'a> {
63165        PhysicalDevicePipelineBinaryPropertiesKHRBuilder {
63166            inner: PhysicalDevicePipelineBinaryPropertiesKHR {
63167                s_type: StructureType::from_raw(1000483004i32),
63168                ..Default::default()
63169            },
63170            _marker: core::marker::PhantomData,
63171        }
63172    }
63173}
63174impl<'a> PhysicalDevicePipelineBinaryPropertiesKHRBuilder<'a> {
63175    #[inline]
63176    pub fn pipeline_binary_internal_cache(mut self, value: bool) -> Self {
63177        self.inner.pipeline_binary_internal_cache = value as u32;
63178        self
63179    }
63180    #[inline]
63181    pub fn pipeline_binary_internal_cache_control(mut self, value: bool) -> Self {
63182        self.inner.pipeline_binary_internal_cache_control = value as u32;
63183        self
63184    }
63185    #[inline]
63186    pub fn pipeline_binary_prefers_internal_cache(mut self, value: bool) -> Self {
63187        self.inner.pipeline_binary_prefers_internal_cache = value as u32;
63188        self
63189    }
63190    #[inline]
63191    pub fn pipeline_binary_precompiled_internal_cache(mut self, value: bool) -> Self {
63192        self.inner.pipeline_binary_precompiled_internal_cache = value as u32;
63193        self
63194    }
63195    #[inline]
63196    pub fn pipeline_binary_compressed_data(mut self, value: bool) -> Self {
63197        self.inner.pipeline_binary_compressed_data = value as u32;
63198        self
63199    }
63200}
63201impl<'a> core::ops::Deref for PhysicalDevicePipelineBinaryPropertiesKHRBuilder<'a> {
63202    type Target = PhysicalDevicePipelineBinaryPropertiesKHR;
63203    #[inline]
63204    fn deref(&self) -> &Self::Target {
63205        &self.inner
63206    }
63207}
63208impl<'a> core::ops::DerefMut for PhysicalDevicePipelineBinaryPropertiesKHRBuilder<'a> {
63209    #[inline]
63210    fn deref_mut(&mut self) -> &mut Self::Target {
63211        &mut self.inner
63212    }
63213}
63214///Builder for [`PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT`] with lifetime-tied pNext safety.
63215pub struct PhysicalDeviceGraphicsPipelineLibraryPropertiesEXTBuilder<'a> {
63216    inner: PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT,
63217    _marker: core::marker::PhantomData<&'a ()>,
63218}
63219impl PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {
63220    /// Start building this struct; `s_type` is already set to the correct variant.
63221    #[inline]
63222    pub fn builder<'a>() -> PhysicalDeviceGraphicsPipelineLibraryPropertiesEXTBuilder<
63223        'a,
63224    > {
63225        PhysicalDeviceGraphicsPipelineLibraryPropertiesEXTBuilder {
63226            inner: PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {
63227                s_type: StructureType::from_raw(1000320001i32),
63228                ..Default::default()
63229            },
63230            _marker: core::marker::PhantomData,
63231        }
63232    }
63233}
63234impl<'a> PhysicalDeviceGraphicsPipelineLibraryPropertiesEXTBuilder<'a> {
63235    #[inline]
63236    pub fn graphics_pipeline_library_fast_linking(mut self, value: bool) -> Self {
63237        self.inner.graphics_pipeline_library_fast_linking = value as u32;
63238        self
63239    }
63240    #[inline]
63241    pub fn graphics_pipeline_library_independent_interpolation_decoration(
63242        mut self,
63243        value: bool,
63244    ) -> Self {
63245        self.inner.graphics_pipeline_library_independent_interpolation_decoration = value
63246            as u32;
63247        self
63248    }
63249}
63250impl<'a> core::ops::Deref
63251for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXTBuilder<'a> {
63252    type Target = PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT;
63253    #[inline]
63254    fn deref(&self) -> &Self::Target {
63255        &self.inner
63256    }
63257}
63258impl<'a> core::ops::DerefMut
63259for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXTBuilder<'a> {
63260    #[inline]
63261    fn deref_mut(&mut self) -> &mut Self::Target {
63262        &mut self.inner
63263    }
63264}
63265///Builder for [`GraphicsPipelineLibraryCreateInfoEXT`] with lifetime-tied pNext safety.
63266pub struct GraphicsPipelineLibraryCreateInfoEXTBuilder<'a> {
63267    inner: GraphicsPipelineLibraryCreateInfoEXT,
63268    _marker: core::marker::PhantomData<&'a ()>,
63269}
63270impl GraphicsPipelineLibraryCreateInfoEXT {
63271    /// Start building this struct; `s_type` is already set to the correct variant.
63272    #[inline]
63273    pub fn builder<'a>() -> GraphicsPipelineLibraryCreateInfoEXTBuilder<'a> {
63274        GraphicsPipelineLibraryCreateInfoEXTBuilder {
63275            inner: GraphicsPipelineLibraryCreateInfoEXT {
63276                s_type: StructureType::from_raw(1000320002i32),
63277                ..Default::default()
63278            },
63279            _marker: core::marker::PhantomData,
63280        }
63281    }
63282}
63283impl<'a> GraphicsPipelineLibraryCreateInfoEXTBuilder<'a> {
63284    #[inline]
63285    pub fn flags(mut self, value: GraphicsPipelineLibraryFlagsEXT) -> Self {
63286        self.inner.flags = value;
63287        self
63288    }
63289    ///Prepend a struct to the pNext chain. See [`GraphicsPipelineLibraryCreateInfoEXT`]'s **Extended By** section for valid types.
63290    #[inline]
63291    pub fn push_next<T: ExtendsGraphicsPipelineLibraryCreateInfoEXT>(
63292        mut self,
63293        next: &'a mut T,
63294    ) -> Self {
63295        unsafe {
63296            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
63297            (*next_ptr).p_next = self.inner.p_next as *mut _;
63298            self.inner.p_next = <*mut BaseOutStructure>::cast::<
63299                core::ffi::c_void,
63300            >(next_ptr) as *const _;
63301        }
63302        self
63303    }
63304}
63305impl<'a> core::ops::Deref for GraphicsPipelineLibraryCreateInfoEXTBuilder<'a> {
63306    type Target = GraphicsPipelineLibraryCreateInfoEXT;
63307    #[inline]
63308    fn deref(&self) -> &Self::Target {
63309        &self.inner
63310    }
63311}
63312impl<'a> core::ops::DerefMut for GraphicsPipelineLibraryCreateInfoEXTBuilder<'a> {
63313    #[inline]
63314    fn deref_mut(&mut self) -> &mut Self::Target {
63315        &mut self.inner
63316    }
63317}
63318///Builder for [`PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE`] with lifetime-tied pNext safety.
63319pub struct PhysicalDeviceDescriptorSetHostMappingFeaturesVALVEBuilder<'a> {
63320    inner: PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE,
63321    _marker: core::marker::PhantomData<&'a ()>,
63322}
63323impl PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {
63324    /// Start building this struct; `s_type` is already set to the correct variant.
63325    #[inline]
63326    pub fn builder<'a>() -> PhysicalDeviceDescriptorSetHostMappingFeaturesVALVEBuilder<
63327        'a,
63328    > {
63329        PhysicalDeviceDescriptorSetHostMappingFeaturesVALVEBuilder {
63330            inner: PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {
63331                s_type: StructureType::from_raw(1000420000i32),
63332                ..Default::default()
63333            },
63334            _marker: core::marker::PhantomData,
63335        }
63336    }
63337}
63338impl<'a> PhysicalDeviceDescriptorSetHostMappingFeaturesVALVEBuilder<'a> {
63339    #[inline]
63340    pub fn descriptor_set_host_mapping(mut self, value: bool) -> Self {
63341        self.inner.descriptor_set_host_mapping = value as u32;
63342        self
63343    }
63344    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE`]'s **Extended By** section for valid types.
63345    #[inline]
63346    pub fn push_next<T: ExtendsPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE>(
63347        mut self,
63348        next: &'a mut T,
63349    ) -> Self {
63350        unsafe {
63351            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
63352            (*next_ptr).p_next = self.inner.p_next as *mut _;
63353            self.inner.p_next = <*mut BaseOutStructure>::cast::<
63354                core::ffi::c_void,
63355            >(next_ptr);
63356        }
63357        self
63358    }
63359}
63360impl<'a> core::ops::Deref
63361for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVEBuilder<'a> {
63362    type Target = PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE;
63363    #[inline]
63364    fn deref(&self) -> &Self::Target {
63365        &self.inner
63366    }
63367}
63368impl<'a> core::ops::DerefMut
63369for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVEBuilder<'a> {
63370    #[inline]
63371    fn deref_mut(&mut self) -> &mut Self::Target {
63372        &mut self.inner
63373    }
63374}
63375///Builder for [`DescriptorSetBindingReferenceVALVE`] with lifetime-tied pNext safety.
63376pub struct DescriptorSetBindingReferenceVALVEBuilder<'a> {
63377    inner: DescriptorSetBindingReferenceVALVE,
63378    _marker: core::marker::PhantomData<&'a ()>,
63379}
63380impl DescriptorSetBindingReferenceVALVE {
63381    /// Start building this struct; `s_type` is already set to the correct variant.
63382    #[inline]
63383    pub fn builder<'a>() -> DescriptorSetBindingReferenceVALVEBuilder<'a> {
63384        DescriptorSetBindingReferenceVALVEBuilder {
63385            inner: DescriptorSetBindingReferenceVALVE {
63386                s_type: StructureType::from_raw(1000420001i32),
63387                ..Default::default()
63388            },
63389            _marker: core::marker::PhantomData,
63390        }
63391    }
63392}
63393impl<'a> DescriptorSetBindingReferenceVALVEBuilder<'a> {
63394    #[inline]
63395    pub fn descriptor_set_layout(mut self, value: DescriptorSetLayout) -> Self {
63396        self.inner.descriptor_set_layout = value;
63397        self
63398    }
63399    #[inline]
63400    pub fn binding(mut self, value: u32) -> Self {
63401        self.inner.binding = value;
63402        self
63403    }
63404    ///Prepend a struct to the pNext chain. See [`DescriptorSetBindingReferenceVALVE`]'s **Extended By** section for valid types.
63405    #[inline]
63406    pub fn push_next<T: ExtendsDescriptorSetBindingReferenceVALVE>(
63407        mut self,
63408        next: &'a mut T,
63409    ) -> Self {
63410        unsafe {
63411            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
63412            (*next_ptr).p_next = self.inner.p_next as *mut _;
63413            self.inner.p_next = <*mut BaseOutStructure>::cast::<
63414                core::ffi::c_void,
63415            >(next_ptr) as *const _;
63416        }
63417        self
63418    }
63419}
63420impl<'a> core::ops::Deref for DescriptorSetBindingReferenceVALVEBuilder<'a> {
63421    type Target = DescriptorSetBindingReferenceVALVE;
63422    #[inline]
63423    fn deref(&self) -> &Self::Target {
63424        &self.inner
63425    }
63426}
63427impl<'a> core::ops::DerefMut for DescriptorSetBindingReferenceVALVEBuilder<'a> {
63428    #[inline]
63429    fn deref_mut(&mut self) -> &mut Self::Target {
63430        &mut self.inner
63431    }
63432}
63433///Builder for [`DescriptorSetLayoutHostMappingInfoVALVE`] with lifetime-tied pNext safety.
63434pub struct DescriptorSetLayoutHostMappingInfoVALVEBuilder<'a> {
63435    inner: DescriptorSetLayoutHostMappingInfoVALVE,
63436    _marker: core::marker::PhantomData<&'a ()>,
63437}
63438impl DescriptorSetLayoutHostMappingInfoVALVE {
63439    /// Start building this struct; `s_type` is already set to the correct variant.
63440    #[inline]
63441    pub fn builder<'a>() -> DescriptorSetLayoutHostMappingInfoVALVEBuilder<'a> {
63442        DescriptorSetLayoutHostMappingInfoVALVEBuilder {
63443            inner: DescriptorSetLayoutHostMappingInfoVALVE {
63444                s_type: StructureType::from_raw(1000420002i32),
63445                ..Default::default()
63446            },
63447            _marker: core::marker::PhantomData,
63448        }
63449    }
63450}
63451impl<'a> DescriptorSetLayoutHostMappingInfoVALVEBuilder<'a> {
63452    #[inline]
63453    pub fn descriptor_offset(mut self, value: usize) -> Self {
63454        self.inner.descriptor_offset = value;
63455        self
63456    }
63457    #[inline]
63458    pub fn descriptor_size(mut self, value: u32) -> Self {
63459        self.inner.descriptor_size = value;
63460        self
63461    }
63462    ///Prepend a struct to the pNext chain. See [`DescriptorSetLayoutHostMappingInfoVALVE`]'s **Extended By** section for valid types.
63463    #[inline]
63464    pub fn push_next<T: ExtendsDescriptorSetLayoutHostMappingInfoVALVE>(
63465        mut self,
63466        next: &'a mut T,
63467    ) -> Self {
63468        unsafe {
63469            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
63470            (*next_ptr).p_next = self.inner.p_next as *mut _;
63471            self.inner.p_next = <*mut BaseOutStructure>::cast::<
63472                core::ffi::c_void,
63473            >(next_ptr);
63474        }
63475        self
63476    }
63477}
63478impl<'a> core::ops::Deref for DescriptorSetLayoutHostMappingInfoVALVEBuilder<'a> {
63479    type Target = DescriptorSetLayoutHostMappingInfoVALVE;
63480    #[inline]
63481    fn deref(&self) -> &Self::Target {
63482        &self.inner
63483    }
63484}
63485impl<'a> core::ops::DerefMut for DescriptorSetLayoutHostMappingInfoVALVEBuilder<'a> {
63486    #[inline]
63487    fn deref_mut(&mut self) -> &mut Self::Target {
63488        &mut self.inner
63489    }
63490}
63491///Builder for [`PhysicalDeviceNestedCommandBufferFeaturesEXT`] with lifetime-tied pNext safety.
63492pub struct PhysicalDeviceNestedCommandBufferFeaturesEXTBuilder<'a> {
63493    inner: PhysicalDeviceNestedCommandBufferFeaturesEXT,
63494    _marker: core::marker::PhantomData<&'a ()>,
63495}
63496impl PhysicalDeviceNestedCommandBufferFeaturesEXT {
63497    /// Start building this struct; `s_type` is already set to the correct variant.
63498    #[inline]
63499    pub fn builder<'a>() -> PhysicalDeviceNestedCommandBufferFeaturesEXTBuilder<'a> {
63500        PhysicalDeviceNestedCommandBufferFeaturesEXTBuilder {
63501            inner: PhysicalDeviceNestedCommandBufferFeaturesEXT {
63502                s_type: StructureType::from_raw(1000451000i32),
63503                ..Default::default()
63504            },
63505            _marker: core::marker::PhantomData,
63506        }
63507    }
63508}
63509impl<'a> PhysicalDeviceNestedCommandBufferFeaturesEXTBuilder<'a> {
63510    #[inline]
63511    pub fn nested_command_buffer(mut self, value: bool) -> Self {
63512        self.inner.nested_command_buffer = value as u32;
63513        self
63514    }
63515    #[inline]
63516    pub fn nested_command_buffer_rendering(mut self, value: bool) -> Self {
63517        self.inner.nested_command_buffer_rendering = value as u32;
63518        self
63519    }
63520    #[inline]
63521    pub fn nested_command_buffer_simultaneous_use(mut self, value: bool) -> Self {
63522        self.inner.nested_command_buffer_simultaneous_use = value as u32;
63523        self
63524    }
63525    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceNestedCommandBufferFeaturesEXT`]'s **Extended By** section for valid types.
63526    #[inline]
63527    pub fn push_next<T: ExtendsPhysicalDeviceNestedCommandBufferFeaturesEXT>(
63528        mut self,
63529        next: &'a mut T,
63530    ) -> Self {
63531        unsafe {
63532            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
63533            (*next_ptr).p_next = self.inner.p_next as *mut _;
63534            self.inner.p_next = <*mut BaseOutStructure>::cast::<
63535                core::ffi::c_void,
63536            >(next_ptr);
63537        }
63538        self
63539    }
63540}
63541impl<'a> core::ops::Deref for PhysicalDeviceNestedCommandBufferFeaturesEXTBuilder<'a> {
63542    type Target = PhysicalDeviceNestedCommandBufferFeaturesEXT;
63543    #[inline]
63544    fn deref(&self) -> &Self::Target {
63545        &self.inner
63546    }
63547}
63548impl<'a> core::ops::DerefMut
63549for PhysicalDeviceNestedCommandBufferFeaturesEXTBuilder<'a> {
63550    #[inline]
63551    fn deref_mut(&mut self) -> &mut Self::Target {
63552        &mut self.inner
63553    }
63554}
63555///Builder for [`PhysicalDeviceNestedCommandBufferPropertiesEXT`] with lifetime-tied pNext safety.
63556pub struct PhysicalDeviceNestedCommandBufferPropertiesEXTBuilder<'a> {
63557    inner: PhysicalDeviceNestedCommandBufferPropertiesEXT,
63558    _marker: core::marker::PhantomData<&'a ()>,
63559}
63560impl PhysicalDeviceNestedCommandBufferPropertiesEXT {
63561    /// Start building this struct; `s_type` is already set to the correct variant.
63562    #[inline]
63563    pub fn builder<'a>() -> PhysicalDeviceNestedCommandBufferPropertiesEXTBuilder<'a> {
63564        PhysicalDeviceNestedCommandBufferPropertiesEXTBuilder {
63565            inner: PhysicalDeviceNestedCommandBufferPropertiesEXT {
63566                s_type: StructureType::from_raw(1000451001i32),
63567                ..Default::default()
63568            },
63569            _marker: core::marker::PhantomData,
63570        }
63571    }
63572}
63573impl<'a> PhysicalDeviceNestedCommandBufferPropertiesEXTBuilder<'a> {
63574    #[inline]
63575    pub fn max_command_buffer_nesting_level(mut self, value: u32) -> Self {
63576        self.inner.max_command_buffer_nesting_level = value;
63577        self
63578    }
63579}
63580impl<'a> core::ops::Deref for PhysicalDeviceNestedCommandBufferPropertiesEXTBuilder<'a> {
63581    type Target = PhysicalDeviceNestedCommandBufferPropertiesEXT;
63582    #[inline]
63583    fn deref(&self) -> &Self::Target {
63584        &self.inner
63585    }
63586}
63587impl<'a> core::ops::DerefMut
63588for PhysicalDeviceNestedCommandBufferPropertiesEXTBuilder<'a> {
63589    #[inline]
63590    fn deref_mut(&mut self) -> &mut Self::Target {
63591        &mut self.inner
63592    }
63593}
63594///Builder for [`PhysicalDeviceShaderModuleIdentifierFeaturesEXT`] with lifetime-tied pNext safety.
63595pub struct PhysicalDeviceShaderModuleIdentifierFeaturesEXTBuilder<'a> {
63596    inner: PhysicalDeviceShaderModuleIdentifierFeaturesEXT,
63597    _marker: core::marker::PhantomData<&'a ()>,
63598}
63599impl PhysicalDeviceShaderModuleIdentifierFeaturesEXT {
63600    /// Start building this struct; `s_type` is already set to the correct variant.
63601    #[inline]
63602    pub fn builder<'a>() -> PhysicalDeviceShaderModuleIdentifierFeaturesEXTBuilder<'a> {
63603        PhysicalDeviceShaderModuleIdentifierFeaturesEXTBuilder {
63604            inner: PhysicalDeviceShaderModuleIdentifierFeaturesEXT {
63605                s_type: StructureType::from_raw(1000462000i32),
63606                ..Default::default()
63607            },
63608            _marker: core::marker::PhantomData,
63609        }
63610    }
63611}
63612impl<'a> PhysicalDeviceShaderModuleIdentifierFeaturesEXTBuilder<'a> {
63613    #[inline]
63614    pub fn shader_module_identifier(mut self, value: bool) -> Self {
63615        self.inner.shader_module_identifier = value as u32;
63616        self
63617    }
63618    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderModuleIdentifierFeaturesEXT`]'s **Extended By** section for valid types.
63619    #[inline]
63620    pub fn push_next<T: ExtendsPhysicalDeviceShaderModuleIdentifierFeaturesEXT>(
63621        mut self,
63622        next: &'a mut T,
63623    ) -> Self {
63624        unsafe {
63625            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
63626            (*next_ptr).p_next = self.inner.p_next as *mut _;
63627            self.inner.p_next = <*mut BaseOutStructure>::cast::<
63628                core::ffi::c_void,
63629            >(next_ptr);
63630        }
63631        self
63632    }
63633}
63634impl<'a> core::ops::Deref
63635for PhysicalDeviceShaderModuleIdentifierFeaturesEXTBuilder<'a> {
63636    type Target = PhysicalDeviceShaderModuleIdentifierFeaturesEXT;
63637    #[inline]
63638    fn deref(&self) -> &Self::Target {
63639        &self.inner
63640    }
63641}
63642impl<'a> core::ops::DerefMut
63643for PhysicalDeviceShaderModuleIdentifierFeaturesEXTBuilder<'a> {
63644    #[inline]
63645    fn deref_mut(&mut self) -> &mut Self::Target {
63646        &mut self.inner
63647    }
63648}
63649///Builder for [`PhysicalDeviceShaderModuleIdentifierPropertiesEXT`] with lifetime-tied pNext safety.
63650pub struct PhysicalDeviceShaderModuleIdentifierPropertiesEXTBuilder<'a> {
63651    inner: PhysicalDeviceShaderModuleIdentifierPropertiesEXT,
63652    _marker: core::marker::PhantomData<&'a ()>,
63653}
63654impl PhysicalDeviceShaderModuleIdentifierPropertiesEXT {
63655    /// Start building this struct; `s_type` is already set to the correct variant.
63656    #[inline]
63657    pub fn builder<'a>() -> PhysicalDeviceShaderModuleIdentifierPropertiesEXTBuilder<
63658        'a,
63659    > {
63660        PhysicalDeviceShaderModuleIdentifierPropertiesEXTBuilder {
63661            inner: PhysicalDeviceShaderModuleIdentifierPropertiesEXT {
63662                s_type: StructureType::from_raw(1000462001i32),
63663                ..Default::default()
63664            },
63665            _marker: core::marker::PhantomData,
63666        }
63667    }
63668}
63669impl<'a> PhysicalDeviceShaderModuleIdentifierPropertiesEXTBuilder<'a> {
63670    #[inline]
63671    pub fn shader_module_identifier_algorithm_uuid(
63672        mut self,
63673        value: [u8; UUID_SIZE as usize],
63674    ) -> Self {
63675        self.inner.shader_module_identifier_algorithm_uuid = value;
63676        self
63677    }
63678}
63679impl<'a> core::ops::Deref
63680for PhysicalDeviceShaderModuleIdentifierPropertiesEXTBuilder<'a> {
63681    type Target = PhysicalDeviceShaderModuleIdentifierPropertiesEXT;
63682    #[inline]
63683    fn deref(&self) -> &Self::Target {
63684        &self.inner
63685    }
63686}
63687impl<'a> core::ops::DerefMut
63688for PhysicalDeviceShaderModuleIdentifierPropertiesEXTBuilder<'a> {
63689    #[inline]
63690    fn deref_mut(&mut self) -> &mut Self::Target {
63691        &mut self.inner
63692    }
63693}
63694///Builder for [`PipelineShaderStageModuleIdentifierCreateInfoEXT`] with lifetime-tied pNext safety.
63695pub struct PipelineShaderStageModuleIdentifierCreateInfoEXTBuilder<'a> {
63696    inner: PipelineShaderStageModuleIdentifierCreateInfoEXT,
63697    _marker: core::marker::PhantomData<&'a ()>,
63698}
63699impl PipelineShaderStageModuleIdentifierCreateInfoEXT {
63700    /// Start building this struct; `s_type` is already set to the correct variant.
63701    #[inline]
63702    pub fn builder<'a>() -> PipelineShaderStageModuleIdentifierCreateInfoEXTBuilder<'a> {
63703        PipelineShaderStageModuleIdentifierCreateInfoEXTBuilder {
63704            inner: PipelineShaderStageModuleIdentifierCreateInfoEXT {
63705                s_type: StructureType::from_raw(1000462002i32),
63706                ..Default::default()
63707            },
63708            _marker: core::marker::PhantomData,
63709        }
63710    }
63711}
63712impl<'a> PipelineShaderStageModuleIdentifierCreateInfoEXTBuilder<'a> {
63713    #[inline]
63714    pub fn identifier(mut self, slice: &'a [u8]) -> Self {
63715        self.inner.identifier_size = slice.len() as u32;
63716        self.inner.p_identifier = slice.as_ptr();
63717        self
63718    }
63719    ///Prepend a struct to the pNext chain. See [`PipelineShaderStageModuleIdentifierCreateInfoEXT`]'s **Extended By** section for valid types.
63720    #[inline]
63721    pub fn push_next<T: ExtendsPipelineShaderStageModuleIdentifierCreateInfoEXT>(
63722        mut self,
63723        next: &'a mut T,
63724    ) -> Self {
63725        unsafe {
63726            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
63727            (*next_ptr).p_next = self.inner.p_next as *mut _;
63728            self.inner.p_next = <*mut BaseOutStructure>::cast::<
63729                core::ffi::c_void,
63730            >(next_ptr) as *const _;
63731        }
63732        self
63733    }
63734}
63735impl<'a> core::ops::Deref
63736for PipelineShaderStageModuleIdentifierCreateInfoEXTBuilder<'a> {
63737    type Target = PipelineShaderStageModuleIdentifierCreateInfoEXT;
63738    #[inline]
63739    fn deref(&self) -> &Self::Target {
63740        &self.inner
63741    }
63742}
63743impl<'a> core::ops::DerefMut
63744for PipelineShaderStageModuleIdentifierCreateInfoEXTBuilder<'a> {
63745    #[inline]
63746    fn deref_mut(&mut self) -> &mut Self::Target {
63747        &mut self.inner
63748    }
63749}
63750///Builder for [`ShaderModuleIdentifierEXT`] with lifetime-tied pNext safety.
63751pub struct ShaderModuleIdentifierEXTBuilder<'a> {
63752    inner: ShaderModuleIdentifierEXT,
63753    _marker: core::marker::PhantomData<&'a ()>,
63754}
63755impl ShaderModuleIdentifierEXT {
63756    /// Start building this struct; `s_type` is already set to the correct variant.
63757    #[inline]
63758    pub fn builder<'a>() -> ShaderModuleIdentifierEXTBuilder<'a> {
63759        ShaderModuleIdentifierEXTBuilder {
63760            inner: ShaderModuleIdentifierEXT {
63761                s_type: StructureType::from_raw(1000462003i32),
63762                ..Default::default()
63763            },
63764            _marker: core::marker::PhantomData,
63765        }
63766    }
63767}
63768impl<'a> ShaderModuleIdentifierEXTBuilder<'a> {
63769    #[inline]
63770    pub fn identifier_size(mut self, value: u32) -> Self {
63771        self.inner.identifier_size = value;
63772        self
63773    }
63774    #[inline]
63775    pub fn identifier(
63776        mut self,
63777        value: [u8; MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT as usize],
63778    ) -> Self {
63779        self.inner.identifier = value;
63780        self
63781    }
63782}
63783impl<'a> core::ops::Deref for ShaderModuleIdentifierEXTBuilder<'a> {
63784    type Target = ShaderModuleIdentifierEXT;
63785    #[inline]
63786    fn deref(&self) -> &Self::Target {
63787        &self.inner
63788    }
63789}
63790impl<'a> core::ops::DerefMut for ShaderModuleIdentifierEXTBuilder<'a> {
63791    #[inline]
63792    fn deref_mut(&mut self) -> &mut Self::Target {
63793        &mut self.inner
63794    }
63795}
63796///Builder for [`ImageCompressionControlEXT`] with lifetime-tied pNext safety.
63797pub struct ImageCompressionControlEXTBuilder<'a> {
63798    inner: ImageCompressionControlEXT,
63799    _marker: core::marker::PhantomData<&'a ()>,
63800}
63801impl ImageCompressionControlEXT {
63802    /// Start building this struct; `s_type` is already set to the correct variant.
63803    #[inline]
63804    pub fn builder<'a>() -> ImageCompressionControlEXTBuilder<'a> {
63805        ImageCompressionControlEXTBuilder {
63806            inner: ImageCompressionControlEXT {
63807                s_type: StructureType::from_raw(1000338001i32),
63808                ..Default::default()
63809            },
63810            _marker: core::marker::PhantomData,
63811        }
63812    }
63813}
63814impl<'a> ImageCompressionControlEXTBuilder<'a> {
63815    #[inline]
63816    pub fn flags(mut self, value: ImageCompressionFlagsEXT) -> Self {
63817        self.inner.flags = value;
63818        self
63819    }
63820    #[inline]
63821    pub fn fixed_rate_flags(
63822        mut self,
63823        slice: &'a mut [ImageCompressionFixedRateFlagsEXT],
63824    ) -> Self {
63825        self.inner.compression_control_plane_count = slice.len() as u32;
63826        self.inner.p_fixed_rate_flags = slice.as_mut_ptr();
63827        self
63828    }
63829    ///Prepend a struct to the pNext chain. See [`ImageCompressionControlEXT`]'s **Extended By** section for valid types.
63830    #[inline]
63831    pub fn push_next<T: ExtendsImageCompressionControlEXT>(
63832        mut self,
63833        next: &'a mut T,
63834    ) -> Self {
63835        unsafe {
63836            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
63837            (*next_ptr).p_next = self.inner.p_next as *mut _;
63838            self.inner.p_next = <*mut BaseOutStructure>::cast::<
63839                core::ffi::c_void,
63840            >(next_ptr) as *const _;
63841        }
63842        self
63843    }
63844}
63845impl<'a> core::ops::Deref for ImageCompressionControlEXTBuilder<'a> {
63846    type Target = ImageCompressionControlEXT;
63847    #[inline]
63848    fn deref(&self) -> &Self::Target {
63849        &self.inner
63850    }
63851}
63852impl<'a> core::ops::DerefMut for ImageCompressionControlEXTBuilder<'a> {
63853    #[inline]
63854    fn deref_mut(&mut self) -> &mut Self::Target {
63855        &mut self.inner
63856    }
63857}
63858///Builder for [`PhysicalDeviceImageCompressionControlFeaturesEXT`] with lifetime-tied pNext safety.
63859pub struct PhysicalDeviceImageCompressionControlFeaturesEXTBuilder<'a> {
63860    inner: PhysicalDeviceImageCompressionControlFeaturesEXT,
63861    _marker: core::marker::PhantomData<&'a ()>,
63862}
63863impl PhysicalDeviceImageCompressionControlFeaturesEXT {
63864    /// Start building this struct; `s_type` is already set to the correct variant.
63865    #[inline]
63866    pub fn builder<'a>() -> PhysicalDeviceImageCompressionControlFeaturesEXTBuilder<'a> {
63867        PhysicalDeviceImageCompressionControlFeaturesEXTBuilder {
63868            inner: PhysicalDeviceImageCompressionControlFeaturesEXT {
63869                s_type: StructureType::from_raw(1000338000i32),
63870                ..Default::default()
63871            },
63872            _marker: core::marker::PhantomData,
63873        }
63874    }
63875}
63876impl<'a> PhysicalDeviceImageCompressionControlFeaturesEXTBuilder<'a> {
63877    #[inline]
63878    pub fn image_compression_control(mut self, value: bool) -> Self {
63879        self.inner.image_compression_control = value as u32;
63880        self
63881    }
63882    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceImageCompressionControlFeaturesEXT`]'s **Extended By** section for valid types.
63883    #[inline]
63884    pub fn push_next<T: ExtendsPhysicalDeviceImageCompressionControlFeaturesEXT>(
63885        mut self,
63886        next: &'a mut T,
63887    ) -> Self {
63888        unsafe {
63889            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
63890            (*next_ptr).p_next = self.inner.p_next as *mut _;
63891            self.inner.p_next = <*mut BaseOutStructure>::cast::<
63892                core::ffi::c_void,
63893            >(next_ptr);
63894        }
63895        self
63896    }
63897}
63898impl<'a> core::ops::Deref
63899for PhysicalDeviceImageCompressionControlFeaturesEXTBuilder<'a> {
63900    type Target = PhysicalDeviceImageCompressionControlFeaturesEXT;
63901    #[inline]
63902    fn deref(&self) -> &Self::Target {
63903        &self.inner
63904    }
63905}
63906impl<'a> core::ops::DerefMut
63907for PhysicalDeviceImageCompressionControlFeaturesEXTBuilder<'a> {
63908    #[inline]
63909    fn deref_mut(&mut self) -> &mut Self::Target {
63910        &mut self.inner
63911    }
63912}
63913///Builder for [`ImageCompressionPropertiesEXT`] with lifetime-tied pNext safety.
63914pub struct ImageCompressionPropertiesEXTBuilder<'a> {
63915    inner: ImageCompressionPropertiesEXT,
63916    _marker: core::marker::PhantomData<&'a ()>,
63917}
63918impl ImageCompressionPropertiesEXT {
63919    /// Start building this struct; `s_type` is already set to the correct variant.
63920    #[inline]
63921    pub fn builder<'a>() -> ImageCompressionPropertiesEXTBuilder<'a> {
63922        ImageCompressionPropertiesEXTBuilder {
63923            inner: ImageCompressionPropertiesEXT {
63924                s_type: StructureType::from_raw(1000338004i32),
63925                ..Default::default()
63926            },
63927            _marker: core::marker::PhantomData,
63928        }
63929    }
63930}
63931impl<'a> ImageCompressionPropertiesEXTBuilder<'a> {
63932    #[inline]
63933    pub fn image_compression_flags(mut self, value: ImageCompressionFlagsEXT) -> Self {
63934        self.inner.image_compression_flags = value;
63935        self
63936    }
63937    #[inline]
63938    pub fn image_compression_fixed_rate_flags(
63939        mut self,
63940        value: ImageCompressionFixedRateFlagsEXT,
63941    ) -> Self {
63942        self.inner.image_compression_fixed_rate_flags = value;
63943        self
63944    }
63945}
63946impl<'a> core::ops::Deref for ImageCompressionPropertiesEXTBuilder<'a> {
63947    type Target = ImageCompressionPropertiesEXT;
63948    #[inline]
63949    fn deref(&self) -> &Self::Target {
63950        &self.inner
63951    }
63952}
63953impl<'a> core::ops::DerefMut for ImageCompressionPropertiesEXTBuilder<'a> {
63954    #[inline]
63955    fn deref_mut(&mut self) -> &mut Self::Target {
63956        &mut self.inner
63957    }
63958}
63959///Builder for [`PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT`] with lifetime-tied pNext safety.
63960pub struct PhysicalDeviceImageCompressionControlSwapchainFeaturesEXTBuilder<'a> {
63961    inner: PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT,
63962    _marker: core::marker::PhantomData<&'a ()>,
63963}
63964impl PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
63965    /// Start building this struct; `s_type` is already set to the correct variant.
63966    #[inline]
63967    pub fn builder<'a>() -> PhysicalDeviceImageCompressionControlSwapchainFeaturesEXTBuilder<
63968        'a,
63969    > {
63970        PhysicalDeviceImageCompressionControlSwapchainFeaturesEXTBuilder {
63971            inner: PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
63972                s_type: StructureType::from_raw(1000437000i32),
63973                ..Default::default()
63974            },
63975            _marker: core::marker::PhantomData,
63976        }
63977    }
63978}
63979impl<'a> PhysicalDeviceImageCompressionControlSwapchainFeaturesEXTBuilder<'a> {
63980    #[inline]
63981    pub fn image_compression_control_swapchain(mut self, value: bool) -> Self {
63982        self.inner.image_compression_control_swapchain = value as u32;
63983        self
63984    }
63985    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT`]'s **Extended By** section for valid types.
63986    #[inline]
63987    pub fn push_next<
63988        T: ExtendsPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT,
63989    >(mut self, next: &'a mut T) -> Self {
63990        unsafe {
63991            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
63992            (*next_ptr).p_next = self.inner.p_next as *mut _;
63993            self.inner.p_next = <*mut BaseOutStructure>::cast::<
63994                core::ffi::c_void,
63995            >(next_ptr);
63996        }
63997        self
63998    }
63999}
64000impl<'a> core::ops::Deref
64001for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXTBuilder<'a> {
64002    type Target = PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT;
64003    #[inline]
64004    fn deref(&self) -> &Self::Target {
64005        &self.inner
64006    }
64007}
64008impl<'a> core::ops::DerefMut
64009for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXTBuilder<'a> {
64010    #[inline]
64011    fn deref_mut(&mut self) -> &mut Self::Target {
64012        &mut self.inner
64013    }
64014}
64015///Builder for [`ImageSubresource2`] with lifetime-tied pNext safety.
64016pub struct ImageSubresource2Builder<'a> {
64017    inner: ImageSubresource2,
64018    _marker: core::marker::PhantomData<&'a ()>,
64019}
64020impl ImageSubresource2 {
64021    /// Start building this struct; `s_type` is already set to the correct variant.
64022    #[inline]
64023    pub fn builder<'a>() -> ImageSubresource2Builder<'a> {
64024        ImageSubresource2Builder {
64025            inner: ImageSubresource2 {
64026                s_type: StructureType::from_raw(1000338003i32),
64027                ..Default::default()
64028            },
64029            _marker: core::marker::PhantomData,
64030        }
64031    }
64032}
64033impl<'a> ImageSubresource2Builder<'a> {
64034    #[inline]
64035    pub fn image_subresource(mut self, value: ImageSubresource) -> Self {
64036        self.inner.image_subresource = value;
64037        self
64038    }
64039    ///Prepend a struct to the pNext chain. See [`ImageSubresource2`]'s **Extended By** section for valid types.
64040    #[inline]
64041    pub fn push_next<T: ExtendsImageSubresource2>(mut self, next: &'a mut T) -> Self {
64042        unsafe {
64043            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
64044            (*next_ptr).p_next = self.inner.p_next as *mut _;
64045            self.inner.p_next = <*mut BaseOutStructure>::cast::<
64046                core::ffi::c_void,
64047            >(next_ptr);
64048        }
64049        self
64050    }
64051}
64052impl<'a> core::ops::Deref for ImageSubresource2Builder<'a> {
64053    type Target = ImageSubresource2;
64054    #[inline]
64055    fn deref(&self) -> &Self::Target {
64056        &self.inner
64057    }
64058}
64059impl<'a> core::ops::DerefMut for ImageSubresource2Builder<'a> {
64060    #[inline]
64061    fn deref_mut(&mut self) -> &mut Self::Target {
64062        &mut self.inner
64063    }
64064}
64065///Builder for [`SubresourceLayout2`] with lifetime-tied pNext safety.
64066pub struct SubresourceLayout2Builder<'a> {
64067    inner: SubresourceLayout2,
64068    _marker: core::marker::PhantomData<&'a ()>,
64069}
64070impl SubresourceLayout2 {
64071    /// Start building this struct; `s_type` is already set to the correct variant.
64072    #[inline]
64073    pub fn builder<'a>() -> SubresourceLayout2Builder<'a> {
64074        SubresourceLayout2Builder {
64075            inner: SubresourceLayout2 {
64076                s_type: StructureType::from_raw(1000338002i32),
64077                ..Default::default()
64078            },
64079            _marker: core::marker::PhantomData,
64080        }
64081    }
64082}
64083impl<'a> SubresourceLayout2Builder<'a> {
64084    #[inline]
64085    pub fn subresource_layout(mut self, value: SubresourceLayout) -> Self {
64086        self.inner.subresource_layout = value;
64087        self
64088    }
64089}
64090impl<'a> core::ops::Deref for SubresourceLayout2Builder<'a> {
64091    type Target = SubresourceLayout2;
64092    #[inline]
64093    fn deref(&self) -> &Self::Target {
64094        &self.inner
64095    }
64096}
64097impl<'a> core::ops::DerefMut for SubresourceLayout2Builder<'a> {
64098    #[inline]
64099    fn deref_mut(&mut self) -> &mut Self::Target {
64100        &mut self.inner
64101    }
64102}
64103///Builder for [`RenderPassCreationControlEXT`] with lifetime-tied pNext safety.
64104pub struct RenderPassCreationControlEXTBuilder<'a> {
64105    inner: RenderPassCreationControlEXT,
64106    _marker: core::marker::PhantomData<&'a ()>,
64107}
64108impl RenderPassCreationControlEXT {
64109    /// Start building this struct; `s_type` is already set to the correct variant.
64110    #[inline]
64111    pub fn builder<'a>() -> RenderPassCreationControlEXTBuilder<'a> {
64112        RenderPassCreationControlEXTBuilder {
64113            inner: RenderPassCreationControlEXT {
64114                s_type: StructureType::from_raw(1000458001i32),
64115                ..Default::default()
64116            },
64117            _marker: core::marker::PhantomData,
64118        }
64119    }
64120}
64121impl<'a> RenderPassCreationControlEXTBuilder<'a> {
64122    #[inline]
64123    pub fn disallow_merging(mut self, value: bool) -> Self {
64124        self.inner.disallow_merging = value as u32;
64125        self
64126    }
64127    ///Prepend a struct to the pNext chain. See [`RenderPassCreationControlEXT`]'s **Extended By** section for valid types.
64128    #[inline]
64129    pub fn push_next<T: ExtendsRenderPassCreationControlEXT>(
64130        mut self,
64131        next: &'a mut T,
64132    ) -> Self {
64133        unsafe {
64134            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
64135            (*next_ptr).p_next = self.inner.p_next as *mut _;
64136            self.inner.p_next = <*mut BaseOutStructure>::cast::<
64137                core::ffi::c_void,
64138            >(next_ptr) as *const _;
64139        }
64140        self
64141    }
64142}
64143impl<'a> core::ops::Deref for RenderPassCreationControlEXTBuilder<'a> {
64144    type Target = RenderPassCreationControlEXT;
64145    #[inline]
64146    fn deref(&self) -> &Self::Target {
64147        &self.inner
64148    }
64149}
64150impl<'a> core::ops::DerefMut for RenderPassCreationControlEXTBuilder<'a> {
64151    #[inline]
64152    fn deref_mut(&mut self) -> &mut Self::Target {
64153        &mut self.inner
64154    }
64155}
64156///Builder for [`RenderPassCreationFeedbackInfoEXT`].
64157pub struct RenderPassCreationFeedbackInfoEXTBuilder {
64158    inner: RenderPassCreationFeedbackInfoEXT,
64159}
64160impl RenderPassCreationFeedbackInfoEXT {
64161    /// Start building this struct.
64162    #[inline]
64163    pub fn builder() -> RenderPassCreationFeedbackInfoEXTBuilder {
64164        RenderPassCreationFeedbackInfoEXTBuilder {
64165            inner: RenderPassCreationFeedbackInfoEXT {
64166                ..Default::default()
64167            },
64168        }
64169    }
64170}
64171impl RenderPassCreationFeedbackInfoEXTBuilder {
64172    #[inline]
64173    pub fn post_merge_subpass_count(mut self, value: u32) -> Self {
64174        self.inner.post_merge_subpass_count = value;
64175        self
64176    }
64177}
64178impl core::ops::Deref for RenderPassCreationFeedbackInfoEXTBuilder {
64179    type Target = RenderPassCreationFeedbackInfoEXT;
64180    #[inline]
64181    fn deref(&self) -> &Self::Target {
64182        &self.inner
64183    }
64184}
64185impl core::ops::DerefMut for RenderPassCreationFeedbackInfoEXTBuilder {
64186    #[inline]
64187    fn deref_mut(&mut self) -> &mut Self::Target {
64188        &mut self.inner
64189    }
64190}
64191///Builder for [`RenderPassCreationFeedbackCreateInfoEXT`] with lifetime-tied pNext safety.
64192pub struct RenderPassCreationFeedbackCreateInfoEXTBuilder<'a> {
64193    inner: RenderPassCreationFeedbackCreateInfoEXT,
64194    _marker: core::marker::PhantomData<&'a ()>,
64195}
64196impl RenderPassCreationFeedbackCreateInfoEXT {
64197    /// Start building this struct; `s_type` is already set to the correct variant.
64198    #[inline]
64199    pub fn builder<'a>() -> RenderPassCreationFeedbackCreateInfoEXTBuilder<'a> {
64200        RenderPassCreationFeedbackCreateInfoEXTBuilder {
64201            inner: RenderPassCreationFeedbackCreateInfoEXT {
64202                s_type: StructureType::from_raw(1000458002i32),
64203                ..Default::default()
64204            },
64205            _marker: core::marker::PhantomData,
64206        }
64207    }
64208}
64209impl<'a> RenderPassCreationFeedbackCreateInfoEXTBuilder<'a> {
64210    #[inline]
64211    pub fn render_pass_feedback(
64212        mut self,
64213        value: *mut RenderPassCreationFeedbackInfoEXT,
64214    ) -> Self {
64215        self.inner.p_render_pass_feedback = value;
64216        self
64217    }
64218    ///Prepend a struct to the pNext chain. See [`RenderPassCreationFeedbackCreateInfoEXT`]'s **Extended By** section for valid types.
64219    #[inline]
64220    pub fn push_next<T: ExtendsRenderPassCreationFeedbackCreateInfoEXT>(
64221        mut self,
64222        next: &'a mut T,
64223    ) -> Self {
64224        unsafe {
64225            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
64226            (*next_ptr).p_next = self.inner.p_next as *mut _;
64227            self.inner.p_next = <*mut BaseOutStructure>::cast::<
64228                core::ffi::c_void,
64229            >(next_ptr) as *const _;
64230        }
64231        self
64232    }
64233}
64234impl<'a> core::ops::Deref for RenderPassCreationFeedbackCreateInfoEXTBuilder<'a> {
64235    type Target = RenderPassCreationFeedbackCreateInfoEXT;
64236    #[inline]
64237    fn deref(&self) -> &Self::Target {
64238        &self.inner
64239    }
64240}
64241impl<'a> core::ops::DerefMut for RenderPassCreationFeedbackCreateInfoEXTBuilder<'a> {
64242    #[inline]
64243    fn deref_mut(&mut self) -> &mut Self::Target {
64244        &mut self.inner
64245    }
64246}
64247///Builder for [`RenderPassSubpassFeedbackInfoEXT`].
64248pub struct RenderPassSubpassFeedbackInfoEXTBuilder {
64249    inner: RenderPassSubpassFeedbackInfoEXT,
64250}
64251impl RenderPassSubpassFeedbackInfoEXT {
64252    /// Start building this struct.
64253    #[inline]
64254    pub fn builder() -> RenderPassSubpassFeedbackInfoEXTBuilder {
64255        RenderPassSubpassFeedbackInfoEXTBuilder {
64256            inner: RenderPassSubpassFeedbackInfoEXT {
64257                ..Default::default()
64258            },
64259        }
64260    }
64261}
64262impl RenderPassSubpassFeedbackInfoEXTBuilder {
64263    #[inline]
64264    pub fn subpass_merge_status(mut self, value: SubpassMergeStatusEXT) -> Self {
64265        self.inner.subpass_merge_status = value;
64266        self
64267    }
64268    #[inline]
64269    pub fn description(
64270        mut self,
64271        value: crate::StringArray<{ MAX_DESCRIPTION_SIZE as usize }>,
64272    ) -> Self {
64273        self.inner.description = value;
64274        self
64275    }
64276    #[inline]
64277    pub fn post_merge_index(mut self, value: u32) -> Self {
64278        self.inner.post_merge_index = value;
64279        self
64280    }
64281}
64282impl core::ops::Deref for RenderPassSubpassFeedbackInfoEXTBuilder {
64283    type Target = RenderPassSubpassFeedbackInfoEXT;
64284    #[inline]
64285    fn deref(&self) -> &Self::Target {
64286        &self.inner
64287    }
64288}
64289impl core::ops::DerefMut for RenderPassSubpassFeedbackInfoEXTBuilder {
64290    #[inline]
64291    fn deref_mut(&mut self) -> &mut Self::Target {
64292        &mut self.inner
64293    }
64294}
64295///Builder for [`RenderPassSubpassFeedbackCreateInfoEXT`] with lifetime-tied pNext safety.
64296pub struct RenderPassSubpassFeedbackCreateInfoEXTBuilder<'a> {
64297    inner: RenderPassSubpassFeedbackCreateInfoEXT,
64298    _marker: core::marker::PhantomData<&'a ()>,
64299}
64300impl RenderPassSubpassFeedbackCreateInfoEXT {
64301    /// Start building this struct; `s_type` is already set to the correct variant.
64302    #[inline]
64303    pub fn builder<'a>() -> RenderPassSubpassFeedbackCreateInfoEXTBuilder<'a> {
64304        RenderPassSubpassFeedbackCreateInfoEXTBuilder {
64305            inner: RenderPassSubpassFeedbackCreateInfoEXT {
64306                s_type: StructureType::from_raw(1000458003i32),
64307                ..Default::default()
64308            },
64309            _marker: core::marker::PhantomData,
64310        }
64311    }
64312}
64313impl<'a> RenderPassSubpassFeedbackCreateInfoEXTBuilder<'a> {
64314    #[inline]
64315    pub fn subpass_feedback(
64316        mut self,
64317        value: *mut RenderPassSubpassFeedbackInfoEXT,
64318    ) -> Self {
64319        self.inner.p_subpass_feedback = value;
64320        self
64321    }
64322    ///Prepend a struct to the pNext chain. See [`RenderPassSubpassFeedbackCreateInfoEXT`]'s **Extended By** section for valid types.
64323    #[inline]
64324    pub fn push_next<T: ExtendsRenderPassSubpassFeedbackCreateInfoEXT>(
64325        mut self,
64326        next: &'a mut T,
64327    ) -> Self {
64328        unsafe {
64329            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
64330            (*next_ptr).p_next = self.inner.p_next as *mut _;
64331            self.inner.p_next = <*mut BaseOutStructure>::cast::<
64332                core::ffi::c_void,
64333            >(next_ptr) as *const _;
64334        }
64335        self
64336    }
64337}
64338impl<'a> core::ops::Deref for RenderPassSubpassFeedbackCreateInfoEXTBuilder<'a> {
64339    type Target = RenderPassSubpassFeedbackCreateInfoEXT;
64340    #[inline]
64341    fn deref(&self) -> &Self::Target {
64342        &self.inner
64343    }
64344}
64345impl<'a> core::ops::DerefMut for RenderPassSubpassFeedbackCreateInfoEXTBuilder<'a> {
64346    #[inline]
64347    fn deref_mut(&mut self) -> &mut Self::Target {
64348        &mut self.inner
64349    }
64350}
64351///Builder for [`PhysicalDeviceSubpassMergeFeedbackFeaturesEXT`] with lifetime-tied pNext safety.
64352pub struct PhysicalDeviceSubpassMergeFeedbackFeaturesEXTBuilder<'a> {
64353    inner: PhysicalDeviceSubpassMergeFeedbackFeaturesEXT,
64354    _marker: core::marker::PhantomData<&'a ()>,
64355}
64356impl PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
64357    /// Start building this struct; `s_type` is already set to the correct variant.
64358    #[inline]
64359    pub fn builder<'a>() -> PhysicalDeviceSubpassMergeFeedbackFeaturesEXTBuilder<'a> {
64360        PhysicalDeviceSubpassMergeFeedbackFeaturesEXTBuilder {
64361            inner: PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
64362                s_type: StructureType::from_raw(1000458000i32),
64363                ..Default::default()
64364            },
64365            _marker: core::marker::PhantomData,
64366        }
64367    }
64368}
64369impl<'a> PhysicalDeviceSubpassMergeFeedbackFeaturesEXTBuilder<'a> {
64370    #[inline]
64371    pub fn subpass_merge_feedback(mut self, value: bool) -> Self {
64372        self.inner.subpass_merge_feedback = value as u32;
64373        self
64374    }
64375    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceSubpassMergeFeedbackFeaturesEXT`]'s **Extended By** section for valid types.
64376    #[inline]
64377    pub fn push_next<T: ExtendsPhysicalDeviceSubpassMergeFeedbackFeaturesEXT>(
64378        mut self,
64379        next: &'a mut T,
64380    ) -> Self {
64381        unsafe {
64382            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
64383            (*next_ptr).p_next = self.inner.p_next as *mut _;
64384            self.inner.p_next = <*mut BaseOutStructure>::cast::<
64385                core::ffi::c_void,
64386            >(next_ptr);
64387        }
64388        self
64389    }
64390}
64391impl<'a> core::ops::Deref for PhysicalDeviceSubpassMergeFeedbackFeaturesEXTBuilder<'a> {
64392    type Target = PhysicalDeviceSubpassMergeFeedbackFeaturesEXT;
64393    #[inline]
64394    fn deref(&self) -> &Self::Target {
64395        &self.inner
64396    }
64397}
64398impl<'a> core::ops::DerefMut
64399for PhysicalDeviceSubpassMergeFeedbackFeaturesEXTBuilder<'a> {
64400    #[inline]
64401    fn deref_mut(&mut self) -> &mut Self::Target {
64402        &mut self.inner
64403    }
64404}
64405///Builder for [`MicromapBuildInfoEXT`] with lifetime-tied pNext safety.
64406pub struct MicromapBuildInfoEXTBuilder<'a> {
64407    inner: MicromapBuildInfoEXT,
64408    _marker: core::marker::PhantomData<&'a ()>,
64409}
64410impl MicromapBuildInfoEXT {
64411    /// Start building this struct; `s_type` is already set to the correct variant.
64412    #[inline]
64413    pub fn builder<'a>() -> MicromapBuildInfoEXTBuilder<'a> {
64414        MicromapBuildInfoEXTBuilder {
64415            inner: MicromapBuildInfoEXT {
64416                s_type: StructureType::from_raw(1000396000i32),
64417                ..Default::default()
64418            },
64419            _marker: core::marker::PhantomData,
64420        }
64421    }
64422}
64423impl<'a> MicromapBuildInfoEXTBuilder<'a> {
64424    #[inline]
64425    pub fn r#type(mut self, value: MicromapTypeEXT) -> Self {
64426        self.inner.r#type = value;
64427        self
64428    }
64429    #[inline]
64430    pub fn flags(mut self, value: BuildMicromapFlagsEXT) -> Self {
64431        self.inner.flags = value;
64432        self
64433    }
64434    #[inline]
64435    pub fn mode(mut self, value: BuildMicromapModeEXT) -> Self {
64436        self.inner.mode = value;
64437        self
64438    }
64439    #[inline]
64440    pub fn dst_micromap(mut self, value: MicromapEXT) -> Self {
64441        self.inner.dst_micromap = value;
64442        self
64443    }
64444    #[inline]
64445    pub fn usage_counts_count(mut self, value: u32) -> Self {
64446        self.inner.usage_counts_count = value;
64447        self
64448    }
64449    #[inline]
64450    pub fn usage_counts(mut self, slice: &'a [MicromapUsageEXT]) -> Self {
64451        self.inner.usage_counts_count = slice.len() as u32;
64452        self.inner.p_usage_counts = slice.as_ptr();
64453        self
64454    }
64455    #[inline]
64456    pub fn pp_usage_counts(mut self, value: *const *const MicromapUsageEXT) -> Self {
64457        self.inner.pp_usage_counts = value;
64458        self
64459    }
64460    #[inline]
64461    pub fn data(mut self, value: DeviceOrHostAddressConstKHR) -> Self {
64462        self.inner.data = value;
64463        self
64464    }
64465    #[inline]
64466    pub fn scratch_data(mut self, value: DeviceOrHostAddressKHR) -> Self {
64467        self.inner.scratch_data = value;
64468        self
64469    }
64470    #[inline]
64471    pub fn triangle_array(mut self, value: DeviceOrHostAddressConstKHR) -> Self {
64472        self.inner.triangle_array = value;
64473        self
64474    }
64475    #[inline]
64476    pub fn triangle_array_stride(mut self, value: u64) -> Self {
64477        self.inner.triangle_array_stride = value;
64478        self
64479    }
64480    ///Prepend a struct to the pNext chain. See [`MicromapBuildInfoEXT`]'s **Extended By** section for valid types.
64481    #[inline]
64482    pub fn push_next<T: ExtendsMicromapBuildInfoEXT>(mut self, next: &'a mut T) -> Self {
64483        unsafe {
64484            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
64485            (*next_ptr).p_next = self.inner.p_next as *mut _;
64486            self.inner.p_next = <*mut BaseOutStructure>::cast::<
64487                core::ffi::c_void,
64488            >(next_ptr) as *const _;
64489        }
64490        self
64491    }
64492}
64493impl<'a> core::ops::Deref for MicromapBuildInfoEXTBuilder<'a> {
64494    type Target = MicromapBuildInfoEXT;
64495    #[inline]
64496    fn deref(&self) -> &Self::Target {
64497        &self.inner
64498    }
64499}
64500impl<'a> core::ops::DerefMut for MicromapBuildInfoEXTBuilder<'a> {
64501    #[inline]
64502    fn deref_mut(&mut self) -> &mut Self::Target {
64503        &mut self.inner
64504    }
64505}
64506///Builder for [`MicromapCreateInfoEXT`] with lifetime-tied pNext safety.
64507pub struct MicromapCreateInfoEXTBuilder<'a> {
64508    inner: MicromapCreateInfoEXT,
64509    _marker: core::marker::PhantomData<&'a ()>,
64510}
64511impl MicromapCreateInfoEXT {
64512    /// Start building this struct; `s_type` is already set to the correct variant.
64513    #[inline]
64514    pub fn builder<'a>() -> MicromapCreateInfoEXTBuilder<'a> {
64515        MicromapCreateInfoEXTBuilder {
64516            inner: MicromapCreateInfoEXT {
64517                s_type: StructureType::from_raw(1000396007i32),
64518                ..Default::default()
64519            },
64520            _marker: core::marker::PhantomData,
64521        }
64522    }
64523}
64524impl<'a> MicromapCreateInfoEXTBuilder<'a> {
64525    #[inline]
64526    pub fn create_flags(mut self, value: MicromapCreateFlagsEXT) -> Self {
64527        self.inner.create_flags = value;
64528        self
64529    }
64530    #[inline]
64531    pub fn buffer(mut self, value: Buffer) -> Self {
64532        self.inner.buffer = value;
64533        self
64534    }
64535    #[inline]
64536    pub fn offset(mut self, value: u64) -> Self {
64537        self.inner.offset = value;
64538        self
64539    }
64540    #[inline]
64541    pub fn size(mut self, value: u64) -> Self {
64542        self.inner.size = value;
64543        self
64544    }
64545    #[inline]
64546    pub fn r#type(mut self, value: MicromapTypeEXT) -> Self {
64547        self.inner.r#type = value;
64548        self
64549    }
64550    #[inline]
64551    pub fn device_address(mut self, value: u64) -> Self {
64552        self.inner.device_address = value;
64553        self
64554    }
64555    ///Prepend a struct to the pNext chain. See [`MicromapCreateInfoEXT`]'s **Extended By** section for valid types.
64556    #[inline]
64557    pub fn push_next<T: ExtendsMicromapCreateInfoEXT>(
64558        mut self,
64559        next: &'a mut T,
64560    ) -> Self {
64561        unsafe {
64562            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
64563            (*next_ptr).p_next = self.inner.p_next as *mut _;
64564            self.inner.p_next = <*mut BaseOutStructure>::cast::<
64565                core::ffi::c_void,
64566            >(next_ptr) as *const _;
64567        }
64568        self
64569    }
64570}
64571impl<'a> core::ops::Deref for MicromapCreateInfoEXTBuilder<'a> {
64572    type Target = MicromapCreateInfoEXT;
64573    #[inline]
64574    fn deref(&self) -> &Self::Target {
64575        &self.inner
64576    }
64577}
64578impl<'a> core::ops::DerefMut for MicromapCreateInfoEXTBuilder<'a> {
64579    #[inline]
64580    fn deref_mut(&mut self) -> &mut Self::Target {
64581        &mut self.inner
64582    }
64583}
64584///Builder for [`MicromapVersionInfoEXT`] with lifetime-tied pNext safety.
64585pub struct MicromapVersionInfoEXTBuilder<'a> {
64586    inner: MicromapVersionInfoEXT,
64587    _marker: core::marker::PhantomData<&'a ()>,
64588}
64589impl MicromapVersionInfoEXT {
64590    /// Start building this struct; `s_type` is already set to the correct variant.
64591    #[inline]
64592    pub fn builder<'a>() -> MicromapVersionInfoEXTBuilder<'a> {
64593        MicromapVersionInfoEXTBuilder {
64594            inner: MicromapVersionInfoEXT {
64595                s_type: StructureType::from_raw(1000396001i32),
64596                ..Default::default()
64597            },
64598            _marker: core::marker::PhantomData,
64599        }
64600    }
64601}
64602impl<'a> MicromapVersionInfoEXTBuilder<'a> {
64603    #[inline]
64604    pub fn version_data(mut self, value: *const u8) -> Self {
64605        self.inner.p_version_data = value;
64606        self
64607    }
64608    ///Prepend a struct to the pNext chain. See [`MicromapVersionInfoEXT`]'s **Extended By** section for valid types.
64609    #[inline]
64610    pub fn push_next<T: ExtendsMicromapVersionInfoEXT>(
64611        mut self,
64612        next: &'a mut T,
64613    ) -> Self {
64614        unsafe {
64615            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
64616            (*next_ptr).p_next = self.inner.p_next as *mut _;
64617            self.inner.p_next = <*mut BaseOutStructure>::cast::<
64618                core::ffi::c_void,
64619            >(next_ptr) as *const _;
64620        }
64621        self
64622    }
64623}
64624impl<'a> core::ops::Deref for MicromapVersionInfoEXTBuilder<'a> {
64625    type Target = MicromapVersionInfoEXT;
64626    #[inline]
64627    fn deref(&self) -> &Self::Target {
64628        &self.inner
64629    }
64630}
64631impl<'a> core::ops::DerefMut for MicromapVersionInfoEXTBuilder<'a> {
64632    #[inline]
64633    fn deref_mut(&mut self) -> &mut Self::Target {
64634        &mut self.inner
64635    }
64636}
64637///Builder for [`CopyMicromapInfoEXT`] with lifetime-tied pNext safety.
64638pub struct CopyMicromapInfoEXTBuilder<'a> {
64639    inner: CopyMicromapInfoEXT,
64640    _marker: core::marker::PhantomData<&'a ()>,
64641}
64642impl CopyMicromapInfoEXT {
64643    /// Start building this struct; `s_type` is already set to the correct variant.
64644    #[inline]
64645    pub fn builder<'a>() -> CopyMicromapInfoEXTBuilder<'a> {
64646        CopyMicromapInfoEXTBuilder {
64647            inner: CopyMicromapInfoEXT {
64648                s_type: StructureType::from_raw(1000396002i32),
64649                ..Default::default()
64650            },
64651            _marker: core::marker::PhantomData,
64652        }
64653    }
64654}
64655impl<'a> CopyMicromapInfoEXTBuilder<'a> {
64656    #[inline]
64657    pub fn src(mut self, value: MicromapEXT) -> Self {
64658        self.inner.src = value;
64659        self
64660    }
64661    #[inline]
64662    pub fn dst(mut self, value: MicromapEXT) -> Self {
64663        self.inner.dst = value;
64664        self
64665    }
64666    #[inline]
64667    pub fn mode(mut self, value: CopyMicromapModeEXT) -> Self {
64668        self.inner.mode = value;
64669        self
64670    }
64671    ///Prepend a struct to the pNext chain. See [`CopyMicromapInfoEXT`]'s **Extended By** section for valid types.
64672    #[inline]
64673    pub fn push_next<T: ExtendsCopyMicromapInfoEXT>(mut self, next: &'a mut T) -> Self {
64674        unsafe {
64675            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
64676            (*next_ptr).p_next = self.inner.p_next as *mut _;
64677            self.inner.p_next = <*mut BaseOutStructure>::cast::<
64678                core::ffi::c_void,
64679            >(next_ptr) as *const _;
64680        }
64681        self
64682    }
64683}
64684impl<'a> core::ops::Deref for CopyMicromapInfoEXTBuilder<'a> {
64685    type Target = CopyMicromapInfoEXT;
64686    #[inline]
64687    fn deref(&self) -> &Self::Target {
64688        &self.inner
64689    }
64690}
64691impl<'a> core::ops::DerefMut for CopyMicromapInfoEXTBuilder<'a> {
64692    #[inline]
64693    fn deref_mut(&mut self) -> &mut Self::Target {
64694        &mut self.inner
64695    }
64696}
64697///Builder for [`CopyMicromapToMemoryInfoEXT`] with lifetime-tied pNext safety.
64698pub struct CopyMicromapToMemoryInfoEXTBuilder<'a> {
64699    inner: CopyMicromapToMemoryInfoEXT,
64700    _marker: core::marker::PhantomData<&'a ()>,
64701}
64702impl CopyMicromapToMemoryInfoEXT {
64703    /// Start building this struct; `s_type` is already set to the correct variant.
64704    #[inline]
64705    pub fn builder<'a>() -> CopyMicromapToMemoryInfoEXTBuilder<'a> {
64706        CopyMicromapToMemoryInfoEXTBuilder {
64707            inner: CopyMicromapToMemoryInfoEXT {
64708                s_type: StructureType::from_raw(1000396003i32),
64709                ..Default::default()
64710            },
64711            _marker: core::marker::PhantomData,
64712        }
64713    }
64714}
64715impl<'a> CopyMicromapToMemoryInfoEXTBuilder<'a> {
64716    #[inline]
64717    pub fn src(mut self, value: MicromapEXT) -> Self {
64718        self.inner.src = value;
64719        self
64720    }
64721    #[inline]
64722    pub fn dst(mut self, value: DeviceOrHostAddressKHR) -> Self {
64723        self.inner.dst = value;
64724        self
64725    }
64726    #[inline]
64727    pub fn mode(mut self, value: CopyMicromapModeEXT) -> Self {
64728        self.inner.mode = value;
64729        self
64730    }
64731    ///Prepend a struct to the pNext chain. See [`CopyMicromapToMemoryInfoEXT`]'s **Extended By** section for valid types.
64732    #[inline]
64733    pub fn push_next<T: ExtendsCopyMicromapToMemoryInfoEXT>(
64734        mut self,
64735        next: &'a mut T,
64736    ) -> Self {
64737        unsafe {
64738            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
64739            (*next_ptr).p_next = self.inner.p_next as *mut _;
64740            self.inner.p_next = <*mut BaseOutStructure>::cast::<
64741                core::ffi::c_void,
64742            >(next_ptr) as *const _;
64743        }
64744        self
64745    }
64746}
64747impl<'a> core::ops::Deref for CopyMicromapToMemoryInfoEXTBuilder<'a> {
64748    type Target = CopyMicromapToMemoryInfoEXT;
64749    #[inline]
64750    fn deref(&self) -> &Self::Target {
64751        &self.inner
64752    }
64753}
64754impl<'a> core::ops::DerefMut for CopyMicromapToMemoryInfoEXTBuilder<'a> {
64755    #[inline]
64756    fn deref_mut(&mut self) -> &mut Self::Target {
64757        &mut self.inner
64758    }
64759}
64760///Builder for [`CopyMemoryToMicromapInfoEXT`] with lifetime-tied pNext safety.
64761pub struct CopyMemoryToMicromapInfoEXTBuilder<'a> {
64762    inner: CopyMemoryToMicromapInfoEXT,
64763    _marker: core::marker::PhantomData<&'a ()>,
64764}
64765impl CopyMemoryToMicromapInfoEXT {
64766    /// Start building this struct; `s_type` is already set to the correct variant.
64767    #[inline]
64768    pub fn builder<'a>() -> CopyMemoryToMicromapInfoEXTBuilder<'a> {
64769        CopyMemoryToMicromapInfoEXTBuilder {
64770            inner: CopyMemoryToMicromapInfoEXT {
64771                s_type: StructureType::from_raw(1000396004i32),
64772                ..Default::default()
64773            },
64774            _marker: core::marker::PhantomData,
64775        }
64776    }
64777}
64778impl<'a> CopyMemoryToMicromapInfoEXTBuilder<'a> {
64779    #[inline]
64780    pub fn src(mut self, value: DeviceOrHostAddressConstKHR) -> Self {
64781        self.inner.src = value;
64782        self
64783    }
64784    #[inline]
64785    pub fn dst(mut self, value: MicromapEXT) -> Self {
64786        self.inner.dst = value;
64787        self
64788    }
64789    #[inline]
64790    pub fn mode(mut self, value: CopyMicromapModeEXT) -> Self {
64791        self.inner.mode = value;
64792        self
64793    }
64794    ///Prepend a struct to the pNext chain. See [`CopyMemoryToMicromapInfoEXT`]'s **Extended By** section for valid types.
64795    #[inline]
64796    pub fn push_next<T: ExtendsCopyMemoryToMicromapInfoEXT>(
64797        mut self,
64798        next: &'a mut T,
64799    ) -> Self {
64800        unsafe {
64801            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
64802            (*next_ptr).p_next = self.inner.p_next as *mut _;
64803            self.inner.p_next = <*mut BaseOutStructure>::cast::<
64804                core::ffi::c_void,
64805            >(next_ptr) as *const _;
64806        }
64807        self
64808    }
64809}
64810impl<'a> core::ops::Deref for CopyMemoryToMicromapInfoEXTBuilder<'a> {
64811    type Target = CopyMemoryToMicromapInfoEXT;
64812    #[inline]
64813    fn deref(&self) -> &Self::Target {
64814        &self.inner
64815    }
64816}
64817impl<'a> core::ops::DerefMut for CopyMemoryToMicromapInfoEXTBuilder<'a> {
64818    #[inline]
64819    fn deref_mut(&mut self) -> &mut Self::Target {
64820        &mut self.inner
64821    }
64822}
64823///Builder for [`MicromapBuildSizesInfoEXT`] with lifetime-tied pNext safety.
64824pub struct MicromapBuildSizesInfoEXTBuilder<'a> {
64825    inner: MicromapBuildSizesInfoEXT,
64826    _marker: core::marker::PhantomData<&'a ()>,
64827}
64828impl MicromapBuildSizesInfoEXT {
64829    /// Start building this struct; `s_type` is already set to the correct variant.
64830    #[inline]
64831    pub fn builder<'a>() -> MicromapBuildSizesInfoEXTBuilder<'a> {
64832        MicromapBuildSizesInfoEXTBuilder {
64833            inner: MicromapBuildSizesInfoEXT {
64834                s_type: StructureType::from_raw(1000396008i32),
64835                ..Default::default()
64836            },
64837            _marker: core::marker::PhantomData,
64838        }
64839    }
64840}
64841impl<'a> MicromapBuildSizesInfoEXTBuilder<'a> {
64842    #[inline]
64843    pub fn micromap_size(mut self, value: u64) -> Self {
64844        self.inner.micromap_size = value;
64845        self
64846    }
64847    #[inline]
64848    pub fn build_scratch_size(mut self, value: u64) -> Self {
64849        self.inner.build_scratch_size = value;
64850        self
64851    }
64852    #[inline]
64853    pub fn discardable(mut self, value: bool) -> Self {
64854        self.inner.discardable = value as u32;
64855        self
64856    }
64857    ///Prepend a struct to the pNext chain. See [`MicromapBuildSizesInfoEXT`]'s **Extended By** section for valid types.
64858    #[inline]
64859    pub fn push_next<T: ExtendsMicromapBuildSizesInfoEXT>(
64860        mut self,
64861        next: &'a mut T,
64862    ) -> Self {
64863        unsafe {
64864            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
64865            (*next_ptr).p_next = self.inner.p_next as *mut _;
64866            self.inner.p_next = <*mut BaseOutStructure>::cast::<
64867                core::ffi::c_void,
64868            >(next_ptr) as *const _;
64869        }
64870        self
64871    }
64872}
64873impl<'a> core::ops::Deref for MicromapBuildSizesInfoEXTBuilder<'a> {
64874    type Target = MicromapBuildSizesInfoEXT;
64875    #[inline]
64876    fn deref(&self) -> &Self::Target {
64877        &self.inner
64878    }
64879}
64880impl<'a> core::ops::DerefMut for MicromapBuildSizesInfoEXTBuilder<'a> {
64881    #[inline]
64882    fn deref_mut(&mut self) -> &mut Self::Target {
64883        &mut self.inner
64884    }
64885}
64886///Builder for [`MicromapUsageEXT`].
64887pub struct MicromapUsageEXTBuilder {
64888    inner: MicromapUsageEXT,
64889}
64890impl MicromapUsageEXT {
64891    /// Start building this struct.
64892    #[inline]
64893    pub fn builder() -> MicromapUsageEXTBuilder {
64894        MicromapUsageEXTBuilder {
64895            inner: MicromapUsageEXT {
64896                ..Default::default()
64897            },
64898        }
64899    }
64900}
64901impl MicromapUsageEXTBuilder {
64902    #[inline]
64903    pub fn count(mut self, value: u32) -> Self {
64904        self.inner.count = value;
64905        self
64906    }
64907    #[inline]
64908    pub fn subdivision_level(mut self, value: u32) -> Self {
64909        self.inner.subdivision_level = value;
64910        self
64911    }
64912    #[inline]
64913    pub fn format(mut self, value: u32) -> Self {
64914        self.inner.format = value;
64915        self
64916    }
64917}
64918impl core::ops::Deref for MicromapUsageEXTBuilder {
64919    type Target = MicromapUsageEXT;
64920    #[inline]
64921    fn deref(&self) -> &Self::Target {
64922        &self.inner
64923    }
64924}
64925impl core::ops::DerefMut for MicromapUsageEXTBuilder {
64926    #[inline]
64927    fn deref_mut(&mut self) -> &mut Self::Target {
64928        &mut self.inner
64929    }
64930}
64931///Builder for [`MicromapTriangleEXT`].
64932pub struct MicromapTriangleEXTBuilder {
64933    inner: MicromapTriangleEXT,
64934}
64935impl MicromapTriangleEXT {
64936    /// Start building this struct.
64937    #[inline]
64938    pub fn builder() -> MicromapTriangleEXTBuilder {
64939        MicromapTriangleEXTBuilder {
64940            inner: MicromapTriangleEXT {
64941                ..Default::default()
64942            },
64943        }
64944    }
64945}
64946impl MicromapTriangleEXTBuilder {
64947    #[inline]
64948    pub fn data_offset(mut self, value: u32) -> Self {
64949        self.inner.data_offset = value;
64950        self
64951    }
64952    #[inline]
64953    pub fn subdivision_level(mut self, value: u16) -> Self {
64954        self.inner.subdivision_level = value;
64955        self
64956    }
64957    #[inline]
64958    pub fn format(mut self, value: u16) -> Self {
64959        self.inner.format = value;
64960        self
64961    }
64962}
64963impl core::ops::Deref for MicromapTriangleEXTBuilder {
64964    type Target = MicromapTriangleEXT;
64965    #[inline]
64966    fn deref(&self) -> &Self::Target {
64967        &self.inner
64968    }
64969}
64970impl core::ops::DerefMut for MicromapTriangleEXTBuilder {
64971    #[inline]
64972    fn deref_mut(&mut self) -> &mut Self::Target {
64973        &mut self.inner
64974    }
64975}
64976///Builder for [`PhysicalDeviceOpacityMicromapFeaturesEXT`] with lifetime-tied pNext safety.
64977pub struct PhysicalDeviceOpacityMicromapFeaturesEXTBuilder<'a> {
64978    inner: PhysicalDeviceOpacityMicromapFeaturesEXT,
64979    _marker: core::marker::PhantomData<&'a ()>,
64980}
64981impl PhysicalDeviceOpacityMicromapFeaturesEXT {
64982    /// Start building this struct; `s_type` is already set to the correct variant.
64983    #[inline]
64984    pub fn builder<'a>() -> PhysicalDeviceOpacityMicromapFeaturesEXTBuilder<'a> {
64985        PhysicalDeviceOpacityMicromapFeaturesEXTBuilder {
64986            inner: PhysicalDeviceOpacityMicromapFeaturesEXT {
64987                s_type: StructureType::from_raw(1000396005i32),
64988                ..Default::default()
64989            },
64990            _marker: core::marker::PhantomData,
64991        }
64992    }
64993}
64994impl<'a> PhysicalDeviceOpacityMicromapFeaturesEXTBuilder<'a> {
64995    #[inline]
64996    pub fn micromap(mut self, value: bool) -> Self {
64997        self.inner.micromap = value as u32;
64998        self
64999    }
65000    #[inline]
65001    pub fn micromap_capture_replay(mut self, value: bool) -> Self {
65002        self.inner.micromap_capture_replay = value as u32;
65003        self
65004    }
65005    #[inline]
65006    pub fn micromap_host_commands(mut self, value: bool) -> Self {
65007        self.inner.micromap_host_commands = value as u32;
65008        self
65009    }
65010    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceOpacityMicromapFeaturesEXT`]'s **Extended By** section for valid types.
65011    #[inline]
65012    pub fn push_next<T: ExtendsPhysicalDeviceOpacityMicromapFeaturesEXT>(
65013        mut self,
65014        next: &'a mut T,
65015    ) -> Self {
65016        unsafe {
65017            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
65018            (*next_ptr).p_next = self.inner.p_next as *mut _;
65019            self.inner.p_next = <*mut BaseOutStructure>::cast::<
65020                core::ffi::c_void,
65021            >(next_ptr);
65022        }
65023        self
65024    }
65025}
65026impl<'a> core::ops::Deref for PhysicalDeviceOpacityMicromapFeaturesEXTBuilder<'a> {
65027    type Target = PhysicalDeviceOpacityMicromapFeaturesEXT;
65028    #[inline]
65029    fn deref(&self) -> &Self::Target {
65030        &self.inner
65031    }
65032}
65033impl<'a> core::ops::DerefMut for PhysicalDeviceOpacityMicromapFeaturesEXTBuilder<'a> {
65034    #[inline]
65035    fn deref_mut(&mut self) -> &mut Self::Target {
65036        &mut self.inner
65037    }
65038}
65039///Builder for [`PhysicalDeviceOpacityMicromapPropertiesEXT`] with lifetime-tied pNext safety.
65040pub struct PhysicalDeviceOpacityMicromapPropertiesEXTBuilder<'a> {
65041    inner: PhysicalDeviceOpacityMicromapPropertiesEXT,
65042    _marker: core::marker::PhantomData<&'a ()>,
65043}
65044impl PhysicalDeviceOpacityMicromapPropertiesEXT {
65045    /// Start building this struct; `s_type` is already set to the correct variant.
65046    #[inline]
65047    pub fn builder<'a>() -> PhysicalDeviceOpacityMicromapPropertiesEXTBuilder<'a> {
65048        PhysicalDeviceOpacityMicromapPropertiesEXTBuilder {
65049            inner: PhysicalDeviceOpacityMicromapPropertiesEXT {
65050                s_type: StructureType::from_raw(1000396006i32),
65051                ..Default::default()
65052            },
65053            _marker: core::marker::PhantomData,
65054        }
65055    }
65056}
65057impl<'a> PhysicalDeviceOpacityMicromapPropertiesEXTBuilder<'a> {
65058    #[inline]
65059    pub fn max_opacity2_state_subdivision_level(mut self, value: u32) -> Self {
65060        self.inner.max_opacity2_state_subdivision_level = value;
65061        self
65062    }
65063    #[inline]
65064    pub fn max_opacity4_state_subdivision_level(mut self, value: u32) -> Self {
65065        self.inner.max_opacity4_state_subdivision_level = value;
65066        self
65067    }
65068}
65069impl<'a> core::ops::Deref for PhysicalDeviceOpacityMicromapPropertiesEXTBuilder<'a> {
65070    type Target = PhysicalDeviceOpacityMicromapPropertiesEXT;
65071    #[inline]
65072    fn deref(&self) -> &Self::Target {
65073        &self.inner
65074    }
65075}
65076impl<'a> core::ops::DerefMut for PhysicalDeviceOpacityMicromapPropertiesEXTBuilder<'a> {
65077    #[inline]
65078    fn deref_mut(&mut self) -> &mut Self::Target {
65079        &mut self.inner
65080    }
65081}
65082///Builder for [`AccelerationStructureTrianglesOpacityMicromapEXT`] with lifetime-tied pNext safety.
65083pub struct AccelerationStructureTrianglesOpacityMicromapEXTBuilder<'a> {
65084    inner: AccelerationStructureTrianglesOpacityMicromapEXT,
65085    _marker: core::marker::PhantomData<&'a ()>,
65086}
65087impl AccelerationStructureTrianglesOpacityMicromapEXT {
65088    /// Start building this struct; `s_type` is already set to the correct variant.
65089    #[inline]
65090    pub fn builder<'a>() -> AccelerationStructureTrianglesOpacityMicromapEXTBuilder<'a> {
65091        AccelerationStructureTrianglesOpacityMicromapEXTBuilder {
65092            inner: AccelerationStructureTrianglesOpacityMicromapEXT {
65093                s_type: StructureType::from_raw(1000396009i32),
65094                ..Default::default()
65095            },
65096            _marker: core::marker::PhantomData,
65097        }
65098    }
65099}
65100impl<'a> AccelerationStructureTrianglesOpacityMicromapEXTBuilder<'a> {
65101    #[inline]
65102    pub fn index_type(mut self, value: IndexType) -> Self {
65103        self.inner.index_type = value;
65104        self
65105    }
65106    #[inline]
65107    pub fn index_buffer(mut self, value: DeviceOrHostAddressConstKHR) -> Self {
65108        self.inner.index_buffer = value;
65109        self
65110    }
65111    #[inline]
65112    pub fn index_stride(mut self, value: u64) -> Self {
65113        self.inner.index_stride = value;
65114        self
65115    }
65116    #[inline]
65117    pub fn base_triangle(mut self, value: u32) -> Self {
65118        self.inner.base_triangle = value;
65119        self
65120    }
65121    #[inline]
65122    pub fn usage_counts_count(mut self, value: u32) -> Self {
65123        self.inner.usage_counts_count = value;
65124        self
65125    }
65126    #[inline]
65127    pub fn usage_counts(mut self, slice: &'a [MicromapUsageEXT]) -> Self {
65128        self.inner.usage_counts_count = slice.len() as u32;
65129        self.inner.p_usage_counts = slice.as_ptr();
65130        self
65131    }
65132    #[inline]
65133    pub fn pp_usage_counts(mut self, value: *const *const MicromapUsageEXT) -> Self {
65134        self.inner.pp_usage_counts = value;
65135        self
65136    }
65137    #[inline]
65138    pub fn micromap(mut self, value: MicromapEXT) -> Self {
65139        self.inner.micromap = value;
65140        self
65141    }
65142    ///Prepend a struct to the pNext chain. See [`AccelerationStructureTrianglesOpacityMicromapEXT`]'s **Extended By** section for valid types.
65143    #[inline]
65144    pub fn push_next<T: ExtendsAccelerationStructureTrianglesOpacityMicromapEXT>(
65145        mut self,
65146        next: &'a mut T,
65147    ) -> Self {
65148        unsafe {
65149            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
65150            (*next_ptr).p_next = self.inner.p_next as *mut _;
65151            self.inner.p_next = <*mut BaseOutStructure>::cast::<
65152                core::ffi::c_void,
65153            >(next_ptr);
65154        }
65155        self
65156    }
65157}
65158impl<'a> core::ops::Deref
65159for AccelerationStructureTrianglesOpacityMicromapEXTBuilder<'a> {
65160    type Target = AccelerationStructureTrianglesOpacityMicromapEXT;
65161    #[inline]
65162    fn deref(&self) -> &Self::Target {
65163        &self.inner
65164    }
65165}
65166impl<'a> core::ops::DerefMut
65167for AccelerationStructureTrianglesOpacityMicromapEXTBuilder<'a> {
65168    #[inline]
65169    fn deref_mut(&mut self) -> &mut Self::Target {
65170        &mut self.inner
65171    }
65172}
65173///Builder for [`PhysicalDeviceDisplacementMicromapFeaturesNV`] with lifetime-tied pNext safety.
65174pub struct PhysicalDeviceDisplacementMicromapFeaturesNVBuilder<'a> {
65175    inner: PhysicalDeviceDisplacementMicromapFeaturesNV,
65176    _marker: core::marker::PhantomData<&'a ()>,
65177}
65178impl PhysicalDeviceDisplacementMicromapFeaturesNV {
65179    /// Start building this struct; `s_type` is already set to the correct variant.
65180    #[inline]
65181    pub fn builder<'a>() -> PhysicalDeviceDisplacementMicromapFeaturesNVBuilder<'a> {
65182        PhysicalDeviceDisplacementMicromapFeaturesNVBuilder {
65183            inner: PhysicalDeviceDisplacementMicromapFeaturesNV {
65184                s_type: StructureType::from_raw(1000397000i32),
65185                ..Default::default()
65186            },
65187            _marker: core::marker::PhantomData,
65188        }
65189    }
65190}
65191impl<'a> PhysicalDeviceDisplacementMicromapFeaturesNVBuilder<'a> {
65192    #[inline]
65193    pub fn displacement_micromap(mut self, value: bool) -> Self {
65194        self.inner.displacement_micromap = value as u32;
65195        self
65196    }
65197    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDisplacementMicromapFeaturesNV`]'s **Extended By** section for valid types.
65198    #[inline]
65199    pub fn push_next<T: ExtendsPhysicalDeviceDisplacementMicromapFeaturesNV>(
65200        mut self,
65201        next: &'a mut T,
65202    ) -> Self {
65203        unsafe {
65204            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
65205            (*next_ptr).p_next = self.inner.p_next as *mut _;
65206            self.inner.p_next = <*mut BaseOutStructure>::cast::<
65207                core::ffi::c_void,
65208            >(next_ptr);
65209        }
65210        self
65211    }
65212}
65213impl<'a> core::ops::Deref for PhysicalDeviceDisplacementMicromapFeaturesNVBuilder<'a> {
65214    type Target = PhysicalDeviceDisplacementMicromapFeaturesNV;
65215    #[inline]
65216    fn deref(&self) -> &Self::Target {
65217        &self.inner
65218    }
65219}
65220impl<'a> core::ops::DerefMut
65221for PhysicalDeviceDisplacementMicromapFeaturesNVBuilder<'a> {
65222    #[inline]
65223    fn deref_mut(&mut self) -> &mut Self::Target {
65224        &mut self.inner
65225    }
65226}
65227///Builder for [`PhysicalDeviceDisplacementMicromapPropertiesNV`] with lifetime-tied pNext safety.
65228pub struct PhysicalDeviceDisplacementMicromapPropertiesNVBuilder<'a> {
65229    inner: PhysicalDeviceDisplacementMicromapPropertiesNV,
65230    _marker: core::marker::PhantomData<&'a ()>,
65231}
65232impl PhysicalDeviceDisplacementMicromapPropertiesNV {
65233    /// Start building this struct; `s_type` is already set to the correct variant.
65234    #[inline]
65235    pub fn builder<'a>() -> PhysicalDeviceDisplacementMicromapPropertiesNVBuilder<'a> {
65236        PhysicalDeviceDisplacementMicromapPropertiesNVBuilder {
65237            inner: PhysicalDeviceDisplacementMicromapPropertiesNV {
65238                s_type: StructureType::from_raw(1000397001i32),
65239                ..Default::default()
65240            },
65241            _marker: core::marker::PhantomData,
65242        }
65243    }
65244}
65245impl<'a> PhysicalDeviceDisplacementMicromapPropertiesNVBuilder<'a> {
65246    #[inline]
65247    pub fn max_displacement_micromap_subdivision_level(mut self, value: u32) -> Self {
65248        self.inner.max_displacement_micromap_subdivision_level = value;
65249        self
65250    }
65251}
65252impl<'a> core::ops::Deref for PhysicalDeviceDisplacementMicromapPropertiesNVBuilder<'a> {
65253    type Target = PhysicalDeviceDisplacementMicromapPropertiesNV;
65254    #[inline]
65255    fn deref(&self) -> &Self::Target {
65256        &self.inner
65257    }
65258}
65259impl<'a> core::ops::DerefMut
65260for PhysicalDeviceDisplacementMicromapPropertiesNVBuilder<'a> {
65261    #[inline]
65262    fn deref_mut(&mut self) -> &mut Self::Target {
65263        &mut self.inner
65264    }
65265}
65266///Builder for [`AccelerationStructureTrianglesDisplacementMicromapNV`] with lifetime-tied pNext safety.
65267pub struct AccelerationStructureTrianglesDisplacementMicromapNVBuilder<'a> {
65268    inner: AccelerationStructureTrianglesDisplacementMicromapNV,
65269    _marker: core::marker::PhantomData<&'a ()>,
65270}
65271impl AccelerationStructureTrianglesDisplacementMicromapNV {
65272    /// Start building this struct; `s_type` is already set to the correct variant.
65273    #[inline]
65274    pub fn builder<'a>() -> AccelerationStructureTrianglesDisplacementMicromapNVBuilder<
65275        'a,
65276    > {
65277        AccelerationStructureTrianglesDisplacementMicromapNVBuilder {
65278            inner: AccelerationStructureTrianglesDisplacementMicromapNV {
65279                s_type: StructureType::from_raw(1000397002i32),
65280                ..Default::default()
65281            },
65282            _marker: core::marker::PhantomData,
65283        }
65284    }
65285}
65286impl<'a> AccelerationStructureTrianglesDisplacementMicromapNVBuilder<'a> {
65287    #[inline]
65288    pub fn displacement_bias_and_scale_format(mut self, value: Format) -> Self {
65289        self.inner.displacement_bias_and_scale_format = value;
65290        self
65291    }
65292    #[inline]
65293    pub fn displacement_vector_format(mut self, value: Format) -> Self {
65294        self.inner.displacement_vector_format = value;
65295        self
65296    }
65297    #[inline]
65298    pub fn displacement_bias_and_scale_buffer(
65299        mut self,
65300        value: DeviceOrHostAddressConstKHR,
65301    ) -> Self {
65302        self.inner.displacement_bias_and_scale_buffer = value;
65303        self
65304    }
65305    #[inline]
65306    pub fn displacement_bias_and_scale_stride(mut self, value: u64) -> Self {
65307        self.inner.displacement_bias_and_scale_stride = value;
65308        self
65309    }
65310    #[inline]
65311    pub fn displacement_vector_buffer(
65312        mut self,
65313        value: DeviceOrHostAddressConstKHR,
65314    ) -> Self {
65315        self.inner.displacement_vector_buffer = value;
65316        self
65317    }
65318    #[inline]
65319    pub fn displacement_vector_stride(mut self, value: u64) -> Self {
65320        self.inner.displacement_vector_stride = value;
65321        self
65322    }
65323    #[inline]
65324    pub fn displaced_micromap_primitive_flags(
65325        mut self,
65326        value: DeviceOrHostAddressConstKHR,
65327    ) -> Self {
65328        self.inner.displaced_micromap_primitive_flags = value;
65329        self
65330    }
65331    #[inline]
65332    pub fn displaced_micromap_primitive_flags_stride(mut self, value: u64) -> Self {
65333        self.inner.displaced_micromap_primitive_flags_stride = value;
65334        self
65335    }
65336    #[inline]
65337    pub fn index_type(mut self, value: IndexType) -> Self {
65338        self.inner.index_type = value;
65339        self
65340    }
65341    #[inline]
65342    pub fn index_buffer(mut self, value: DeviceOrHostAddressConstKHR) -> Self {
65343        self.inner.index_buffer = value;
65344        self
65345    }
65346    #[inline]
65347    pub fn index_stride(mut self, value: u64) -> Self {
65348        self.inner.index_stride = value;
65349        self
65350    }
65351    #[inline]
65352    pub fn base_triangle(mut self, value: u32) -> Self {
65353        self.inner.base_triangle = value;
65354        self
65355    }
65356    #[inline]
65357    pub fn usage_counts_count(mut self, value: u32) -> Self {
65358        self.inner.usage_counts_count = value;
65359        self
65360    }
65361    #[inline]
65362    pub fn usage_counts(mut self, slice: &'a [MicromapUsageEXT]) -> Self {
65363        self.inner.usage_counts_count = slice.len() as u32;
65364        self.inner.p_usage_counts = slice.as_ptr();
65365        self
65366    }
65367    #[inline]
65368    pub fn pp_usage_counts(mut self, value: *const *const MicromapUsageEXT) -> Self {
65369        self.inner.pp_usage_counts = value;
65370        self
65371    }
65372    #[inline]
65373    pub fn micromap(mut self, value: MicromapEXT) -> Self {
65374        self.inner.micromap = value;
65375        self
65376    }
65377    ///Prepend a struct to the pNext chain. See [`AccelerationStructureTrianglesDisplacementMicromapNV`]'s **Extended By** section for valid types.
65378    #[inline]
65379    pub fn push_next<T: ExtendsAccelerationStructureTrianglesDisplacementMicromapNV>(
65380        mut self,
65381        next: &'a mut T,
65382    ) -> Self {
65383        unsafe {
65384            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
65385            (*next_ptr).p_next = self.inner.p_next as *mut _;
65386            self.inner.p_next = <*mut BaseOutStructure>::cast::<
65387                core::ffi::c_void,
65388            >(next_ptr);
65389        }
65390        self
65391    }
65392}
65393impl<'a> core::ops::Deref
65394for AccelerationStructureTrianglesDisplacementMicromapNVBuilder<'a> {
65395    type Target = AccelerationStructureTrianglesDisplacementMicromapNV;
65396    #[inline]
65397    fn deref(&self) -> &Self::Target {
65398        &self.inner
65399    }
65400}
65401impl<'a> core::ops::DerefMut
65402for AccelerationStructureTrianglesDisplacementMicromapNVBuilder<'a> {
65403    #[inline]
65404    fn deref_mut(&mut self) -> &mut Self::Target {
65405        &mut self.inner
65406    }
65407}
65408///Builder for [`PipelinePropertiesIdentifierEXT`] with lifetime-tied pNext safety.
65409pub struct PipelinePropertiesIdentifierEXTBuilder<'a> {
65410    inner: PipelinePropertiesIdentifierEXT,
65411    _marker: core::marker::PhantomData<&'a ()>,
65412}
65413impl PipelinePropertiesIdentifierEXT {
65414    /// Start building this struct; `s_type` is already set to the correct variant.
65415    #[inline]
65416    pub fn builder<'a>() -> PipelinePropertiesIdentifierEXTBuilder<'a> {
65417        PipelinePropertiesIdentifierEXTBuilder {
65418            inner: PipelinePropertiesIdentifierEXT {
65419                s_type: StructureType::from_raw(1000372000i32),
65420                ..Default::default()
65421            },
65422            _marker: core::marker::PhantomData,
65423        }
65424    }
65425}
65426impl<'a> PipelinePropertiesIdentifierEXTBuilder<'a> {
65427    #[inline]
65428    pub fn pipeline_identifier(mut self, value: [u8; UUID_SIZE as usize]) -> Self {
65429        self.inner.pipeline_identifier = value;
65430        self
65431    }
65432}
65433impl<'a> core::ops::Deref for PipelinePropertiesIdentifierEXTBuilder<'a> {
65434    type Target = PipelinePropertiesIdentifierEXT;
65435    #[inline]
65436    fn deref(&self) -> &Self::Target {
65437        &self.inner
65438    }
65439}
65440impl<'a> core::ops::DerefMut for PipelinePropertiesIdentifierEXTBuilder<'a> {
65441    #[inline]
65442    fn deref_mut(&mut self) -> &mut Self::Target {
65443        &mut self.inner
65444    }
65445}
65446///Builder for [`PhysicalDevicePipelinePropertiesFeaturesEXT`] with lifetime-tied pNext safety.
65447pub struct PhysicalDevicePipelinePropertiesFeaturesEXTBuilder<'a> {
65448    inner: PhysicalDevicePipelinePropertiesFeaturesEXT,
65449    _marker: core::marker::PhantomData<&'a ()>,
65450}
65451impl PhysicalDevicePipelinePropertiesFeaturesEXT {
65452    /// Start building this struct; `s_type` is already set to the correct variant.
65453    #[inline]
65454    pub fn builder<'a>() -> PhysicalDevicePipelinePropertiesFeaturesEXTBuilder<'a> {
65455        PhysicalDevicePipelinePropertiesFeaturesEXTBuilder {
65456            inner: PhysicalDevicePipelinePropertiesFeaturesEXT {
65457                s_type: StructureType::from_raw(1000372001i32),
65458                ..Default::default()
65459            },
65460            _marker: core::marker::PhantomData,
65461        }
65462    }
65463}
65464impl<'a> PhysicalDevicePipelinePropertiesFeaturesEXTBuilder<'a> {
65465    #[inline]
65466    pub fn pipeline_properties_identifier(mut self, value: bool) -> Self {
65467        self.inner.pipeline_properties_identifier = value as u32;
65468        self
65469    }
65470    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePipelinePropertiesFeaturesEXT`]'s **Extended By** section for valid types.
65471    #[inline]
65472    pub fn push_next<T: ExtendsPhysicalDevicePipelinePropertiesFeaturesEXT>(
65473        mut self,
65474        next: &'a mut T,
65475    ) -> Self {
65476        unsafe {
65477            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
65478            (*next_ptr).p_next = self.inner.p_next as *mut _;
65479            self.inner.p_next = <*mut BaseOutStructure>::cast::<
65480                core::ffi::c_void,
65481            >(next_ptr);
65482        }
65483        self
65484    }
65485}
65486impl<'a> core::ops::Deref for PhysicalDevicePipelinePropertiesFeaturesEXTBuilder<'a> {
65487    type Target = PhysicalDevicePipelinePropertiesFeaturesEXT;
65488    #[inline]
65489    fn deref(&self) -> &Self::Target {
65490        &self.inner
65491    }
65492}
65493impl<'a> core::ops::DerefMut for PhysicalDevicePipelinePropertiesFeaturesEXTBuilder<'a> {
65494    #[inline]
65495    fn deref_mut(&mut self) -> &mut Self::Target {
65496        &mut self.inner
65497    }
65498}
65499///Builder for [`PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD`] with lifetime-tied pNext safety.
65500pub struct PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMDBuilder<'a> {
65501    inner: PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD,
65502    _marker: core::marker::PhantomData<&'a ()>,
65503}
65504impl PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
65505    /// Start building this struct; `s_type` is already set to the correct variant.
65506    #[inline]
65507    pub fn builder<'a>() -> PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMDBuilder<
65508        'a,
65509    > {
65510        PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMDBuilder {
65511            inner: PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
65512                s_type: StructureType::from_raw(1000321000i32),
65513                ..Default::default()
65514            },
65515            _marker: core::marker::PhantomData,
65516        }
65517    }
65518}
65519impl<'a> PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMDBuilder<'a> {
65520    #[inline]
65521    pub fn shader_early_and_late_fragment_tests(mut self, value: bool) -> Self {
65522        self.inner.shader_early_and_late_fragment_tests = value as u32;
65523        self
65524    }
65525    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD`]'s **Extended By** section for valid types.
65526    #[inline]
65527    pub fn push_next<T: ExtendsPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD>(
65528        mut self,
65529        next: &'a mut T,
65530    ) -> Self {
65531        unsafe {
65532            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
65533            (*next_ptr).p_next = self.inner.p_next as *mut _;
65534            self.inner.p_next = <*mut BaseOutStructure>::cast::<
65535                core::ffi::c_void,
65536            >(next_ptr);
65537        }
65538        self
65539    }
65540}
65541impl<'a> core::ops::Deref
65542for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMDBuilder<'a> {
65543    type Target = PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD;
65544    #[inline]
65545    fn deref(&self) -> &Self::Target {
65546        &self.inner
65547    }
65548}
65549impl<'a> core::ops::DerefMut
65550for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMDBuilder<'a> {
65551    #[inline]
65552    fn deref_mut(&mut self) -> &mut Self::Target {
65553        &mut self.inner
65554    }
65555}
65556///Builder for [`ExternalMemoryAcquireUnmodifiedEXT`] with lifetime-tied pNext safety.
65557pub struct ExternalMemoryAcquireUnmodifiedEXTBuilder<'a> {
65558    inner: ExternalMemoryAcquireUnmodifiedEXT,
65559    _marker: core::marker::PhantomData<&'a ()>,
65560}
65561impl ExternalMemoryAcquireUnmodifiedEXT {
65562    /// Start building this struct; `s_type` is already set to the correct variant.
65563    #[inline]
65564    pub fn builder<'a>() -> ExternalMemoryAcquireUnmodifiedEXTBuilder<'a> {
65565        ExternalMemoryAcquireUnmodifiedEXTBuilder {
65566            inner: ExternalMemoryAcquireUnmodifiedEXT {
65567                s_type: StructureType::from_raw(1000453000i32),
65568                ..Default::default()
65569            },
65570            _marker: core::marker::PhantomData,
65571        }
65572    }
65573}
65574impl<'a> ExternalMemoryAcquireUnmodifiedEXTBuilder<'a> {
65575    #[inline]
65576    pub fn acquire_unmodified_memory(mut self, value: bool) -> Self {
65577        self.inner.acquire_unmodified_memory = value as u32;
65578        self
65579    }
65580    ///Prepend a struct to the pNext chain. See [`ExternalMemoryAcquireUnmodifiedEXT`]'s **Extended By** section for valid types.
65581    #[inline]
65582    pub fn push_next<T: ExtendsExternalMemoryAcquireUnmodifiedEXT>(
65583        mut self,
65584        next: &'a mut T,
65585    ) -> Self {
65586        unsafe {
65587            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
65588            (*next_ptr).p_next = self.inner.p_next as *mut _;
65589            self.inner.p_next = <*mut BaseOutStructure>::cast::<
65590                core::ffi::c_void,
65591            >(next_ptr) as *const _;
65592        }
65593        self
65594    }
65595}
65596impl<'a> core::ops::Deref for ExternalMemoryAcquireUnmodifiedEXTBuilder<'a> {
65597    type Target = ExternalMemoryAcquireUnmodifiedEXT;
65598    #[inline]
65599    fn deref(&self) -> &Self::Target {
65600        &self.inner
65601    }
65602}
65603impl<'a> core::ops::DerefMut for ExternalMemoryAcquireUnmodifiedEXTBuilder<'a> {
65604    #[inline]
65605    fn deref_mut(&mut self) -> &mut Self::Target {
65606        &mut self.inner
65607    }
65608}
65609///Builder for [`ExportMetalObjectCreateInfoEXT`] with lifetime-tied pNext safety.
65610pub struct ExportMetalObjectCreateInfoEXTBuilder<'a> {
65611    inner: ExportMetalObjectCreateInfoEXT,
65612    _marker: core::marker::PhantomData<&'a ()>,
65613}
65614impl ExportMetalObjectCreateInfoEXT {
65615    /// Start building this struct; `s_type` is already set to the correct variant.
65616    #[inline]
65617    pub fn builder<'a>() -> ExportMetalObjectCreateInfoEXTBuilder<'a> {
65618        ExportMetalObjectCreateInfoEXTBuilder {
65619            inner: ExportMetalObjectCreateInfoEXT {
65620                s_type: StructureType::from_raw(1000311000i32),
65621                ..Default::default()
65622            },
65623            _marker: core::marker::PhantomData,
65624        }
65625    }
65626}
65627impl<'a> ExportMetalObjectCreateInfoEXTBuilder<'a> {
65628    #[inline]
65629    pub fn export_object_type(
65630        mut self,
65631        value: ExportMetalObjectTypeFlagBitsEXT,
65632    ) -> Self {
65633        self.inner.export_object_type = value;
65634        self
65635    }
65636    ///Prepend a struct to the pNext chain. See [`ExportMetalObjectCreateInfoEXT`]'s **Extended By** section for valid types.
65637    #[inline]
65638    pub fn push_next<T: ExtendsExportMetalObjectCreateInfoEXT>(
65639        mut self,
65640        next: &'a mut T,
65641    ) -> Self {
65642        unsafe {
65643            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
65644            (*next_ptr).p_next = self.inner.p_next as *mut _;
65645            self.inner.p_next = <*mut BaseOutStructure>::cast::<
65646                core::ffi::c_void,
65647            >(next_ptr) as *const _;
65648        }
65649        self
65650    }
65651}
65652impl<'a> core::ops::Deref for ExportMetalObjectCreateInfoEXTBuilder<'a> {
65653    type Target = ExportMetalObjectCreateInfoEXT;
65654    #[inline]
65655    fn deref(&self) -> &Self::Target {
65656        &self.inner
65657    }
65658}
65659impl<'a> core::ops::DerefMut for ExportMetalObjectCreateInfoEXTBuilder<'a> {
65660    #[inline]
65661    fn deref_mut(&mut self) -> &mut Self::Target {
65662        &mut self.inner
65663    }
65664}
65665///Builder for [`ExportMetalObjectsInfoEXT`] with lifetime-tied pNext safety.
65666pub struct ExportMetalObjectsInfoEXTBuilder<'a> {
65667    inner: ExportMetalObjectsInfoEXT,
65668    _marker: core::marker::PhantomData<&'a ()>,
65669}
65670impl ExportMetalObjectsInfoEXT {
65671    /// Start building this struct; `s_type` is already set to the correct variant.
65672    #[inline]
65673    pub fn builder<'a>() -> ExportMetalObjectsInfoEXTBuilder<'a> {
65674        ExportMetalObjectsInfoEXTBuilder {
65675            inner: ExportMetalObjectsInfoEXT {
65676                s_type: StructureType::from_raw(1000311001i32),
65677                ..Default::default()
65678            },
65679            _marker: core::marker::PhantomData,
65680        }
65681    }
65682}
65683impl<'a> ExportMetalObjectsInfoEXTBuilder<'a> {
65684    ///Prepend a struct to the pNext chain. See [`ExportMetalObjectsInfoEXT`]'s **Extended By** section for valid types.
65685    #[inline]
65686    pub fn push_next<T: ExtendsExportMetalObjectsInfoEXT>(
65687        mut self,
65688        next: &'a mut T,
65689    ) -> Self {
65690        unsafe {
65691            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
65692            (*next_ptr).p_next = self.inner.p_next as *mut _;
65693            self.inner.p_next = <*mut BaseOutStructure>::cast::<
65694                core::ffi::c_void,
65695            >(next_ptr) as *const _;
65696        }
65697        self
65698    }
65699}
65700impl<'a> core::ops::Deref for ExportMetalObjectsInfoEXTBuilder<'a> {
65701    type Target = ExportMetalObjectsInfoEXT;
65702    #[inline]
65703    fn deref(&self) -> &Self::Target {
65704        &self.inner
65705    }
65706}
65707impl<'a> core::ops::DerefMut for ExportMetalObjectsInfoEXTBuilder<'a> {
65708    #[inline]
65709    fn deref_mut(&mut self) -> &mut Self::Target {
65710        &mut self.inner
65711    }
65712}
65713///Builder for [`ExportMetalDeviceInfoEXT`] with lifetime-tied pNext safety.
65714pub struct ExportMetalDeviceInfoEXTBuilder<'a> {
65715    inner: ExportMetalDeviceInfoEXT,
65716    _marker: core::marker::PhantomData<&'a ()>,
65717}
65718impl ExportMetalDeviceInfoEXT {
65719    /// Start building this struct; `s_type` is already set to the correct variant.
65720    #[inline]
65721    pub fn builder<'a>() -> ExportMetalDeviceInfoEXTBuilder<'a> {
65722        ExportMetalDeviceInfoEXTBuilder {
65723            inner: ExportMetalDeviceInfoEXT {
65724                s_type: StructureType::from_raw(1000311002i32),
65725                ..Default::default()
65726            },
65727            _marker: core::marker::PhantomData,
65728        }
65729    }
65730}
65731impl<'a> ExportMetalDeviceInfoEXTBuilder<'a> {
65732    #[inline]
65733    pub fn mtl_device(mut self, value: *const core::ffi::c_void) -> Self {
65734        self.inner.mtl_device = value;
65735        self
65736    }
65737    ///Prepend a struct to the pNext chain. See [`ExportMetalDeviceInfoEXT`]'s **Extended By** section for valid types.
65738    #[inline]
65739    pub fn push_next<T: ExtendsExportMetalDeviceInfoEXT>(
65740        mut self,
65741        next: &'a mut T,
65742    ) -> Self {
65743        unsafe {
65744            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
65745            (*next_ptr).p_next = self.inner.p_next as *mut _;
65746            self.inner.p_next = <*mut BaseOutStructure>::cast::<
65747                core::ffi::c_void,
65748            >(next_ptr) as *const _;
65749        }
65750        self
65751    }
65752}
65753impl<'a> core::ops::Deref for ExportMetalDeviceInfoEXTBuilder<'a> {
65754    type Target = ExportMetalDeviceInfoEXT;
65755    #[inline]
65756    fn deref(&self) -> &Self::Target {
65757        &self.inner
65758    }
65759}
65760impl<'a> core::ops::DerefMut for ExportMetalDeviceInfoEXTBuilder<'a> {
65761    #[inline]
65762    fn deref_mut(&mut self) -> &mut Self::Target {
65763        &mut self.inner
65764    }
65765}
65766///Builder for [`ExportMetalCommandQueueInfoEXT`] with lifetime-tied pNext safety.
65767pub struct ExportMetalCommandQueueInfoEXTBuilder<'a> {
65768    inner: ExportMetalCommandQueueInfoEXT,
65769    _marker: core::marker::PhantomData<&'a ()>,
65770}
65771impl ExportMetalCommandQueueInfoEXT {
65772    /// Start building this struct; `s_type` is already set to the correct variant.
65773    #[inline]
65774    pub fn builder<'a>() -> ExportMetalCommandQueueInfoEXTBuilder<'a> {
65775        ExportMetalCommandQueueInfoEXTBuilder {
65776            inner: ExportMetalCommandQueueInfoEXT {
65777                s_type: StructureType::from_raw(1000311003i32),
65778                ..Default::default()
65779            },
65780            _marker: core::marker::PhantomData,
65781        }
65782    }
65783}
65784impl<'a> ExportMetalCommandQueueInfoEXTBuilder<'a> {
65785    #[inline]
65786    pub fn queue(mut self, value: Queue) -> Self {
65787        self.inner.queue = value;
65788        self
65789    }
65790    #[inline]
65791    pub fn mtl_command_queue(mut self, value: *const core::ffi::c_void) -> Self {
65792        self.inner.mtl_command_queue = value;
65793        self
65794    }
65795    ///Prepend a struct to the pNext chain. See [`ExportMetalCommandQueueInfoEXT`]'s **Extended By** section for valid types.
65796    #[inline]
65797    pub fn push_next<T: ExtendsExportMetalCommandQueueInfoEXT>(
65798        mut self,
65799        next: &'a mut T,
65800    ) -> Self {
65801        unsafe {
65802            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
65803            (*next_ptr).p_next = self.inner.p_next as *mut _;
65804            self.inner.p_next = <*mut BaseOutStructure>::cast::<
65805                core::ffi::c_void,
65806            >(next_ptr) as *const _;
65807        }
65808        self
65809    }
65810}
65811impl<'a> core::ops::Deref for ExportMetalCommandQueueInfoEXTBuilder<'a> {
65812    type Target = ExportMetalCommandQueueInfoEXT;
65813    #[inline]
65814    fn deref(&self) -> &Self::Target {
65815        &self.inner
65816    }
65817}
65818impl<'a> core::ops::DerefMut for ExportMetalCommandQueueInfoEXTBuilder<'a> {
65819    #[inline]
65820    fn deref_mut(&mut self) -> &mut Self::Target {
65821        &mut self.inner
65822    }
65823}
65824///Builder for [`ExportMetalBufferInfoEXT`] with lifetime-tied pNext safety.
65825pub struct ExportMetalBufferInfoEXTBuilder<'a> {
65826    inner: ExportMetalBufferInfoEXT,
65827    _marker: core::marker::PhantomData<&'a ()>,
65828}
65829impl ExportMetalBufferInfoEXT {
65830    /// Start building this struct; `s_type` is already set to the correct variant.
65831    #[inline]
65832    pub fn builder<'a>() -> ExportMetalBufferInfoEXTBuilder<'a> {
65833        ExportMetalBufferInfoEXTBuilder {
65834            inner: ExportMetalBufferInfoEXT {
65835                s_type: StructureType::from_raw(1000311004i32),
65836                ..Default::default()
65837            },
65838            _marker: core::marker::PhantomData,
65839        }
65840    }
65841}
65842impl<'a> ExportMetalBufferInfoEXTBuilder<'a> {
65843    #[inline]
65844    pub fn memory(mut self, value: DeviceMemory) -> Self {
65845        self.inner.memory = value;
65846        self
65847    }
65848    #[inline]
65849    pub fn mtl_buffer(mut self, value: *const core::ffi::c_void) -> Self {
65850        self.inner.mtl_buffer = value;
65851        self
65852    }
65853    ///Prepend a struct to the pNext chain. See [`ExportMetalBufferInfoEXT`]'s **Extended By** section for valid types.
65854    #[inline]
65855    pub fn push_next<T: ExtendsExportMetalBufferInfoEXT>(
65856        mut self,
65857        next: &'a mut T,
65858    ) -> Self {
65859        unsafe {
65860            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
65861            (*next_ptr).p_next = self.inner.p_next as *mut _;
65862            self.inner.p_next = <*mut BaseOutStructure>::cast::<
65863                core::ffi::c_void,
65864            >(next_ptr) as *const _;
65865        }
65866        self
65867    }
65868}
65869impl<'a> core::ops::Deref for ExportMetalBufferInfoEXTBuilder<'a> {
65870    type Target = ExportMetalBufferInfoEXT;
65871    #[inline]
65872    fn deref(&self) -> &Self::Target {
65873        &self.inner
65874    }
65875}
65876impl<'a> core::ops::DerefMut for ExportMetalBufferInfoEXTBuilder<'a> {
65877    #[inline]
65878    fn deref_mut(&mut self) -> &mut Self::Target {
65879        &mut self.inner
65880    }
65881}
65882///Builder for [`ImportMetalBufferInfoEXT`] with lifetime-tied pNext safety.
65883pub struct ImportMetalBufferInfoEXTBuilder<'a> {
65884    inner: ImportMetalBufferInfoEXT,
65885    _marker: core::marker::PhantomData<&'a ()>,
65886}
65887impl ImportMetalBufferInfoEXT {
65888    /// Start building this struct; `s_type` is already set to the correct variant.
65889    #[inline]
65890    pub fn builder<'a>() -> ImportMetalBufferInfoEXTBuilder<'a> {
65891        ImportMetalBufferInfoEXTBuilder {
65892            inner: ImportMetalBufferInfoEXT {
65893                s_type: StructureType::from_raw(1000311005i32),
65894                ..Default::default()
65895            },
65896            _marker: core::marker::PhantomData,
65897        }
65898    }
65899}
65900impl<'a> ImportMetalBufferInfoEXTBuilder<'a> {
65901    #[inline]
65902    pub fn mtl_buffer(mut self, value: *const core::ffi::c_void) -> Self {
65903        self.inner.mtl_buffer = value;
65904        self
65905    }
65906    ///Prepend a struct to the pNext chain. See [`ImportMetalBufferInfoEXT`]'s **Extended By** section for valid types.
65907    #[inline]
65908    pub fn push_next<T: ExtendsImportMetalBufferInfoEXT>(
65909        mut self,
65910        next: &'a mut T,
65911    ) -> Self {
65912        unsafe {
65913            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
65914            (*next_ptr).p_next = self.inner.p_next as *mut _;
65915            self.inner.p_next = <*mut BaseOutStructure>::cast::<
65916                core::ffi::c_void,
65917            >(next_ptr) as *const _;
65918        }
65919        self
65920    }
65921}
65922impl<'a> core::ops::Deref for ImportMetalBufferInfoEXTBuilder<'a> {
65923    type Target = ImportMetalBufferInfoEXT;
65924    #[inline]
65925    fn deref(&self) -> &Self::Target {
65926        &self.inner
65927    }
65928}
65929impl<'a> core::ops::DerefMut for ImportMetalBufferInfoEXTBuilder<'a> {
65930    #[inline]
65931    fn deref_mut(&mut self) -> &mut Self::Target {
65932        &mut self.inner
65933    }
65934}
65935///Builder for [`ExportMetalTextureInfoEXT`] with lifetime-tied pNext safety.
65936pub struct ExportMetalTextureInfoEXTBuilder<'a> {
65937    inner: ExportMetalTextureInfoEXT,
65938    _marker: core::marker::PhantomData<&'a ()>,
65939}
65940impl ExportMetalTextureInfoEXT {
65941    /// Start building this struct; `s_type` is already set to the correct variant.
65942    #[inline]
65943    pub fn builder<'a>() -> ExportMetalTextureInfoEXTBuilder<'a> {
65944        ExportMetalTextureInfoEXTBuilder {
65945            inner: ExportMetalTextureInfoEXT {
65946                s_type: StructureType::from_raw(1000311006i32),
65947                ..Default::default()
65948            },
65949            _marker: core::marker::PhantomData,
65950        }
65951    }
65952}
65953impl<'a> ExportMetalTextureInfoEXTBuilder<'a> {
65954    #[inline]
65955    pub fn image(mut self, value: Image) -> Self {
65956        self.inner.image = value;
65957        self
65958    }
65959    #[inline]
65960    pub fn image_view(mut self, value: ImageView) -> Self {
65961        self.inner.image_view = value;
65962        self
65963    }
65964    #[inline]
65965    pub fn buffer_view(mut self, value: BufferView) -> Self {
65966        self.inner.buffer_view = value;
65967        self
65968    }
65969    #[inline]
65970    pub fn plane(mut self, value: ImageAspectFlagBits) -> Self {
65971        self.inner.plane = value;
65972        self
65973    }
65974    #[inline]
65975    pub fn mtl_texture(mut self, value: *const core::ffi::c_void) -> Self {
65976        self.inner.mtl_texture = value;
65977        self
65978    }
65979    ///Prepend a struct to the pNext chain. See [`ExportMetalTextureInfoEXT`]'s **Extended By** section for valid types.
65980    #[inline]
65981    pub fn push_next<T: ExtendsExportMetalTextureInfoEXT>(
65982        mut self,
65983        next: &'a mut T,
65984    ) -> Self {
65985        unsafe {
65986            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
65987            (*next_ptr).p_next = self.inner.p_next as *mut _;
65988            self.inner.p_next = <*mut BaseOutStructure>::cast::<
65989                core::ffi::c_void,
65990            >(next_ptr) as *const _;
65991        }
65992        self
65993    }
65994}
65995impl<'a> core::ops::Deref for ExportMetalTextureInfoEXTBuilder<'a> {
65996    type Target = ExportMetalTextureInfoEXT;
65997    #[inline]
65998    fn deref(&self) -> &Self::Target {
65999        &self.inner
66000    }
66001}
66002impl<'a> core::ops::DerefMut for ExportMetalTextureInfoEXTBuilder<'a> {
66003    #[inline]
66004    fn deref_mut(&mut self) -> &mut Self::Target {
66005        &mut self.inner
66006    }
66007}
66008///Builder for [`ImportMetalTextureInfoEXT`] with lifetime-tied pNext safety.
66009pub struct ImportMetalTextureInfoEXTBuilder<'a> {
66010    inner: ImportMetalTextureInfoEXT,
66011    _marker: core::marker::PhantomData<&'a ()>,
66012}
66013impl ImportMetalTextureInfoEXT {
66014    /// Start building this struct; `s_type` is already set to the correct variant.
66015    #[inline]
66016    pub fn builder<'a>() -> ImportMetalTextureInfoEXTBuilder<'a> {
66017        ImportMetalTextureInfoEXTBuilder {
66018            inner: ImportMetalTextureInfoEXT {
66019                s_type: StructureType::from_raw(1000311007i32),
66020                ..Default::default()
66021            },
66022            _marker: core::marker::PhantomData,
66023        }
66024    }
66025}
66026impl<'a> ImportMetalTextureInfoEXTBuilder<'a> {
66027    #[inline]
66028    pub fn plane(mut self, value: ImageAspectFlagBits) -> Self {
66029        self.inner.plane = value;
66030        self
66031    }
66032    #[inline]
66033    pub fn mtl_texture(mut self, value: *const core::ffi::c_void) -> Self {
66034        self.inner.mtl_texture = value;
66035        self
66036    }
66037    ///Prepend a struct to the pNext chain. See [`ImportMetalTextureInfoEXT`]'s **Extended By** section for valid types.
66038    #[inline]
66039    pub fn push_next<T: ExtendsImportMetalTextureInfoEXT>(
66040        mut self,
66041        next: &'a mut T,
66042    ) -> Self {
66043        unsafe {
66044            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
66045            (*next_ptr).p_next = self.inner.p_next as *mut _;
66046            self.inner.p_next = <*mut BaseOutStructure>::cast::<
66047                core::ffi::c_void,
66048            >(next_ptr) as *const _;
66049        }
66050        self
66051    }
66052}
66053impl<'a> core::ops::Deref for ImportMetalTextureInfoEXTBuilder<'a> {
66054    type Target = ImportMetalTextureInfoEXT;
66055    #[inline]
66056    fn deref(&self) -> &Self::Target {
66057        &self.inner
66058    }
66059}
66060impl<'a> core::ops::DerefMut for ImportMetalTextureInfoEXTBuilder<'a> {
66061    #[inline]
66062    fn deref_mut(&mut self) -> &mut Self::Target {
66063        &mut self.inner
66064    }
66065}
66066///Builder for [`ExportMetalIOSurfaceInfoEXT`] with lifetime-tied pNext safety.
66067pub struct ExportMetalIOSurfaceInfoEXTBuilder<'a> {
66068    inner: ExportMetalIOSurfaceInfoEXT,
66069    _marker: core::marker::PhantomData<&'a ()>,
66070}
66071impl ExportMetalIOSurfaceInfoEXT {
66072    /// Start building this struct; `s_type` is already set to the correct variant.
66073    #[inline]
66074    pub fn builder<'a>() -> ExportMetalIOSurfaceInfoEXTBuilder<'a> {
66075        ExportMetalIOSurfaceInfoEXTBuilder {
66076            inner: ExportMetalIOSurfaceInfoEXT {
66077                s_type: StructureType::from_raw(1000311008i32),
66078                ..Default::default()
66079            },
66080            _marker: core::marker::PhantomData,
66081        }
66082    }
66083}
66084impl<'a> ExportMetalIOSurfaceInfoEXTBuilder<'a> {
66085    #[inline]
66086    pub fn image(mut self, value: Image) -> Self {
66087        self.inner.image = value;
66088        self
66089    }
66090    #[inline]
66091    pub fn io_surface(mut self, value: *const core::ffi::c_void) -> Self {
66092        self.inner.io_surface = value;
66093        self
66094    }
66095    ///Prepend a struct to the pNext chain. See [`ExportMetalIOSurfaceInfoEXT`]'s **Extended By** section for valid types.
66096    #[inline]
66097    pub fn push_next<T: ExtendsExportMetalIOSurfaceInfoEXT>(
66098        mut self,
66099        next: &'a mut T,
66100    ) -> Self {
66101        unsafe {
66102            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
66103            (*next_ptr).p_next = self.inner.p_next as *mut _;
66104            self.inner.p_next = <*mut BaseOutStructure>::cast::<
66105                core::ffi::c_void,
66106            >(next_ptr) as *const _;
66107        }
66108        self
66109    }
66110}
66111impl<'a> core::ops::Deref for ExportMetalIOSurfaceInfoEXTBuilder<'a> {
66112    type Target = ExportMetalIOSurfaceInfoEXT;
66113    #[inline]
66114    fn deref(&self) -> &Self::Target {
66115        &self.inner
66116    }
66117}
66118impl<'a> core::ops::DerefMut for ExportMetalIOSurfaceInfoEXTBuilder<'a> {
66119    #[inline]
66120    fn deref_mut(&mut self) -> &mut Self::Target {
66121        &mut self.inner
66122    }
66123}
66124///Builder for [`ImportMetalIOSurfaceInfoEXT`] with lifetime-tied pNext safety.
66125pub struct ImportMetalIOSurfaceInfoEXTBuilder<'a> {
66126    inner: ImportMetalIOSurfaceInfoEXT,
66127    _marker: core::marker::PhantomData<&'a ()>,
66128}
66129impl ImportMetalIOSurfaceInfoEXT {
66130    /// Start building this struct; `s_type` is already set to the correct variant.
66131    #[inline]
66132    pub fn builder<'a>() -> ImportMetalIOSurfaceInfoEXTBuilder<'a> {
66133        ImportMetalIOSurfaceInfoEXTBuilder {
66134            inner: ImportMetalIOSurfaceInfoEXT {
66135                s_type: StructureType::from_raw(1000311009i32),
66136                ..Default::default()
66137            },
66138            _marker: core::marker::PhantomData,
66139        }
66140    }
66141}
66142impl<'a> ImportMetalIOSurfaceInfoEXTBuilder<'a> {
66143    #[inline]
66144    pub fn io_surface(mut self, value: *const core::ffi::c_void) -> Self {
66145        self.inner.io_surface = value;
66146        self
66147    }
66148    ///Prepend a struct to the pNext chain. See [`ImportMetalIOSurfaceInfoEXT`]'s **Extended By** section for valid types.
66149    #[inline]
66150    pub fn push_next<T: ExtendsImportMetalIOSurfaceInfoEXT>(
66151        mut self,
66152        next: &'a mut T,
66153    ) -> Self {
66154        unsafe {
66155            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
66156            (*next_ptr).p_next = self.inner.p_next as *mut _;
66157            self.inner.p_next = <*mut BaseOutStructure>::cast::<
66158                core::ffi::c_void,
66159            >(next_ptr) as *const _;
66160        }
66161        self
66162    }
66163}
66164impl<'a> core::ops::Deref for ImportMetalIOSurfaceInfoEXTBuilder<'a> {
66165    type Target = ImportMetalIOSurfaceInfoEXT;
66166    #[inline]
66167    fn deref(&self) -> &Self::Target {
66168        &self.inner
66169    }
66170}
66171impl<'a> core::ops::DerefMut for ImportMetalIOSurfaceInfoEXTBuilder<'a> {
66172    #[inline]
66173    fn deref_mut(&mut self) -> &mut Self::Target {
66174        &mut self.inner
66175    }
66176}
66177///Builder for [`ExportMetalSharedEventInfoEXT`] with lifetime-tied pNext safety.
66178pub struct ExportMetalSharedEventInfoEXTBuilder<'a> {
66179    inner: ExportMetalSharedEventInfoEXT,
66180    _marker: core::marker::PhantomData<&'a ()>,
66181}
66182impl ExportMetalSharedEventInfoEXT {
66183    /// Start building this struct; `s_type` is already set to the correct variant.
66184    #[inline]
66185    pub fn builder<'a>() -> ExportMetalSharedEventInfoEXTBuilder<'a> {
66186        ExportMetalSharedEventInfoEXTBuilder {
66187            inner: ExportMetalSharedEventInfoEXT {
66188                s_type: StructureType::from_raw(1000311010i32),
66189                ..Default::default()
66190            },
66191            _marker: core::marker::PhantomData,
66192        }
66193    }
66194}
66195impl<'a> ExportMetalSharedEventInfoEXTBuilder<'a> {
66196    #[inline]
66197    pub fn semaphore(mut self, value: Semaphore) -> Self {
66198        self.inner.semaphore = value;
66199        self
66200    }
66201    #[inline]
66202    pub fn event(mut self, value: Event) -> Self {
66203        self.inner.event = value;
66204        self
66205    }
66206    #[inline]
66207    pub fn mtl_shared_event(mut self, value: *const core::ffi::c_void) -> Self {
66208        self.inner.mtl_shared_event = value;
66209        self
66210    }
66211    ///Prepend a struct to the pNext chain. See [`ExportMetalSharedEventInfoEXT`]'s **Extended By** section for valid types.
66212    #[inline]
66213    pub fn push_next<T: ExtendsExportMetalSharedEventInfoEXT>(
66214        mut self,
66215        next: &'a mut T,
66216    ) -> Self {
66217        unsafe {
66218            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
66219            (*next_ptr).p_next = self.inner.p_next as *mut _;
66220            self.inner.p_next = <*mut BaseOutStructure>::cast::<
66221                core::ffi::c_void,
66222            >(next_ptr) as *const _;
66223        }
66224        self
66225    }
66226}
66227impl<'a> core::ops::Deref for ExportMetalSharedEventInfoEXTBuilder<'a> {
66228    type Target = ExportMetalSharedEventInfoEXT;
66229    #[inline]
66230    fn deref(&self) -> &Self::Target {
66231        &self.inner
66232    }
66233}
66234impl<'a> core::ops::DerefMut for ExportMetalSharedEventInfoEXTBuilder<'a> {
66235    #[inline]
66236    fn deref_mut(&mut self) -> &mut Self::Target {
66237        &mut self.inner
66238    }
66239}
66240///Builder for [`ImportMetalSharedEventInfoEXT`] with lifetime-tied pNext safety.
66241pub struct ImportMetalSharedEventInfoEXTBuilder<'a> {
66242    inner: ImportMetalSharedEventInfoEXT,
66243    _marker: core::marker::PhantomData<&'a ()>,
66244}
66245impl ImportMetalSharedEventInfoEXT {
66246    /// Start building this struct; `s_type` is already set to the correct variant.
66247    #[inline]
66248    pub fn builder<'a>() -> ImportMetalSharedEventInfoEXTBuilder<'a> {
66249        ImportMetalSharedEventInfoEXTBuilder {
66250            inner: ImportMetalSharedEventInfoEXT {
66251                s_type: StructureType::from_raw(1000311011i32),
66252                ..Default::default()
66253            },
66254            _marker: core::marker::PhantomData,
66255        }
66256    }
66257}
66258impl<'a> ImportMetalSharedEventInfoEXTBuilder<'a> {
66259    #[inline]
66260    pub fn mtl_shared_event(mut self, value: *const core::ffi::c_void) -> Self {
66261        self.inner.mtl_shared_event = value;
66262        self
66263    }
66264    ///Prepend a struct to the pNext chain. See [`ImportMetalSharedEventInfoEXT`]'s **Extended By** section for valid types.
66265    #[inline]
66266    pub fn push_next<T: ExtendsImportMetalSharedEventInfoEXT>(
66267        mut self,
66268        next: &'a mut T,
66269    ) -> Self {
66270        unsafe {
66271            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
66272            (*next_ptr).p_next = self.inner.p_next as *mut _;
66273            self.inner.p_next = <*mut BaseOutStructure>::cast::<
66274                core::ffi::c_void,
66275            >(next_ptr) as *const _;
66276        }
66277        self
66278    }
66279}
66280impl<'a> core::ops::Deref for ImportMetalSharedEventInfoEXTBuilder<'a> {
66281    type Target = ImportMetalSharedEventInfoEXT;
66282    #[inline]
66283    fn deref(&self) -> &Self::Target {
66284        &self.inner
66285    }
66286}
66287impl<'a> core::ops::DerefMut for ImportMetalSharedEventInfoEXTBuilder<'a> {
66288    #[inline]
66289    fn deref_mut(&mut self) -> &mut Self::Target {
66290        &mut self.inner
66291    }
66292}
66293///Builder for [`PhysicalDeviceNonSeamlessCubeMapFeaturesEXT`] with lifetime-tied pNext safety.
66294pub struct PhysicalDeviceNonSeamlessCubeMapFeaturesEXTBuilder<'a> {
66295    inner: PhysicalDeviceNonSeamlessCubeMapFeaturesEXT,
66296    _marker: core::marker::PhantomData<&'a ()>,
66297}
66298impl PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
66299    /// Start building this struct; `s_type` is already set to the correct variant.
66300    #[inline]
66301    pub fn builder<'a>() -> PhysicalDeviceNonSeamlessCubeMapFeaturesEXTBuilder<'a> {
66302        PhysicalDeviceNonSeamlessCubeMapFeaturesEXTBuilder {
66303            inner: PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
66304                s_type: StructureType::from_raw(1000422000i32),
66305                ..Default::default()
66306            },
66307            _marker: core::marker::PhantomData,
66308        }
66309    }
66310}
66311impl<'a> PhysicalDeviceNonSeamlessCubeMapFeaturesEXTBuilder<'a> {
66312    #[inline]
66313    pub fn non_seamless_cube_map(mut self, value: bool) -> Self {
66314        self.inner.non_seamless_cube_map = value as u32;
66315        self
66316    }
66317    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceNonSeamlessCubeMapFeaturesEXT`]'s **Extended By** section for valid types.
66318    #[inline]
66319    pub fn push_next<T: ExtendsPhysicalDeviceNonSeamlessCubeMapFeaturesEXT>(
66320        mut self,
66321        next: &'a mut T,
66322    ) -> Self {
66323        unsafe {
66324            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
66325            (*next_ptr).p_next = self.inner.p_next as *mut _;
66326            self.inner.p_next = <*mut BaseOutStructure>::cast::<
66327                core::ffi::c_void,
66328            >(next_ptr);
66329        }
66330        self
66331    }
66332}
66333impl<'a> core::ops::Deref for PhysicalDeviceNonSeamlessCubeMapFeaturesEXTBuilder<'a> {
66334    type Target = PhysicalDeviceNonSeamlessCubeMapFeaturesEXT;
66335    #[inline]
66336    fn deref(&self) -> &Self::Target {
66337        &self.inner
66338    }
66339}
66340impl<'a> core::ops::DerefMut for PhysicalDeviceNonSeamlessCubeMapFeaturesEXTBuilder<'a> {
66341    #[inline]
66342    fn deref_mut(&mut self) -> &mut Self::Target {
66343        &mut self.inner
66344    }
66345}
66346///Builder for [`PhysicalDevicePipelineRobustnessFeatures`] with lifetime-tied pNext safety.
66347pub struct PhysicalDevicePipelineRobustnessFeaturesBuilder<'a> {
66348    inner: PhysicalDevicePipelineRobustnessFeatures,
66349    _marker: core::marker::PhantomData<&'a ()>,
66350}
66351impl PhysicalDevicePipelineRobustnessFeatures {
66352    /// Start building this struct; `s_type` is already set to the correct variant.
66353    #[inline]
66354    pub fn builder<'a>() -> PhysicalDevicePipelineRobustnessFeaturesBuilder<'a> {
66355        PhysicalDevicePipelineRobustnessFeaturesBuilder {
66356            inner: PhysicalDevicePipelineRobustnessFeatures {
66357                s_type: StructureType::from_raw(1000068001i32),
66358                ..Default::default()
66359            },
66360            _marker: core::marker::PhantomData,
66361        }
66362    }
66363}
66364impl<'a> PhysicalDevicePipelineRobustnessFeaturesBuilder<'a> {
66365    #[inline]
66366    pub fn pipeline_robustness(mut self, value: bool) -> Self {
66367        self.inner.pipeline_robustness = value as u32;
66368        self
66369    }
66370    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePipelineRobustnessFeatures`]'s **Extended By** section for valid types.
66371    #[inline]
66372    pub fn push_next<T: ExtendsPhysicalDevicePipelineRobustnessFeatures>(
66373        mut self,
66374        next: &'a mut T,
66375    ) -> Self {
66376        unsafe {
66377            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
66378            (*next_ptr).p_next = self.inner.p_next as *mut _;
66379            self.inner.p_next = <*mut BaseOutStructure>::cast::<
66380                core::ffi::c_void,
66381            >(next_ptr);
66382        }
66383        self
66384    }
66385}
66386impl<'a> core::ops::Deref for PhysicalDevicePipelineRobustnessFeaturesBuilder<'a> {
66387    type Target = PhysicalDevicePipelineRobustnessFeatures;
66388    #[inline]
66389    fn deref(&self) -> &Self::Target {
66390        &self.inner
66391    }
66392}
66393impl<'a> core::ops::DerefMut for PhysicalDevicePipelineRobustnessFeaturesBuilder<'a> {
66394    #[inline]
66395    fn deref_mut(&mut self) -> &mut Self::Target {
66396        &mut self.inner
66397    }
66398}
66399///Builder for [`PipelineRobustnessCreateInfo`] with lifetime-tied pNext safety.
66400pub struct PipelineRobustnessCreateInfoBuilder<'a> {
66401    inner: PipelineRobustnessCreateInfo,
66402    _marker: core::marker::PhantomData<&'a ()>,
66403}
66404impl PipelineRobustnessCreateInfo {
66405    /// Start building this struct; `s_type` is already set to the correct variant.
66406    #[inline]
66407    pub fn builder<'a>() -> PipelineRobustnessCreateInfoBuilder<'a> {
66408        PipelineRobustnessCreateInfoBuilder {
66409            inner: PipelineRobustnessCreateInfo {
66410                s_type: StructureType::from_raw(1000068000i32),
66411                ..Default::default()
66412            },
66413            _marker: core::marker::PhantomData,
66414        }
66415    }
66416}
66417impl<'a> PipelineRobustnessCreateInfoBuilder<'a> {
66418    #[inline]
66419    pub fn storage_buffers(mut self, value: PipelineRobustnessBufferBehavior) -> Self {
66420        self.inner.storage_buffers = value;
66421        self
66422    }
66423    #[inline]
66424    pub fn uniform_buffers(mut self, value: PipelineRobustnessBufferBehavior) -> Self {
66425        self.inner.uniform_buffers = value;
66426        self
66427    }
66428    #[inline]
66429    pub fn vertex_inputs(mut self, value: PipelineRobustnessBufferBehavior) -> Self {
66430        self.inner.vertex_inputs = value;
66431        self
66432    }
66433    #[inline]
66434    pub fn images(mut self, value: PipelineRobustnessImageBehavior) -> Self {
66435        self.inner.images = value;
66436        self
66437    }
66438    ///Prepend a struct to the pNext chain. See [`PipelineRobustnessCreateInfo`]'s **Extended By** section for valid types.
66439    #[inline]
66440    pub fn push_next<T: ExtendsPipelineRobustnessCreateInfo>(
66441        mut self,
66442        next: &'a mut T,
66443    ) -> Self {
66444        unsafe {
66445            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
66446            (*next_ptr).p_next = self.inner.p_next as *mut _;
66447            self.inner.p_next = <*mut BaseOutStructure>::cast::<
66448                core::ffi::c_void,
66449            >(next_ptr) as *const _;
66450        }
66451        self
66452    }
66453}
66454impl<'a> core::ops::Deref for PipelineRobustnessCreateInfoBuilder<'a> {
66455    type Target = PipelineRobustnessCreateInfo;
66456    #[inline]
66457    fn deref(&self) -> &Self::Target {
66458        &self.inner
66459    }
66460}
66461impl<'a> core::ops::DerefMut for PipelineRobustnessCreateInfoBuilder<'a> {
66462    #[inline]
66463    fn deref_mut(&mut self) -> &mut Self::Target {
66464        &mut self.inner
66465    }
66466}
66467///Builder for [`PhysicalDevicePipelineRobustnessProperties`] with lifetime-tied pNext safety.
66468pub struct PhysicalDevicePipelineRobustnessPropertiesBuilder<'a> {
66469    inner: PhysicalDevicePipelineRobustnessProperties,
66470    _marker: core::marker::PhantomData<&'a ()>,
66471}
66472impl PhysicalDevicePipelineRobustnessProperties {
66473    /// Start building this struct; `s_type` is already set to the correct variant.
66474    #[inline]
66475    pub fn builder<'a>() -> PhysicalDevicePipelineRobustnessPropertiesBuilder<'a> {
66476        PhysicalDevicePipelineRobustnessPropertiesBuilder {
66477            inner: PhysicalDevicePipelineRobustnessProperties {
66478                s_type: StructureType::from_raw(1000068002i32),
66479                ..Default::default()
66480            },
66481            _marker: core::marker::PhantomData,
66482        }
66483    }
66484}
66485impl<'a> PhysicalDevicePipelineRobustnessPropertiesBuilder<'a> {
66486    #[inline]
66487    pub fn default_robustness_storage_buffers(
66488        mut self,
66489        value: PipelineRobustnessBufferBehavior,
66490    ) -> Self {
66491        self.inner.default_robustness_storage_buffers = value;
66492        self
66493    }
66494    #[inline]
66495    pub fn default_robustness_uniform_buffers(
66496        mut self,
66497        value: PipelineRobustnessBufferBehavior,
66498    ) -> Self {
66499        self.inner.default_robustness_uniform_buffers = value;
66500        self
66501    }
66502    #[inline]
66503    pub fn default_robustness_vertex_inputs(
66504        mut self,
66505        value: PipelineRobustnessBufferBehavior,
66506    ) -> Self {
66507        self.inner.default_robustness_vertex_inputs = value;
66508        self
66509    }
66510    #[inline]
66511    pub fn default_robustness_images(
66512        mut self,
66513        value: PipelineRobustnessImageBehavior,
66514    ) -> Self {
66515        self.inner.default_robustness_images = value;
66516        self
66517    }
66518}
66519impl<'a> core::ops::Deref for PhysicalDevicePipelineRobustnessPropertiesBuilder<'a> {
66520    type Target = PhysicalDevicePipelineRobustnessProperties;
66521    #[inline]
66522    fn deref(&self) -> &Self::Target {
66523        &self.inner
66524    }
66525}
66526impl<'a> core::ops::DerefMut for PhysicalDevicePipelineRobustnessPropertiesBuilder<'a> {
66527    #[inline]
66528    fn deref_mut(&mut self) -> &mut Self::Target {
66529        &mut self.inner
66530    }
66531}
66532///Builder for [`ImageViewSampleWeightCreateInfoQCOM`] with lifetime-tied pNext safety.
66533pub struct ImageViewSampleWeightCreateInfoQCOMBuilder<'a> {
66534    inner: ImageViewSampleWeightCreateInfoQCOM,
66535    _marker: core::marker::PhantomData<&'a ()>,
66536}
66537impl ImageViewSampleWeightCreateInfoQCOM {
66538    /// Start building this struct; `s_type` is already set to the correct variant.
66539    #[inline]
66540    pub fn builder<'a>() -> ImageViewSampleWeightCreateInfoQCOMBuilder<'a> {
66541        ImageViewSampleWeightCreateInfoQCOMBuilder {
66542            inner: ImageViewSampleWeightCreateInfoQCOM {
66543                s_type: StructureType::from_raw(1000440002i32),
66544                ..Default::default()
66545            },
66546            _marker: core::marker::PhantomData,
66547        }
66548    }
66549}
66550impl<'a> ImageViewSampleWeightCreateInfoQCOMBuilder<'a> {
66551    #[inline]
66552    pub fn filter_center(mut self, value: Offset2D) -> Self {
66553        self.inner.filter_center = value;
66554        self
66555    }
66556    #[inline]
66557    pub fn filter_size(mut self, value: Extent2D) -> Self {
66558        self.inner.filter_size = value;
66559        self
66560    }
66561    #[inline]
66562    pub fn num_phases(mut self, value: u32) -> Self {
66563        self.inner.num_phases = value;
66564        self
66565    }
66566    ///Prepend a struct to the pNext chain. See [`ImageViewSampleWeightCreateInfoQCOM`]'s **Extended By** section for valid types.
66567    #[inline]
66568    pub fn push_next<T: ExtendsImageViewSampleWeightCreateInfoQCOM>(
66569        mut self,
66570        next: &'a mut T,
66571    ) -> Self {
66572        unsafe {
66573            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
66574            (*next_ptr).p_next = self.inner.p_next as *mut _;
66575            self.inner.p_next = <*mut BaseOutStructure>::cast::<
66576                core::ffi::c_void,
66577            >(next_ptr) as *const _;
66578        }
66579        self
66580    }
66581}
66582impl<'a> core::ops::Deref for ImageViewSampleWeightCreateInfoQCOMBuilder<'a> {
66583    type Target = ImageViewSampleWeightCreateInfoQCOM;
66584    #[inline]
66585    fn deref(&self) -> &Self::Target {
66586        &self.inner
66587    }
66588}
66589impl<'a> core::ops::DerefMut for ImageViewSampleWeightCreateInfoQCOMBuilder<'a> {
66590    #[inline]
66591    fn deref_mut(&mut self) -> &mut Self::Target {
66592        &mut self.inner
66593    }
66594}
66595///Builder for [`PhysicalDeviceImageProcessingFeaturesQCOM`] with lifetime-tied pNext safety.
66596pub struct PhysicalDeviceImageProcessingFeaturesQCOMBuilder<'a> {
66597    inner: PhysicalDeviceImageProcessingFeaturesQCOM,
66598    _marker: core::marker::PhantomData<&'a ()>,
66599}
66600impl PhysicalDeviceImageProcessingFeaturesQCOM {
66601    /// Start building this struct; `s_type` is already set to the correct variant.
66602    #[inline]
66603    pub fn builder<'a>() -> PhysicalDeviceImageProcessingFeaturesQCOMBuilder<'a> {
66604        PhysicalDeviceImageProcessingFeaturesQCOMBuilder {
66605            inner: PhysicalDeviceImageProcessingFeaturesQCOM {
66606                s_type: StructureType::from_raw(1000440000i32),
66607                ..Default::default()
66608            },
66609            _marker: core::marker::PhantomData,
66610        }
66611    }
66612}
66613impl<'a> PhysicalDeviceImageProcessingFeaturesQCOMBuilder<'a> {
66614    #[inline]
66615    pub fn texture_sample_weighted(mut self, value: bool) -> Self {
66616        self.inner.texture_sample_weighted = value as u32;
66617        self
66618    }
66619    #[inline]
66620    pub fn texture_box_filter(mut self, value: bool) -> Self {
66621        self.inner.texture_box_filter = value as u32;
66622        self
66623    }
66624    #[inline]
66625    pub fn texture_block_match(mut self, value: bool) -> Self {
66626        self.inner.texture_block_match = value as u32;
66627        self
66628    }
66629    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceImageProcessingFeaturesQCOM`]'s **Extended By** section for valid types.
66630    #[inline]
66631    pub fn push_next<T: ExtendsPhysicalDeviceImageProcessingFeaturesQCOM>(
66632        mut self,
66633        next: &'a mut T,
66634    ) -> Self {
66635        unsafe {
66636            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
66637            (*next_ptr).p_next = self.inner.p_next as *mut _;
66638            self.inner.p_next = <*mut BaseOutStructure>::cast::<
66639                core::ffi::c_void,
66640            >(next_ptr);
66641        }
66642        self
66643    }
66644}
66645impl<'a> core::ops::Deref for PhysicalDeviceImageProcessingFeaturesQCOMBuilder<'a> {
66646    type Target = PhysicalDeviceImageProcessingFeaturesQCOM;
66647    #[inline]
66648    fn deref(&self) -> &Self::Target {
66649        &self.inner
66650    }
66651}
66652impl<'a> core::ops::DerefMut for PhysicalDeviceImageProcessingFeaturesQCOMBuilder<'a> {
66653    #[inline]
66654    fn deref_mut(&mut self) -> &mut Self::Target {
66655        &mut self.inner
66656    }
66657}
66658///Builder for [`PhysicalDeviceImageProcessingPropertiesQCOM`] with lifetime-tied pNext safety.
66659pub struct PhysicalDeviceImageProcessingPropertiesQCOMBuilder<'a> {
66660    inner: PhysicalDeviceImageProcessingPropertiesQCOM,
66661    _marker: core::marker::PhantomData<&'a ()>,
66662}
66663impl PhysicalDeviceImageProcessingPropertiesQCOM {
66664    /// Start building this struct; `s_type` is already set to the correct variant.
66665    #[inline]
66666    pub fn builder<'a>() -> PhysicalDeviceImageProcessingPropertiesQCOMBuilder<'a> {
66667        PhysicalDeviceImageProcessingPropertiesQCOMBuilder {
66668            inner: PhysicalDeviceImageProcessingPropertiesQCOM {
66669                s_type: StructureType::from_raw(1000440001i32),
66670                ..Default::default()
66671            },
66672            _marker: core::marker::PhantomData,
66673        }
66674    }
66675}
66676impl<'a> PhysicalDeviceImageProcessingPropertiesQCOMBuilder<'a> {
66677    #[inline]
66678    pub fn max_weight_filter_phases(mut self, value: u32) -> Self {
66679        self.inner.max_weight_filter_phases = value;
66680        self
66681    }
66682    #[inline]
66683    pub fn max_weight_filter_dimension(mut self, value: Extent2D) -> Self {
66684        self.inner.max_weight_filter_dimension = value;
66685        self
66686    }
66687    #[inline]
66688    pub fn max_block_match_region(mut self, value: Extent2D) -> Self {
66689        self.inner.max_block_match_region = value;
66690        self
66691    }
66692    #[inline]
66693    pub fn max_box_filter_block_size(mut self, value: Extent2D) -> Self {
66694        self.inner.max_box_filter_block_size = value;
66695        self
66696    }
66697}
66698impl<'a> core::ops::Deref for PhysicalDeviceImageProcessingPropertiesQCOMBuilder<'a> {
66699    type Target = PhysicalDeviceImageProcessingPropertiesQCOM;
66700    #[inline]
66701    fn deref(&self) -> &Self::Target {
66702        &self.inner
66703    }
66704}
66705impl<'a> core::ops::DerefMut for PhysicalDeviceImageProcessingPropertiesQCOMBuilder<'a> {
66706    #[inline]
66707    fn deref_mut(&mut self) -> &mut Self::Target {
66708        &mut self.inner
66709    }
66710}
66711///Builder for [`PhysicalDeviceTilePropertiesFeaturesQCOM`] with lifetime-tied pNext safety.
66712pub struct PhysicalDeviceTilePropertiesFeaturesQCOMBuilder<'a> {
66713    inner: PhysicalDeviceTilePropertiesFeaturesQCOM,
66714    _marker: core::marker::PhantomData<&'a ()>,
66715}
66716impl PhysicalDeviceTilePropertiesFeaturesQCOM {
66717    /// Start building this struct; `s_type` is already set to the correct variant.
66718    #[inline]
66719    pub fn builder<'a>() -> PhysicalDeviceTilePropertiesFeaturesQCOMBuilder<'a> {
66720        PhysicalDeviceTilePropertiesFeaturesQCOMBuilder {
66721            inner: PhysicalDeviceTilePropertiesFeaturesQCOM {
66722                s_type: StructureType::from_raw(1000484000i32),
66723                ..Default::default()
66724            },
66725            _marker: core::marker::PhantomData,
66726        }
66727    }
66728}
66729impl<'a> PhysicalDeviceTilePropertiesFeaturesQCOMBuilder<'a> {
66730    #[inline]
66731    pub fn tile_properties(mut self, value: bool) -> Self {
66732        self.inner.tile_properties = value as u32;
66733        self
66734    }
66735    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceTilePropertiesFeaturesQCOM`]'s **Extended By** section for valid types.
66736    #[inline]
66737    pub fn push_next<T: ExtendsPhysicalDeviceTilePropertiesFeaturesQCOM>(
66738        mut self,
66739        next: &'a mut T,
66740    ) -> Self {
66741        unsafe {
66742            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
66743            (*next_ptr).p_next = self.inner.p_next as *mut _;
66744            self.inner.p_next = <*mut BaseOutStructure>::cast::<
66745                core::ffi::c_void,
66746            >(next_ptr);
66747        }
66748        self
66749    }
66750}
66751impl<'a> core::ops::Deref for PhysicalDeviceTilePropertiesFeaturesQCOMBuilder<'a> {
66752    type Target = PhysicalDeviceTilePropertiesFeaturesQCOM;
66753    #[inline]
66754    fn deref(&self) -> &Self::Target {
66755        &self.inner
66756    }
66757}
66758impl<'a> core::ops::DerefMut for PhysicalDeviceTilePropertiesFeaturesQCOMBuilder<'a> {
66759    #[inline]
66760    fn deref_mut(&mut self) -> &mut Self::Target {
66761        &mut self.inner
66762    }
66763}
66764///Builder for [`TilePropertiesQCOM`] with lifetime-tied pNext safety.
66765pub struct TilePropertiesQCOMBuilder<'a> {
66766    inner: TilePropertiesQCOM,
66767    _marker: core::marker::PhantomData<&'a ()>,
66768}
66769impl TilePropertiesQCOM {
66770    /// Start building this struct; `s_type` is already set to the correct variant.
66771    #[inline]
66772    pub fn builder<'a>() -> TilePropertiesQCOMBuilder<'a> {
66773        TilePropertiesQCOMBuilder {
66774            inner: TilePropertiesQCOM {
66775                s_type: StructureType::from_raw(1000484001i32),
66776                ..Default::default()
66777            },
66778            _marker: core::marker::PhantomData,
66779        }
66780    }
66781}
66782impl<'a> TilePropertiesQCOMBuilder<'a> {
66783    #[inline]
66784    pub fn tile_size(mut self, value: Extent3D) -> Self {
66785        self.inner.tile_size = value;
66786        self
66787    }
66788    #[inline]
66789    pub fn apron_size(mut self, value: Extent2D) -> Self {
66790        self.inner.apron_size = value;
66791        self
66792    }
66793    #[inline]
66794    pub fn origin(mut self, value: Offset2D) -> Self {
66795        self.inner.origin = value;
66796        self
66797    }
66798    ///Prepend a struct to the pNext chain. See [`TilePropertiesQCOM`]'s **Extended By** section for valid types.
66799    #[inline]
66800    pub fn push_next<T: ExtendsTilePropertiesQCOM>(mut self, next: &'a mut T) -> Self {
66801        unsafe {
66802            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
66803            (*next_ptr).p_next = self.inner.p_next as *mut _;
66804            self.inner.p_next = <*mut BaseOutStructure>::cast::<
66805                core::ffi::c_void,
66806            >(next_ptr);
66807        }
66808        self
66809    }
66810}
66811impl<'a> core::ops::Deref for TilePropertiesQCOMBuilder<'a> {
66812    type Target = TilePropertiesQCOM;
66813    #[inline]
66814    fn deref(&self) -> &Self::Target {
66815        &self.inner
66816    }
66817}
66818impl<'a> core::ops::DerefMut for TilePropertiesQCOMBuilder<'a> {
66819    #[inline]
66820    fn deref_mut(&mut self) -> &mut Self::Target {
66821        &mut self.inner
66822    }
66823}
66824///Builder for [`TileMemoryBindInfoQCOM`] with lifetime-tied pNext safety.
66825pub struct TileMemoryBindInfoQCOMBuilder<'a> {
66826    inner: TileMemoryBindInfoQCOM,
66827    _marker: core::marker::PhantomData<&'a ()>,
66828}
66829impl TileMemoryBindInfoQCOM {
66830    /// Start building this struct; `s_type` is already set to the correct variant.
66831    #[inline]
66832    pub fn builder<'a>() -> TileMemoryBindInfoQCOMBuilder<'a> {
66833        TileMemoryBindInfoQCOMBuilder {
66834            inner: TileMemoryBindInfoQCOM {
66835                s_type: StructureType::from_raw(1000547003i32),
66836                ..Default::default()
66837            },
66838            _marker: core::marker::PhantomData,
66839        }
66840    }
66841}
66842impl<'a> TileMemoryBindInfoQCOMBuilder<'a> {
66843    #[inline]
66844    pub fn memory(mut self, value: DeviceMemory) -> Self {
66845        self.inner.memory = value;
66846        self
66847    }
66848    ///Prepend a struct to the pNext chain. See [`TileMemoryBindInfoQCOM`]'s **Extended By** section for valid types.
66849    #[inline]
66850    pub fn push_next<T: ExtendsTileMemoryBindInfoQCOM>(
66851        mut self,
66852        next: &'a mut T,
66853    ) -> Self {
66854        unsafe {
66855            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
66856            (*next_ptr).p_next = self.inner.p_next as *mut _;
66857            self.inner.p_next = <*mut BaseOutStructure>::cast::<
66858                core::ffi::c_void,
66859            >(next_ptr) as *const _;
66860        }
66861        self
66862    }
66863}
66864impl<'a> core::ops::Deref for TileMemoryBindInfoQCOMBuilder<'a> {
66865    type Target = TileMemoryBindInfoQCOM;
66866    #[inline]
66867    fn deref(&self) -> &Self::Target {
66868        &self.inner
66869    }
66870}
66871impl<'a> core::ops::DerefMut for TileMemoryBindInfoQCOMBuilder<'a> {
66872    #[inline]
66873    fn deref_mut(&mut self) -> &mut Self::Target {
66874        &mut self.inner
66875    }
66876}
66877///Builder for [`PhysicalDeviceAmigoProfilingFeaturesSEC`] with lifetime-tied pNext safety.
66878pub struct PhysicalDeviceAmigoProfilingFeaturesSECBuilder<'a> {
66879    inner: PhysicalDeviceAmigoProfilingFeaturesSEC,
66880    _marker: core::marker::PhantomData<&'a ()>,
66881}
66882impl PhysicalDeviceAmigoProfilingFeaturesSEC {
66883    /// Start building this struct; `s_type` is already set to the correct variant.
66884    #[inline]
66885    pub fn builder<'a>() -> PhysicalDeviceAmigoProfilingFeaturesSECBuilder<'a> {
66886        PhysicalDeviceAmigoProfilingFeaturesSECBuilder {
66887            inner: PhysicalDeviceAmigoProfilingFeaturesSEC {
66888                s_type: StructureType::from_raw(1000485000i32),
66889                ..Default::default()
66890            },
66891            _marker: core::marker::PhantomData,
66892        }
66893    }
66894}
66895impl<'a> PhysicalDeviceAmigoProfilingFeaturesSECBuilder<'a> {
66896    #[inline]
66897    pub fn amigo_profiling(mut self, value: bool) -> Self {
66898        self.inner.amigo_profiling = value as u32;
66899        self
66900    }
66901    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceAmigoProfilingFeaturesSEC`]'s **Extended By** section for valid types.
66902    #[inline]
66903    pub fn push_next<T: ExtendsPhysicalDeviceAmigoProfilingFeaturesSEC>(
66904        mut self,
66905        next: &'a mut T,
66906    ) -> Self {
66907        unsafe {
66908            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
66909            (*next_ptr).p_next = self.inner.p_next as *mut _;
66910            self.inner.p_next = <*mut BaseOutStructure>::cast::<
66911                core::ffi::c_void,
66912            >(next_ptr);
66913        }
66914        self
66915    }
66916}
66917impl<'a> core::ops::Deref for PhysicalDeviceAmigoProfilingFeaturesSECBuilder<'a> {
66918    type Target = PhysicalDeviceAmigoProfilingFeaturesSEC;
66919    #[inline]
66920    fn deref(&self) -> &Self::Target {
66921        &self.inner
66922    }
66923}
66924impl<'a> core::ops::DerefMut for PhysicalDeviceAmigoProfilingFeaturesSECBuilder<'a> {
66925    #[inline]
66926    fn deref_mut(&mut self) -> &mut Self::Target {
66927        &mut self.inner
66928    }
66929}
66930///Builder for [`AmigoProfilingSubmitInfoSEC`] with lifetime-tied pNext safety.
66931pub struct AmigoProfilingSubmitInfoSECBuilder<'a> {
66932    inner: AmigoProfilingSubmitInfoSEC,
66933    _marker: core::marker::PhantomData<&'a ()>,
66934}
66935impl AmigoProfilingSubmitInfoSEC {
66936    /// Start building this struct; `s_type` is already set to the correct variant.
66937    #[inline]
66938    pub fn builder<'a>() -> AmigoProfilingSubmitInfoSECBuilder<'a> {
66939        AmigoProfilingSubmitInfoSECBuilder {
66940            inner: AmigoProfilingSubmitInfoSEC {
66941                s_type: StructureType::from_raw(1000485001i32),
66942                ..Default::default()
66943            },
66944            _marker: core::marker::PhantomData,
66945        }
66946    }
66947}
66948impl<'a> AmigoProfilingSubmitInfoSECBuilder<'a> {
66949    #[inline]
66950    pub fn first_draw_timestamp(mut self, value: u64) -> Self {
66951        self.inner.first_draw_timestamp = value;
66952        self
66953    }
66954    #[inline]
66955    pub fn swap_buffer_timestamp(mut self, value: u64) -> Self {
66956        self.inner.swap_buffer_timestamp = value;
66957        self
66958    }
66959    ///Prepend a struct to the pNext chain. See [`AmigoProfilingSubmitInfoSEC`]'s **Extended By** section for valid types.
66960    #[inline]
66961    pub fn push_next<T: ExtendsAmigoProfilingSubmitInfoSEC>(
66962        mut self,
66963        next: &'a mut T,
66964    ) -> Self {
66965        unsafe {
66966            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
66967            (*next_ptr).p_next = self.inner.p_next as *mut _;
66968            self.inner.p_next = <*mut BaseOutStructure>::cast::<
66969                core::ffi::c_void,
66970            >(next_ptr) as *const _;
66971        }
66972        self
66973    }
66974}
66975impl<'a> core::ops::Deref for AmigoProfilingSubmitInfoSECBuilder<'a> {
66976    type Target = AmigoProfilingSubmitInfoSEC;
66977    #[inline]
66978    fn deref(&self) -> &Self::Target {
66979        &self.inner
66980    }
66981}
66982impl<'a> core::ops::DerefMut for AmigoProfilingSubmitInfoSECBuilder<'a> {
66983    #[inline]
66984    fn deref_mut(&mut self) -> &mut Self::Target {
66985        &mut self.inner
66986    }
66987}
66988///Builder for [`PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT`] with lifetime-tied pNext safety.
66989pub struct PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXTBuilder<'a> {
66990    inner: PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT,
66991    _marker: core::marker::PhantomData<&'a ()>,
66992}
66993impl PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
66994    /// Start building this struct; `s_type` is already set to the correct variant.
66995    #[inline]
66996    pub fn builder<'a>() -> PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXTBuilder<
66997        'a,
66998    > {
66999        PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXTBuilder {
67000            inner: PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
67001                s_type: StructureType::from_raw(1000339000i32),
67002                ..Default::default()
67003            },
67004            _marker: core::marker::PhantomData,
67005        }
67006    }
67007}
67008impl<'a> PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXTBuilder<'a> {
67009    #[inline]
67010    pub fn attachment_feedback_loop_layout(mut self, value: bool) -> Self {
67011        self.inner.attachment_feedback_loop_layout = value as u32;
67012        self
67013    }
67014    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT`]'s **Extended By** section for valid types.
67015    #[inline]
67016    pub fn push_next<T: ExtendsPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT>(
67017        mut self,
67018        next: &'a mut T,
67019    ) -> Self {
67020        unsafe {
67021            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
67022            (*next_ptr).p_next = self.inner.p_next as *mut _;
67023            self.inner.p_next = <*mut BaseOutStructure>::cast::<
67024                core::ffi::c_void,
67025            >(next_ptr);
67026        }
67027        self
67028    }
67029}
67030impl<'a> core::ops::Deref
67031for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXTBuilder<'a> {
67032    type Target = PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT;
67033    #[inline]
67034    fn deref(&self) -> &Self::Target {
67035        &self.inner
67036    }
67037}
67038impl<'a> core::ops::DerefMut
67039for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXTBuilder<'a> {
67040    #[inline]
67041    fn deref_mut(&mut self) -> &mut Self::Target {
67042        &mut self.inner
67043    }
67044}
67045///Builder for [`AttachmentFeedbackLoopInfoEXT`] with lifetime-tied pNext safety.
67046pub struct AttachmentFeedbackLoopInfoEXTBuilder<'a> {
67047    inner: AttachmentFeedbackLoopInfoEXT,
67048    _marker: core::marker::PhantomData<&'a ()>,
67049}
67050impl AttachmentFeedbackLoopInfoEXT {
67051    /// Start building this struct; `s_type` is already set to the correct variant.
67052    #[inline]
67053    pub fn builder<'a>() -> AttachmentFeedbackLoopInfoEXTBuilder<'a> {
67054        AttachmentFeedbackLoopInfoEXTBuilder {
67055            inner: AttachmentFeedbackLoopInfoEXT {
67056                s_type: StructureType::from_raw(1000527001i32),
67057                ..Default::default()
67058            },
67059            _marker: core::marker::PhantomData,
67060        }
67061    }
67062}
67063impl<'a> AttachmentFeedbackLoopInfoEXTBuilder<'a> {
67064    #[inline]
67065    pub fn feedback_loop_enable(mut self, value: bool) -> Self {
67066        self.inner.feedback_loop_enable = value as u32;
67067        self
67068    }
67069    ///Prepend a struct to the pNext chain. See [`AttachmentFeedbackLoopInfoEXT`]'s **Extended By** section for valid types.
67070    #[inline]
67071    pub fn push_next<T: ExtendsAttachmentFeedbackLoopInfoEXT>(
67072        mut self,
67073        next: &'a mut T,
67074    ) -> Self {
67075        unsafe {
67076            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
67077            (*next_ptr).p_next = self.inner.p_next as *mut _;
67078            self.inner.p_next = <*mut BaseOutStructure>::cast::<
67079                core::ffi::c_void,
67080            >(next_ptr) as *const _;
67081        }
67082        self
67083    }
67084}
67085impl<'a> core::ops::Deref for AttachmentFeedbackLoopInfoEXTBuilder<'a> {
67086    type Target = AttachmentFeedbackLoopInfoEXT;
67087    #[inline]
67088    fn deref(&self) -> &Self::Target {
67089        &self.inner
67090    }
67091}
67092impl<'a> core::ops::DerefMut for AttachmentFeedbackLoopInfoEXTBuilder<'a> {
67093    #[inline]
67094    fn deref_mut(&mut self) -> &mut Self::Target {
67095        &mut self.inner
67096    }
67097}
67098///Builder for [`PhysicalDeviceAddressBindingReportFeaturesEXT`] with lifetime-tied pNext safety.
67099pub struct PhysicalDeviceAddressBindingReportFeaturesEXTBuilder<'a> {
67100    inner: PhysicalDeviceAddressBindingReportFeaturesEXT,
67101    _marker: core::marker::PhantomData<&'a ()>,
67102}
67103impl PhysicalDeviceAddressBindingReportFeaturesEXT {
67104    /// Start building this struct; `s_type` is already set to the correct variant.
67105    #[inline]
67106    pub fn builder<'a>() -> PhysicalDeviceAddressBindingReportFeaturesEXTBuilder<'a> {
67107        PhysicalDeviceAddressBindingReportFeaturesEXTBuilder {
67108            inner: PhysicalDeviceAddressBindingReportFeaturesEXT {
67109                s_type: StructureType::from_raw(1000354000i32),
67110                ..Default::default()
67111            },
67112            _marker: core::marker::PhantomData,
67113        }
67114    }
67115}
67116impl<'a> PhysicalDeviceAddressBindingReportFeaturesEXTBuilder<'a> {
67117    #[inline]
67118    pub fn report_address_binding(mut self, value: bool) -> Self {
67119        self.inner.report_address_binding = value as u32;
67120        self
67121    }
67122    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceAddressBindingReportFeaturesEXT`]'s **Extended By** section for valid types.
67123    #[inline]
67124    pub fn push_next<T: ExtendsPhysicalDeviceAddressBindingReportFeaturesEXT>(
67125        mut self,
67126        next: &'a mut T,
67127    ) -> Self {
67128        unsafe {
67129            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
67130            (*next_ptr).p_next = self.inner.p_next as *mut _;
67131            self.inner.p_next = <*mut BaseOutStructure>::cast::<
67132                core::ffi::c_void,
67133            >(next_ptr);
67134        }
67135        self
67136    }
67137}
67138impl<'a> core::ops::Deref for PhysicalDeviceAddressBindingReportFeaturesEXTBuilder<'a> {
67139    type Target = PhysicalDeviceAddressBindingReportFeaturesEXT;
67140    #[inline]
67141    fn deref(&self) -> &Self::Target {
67142        &self.inner
67143    }
67144}
67145impl<'a> core::ops::DerefMut
67146for PhysicalDeviceAddressBindingReportFeaturesEXTBuilder<'a> {
67147    #[inline]
67148    fn deref_mut(&mut self) -> &mut Self::Target {
67149        &mut self.inner
67150    }
67151}
67152///Builder for [`RenderingAttachmentFlagsInfoKHR`] with lifetime-tied pNext safety.
67153pub struct RenderingAttachmentFlagsInfoKHRBuilder<'a> {
67154    inner: RenderingAttachmentFlagsInfoKHR,
67155    _marker: core::marker::PhantomData<&'a ()>,
67156}
67157impl RenderingAttachmentFlagsInfoKHR {
67158    /// Start building this struct; `s_type` is already set to the correct variant.
67159    #[inline]
67160    pub fn builder<'a>() -> RenderingAttachmentFlagsInfoKHRBuilder<'a> {
67161        RenderingAttachmentFlagsInfoKHRBuilder {
67162            inner: RenderingAttachmentFlagsInfoKHR {
67163                s_type: StructureType::from_raw(1000630002i32),
67164                ..Default::default()
67165            },
67166            _marker: core::marker::PhantomData,
67167        }
67168    }
67169}
67170impl<'a> RenderingAttachmentFlagsInfoKHRBuilder<'a> {
67171    #[inline]
67172    pub fn flags(mut self, value: RenderingAttachmentFlagsKHR) -> Self {
67173        self.inner.flags = value;
67174        self
67175    }
67176    ///Prepend a struct to the pNext chain. See [`RenderingAttachmentFlagsInfoKHR`]'s **Extended By** section for valid types.
67177    #[inline]
67178    pub fn push_next<T: ExtendsRenderingAttachmentFlagsInfoKHR>(
67179        mut self,
67180        next: &'a mut T,
67181    ) -> Self {
67182        unsafe {
67183            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
67184            (*next_ptr).p_next = self.inner.p_next as *mut _;
67185            self.inner.p_next = <*mut BaseOutStructure>::cast::<
67186                core::ffi::c_void,
67187            >(next_ptr) as *const _;
67188        }
67189        self
67190    }
67191}
67192impl<'a> core::ops::Deref for RenderingAttachmentFlagsInfoKHRBuilder<'a> {
67193    type Target = RenderingAttachmentFlagsInfoKHR;
67194    #[inline]
67195    fn deref(&self) -> &Self::Target {
67196        &self.inner
67197    }
67198}
67199impl<'a> core::ops::DerefMut for RenderingAttachmentFlagsInfoKHRBuilder<'a> {
67200    #[inline]
67201    fn deref_mut(&mut self) -> &mut Self::Target {
67202        &mut self.inner
67203    }
67204}
67205///Builder for [`ResolveImageModeInfoKHR`] with lifetime-tied pNext safety.
67206pub struct ResolveImageModeInfoKHRBuilder<'a> {
67207    inner: ResolveImageModeInfoKHR,
67208    _marker: core::marker::PhantomData<&'a ()>,
67209}
67210impl ResolveImageModeInfoKHR {
67211    /// Start building this struct; `s_type` is already set to the correct variant.
67212    #[inline]
67213    pub fn builder<'a>() -> ResolveImageModeInfoKHRBuilder<'a> {
67214        ResolveImageModeInfoKHRBuilder {
67215            inner: ResolveImageModeInfoKHR {
67216                s_type: StructureType::from_raw(1000630004i32),
67217                ..Default::default()
67218            },
67219            _marker: core::marker::PhantomData,
67220        }
67221    }
67222}
67223impl<'a> ResolveImageModeInfoKHRBuilder<'a> {
67224    #[inline]
67225    pub fn flags(mut self, value: ResolveImageFlagsKHR) -> Self {
67226        self.inner.flags = value;
67227        self
67228    }
67229    #[inline]
67230    pub fn resolve_mode(mut self, value: ResolveModeFlagBits) -> Self {
67231        self.inner.resolve_mode = value;
67232        self
67233    }
67234    #[inline]
67235    pub fn stencil_resolve_mode(mut self, value: ResolveModeFlagBits) -> Self {
67236        self.inner.stencil_resolve_mode = value;
67237        self
67238    }
67239    ///Prepend a struct to the pNext chain. See [`ResolveImageModeInfoKHR`]'s **Extended By** section for valid types.
67240    #[inline]
67241    pub fn push_next<T: ExtendsResolveImageModeInfoKHR>(
67242        mut self,
67243        next: &'a mut T,
67244    ) -> Self {
67245        unsafe {
67246            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
67247            (*next_ptr).p_next = self.inner.p_next as *mut _;
67248            self.inner.p_next = <*mut BaseOutStructure>::cast::<
67249                core::ffi::c_void,
67250            >(next_ptr) as *const _;
67251        }
67252        self
67253    }
67254}
67255impl<'a> core::ops::Deref for ResolveImageModeInfoKHRBuilder<'a> {
67256    type Target = ResolveImageModeInfoKHR;
67257    #[inline]
67258    fn deref(&self) -> &Self::Target {
67259        &self.inner
67260    }
67261}
67262impl<'a> core::ops::DerefMut for ResolveImageModeInfoKHRBuilder<'a> {
67263    #[inline]
67264    fn deref_mut(&mut self) -> &mut Self::Target {
67265        &mut self.inner
67266    }
67267}
67268///Builder for [`DeviceAddressBindingCallbackDataEXT`] with lifetime-tied pNext safety.
67269pub struct DeviceAddressBindingCallbackDataEXTBuilder<'a> {
67270    inner: DeviceAddressBindingCallbackDataEXT,
67271    _marker: core::marker::PhantomData<&'a ()>,
67272}
67273impl DeviceAddressBindingCallbackDataEXT {
67274    /// Start building this struct; `s_type` is already set to the correct variant.
67275    #[inline]
67276    pub fn builder<'a>() -> DeviceAddressBindingCallbackDataEXTBuilder<'a> {
67277        DeviceAddressBindingCallbackDataEXTBuilder {
67278            inner: DeviceAddressBindingCallbackDataEXT {
67279                s_type: StructureType::from_raw(1000354001i32),
67280                ..Default::default()
67281            },
67282            _marker: core::marker::PhantomData,
67283        }
67284    }
67285}
67286impl<'a> DeviceAddressBindingCallbackDataEXTBuilder<'a> {
67287    #[inline]
67288    pub fn flags(mut self, value: DeviceAddressBindingFlagsEXT) -> Self {
67289        self.inner.flags = value;
67290        self
67291    }
67292    #[inline]
67293    pub fn base_address(mut self, value: u64) -> Self {
67294        self.inner.base_address = value;
67295        self
67296    }
67297    #[inline]
67298    pub fn size(mut self, value: u64) -> Self {
67299        self.inner.size = value;
67300        self
67301    }
67302    #[inline]
67303    pub fn binding_type(mut self, value: DeviceAddressBindingTypeEXT) -> Self {
67304        self.inner.binding_type = value;
67305        self
67306    }
67307    ///Prepend a struct to the pNext chain. See [`DeviceAddressBindingCallbackDataEXT`]'s **Extended By** section for valid types.
67308    #[inline]
67309    pub fn push_next<T: ExtendsDeviceAddressBindingCallbackDataEXT>(
67310        mut self,
67311        next: &'a mut T,
67312    ) -> Self {
67313        unsafe {
67314            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
67315            (*next_ptr).p_next = self.inner.p_next as *mut _;
67316            self.inner.p_next = <*mut BaseOutStructure>::cast::<
67317                core::ffi::c_void,
67318            >(next_ptr);
67319        }
67320        self
67321    }
67322}
67323impl<'a> core::ops::Deref for DeviceAddressBindingCallbackDataEXTBuilder<'a> {
67324    type Target = DeviceAddressBindingCallbackDataEXT;
67325    #[inline]
67326    fn deref(&self) -> &Self::Target {
67327        &self.inner
67328    }
67329}
67330impl<'a> core::ops::DerefMut for DeviceAddressBindingCallbackDataEXTBuilder<'a> {
67331    #[inline]
67332    fn deref_mut(&mut self) -> &mut Self::Target {
67333        &mut self.inner
67334    }
67335}
67336///Builder for [`PhysicalDeviceOpticalFlowFeaturesNV`] with lifetime-tied pNext safety.
67337pub struct PhysicalDeviceOpticalFlowFeaturesNVBuilder<'a> {
67338    inner: PhysicalDeviceOpticalFlowFeaturesNV,
67339    _marker: core::marker::PhantomData<&'a ()>,
67340}
67341impl PhysicalDeviceOpticalFlowFeaturesNV {
67342    /// Start building this struct; `s_type` is already set to the correct variant.
67343    #[inline]
67344    pub fn builder<'a>() -> PhysicalDeviceOpticalFlowFeaturesNVBuilder<'a> {
67345        PhysicalDeviceOpticalFlowFeaturesNVBuilder {
67346            inner: PhysicalDeviceOpticalFlowFeaturesNV {
67347                s_type: StructureType::from_raw(1000464000i32),
67348                ..Default::default()
67349            },
67350            _marker: core::marker::PhantomData,
67351        }
67352    }
67353}
67354impl<'a> PhysicalDeviceOpticalFlowFeaturesNVBuilder<'a> {
67355    #[inline]
67356    pub fn optical_flow(mut self, value: bool) -> Self {
67357        self.inner.optical_flow = value as u32;
67358        self
67359    }
67360    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceOpticalFlowFeaturesNV`]'s **Extended By** section for valid types.
67361    #[inline]
67362    pub fn push_next<T: ExtendsPhysicalDeviceOpticalFlowFeaturesNV>(
67363        mut self,
67364        next: &'a mut T,
67365    ) -> Self {
67366        unsafe {
67367            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
67368            (*next_ptr).p_next = self.inner.p_next as *mut _;
67369            self.inner.p_next = <*mut BaseOutStructure>::cast::<
67370                core::ffi::c_void,
67371            >(next_ptr);
67372        }
67373        self
67374    }
67375}
67376impl<'a> core::ops::Deref for PhysicalDeviceOpticalFlowFeaturesNVBuilder<'a> {
67377    type Target = PhysicalDeviceOpticalFlowFeaturesNV;
67378    #[inline]
67379    fn deref(&self) -> &Self::Target {
67380        &self.inner
67381    }
67382}
67383impl<'a> core::ops::DerefMut for PhysicalDeviceOpticalFlowFeaturesNVBuilder<'a> {
67384    #[inline]
67385    fn deref_mut(&mut self) -> &mut Self::Target {
67386        &mut self.inner
67387    }
67388}
67389///Builder for [`PhysicalDeviceOpticalFlowPropertiesNV`] with lifetime-tied pNext safety.
67390pub struct PhysicalDeviceOpticalFlowPropertiesNVBuilder<'a> {
67391    inner: PhysicalDeviceOpticalFlowPropertiesNV,
67392    _marker: core::marker::PhantomData<&'a ()>,
67393}
67394impl PhysicalDeviceOpticalFlowPropertiesNV {
67395    /// Start building this struct; `s_type` is already set to the correct variant.
67396    #[inline]
67397    pub fn builder<'a>() -> PhysicalDeviceOpticalFlowPropertiesNVBuilder<'a> {
67398        PhysicalDeviceOpticalFlowPropertiesNVBuilder {
67399            inner: PhysicalDeviceOpticalFlowPropertiesNV {
67400                s_type: StructureType::from_raw(1000464001i32),
67401                ..Default::default()
67402            },
67403            _marker: core::marker::PhantomData,
67404        }
67405    }
67406}
67407impl<'a> PhysicalDeviceOpticalFlowPropertiesNVBuilder<'a> {
67408    #[inline]
67409    pub fn supported_output_grid_sizes(
67410        mut self,
67411        value: OpticalFlowGridSizeFlagsNV,
67412    ) -> Self {
67413        self.inner.supported_output_grid_sizes = value;
67414        self
67415    }
67416    #[inline]
67417    pub fn supported_hint_grid_sizes(
67418        mut self,
67419        value: OpticalFlowGridSizeFlagsNV,
67420    ) -> Self {
67421        self.inner.supported_hint_grid_sizes = value;
67422        self
67423    }
67424    #[inline]
67425    pub fn hint_supported(mut self, value: bool) -> Self {
67426        self.inner.hint_supported = value as u32;
67427        self
67428    }
67429    #[inline]
67430    pub fn cost_supported(mut self, value: bool) -> Self {
67431        self.inner.cost_supported = value as u32;
67432        self
67433    }
67434    #[inline]
67435    pub fn bidirectional_flow_supported(mut self, value: bool) -> Self {
67436        self.inner.bidirectional_flow_supported = value as u32;
67437        self
67438    }
67439    #[inline]
67440    pub fn global_flow_supported(mut self, value: bool) -> Self {
67441        self.inner.global_flow_supported = value as u32;
67442        self
67443    }
67444    #[inline]
67445    pub fn min_width(mut self, value: u32) -> Self {
67446        self.inner.min_width = value;
67447        self
67448    }
67449    #[inline]
67450    pub fn min_height(mut self, value: u32) -> Self {
67451        self.inner.min_height = value;
67452        self
67453    }
67454    #[inline]
67455    pub fn max_width(mut self, value: u32) -> Self {
67456        self.inner.max_width = value;
67457        self
67458    }
67459    #[inline]
67460    pub fn max_height(mut self, value: u32) -> Self {
67461        self.inner.max_height = value;
67462        self
67463    }
67464    #[inline]
67465    pub fn max_num_regions_of_interest(mut self, value: u32) -> Self {
67466        self.inner.max_num_regions_of_interest = value;
67467        self
67468    }
67469}
67470impl<'a> core::ops::Deref for PhysicalDeviceOpticalFlowPropertiesNVBuilder<'a> {
67471    type Target = PhysicalDeviceOpticalFlowPropertiesNV;
67472    #[inline]
67473    fn deref(&self) -> &Self::Target {
67474        &self.inner
67475    }
67476}
67477impl<'a> core::ops::DerefMut for PhysicalDeviceOpticalFlowPropertiesNVBuilder<'a> {
67478    #[inline]
67479    fn deref_mut(&mut self) -> &mut Self::Target {
67480        &mut self.inner
67481    }
67482}
67483///Builder for [`OpticalFlowImageFormatInfoNV`] with lifetime-tied pNext safety.
67484pub struct OpticalFlowImageFormatInfoNVBuilder<'a> {
67485    inner: OpticalFlowImageFormatInfoNV,
67486    _marker: core::marker::PhantomData<&'a ()>,
67487}
67488impl OpticalFlowImageFormatInfoNV {
67489    /// Start building this struct; `s_type` is already set to the correct variant.
67490    #[inline]
67491    pub fn builder<'a>() -> OpticalFlowImageFormatInfoNVBuilder<'a> {
67492        OpticalFlowImageFormatInfoNVBuilder {
67493            inner: OpticalFlowImageFormatInfoNV {
67494                s_type: StructureType::from_raw(1000464002i32),
67495                ..Default::default()
67496            },
67497            _marker: core::marker::PhantomData,
67498        }
67499    }
67500}
67501impl<'a> OpticalFlowImageFormatInfoNVBuilder<'a> {
67502    #[inline]
67503    pub fn usage(mut self, value: OpticalFlowUsageFlagsNV) -> Self {
67504        self.inner.usage = value;
67505        self
67506    }
67507    ///Prepend a struct to the pNext chain. See [`OpticalFlowImageFormatInfoNV`]'s **Extended By** section for valid types.
67508    #[inline]
67509    pub fn push_next<T: ExtendsOpticalFlowImageFormatInfoNV>(
67510        mut self,
67511        next: &'a mut T,
67512    ) -> Self {
67513        unsafe {
67514            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
67515            (*next_ptr).p_next = self.inner.p_next as *mut _;
67516            self.inner.p_next = <*mut BaseOutStructure>::cast::<
67517                core::ffi::c_void,
67518            >(next_ptr) as *const _;
67519        }
67520        self
67521    }
67522}
67523impl<'a> core::ops::Deref for OpticalFlowImageFormatInfoNVBuilder<'a> {
67524    type Target = OpticalFlowImageFormatInfoNV;
67525    #[inline]
67526    fn deref(&self) -> &Self::Target {
67527        &self.inner
67528    }
67529}
67530impl<'a> core::ops::DerefMut for OpticalFlowImageFormatInfoNVBuilder<'a> {
67531    #[inline]
67532    fn deref_mut(&mut self) -> &mut Self::Target {
67533        &mut self.inner
67534    }
67535}
67536///Builder for [`OpticalFlowImageFormatPropertiesNV`] with lifetime-tied pNext safety.
67537pub struct OpticalFlowImageFormatPropertiesNVBuilder<'a> {
67538    inner: OpticalFlowImageFormatPropertiesNV,
67539    _marker: core::marker::PhantomData<&'a ()>,
67540}
67541impl OpticalFlowImageFormatPropertiesNV {
67542    /// Start building this struct; `s_type` is already set to the correct variant.
67543    #[inline]
67544    pub fn builder<'a>() -> OpticalFlowImageFormatPropertiesNVBuilder<'a> {
67545        OpticalFlowImageFormatPropertiesNVBuilder {
67546            inner: OpticalFlowImageFormatPropertiesNV {
67547                s_type: StructureType::from_raw(1000464003i32),
67548                ..Default::default()
67549            },
67550            _marker: core::marker::PhantomData,
67551        }
67552    }
67553}
67554impl<'a> OpticalFlowImageFormatPropertiesNVBuilder<'a> {
67555    #[inline]
67556    pub fn format(mut self, value: Format) -> Self {
67557        self.inner.format = value;
67558        self
67559    }
67560}
67561impl<'a> core::ops::Deref for OpticalFlowImageFormatPropertiesNVBuilder<'a> {
67562    type Target = OpticalFlowImageFormatPropertiesNV;
67563    #[inline]
67564    fn deref(&self) -> &Self::Target {
67565        &self.inner
67566    }
67567}
67568impl<'a> core::ops::DerefMut for OpticalFlowImageFormatPropertiesNVBuilder<'a> {
67569    #[inline]
67570    fn deref_mut(&mut self) -> &mut Self::Target {
67571        &mut self.inner
67572    }
67573}
67574///Builder for [`OpticalFlowSessionCreateInfoNV`] with lifetime-tied pNext safety.
67575pub struct OpticalFlowSessionCreateInfoNVBuilder<'a> {
67576    inner: OpticalFlowSessionCreateInfoNV,
67577    _marker: core::marker::PhantomData<&'a ()>,
67578}
67579impl OpticalFlowSessionCreateInfoNV {
67580    /// Start building this struct; `s_type` is already set to the correct variant.
67581    #[inline]
67582    pub fn builder<'a>() -> OpticalFlowSessionCreateInfoNVBuilder<'a> {
67583        OpticalFlowSessionCreateInfoNVBuilder {
67584            inner: OpticalFlowSessionCreateInfoNV {
67585                s_type: StructureType::from_raw(1000464004i32),
67586                ..Default::default()
67587            },
67588            _marker: core::marker::PhantomData,
67589        }
67590    }
67591}
67592impl<'a> OpticalFlowSessionCreateInfoNVBuilder<'a> {
67593    #[inline]
67594    pub fn width(mut self, value: u32) -> Self {
67595        self.inner.width = value;
67596        self
67597    }
67598    #[inline]
67599    pub fn height(mut self, value: u32) -> Self {
67600        self.inner.height = value;
67601        self
67602    }
67603    #[inline]
67604    pub fn image_format(mut self, value: Format) -> Self {
67605        self.inner.image_format = value;
67606        self
67607    }
67608    #[inline]
67609    pub fn flow_vector_format(mut self, value: Format) -> Self {
67610        self.inner.flow_vector_format = value;
67611        self
67612    }
67613    #[inline]
67614    pub fn cost_format(mut self, value: Format) -> Self {
67615        self.inner.cost_format = value;
67616        self
67617    }
67618    #[inline]
67619    pub fn output_grid_size(mut self, value: OpticalFlowGridSizeFlagsNV) -> Self {
67620        self.inner.output_grid_size = value;
67621        self
67622    }
67623    #[inline]
67624    pub fn hint_grid_size(mut self, value: OpticalFlowGridSizeFlagsNV) -> Self {
67625        self.inner.hint_grid_size = value;
67626        self
67627    }
67628    #[inline]
67629    pub fn performance_level(mut self, value: OpticalFlowPerformanceLevelNV) -> Self {
67630        self.inner.performance_level = value;
67631        self
67632    }
67633    #[inline]
67634    pub fn flags(mut self, value: OpticalFlowSessionCreateFlagsNV) -> Self {
67635        self.inner.flags = value;
67636        self
67637    }
67638    ///Prepend a struct to the pNext chain. See [`OpticalFlowSessionCreateInfoNV`]'s **Extended By** section for valid types.
67639    #[inline]
67640    pub fn push_next<T: ExtendsOpticalFlowSessionCreateInfoNV>(
67641        mut self,
67642        next: &'a mut T,
67643    ) -> Self {
67644        unsafe {
67645            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
67646            (*next_ptr).p_next = self.inner.p_next as *mut _;
67647            self.inner.p_next = <*mut BaseOutStructure>::cast::<
67648                core::ffi::c_void,
67649            >(next_ptr);
67650        }
67651        self
67652    }
67653}
67654impl<'a> core::ops::Deref for OpticalFlowSessionCreateInfoNVBuilder<'a> {
67655    type Target = OpticalFlowSessionCreateInfoNV;
67656    #[inline]
67657    fn deref(&self) -> &Self::Target {
67658        &self.inner
67659    }
67660}
67661impl<'a> core::ops::DerefMut for OpticalFlowSessionCreateInfoNVBuilder<'a> {
67662    #[inline]
67663    fn deref_mut(&mut self) -> &mut Self::Target {
67664        &mut self.inner
67665    }
67666}
67667///Builder for [`OpticalFlowSessionCreatePrivateDataInfoNV`] with lifetime-tied pNext safety.
67668pub struct OpticalFlowSessionCreatePrivateDataInfoNVBuilder<'a> {
67669    inner: OpticalFlowSessionCreatePrivateDataInfoNV,
67670    _marker: core::marker::PhantomData<&'a ()>,
67671}
67672impl OpticalFlowSessionCreatePrivateDataInfoNV {
67673    /// Start building this struct; `s_type` is already set to the correct variant.
67674    #[inline]
67675    pub fn builder<'a>() -> OpticalFlowSessionCreatePrivateDataInfoNVBuilder<'a> {
67676        OpticalFlowSessionCreatePrivateDataInfoNVBuilder {
67677            inner: OpticalFlowSessionCreatePrivateDataInfoNV {
67678                s_type: StructureType::from_raw(1000464010i32),
67679                ..Default::default()
67680            },
67681            _marker: core::marker::PhantomData,
67682        }
67683    }
67684}
67685impl<'a> OpticalFlowSessionCreatePrivateDataInfoNVBuilder<'a> {
67686    #[inline]
67687    pub fn id(mut self, value: u32) -> Self {
67688        self.inner.id = value;
67689        self
67690    }
67691    #[inline]
67692    pub fn size(mut self, value: u32) -> Self {
67693        self.inner.size = value;
67694        self
67695    }
67696    #[inline]
67697    pub fn private_data(mut self, value: *const core::ffi::c_void) -> Self {
67698        self.inner.p_private_data = value;
67699        self
67700    }
67701    ///Prepend a struct to the pNext chain. See [`OpticalFlowSessionCreatePrivateDataInfoNV`]'s **Extended By** section for valid types.
67702    #[inline]
67703    pub fn push_next<T: ExtendsOpticalFlowSessionCreatePrivateDataInfoNV>(
67704        mut self,
67705        next: &'a mut T,
67706    ) -> Self {
67707        unsafe {
67708            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
67709            (*next_ptr).p_next = self.inner.p_next as *mut _;
67710            self.inner.p_next = <*mut BaseOutStructure>::cast::<
67711                core::ffi::c_void,
67712            >(next_ptr);
67713        }
67714        self
67715    }
67716}
67717impl<'a> core::ops::Deref for OpticalFlowSessionCreatePrivateDataInfoNVBuilder<'a> {
67718    type Target = OpticalFlowSessionCreatePrivateDataInfoNV;
67719    #[inline]
67720    fn deref(&self) -> &Self::Target {
67721        &self.inner
67722    }
67723}
67724impl<'a> core::ops::DerefMut for OpticalFlowSessionCreatePrivateDataInfoNVBuilder<'a> {
67725    #[inline]
67726    fn deref_mut(&mut self) -> &mut Self::Target {
67727        &mut self.inner
67728    }
67729}
67730///Builder for [`OpticalFlowExecuteInfoNV`] with lifetime-tied pNext safety.
67731pub struct OpticalFlowExecuteInfoNVBuilder<'a> {
67732    inner: OpticalFlowExecuteInfoNV,
67733    _marker: core::marker::PhantomData<&'a ()>,
67734}
67735impl OpticalFlowExecuteInfoNV {
67736    /// Start building this struct; `s_type` is already set to the correct variant.
67737    #[inline]
67738    pub fn builder<'a>() -> OpticalFlowExecuteInfoNVBuilder<'a> {
67739        OpticalFlowExecuteInfoNVBuilder {
67740            inner: OpticalFlowExecuteInfoNV {
67741                s_type: StructureType::from_raw(1000464005i32),
67742                ..Default::default()
67743            },
67744            _marker: core::marker::PhantomData,
67745        }
67746    }
67747}
67748impl<'a> OpticalFlowExecuteInfoNVBuilder<'a> {
67749    #[inline]
67750    pub fn flags(mut self, value: OpticalFlowExecuteFlagsNV) -> Self {
67751        self.inner.flags = value;
67752        self
67753    }
67754    #[inline]
67755    pub fn regions(mut self, slice: &'a [Rect2D]) -> Self {
67756        self.inner.region_count = slice.len() as u32;
67757        self.inner.p_regions = slice.as_ptr();
67758        self
67759    }
67760    ///Prepend a struct to the pNext chain. See [`OpticalFlowExecuteInfoNV`]'s **Extended By** section for valid types.
67761    #[inline]
67762    pub fn push_next<T: ExtendsOpticalFlowExecuteInfoNV>(
67763        mut self,
67764        next: &'a mut T,
67765    ) -> Self {
67766        unsafe {
67767            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
67768            (*next_ptr).p_next = self.inner.p_next as *mut _;
67769            self.inner.p_next = <*mut BaseOutStructure>::cast::<
67770                core::ffi::c_void,
67771            >(next_ptr);
67772        }
67773        self
67774    }
67775}
67776impl<'a> core::ops::Deref for OpticalFlowExecuteInfoNVBuilder<'a> {
67777    type Target = OpticalFlowExecuteInfoNV;
67778    #[inline]
67779    fn deref(&self) -> &Self::Target {
67780        &self.inner
67781    }
67782}
67783impl<'a> core::ops::DerefMut for OpticalFlowExecuteInfoNVBuilder<'a> {
67784    #[inline]
67785    fn deref_mut(&mut self) -> &mut Self::Target {
67786        &mut self.inner
67787    }
67788}
67789///Builder for [`PhysicalDeviceFaultFeaturesEXT`] with lifetime-tied pNext safety.
67790pub struct PhysicalDeviceFaultFeaturesEXTBuilder<'a> {
67791    inner: PhysicalDeviceFaultFeaturesEXT,
67792    _marker: core::marker::PhantomData<&'a ()>,
67793}
67794impl PhysicalDeviceFaultFeaturesEXT {
67795    /// Start building this struct; `s_type` is already set to the correct variant.
67796    #[inline]
67797    pub fn builder<'a>() -> PhysicalDeviceFaultFeaturesEXTBuilder<'a> {
67798        PhysicalDeviceFaultFeaturesEXTBuilder {
67799            inner: PhysicalDeviceFaultFeaturesEXT {
67800                s_type: StructureType::from_raw(1000341000i32),
67801                ..Default::default()
67802            },
67803            _marker: core::marker::PhantomData,
67804        }
67805    }
67806}
67807impl<'a> PhysicalDeviceFaultFeaturesEXTBuilder<'a> {
67808    #[inline]
67809    pub fn device_fault(mut self, value: bool) -> Self {
67810        self.inner.device_fault = value as u32;
67811        self
67812    }
67813    #[inline]
67814    pub fn device_fault_vendor_binary(mut self, value: bool) -> Self {
67815        self.inner.device_fault_vendor_binary = value as u32;
67816        self
67817    }
67818    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceFaultFeaturesEXT`]'s **Extended By** section for valid types.
67819    #[inline]
67820    pub fn push_next<T: ExtendsPhysicalDeviceFaultFeaturesEXT>(
67821        mut self,
67822        next: &'a mut T,
67823    ) -> Self {
67824        unsafe {
67825            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
67826            (*next_ptr).p_next = self.inner.p_next as *mut _;
67827            self.inner.p_next = <*mut BaseOutStructure>::cast::<
67828                core::ffi::c_void,
67829            >(next_ptr);
67830        }
67831        self
67832    }
67833}
67834impl<'a> core::ops::Deref for PhysicalDeviceFaultFeaturesEXTBuilder<'a> {
67835    type Target = PhysicalDeviceFaultFeaturesEXT;
67836    #[inline]
67837    fn deref(&self) -> &Self::Target {
67838        &self.inner
67839    }
67840}
67841impl<'a> core::ops::DerefMut for PhysicalDeviceFaultFeaturesEXTBuilder<'a> {
67842    #[inline]
67843    fn deref_mut(&mut self) -> &mut Self::Target {
67844        &mut self.inner
67845    }
67846}
67847///Builder for [`DeviceFaultAddressInfoKHR`].
67848pub struct DeviceFaultAddressInfoKHRBuilder {
67849    inner: DeviceFaultAddressInfoKHR,
67850}
67851impl DeviceFaultAddressInfoKHR {
67852    /// Start building this struct.
67853    #[inline]
67854    pub fn builder() -> DeviceFaultAddressInfoKHRBuilder {
67855        DeviceFaultAddressInfoKHRBuilder {
67856            inner: DeviceFaultAddressInfoKHR {
67857                ..Default::default()
67858            },
67859        }
67860    }
67861}
67862impl DeviceFaultAddressInfoKHRBuilder {
67863    #[inline]
67864    pub fn address_type(mut self, value: DeviceFaultAddressTypeKHR) -> Self {
67865        self.inner.address_type = value;
67866        self
67867    }
67868    #[inline]
67869    pub fn reported_address(mut self, value: u64) -> Self {
67870        self.inner.reported_address = value;
67871        self
67872    }
67873    #[inline]
67874    pub fn address_precision(mut self, value: u64) -> Self {
67875        self.inner.address_precision = value;
67876        self
67877    }
67878}
67879impl core::ops::Deref for DeviceFaultAddressInfoKHRBuilder {
67880    type Target = DeviceFaultAddressInfoKHR;
67881    #[inline]
67882    fn deref(&self) -> &Self::Target {
67883        &self.inner
67884    }
67885}
67886impl core::ops::DerefMut for DeviceFaultAddressInfoKHRBuilder {
67887    #[inline]
67888    fn deref_mut(&mut self) -> &mut Self::Target {
67889        &mut self.inner
67890    }
67891}
67892///Builder for [`DeviceFaultVendorInfoKHR`].
67893pub struct DeviceFaultVendorInfoKHRBuilder {
67894    inner: DeviceFaultVendorInfoKHR,
67895}
67896impl DeviceFaultVendorInfoKHR {
67897    /// Start building this struct.
67898    #[inline]
67899    pub fn builder() -> DeviceFaultVendorInfoKHRBuilder {
67900        DeviceFaultVendorInfoKHRBuilder {
67901            inner: DeviceFaultVendorInfoKHR {
67902                ..Default::default()
67903            },
67904        }
67905    }
67906}
67907impl DeviceFaultVendorInfoKHRBuilder {
67908    #[inline]
67909    pub fn description(
67910        mut self,
67911        value: crate::StringArray<{ MAX_DESCRIPTION_SIZE as usize }>,
67912    ) -> Self {
67913        self.inner.description = value;
67914        self
67915    }
67916    #[inline]
67917    pub fn vendor_fault_code(mut self, value: u64) -> Self {
67918        self.inner.vendor_fault_code = value;
67919        self
67920    }
67921    #[inline]
67922    pub fn vendor_fault_data(mut self, value: u64) -> Self {
67923        self.inner.vendor_fault_data = value;
67924        self
67925    }
67926}
67927impl core::ops::Deref for DeviceFaultVendorInfoKHRBuilder {
67928    type Target = DeviceFaultVendorInfoKHR;
67929    #[inline]
67930    fn deref(&self) -> &Self::Target {
67931        &self.inner
67932    }
67933}
67934impl core::ops::DerefMut for DeviceFaultVendorInfoKHRBuilder {
67935    #[inline]
67936    fn deref_mut(&mut self) -> &mut Self::Target {
67937        &mut self.inner
67938    }
67939}
67940///Builder for [`DeviceFaultInfoKHR`] with lifetime-tied pNext safety.
67941pub struct DeviceFaultInfoKHRBuilder<'a> {
67942    inner: DeviceFaultInfoKHR,
67943    _marker: core::marker::PhantomData<&'a ()>,
67944}
67945impl DeviceFaultInfoKHR {
67946    /// Start building this struct; `s_type` is already set to the correct variant.
67947    #[inline]
67948    pub fn builder<'a>() -> DeviceFaultInfoKHRBuilder<'a> {
67949        DeviceFaultInfoKHRBuilder {
67950            inner: DeviceFaultInfoKHR {
67951                s_type: StructureType::from_raw(1000573002i32),
67952                ..Default::default()
67953            },
67954            _marker: core::marker::PhantomData,
67955        }
67956    }
67957}
67958impl<'a> DeviceFaultInfoKHRBuilder<'a> {
67959    #[inline]
67960    pub fn flags(mut self, value: DeviceFaultFlagsKHR) -> Self {
67961        self.inner.flags = value;
67962        self
67963    }
67964    #[inline]
67965    pub fn group_id(mut self, value: u64) -> Self {
67966        self.inner.group_id = value;
67967        self
67968    }
67969    #[inline]
67970    pub fn description(
67971        mut self,
67972        value: crate::StringArray<{ MAX_DESCRIPTION_SIZE as usize }>,
67973    ) -> Self {
67974        self.inner.description = value;
67975        self
67976    }
67977    #[inline]
67978    pub fn fault_address_info(mut self, value: DeviceFaultAddressInfoKHR) -> Self {
67979        self.inner.fault_address_info = value;
67980        self
67981    }
67982    #[inline]
67983    pub fn instruction_address_info(mut self, value: DeviceFaultAddressInfoKHR) -> Self {
67984        self.inner.instruction_address_info = value;
67985        self
67986    }
67987    #[inline]
67988    pub fn vendor_info(mut self, value: DeviceFaultVendorInfoKHR) -> Self {
67989        self.inner.vendor_info = value;
67990        self
67991    }
67992}
67993impl<'a> core::ops::Deref for DeviceFaultInfoKHRBuilder<'a> {
67994    type Target = DeviceFaultInfoKHR;
67995    #[inline]
67996    fn deref(&self) -> &Self::Target {
67997        &self.inner
67998    }
67999}
68000impl<'a> core::ops::DerefMut for DeviceFaultInfoKHRBuilder<'a> {
68001    #[inline]
68002    fn deref_mut(&mut self) -> &mut Self::Target {
68003        &mut self.inner
68004    }
68005}
68006///Builder for [`DeviceFaultDebugInfoKHR`] with lifetime-tied pNext safety.
68007pub struct DeviceFaultDebugInfoKHRBuilder<'a> {
68008    inner: DeviceFaultDebugInfoKHR,
68009    _marker: core::marker::PhantomData<&'a ()>,
68010}
68011impl DeviceFaultDebugInfoKHR {
68012    /// Start building this struct; `s_type` is already set to the correct variant.
68013    #[inline]
68014    pub fn builder<'a>() -> DeviceFaultDebugInfoKHRBuilder<'a> {
68015        DeviceFaultDebugInfoKHRBuilder {
68016            inner: DeviceFaultDebugInfoKHR {
68017                s_type: StructureType::from_raw(1000573003i32),
68018                ..Default::default()
68019            },
68020            _marker: core::marker::PhantomData,
68021        }
68022    }
68023}
68024impl<'a> DeviceFaultDebugInfoKHRBuilder<'a> {
68025    #[inline]
68026    pub fn vendor_binary_size(mut self, value: u32) -> Self {
68027        self.inner.vendor_binary_size = value;
68028        self
68029    }
68030    #[inline]
68031    pub fn vendor_binary_data(mut self, slice: &'a mut [core::ffi::c_void]) -> Self {
68032        self.inner.vendor_binary_size = slice.len() as u32;
68033        self.inner.p_vendor_binary_data = slice.as_mut_ptr();
68034        self
68035    }
68036}
68037impl<'a> core::ops::Deref for DeviceFaultDebugInfoKHRBuilder<'a> {
68038    type Target = DeviceFaultDebugInfoKHR;
68039    #[inline]
68040    fn deref(&self) -> &Self::Target {
68041        &self.inner
68042    }
68043}
68044impl<'a> core::ops::DerefMut for DeviceFaultDebugInfoKHRBuilder<'a> {
68045    #[inline]
68046    fn deref_mut(&mut self) -> &mut Self::Target {
68047        &mut self.inner
68048    }
68049}
68050///Builder for [`DeviceFaultCountsEXT`] with lifetime-tied pNext safety.
68051pub struct DeviceFaultCountsEXTBuilder<'a> {
68052    inner: DeviceFaultCountsEXT,
68053    _marker: core::marker::PhantomData<&'a ()>,
68054}
68055impl DeviceFaultCountsEXT {
68056    /// Start building this struct; `s_type` is already set to the correct variant.
68057    #[inline]
68058    pub fn builder<'a>() -> DeviceFaultCountsEXTBuilder<'a> {
68059        DeviceFaultCountsEXTBuilder {
68060            inner: DeviceFaultCountsEXT {
68061                s_type: StructureType::from_raw(1000341001i32),
68062                ..Default::default()
68063            },
68064            _marker: core::marker::PhantomData,
68065        }
68066    }
68067}
68068impl<'a> DeviceFaultCountsEXTBuilder<'a> {
68069    #[inline]
68070    pub fn address_info_count(mut self, value: u32) -> Self {
68071        self.inner.address_info_count = value;
68072        self
68073    }
68074    #[inline]
68075    pub fn vendor_info_count(mut self, value: u32) -> Self {
68076        self.inner.vendor_info_count = value;
68077        self
68078    }
68079    #[inline]
68080    pub fn vendor_binary_size(mut self, value: u64) -> Self {
68081        self.inner.vendor_binary_size = value;
68082        self
68083    }
68084    ///Prepend a struct to the pNext chain. See [`DeviceFaultCountsEXT`]'s **Extended By** section for valid types.
68085    #[inline]
68086    pub fn push_next<T: ExtendsDeviceFaultCountsEXT>(mut self, next: &'a mut T) -> Self {
68087        unsafe {
68088            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
68089            (*next_ptr).p_next = self.inner.p_next as *mut _;
68090            self.inner.p_next = <*mut BaseOutStructure>::cast::<
68091                core::ffi::c_void,
68092            >(next_ptr);
68093        }
68094        self
68095    }
68096}
68097impl<'a> core::ops::Deref for DeviceFaultCountsEXTBuilder<'a> {
68098    type Target = DeviceFaultCountsEXT;
68099    #[inline]
68100    fn deref(&self) -> &Self::Target {
68101        &self.inner
68102    }
68103}
68104impl<'a> core::ops::DerefMut for DeviceFaultCountsEXTBuilder<'a> {
68105    #[inline]
68106    fn deref_mut(&mut self) -> &mut Self::Target {
68107        &mut self.inner
68108    }
68109}
68110///Builder for [`DeviceFaultInfoEXT`] with lifetime-tied pNext safety.
68111pub struct DeviceFaultInfoEXTBuilder<'a> {
68112    inner: DeviceFaultInfoEXT,
68113    _marker: core::marker::PhantomData<&'a ()>,
68114}
68115impl DeviceFaultInfoEXT {
68116    /// Start building this struct; `s_type` is already set to the correct variant.
68117    #[inline]
68118    pub fn builder<'a>() -> DeviceFaultInfoEXTBuilder<'a> {
68119        DeviceFaultInfoEXTBuilder {
68120            inner: DeviceFaultInfoEXT {
68121                s_type: StructureType::from_raw(1000341002i32),
68122                ..Default::default()
68123            },
68124            _marker: core::marker::PhantomData,
68125        }
68126    }
68127}
68128impl<'a> DeviceFaultInfoEXTBuilder<'a> {
68129    #[inline]
68130    pub fn description(
68131        mut self,
68132        value: crate::StringArray<{ MAX_DESCRIPTION_SIZE as usize }>,
68133    ) -> Self {
68134        self.inner.description = value;
68135        self
68136    }
68137    #[inline]
68138    pub fn address_infos(mut self, value: *mut DeviceFaultAddressInfoKHR) -> Self {
68139        self.inner.p_address_infos = value;
68140        self
68141    }
68142    #[inline]
68143    pub fn vendor_infos(mut self, value: *mut DeviceFaultVendorInfoKHR) -> Self {
68144        self.inner.p_vendor_infos = value;
68145        self
68146    }
68147    #[inline]
68148    pub fn vendor_binary_data(mut self, value: *mut core::ffi::c_void) -> Self {
68149        self.inner.p_vendor_binary_data = value;
68150        self
68151    }
68152}
68153impl<'a> core::ops::Deref for DeviceFaultInfoEXTBuilder<'a> {
68154    type Target = DeviceFaultInfoEXT;
68155    #[inline]
68156    fn deref(&self) -> &Self::Target {
68157        &self.inner
68158    }
68159}
68160impl<'a> core::ops::DerefMut for DeviceFaultInfoEXTBuilder<'a> {
68161    #[inline]
68162    fn deref_mut(&mut self) -> &mut Self::Target {
68163        &mut self.inner
68164    }
68165}
68166///Builder for [`DeviceFaultVendorBinaryHeaderVersionOneKHR`].
68167pub struct DeviceFaultVendorBinaryHeaderVersionOneKHRBuilder {
68168    inner: DeviceFaultVendorBinaryHeaderVersionOneKHR,
68169}
68170impl DeviceFaultVendorBinaryHeaderVersionOneKHR {
68171    /// Start building this struct.
68172    #[inline]
68173    pub fn builder() -> DeviceFaultVendorBinaryHeaderVersionOneKHRBuilder {
68174        DeviceFaultVendorBinaryHeaderVersionOneKHRBuilder {
68175            inner: DeviceFaultVendorBinaryHeaderVersionOneKHR {
68176                ..Default::default()
68177            },
68178        }
68179    }
68180}
68181impl DeviceFaultVendorBinaryHeaderVersionOneKHRBuilder {
68182    #[inline]
68183    pub fn header_size(mut self, value: u32) -> Self {
68184        self.inner.header_size = value;
68185        self
68186    }
68187    #[inline]
68188    pub fn header_version(
68189        mut self,
68190        value: DeviceFaultVendorBinaryHeaderVersionKHR,
68191    ) -> Self {
68192        self.inner.header_version = value;
68193        self
68194    }
68195    #[inline]
68196    pub fn vendor_id(mut self, value: u32) -> Self {
68197        self.inner.vendor_id = value;
68198        self
68199    }
68200    #[inline]
68201    pub fn device_id(mut self, value: u32) -> Self {
68202        self.inner.device_id = value;
68203        self
68204    }
68205    #[inline]
68206    pub fn driver_version(mut self, value: u32) -> Self {
68207        self.inner.driver_version = value;
68208        self
68209    }
68210    #[inline]
68211    pub fn pipeline_cache_uuid(mut self, value: [u8; UUID_SIZE as usize]) -> Self {
68212        self.inner.pipeline_cache_uuid = value;
68213        self
68214    }
68215    #[inline]
68216    pub fn application_name_offset(mut self, value: u32) -> Self {
68217        self.inner.application_name_offset = value;
68218        self
68219    }
68220    #[inline]
68221    pub fn application_version(mut self, value: u32) -> Self {
68222        self.inner.application_version = value;
68223        self
68224    }
68225    #[inline]
68226    pub fn engine_name_offset(mut self, value: u32) -> Self {
68227        self.inner.engine_name_offset = value;
68228        self
68229    }
68230    #[inline]
68231    pub fn engine_version(mut self, value: u32) -> Self {
68232        self.inner.engine_version = value;
68233        self
68234    }
68235    #[inline]
68236    pub fn api_version(mut self, value: u32) -> Self {
68237        self.inner.api_version = value;
68238        self
68239    }
68240}
68241impl core::ops::Deref for DeviceFaultVendorBinaryHeaderVersionOneKHRBuilder {
68242    type Target = DeviceFaultVendorBinaryHeaderVersionOneKHR;
68243    #[inline]
68244    fn deref(&self) -> &Self::Target {
68245        &self.inner
68246    }
68247}
68248impl core::ops::DerefMut for DeviceFaultVendorBinaryHeaderVersionOneKHRBuilder {
68249    #[inline]
68250    fn deref_mut(&mut self) -> &mut Self::Target {
68251        &mut self.inner
68252    }
68253}
68254///Builder for [`PhysicalDeviceFaultFeaturesKHR`] with lifetime-tied pNext safety.
68255pub struct PhysicalDeviceFaultFeaturesKHRBuilder<'a> {
68256    inner: PhysicalDeviceFaultFeaturesKHR,
68257    _marker: core::marker::PhantomData<&'a ()>,
68258}
68259impl PhysicalDeviceFaultFeaturesKHR {
68260    /// Start building this struct; `s_type` is already set to the correct variant.
68261    #[inline]
68262    pub fn builder<'a>() -> PhysicalDeviceFaultFeaturesKHRBuilder<'a> {
68263        PhysicalDeviceFaultFeaturesKHRBuilder {
68264            inner: PhysicalDeviceFaultFeaturesKHR {
68265                s_type: StructureType::from_raw(1000573000i32),
68266                ..Default::default()
68267            },
68268            _marker: core::marker::PhantomData,
68269        }
68270    }
68271}
68272impl<'a> PhysicalDeviceFaultFeaturesKHRBuilder<'a> {
68273    #[inline]
68274    pub fn device_fault(mut self, value: bool) -> Self {
68275        self.inner.device_fault = value as u32;
68276        self
68277    }
68278    #[inline]
68279    pub fn device_fault_vendor_binary(mut self, value: bool) -> Self {
68280        self.inner.device_fault_vendor_binary = value as u32;
68281        self
68282    }
68283    #[inline]
68284    pub fn device_fault_report_masked(mut self, value: bool) -> Self {
68285        self.inner.device_fault_report_masked = value as u32;
68286        self
68287    }
68288    #[inline]
68289    pub fn device_fault_device_lost_on_masked(mut self, value: bool) -> Self {
68290        self.inner.device_fault_device_lost_on_masked = value as u32;
68291        self
68292    }
68293    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceFaultFeaturesKHR`]'s **Extended By** section for valid types.
68294    #[inline]
68295    pub fn push_next<T: ExtendsPhysicalDeviceFaultFeaturesKHR>(
68296        mut self,
68297        next: &'a mut T,
68298    ) -> Self {
68299        unsafe {
68300            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
68301            (*next_ptr).p_next = self.inner.p_next as *mut _;
68302            self.inner.p_next = <*mut BaseOutStructure>::cast::<
68303                core::ffi::c_void,
68304            >(next_ptr);
68305        }
68306        self
68307    }
68308}
68309impl<'a> core::ops::Deref for PhysicalDeviceFaultFeaturesKHRBuilder<'a> {
68310    type Target = PhysicalDeviceFaultFeaturesKHR;
68311    #[inline]
68312    fn deref(&self) -> &Self::Target {
68313        &self.inner
68314    }
68315}
68316impl<'a> core::ops::DerefMut for PhysicalDeviceFaultFeaturesKHRBuilder<'a> {
68317    #[inline]
68318    fn deref_mut(&mut self) -> &mut Self::Target {
68319        &mut self.inner
68320    }
68321}
68322///Builder for [`PhysicalDeviceFaultPropertiesKHR`] with lifetime-tied pNext safety.
68323pub struct PhysicalDeviceFaultPropertiesKHRBuilder<'a> {
68324    inner: PhysicalDeviceFaultPropertiesKHR,
68325    _marker: core::marker::PhantomData<&'a ()>,
68326}
68327impl PhysicalDeviceFaultPropertiesKHR {
68328    /// Start building this struct; `s_type` is already set to the correct variant.
68329    #[inline]
68330    pub fn builder<'a>() -> PhysicalDeviceFaultPropertiesKHRBuilder<'a> {
68331        PhysicalDeviceFaultPropertiesKHRBuilder {
68332            inner: PhysicalDeviceFaultPropertiesKHR {
68333                s_type: StructureType::from_raw(1000573001i32),
68334                ..Default::default()
68335            },
68336            _marker: core::marker::PhantomData,
68337        }
68338    }
68339}
68340impl<'a> PhysicalDeviceFaultPropertiesKHRBuilder<'a> {
68341    #[inline]
68342    pub fn max_device_fault_count(mut self, value: u32) -> Self {
68343        self.inner.max_device_fault_count = value;
68344        self
68345    }
68346}
68347impl<'a> core::ops::Deref for PhysicalDeviceFaultPropertiesKHRBuilder<'a> {
68348    type Target = PhysicalDeviceFaultPropertiesKHR;
68349    #[inline]
68350    fn deref(&self) -> &Self::Target {
68351        &self.inner
68352    }
68353}
68354impl<'a> core::ops::DerefMut for PhysicalDeviceFaultPropertiesKHRBuilder<'a> {
68355    #[inline]
68356    fn deref_mut(&mut self) -> &mut Self::Target {
68357        &mut self.inner
68358    }
68359}
68360///Builder for [`PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT`] with lifetime-tied pNext safety.
68361pub struct PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXTBuilder<'a> {
68362    inner: PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT,
68363    _marker: core::marker::PhantomData<&'a ()>,
68364}
68365impl PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
68366    /// Start building this struct; `s_type` is already set to the correct variant.
68367    #[inline]
68368    pub fn builder<'a>() -> PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXTBuilder<
68369        'a,
68370    > {
68371        PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXTBuilder {
68372            inner: PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
68373                s_type: StructureType::from_raw(1000498000i32),
68374                ..Default::default()
68375            },
68376            _marker: core::marker::PhantomData,
68377        }
68378    }
68379}
68380impl<'a> PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXTBuilder<'a> {
68381    #[inline]
68382    pub fn pipeline_library_group_handles(mut self, value: bool) -> Self {
68383        self.inner.pipeline_library_group_handles = value as u32;
68384        self
68385    }
68386    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT`]'s **Extended By** section for valid types.
68387    #[inline]
68388    pub fn push_next<T: ExtendsPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT>(
68389        mut self,
68390        next: &'a mut T,
68391    ) -> Self {
68392        unsafe {
68393            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
68394            (*next_ptr).p_next = self.inner.p_next as *mut _;
68395            self.inner.p_next = <*mut BaseOutStructure>::cast::<
68396                core::ffi::c_void,
68397            >(next_ptr);
68398        }
68399        self
68400    }
68401}
68402impl<'a> core::ops::Deref
68403for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXTBuilder<'a> {
68404    type Target = PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT;
68405    #[inline]
68406    fn deref(&self) -> &Self::Target {
68407        &self.inner
68408    }
68409}
68410impl<'a> core::ops::DerefMut
68411for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXTBuilder<'a> {
68412    #[inline]
68413    fn deref_mut(&mut self) -> &mut Self::Target {
68414        &mut self.inner
68415    }
68416}
68417///Builder for [`DepthBiasInfoEXT`] with lifetime-tied pNext safety.
68418pub struct DepthBiasInfoEXTBuilder<'a> {
68419    inner: DepthBiasInfoEXT,
68420    _marker: core::marker::PhantomData<&'a ()>,
68421}
68422impl DepthBiasInfoEXT {
68423    /// Start building this struct; `s_type` is already set to the correct variant.
68424    #[inline]
68425    pub fn builder<'a>() -> DepthBiasInfoEXTBuilder<'a> {
68426        DepthBiasInfoEXTBuilder {
68427            inner: DepthBiasInfoEXT {
68428                s_type: StructureType::from_raw(1000283001i32),
68429                ..Default::default()
68430            },
68431            _marker: core::marker::PhantomData,
68432        }
68433    }
68434}
68435impl<'a> DepthBiasInfoEXTBuilder<'a> {
68436    #[inline]
68437    pub fn depth_bias_constant_factor(mut self, value: f32) -> Self {
68438        self.inner.depth_bias_constant_factor = value;
68439        self
68440    }
68441    #[inline]
68442    pub fn depth_bias_clamp(mut self, value: f32) -> Self {
68443        self.inner.depth_bias_clamp = value;
68444        self
68445    }
68446    #[inline]
68447    pub fn depth_bias_slope_factor(mut self, value: f32) -> Self {
68448        self.inner.depth_bias_slope_factor = value;
68449        self
68450    }
68451    ///Prepend a struct to the pNext chain. See [`DepthBiasInfoEXT`]'s **Extended By** section for valid types.
68452    #[inline]
68453    pub fn push_next<T: ExtendsDepthBiasInfoEXT>(mut self, next: &'a mut T) -> Self {
68454        unsafe {
68455            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
68456            (*next_ptr).p_next = self.inner.p_next as *mut _;
68457            self.inner.p_next = <*mut BaseOutStructure>::cast::<
68458                core::ffi::c_void,
68459            >(next_ptr) as *const _;
68460        }
68461        self
68462    }
68463}
68464impl<'a> core::ops::Deref for DepthBiasInfoEXTBuilder<'a> {
68465    type Target = DepthBiasInfoEXT;
68466    #[inline]
68467    fn deref(&self) -> &Self::Target {
68468        &self.inner
68469    }
68470}
68471impl<'a> core::ops::DerefMut for DepthBiasInfoEXTBuilder<'a> {
68472    #[inline]
68473    fn deref_mut(&mut self) -> &mut Self::Target {
68474        &mut self.inner
68475    }
68476}
68477///Builder for [`DepthBiasRepresentationInfoEXT`] with lifetime-tied pNext safety.
68478pub struct DepthBiasRepresentationInfoEXTBuilder<'a> {
68479    inner: DepthBiasRepresentationInfoEXT,
68480    _marker: core::marker::PhantomData<&'a ()>,
68481}
68482impl DepthBiasRepresentationInfoEXT {
68483    /// Start building this struct; `s_type` is already set to the correct variant.
68484    #[inline]
68485    pub fn builder<'a>() -> DepthBiasRepresentationInfoEXTBuilder<'a> {
68486        DepthBiasRepresentationInfoEXTBuilder {
68487            inner: DepthBiasRepresentationInfoEXT {
68488                s_type: StructureType::from_raw(1000283002i32),
68489                ..Default::default()
68490            },
68491            _marker: core::marker::PhantomData,
68492        }
68493    }
68494}
68495impl<'a> DepthBiasRepresentationInfoEXTBuilder<'a> {
68496    #[inline]
68497    pub fn depth_bias_representation(
68498        mut self,
68499        value: DepthBiasRepresentationEXT,
68500    ) -> Self {
68501        self.inner.depth_bias_representation = value;
68502        self
68503    }
68504    #[inline]
68505    pub fn depth_bias_exact(mut self, value: bool) -> Self {
68506        self.inner.depth_bias_exact = value as u32;
68507        self
68508    }
68509    ///Prepend a struct to the pNext chain. See [`DepthBiasRepresentationInfoEXT`]'s **Extended By** section for valid types.
68510    #[inline]
68511    pub fn push_next<T: ExtendsDepthBiasRepresentationInfoEXT>(
68512        mut self,
68513        next: &'a mut T,
68514    ) -> Self {
68515        unsafe {
68516            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
68517            (*next_ptr).p_next = self.inner.p_next as *mut _;
68518            self.inner.p_next = <*mut BaseOutStructure>::cast::<
68519                core::ffi::c_void,
68520            >(next_ptr) as *const _;
68521        }
68522        self
68523    }
68524}
68525impl<'a> core::ops::Deref for DepthBiasRepresentationInfoEXTBuilder<'a> {
68526    type Target = DepthBiasRepresentationInfoEXT;
68527    #[inline]
68528    fn deref(&self) -> &Self::Target {
68529        &self.inner
68530    }
68531}
68532impl<'a> core::ops::DerefMut for DepthBiasRepresentationInfoEXTBuilder<'a> {
68533    #[inline]
68534    fn deref_mut(&mut self) -> &mut Self::Target {
68535        &mut self.inner
68536    }
68537}
68538///Builder for [`DecompressMemoryRegionNV`].
68539pub struct DecompressMemoryRegionNVBuilder {
68540    inner: DecompressMemoryRegionNV,
68541}
68542impl DecompressMemoryRegionNV {
68543    /// Start building this struct.
68544    #[inline]
68545    pub fn builder() -> DecompressMemoryRegionNVBuilder {
68546        DecompressMemoryRegionNVBuilder {
68547            inner: DecompressMemoryRegionNV {
68548                ..Default::default()
68549            },
68550        }
68551    }
68552}
68553impl DecompressMemoryRegionNVBuilder {
68554    #[inline]
68555    pub fn src_address(mut self, value: u64) -> Self {
68556        self.inner.src_address = value;
68557        self
68558    }
68559    #[inline]
68560    pub fn dst_address(mut self, value: u64) -> Self {
68561        self.inner.dst_address = value;
68562        self
68563    }
68564    #[inline]
68565    pub fn compressed_size(mut self, value: u64) -> Self {
68566        self.inner.compressed_size = value;
68567        self
68568    }
68569    #[inline]
68570    pub fn decompressed_size(mut self, value: u64) -> Self {
68571        self.inner.decompressed_size = value;
68572        self
68573    }
68574    #[inline]
68575    pub fn decompression_method(
68576        mut self,
68577        value: MemoryDecompressionMethodFlagsNV,
68578    ) -> Self {
68579        self.inner.decompression_method = value;
68580        self
68581    }
68582}
68583impl core::ops::Deref for DecompressMemoryRegionNVBuilder {
68584    type Target = DecompressMemoryRegionNV;
68585    #[inline]
68586    fn deref(&self) -> &Self::Target {
68587        &self.inner
68588    }
68589}
68590impl core::ops::DerefMut for DecompressMemoryRegionNVBuilder {
68591    #[inline]
68592    fn deref_mut(&mut self) -> &mut Self::Target {
68593        &mut self.inner
68594    }
68595}
68596///Builder for [`DecompressMemoryRegionEXT`].
68597pub struct DecompressMemoryRegionEXTBuilder {
68598    inner: DecompressMemoryRegionEXT,
68599}
68600impl DecompressMemoryRegionEXT {
68601    /// Start building this struct.
68602    #[inline]
68603    pub fn builder() -> DecompressMemoryRegionEXTBuilder {
68604        DecompressMemoryRegionEXTBuilder {
68605            inner: DecompressMemoryRegionEXT {
68606                ..Default::default()
68607            },
68608        }
68609    }
68610}
68611impl DecompressMemoryRegionEXTBuilder {
68612    #[inline]
68613    pub fn src_address(mut self, value: u64) -> Self {
68614        self.inner.src_address = value;
68615        self
68616    }
68617    #[inline]
68618    pub fn dst_address(mut self, value: u64) -> Self {
68619        self.inner.dst_address = value;
68620        self
68621    }
68622    #[inline]
68623    pub fn compressed_size(mut self, value: u64) -> Self {
68624        self.inner.compressed_size = value;
68625        self
68626    }
68627    #[inline]
68628    pub fn decompressed_size(mut self, value: u64) -> Self {
68629        self.inner.decompressed_size = value;
68630        self
68631    }
68632}
68633impl core::ops::Deref for DecompressMemoryRegionEXTBuilder {
68634    type Target = DecompressMemoryRegionEXT;
68635    #[inline]
68636    fn deref(&self) -> &Self::Target {
68637        &self.inner
68638    }
68639}
68640impl core::ops::DerefMut for DecompressMemoryRegionEXTBuilder {
68641    #[inline]
68642    fn deref_mut(&mut self) -> &mut Self::Target {
68643        &mut self.inner
68644    }
68645}
68646///Builder for [`DecompressMemoryInfoEXT`] with lifetime-tied pNext safety.
68647pub struct DecompressMemoryInfoEXTBuilder<'a> {
68648    inner: DecompressMemoryInfoEXT,
68649    _marker: core::marker::PhantomData<&'a ()>,
68650}
68651impl DecompressMemoryInfoEXT {
68652    /// Start building this struct; `s_type` is already set to the correct variant.
68653    #[inline]
68654    pub fn builder<'a>() -> DecompressMemoryInfoEXTBuilder<'a> {
68655        DecompressMemoryInfoEXTBuilder {
68656            inner: DecompressMemoryInfoEXT {
68657                s_type: StructureType::from_raw(1000550002i32),
68658                ..Default::default()
68659            },
68660            _marker: core::marker::PhantomData,
68661        }
68662    }
68663}
68664impl<'a> DecompressMemoryInfoEXTBuilder<'a> {
68665    #[inline]
68666    pub fn decompression_method(
68667        mut self,
68668        value: MemoryDecompressionMethodFlagsEXT,
68669    ) -> Self {
68670        self.inner.decompression_method = value;
68671        self
68672    }
68673    #[inline]
68674    pub fn regions(mut self, slice: &'a [DecompressMemoryRegionEXT]) -> Self {
68675        self.inner.region_count = slice.len() as u32;
68676        self.inner.p_regions = slice.as_ptr();
68677        self
68678    }
68679    ///Prepend a struct to the pNext chain. See [`DecompressMemoryInfoEXT`]'s **Extended By** section for valid types.
68680    #[inline]
68681    pub fn push_next<T: ExtendsDecompressMemoryInfoEXT>(
68682        mut self,
68683        next: &'a mut T,
68684    ) -> Self {
68685        unsafe {
68686            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
68687            (*next_ptr).p_next = self.inner.p_next as *mut _;
68688            self.inner.p_next = <*mut BaseOutStructure>::cast::<
68689                core::ffi::c_void,
68690            >(next_ptr) as *const _;
68691        }
68692        self
68693    }
68694}
68695impl<'a> core::ops::Deref for DecompressMemoryInfoEXTBuilder<'a> {
68696    type Target = DecompressMemoryInfoEXT;
68697    #[inline]
68698    fn deref(&self) -> &Self::Target {
68699        &self.inner
68700    }
68701}
68702impl<'a> core::ops::DerefMut for DecompressMemoryInfoEXTBuilder<'a> {
68703    #[inline]
68704    fn deref_mut(&mut self) -> &mut Self::Target {
68705        &mut self.inner
68706    }
68707}
68708///Builder for [`PhysicalDeviceShaderCoreBuiltinsPropertiesARM`] with lifetime-tied pNext safety.
68709pub struct PhysicalDeviceShaderCoreBuiltinsPropertiesARMBuilder<'a> {
68710    inner: PhysicalDeviceShaderCoreBuiltinsPropertiesARM,
68711    _marker: core::marker::PhantomData<&'a ()>,
68712}
68713impl PhysicalDeviceShaderCoreBuiltinsPropertiesARM {
68714    /// Start building this struct; `s_type` is already set to the correct variant.
68715    #[inline]
68716    pub fn builder<'a>() -> PhysicalDeviceShaderCoreBuiltinsPropertiesARMBuilder<'a> {
68717        PhysicalDeviceShaderCoreBuiltinsPropertiesARMBuilder {
68718            inner: PhysicalDeviceShaderCoreBuiltinsPropertiesARM {
68719                s_type: StructureType::from_raw(1000497001i32),
68720                ..Default::default()
68721            },
68722            _marker: core::marker::PhantomData,
68723        }
68724    }
68725}
68726impl<'a> PhysicalDeviceShaderCoreBuiltinsPropertiesARMBuilder<'a> {
68727    #[inline]
68728    pub fn shader_core_mask(mut self, value: u64) -> Self {
68729        self.inner.shader_core_mask = value;
68730        self
68731    }
68732    #[inline]
68733    pub fn shader_core_count(mut self, value: u32) -> Self {
68734        self.inner.shader_core_count = value;
68735        self
68736    }
68737    #[inline]
68738    pub fn shader_warps_per_core(mut self, value: u32) -> Self {
68739        self.inner.shader_warps_per_core = value;
68740        self
68741    }
68742}
68743impl<'a> core::ops::Deref for PhysicalDeviceShaderCoreBuiltinsPropertiesARMBuilder<'a> {
68744    type Target = PhysicalDeviceShaderCoreBuiltinsPropertiesARM;
68745    #[inline]
68746    fn deref(&self) -> &Self::Target {
68747        &self.inner
68748    }
68749}
68750impl<'a> core::ops::DerefMut
68751for PhysicalDeviceShaderCoreBuiltinsPropertiesARMBuilder<'a> {
68752    #[inline]
68753    fn deref_mut(&mut self) -> &mut Self::Target {
68754        &mut self.inner
68755    }
68756}
68757///Builder for [`PhysicalDeviceShaderCoreBuiltinsFeaturesARM`] with lifetime-tied pNext safety.
68758pub struct PhysicalDeviceShaderCoreBuiltinsFeaturesARMBuilder<'a> {
68759    inner: PhysicalDeviceShaderCoreBuiltinsFeaturesARM,
68760    _marker: core::marker::PhantomData<&'a ()>,
68761}
68762impl PhysicalDeviceShaderCoreBuiltinsFeaturesARM {
68763    /// Start building this struct; `s_type` is already set to the correct variant.
68764    #[inline]
68765    pub fn builder<'a>() -> PhysicalDeviceShaderCoreBuiltinsFeaturesARMBuilder<'a> {
68766        PhysicalDeviceShaderCoreBuiltinsFeaturesARMBuilder {
68767            inner: PhysicalDeviceShaderCoreBuiltinsFeaturesARM {
68768                s_type: StructureType::from_raw(1000497000i32),
68769                ..Default::default()
68770            },
68771            _marker: core::marker::PhantomData,
68772        }
68773    }
68774}
68775impl<'a> PhysicalDeviceShaderCoreBuiltinsFeaturesARMBuilder<'a> {
68776    #[inline]
68777    pub fn shader_core_builtins(mut self, value: bool) -> Self {
68778        self.inner.shader_core_builtins = value as u32;
68779        self
68780    }
68781    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderCoreBuiltinsFeaturesARM`]'s **Extended By** section for valid types.
68782    #[inline]
68783    pub fn push_next<T: ExtendsPhysicalDeviceShaderCoreBuiltinsFeaturesARM>(
68784        mut self,
68785        next: &'a mut T,
68786    ) -> Self {
68787        unsafe {
68788            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
68789            (*next_ptr).p_next = self.inner.p_next as *mut _;
68790            self.inner.p_next = <*mut BaseOutStructure>::cast::<
68791                core::ffi::c_void,
68792            >(next_ptr);
68793        }
68794        self
68795    }
68796}
68797impl<'a> core::ops::Deref for PhysicalDeviceShaderCoreBuiltinsFeaturesARMBuilder<'a> {
68798    type Target = PhysicalDeviceShaderCoreBuiltinsFeaturesARM;
68799    #[inline]
68800    fn deref(&self) -> &Self::Target {
68801        &self.inner
68802    }
68803}
68804impl<'a> core::ops::DerefMut for PhysicalDeviceShaderCoreBuiltinsFeaturesARMBuilder<'a> {
68805    #[inline]
68806    fn deref_mut(&mut self) -> &mut Self::Target {
68807        &mut self.inner
68808    }
68809}
68810///Builder for [`FrameBoundaryEXT`] with lifetime-tied pNext safety.
68811pub struct FrameBoundaryEXTBuilder<'a> {
68812    inner: FrameBoundaryEXT,
68813    _marker: core::marker::PhantomData<&'a ()>,
68814}
68815impl FrameBoundaryEXT {
68816    /// Start building this struct; `s_type` is already set to the correct variant.
68817    #[inline]
68818    pub fn builder<'a>() -> FrameBoundaryEXTBuilder<'a> {
68819        FrameBoundaryEXTBuilder {
68820            inner: FrameBoundaryEXT {
68821                s_type: StructureType::from_raw(1000375001i32),
68822                ..Default::default()
68823            },
68824            _marker: core::marker::PhantomData,
68825        }
68826    }
68827}
68828impl<'a> FrameBoundaryEXTBuilder<'a> {
68829    #[inline]
68830    pub fn flags(mut self, value: FrameBoundaryFlagsEXT) -> Self {
68831        self.inner.flags = value;
68832        self
68833    }
68834    #[inline]
68835    pub fn frame_id(mut self, value: u64) -> Self {
68836        self.inner.frame_id = value;
68837        self
68838    }
68839    #[inline]
68840    pub fn image_count(mut self, value: u32) -> Self {
68841        self.inner.image_count = value;
68842        self
68843    }
68844    #[inline]
68845    pub fn images(mut self, slice: &'a [Image]) -> Self {
68846        self.inner.image_count = slice.len() as u32;
68847        self.inner.p_images = slice.as_ptr();
68848        self
68849    }
68850    #[inline]
68851    pub fn buffer_count(mut self, value: u32) -> Self {
68852        self.inner.buffer_count = value;
68853        self
68854    }
68855    #[inline]
68856    pub fn buffers(mut self, slice: &'a [Buffer]) -> Self {
68857        self.inner.buffer_count = slice.len() as u32;
68858        self.inner.p_buffers = slice.as_ptr();
68859        self
68860    }
68861    #[inline]
68862    pub fn tag_name(mut self, value: u64) -> Self {
68863        self.inner.tag_name = value;
68864        self
68865    }
68866    #[inline]
68867    pub fn tag_size(mut self, value: usize) -> Self {
68868        self.inner.tag_size = value;
68869        self
68870    }
68871    #[inline]
68872    pub fn tag(mut self, slice: &'a [core::ffi::c_void]) -> Self {
68873        self.inner.tag_size = slice.len();
68874        self.inner.p_tag = slice.as_ptr();
68875        self
68876    }
68877    ///Prepend a struct to the pNext chain. See [`FrameBoundaryEXT`]'s **Extended By** section for valid types.
68878    #[inline]
68879    pub fn push_next<T: ExtendsFrameBoundaryEXT>(mut self, next: &'a mut T) -> Self {
68880        unsafe {
68881            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
68882            (*next_ptr).p_next = self.inner.p_next as *mut _;
68883            self.inner.p_next = <*mut BaseOutStructure>::cast::<
68884                core::ffi::c_void,
68885            >(next_ptr) as *const _;
68886        }
68887        self
68888    }
68889}
68890impl<'a> core::ops::Deref for FrameBoundaryEXTBuilder<'a> {
68891    type Target = FrameBoundaryEXT;
68892    #[inline]
68893    fn deref(&self) -> &Self::Target {
68894        &self.inner
68895    }
68896}
68897impl<'a> core::ops::DerefMut for FrameBoundaryEXTBuilder<'a> {
68898    #[inline]
68899    fn deref_mut(&mut self) -> &mut Self::Target {
68900        &mut self.inner
68901    }
68902}
68903///Builder for [`PhysicalDeviceFrameBoundaryFeaturesEXT`] with lifetime-tied pNext safety.
68904pub struct PhysicalDeviceFrameBoundaryFeaturesEXTBuilder<'a> {
68905    inner: PhysicalDeviceFrameBoundaryFeaturesEXT,
68906    _marker: core::marker::PhantomData<&'a ()>,
68907}
68908impl PhysicalDeviceFrameBoundaryFeaturesEXT {
68909    /// Start building this struct; `s_type` is already set to the correct variant.
68910    #[inline]
68911    pub fn builder<'a>() -> PhysicalDeviceFrameBoundaryFeaturesEXTBuilder<'a> {
68912        PhysicalDeviceFrameBoundaryFeaturesEXTBuilder {
68913            inner: PhysicalDeviceFrameBoundaryFeaturesEXT {
68914                s_type: StructureType::from_raw(1000375000i32),
68915                ..Default::default()
68916            },
68917            _marker: core::marker::PhantomData,
68918        }
68919    }
68920}
68921impl<'a> PhysicalDeviceFrameBoundaryFeaturesEXTBuilder<'a> {
68922    #[inline]
68923    pub fn frame_boundary(mut self, value: bool) -> Self {
68924        self.inner.frame_boundary = value as u32;
68925        self
68926    }
68927    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceFrameBoundaryFeaturesEXT`]'s **Extended By** section for valid types.
68928    #[inline]
68929    pub fn push_next<T: ExtendsPhysicalDeviceFrameBoundaryFeaturesEXT>(
68930        mut self,
68931        next: &'a mut T,
68932    ) -> Self {
68933        unsafe {
68934            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
68935            (*next_ptr).p_next = self.inner.p_next as *mut _;
68936            self.inner.p_next = <*mut BaseOutStructure>::cast::<
68937                core::ffi::c_void,
68938            >(next_ptr);
68939        }
68940        self
68941    }
68942}
68943impl<'a> core::ops::Deref for PhysicalDeviceFrameBoundaryFeaturesEXTBuilder<'a> {
68944    type Target = PhysicalDeviceFrameBoundaryFeaturesEXT;
68945    #[inline]
68946    fn deref(&self) -> &Self::Target {
68947        &self.inner
68948    }
68949}
68950impl<'a> core::ops::DerefMut for PhysicalDeviceFrameBoundaryFeaturesEXTBuilder<'a> {
68951    #[inline]
68952    fn deref_mut(&mut self) -> &mut Self::Target {
68953        &mut self.inner
68954    }
68955}
68956///Builder for [`PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT`] with lifetime-tied pNext safety.
68957pub struct PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXTBuilder<'a> {
68958    inner: PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT,
68959    _marker: core::marker::PhantomData<&'a ()>,
68960}
68961impl PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
68962    /// Start building this struct; `s_type` is already set to the correct variant.
68963    #[inline]
68964    pub fn builder<'a>() -> PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXTBuilder<
68965        'a,
68966    > {
68967        PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXTBuilder {
68968            inner: PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
68969                s_type: StructureType::from_raw(1000499000i32),
68970                ..Default::default()
68971            },
68972            _marker: core::marker::PhantomData,
68973        }
68974    }
68975}
68976impl<'a> PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXTBuilder<'a> {
68977    #[inline]
68978    pub fn dynamic_rendering_unused_attachments(mut self, value: bool) -> Self {
68979        self.inner.dynamic_rendering_unused_attachments = value as u32;
68980        self
68981    }
68982    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT`]'s **Extended By** section for valid types.
68983    #[inline]
68984    pub fn push_next<
68985        T: ExtendsPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT,
68986    >(mut self, next: &'a mut T) -> Self {
68987        unsafe {
68988            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
68989            (*next_ptr).p_next = self.inner.p_next as *mut _;
68990            self.inner.p_next = <*mut BaseOutStructure>::cast::<
68991                core::ffi::c_void,
68992            >(next_ptr);
68993        }
68994        self
68995    }
68996}
68997impl<'a> core::ops::Deref
68998for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXTBuilder<'a> {
68999    type Target = PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT;
69000    #[inline]
69001    fn deref(&self) -> &Self::Target {
69002        &self.inner
69003    }
69004}
69005impl<'a> core::ops::DerefMut
69006for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXTBuilder<'a> {
69007    #[inline]
69008    fn deref_mut(&mut self) -> &mut Self::Target {
69009        &mut self.inner
69010    }
69011}
69012///Builder for [`PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR`] with lifetime-tied pNext safety.
69013pub struct PhysicalDeviceInternallySynchronizedQueuesFeaturesKHRBuilder<'a> {
69014    inner: PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR,
69015    _marker: core::marker::PhantomData<&'a ()>,
69016}
69017impl PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR {
69018    /// Start building this struct; `s_type` is already set to the correct variant.
69019    #[inline]
69020    pub fn builder<'a>() -> PhysicalDeviceInternallySynchronizedQueuesFeaturesKHRBuilder<
69021        'a,
69022    > {
69023        PhysicalDeviceInternallySynchronizedQueuesFeaturesKHRBuilder {
69024            inner: PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR {
69025                s_type: StructureType::from_raw(1000504000i32),
69026                ..Default::default()
69027            },
69028            _marker: core::marker::PhantomData,
69029        }
69030    }
69031}
69032impl<'a> PhysicalDeviceInternallySynchronizedQueuesFeaturesKHRBuilder<'a> {
69033    #[inline]
69034    pub fn internally_synchronized_queues(mut self, value: bool) -> Self {
69035        self.inner.internally_synchronized_queues = value as u32;
69036        self
69037    }
69038    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR`]'s **Extended By** section for valid types.
69039    #[inline]
69040    pub fn push_next<T: ExtendsPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR>(
69041        mut self,
69042        next: &'a mut T,
69043    ) -> Self {
69044        unsafe {
69045            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
69046            (*next_ptr).p_next = self.inner.p_next as *mut _;
69047            self.inner.p_next = <*mut BaseOutStructure>::cast::<
69048                core::ffi::c_void,
69049            >(next_ptr);
69050        }
69051        self
69052    }
69053}
69054impl<'a> core::ops::Deref
69055for PhysicalDeviceInternallySynchronizedQueuesFeaturesKHRBuilder<'a> {
69056    type Target = PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR;
69057    #[inline]
69058    fn deref(&self) -> &Self::Target {
69059        &self.inner
69060    }
69061}
69062impl<'a> core::ops::DerefMut
69063for PhysicalDeviceInternallySynchronizedQueuesFeaturesKHRBuilder<'a> {
69064    #[inline]
69065    fn deref_mut(&mut self) -> &mut Self::Target {
69066        &mut self.inner
69067    }
69068}
69069///Builder for [`SurfacePresentModeKHR`] with lifetime-tied pNext safety.
69070pub struct SurfacePresentModeKHRBuilder<'a> {
69071    inner: SurfacePresentModeKHR,
69072    _marker: core::marker::PhantomData<&'a ()>,
69073}
69074impl SurfacePresentModeKHR {
69075    /// Start building this struct; `s_type` is already set to the correct variant.
69076    #[inline]
69077    pub fn builder<'a>() -> SurfacePresentModeKHRBuilder<'a> {
69078        SurfacePresentModeKHRBuilder {
69079            inner: SurfacePresentModeKHR {
69080                s_type: StructureType::from_raw(1000274000i32),
69081                ..Default::default()
69082            },
69083            _marker: core::marker::PhantomData,
69084        }
69085    }
69086}
69087impl<'a> SurfacePresentModeKHRBuilder<'a> {
69088    #[inline]
69089    pub fn present_mode(mut self, value: PresentModeKHR) -> Self {
69090        self.inner.present_mode = value;
69091        self
69092    }
69093    ///Prepend a struct to the pNext chain. See [`SurfacePresentModeKHR`]'s **Extended By** section for valid types.
69094    #[inline]
69095    pub fn push_next<T: ExtendsSurfacePresentModeKHR>(
69096        mut self,
69097        next: &'a mut T,
69098    ) -> Self {
69099        unsafe {
69100            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
69101            (*next_ptr).p_next = self.inner.p_next as *mut _;
69102            self.inner.p_next = <*mut BaseOutStructure>::cast::<
69103                core::ffi::c_void,
69104            >(next_ptr);
69105        }
69106        self
69107    }
69108}
69109impl<'a> core::ops::Deref for SurfacePresentModeKHRBuilder<'a> {
69110    type Target = SurfacePresentModeKHR;
69111    #[inline]
69112    fn deref(&self) -> &Self::Target {
69113        &self.inner
69114    }
69115}
69116impl<'a> core::ops::DerefMut for SurfacePresentModeKHRBuilder<'a> {
69117    #[inline]
69118    fn deref_mut(&mut self) -> &mut Self::Target {
69119        &mut self.inner
69120    }
69121}
69122///Builder for [`SurfacePresentScalingCapabilitiesKHR`] with lifetime-tied pNext safety.
69123pub struct SurfacePresentScalingCapabilitiesKHRBuilder<'a> {
69124    inner: SurfacePresentScalingCapabilitiesKHR,
69125    _marker: core::marker::PhantomData<&'a ()>,
69126}
69127impl SurfacePresentScalingCapabilitiesKHR {
69128    /// Start building this struct; `s_type` is already set to the correct variant.
69129    #[inline]
69130    pub fn builder<'a>() -> SurfacePresentScalingCapabilitiesKHRBuilder<'a> {
69131        SurfacePresentScalingCapabilitiesKHRBuilder {
69132            inner: SurfacePresentScalingCapabilitiesKHR {
69133                s_type: StructureType::from_raw(1000274001i32),
69134                ..Default::default()
69135            },
69136            _marker: core::marker::PhantomData,
69137        }
69138    }
69139}
69140impl<'a> SurfacePresentScalingCapabilitiesKHRBuilder<'a> {
69141    #[inline]
69142    pub fn supported_present_scaling(mut self, value: PresentScalingFlagsKHR) -> Self {
69143        self.inner.supported_present_scaling = value;
69144        self
69145    }
69146    #[inline]
69147    pub fn supported_present_gravity_x(mut self, value: PresentGravityFlagsKHR) -> Self {
69148        self.inner.supported_present_gravity_x = value;
69149        self
69150    }
69151    #[inline]
69152    pub fn supported_present_gravity_y(mut self, value: PresentGravityFlagsKHR) -> Self {
69153        self.inner.supported_present_gravity_y = value;
69154        self
69155    }
69156    #[inline]
69157    pub fn min_scaled_image_extent(mut self, value: Extent2D) -> Self {
69158        self.inner.min_scaled_image_extent = value;
69159        self
69160    }
69161    #[inline]
69162    pub fn max_scaled_image_extent(mut self, value: Extent2D) -> Self {
69163        self.inner.max_scaled_image_extent = value;
69164        self
69165    }
69166    ///Prepend a struct to the pNext chain. See [`SurfacePresentScalingCapabilitiesKHR`]'s **Extended By** section for valid types.
69167    #[inline]
69168    pub fn push_next<T: ExtendsSurfacePresentScalingCapabilitiesKHR>(
69169        mut self,
69170        next: &'a mut T,
69171    ) -> Self {
69172        unsafe {
69173            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
69174            (*next_ptr).p_next = self.inner.p_next as *mut _;
69175            self.inner.p_next = <*mut BaseOutStructure>::cast::<
69176                core::ffi::c_void,
69177            >(next_ptr);
69178        }
69179        self
69180    }
69181}
69182impl<'a> core::ops::Deref for SurfacePresentScalingCapabilitiesKHRBuilder<'a> {
69183    type Target = SurfacePresentScalingCapabilitiesKHR;
69184    #[inline]
69185    fn deref(&self) -> &Self::Target {
69186        &self.inner
69187    }
69188}
69189impl<'a> core::ops::DerefMut for SurfacePresentScalingCapabilitiesKHRBuilder<'a> {
69190    #[inline]
69191    fn deref_mut(&mut self) -> &mut Self::Target {
69192        &mut self.inner
69193    }
69194}
69195///Builder for [`SurfacePresentModeCompatibilityKHR`] with lifetime-tied pNext safety.
69196pub struct SurfacePresentModeCompatibilityKHRBuilder<'a> {
69197    inner: SurfacePresentModeCompatibilityKHR,
69198    _marker: core::marker::PhantomData<&'a ()>,
69199}
69200impl SurfacePresentModeCompatibilityKHR {
69201    /// Start building this struct; `s_type` is already set to the correct variant.
69202    #[inline]
69203    pub fn builder<'a>() -> SurfacePresentModeCompatibilityKHRBuilder<'a> {
69204        SurfacePresentModeCompatibilityKHRBuilder {
69205            inner: SurfacePresentModeCompatibilityKHR {
69206                s_type: StructureType::from_raw(1000274002i32),
69207                ..Default::default()
69208            },
69209            _marker: core::marker::PhantomData,
69210        }
69211    }
69212}
69213impl<'a> SurfacePresentModeCompatibilityKHRBuilder<'a> {
69214    #[inline]
69215    pub fn present_mode_count(mut self, value: u32) -> Self {
69216        self.inner.present_mode_count = value;
69217        self
69218    }
69219    #[inline]
69220    pub fn present_modes(mut self, slice: &'a mut [PresentModeKHR]) -> Self {
69221        self.inner.present_mode_count = slice.len() as u32;
69222        self.inner.p_present_modes = slice.as_mut_ptr();
69223        self
69224    }
69225    ///Prepend a struct to the pNext chain. See [`SurfacePresentModeCompatibilityKHR`]'s **Extended By** section for valid types.
69226    #[inline]
69227    pub fn push_next<T: ExtendsSurfacePresentModeCompatibilityKHR>(
69228        mut self,
69229        next: &'a mut T,
69230    ) -> Self {
69231        unsafe {
69232            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
69233            (*next_ptr).p_next = self.inner.p_next as *mut _;
69234            self.inner.p_next = <*mut BaseOutStructure>::cast::<
69235                core::ffi::c_void,
69236            >(next_ptr);
69237        }
69238        self
69239    }
69240}
69241impl<'a> core::ops::Deref for SurfacePresentModeCompatibilityKHRBuilder<'a> {
69242    type Target = SurfacePresentModeCompatibilityKHR;
69243    #[inline]
69244    fn deref(&self) -> &Self::Target {
69245        &self.inner
69246    }
69247}
69248impl<'a> core::ops::DerefMut for SurfacePresentModeCompatibilityKHRBuilder<'a> {
69249    #[inline]
69250    fn deref_mut(&mut self) -> &mut Self::Target {
69251        &mut self.inner
69252    }
69253}
69254///Builder for [`PhysicalDeviceSwapchainMaintenance1FeaturesKHR`] with lifetime-tied pNext safety.
69255pub struct PhysicalDeviceSwapchainMaintenance1FeaturesKHRBuilder<'a> {
69256    inner: PhysicalDeviceSwapchainMaintenance1FeaturesKHR,
69257    _marker: core::marker::PhantomData<&'a ()>,
69258}
69259impl PhysicalDeviceSwapchainMaintenance1FeaturesKHR {
69260    /// Start building this struct; `s_type` is already set to the correct variant.
69261    #[inline]
69262    pub fn builder<'a>() -> PhysicalDeviceSwapchainMaintenance1FeaturesKHRBuilder<'a> {
69263        PhysicalDeviceSwapchainMaintenance1FeaturesKHRBuilder {
69264            inner: PhysicalDeviceSwapchainMaintenance1FeaturesKHR {
69265                s_type: StructureType::from_raw(1000275000i32),
69266                ..Default::default()
69267            },
69268            _marker: core::marker::PhantomData,
69269        }
69270    }
69271}
69272impl<'a> PhysicalDeviceSwapchainMaintenance1FeaturesKHRBuilder<'a> {
69273    #[inline]
69274    pub fn swapchain_maintenance1(mut self, value: bool) -> Self {
69275        self.inner.swapchain_maintenance1 = value as u32;
69276        self
69277    }
69278    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceSwapchainMaintenance1FeaturesKHR`]'s **Extended By** section for valid types.
69279    #[inline]
69280    pub fn push_next<T: ExtendsPhysicalDeviceSwapchainMaintenance1FeaturesKHR>(
69281        mut self,
69282        next: &'a mut T,
69283    ) -> Self {
69284        unsafe {
69285            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
69286            (*next_ptr).p_next = self.inner.p_next as *mut _;
69287            self.inner.p_next = <*mut BaseOutStructure>::cast::<
69288                core::ffi::c_void,
69289            >(next_ptr);
69290        }
69291        self
69292    }
69293}
69294impl<'a> core::ops::Deref for PhysicalDeviceSwapchainMaintenance1FeaturesKHRBuilder<'a> {
69295    type Target = PhysicalDeviceSwapchainMaintenance1FeaturesKHR;
69296    #[inline]
69297    fn deref(&self) -> &Self::Target {
69298        &self.inner
69299    }
69300}
69301impl<'a> core::ops::DerefMut
69302for PhysicalDeviceSwapchainMaintenance1FeaturesKHRBuilder<'a> {
69303    #[inline]
69304    fn deref_mut(&mut self) -> &mut Self::Target {
69305        &mut self.inner
69306    }
69307}
69308///Builder for [`SwapchainPresentFenceInfoKHR`] with lifetime-tied pNext safety.
69309pub struct SwapchainPresentFenceInfoKHRBuilder<'a> {
69310    inner: SwapchainPresentFenceInfoKHR,
69311    _marker: core::marker::PhantomData<&'a ()>,
69312}
69313impl SwapchainPresentFenceInfoKHR {
69314    /// Start building this struct; `s_type` is already set to the correct variant.
69315    #[inline]
69316    pub fn builder<'a>() -> SwapchainPresentFenceInfoKHRBuilder<'a> {
69317        SwapchainPresentFenceInfoKHRBuilder {
69318            inner: SwapchainPresentFenceInfoKHR {
69319                s_type: StructureType::from_raw(1000275001i32),
69320                ..Default::default()
69321            },
69322            _marker: core::marker::PhantomData,
69323        }
69324    }
69325}
69326impl<'a> SwapchainPresentFenceInfoKHRBuilder<'a> {
69327    #[inline]
69328    pub fn swapchain_count(mut self, value: u32) -> Self {
69329        self.inner.swapchain_count = value;
69330        self
69331    }
69332    #[inline]
69333    pub fn fences(mut self, slice: &'a [Fence]) -> Self {
69334        self.inner.swapchain_count = slice.len() as u32;
69335        self.inner.p_fences = slice.as_ptr();
69336        self
69337    }
69338    ///Prepend a struct to the pNext chain. See [`SwapchainPresentFenceInfoKHR`]'s **Extended By** section for valid types.
69339    #[inline]
69340    pub fn push_next<T: ExtendsSwapchainPresentFenceInfoKHR>(
69341        mut self,
69342        next: &'a mut T,
69343    ) -> Self {
69344        unsafe {
69345            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
69346            (*next_ptr).p_next = self.inner.p_next as *mut _;
69347            self.inner.p_next = <*mut BaseOutStructure>::cast::<
69348                core::ffi::c_void,
69349            >(next_ptr) as *const _;
69350        }
69351        self
69352    }
69353}
69354impl<'a> core::ops::Deref for SwapchainPresentFenceInfoKHRBuilder<'a> {
69355    type Target = SwapchainPresentFenceInfoKHR;
69356    #[inline]
69357    fn deref(&self) -> &Self::Target {
69358        &self.inner
69359    }
69360}
69361impl<'a> core::ops::DerefMut for SwapchainPresentFenceInfoKHRBuilder<'a> {
69362    #[inline]
69363    fn deref_mut(&mut self) -> &mut Self::Target {
69364        &mut self.inner
69365    }
69366}
69367///Builder for [`SwapchainPresentModesCreateInfoKHR`] with lifetime-tied pNext safety.
69368pub struct SwapchainPresentModesCreateInfoKHRBuilder<'a> {
69369    inner: SwapchainPresentModesCreateInfoKHR,
69370    _marker: core::marker::PhantomData<&'a ()>,
69371}
69372impl SwapchainPresentModesCreateInfoKHR {
69373    /// Start building this struct; `s_type` is already set to the correct variant.
69374    #[inline]
69375    pub fn builder<'a>() -> SwapchainPresentModesCreateInfoKHRBuilder<'a> {
69376        SwapchainPresentModesCreateInfoKHRBuilder {
69377            inner: SwapchainPresentModesCreateInfoKHR {
69378                s_type: StructureType::from_raw(1000275002i32),
69379                ..Default::default()
69380            },
69381            _marker: core::marker::PhantomData,
69382        }
69383    }
69384}
69385impl<'a> SwapchainPresentModesCreateInfoKHRBuilder<'a> {
69386    #[inline]
69387    pub fn present_modes(mut self, slice: &'a [PresentModeKHR]) -> Self {
69388        self.inner.present_mode_count = slice.len() as u32;
69389        self.inner.p_present_modes = slice.as_ptr();
69390        self
69391    }
69392    ///Prepend a struct to the pNext chain. See [`SwapchainPresentModesCreateInfoKHR`]'s **Extended By** section for valid types.
69393    #[inline]
69394    pub fn push_next<T: ExtendsSwapchainPresentModesCreateInfoKHR>(
69395        mut self,
69396        next: &'a mut T,
69397    ) -> Self {
69398        unsafe {
69399            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
69400            (*next_ptr).p_next = self.inner.p_next as *mut _;
69401            self.inner.p_next = <*mut BaseOutStructure>::cast::<
69402                core::ffi::c_void,
69403            >(next_ptr) as *const _;
69404        }
69405        self
69406    }
69407}
69408impl<'a> core::ops::Deref for SwapchainPresentModesCreateInfoKHRBuilder<'a> {
69409    type Target = SwapchainPresentModesCreateInfoKHR;
69410    #[inline]
69411    fn deref(&self) -> &Self::Target {
69412        &self.inner
69413    }
69414}
69415impl<'a> core::ops::DerefMut for SwapchainPresentModesCreateInfoKHRBuilder<'a> {
69416    #[inline]
69417    fn deref_mut(&mut self) -> &mut Self::Target {
69418        &mut self.inner
69419    }
69420}
69421///Builder for [`SwapchainPresentModeInfoKHR`] with lifetime-tied pNext safety.
69422pub struct SwapchainPresentModeInfoKHRBuilder<'a> {
69423    inner: SwapchainPresentModeInfoKHR,
69424    _marker: core::marker::PhantomData<&'a ()>,
69425}
69426impl SwapchainPresentModeInfoKHR {
69427    /// Start building this struct; `s_type` is already set to the correct variant.
69428    #[inline]
69429    pub fn builder<'a>() -> SwapchainPresentModeInfoKHRBuilder<'a> {
69430        SwapchainPresentModeInfoKHRBuilder {
69431            inner: SwapchainPresentModeInfoKHR {
69432                s_type: StructureType::from_raw(1000275003i32),
69433                ..Default::default()
69434            },
69435            _marker: core::marker::PhantomData,
69436        }
69437    }
69438}
69439impl<'a> SwapchainPresentModeInfoKHRBuilder<'a> {
69440    #[inline]
69441    pub fn present_modes(mut self, slice: &'a [PresentModeKHR]) -> Self {
69442        self.inner.swapchain_count = slice.len() as u32;
69443        self.inner.p_present_modes = slice.as_ptr();
69444        self
69445    }
69446    ///Prepend a struct to the pNext chain. See [`SwapchainPresentModeInfoKHR`]'s **Extended By** section for valid types.
69447    #[inline]
69448    pub fn push_next<T: ExtendsSwapchainPresentModeInfoKHR>(
69449        mut self,
69450        next: &'a mut T,
69451    ) -> Self {
69452        unsafe {
69453            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
69454            (*next_ptr).p_next = self.inner.p_next as *mut _;
69455            self.inner.p_next = <*mut BaseOutStructure>::cast::<
69456                core::ffi::c_void,
69457            >(next_ptr) as *const _;
69458        }
69459        self
69460    }
69461}
69462impl<'a> core::ops::Deref for SwapchainPresentModeInfoKHRBuilder<'a> {
69463    type Target = SwapchainPresentModeInfoKHR;
69464    #[inline]
69465    fn deref(&self) -> &Self::Target {
69466        &self.inner
69467    }
69468}
69469impl<'a> core::ops::DerefMut for SwapchainPresentModeInfoKHRBuilder<'a> {
69470    #[inline]
69471    fn deref_mut(&mut self) -> &mut Self::Target {
69472        &mut self.inner
69473    }
69474}
69475///Builder for [`SwapchainPresentScalingCreateInfoKHR`] with lifetime-tied pNext safety.
69476pub struct SwapchainPresentScalingCreateInfoKHRBuilder<'a> {
69477    inner: SwapchainPresentScalingCreateInfoKHR,
69478    _marker: core::marker::PhantomData<&'a ()>,
69479}
69480impl SwapchainPresentScalingCreateInfoKHR {
69481    /// Start building this struct; `s_type` is already set to the correct variant.
69482    #[inline]
69483    pub fn builder<'a>() -> SwapchainPresentScalingCreateInfoKHRBuilder<'a> {
69484        SwapchainPresentScalingCreateInfoKHRBuilder {
69485            inner: SwapchainPresentScalingCreateInfoKHR {
69486                s_type: StructureType::from_raw(1000275004i32),
69487                ..Default::default()
69488            },
69489            _marker: core::marker::PhantomData,
69490        }
69491    }
69492}
69493impl<'a> SwapchainPresentScalingCreateInfoKHRBuilder<'a> {
69494    #[inline]
69495    pub fn scaling_behavior(mut self, value: PresentScalingFlagsKHR) -> Self {
69496        self.inner.scaling_behavior = value;
69497        self
69498    }
69499    #[inline]
69500    pub fn present_gravity_x(mut self, value: PresentGravityFlagsKHR) -> Self {
69501        self.inner.present_gravity_x = value;
69502        self
69503    }
69504    #[inline]
69505    pub fn present_gravity_y(mut self, value: PresentGravityFlagsKHR) -> Self {
69506        self.inner.present_gravity_y = value;
69507        self
69508    }
69509    ///Prepend a struct to the pNext chain. See [`SwapchainPresentScalingCreateInfoKHR`]'s **Extended By** section for valid types.
69510    #[inline]
69511    pub fn push_next<T: ExtendsSwapchainPresentScalingCreateInfoKHR>(
69512        mut self,
69513        next: &'a mut T,
69514    ) -> Self {
69515        unsafe {
69516            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
69517            (*next_ptr).p_next = self.inner.p_next as *mut _;
69518            self.inner.p_next = <*mut BaseOutStructure>::cast::<
69519                core::ffi::c_void,
69520            >(next_ptr) as *const _;
69521        }
69522        self
69523    }
69524}
69525impl<'a> core::ops::Deref for SwapchainPresentScalingCreateInfoKHRBuilder<'a> {
69526    type Target = SwapchainPresentScalingCreateInfoKHR;
69527    #[inline]
69528    fn deref(&self) -> &Self::Target {
69529        &self.inner
69530    }
69531}
69532impl<'a> core::ops::DerefMut for SwapchainPresentScalingCreateInfoKHRBuilder<'a> {
69533    #[inline]
69534    fn deref_mut(&mut self) -> &mut Self::Target {
69535        &mut self.inner
69536    }
69537}
69538///Builder for [`ReleaseSwapchainImagesInfoKHR`] with lifetime-tied pNext safety.
69539pub struct ReleaseSwapchainImagesInfoKHRBuilder<'a> {
69540    inner: ReleaseSwapchainImagesInfoKHR,
69541    _marker: core::marker::PhantomData<&'a ()>,
69542}
69543impl ReleaseSwapchainImagesInfoKHR {
69544    /// Start building this struct; `s_type` is already set to the correct variant.
69545    #[inline]
69546    pub fn builder<'a>() -> ReleaseSwapchainImagesInfoKHRBuilder<'a> {
69547        ReleaseSwapchainImagesInfoKHRBuilder {
69548            inner: ReleaseSwapchainImagesInfoKHR {
69549                s_type: StructureType::from_raw(1000275005i32),
69550                ..Default::default()
69551            },
69552            _marker: core::marker::PhantomData,
69553        }
69554    }
69555}
69556impl<'a> ReleaseSwapchainImagesInfoKHRBuilder<'a> {
69557    #[inline]
69558    pub fn swapchain(mut self, value: SwapchainKHR) -> Self {
69559        self.inner.swapchain = value;
69560        self
69561    }
69562    #[inline]
69563    pub fn image_indices(mut self, slice: &'a [u32]) -> Self {
69564        self.inner.image_index_count = slice.len() as u32;
69565        self.inner.p_image_indices = slice.as_ptr();
69566        self
69567    }
69568    ///Prepend a struct to the pNext chain. See [`ReleaseSwapchainImagesInfoKHR`]'s **Extended By** section for valid types.
69569    #[inline]
69570    pub fn push_next<T: ExtendsReleaseSwapchainImagesInfoKHR>(
69571        mut self,
69572        next: &'a mut T,
69573    ) -> Self {
69574        unsafe {
69575            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
69576            (*next_ptr).p_next = self.inner.p_next as *mut _;
69577            self.inner.p_next = <*mut BaseOutStructure>::cast::<
69578                core::ffi::c_void,
69579            >(next_ptr) as *const _;
69580        }
69581        self
69582    }
69583}
69584impl<'a> core::ops::Deref for ReleaseSwapchainImagesInfoKHRBuilder<'a> {
69585    type Target = ReleaseSwapchainImagesInfoKHR;
69586    #[inline]
69587    fn deref(&self) -> &Self::Target {
69588        &self.inner
69589    }
69590}
69591impl<'a> core::ops::DerefMut for ReleaseSwapchainImagesInfoKHRBuilder<'a> {
69592    #[inline]
69593    fn deref_mut(&mut self) -> &mut Self::Target {
69594        &mut self.inner
69595    }
69596}
69597///Builder for [`PhysicalDeviceDepthBiasControlFeaturesEXT`] with lifetime-tied pNext safety.
69598pub struct PhysicalDeviceDepthBiasControlFeaturesEXTBuilder<'a> {
69599    inner: PhysicalDeviceDepthBiasControlFeaturesEXT,
69600    _marker: core::marker::PhantomData<&'a ()>,
69601}
69602impl PhysicalDeviceDepthBiasControlFeaturesEXT {
69603    /// Start building this struct; `s_type` is already set to the correct variant.
69604    #[inline]
69605    pub fn builder<'a>() -> PhysicalDeviceDepthBiasControlFeaturesEXTBuilder<'a> {
69606        PhysicalDeviceDepthBiasControlFeaturesEXTBuilder {
69607            inner: PhysicalDeviceDepthBiasControlFeaturesEXT {
69608                s_type: StructureType::from_raw(1000283000i32),
69609                ..Default::default()
69610            },
69611            _marker: core::marker::PhantomData,
69612        }
69613    }
69614}
69615impl<'a> PhysicalDeviceDepthBiasControlFeaturesEXTBuilder<'a> {
69616    #[inline]
69617    pub fn depth_bias_control(mut self, value: bool) -> Self {
69618        self.inner.depth_bias_control = value as u32;
69619        self
69620    }
69621    #[inline]
69622    pub fn least_representable_value_force_unorm_representation(
69623        mut self,
69624        value: bool,
69625    ) -> Self {
69626        self.inner.least_representable_value_force_unorm_representation = value as u32;
69627        self
69628    }
69629    #[inline]
69630    pub fn float_representation(mut self, value: bool) -> Self {
69631        self.inner.float_representation = value as u32;
69632        self
69633    }
69634    #[inline]
69635    pub fn depth_bias_exact(mut self, value: bool) -> Self {
69636        self.inner.depth_bias_exact = value as u32;
69637        self
69638    }
69639    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDepthBiasControlFeaturesEXT`]'s **Extended By** section for valid types.
69640    #[inline]
69641    pub fn push_next<T: ExtendsPhysicalDeviceDepthBiasControlFeaturesEXT>(
69642        mut self,
69643        next: &'a mut T,
69644    ) -> Self {
69645        unsafe {
69646            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
69647            (*next_ptr).p_next = self.inner.p_next as *mut _;
69648            self.inner.p_next = <*mut BaseOutStructure>::cast::<
69649                core::ffi::c_void,
69650            >(next_ptr);
69651        }
69652        self
69653    }
69654}
69655impl<'a> core::ops::Deref for PhysicalDeviceDepthBiasControlFeaturesEXTBuilder<'a> {
69656    type Target = PhysicalDeviceDepthBiasControlFeaturesEXT;
69657    #[inline]
69658    fn deref(&self) -> &Self::Target {
69659        &self.inner
69660    }
69661}
69662impl<'a> core::ops::DerefMut for PhysicalDeviceDepthBiasControlFeaturesEXTBuilder<'a> {
69663    #[inline]
69664    fn deref_mut(&mut self) -> &mut Self::Target {
69665        &mut self.inner
69666    }
69667}
69668///Builder for [`PhysicalDeviceRayTracingInvocationReorderFeaturesEXT`] with lifetime-tied pNext safety.
69669pub struct PhysicalDeviceRayTracingInvocationReorderFeaturesEXTBuilder<'a> {
69670    inner: PhysicalDeviceRayTracingInvocationReorderFeaturesEXT,
69671    _marker: core::marker::PhantomData<&'a ()>,
69672}
69673impl PhysicalDeviceRayTracingInvocationReorderFeaturesEXT {
69674    /// Start building this struct; `s_type` is already set to the correct variant.
69675    #[inline]
69676    pub fn builder<'a>() -> PhysicalDeviceRayTracingInvocationReorderFeaturesEXTBuilder<
69677        'a,
69678    > {
69679        PhysicalDeviceRayTracingInvocationReorderFeaturesEXTBuilder {
69680            inner: PhysicalDeviceRayTracingInvocationReorderFeaturesEXT {
69681                s_type: StructureType::from_raw(1000581000i32),
69682                ..Default::default()
69683            },
69684            _marker: core::marker::PhantomData,
69685        }
69686    }
69687}
69688impl<'a> PhysicalDeviceRayTracingInvocationReorderFeaturesEXTBuilder<'a> {
69689    #[inline]
69690    pub fn ray_tracing_invocation_reorder(mut self, value: bool) -> Self {
69691        self.inner.ray_tracing_invocation_reorder = value as u32;
69692        self
69693    }
69694    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceRayTracingInvocationReorderFeaturesEXT`]'s **Extended By** section for valid types.
69695    #[inline]
69696    pub fn push_next<T: ExtendsPhysicalDeviceRayTracingInvocationReorderFeaturesEXT>(
69697        mut self,
69698        next: &'a mut T,
69699    ) -> Self {
69700        unsafe {
69701            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
69702            (*next_ptr).p_next = self.inner.p_next as *mut _;
69703            self.inner.p_next = <*mut BaseOutStructure>::cast::<
69704                core::ffi::c_void,
69705            >(next_ptr);
69706        }
69707        self
69708    }
69709}
69710impl<'a> core::ops::Deref
69711for PhysicalDeviceRayTracingInvocationReorderFeaturesEXTBuilder<'a> {
69712    type Target = PhysicalDeviceRayTracingInvocationReorderFeaturesEXT;
69713    #[inline]
69714    fn deref(&self) -> &Self::Target {
69715        &self.inner
69716    }
69717}
69718impl<'a> core::ops::DerefMut
69719for PhysicalDeviceRayTracingInvocationReorderFeaturesEXTBuilder<'a> {
69720    #[inline]
69721    fn deref_mut(&mut self) -> &mut Self::Target {
69722        &mut self.inner
69723    }
69724}
69725///Builder for [`PhysicalDeviceRayTracingInvocationReorderFeaturesNV`] with lifetime-tied pNext safety.
69726pub struct PhysicalDeviceRayTracingInvocationReorderFeaturesNVBuilder<'a> {
69727    inner: PhysicalDeviceRayTracingInvocationReorderFeaturesNV,
69728    _marker: core::marker::PhantomData<&'a ()>,
69729}
69730impl PhysicalDeviceRayTracingInvocationReorderFeaturesNV {
69731    /// Start building this struct; `s_type` is already set to the correct variant.
69732    #[inline]
69733    pub fn builder<'a>() -> PhysicalDeviceRayTracingInvocationReorderFeaturesNVBuilder<
69734        'a,
69735    > {
69736        PhysicalDeviceRayTracingInvocationReorderFeaturesNVBuilder {
69737            inner: PhysicalDeviceRayTracingInvocationReorderFeaturesNV {
69738                s_type: StructureType::from_raw(1000490000i32),
69739                ..Default::default()
69740            },
69741            _marker: core::marker::PhantomData,
69742        }
69743    }
69744}
69745impl<'a> PhysicalDeviceRayTracingInvocationReorderFeaturesNVBuilder<'a> {
69746    #[inline]
69747    pub fn ray_tracing_invocation_reorder(mut self, value: bool) -> Self {
69748        self.inner.ray_tracing_invocation_reorder = value as u32;
69749        self
69750    }
69751    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceRayTracingInvocationReorderFeaturesNV`]'s **Extended By** section for valid types.
69752    #[inline]
69753    pub fn push_next<T: ExtendsPhysicalDeviceRayTracingInvocationReorderFeaturesNV>(
69754        mut self,
69755        next: &'a mut T,
69756    ) -> Self {
69757        unsafe {
69758            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
69759            (*next_ptr).p_next = self.inner.p_next as *mut _;
69760            self.inner.p_next = <*mut BaseOutStructure>::cast::<
69761                core::ffi::c_void,
69762            >(next_ptr);
69763        }
69764        self
69765    }
69766}
69767impl<'a> core::ops::Deref
69768for PhysicalDeviceRayTracingInvocationReorderFeaturesNVBuilder<'a> {
69769    type Target = PhysicalDeviceRayTracingInvocationReorderFeaturesNV;
69770    #[inline]
69771    fn deref(&self) -> &Self::Target {
69772        &self.inner
69773    }
69774}
69775impl<'a> core::ops::DerefMut
69776for PhysicalDeviceRayTracingInvocationReorderFeaturesNVBuilder<'a> {
69777    #[inline]
69778    fn deref_mut(&mut self) -> &mut Self::Target {
69779        &mut self.inner
69780    }
69781}
69782///Builder for [`PhysicalDeviceRayTracingInvocationReorderPropertiesEXT`] with lifetime-tied pNext safety.
69783pub struct PhysicalDeviceRayTracingInvocationReorderPropertiesEXTBuilder<'a> {
69784    inner: PhysicalDeviceRayTracingInvocationReorderPropertiesEXT,
69785    _marker: core::marker::PhantomData<&'a ()>,
69786}
69787impl PhysicalDeviceRayTracingInvocationReorderPropertiesEXT {
69788    /// Start building this struct; `s_type` is already set to the correct variant.
69789    #[inline]
69790    pub fn builder<'a>() -> PhysicalDeviceRayTracingInvocationReorderPropertiesEXTBuilder<
69791        'a,
69792    > {
69793        PhysicalDeviceRayTracingInvocationReorderPropertiesEXTBuilder {
69794            inner: PhysicalDeviceRayTracingInvocationReorderPropertiesEXT {
69795                s_type: StructureType::from_raw(1000581001i32),
69796                ..Default::default()
69797            },
69798            _marker: core::marker::PhantomData,
69799        }
69800    }
69801}
69802impl<'a> PhysicalDeviceRayTracingInvocationReorderPropertiesEXTBuilder<'a> {
69803    #[inline]
69804    pub fn ray_tracing_invocation_reorder_reordering_hint(
69805        mut self,
69806        value: RayTracingInvocationReorderModeEXT,
69807    ) -> Self {
69808        self.inner.ray_tracing_invocation_reorder_reordering_hint = value;
69809        self
69810    }
69811    #[inline]
69812    pub fn max_shader_binding_table_record_index(mut self, value: u32) -> Self {
69813        self.inner.max_shader_binding_table_record_index = value;
69814        self
69815    }
69816}
69817impl<'a> core::ops::Deref
69818for PhysicalDeviceRayTracingInvocationReorderPropertiesEXTBuilder<'a> {
69819    type Target = PhysicalDeviceRayTracingInvocationReorderPropertiesEXT;
69820    #[inline]
69821    fn deref(&self) -> &Self::Target {
69822        &self.inner
69823    }
69824}
69825impl<'a> core::ops::DerefMut
69826for PhysicalDeviceRayTracingInvocationReorderPropertiesEXTBuilder<'a> {
69827    #[inline]
69828    fn deref_mut(&mut self) -> &mut Self::Target {
69829        &mut self.inner
69830    }
69831}
69832///Builder for [`PhysicalDeviceRayTracingInvocationReorderPropertiesNV`] with lifetime-tied pNext safety.
69833pub struct PhysicalDeviceRayTracingInvocationReorderPropertiesNVBuilder<'a> {
69834    inner: PhysicalDeviceRayTracingInvocationReorderPropertiesNV,
69835    _marker: core::marker::PhantomData<&'a ()>,
69836}
69837impl PhysicalDeviceRayTracingInvocationReorderPropertiesNV {
69838    /// Start building this struct; `s_type` is already set to the correct variant.
69839    #[inline]
69840    pub fn builder<'a>() -> PhysicalDeviceRayTracingInvocationReorderPropertiesNVBuilder<
69841        'a,
69842    > {
69843        PhysicalDeviceRayTracingInvocationReorderPropertiesNVBuilder {
69844            inner: PhysicalDeviceRayTracingInvocationReorderPropertiesNV {
69845                s_type: StructureType::from_raw(1000490001i32),
69846                ..Default::default()
69847            },
69848            _marker: core::marker::PhantomData,
69849        }
69850    }
69851}
69852impl<'a> PhysicalDeviceRayTracingInvocationReorderPropertiesNVBuilder<'a> {
69853    #[inline]
69854    pub fn ray_tracing_invocation_reorder_reordering_hint(
69855        mut self,
69856        value: RayTracingInvocationReorderModeEXT,
69857    ) -> Self {
69858        self.inner.ray_tracing_invocation_reorder_reordering_hint = value;
69859        self
69860    }
69861}
69862impl<'a> core::ops::Deref
69863for PhysicalDeviceRayTracingInvocationReorderPropertiesNVBuilder<'a> {
69864    type Target = PhysicalDeviceRayTracingInvocationReorderPropertiesNV;
69865    #[inline]
69866    fn deref(&self) -> &Self::Target {
69867        &self.inner
69868    }
69869}
69870impl<'a> core::ops::DerefMut
69871for PhysicalDeviceRayTracingInvocationReorderPropertiesNVBuilder<'a> {
69872    #[inline]
69873    fn deref_mut(&mut self) -> &mut Self::Target {
69874        &mut self.inner
69875    }
69876}
69877///Builder for [`PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV`] with lifetime-tied pNext safety.
69878pub struct PhysicalDeviceExtendedSparseAddressSpaceFeaturesNVBuilder<'a> {
69879    inner: PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV,
69880    _marker: core::marker::PhantomData<&'a ()>,
69881}
69882impl PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
69883    /// Start building this struct; `s_type` is already set to the correct variant.
69884    #[inline]
69885    pub fn builder<'a>() -> PhysicalDeviceExtendedSparseAddressSpaceFeaturesNVBuilder<
69886        'a,
69887    > {
69888        PhysicalDeviceExtendedSparseAddressSpaceFeaturesNVBuilder {
69889            inner: PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
69890                s_type: StructureType::from_raw(1000492000i32),
69891                ..Default::default()
69892            },
69893            _marker: core::marker::PhantomData,
69894        }
69895    }
69896}
69897impl<'a> PhysicalDeviceExtendedSparseAddressSpaceFeaturesNVBuilder<'a> {
69898    #[inline]
69899    pub fn extended_sparse_address_space(mut self, value: bool) -> Self {
69900        self.inner.extended_sparse_address_space = value as u32;
69901        self
69902    }
69903    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV`]'s **Extended By** section for valid types.
69904    #[inline]
69905    pub fn push_next<T: ExtendsPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV>(
69906        mut self,
69907        next: &'a mut T,
69908    ) -> Self {
69909        unsafe {
69910            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
69911            (*next_ptr).p_next = self.inner.p_next as *mut _;
69912            self.inner.p_next = <*mut BaseOutStructure>::cast::<
69913                core::ffi::c_void,
69914            >(next_ptr);
69915        }
69916        self
69917    }
69918}
69919impl<'a> core::ops::Deref
69920for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNVBuilder<'a> {
69921    type Target = PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV;
69922    #[inline]
69923    fn deref(&self) -> &Self::Target {
69924        &self.inner
69925    }
69926}
69927impl<'a> core::ops::DerefMut
69928for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNVBuilder<'a> {
69929    #[inline]
69930    fn deref_mut(&mut self) -> &mut Self::Target {
69931        &mut self.inner
69932    }
69933}
69934///Builder for [`PhysicalDeviceExtendedSparseAddressSpacePropertiesNV`] with lifetime-tied pNext safety.
69935pub struct PhysicalDeviceExtendedSparseAddressSpacePropertiesNVBuilder<'a> {
69936    inner: PhysicalDeviceExtendedSparseAddressSpacePropertiesNV,
69937    _marker: core::marker::PhantomData<&'a ()>,
69938}
69939impl PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {
69940    /// Start building this struct; `s_type` is already set to the correct variant.
69941    #[inline]
69942    pub fn builder<'a>() -> PhysicalDeviceExtendedSparseAddressSpacePropertiesNVBuilder<
69943        'a,
69944    > {
69945        PhysicalDeviceExtendedSparseAddressSpacePropertiesNVBuilder {
69946            inner: PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {
69947                s_type: StructureType::from_raw(1000492001i32),
69948                ..Default::default()
69949            },
69950            _marker: core::marker::PhantomData,
69951        }
69952    }
69953}
69954impl<'a> PhysicalDeviceExtendedSparseAddressSpacePropertiesNVBuilder<'a> {
69955    #[inline]
69956    pub fn extended_sparse_address_space_size(mut self, value: u64) -> Self {
69957        self.inner.extended_sparse_address_space_size = value;
69958        self
69959    }
69960    #[inline]
69961    pub fn extended_sparse_image_usage_flags(mut self, value: ImageUsageFlags) -> Self {
69962        self.inner.extended_sparse_image_usage_flags = value;
69963        self
69964    }
69965    #[inline]
69966    pub fn extended_sparse_buffer_usage_flags(
69967        mut self,
69968        value: BufferUsageFlags,
69969    ) -> Self {
69970        self.inner.extended_sparse_buffer_usage_flags = value;
69971        self
69972    }
69973}
69974impl<'a> core::ops::Deref
69975for PhysicalDeviceExtendedSparseAddressSpacePropertiesNVBuilder<'a> {
69976    type Target = PhysicalDeviceExtendedSparseAddressSpacePropertiesNV;
69977    #[inline]
69978    fn deref(&self) -> &Self::Target {
69979        &self.inner
69980    }
69981}
69982impl<'a> core::ops::DerefMut
69983for PhysicalDeviceExtendedSparseAddressSpacePropertiesNVBuilder<'a> {
69984    #[inline]
69985    fn deref_mut(&mut self) -> &mut Self::Target {
69986        &mut self.inner
69987    }
69988}
69989///Builder for [`DirectDriverLoadingInfoLUNARG`] with lifetime-tied pNext safety.
69990pub struct DirectDriverLoadingInfoLUNARGBuilder<'a> {
69991    inner: DirectDriverLoadingInfoLUNARG,
69992    _marker: core::marker::PhantomData<&'a ()>,
69993}
69994impl DirectDriverLoadingInfoLUNARG {
69995    /// Start building this struct; `s_type` is already set to the correct variant.
69996    #[inline]
69997    pub fn builder<'a>() -> DirectDriverLoadingInfoLUNARGBuilder<'a> {
69998        DirectDriverLoadingInfoLUNARGBuilder {
69999            inner: DirectDriverLoadingInfoLUNARG {
70000                s_type: StructureType::from_raw(1000459000i32),
70001                ..Default::default()
70002            },
70003            _marker: core::marker::PhantomData,
70004        }
70005    }
70006}
70007impl<'a> DirectDriverLoadingInfoLUNARGBuilder<'a> {
70008    #[inline]
70009    pub fn flags(mut self, value: DirectDriverLoadingFlagsLUNARG) -> Self {
70010        self.inner.flags = value;
70011        self
70012    }
70013    #[inline]
70014    pub fn pfn_get_instance_proc_addr(
70015        mut self,
70016        value: PFN_vkGetInstanceProcAddrLUNARG,
70017    ) -> Self {
70018        self.inner.pfn_get_instance_proc_addr = value;
70019        self
70020    }
70021    ///Prepend a struct to the pNext chain. See [`DirectDriverLoadingInfoLUNARG`]'s **Extended By** section for valid types.
70022    #[inline]
70023    pub fn push_next<T: ExtendsDirectDriverLoadingInfoLUNARG>(
70024        mut self,
70025        next: &'a mut T,
70026    ) -> Self {
70027        unsafe {
70028            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
70029            (*next_ptr).p_next = self.inner.p_next as *mut _;
70030            self.inner.p_next = <*mut BaseOutStructure>::cast::<
70031                core::ffi::c_void,
70032            >(next_ptr);
70033        }
70034        self
70035    }
70036}
70037impl<'a> core::ops::Deref for DirectDriverLoadingInfoLUNARGBuilder<'a> {
70038    type Target = DirectDriverLoadingInfoLUNARG;
70039    #[inline]
70040    fn deref(&self) -> &Self::Target {
70041        &self.inner
70042    }
70043}
70044impl<'a> core::ops::DerefMut for DirectDriverLoadingInfoLUNARGBuilder<'a> {
70045    #[inline]
70046    fn deref_mut(&mut self) -> &mut Self::Target {
70047        &mut self.inner
70048    }
70049}
70050///Builder for [`DirectDriverLoadingListLUNARG`] with lifetime-tied pNext safety.
70051pub struct DirectDriverLoadingListLUNARGBuilder<'a> {
70052    inner: DirectDriverLoadingListLUNARG,
70053    _marker: core::marker::PhantomData<&'a ()>,
70054}
70055impl DirectDriverLoadingListLUNARG {
70056    /// Start building this struct; `s_type` is already set to the correct variant.
70057    #[inline]
70058    pub fn builder<'a>() -> DirectDriverLoadingListLUNARGBuilder<'a> {
70059        DirectDriverLoadingListLUNARGBuilder {
70060            inner: DirectDriverLoadingListLUNARG {
70061                s_type: StructureType::from_raw(1000459001i32),
70062                ..Default::default()
70063            },
70064            _marker: core::marker::PhantomData,
70065        }
70066    }
70067}
70068impl<'a> DirectDriverLoadingListLUNARGBuilder<'a> {
70069    #[inline]
70070    pub fn mode(mut self, value: DirectDriverLoadingModeLUNARG) -> Self {
70071        self.inner.mode = value;
70072        self
70073    }
70074    #[inline]
70075    pub fn drivers(mut self, slice: &'a [DirectDriverLoadingInfoLUNARG]) -> Self {
70076        self.inner.driver_count = slice.len() as u32;
70077        self.inner.p_drivers = slice.as_ptr();
70078        self
70079    }
70080    ///Prepend a struct to the pNext chain. See [`DirectDriverLoadingListLUNARG`]'s **Extended By** section for valid types.
70081    #[inline]
70082    pub fn push_next<T: ExtendsDirectDriverLoadingListLUNARG>(
70083        mut self,
70084        next: &'a mut T,
70085    ) -> Self {
70086        unsafe {
70087            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
70088            (*next_ptr).p_next = self.inner.p_next as *mut _;
70089            self.inner.p_next = <*mut BaseOutStructure>::cast::<
70090                core::ffi::c_void,
70091            >(next_ptr) as *const _;
70092        }
70093        self
70094    }
70095}
70096impl<'a> core::ops::Deref for DirectDriverLoadingListLUNARGBuilder<'a> {
70097    type Target = DirectDriverLoadingListLUNARG;
70098    #[inline]
70099    fn deref(&self) -> &Self::Target {
70100        &self.inner
70101    }
70102}
70103impl<'a> core::ops::DerefMut for DirectDriverLoadingListLUNARGBuilder<'a> {
70104    #[inline]
70105    fn deref_mut(&mut self) -> &mut Self::Target {
70106        &mut self.inner
70107    }
70108}
70109///Builder for [`PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM`] with lifetime-tied pNext safety.
70110pub struct PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOMBuilder<'a> {
70111    inner: PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM,
70112    _marker: core::marker::PhantomData<&'a ()>,
70113}
70114impl PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
70115    /// Start building this struct; `s_type` is already set to the correct variant.
70116    #[inline]
70117    pub fn builder<'a>() -> PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOMBuilder<
70118        'a,
70119    > {
70120        PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOMBuilder {
70121            inner: PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
70122                s_type: StructureType::from_raw(1000488000i32),
70123                ..Default::default()
70124            },
70125            _marker: core::marker::PhantomData,
70126        }
70127    }
70128}
70129impl<'a> PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOMBuilder<'a> {
70130    #[inline]
70131    pub fn multiview_per_view_viewports(mut self, value: bool) -> Self {
70132        self.inner.multiview_per_view_viewports = value as u32;
70133        self
70134    }
70135    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM`]'s **Extended By** section for valid types.
70136    #[inline]
70137    pub fn push_next<T: ExtendsPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM>(
70138        mut self,
70139        next: &'a mut T,
70140    ) -> Self {
70141        unsafe {
70142            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
70143            (*next_ptr).p_next = self.inner.p_next as *mut _;
70144            self.inner.p_next = <*mut BaseOutStructure>::cast::<
70145                core::ffi::c_void,
70146            >(next_ptr);
70147        }
70148        self
70149    }
70150}
70151impl<'a> core::ops::Deref
70152for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOMBuilder<'a> {
70153    type Target = PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM;
70154    #[inline]
70155    fn deref(&self) -> &Self::Target {
70156        &self.inner
70157    }
70158}
70159impl<'a> core::ops::DerefMut
70160for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOMBuilder<'a> {
70161    #[inline]
70162    fn deref_mut(&mut self) -> &mut Self::Target {
70163        &mut self.inner
70164    }
70165}
70166///Builder for [`PhysicalDeviceRayTracingPositionFetchFeaturesKHR`] with lifetime-tied pNext safety.
70167pub struct PhysicalDeviceRayTracingPositionFetchFeaturesKHRBuilder<'a> {
70168    inner: PhysicalDeviceRayTracingPositionFetchFeaturesKHR,
70169    _marker: core::marker::PhantomData<&'a ()>,
70170}
70171impl PhysicalDeviceRayTracingPositionFetchFeaturesKHR {
70172    /// Start building this struct; `s_type` is already set to the correct variant.
70173    #[inline]
70174    pub fn builder<'a>() -> PhysicalDeviceRayTracingPositionFetchFeaturesKHRBuilder<'a> {
70175        PhysicalDeviceRayTracingPositionFetchFeaturesKHRBuilder {
70176            inner: PhysicalDeviceRayTracingPositionFetchFeaturesKHR {
70177                s_type: StructureType::from_raw(1000481000i32),
70178                ..Default::default()
70179            },
70180            _marker: core::marker::PhantomData,
70181        }
70182    }
70183}
70184impl<'a> PhysicalDeviceRayTracingPositionFetchFeaturesKHRBuilder<'a> {
70185    #[inline]
70186    pub fn ray_tracing_position_fetch(mut self, value: bool) -> Self {
70187        self.inner.ray_tracing_position_fetch = value as u32;
70188        self
70189    }
70190    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceRayTracingPositionFetchFeaturesKHR`]'s **Extended By** section for valid types.
70191    #[inline]
70192    pub fn push_next<T: ExtendsPhysicalDeviceRayTracingPositionFetchFeaturesKHR>(
70193        mut self,
70194        next: &'a mut T,
70195    ) -> Self {
70196        unsafe {
70197            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
70198            (*next_ptr).p_next = self.inner.p_next as *mut _;
70199            self.inner.p_next = <*mut BaseOutStructure>::cast::<
70200                core::ffi::c_void,
70201            >(next_ptr);
70202        }
70203        self
70204    }
70205}
70206impl<'a> core::ops::Deref
70207for PhysicalDeviceRayTracingPositionFetchFeaturesKHRBuilder<'a> {
70208    type Target = PhysicalDeviceRayTracingPositionFetchFeaturesKHR;
70209    #[inline]
70210    fn deref(&self) -> &Self::Target {
70211        &self.inner
70212    }
70213}
70214impl<'a> core::ops::DerefMut
70215for PhysicalDeviceRayTracingPositionFetchFeaturesKHRBuilder<'a> {
70216    #[inline]
70217    fn deref_mut(&mut self) -> &mut Self::Target {
70218        &mut self.inner
70219    }
70220}
70221///Builder for [`DeviceImageSubresourceInfo`] with lifetime-tied pNext safety.
70222pub struct DeviceImageSubresourceInfoBuilder<'a> {
70223    inner: DeviceImageSubresourceInfo,
70224    _marker: core::marker::PhantomData<&'a ()>,
70225}
70226impl DeviceImageSubresourceInfo {
70227    /// Start building this struct; `s_type` is already set to the correct variant.
70228    #[inline]
70229    pub fn builder<'a>() -> DeviceImageSubresourceInfoBuilder<'a> {
70230        DeviceImageSubresourceInfoBuilder {
70231            inner: DeviceImageSubresourceInfo {
70232                s_type: StructureType::from_raw(1000470004i32),
70233                ..Default::default()
70234            },
70235            _marker: core::marker::PhantomData,
70236        }
70237    }
70238}
70239impl<'a> DeviceImageSubresourceInfoBuilder<'a> {
70240    #[inline]
70241    pub fn create_info(mut self, value: &'a ImageCreateInfo) -> Self {
70242        self.inner.p_create_info = value;
70243        self
70244    }
70245    #[inline]
70246    pub fn subresource(mut self, value: &'a ImageSubresource2) -> Self {
70247        self.inner.p_subresource = value;
70248        self
70249    }
70250    ///Prepend a struct to the pNext chain. See [`DeviceImageSubresourceInfo`]'s **Extended By** section for valid types.
70251    #[inline]
70252    pub fn push_next<T: ExtendsDeviceImageSubresourceInfo>(
70253        mut self,
70254        next: &'a mut T,
70255    ) -> Self {
70256        unsafe {
70257            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
70258            (*next_ptr).p_next = self.inner.p_next as *mut _;
70259            self.inner.p_next = <*mut BaseOutStructure>::cast::<
70260                core::ffi::c_void,
70261            >(next_ptr) as *const _;
70262        }
70263        self
70264    }
70265}
70266impl<'a> core::ops::Deref for DeviceImageSubresourceInfoBuilder<'a> {
70267    type Target = DeviceImageSubresourceInfo;
70268    #[inline]
70269    fn deref(&self) -> &Self::Target {
70270        &self.inner
70271    }
70272}
70273impl<'a> core::ops::DerefMut for DeviceImageSubresourceInfoBuilder<'a> {
70274    #[inline]
70275    fn deref_mut(&mut self) -> &mut Self::Target {
70276        &mut self.inner
70277    }
70278}
70279///Builder for [`PhysicalDeviceShaderCorePropertiesARM`] with lifetime-tied pNext safety.
70280pub struct PhysicalDeviceShaderCorePropertiesARMBuilder<'a> {
70281    inner: PhysicalDeviceShaderCorePropertiesARM,
70282    _marker: core::marker::PhantomData<&'a ()>,
70283}
70284impl PhysicalDeviceShaderCorePropertiesARM {
70285    /// Start building this struct; `s_type` is already set to the correct variant.
70286    #[inline]
70287    pub fn builder<'a>() -> PhysicalDeviceShaderCorePropertiesARMBuilder<'a> {
70288        PhysicalDeviceShaderCorePropertiesARMBuilder {
70289            inner: PhysicalDeviceShaderCorePropertiesARM {
70290                s_type: StructureType::from_raw(1000415000i32),
70291                ..Default::default()
70292            },
70293            _marker: core::marker::PhantomData,
70294        }
70295    }
70296}
70297impl<'a> PhysicalDeviceShaderCorePropertiesARMBuilder<'a> {
70298    #[inline]
70299    pub fn pixel_rate(mut self, value: u32) -> Self {
70300        self.inner.pixel_rate = value;
70301        self
70302    }
70303    #[inline]
70304    pub fn texel_rate(mut self, value: u32) -> Self {
70305        self.inner.texel_rate = value;
70306        self
70307    }
70308    #[inline]
70309    pub fn fma_rate(mut self, value: u32) -> Self {
70310        self.inner.fma_rate = value;
70311        self
70312    }
70313}
70314impl<'a> core::ops::Deref for PhysicalDeviceShaderCorePropertiesARMBuilder<'a> {
70315    type Target = PhysicalDeviceShaderCorePropertiesARM;
70316    #[inline]
70317    fn deref(&self) -> &Self::Target {
70318        &self.inner
70319    }
70320}
70321impl<'a> core::ops::DerefMut for PhysicalDeviceShaderCorePropertiesARMBuilder<'a> {
70322    #[inline]
70323    fn deref_mut(&mut self) -> &mut Self::Target {
70324        &mut self.inner
70325    }
70326}
70327///Builder for [`PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM`] with lifetime-tied pNext safety.
70328pub struct PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOMBuilder<'a> {
70329    inner: PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM,
70330    _marker: core::marker::PhantomData<&'a ()>,
70331}
70332impl PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
70333    /// Start building this struct; `s_type` is already set to the correct variant.
70334    #[inline]
70335    pub fn builder<'a>() -> PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOMBuilder<
70336        'a,
70337    > {
70338        PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOMBuilder {
70339            inner: PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
70340                s_type: StructureType::from_raw(1000510000i32),
70341                ..Default::default()
70342            },
70343            _marker: core::marker::PhantomData,
70344        }
70345    }
70346}
70347impl<'a> PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOMBuilder<'a> {
70348    #[inline]
70349    pub fn multiview_per_view_render_areas(mut self, value: bool) -> Self {
70350        self.inner.multiview_per_view_render_areas = value as u32;
70351        self
70352    }
70353    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM`]'s **Extended By** section for valid types.
70354    #[inline]
70355    pub fn push_next<T: ExtendsPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM>(
70356        mut self,
70357        next: &'a mut T,
70358    ) -> Self {
70359        unsafe {
70360            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
70361            (*next_ptr).p_next = self.inner.p_next as *mut _;
70362            self.inner.p_next = <*mut BaseOutStructure>::cast::<
70363                core::ffi::c_void,
70364            >(next_ptr);
70365        }
70366        self
70367    }
70368}
70369impl<'a> core::ops::Deref
70370for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOMBuilder<'a> {
70371    type Target = PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM;
70372    #[inline]
70373    fn deref(&self) -> &Self::Target {
70374        &self.inner
70375    }
70376}
70377impl<'a> core::ops::DerefMut
70378for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOMBuilder<'a> {
70379    #[inline]
70380    fn deref_mut(&mut self) -> &mut Self::Target {
70381        &mut self.inner
70382    }
70383}
70384///Builder for [`MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM`] with lifetime-tied pNext safety.
70385pub struct MultiviewPerViewRenderAreasRenderPassBeginInfoQCOMBuilder<'a> {
70386    inner: MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM,
70387    _marker: core::marker::PhantomData<&'a ()>,
70388}
70389impl MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {
70390    /// Start building this struct; `s_type` is already set to the correct variant.
70391    #[inline]
70392    pub fn builder<'a>() -> MultiviewPerViewRenderAreasRenderPassBeginInfoQCOMBuilder<
70393        'a,
70394    > {
70395        MultiviewPerViewRenderAreasRenderPassBeginInfoQCOMBuilder {
70396            inner: MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {
70397                s_type: StructureType::from_raw(1000510001i32),
70398                ..Default::default()
70399            },
70400            _marker: core::marker::PhantomData,
70401        }
70402    }
70403}
70404impl<'a> MultiviewPerViewRenderAreasRenderPassBeginInfoQCOMBuilder<'a> {
70405    #[inline]
70406    pub fn per_view_render_areas(mut self, slice: &'a [Rect2D]) -> Self {
70407        self.inner.per_view_render_area_count = slice.len() as u32;
70408        self.inner.p_per_view_render_areas = slice.as_ptr();
70409        self
70410    }
70411    ///Prepend a struct to the pNext chain. See [`MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM`]'s **Extended By** section for valid types.
70412    #[inline]
70413    pub fn push_next<T: ExtendsMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM>(
70414        mut self,
70415        next: &'a mut T,
70416    ) -> Self {
70417        unsafe {
70418            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
70419            (*next_ptr).p_next = self.inner.p_next as *mut _;
70420            self.inner.p_next = <*mut BaseOutStructure>::cast::<
70421                core::ffi::c_void,
70422            >(next_ptr) as *const _;
70423        }
70424        self
70425    }
70426}
70427impl<'a> core::ops::Deref
70428for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOMBuilder<'a> {
70429    type Target = MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM;
70430    #[inline]
70431    fn deref(&self) -> &Self::Target {
70432        &self.inner
70433    }
70434}
70435impl<'a> core::ops::DerefMut
70436for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOMBuilder<'a> {
70437    #[inline]
70438    fn deref_mut(&mut self) -> &mut Self::Target {
70439        &mut self.inner
70440    }
70441}
70442///Builder for [`QueryLowLatencySupportNV`] with lifetime-tied pNext safety.
70443pub struct QueryLowLatencySupportNVBuilder<'a> {
70444    inner: QueryLowLatencySupportNV,
70445    _marker: core::marker::PhantomData<&'a ()>,
70446}
70447impl QueryLowLatencySupportNV {
70448    /// Start building this struct; `s_type` is already set to the correct variant.
70449    #[inline]
70450    pub fn builder<'a>() -> QueryLowLatencySupportNVBuilder<'a> {
70451        QueryLowLatencySupportNVBuilder {
70452            inner: QueryLowLatencySupportNV {
70453                s_type: StructureType::from_raw(1000310000i32),
70454                ..Default::default()
70455            },
70456            _marker: core::marker::PhantomData,
70457        }
70458    }
70459}
70460impl<'a> QueryLowLatencySupportNVBuilder<'a> {
70461    #[inline]
70462    pub fn queried_low_latency_data(mut self, value: *mut core::ffi::c_void) -> Self {
70463        self.inner.p_queried_low_latency_data = value;
70464        self
70465    }
70466    ///Prepend a struct to the pNext chain. See [`QueryLowLatencySupportNV`]'s **Extended By** section for valid types.
70467    #[inline]
70468    pub fn push_next<T: ExtendsQueryLowLatencySupportNV>(
70469        mut self,
70470        next: &'a mut T,
70471    ) -> Self {
70472        unsafe {
70473            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
70474            (*next_ptr).p_next = self.inner.p_next as *mut _;
70475            self.inner.p_next = <*mut BaseOutStructure>::cast::<
70476                core::ffi::c_void,
70477            >(next_ptr) as *const _;
70478        }
70479        self
70480    }
70481}
70482impl<'a> core::ops::Deref for QueryLowLatencySupportNVBuilder<'a> {
70483    type Target = QueryLowLatencySupportNV;
70484    #[inline]
70485    fn deref(&self) -> &Self::Target {
70486        &self.inner
70487    }
70488}
70489impl<'a> core::ops::DerefMut for QueryLowLatencySupportNVBuilder<'a> {
70490    #[inline]
70491    fn deref_mut(&mut self) -> &mut Self::Target {
70492        &mut self.inner
70493    }
70494}
70495///Builder for [`MemoryMapInfo`] with lifetime-tied pNext safety.
70496pub struct MemoryMapInfoBuilder<'a> {
70497    inner: MemoryMapInfo,
70498    _marker: core::marker::PhantomData<&'a ()>,
70499}
70500impl MemoryMapInfo {
70501    /// Start building this struct; `s_type` is already set to the correct variant.
70502    #[inline]
70503    pub fn builder<'a>() -> MemoryMapInfoBuilder<'a> {
70504        MemoryMapInfoBuilder {
70505            inner: MemoryMapInfo {
70506                s_type: StructureType::from_raw(1000271000i32),
70507                ..Default::default()
70508            },
70509            _marker: core::marker::PhantomData,
70510        }
70511    }
70512}
70513impl<'a> MemoryMapInfoBuilder<'a> {
70514    #[inline]
70515    pub fn flags(mut self, value: MemoryMapFlags) -> Self {
70516        self.inner.flags = value;
70517        self
70518    }
70519    #[inline]
70520    pub fn memory(mut self, value: DeviceMemory) -> Self {
70521        self.inner.memory = value;
70522        self
70523    }
70524    #[inline]
70525    pub fn offset(mut self, value: u64) -> Self {
70526        self.inner.offset = value;
70527        self
70528    }
70529    #[inline]
70530    pub fn size(mut self, value: u64) -> Self {
70531        self.inner.size = value;
70532        self
70533    }
70534    ///Prepend a struct to the pNext chain. See [`MemoryMapInfo`]'s **Extended By** section for valid types.
70535    #[inline]
70536    pub fn push_next<T: ExtendsMemoryMapInfo>(mut self, next: &'a mut T) -> Self {
70537        unsafe {
70538            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
70539            (*next_ptr).p_next = self.inner.p_next as *mut _;
70540            self.inner.p_next = <*mut BaseOutStructure>::cast::<
70541                core::ffi::c_void,
70542            >(next_ptr) as *const _;
70543        }
70544        self
70545    }
70546}
70547impl<'a> core::ops::Deref for MemoryMapInfoBuilder<'a> {
70548    type Target = MemoryMapInfo;
70549    #[inline]
70550    fn deref(&self) -> &Self::Target {
70551        &self.inner
70552    }
70553}
70554impl<'a> core::ops::DerefMut for MemoryMapInfoBuilder<'a> {
70555    #[inline]
70556    fn deref_mut(&mut self) -> &mut Self::Target {
70557        &mut self.inner
70558    }
70559}
70560///Builder for [`MemoryUnmapInfo`] with lifetime-tied pNext safety.
70561pub struct MemoryUnmapInfoBuilder<'a> {
70562    inner: MemoryUnmapInfo,
70563    _marker: core::marker::PhantomData<&'a ()>,
70564}
70565impl MemoryUnmapInfo {
70566    /// Start building this struct; `s_type` is already set to the correct variant.
70567    #[inline]
70568    pub fn builder<'a>() -> MemoryUnmapInfoBuilder<'a> {
70569        MemoryUnmapInfoBuilder {
70570            inner: MemoryUnmapInfo {
70571                s_type: StructureType::from_raw(1000271001i32),
70572                ..Default::default()
70573            },
70574            _marker: core::marker::PhantomData,
70575        }
70576    }
70577}
70578impl<'a> MemoryUnmapInfoBuilder<'a> {
70579    #[inline]
70580    pub fn flags(mut self, value: MemoryUnmapFlags) -> Self {
70581        self.inner.flags = value;
70582        self
70583    }
70584    #[inline]
70585    pub fn memory(mut self, value: DeviceMemory) -> Self {
70586        self.inner.memory = value;
70587        self
70588    }
70589    ///Prepend a struct to the pNext chain. See [`MemoryUnmapInfo`]'s **Extended By** section for valid types.
70590    #[inline]
70591    pub fn push_next<T: ExtendsMemoryUnmapInfo>(mut self, next: &'a mut T) -> Self {
70592        unsafe {
70593            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
70594            (*next_ptr).p_next = self.inner.p_next as *mut _;
70595            self.inner.p_next = <*mut BaseOutStructure>::cast::<
70596                core::ffi::c_void,
70597            >(next_ptr) as *const _;
70598        }
70599        self
70600    }
70601}
70602impl<'a> core::ops::Deref for MemoryUnmapInfoBuilder<'a> {
70603    type Target = MemoryUnmapInfo;
70604    #[inline]
70605    fn deref(&self) -> &Self::Target {
70606        &self.inner
70607    }
70608}
70609impl<'a> core::ops::DerefMut for MemoryUnmapInfoBuilder<'a> {
70610    #[inline]
70611    fn deref_mut(&mut self) -> &mut Self::Target {
70612        &mut self.inner
70613    }
70614}
70615///Builder for [`PhysicalDeviceShaderObjectFeaturesEXT`] with lifetime-tied pNext safety.
70616pub struct PhysicalDeviceShaderObjectFeaturesEXTBuilder<'a> {
70617    inner: PhysicalDeviceShaderObjectFeaturesEXT,
70618    _marker: core::marker::PhantomData<&'a ()>,
70619}
70620impl PhysicalDeviceShaderObjectFeaturesEXT {
70621    /// Start building this struct; `s_type` is already set to the correct variant.
70622    #[inline]
70623    pub fn builder<'a>() -> PhysicalDeviceShaderObjectFeaturesEXTBuilder<'a> {
70624        PhysicalDeviceShaderObjectFeaturesEXTBuilder {
70625            inner: PhysicalDeviceShaderObjectFeaturesEXT {
70626                s_type: StructureType::from_raw(1000482000i32),
70627                ..Default::default()
70628            },
70629            _marker: core::marker::PhantomData,
70630        }
70631    }
70632}
70633impl<'a> PhysicalDeviceShaderObjectFeaturesEXTBuilder<'a> {
70634    #[inline]
70635    pub fn shader_object(mut self, value: bool) -> Self {
70636        self.inner.shader_object = value as u32;
70637        self
70638    }
70639    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderObjectFeaturesEXT`]'s **Extended By** section for valid types.
70640    #[inline]
70641    pub fn push_next<T: ExtendsPhysicalDeviceShaderObjectFeaturesEXT>(
70642        mut self,
70643        next: &'a mut T,
70644    ) -> Self {
70645        unsafe {
70646            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
70647            (*next_ptr).p_next = self.inner.p_next as *mut _;
70648            self.inner.p_next = <*mut BaseOutStructure>::cast::<
70649                core::ffi::c_void,
70650            >(next_ptr);
70651        }
70652        self
70653    }
70654}
70655impl<'a> core::ops::Deref for PhysicalDeviceShaderObjectFeaturesEXTBuilder<'a> {
70656    type Target = PhysicalDeviceShaderObjectFeaturesEXT;
70657    #[inline]
70658    fn deref(&self) -> &Self::Target {
70659        &self.inner
70660    }
70661}
70662impl<'a> core::ops::DerefMut for PhysicalDeviceShaderObjectFeaturesEXTBuilder<'a> {
70663    #[inline]
70664    fn deref_mut(&mut self) -> &mut Self::Target {
70665        &mut self.inner
70666    }
70667}
70668///Builder for [`PhysicalDeviceShaderObjectPropertiesEXT`] with lifetime-tied pNext safety.
70669pub struct PhysicalDeviceShaderObjectPropertiesEXTBuilder<'a> {
70670    inner: PhysicalDeviceShaderObjectPropertiesEXT,
70671    _marker: core::marker::PhantomData<&'a ()>,
70672}
70673impl PhysicalDeviceShaderObjectPropertiesEXT {
70674    /// Start building this struct; `s_type` is already set to the correct variant.
70675    #[inline]
70676    pub fn builder<'a>() -> PhysicalDeviceShaderObjectPropertiesEXTBuilder<'a> {
70677        PhysicalDeviceShaderObjectPropertiesEXTBuilder {
70678            inner: PhysicalDeviceShaderObjectPropertiesEXT {
70679                s_type: StructureType::from_raw(1000482001i32),
70680                ..Default::default()
70681            },
70682            _marker: core::marker::PhantomData,
70683        }
70684    }
70685}
70686impl<'a> PhysicalDeviceShaderObjectPropertiesEXTBuilder<'a> {
70687    #[inline]
70688    pub fn shader_binary_uuid(mut self, value: [u8; UUID_SIZE as usize]) -> Self {
70689        self.inner.shader_binary_uuid = value;
70690        self
70691    }
70692    #[inline]
70693    pub fn shader_binary_version(mut self, value: u32) -> Self {
70694        self.inner.shader_binary_version = value;
70695        self
70696    }
70697}
70698impl<'a> core::ops::Deref for PhysicalDeviceShaderObjectPropertiesEXTBuilder<'a> {
70699    type Target = PhysicalDeviceShaderObjectPropertiesEXT;
70700    #[inline]
70701    fn deref(&self) -> &Self::Target {
70702        &self.inner
70703    }
70704}
70705impl<'a> core::ops::DerefMut for PhysicalDeviceShaderObjectPropertiesEXTBuilder<'a> {
70706    #[inline]
70707    fn deref_mut(&mut self) -> &mut Self::Target {
70708        &mut self.inner
70709    }
70710}
70711///Builder for [`ShaderCreateInfoEXT`] with lifetime-tied pNext safety.
70712pub struct ShaderCreateInfoEXTBuilder<'a> {
70713    inner: ShaderCreateInfoEXT,
70714    _marker: core::marker::PhantomData<&'a ()>,
70715}
70716impl ShaderCreateInfoEXT {
70717    /// Start building this struct; `s_type` is already set to the correct variant.
70718    #[inline]
70719    pub fn builder<'a>() -> ShaderCreateInfoEXTBuilder<'a> {
70720        ShaderCreateInfoEXTBuilder {
70721            inner: ShaderCreateInfoEXT {
70722                s_type: StructureType::from_raw(1000482002i32),
70723                ..Default::default()
70724            },
70725            _marker: core::marker::PhantomData,
70726        }
70727    }
70728}
70729impl<'a> ShaderCreateInfoEXTBuilder<'a> {
70730    #[inline]
70731    pub fn flags(mut self, value: ShaderCreateFlagsEXT) -> Self {
70732        self.inner.flags = value;
70733        self
70734    }
70735    #[inline]
70736    pub fn stage(mut self, value: ShaderStageFlagBits) -> Self {
70737        self.inner.stage = value;
70738        self
70739    }
70740    #[inline]
70741    pub fn next_stage(mut self, value: ShaderStageFlags) -> Self {
70742        self.inner.next_stage = value;
70743        self
70744    }
70745    #[inline]
70746    pub fn code_type(mut self, value: ShaderCodeTypeEXT) -> Self {
70747        self.inner.code_type = value;
70748        self
70749    }
70750    #[inline]
70751    pub fn code(mut self, slice: &'a [core::ffi::c_void]) -> Self {
70752        self.inner.code_size = slice.len();
70753        self.inner.p_code = slice.as_ptr();
70754        self
70755    }
70756    #[inline]
70757    pub fn name(mut self, value: &'a core::ffi::CStr) -> Self {
70758        self.inner.p_name = value.as_ptr();
70759        self
70760    }
70761    #[inline]
70762    pub fn set_layout_count(mut self, value: u32) -> Self {
70763        self.inner.set_layout_count = value;
70764        self
70765    }
70766    #[inline]
70767    pub fn set_layouts(mut self, slice: &'a [DescriptorSetLayout]) -> Self {
70768        self.inner.set_layout_count = slice.len() as u32;
70769        self.inner.p_set_layouts = slice.as_ptr();
70770        self
70771    }
70772    #[inline]
70773    pub fn push_constant_range_count(mut self, value: u32) -> Self {
70774        self.inner.push_constant_range_count = value;
70775        self
70776    }
70777    #[inline]
70778    pub fn push_constant_ranges(mut self, slice: &'a [PushConstantRange]) -> Self {
70779        self.inner.push_constant_range_count = slice.len() as u32;
70780        self.inner.p_push_constant_ranges = slice.as_ptr();
70781        self
70782    }
70783    #[inline]
70784    pub fn specialization_info(mut self, value: &'a SpecializationInfo) -> Self {
70785        self.inner.p_specialization_info = value;
70786        self
70787    }
70788    ///Prepend a struct to the pNext chain. See [`ShaderCreateInfoEXT`]'s **Extended By** section for valid types.
70789    #[inline]
70790    pub fn push_next<T: ExtendsShaderCreateInfoEXT>(mut self, next: &'a mut T) -> Self {
70791        unsafe {
70792            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
70793            (*next_ptr).p_next = self.inner.p_next as *mut _;
70794            self.inner.p_next = <*mut BaseOutStructure>::cast::<
70795                core::ffi::c_void,
70796            >(next_ptr) as *const _;
70797        }
70798        self
70799    }
70800}
70801impl<'a> core::ops::Deref for ShaderCreateInfoEXTBuilder<'a> {
70802    type Target = ShaderCreateInfoEXT;
70803    #[inline]
70804    fn deref(&self) -> &Self::Target {
70805        &self.inner
70806    }
70807}
70808impl<'a> core::ops::DerefMut for ShaderCreateInfoEXTBuilder<'a> {
70809    #[inline]
70810    fn deref_mut(&mut self) -> &mut Self::Target {
70811        &mut self.inner
70812    }
70813}
70814///Builder for [`PhysicalDeviceShaderTileImageFeaturesEXT`] with lifetime-tied pNext safety.
70815pub struct PhysicalDeviceShaderTileImageFeaturesEXTBuilder<'a> {
70816    inner: PhysicalDeviceShaderTileImageFeaturesEXT,
70817    _marker: core::marker::PhantomData<&'a ()>,
70818}
70819impl PhysicalDeviceShaderTileImageFeaturesEXT {
70820    /// Start building this struct; `s_type` is already set to the correct variant.
70821    #[inline]
70822    pub fn builder<'a>() -> PhysicalDeviceShaderTileImageFeaturesEXTBuilder<'a> {
70823        PhysicalDeviceShaderTileImageFeaturesEXTBuilder {
70824            inner: PhysicalDeviceShaderTileImageFeaturesEXT {
70825                s_type: StructureType::from_raw(1000395000i32),
70826                ..Default::default()
70827            },
70828            _marker: core::marker::PhantomData,
70829        }
70830    }
70831}
70832impl<'a> PhysicalDeviceShaderTileImageFeaturesEXTBuilder<'a> {
70833    #[inline]
70834    pub fn shader_tile_image_color_read_access(mut self, value: bool) -> Self {
70835        self.inner.shader_tile_image_color_read_access = value as u32;
70836        self
70837    }
70838    #[inline]
70839    pub fn shader_tile_image_depth_read_access(mut self, value: bool) -> Self {
70840        self.inner.shader_tile_image_depth_read_access = value as u32;
70841        self
70842    }
70843    #[inline]
70844    pub fn shader_tile_image_stencil_read_access(mut self, value: bool) -> Self {
70845        self.inner.shader_tile_image_stencil_read_access = value as u32;
70846        self
70847    }
70848    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderTileImageFeaturesEXT`]'s **Extended By** section for valid types.
70849    #[inline]
70850    pub fn push_next<T: ExtendsPhysicalDeviceShaderTileImageFeaturesEXT>(
70851        mut self,
70852        next: &'a mut T,
70853    ) -> Self {
70854        unsafe {
70855            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
70856            (*next_ptr).p_next = self.inner.p_next as *mut _;
70857            self.inner.p_next = <*mut BaseOutStructure>::cast::<
70858                core::ffi::c_void,
70859            >(next_ptr);
70860        }
70861        self
70862    }
70863}
70864impl<'a> core::ops::Deref for PhysicalDeviceShaderTileImageFeaturesEXTBuilder<'a> {
70865    type Target = PhysicalDeviceShaderTileImageFeaturesEXT;
70866    #[inline]
70867    fn deref(&self) -> &Self::Target {
70868        &self.inner
70869    }
70870}
70871impl<'a> core::ops::DerefMut for PhysicalDeviceShaderTileImageFeaturesEXTBuilder<'a> {
70872    #[inline]
70873    fn deref_mut(&mut self) -> &mut Self::Target {
70874        &mut self.inner
70875    }
70876}
70877///Builder for [`PhysicalDeviceShaderTileImagePropertiesEXT`] with lifetime-tied pNext safety.
70878pub struct PhysicalDeviceShaderTileImagePropertiesEXTBuilder<'a> {
70879    inner: PhysicalDeviceShaderTileImagePropertiesEXT,
70880    _marker: core::marker::PhantomData<&'a ()>,
70881}
70882impl PhysicalDeviceShaderTileImagePropertiesEXT {
70883    /// Start building this struct; `s_type` is already set to the correct variant.
70884    #[inline]
70885    pub fn builder<'a>() -> PhysicalDeviceShaderTileImagePropertiesEXTBuilder<'a> {
70886        PhysicalDeviceShaderTileImagePropertiesEXTBuilder {
70887            inner: PhysicalDeviceShaderTileImagePropertiesEXT {
70888                s_type: StructureType::from_raw(1000395001i32),
70889                ..Default::default()
70890            },
70891            _marker: core::marker::PhantomData,
70892        }
70893    }
70894}
70895impl<'a> PhysicalDeviceShaderTileImagePropertiesEXTBuilder<'a> {
70896    #[inline]
70897    pub fn shader_tile_image_coherent_read_accelerated(mut self, value: bool) -> Self {
70898        self.inner.shader_tile_image_coherent_read_accelerated = value as u32;
70899        self
70900    }
70901    #[inline]
70902    pub fn shader_tile_image_read_sample_from_pixel_rate_invocation(
70903        mut self,
70904        value: bool,
70905    ) -> Self {
70906        self.inner.shader_tile_image_read_sample_from_pixel_rate_invocation = value
70907            as u32;
70908        self
70909    }
70910    #[inline]
70911    pub fn shader_tile_image_read_from_helper_invocation(mut self, value: bool) -> Self {
70912        self.inner.shader_tile_image_read_from_helper_invocation = value as u32;
70913        self
70914    }
70915}
70916impl<'a> core::ops::Deref for PhysicalDeviceShaderTileImagePropertiesEXTBuilder<'a> {
70917    type Target = PhysicalDeviceShaderTileImagePropertiesEXT;
70918    #[inline]
70919    fn deref(&self) -> &Self::Target {
70920        &self.inner
70921    }
70922}
70923impl<'a> core::ops::DerefMut for PhysicalDeviceShaderTileImagePropertiesEXTBuilder<'a> {
70924    #[inline]
70925    fn deref_mut(&mut self) -> &mut Self::Target {
70926        &mut self.inner
70927    }
70928}
70929///Builder for [`ImportScreenBufferInfoQNX`] with lifetime-tied pNext safety.
70930pub struct ImportScreenBufferInfoQNXBuilder<'a> {
70931    inner: ImportScreenBufferInfoQNX,
70932    _marker: core::marker::PhantomData<&'a ()>,
70933}
70934impl ImportScreenBufferInfoQNX {
70935    /// Start building this struct; `s_type` is already set to the correct variant.
70936    #[inline]
70937    pub fn builder<'a>() -> ImportScreenBufferInfoQNXBuilder<'a> {
70938        ImportScreenBufferInfoQNXBuilder {
70939            inner: ImportScreenBufferInfoQNX {
70940                s_type: StructureType::from_raw(1000529002i32),
70941                ..Default::default()
70942            },
70943            _marker: core::marker::PhantomData,
70944        }
70945    }
70946}
70947impl<'a> ImportScreenBufferInfoQNXBuilder<'a> {
70948    #[inline]
70949    pub fn buffer(mut self, value: *mut core::ffi::c_void) -> Self {
70950        self.inner.buffer = value;
70951        self
70952    }
70953    ///Prepend a struct to the pNext chain. See [`ImportScreenBufferInfoQNX`]'s **Extended By** section for valid types.
70954    #[inline]
70955    pub fn push_next<T: ExtendsImportScreenBufferInfoQNX>(
70956        mut self,
70957        next: &'a mut T,
70958    ) -> Self {
70959        unsafe {
70960            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
70961            (*next_ptr).p_next = self.inner.p_next as *mut _;
70962            self.inner.p_next = <*mut BaseOutStructure>::cast::<
70963                core::ffi::c_void,
70964            >(next_ptr) as *const _;
70965        }
70966        self
70967    }
70968}
70969impl<'a> core::ops::Deref for ImportScreenBufferInfoQNXBuilder<'a> {
70970    type Target = ImportScreenBufferInfoQNX;
70971    #[inline]
70972    fn deref(&self) -> &Self::Target {
70973        &self.inner
70974    }
70975}
70976impl<'a> core::ops::DerefMut for ImportScreenBufferInfoQNXBuilder<'a> {
70977    #[inline]
70978    fn deref_mut(&mut self) -> &mut Self::Target {
70979        &mut self.inner
70980    }
70981}
70982///Builder for [`ScreenBufferPropertiesQNX`] with lifetime-tied pNext safety.
70983pub struct ScreenBufferPropertiesQNXBuilder<'a> {
70984    inner: ScreenBufferPropertiesQNX,
70985    _marker: core::marker::PhantomData<&'a ()>,
70986}
70987impl ScreenBufferPropertiesQNX {
70988    /// Start building this struct; `s_type` is already set to the correct variant.
70989    #[inline]
70990    pub fn builder<'a>() -> ScreenBufferPropertiesQNXBuilder<'a> {
70991        ScreenBufferPropertiesQNXBuilder {
70992            inner: ScreenBufferPropertiesQNX {
70993                s_type: StructureType::from_raw(1000529000i32),
70994                ..Default::default()
70995            },
70996            _marker: core::marker::PhantomData,
70997        }
70998    }
70999}
71000impl<'a> ScreenBufferPropertiesQNXBuilder<'a> {
71001    #[inline]
71002    pub fn allocation_size(mut self, value: u64) -> Self {
71003        self.inner.allocation_size = value;
71004        self
71005    }
71006    #[inline]
71007    pub fn memory_type_bits(mut self, value: u32) -> Self {
71008        self.inner.memory_type_bits = value;
71009        self
71010    }
71011}
71012impl<'a> core::ops::Deref for ScreenBufferPropertiesQNXBuilder<'a> {
71013    type Target = ScreenBufferPropertiesQNX;
71014    #[inline]
71015    fn deref(&self) -> &Self::Target {
71016        &self.inner
71017    }
71018}
71019impl<'a> core::ops::DerefMut for ScreenBufferPropertiesQNXBuilder<'a> {
71020    #[inline]
71021    fn deref_mut(&mut self) -> &mut Self::Target {
71022        &mut self.inner
71023    }
71024}
71025///Builder for [`ScreenBufferFormatPropertiesQNX`] with lifetime-tied pNext safety.
71026pub struct ScreenBufferFormatPropertiesQNXBuilder<'a> {
71027    inner: ScreenBufferFormatPropertiesQNX,
71028    _marker: core::marker::PhantomData<&'a ()>,
71029}
71030impl ScreenBufferFormatPropertiesQNX {
71031    /// Start building this struct; `s_type` is already set to the correct variant.
71032    #[inline]
71033    pub fn builder<'a>() -> ScreenBufferFormatPropertiesQNXBuilder<'a> {
71034        ScreenBufferFormatPropertiesQNXBuilder {
71035            inner: ScreenBufferFormatPropertiesQNX {
71036                s_type: StructureType::from_raw(1000529001i32),
71037                ..Default::default()
71038            },
71039            _marker: core::marker::PhantomData,
71040        }
71041    }
71042}
71043impl<'a> ScreenBufferFormatPropertiesQNXBuilder<'a> {
71044    #[inline]
71045    pub fn format(mut self, value: Format) -> Self {
71046        self.inner.format = value;
71047        self
71048    }
71049    #[inline]
71050    pub fn external_format(mut self, value: u64) -> Self {
71051        self.inner.external_format = value;
71052        self
71053    }
71054    #[inline]
71055    pub fn screen_usage(mut self, value: u64) -> Self {
71056        self.inner.screen_usage = value;
71057        self
71058    }
71059    #[inline]
71060    pub fn format_features(mut self, value: FormatFeatureFlags) -> Self {
71061        self.inner.format_features = value;
71062        self
71063    }
71064    #[inline]
71065    pub fn sampler_ycbcr_conversion_components(
71066        mut self,
71067        value: ComponentMapping,
71068    ) -> Self {
71069        self.inner.sampler_ycbcr_conversion_components = value;
71070        self
71071    }
71072    #[inline]
71073    pub fn suggested_ycbcr_model(mut self, value: SamplerYcbcrModelConversion) -> Self {
71074        self.inner.suggested_ycbcr_model = value;
71075        self
71076    }
71077    #[inline]
71078    pub fn suggested_ycbcr_range(mut self, value: SamplerYcbcrRange) -> Self {
71079        self.inner.suggested_ycbcr_range = value;
71080        self
71081    }
71082    #[inline]
71083    pub fn suggested_x_chroma_offset(mut self, value: ChromaLocation) -> Self {
71084        self.inner.suggested_x_chroma_offset = value;
71085        self
71086    }
71087    #[inline]
71088    pub fn suggested_y_chroma_offset(mut self, value: ChromaLocation) -> Self {
71089        self.inner.suggested_y_chroma_offset = value;
71090        self
71091    }
71092}
71093impl<'a> core::ops::Deref for ScreenBufferFormatPropertiesQNXBuilder<'a> {
71094    type Target = ScreenBufferFormatPropertiesQNX;
71095    #[inline]
71096    fn deref(&self) -> &Self::Target {
71097        &self.inner
71098    }
71099}
71100impl<'a> core::ops::DerefMut for ScreenBufferFormatPropertiesQNXBuilder<'a> {
71101    #[inline]
71102    fn deref_mut(&mut self) -> &mut Self::Target {
71103        &mut self.inner
71104    }
71105}
71106///Builder for [`ExternalFormatQNX`] with lifetime-tied pNext safety.
71107pub struct ExternalFormatQNXBuilder<'a> {
71108    inner: ExternalFormatQNX,
71109    _marker: core::marker::PhantomData<&'a ()>,
71110}
71111impl ExternalFormatQNX {
71112    /// Start building this struct; `s_type` is already set to the correct variant.
71113    #[inline]
71114    pub fn builder<'a>() -> ExternalFormatQNXBuilder<'a> {
71115        ExternalFormatQNXBuilder {
71116            inner: ExternalFormatQNX {
71117                s_type: StructureType::from_raw(1000529003i32),
71118                ..Default::default()
71119            },
71120            _marker: core::marker::PhantomData,
71121        }
71122    }
71123}
71124impl<'a> ExternalFormatQNXBuilder<'a> {
71125    #[inline]
71126    pub fn external_format(mut self, value: u64) -> Self {
71127        self.inner.external_format = value;
71128        self
71129    }
71130    ///Prepend a struct to the pNext chain. See [`ExternalFormatQNX`]'s **Extended By** section for valid types.
71131    #[inline]
71132    pub fn push_next<T: ExtendsExternalFormatQNX>(mut self, next: &'a mut T) -> Self {
71133        unsafe {
71134            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
71135            (*next_ptr).p_next = self.inner.p_next as *mut _;
71136            self.inner.p_next = <*mut BaseOutStructure>::cast::<
71137                core::ffi::c_void,
71138            >(next_ptr);
71139        }
71140        self
71141    }
71142}
71143impl<'a> core::ops::Deref for ExternalFormatQNXBuilder<'a> {
71144    type Target = ExternalFormatQNX;
71145    #[inline]
71146    fn deref(&self) -> &Self::Target {
71147        &self.inner
71148    }
71149}
71150impl<'a> core::ops::DerefMut for ExternalFormatQNXBuilder<'a> {
71151    #[inline]
71152    fn deref_mut(&mut self) -> &mut Self::Target {
71153        &mut self.inner
71154    }
71155}
71156///Builder for [`PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX`] with lifetime-tied pNext safety.
71157pub struct PhysicalDeviceExternalMemoryScreenBufferFeaturesQNXBuilder<'a> {
71158    inner: PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX,
71159    _marker: core::marker::PhantomData<&'a ()>,
71160}
71161impl PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
71162    /// Start building this struct; `s_type` is already set to the correct variant.
71163    #[inline]
71164    pub fn builder<'a>() -> PhysicalDeviceExternalMemoryScreenBufferFeaturesQNXBuilder<
71165        'a,
71166    > {
71167        PhysicalDeviceExternalMemoryScreenBufferFeaturesQNXBuilder {
71168            inner: PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
71169                s_type: StructureType::from_raw(1000529004i32),
71170                ..Default::default()
71171            },
71172            _marker: core::marker::PhantomData,
71173        }
71174    }
71175}
71176impl<'a> PhysicalDeviceExternalMemoryScreenBufferFeaturesQNXBuilder<'a> {
71177    #[inline]
71178    pub fn screen_buffer_import(mut self, value: bool) -> Self {
71179        self.inner.screen_buffer_import = value as u32;
71180        self
71181    }
71182    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX`]'s **Extended By** section for valid types.
71183    #[inline]
71184    pub fn push_next<T: ExtendsPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX>(
71185        mut self,
71186        next: &'a mut T,
71187    ) -> Self {
71188        unsafe {
71189            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
71190            (*next_ptr).p_next = self.inner.p_next as *mut _;
71191            self.inner.p_next = <*mut BaseOutStructure>::cast::<
71192                core::ffi::c_void,
71193            >(next_ptr);
71194        }
71195        self
71196    }
71197}
71198impl<'a> core::ops::Deref
71199for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNXBuilder<'a> {
71200    type Target = PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX;
71201    #[inline]
71202    fn deref(&self) -> &Self::Target {
71203        &self.inner
71204    }
71205}
71206impl<'a> core::ops::DerefMut
71207for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNXBuilder<'a> {
71208    #[inline]
71209    fn deref_mut(&mut self) -> &mut Self::Target {
71210        &mut self.inner
71211    }
71212}
71213///Builder for [`PhysicalDeviceCooperativeMatrixFeaturesKHR`] with lifetime-tied pNext safety.
71214pub struct PhysicalDeviceCooperativeMatrixFeaturesKHRBuilder<'a> {
71215    inner: PhysicalDeviceCooperativeMatrixFeaturesKHR,
71216    _marker: core::marker::PhantomData<&'a ()>,
71217}
71218impl PhysicalDeviceCooperativeMatrixFeaturesKHR {
71219    /// Start building this struct; `s_type` is already set to the correct variant.
71220    #[inline]
71221    pub fn builder<'a>() -> PhysicalDeviceCooperativeMatrixFeaturesKHRBuilder<'a> {
71222        PhysicalDeviceCooperativeMatrixFeaturesKHRBuilder {
71223            inner: PhysicalDeviceCooperativeMatrixFeaturesKHR {
71224                s_type: StructureType::from_raw(1000506000i32),
71225                ..Default::default()
71226            },
71227            _marker: core::marker::PhantomData,
71228        }
71229    }
71230}
71231impl<'a> PhysicalDeviceCooperativeMatrixFeaturesKHRBuilder<'a> {
71232    #[inline]
71233    pub fn cooperative_matrix(mut self, value: bool) -> Self {
71234        self.inner.cooperative_matrix = value as u32;
71235        self
71236    }
71237    #[inline]
71238    pub fn cooperative_matrix_robust_buffer_access(mut self, value: bool) -> Self {
71239        self.inner.cooperative_matrix_robust_buffer_access = value as u32;
71240        self
71241    }
71242    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceCooperativeMatrixFeaturesKHR`]'s **Extended By** section for valid types.
71243    #[inline]
71244    pub fn push_next<T: ExtendsPhysicalDeviceCooperativeMatrixFeaturesKHR>(
71245        mut self,
71246        next: &'a mut T,
71247    ) -> Self {
71248        unsafe {
71249            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
71250            (*next_ptr).p_next = self.inner.p_next as *mut _;
71251            self.inner.p_next = <*mut BaseOutStructure>::cast::<
71252                core::ffi::c_void,
71253            >(next_ptr);
71254        }
71255        self
71256    }
71257}
71258impl<'a> core::ops::Deref for PhysicalDeviceCooperativeMatrixFeaturesKHRBuilder<'a> {
71259    type Target = PhysicalDeviceCooperativeMatrixFeaturesKHR;
71260    #[inline]
71261    fn deref(&self) -> &Self::Target {
71262        &self.inner
71263    }
71264}
71265impl<'a> core::ops::DerefMut for PhysicalDeviceCooperativeMatrixFeaturesKHRBuilder<'a> {
71266    #[inline]
71267    fn deref_mut(&mut self) -> &mut Self::Target {
71268        &mut self.inner
71269    }
71270}
71271///Builder for [`CooperativeMatrixPropertiesKHR`] with lifetime-tied pNext safety.
71272pub struct CooperativeMatrixPropertiesKHRBuilder<'a> {
71273    inner: CooperativeMatrixPropertiesKHR,
71274    _marker: core::marker::PhantomData<&'a ()>,
71275}
71276impl CooperativeMatrixPropertiesKHR {
71277    /// Start building this struct; `s_type` is already set to the correct variant.
71278    #[inline]
71279    pub fn builder<'a>() -> CooperativeMatrixPropertiesKHRBuilder<'a> {
71280        CooperativeMatrixPropertiesKHRBuilder {
71281            inner: CooperativeMatrixPropertiesKHR {
71282                s_type: StructureType::from_raw(1000506001i32),
71283                ..Default::default()
71284            },
71285            _marker: core::marker::PhantomData,
71286        }
71287    }
71288}
71289impl<'a> CooperativeMatrixPropertiesKHRBuilder<'a> {
71290    #[inline]
71291    pub fn m_size(mut self, value: u32) -> Self {
71292        self.inner.m_size = value;
71293        self
71294    }
71295    #[inline]
71296    pub fn n_size(mut self, value: u32) -> Self {
71297        self.inner.n_size = value;
71298        self
71299    }
71300    #[inline]
71301    pub fn k_size(mut self, value: u32) -> Self {
71302        self.inner.k_size = value;
71303        self
71304    }
71305    #[inline]
71306    pub fn a_type(mut self, value: ComponentTypeKHR) -> Self {
71307        self.inner.a_type = value;
71308        self
71309    }
71310    #[inline]
71311    pub fn b_type(mut self, value: ComponentTypeKHR) -> Self {
71312        self.inner.b_type = value;
71313        self
71314    }
71315    #[inline]
71316    pub fn c_type(mut self, value: ComponentTypeKHR) -> Self {
71317        self.inner.c_type = value;
71318        self
71319    }
71320    #[inline]
71321    pub fn result_type(mut self, value: ComponentTypeKHR) -> Self {
71322        self.inner.result_type = value;
71323        self
71324    }
71325    #[inline]
71326    pub fn saturating_accumulation(mut self, value: bool) -> Self {
71327        self.inner.saturating_accumulation = value as u32;
71328        self
71329    }
71330    #[inline]
71331    pub fn scope(mut self, value: ScopeKHR) -> Self {
71332        self.inner.scope = value;
71333        self
71334    }
71335}
71336impl<'a> core::ops::Deref for CooperativeMatrixPropertiesKHRBuilder<'a> {
71337    type Target = CooperativeMatrixPropertiesKHR;
71338    #[inline]
71339    fn deref(&self) -> &Self::Target {
71340        &self.inner
71341    }
71342}
71343impl<'a> core::ops::DerefMut for CooperativeMatrixPropertiesKHRBuilder<'a> {
71344    #[inline]
71345    fn deref_mut(&mut self) -> &mut Self::Target {
71346        &mut self.inner
71347    }
71348}
71349///Builder for [`PhysicalDeviceCooperativeMatrixPropertiesKHR`] with lifetime-tied pNext safety.
71350pub struct PhysicalDeviceCooperativeMatrixPropertiesKHRBuilder<'a> {
71351    inner: PhysicalDeviceCooperativeMatrixPropertiesKHR,
71352    _marker: core::marker::PhantomData<&'a ()>,
71353}
71354impl PhysicalDeviceCooperativeMatrixPropertiesKHR {
71355    /// Start building this struct; `s_type` is already set to the correct variant.
71356    #[inline]
71357    pub fn builder<'a>() -> PhysicalDeviceCooperativeMatrixPropertiesKHRBuilder<'a> {
71358        PhysicalDeviceCooperativeMatrixPropertiesKHRBuilder {
71359            inner: PhysicalDeviceCooperativeMatrixPropertiesKHR {
71360                s_type: StructureType::from_raw(1000506002i32),
71361                ..Default::default()
71362            },
71363            _marker: core::marker::PhantomData,
71364        }
71365    }
71366}
71367impl<'a> PhysicalDeviceCooperativeMatrixPropertiesKHRBuilder<'a> {
71368    #[inline]
71369    pub fn cooperative_matrix_supported_stages(
71370        mut self,
71371        value: ShaderStageFlags,
71372    ) -> Self {
71373        self.inner.cooperative_matrix_supported_stages = value;
71374        self
71375    }
71376}
71377impl<'a> core::ops::Deref for PhysicalDeviceCooperativeMatrixPropertiesKHRBuilder<'a> {
71378    type Target = PhysicalDeviceCooperativeMatrixPropertiesKHR;
71379    #[inline]
71380    fn deref(&self) -> &Self::Target {
71381        &self.inner
71382    }
71383}
71384impl<'a> core::ops::DerefMut
71385for PhysicalDeviceCooperativeMatrixPropertiesKHRBuilder<'a> {
71386    #[inline]
71387    fn deref_mut(&mut self) -> &mut Self::Target {
71388        &mut self.inner
71389    }
71390}
71391///Builder for [`PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM`] with lifetime-tied pNext safety.
71392pub struct PhysicalDeviceCooperativeMatrixConversionFeaturesQCOMBuilder<'a> {
71393    inner: PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM,
71394    _marker: core::marker::PhantomData<&'a ()>,
71395}
71396impl PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM {
71397    /// Start building this struct; `s_type` is already set to the correct variant.
71398    #[inline]
71399    pub fn builder<'a>() -> PhysicalDeviceCooperativeMatrixConversionFeaturesQCOMBuilder<
71400        'a,
71401    > {
71402        PhysicalDeviceCooperativeMatrixConversionFeaturesQCOMBuilder {
71403            inner: PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM {
71404                s_type: StructureType::from_raw(1000172000i32),
71405                ..Default::default()
71406            },
71407            _marker: core::marker::PhantomData,
71408        }
71409    }
71410}
71411impl<'a> PhysicalDeviceCooperativeMatrixConversionFeaturesQCOMBuilder<'a> {
71412    #[inline]
71413    pub fn cooperative_matrix_conversion(mut self, value: bool) -> Self {
71414        self.inner.cooperative_matrix_conversion = value as u32;
71415        self
71416    }
71417    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM`]'s **Extended By** section for valid types.
71418    #[inline]
71419    pub fn push_next<T: ExtendsPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM>(
71420        mut self,
71421        next: &'a mut T,
71422    ) -> Self {
71423        unsafe {
71424            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
71425            (*next_ptr).p_next = self.inner.p_next as *mut _;
71426            self.inner.p_next = <*mut BaseOutStructure>::cast::<
71427                core::ffi::c_void,
71428            >(next_ptr);
71429        }
71430        self
71431    }
71432}
71433impl<'a> core::ops::Deref
71434for PhysicalDeviceCooperativeMatrixConversionFeaturesQCOMBuilder<'a> {
71435    type Target = PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM;
71436    #[inline]
71437    fn deref(&self) -> &Self::Target {
71438        &self.inner
71439    }
71440}
71441impl<'a> core::ops::DerefMut
71442for PhysicalDeviceCooperativeMatrixConversionFeaturesQCOMBuilder<'a> {
71443    #[inline]
71444    fn deref_mut(&mut self) -> &mut Self::Target {
71445        &mut self.inner
71446    }
71447}
71448///Builder for [`PhysicalDeviceShaderEnqueuePropertiesAMDX`] with lifetime-tied pNext safety.
71449pub struct PhysicalDeviceShaderEnqueuePropertiesAMDXBuilder<'a> {
71450    inner: PhysicalDeviceShaderEnqueuePropertiesAMDX,
71451    _marker: core::marker::PhantomData<&'a ()>,
71452}
71453impl PhysicalDeviceShaderEnqueuePropertiesAMDX {
71454    /// Start building this struct; `s_type` is already set to the correct variant.
71455    #[inline]
71456    pub fn builder<'a>() -> PhysicalDeviceShaderEnqueuePropertiesAMDXBuilder<'a> {
71457        PhysicalDeviceShaderEnqueuePropertiesAMDXBuilder {
71458            inner: PhysicalDeviceShaderEnqueuePropertiesAMDX {
71459                s_type: StructureType::from_raw(1000134001i32),
71460                ..Default::default()
71461            },
71462            _marker: core::marker::PhantomData,
71463        }
71464    }
71465}
71466impl<'a> PhysicalDeviceShaderEnqueuePropertiesAMDXBuilder<'a> {
71467    #[inline]
71468    pub fn max_execution_graph_depth(mut self, value: u32) -> Self {
71469        self.inner.max_execution_graph_depth = value;
71470        self
71471    }
71472    #[inline]
71473    pub fn max_execution_graph_shader_output_nodes(mut self, value: u32) -> Self {
71474        self.inner.max_execution_graph_shader_output_nodes = value;
71475        self
71476    }
71477    #[inline]
71478    pub fn max_execution_graph_shader_payload_size(mut self, value: u32) -> Self {
71479        self.inner.max_execution_graph_shader_payload_size = value;
71480        self
71481    }
71482    #[inline]
71483    pub fn max_execution_graph_shader_payload_count(mut self, value: u32) -> Self {
71484        self.inner.max_execution_graph_shader_payload_count = value;
71485        self
71486    }
71487    #[inline]
71488    pub fn execution_graph_dispatch_address_alignment(mut self, value: u32) -> Self {
71489        self.inner.execution_graph_dispatch_address_alignment = value;
71490        self
71491    }
71492    #[inline]
71493    pub fn max_execution_graph_workgroup_count(mut self, value: [u32; 3usize]) -> Self {
71494        self.inner.max_execution_graph_workgroup_count = value;
71495        self
71496    }
71497    #[inline]
71498    pub fn max_execution_graph_workgroups(mut self, value: u32) -> Self {
71499        self.inner.max_execution_graph_workgroups = value;
71500        self
71501    }
71502}
71503impl<'a> core::ops::Deref for PhysicalDeviceShaderEnqueuePropertiesAMDXBuilder<'a> {
71504    type Target = PhysicalDeviceShaderEnqueuePropertiesAMDX;
71505    #[inline]
71506    fn deref(&self) -> &Self::Target {
71507        &self.inner
71508    }
71509}
71510impl<'a> core::ops::DerefMut for PhysicalDeviceShaderEnqueuePropertiesAMDXBuilder<'a> {
71511    #[inline]
71512    fn deref_mut(&mut self) -> &mut Self::Target {
71513        &mut self.inner
71514    }
71515}
71516///Builder for [`PhysicalDeviceShaderEnqueueFeaturesAMDX`] with lifetime-tied pNext safety.
71517pub struct PhysicalDeviceShaderEnqueueFeaturesAMDXBuilder<'a> {
71518    inner: PhysicalDeviceShaderEnqueueFeaturesAMDX,
71519    _marker: core::marker::PhantomData<&'a ()>,
71520}
71521impl PhysicalDeviceShaderEnqueueFeaturesAMDX {
71522    /// Start building this struct; `s_type` is already set to the correct variant.
71523    #[inline]
71524    pub fn builder<'a>() -> PhysicalDeviceShaderEnqueueFeaturesAMDXBuilder<'a> {
71525        PhysicalDeviceShaderEnqueueFeaturesAMDXBuilder {
71526            inner: PhysicalDeviceShaderEnqueueFeaturesAMDX {
71527                s_type: StructureType::from_raw(1000134000i32),
71528                ..Default::default()
71529            },
71530            _marker: core::marker::PhantomData,
71531        }
71532    }
71533}
71534impl<'a> PhysicalDeviceShaderEnqueueFeaturesAMDXBuilder<'a> {
71535    #[inline]
71536    pub fn shader_enqueue(mut self, value: bool) -> Self {
71537        self.inner.shader_enqueue = value as u32;
71538        self
71539    }
71540    #[inline]
71541    pub fn shader_mesh_enqueue(mut self, value: bool) -> Self {
71542        self.inner.shader_mesh_enqueue = value as u32;
71543        self
71544    }
71545    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderEnqueueFeaturesAMDX`]'s **Extended By** section for valid types.
71546    #[inline]
71547    pub fn push_next<T: ExtendsPhysicalDeviceShaderEnqueueFeaturesAMDX>(
71548        mut self,
71549        next: &'a mut T,
71550    ) -> Self {
71551        unsafe {
71552            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
71553            (*next_ptr).p_next = self.inner.p_next as *mut _;
71554            self.inner.p_next = <*mut BaseOutStructure>::cast::<
71555                core::ffi::c_void,
71556            >(next_ptr);
71557        }
71558        self
71559    }
71560}
71561impl<'a> core::ops::Deref for PhysicalDeviceShaderEnqueueFeaturesAMDXBuilder<'a> {
71562    type Target = PhysicalDeviceShaderEnqueueFeaturesAMDX;
71563    #[inline]
71564    fn deref(&self) -> &Self::Target {
71565        &self.inner
71566    }
71567}
71568impl<'a> core::ops::DerefMut for PhysicalDeviceShaderEnqueueFeaturesAMDXBuilder<'a> {
71569    #[inline]
71570    fn deref_mut(&mut self) -> &mut Self::Target {
71571        &mut self.inner
71572    }
71573}
71574///Builder for [`ExecutionGraphPipelineCreateInfoAMDX`] with lifetime-tied pNext safety.
71575pub struct ExecutionGraphPipelineCreateInfoAMDXBuilder<'a> {
71576    inner: ExecutionGraphPipelineCreateInfoAMDX,
71577    _marker: core::marker::PhantomData<&'a ()>,
71578}
71579impl ExecutionGraphPipelineCreateInfoAMDX {
71580    /// Start building this struct; `s_type` is already set to the correct variant.
71581    #[inline]
71582    pub fn builder<'a>() -> ExecutionGraphPipelineCreateInfoAMDXBuilder<'a> {
71583        ExecutionGraphPipelineCreateInfoAMDXBuilder {
71584            inner: ExecutionGraphPipelineCreateInfoAMDX {
71585                s_type: StructureType::from_raw(1000134003i32),
71586                ..Default::default()
71587            },
71588            _marker: core::marker::PhantomData,
71589        }
71590    }
71591}
71592impl<'a> ExecutionGraphPipelineCreateInfoAMDXBuilder<'a> {
71593    #[inline]
71594    pub fn flags(mut self, value: PipelineCreateFlags) -> Self {
71595        self.inner.flags = value;
71596        self
71597    }
71598    #[inline]
71599    pub fn stage_count(mut self, value: u32) -> Self {
71600        self.inner.stage_count = value;
71601        self
71602    }
71603    #[inline]
71604    pub fn stages(mut self, slice: &'a [PipelineShaderStageCreateInfo]) -> Self {
71605        self.inner.stage_count = slice.len() as u32;
71606        self.inner.p_stages = slice.as_ptr();
71607        self
71608    }
71609    #[inline]
71610    pub fn library_info(mut self, value: &'a PipelineLibraryCreateInfoKHR) -> Self {
71611        self.inner.p_library_info = value;
71612        self
71613    }
71614    #[inline]
71615    pub fn layout(mut self, value: PipelineLayout) -> Self {
71616        self.inner.layout = value;
71617        self
71618    }
71619    #[inline]
71620    pub fn base_pipeline_handle(mut self, value: Pipeline) -> Self {
71621        self.inner.base_pipeline_handle = value;
71622        self
71623    }
71624    #[inline]
71625    pub fn base_pipeline_index(mut self, value: i32) -> Self {
71626        self.inner.base_pipeline_index = value;
71627        self
71628    }
71629    ///Prepend a struct to the pNext chain. See [`ExecutionGraphPipelineCreateInfoAMDX`]'s **Extended By** section for valid types.
71630    #[inline]
71631    pub fn push_next<T: ExtendsExecutionGraphPipelineCreateInfoAMDX>(
71632        mut self,
71633        next: &'a mut T,
71634    ) -> Self {
71635        unsafe {
71636            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
71637            (*next_ptr).p_next = self.inner.p_next as *mut _;
71638            self.inner.p_next = <*mut BaseOutStructure>::cast::<
71639                core::ffi::c_void,
71640            >(next_ptr) as *const _;
71641        }
71642        self
71643    }
71644}
71645impl<'a> core::ops::Deref for ExecutionGraphPipelineCreateInfoAMDXBuilder<'a> {
71646    type Target = ExecutionGraphPipelineCreateInfoAMDX;
71647    #[inline]
71648    fn deref(&self) -> &Self::Target {
71649        &self.inner
71650    }
71651}
71652impl<'a> core::ops::DerefMut for ExecutionGraphPipelineCreateInfoAMDXBuilder<'a> {
71653    #[inline]
71654    fn deref_mut(&mut self) -> &mut Self::Target {
71655        &mut self.inner
71656    }
71657}
71658///Builder for [`PipelineShaderStageNodeCreateInfoAMDX`] with lifetime-tied pNext safety.
71659pub struct PipelineShaderStageNodeCreateInfoAMDXBuilder<'a> {
71660    inner: PipelineShaderStageNodeCreateInfoAMDX,
71661    _marker: core::marker::PhantomData<&'a ()>,
71662}
71663impl PipelineShaderStageNodeCreateInfoAMDX {
71664    /// Start building this struct; `s_type` is already set to the correct variant.
71665    #[inline]
71666    pub fn builder<'a>() -> PipelineShaderStageNodeCreateInfoAMDXBuilder<'a> {
71667        PipelineShaderStageNodeCreateInfoAMDXBuilder {
71668            inner: PipelineShaderStageNodeCreateInfoAMDX {
71669                s_type: StructureType::from_raw(1000134004i32),
71670                ..Default::default()
71671            },
71672            _marker: core::marker::PhantomData,
71673        }
71674    }
71675}
71676impl<'a> PipelineShaderStageNodeCreateInfoAMDXBuilder<'a> {
71677    #[inline]
71678    pub fn name(mut self, value: &'a core::ffi::CStr) -> Self {
71679        self.inner.p_name = value.as_ptr();
71680        self
71681    }
71682    #[inline]
71683    pub fn index(mut self, value: u32) -> Self {
71684        self.inner.index = value;
71685        self
71686    }
71687    ///Prepend a struct to the pNext chain. See [`PipelineShaderStageNodeCreateInfoAMDX`]'s **Extended By** section for valid types.
71688    #[inline]
71689    pub fn push_next<T: ExtendsPipelineShaderStageNodeCreateInfoAMDX>(
71690        mut self,
71691        next: &'a mut T,
71692    ) -> Self {
71693        unsafe {
71694            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
71695            (*next_ptr).p_next = self.inner.p_next as *mut _;
71696            self.inner.p_next = <*mut BaseOutStructure>::cast::<
71697                core::ffi::c_void,
71698            >(next_ptr) as *const _;
71699        }
71700        self
71701    }
71702}
71703impl<'a> core::ops::Deref for PipelineShaderStageNodeCreateInfoAMDXBuilder<'a> {
71704    type Target = PipelineShaderStageNodeCreateInfoAMDX;
71705    #[inline]
71706    fn deref(&self) -> &Self::Target {
71707        &self.inner
71708    }
71709}
71710impl<'a> core::ops::DerefMut for PipelineShaderStageNodeCreateInfoAMDXBuilder<'a> {
71711    #[inline]
71712    fn deref_mut(&mut self) -> &mut Self::Target {
71713        &mut self.inner
71714    }
71715}
71716///Builder for [`ExecutionGraphPipelineScratchSizeAMDX`] with lifetime-tied pNext safety.
71717pub struct ExecutionGraphPipelineScratchSizeAMDXBuilder<'a> {
71718    inner: ExecutionGraphPipelineScratchSizeAMDX,
71719    _marker: core::marker::PhantomData<&'a ()>,
71720}
71721impl ExecutionGraphPipelineScratchSizeAMDX {
71722    /// Start building this struct; `s_type` is already set to the correct variant.
71723    #[inline]
71724    pub fn builder<'a>() -> ExecutionGraphPipelineScratchSizeAMDXBuilder<'a> {
71725        ExecutionGraphPipelineScratchSizeAMDXBuilder {
71726            inner: ExecutionGraphPipelineScratchSizeAMDX {
71727                s_type: StructureType::from_raw(1000134002i32),
71728                ..Default::default()
71729            },
71730            _marker: core::marker::PhantomData,
71731        }
71732    }
71733}
71734impl<'a> ExecutionGraphPipelineScratchSizeAMDXBuilder<'a> {
71735    #[inline]
71736    pub fn min_size(mut self, value: u64) -> Self {
71737        self.inner.min_size = value;
71738        self
71739    }
71740    #[inline]
71741    pub fn max_size(mut self, value: u64) -> Self {
71742        self.inner.max_size = value;
71743        self
71744    }
71745    #[inline]
71746    pub fn size_granularity(mut self, value: u64) -> Self {
71747        self.inner.size_granularity = value;
71748        self
71749    }
71750    ///Prepend a struct to the pNext chain. See [`ExecutionGraphPipelineScratchSizeAMDX`]'s **Extended By** section for valid types.
71751    #[inline]
71752    pub fn push_next<T: ExtendsExecutionGraphPipelineScratchSizeAMDX>(
71753        mut self,
71754        next: &'a mut T,
71755    ) -> Self {
71756        unsafe {
71757            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
71758            (*next_ptr).p_next = self.inner.p_next as *mut _;
71759            self.inner.p_next = <*mut BaseOutStructure>::cast::<
71760                core::ffi::c_void,
71761            >(next_ptr);
71762        }
71763        self
71764    }
71765}
71766impl<'a> core::ops::Deref for ExecutionGraphPipelineScratchSizeAMDXBuilder<'a> {
71767    type Target = ExecutionGraphPipelineScratchSizeAMDX;
71768    #[inline]
71769    fn deref(&self) -> &Self::Target {
71770        &self.inner
71771    }
71772}
71773impl<'a> core::ops::DerefMut for ExecutionGraphPipelineScratchSizeAMDXBuilder<'a> {
71774    #[inline]
71775    fn deref_mut(&mut self) -> &mut Self::Target {
71776        &mut self.inner
71777    }
71778}
71779///Builder for [`DispatchGraphInfoAMDX`].
71780pub struct DispatchGraphInfoAMDXBuilder {
71781    inner: DispatchGraphInfoAMDX,
71782}
71783impl DispatchGraphInfoAMDX {
71784    /// Start building this struct.
71785    #[inline]
71786    pub fn builder() -> DispatchGraphInfoAMDXBuilder {
71787        DispatchGraphInfoAMDXBuilder {
71788            inner: DispatchGraphInfoAMDX {
71789                ..Default::default()
71790            },
71791        }
71792    }
71793}
71794impl DispatchGraphInfoAMDXBuilder {
71795    #[inline]
71796    pub fn node_index(mut self, value: u32) -> Self {
71797        self.inner.node_index = value;
71798        self
71799    }
71800    #[inline]
71801    pub fn payload_count(mut self, value: u32) -> Self {
71802        self.inner.payload_count = value;
71803        self
71804    }
71805    #[inline]
71806    pub fn payloads(mut self, value: DeviceOrHostAddressConstAMDX) -> Self {
71807        self.inner.payloads = value;
71808        self
71809    }
71810    #[inline]
71811    pub fn payload_stride(mut self, value: u64) -> Self {
71812        self.inner.payload_stride = value;
71813        self
71814    }
71815}
71816impl core::ops::Deref for DispatchGraphInfoAMDXBuilder {
71817    type Target = DispatchGraphInfoAMDX;
71818    #[inline]
71819    fn deref(&self) -> &Self::Target {
71820        &self.inner
71821    }
71822}
71823impl core::ops::DerefMut for DispatchGraphInfoAMDXBuilder {
71824    #[inline]
71825    fn deref_mut(&mut self) -> &mut Self::Target {
71826        &mut self.inner
71827    }
71828}
71829///Builder for [`DispatchGraphCountInfoAMDX`].
71830pub struct DispatchGraphCountInfoAMDXBuilder {
71831    inner: DispatchGraphCountInfoAMDX,
71832}
71833impl DispatchGraphCountInfoAMDX {
71834    /// Start building this struct.
71835    #[inline]
71836    pub fn builder() -> DispatchGraphCountInfoAMDXBuilder {
71837        DispatchGraphCountInfoAMDXBuilder {
71838            inner: DispatchGraphCountInfoAMDX {
71839                ..Default::default()
71840            },
71841        }
71842    }
71843}
71844impl DispatchGraphCountInfoAMDXBuilder {
71845    #[inline]
71846    pub fn count(mut self, value: u32) -> Self {
71847        self.inner.count = value;
71848        self
71849    }
71850    #[inline]
71851    pub fn infos(mut self, value: DeviceOrHostAddressConstAMDX) -> Self {
71852        self.inner.infos = value;
71853        self
71854    }
71855    #[inline]
71856    pub fn stride(mut self, value: u64) -> Self {
71857        self.inner.stride = value;
71858        self
71859    }
71860}
71861impl core::ops::Deref for DispatchGraphCountInfoAMDXBuilder {
71862    type Target = DispatchGraphCountInfoAMDX;
71863    #[inline]
71864    fn deref(&self) -> &Self::Target {
71865        &self.inner
71866    }
71867}
71868impl core::ops::DerefMut for DispatchGraphCountInfoAMDXBuilder {
71869    #[inline]
71870    fn deref_mut(&mut self) -> &mut Self::Target {
71871        &mut self.inner
71872    }
71873}
71874///Builder for [`PhysicalDeviceAntiLagFeaturesAMD`] with lifetime-tied pNext safety.
71875pub struct PhysicalDeviceAntiLagFeaturesAMDBuilder<'a> {
71876    inner: PhysicalDeviceAntiLagFeaturesAMD,
71877    _marker: core::marker::PhantomData<&'a ()>,
71878}
71879impl PhysicalDeviceAntiLagFeaturesAMD {
71880    /// Start building this struct; `s_type` is already set to the correct variant.
71881    #[inline]
71882    pub fn builder<'a>() -> PhysicalDeviceAntiLagFeaturesAMDBuilder<'a> {
71883        PhysicalDeviceAntiLagFeaturesAMDBuilder {
71884            inner: PhysicalDeviceAntiLagFeaturesAMD {
71885                s_type: StructureType::from_raw(1000476000i32),
71886                ..Default::default()
71887            },
71888            _marker: core::marker::PhantomData,
71889        }
71890    }
71891}
71892impl<'a> PhysicalDeviceAntiLagFeaturesAMDBuilder<'a> {
71893    #[inline]
71894    pub fn anti_lag(mut self, value: bool) -> Self {
71895        self.inner.anti_lag = value as u32;
71896        self
71897    }
71898    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceAntiLagFeaturesAMD`]'s **Extended By** section for valid types.
71899    #[inline]
71900    pub fn push_next<T: ExtendsPhysicalDeviceAntiLagFeaturesAMD>(
71901        mut self,
71902        next: &'a mut T,
71903    ) -> Self {
71904        unsafe {
71905            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
71906            (*next_ptr).p_next = self.inner.p_next as *mut _;
71907            self.inner.p_next = <*mut BaseOutStructure>::cast::<
71908                core::ffi::c_void,
71909            >(next_ptr);
71910        }
71911        self
71912    }
71913}
71914impl<'a> core::ops::Deref for PhysicalDeviceAntiLagFeaturesAMDBuilder<'a> {
71915    type Target = PhysicalDeviceAntiLagFeaturesAMD;
71916    #[inline]
71917    fn deref(&self) -> &Self::Target {
71918        &self.inner
71919    }
71920}
71921impl<'a> core::ops::DerefMut for PhysicalDeviceAntiLagFeaturesAMDBuilder<'a> {
71922    #[inline]
71923    fn deref_mut(&mut self) -> &mut Self::Target {
71924        &mut self.inner
71925    }
71926}
71927///Builder for [`AntiLagDataAMD`] with lifetime-tied pNext safety.
71928pub struct AntiLagDataAMDBuilder<'a> {
71929    inner: AntiLagDataAMD,
71930    _marker: core::marker::PhantomData<&'a ()>,
71931}
71932impl AntiLagDataAMD {
71933    /// Start building this struct; `s_type` is already set to the correct variant.
71934    #[inline]
71935    pub fn builder<'a>() -> AntiLagDataAMDBuilder<'a> {
71936        AntiLagDataAMDBuilder {
71937            inner: AntiLagDataAMD {
71938                s_type: StructureType::from_raw(1000476001i32),
71939                ..Default::default()
71940            },
71941            _marker: core::marker::PhantomData,
71942        }
71943    }
71944}
71945impl<'a> AntiLagDataAMDBuilder<'a> {
71946    #[inline]
71947    pub fn mode(mut self, value: AntiLagModeAMD) -> Self {
71948        self.inner.mode = value;
71949        self
71950    }
71951    #[inline]
71952    pub fn max_fps(mut self, value: u32) -> Self {
71953        self.inner.max_fps = value;
71954        self
71955    }
71956    #[inline]
71957    pub fn presentation_info(mut self, value: &'a AntiLagPresentationInfoAMD) -> Self {
71958        self.inner.p_presentation_info = value;
71959        self
71960    }
71961    ///Prepend a struct to the pNext chain. See [`AntiLagDataAMD`]'s **Extended By** section for valid types.
71962    #[inline]
71963    pub fn push_next<T: ExtendsAntiLagDataAMD>(mut self, next: &'a mut T) -> Self {
71964        unsafe {
71965            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
71966            (*next_ptr).p_next = self.inner.p_next as *mut _;
71967            self.inner.p_next = <*mut BaseOutStructure>::cast::<
71968                core::ffi::c_void,
71969            >(next_ptr) as *const _;
71970        }
71971        self
71972    }
71973}
71974impl<'a> core::ops::Deref for AntiLagDataAMDBuilder<'a> {
71975    type Target = AntiLagDataAMD;
71976    #[inline]
71977    fn deref(&self) -> &Self::Target {
71978        &self.inner
71979    }
71980}
71981impl<'a> core::ops::DerefMut for AntiLagDataAMDBuilder<'a> {
71982    #[inline]
71983    fn deref_mut(&mut self) -> &mut Self::Target {
71984        &mut self.inner
71985    }
71986}
71987///Builder for [`AntiLagPresentationInfoAMD`] with lifetime-tied pNext safety.
71988pub struct AntiLagPresentationInfoAMDBuilder<'a> {
71989    inner: AntiLagPresentationInfoAMD,
71990    _marker: core::marker::PhantomData<&'a ()>,
71991}
71992impl AntiLagPresentationInfoAMD {
71993    /// Start building this struct; `s_type` is already set to the correct variant.
71994    #[inline]
71995    pub fn builder<'a>() -> AntiLagPresentationInfoAMDBuilder<'a> {
71996        AntiLagPresentationInfoAMDBuilder {
71997            inner: AntiLagPresentationInfoAMD {
71998                s_type: StructureType::from_raw(1000476002i32),
71999                ..Default::default()
72000            },
72001            _marker: core::marker::PhantomData,
72002        }
72003    }
72004}
72005impl<'a> AntiLagPresentationInfoAMDBuilder<'a> {
72006    #[inline]
72007    pub fn stage(mut self, value: AntiLagStageAMD) -> Self {
72008        self.inner.stage = value;
72009        self
72010    }
72011    #[inline]
72012    pub fn frame_index(mut self, value: u64) -> Self {
72013        self.inner.frame_index = value;
72014        self
72015    }
72016    ///Prepend a struct to the pNext chain. See [`AntiLagPresentationInfoAMD`]'s **Extended By** section for valid types.
72017    #[inline]
72018    pub fn push_next<T: ExtendsAntiLagPresentationInfoAMD>(
72019        mut self,
72020        next: &'a mut T,
72021    ) -> Self {
72022        unsafe {
72023            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
72024            (*next_ptr).p_next = self.inner.p_next as *mut _;
72025            self.inner.p_next = <*mut BaseOutStructure>::cast::<
72026                core::ffi::c_void,
72027            >(next_ptr);
72028        }
72029        self
72030    }
72031}
72032impl<'a> core::ops::Deref for AntiLagPresentationInfoAMDBuilder<'a> {
72033    type Target = AntiLagPresentationInfoAMD;
72034    #[inline]
72035    fn deref(&self) -> &Self::Target {
72036        &self.inner
72037    }
72038}
72039impl<'a> core::ops::DerefMut for AntiLagPresentationInfoAMDBuilder<'a> {
72040    #[inline]
72041    fn deref_mut(&mut self) -> &mut Self::Target {
72042        &mut self.inner
72043    }
72044}
72045///Builder for [`BindMemoryStatus`] with lifetime-tied pNext safety.
72046pub struct BindMemoryStatusBuilder<'a> {
72047    inner: BindMemoryStatus,
72048    _marker: core::marker::PhantomData<&'a ()>,
72049}
72050impl BindMemoryStatus {
72051    /// Start building this struct; `s_type` is already set to the correct variant.
72052    #[inline]
72053    pub fn builder<'a>() -> BindMemoryStatusBuilder<'a> {
72054        BindMemoryStatusBuilder {
72055            inner: BindMemoryStatus {
72056                s_type: StructureType::from_raw(1000545002i32),
72057                ..Default::default()
72058            },
72059            _marker: core::marker::PhantomData,
72060        }
72061    }
72062}
72063impl<'a> BindMemoryStatusBuilder<'a> {
72064    #[inline]
72065    pub fn result(mut self, value: *mut Result) -> Self {
72066        self.inner.p_result = value;
72067        self
72068    }
72069    ///Prepend a struct to the pNext chain. See [`BindMemoryStatus`]'s **Extended By** section for valid types.
72070    #[inline]
72071    pub fn push_next<T: ExtendsBindMemoryStatus>(mut self, next: &'a mut T) -> Self {
72072        unsafe {
72073            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
72074            (*next_ptr).p_next = self.inner.p_next as *mut _;
72075            self.inner.p_next = <*mut BaseOutStructure>::cast::<
72076                core::ffi::c_void,
72077            >(next_ptr) as *const _;
72078        }
72079        self
72080    }
72081}
72082impl<'a> core::ops::Deref for BindMemoryStatusBuilder<'a> {
72083    type Target = BindMemoryStatus;
72084    #[inline]
72085    fn deref(&self) -> &Self::Target {
72086        &self.inner
72087    }
72088}
72089impl<'a> core::ops::DerefMut for BindMemoryStatusBuilder<'a> {
72090    #[inline]
72091    fn deref_mut(&mut self) -> &mut Self::Target {
72092        &mut self.inner
72093    }
72094}
72095///Builder for [`PhysicalDeviceTileMemoryHeapFeaturesQCOM`] with lifetime-tied pNext safety.
72096pub struct PhysicalDeviceTileMemoryHeapFeaturesQCOMBuilder<'a> {
72097    inner: PhysicalDeviceTileMemoryHeapFeaturesQCOM,
72098    _marker: core::marker::PhantomData<&'a ()>,
72099}
72100impl PhysicalDeviceTileMemoryHeapFeaturesQCOM {
72101    /// Start building this struct; `s_type` is already set to the correct variant.
72102    #[inline]
72103    pub fn builder<'a>() -> PhysicalDeviceTileMemoryHeapFeaturesQCOMBuilder<'a> {
72104        PhysicalDeviceTileMemoryHeapFeaturesQCOMBuilder {
72105            inner: PhysicalDeviceTileMemoryHeapFeaturesQCOM {
72106                s_type: StructureType::from_raw(1000547000i32),
72107                ..Default::default()
72108            },
72109            _marker: core::marker::PhantomData,
72110        }
72111    }
72112}
72113impl<'a> PhysicalDeviceTileMemoryHeapFeaturesQCOMBuilder<'a> {
72114    #[inline]
72115    pub fn tile_memory_heap(mut self, value: bool) -> Self {
72116        self.inner.tile_memory_heap = value as u32;
72117        self
72118    }
72119    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceTileMemoryHeapFeaturesQCOM`]'s **Extended By** section for valid types.
72120    #[inline]
72121    pub fn push_next<T: ExtendsPhysicalDeviceTileMemoryHeapFeaturesQCOM>(
72122        mut self,
72123        next: &'a mut T,
72124    ) -> Self {
72125        unsafe {
72126            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
72127            (*next_ptr).p_next = self.inner.p_next as *mut _;
72128            self.inner.p_next = <*mut BaseOutStructure>::cast::<
72129                core::ffi::c_void,
72130            >(next_ptr);
72131        }
72132        self
72133    }
72134}
72135impl<'a> core::ops::Deref for PhysicalDeviceTileMemoryHeapFeaturesQCOMBuilder<'a> {
72136    type Target = PhysicalDeviceTileMemoryHeapFeaturesQCOM;
72137    #[inline]
72138    fn deref(&self) -> &Self::Target {
72139        &self.inner
72140    }
72141}
72142impl<'a> core::ops::DerefMut for PhysicalDeviceTileMemoryHeapFeaturesQCOMBuilder<'a> {
72143    #[inline]
72144    fn deref_mut(&mut self) -> &mut Self::Target {
72145        &mut self.inner
72146    }
72147}
72148///Builder for [`PhysicalDeviceTileMemoryHeapPropertiesQCOM`] with lifetime-tied pNext safety.
72149pub struct PhysicalDeviceTileMemoryHeapPropertiesQCOMBuilder<'a> {
72150    inner: PhysicalDeviceTileMemoryHeapPropertiesQCOM,
72151    _marker: core::marker::PhantomData<&'a ()>,
72152}
72153impl PhysicalDeviceTileMemoryHeapPropertiesQCOM {
72154    /// Start building this struct; `s_type` is already set to the correct variant.
72155    #[inline]
72156    pub fn builder<'a>() -> PhysicalDeviceTileMemoryHeapPropertiesQCOMBuilder<'a> {
72157        PhysicalDeviceTileMemoryHeapPropertiesQCOMBuilder {
72158            inner: PhysicalDeviceTileMemoryHeapPropertiesQCOM {
72159                s_type: StructureType::from_raw(1000547001i32),
72160                ..Default::default()
72161            },
72162            _marker: core::marker::PhantomData,
72163        }
72164    }
72165}
72166impl<'a> PhysicalDeviceTileMemoryHeapPropertiesQCOMBuilder<'a> {
72167    #[inline]
72168    pub fn queue_submit_boundary(mut self, value: bool) -> Self {
72169        self.inner.queue_submit_boundary = value as u32;
72170        self
72171    }
72172    #[inline]
72173    pub fn tile_buffer_transfers(mut self, value: bool) -> Self {
72174        self.inner.tile_buffer_transfers = value as u32;
72175        self
72176    }
72177    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceTileMemoryHeapPropertiesQCOM`]'s **Extended By** section for valid types.
72178    #[inline]
72179    pub fn push_next<T: ExtendsPhysicalDeviceTileMemoryHeapPropertiesQCOM>(
72180        mut self,
72181        next: &'a mut T,
72182    ) -> Self {
72183        unsafe {
72184            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
72185            (*next_ptr).p_next = self.inner.p_next as *mut _;
72186            self.inner.p_next = <*mut BaseOutStructure>::cast::<
72187                core::ffi::c_void,
72188            >(next_ptr);
72189        }
72190        self
72191    }
72192}
72193impl<'a> core::ops::Deref for PhysicalDeviceTileMemoryHeapPropertiesQCOMBuilder<'a> {
72194    type Target = PhysicalDeviceTileMemoryHeapPropertiesQCOM;
72195    #[inline]
72196    fn deref(&self) -> &Self::Target {
72197        &self.inner
72198    }
72199}
72200impl<'a> core::ops::DerefMut for PhysicalDeviceTileMemoryHeapPropertiesQCOMBuilder<'a> {
72201    #[inline]
72202    fn deref_mut(&mut self) -> &mut Self::Target {
72203        &mut self.inner
72204    }
72205}
72206///Builder for [`TileMemorySizeInfoQCOM`] with lifetime-tied pNext safety.
72207pub struct TileMemorySizeInfoQCOMBuilder<'a> {
72208    inner: TileMemorySizeInfoQCOM,
72209    _marker: core::marker::PhantomData<&'a ()>,
72210}
72211impl TileMemorySizeInfoQCOM {
72212    /// Start building this struct; `s_type` is already set to the correct variant.
72213    #[inline]
72214    pub fn builder<'a>() -> TileMemorySizeInfoQCOMBuilder<'a> {
72215        TileMemorySizeInfoQCOMBuilder {
72216            inner: TileMemorySizeInfoQCOM {
72217                s_type: StructureType::from_raw(1000547004i32),
72218                ..Default::default()
72219            },
72220            _marker: core::marker::PhantomData,
72221        }
72222    }
72223}
72224impl<'a> TileMemorySizeInfoQCOMBuilder<'a> {
72225    #[inline]
72226    pub fn size(mut self, value: u64) -> Self {
72227        self.inner.size = value;
72228        self
72229    }
72230    ///Prepend a struct to the pNext chain. See [`TileMemorySizeInfoQCOM`]'s **Extended By** section for valid types.
72231    #[inline]
72232    pub fn push_next<T: ExtendsTileMemorySizeInfoQCOM>(
72233        mut self,
72234        next: &'a mut T,
72235    ) -> Self {
72236        unsafe {
72237            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
72238            (*next_ptr).p_next = self.inner.p_next as *mut _;
72239            self.inner.p_next = <*mut BaseOutStructure>::cast::<
72240                core::ffi::c_void,
72241            >(next_ptr) as *const _;
72242        }
72243        self
72244    }
72245}
72246impl<'a> core::ops::Deref for TileMemorySizeInfoQCOMBuilder<'a> {
72247    type Target = TileMemorySizeInfoQCOM;
72248    #[inline]
72249    fn deref(&self) -> &Self::Target {
72250        &self.inner
72251    }
72252}
72253impl<'a> core::ops::DerefMut for TileMemorySizeInfoQCOMBuilder<'a> {
72254    #[inline]
72255    fn deref_mut(&mut self) -> &mut Self::Target {
72256        &mut self.inner
72257    }
72258}
72259///Builder for [`TileMemoryRequirementsQCOM`] with lifetime-tied pNext safety.
72260pub struct TileMemoryRequirementsQCOMBuilder<'a> {
72261    inner: TileMemoryRequirementsQCOM,
72262    _marker: core::marker::PhantomData<&'a ()>,
72263}
72264impl TileMemoryRequirementsQCOM {
72265    /// Start building this struct; `s_type` is already set to the correct variant.
72266    #[inline]
72267    pub fn builder<'a>() -> TileMemoryRequirementsQCOMBuilder<'a> {
72268        TileMemoryRequirementsQCOMBuilder {
72269            inner: TileMemoryRequirementsQCOM {
72270                s_type: StructureType::from_raw(1000547002i32),
72271                ..Default::default()
72272            },
72273            _marker: core::marker::PhantomData,
72274        }
72275    }
72276}
72277impl<'a> TileMemoryRequirementsQCOMBuilder<'a> {
72278    #[inline]
72279    pub fn size(mut self, value: u64) -> Self {
72280        self.inner.size = value;
72281        self
72282    }
72283    #[inline]
72284    pub fn alignment(mut self, value: u64) -> Self {
72285        self.inner.alignment = value;
72286        self
72287    }
72288    ///Prepend a struct to the pNext chain. See [`TileMemoryRequirementsQCOM`]'s **Extended By** section for valid types.
72289    #[inline]
72290    pub fn push_next<T: ExtendsTileMemoryRequirementsQCOM>(
72291        mut self,
72292        next: &'a mut T,
72293    ) -> Self {
72294        unsafe {
72295            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
72296            (*next_ptr).p_next = self.inner.p_next as *mut _;
72297            self.inner.p_next = <*mut BaseOutStructure>::cast::<
72298                core::ffi::c_void,
72299            >(next_ptr);
72300        }
72301        self
72302    }
72303}
72304impl<'a> core::ops::Deref for TileMemoryRequirementsQCOMBuilder<'a> {
72305    type Target = TileMemoryRequirementsQCOM;
72306    #[inline]
72307    fn deref(&self) -> &Self::Target {
72308        &self.inner
72309    }
72310}
72311impl<'a> core::ops::DerefMut for TileMemoryRequirementsQCOMBuilder<'a> {
72312    #[inline]
72313    fn deref_mut(&mut self) -> &mut Self::Target {
72314        &mut self.inner
72315    }
72316}
72317///Builder for [`BindDescriptorSetsInfo`] with lifetime-tied pNext safety.
72318pub struct BindDescriptorSetsInfoBuilder<'a> {
72319    inner: BindDescriptorSetsInfo,
72320    _marker: core::marker::PhantomData<&'a ()>,
72321}
72322impl BindDescriptorSetsInfo {
72323    /// Start building this struct; `s_type` is already set to the correct variant.
72324    #[inline]
72325    pub fn builder<'a>() -> BindDescriptorSetsInfoBuilder<'a> {
72326        BindDescriptorSetsInfoBuilder {
72327            inner: BindDescriptorSetsInfo {
72328                s_type: StructureType::from_raw(1000545003i32),
72329                ..Default::default()
72330            },
72331            _marker: core::marker::PhantomData,
72332        }
72333    }
72334}
72335impl<'a> BindDescriptorSetsInfoBuilder<'a> {
72336    #[inline]
72337    pub fn stage_flags(mut self, value: ShaderStageFlags) -> Self {
72338        self.inner.stage_flags = value;
72339        self
72340    }
72341    #[inline]
72342    pub fn layout(mut self, value: PipelineLayout) -> Self {
72343        self.inner.layout = value;
72344        self
72345    }
72346    #[inline]
72347    pub fn first_set(mut self, value: u32) -> Self {
72348        self.inner.first_set = value;
72349        self
72350    }
72351    #[inline]
72352    pub fn descriptor_sets(mut self, slice: &'a [DescriptorSet]) -> Self {
72353        self.inner.descriptor_set_count = slice.len() as u32;
72354        self.inner.p_descriptor_sets = slice.as_ptr();
72355        self
72356    }
72357    #[inline]
72358    pub fn dynamic_offset_count(mut self, value: u32) -> Self {
72359        self.inner.dynamic_offset_count = value;
72360        self
72361    }
72362    #[inline]
72363    pub fn dynamic_offsets(mut self, slice: &'a [u32]) -> Self {
72364        self.inner.dynamic_offset_count = slice.len() as u32;
72365        self.inner.p_dynamic_offsets = slice.as_ptr();
72366        self
72367    }
72368    ///Prepend a struct to the pNext chain. See [`BindDescriptorSetsInfo`]'s **Extended By** section for valid types.
72369    #[inline]
72370    pub fn push_next<T: ExtendsBindDescriptorSetsInfo>(
72371        mut self,
72372        next: &'a mut T,
72373    ) -> Self {
72374        unsafe {
72375            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
72376            (*next_ptr).p_next = self.inner.p_next as *mut _;
72377            self.inner.p_next = <*mut BaseOutStructure>::cast::<
72378                core::ffi::c_void,
72379            >(next_ptr) as *const _;
72380        }
72381        self
72382    }
72383}
72384impl<'a> core::ops::Deref for BindDescriptorSetsInfoBuilder<'a> {
72385    type Target = BindDescriptorSetsInfo;
72386    #[inline]
72387    fn deref(&self) -> &Self::Target {
72388        &self.inner
72389    }
72390}
72391impl<'a> core::ops::DerefMut for BindDescriptorSetsInfoBuilder<'a> {
72392    #[inline]
72393    fn deref_mut(&mut self) -> &mut Self::Target {
72394        &mut self.inner
72395    }
72396}
72397///Builder for [`PushConstantsInfo`] with lifetime-tied pNext safety.
72398pub struct PushConstantsInfoBuilder<'a> {
72399    inner: PushConstantsInfo,
72400    _marker: core::marker::PhantomData<&'a ()>,
72401}
72402impl PushConstantsInfo {
72403    /// Start building this struct; `s_type` is already set to the correct variant.
72404    #[inline]
72405    pub fn builder<'a>() -> PushConstantsInfoBuilder<'a> {
72406        PushConstantsInfoBuilder {
72407            inner: PushConstantsInfo {
72408                s_type: StructureType::from_raw(1000545004i32),
72409                ..Default::default()
72410            },
72411            _marker: core::marker::PhantomData,
72412        }
72413    }
72414}
72415impl<'a> PushConstantsInfoBuilder<'a> {
72416    #[inline]
72417    pub fn layout(mut self, value: PipelineLayout) -> Self {
72418        self.inner.layout = value;
72419        self
72420    }
72421    #[inline]
72422    pub fn stage_flags(mut self, value: ShaderStageFlags) -> Self {
72423        self.inner.stage_flags = value;
72424        self
72425    }
72426    #[inline]
72427    pub fn offset(mut self, value: u32) -> Self {
72428        self.inner.offset = value;
72429        self
72430    }
72431    #[inline]
72432    pub fn values(mut self, slice: &'a [core::ffi::c_void]) -> Self {
72433        self.inner.size = slice.len() as u32;
72434        self.inner.p_values = slice.as_ptr();
72435        self
72436    }
72437    ///Prepend a struct to the pNext chain. See [`PushConstantsInfo`]'s **Extended By** section for valid types.
72438    #[inline]
72439    pub fn push_next<T: ExtendsPushConstantsInfo>(mut self, next: &'a mut T) -> Self {
72440        unsafe {
72441            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
72442            (*next_ptr).p_next = self.inner.p_next as *mut _;
72443            self.inner.p_next = <*mut BaseOutStructure>::cast::<
72444                core::ffi::c_void,
72445            >(next_ptr) as *const _;
72446        }
72447        self
72448    }
72449}
72450impl<'a> core::ops::Deref for PushConstantsInfoBuilder<'a> {
72451    type Target = PushConstantsInfo;
72452    #[inline]
72453    fn deref(&self) -> &Self::Target {
72454        &self.inner
72455    }
72456}
72457impl<'a> core::ops::DerefMut for PushConstantsInfoBuilder<'a> {
72458    #[inline]
72459    fn deref_mut(&mut self) -> &mut Self::Target {
72460        &mut self.inner
72461    }
72462}
72463///Builder for [`PushDescriptorSetInfo`] with lifetime-tied pNext safety.
72464pub struct PushDescriptorSetInfoBuilder<'a> {
72465    inner: PushDescriptorSetInfo,
72466    _marker: core::marker::PhantomData<&'a ()>,
72467}
72468impl PushDescriptorSetInfo {
72469    /// Start building this struct; `s_type` is already set to the correct variant.
72470    #[inline]
72471    pub fn builder<'a>() -> PushDescriptorSetInfoBuilder<'a> {
72472        PushDescriptorSetInfoBuilder {
72473            inner: PushDescriptorSetInfo {
72474                s_type: StructureType::from_raw(1000545005i32),
72475                ..Default::default()
72476            },
72477            _marker: core::marker::PhantomData,
72478        }
72479    }
72480}
72481impl<'a> PushDescriptorSetInfoBuilder<'a> {
72482    #[inline]
72483    pub fn stage_flags(mut self, value: ShaderStageFlags) -> Self {
72484        self.inner.stage_flags = value;
72485        self
72486    }
72487    #[inline]
72488    pub fn layout(mut self, value: PipelineLayout) -> Self {
72489        self.inner.layout = value;
72490        self
72491    }
72492    #[inline]
72493    pub fn set(mut self, value: u32) -> Self {
72494        self.inner.set = value;
72495        self
72496    }
72497    #[inline]
72498    pub fn descriptor_writes(mut self, slice: &'a [WriteDescriptorSet]) -> Self {
72499        self.inner.descriptor_write_count = slice.len() as u32;
72500        self.inner.p_descriptor_writes = slice.as_ptr();
72501        self
72502    }
72503    ///Prepend a struct to the pNext chain. See [`PushDescriptorSetInfo`]'s **Extended By** section for valid types.
72504    #[inline]
72505    pub fn push_next<T: ExtendsPushDescriptorSetInfo>(
72506        mut self,
72507        next: &'a mut T,
72508    ) -> Self {
72509        unsafe {
72510            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
72511            (*next_ptr).p_next = self.inner.p_next as *mut _;
72512            self.inner.p_next = <*mut BaseOutStructure>::cast::<
72513                core::ffi::c_void,
72514            >(next_ptr) as *const _;
72515        }
72516        self
72517    }
72518}
72519impl<'a> core::ops::Deref for PushDescriptorSetInfoBuilder<'a> {
72520    type Target = PushDescriptorSetInfo;
72521    #[inline]
72522    fn deref(&self) -> &Self::Target {
72523        &self.inner
72524    }
72525}
72526impl<'a> core::ops::DerefMut for PushDescriptorSetInfoBuilder<'a> {
72527    #[inline]
72528    fn deref_mut(&mut self) -> &mut Self::Target {
72529        &mut self.inner
72530    }
72531}
72532///Builder for [`PushDescriptorSetWithTemplateInfo`] with lifetime-tied pNext safety.
72533pub struct PushDescriptorSetWithTemplateInfoBuilder<'a> {
72534    inner: PushDescriptorSetWithTemplateInfo,
72535    _marker: core::marker::PhantomData<&'a ()>,
72536}
72537impl PushDescriptorSetWithTemplateInfo {
72538    /// Start building this struct; `s_type` is already set to the correct variant.
72539    #[inline]
72540    pub fn builder<'a>() -> PushDescriptorSetWithTemplateInfoBuilder<'a> {
72541        PushDescriptorSetWithTemplateInfoBuilder {
72542            inner: PushDescriptorSetWithTemplateInfo {
72543                s_type: StructureType::from_raw(1000545006i32),
72544                ..Default::default()
72545            },
72546            _marker: core::marker::PhantomData,
72547        }
72548    }
72549}
72550impl<'a> PushDescriptorSetWithTemplateInfoBuilder<'a> {
72551    #[inline]
72552    pub fn descriptor_update_template(
72553        mut self,
72554        value: DescriptorUpdateTemplate,
72555    ) -> Self {
72556        self.inner.descriptor_update_template = value;
72557        self
72558    }
72559    #[inline]
72560    pub fn layout(mut self, value: PipelineLayout) -> Self {
72561        self.inner.layout = value;
72562        self
72563    }
72564    #[inline]
72565    pub fn set(mut self, value: u32) -> Self {
72566        self.inner.set = value;
72567        self
72568    }
72569    #[inline]
72570    pub fn data(mut self, value: *const core::ffi::c_void) -> Self {
72571        self.inner.p_data = value;
72572        self
72573    }
72574    ///Prepend a struct to the pNext chain. See [`PushDescriptorSetWithTemplateInfo`]'s **Extended By** section for valid types.
72575    #[inline]
72576    pub fn push_next<T: ExtendsPushDescriptorSetWithTemplateInfo>(
72577        mut self,
72578        next: &'a mut T,
72579    ) -> Self {
72580        unsafe {
72581            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
72582            (*next_ptr).p_next = self.inner.p_next as *mut _;
72583            self.inner.p_next = <*mut BaseOutStructure>::cast::<
72584                core::ffi::c_void,
72585            >(next_ptr) as *const _;
72586        }
72587        self
72588    }
72589}
72590impl<'a> core::ops::Deref for PushDescriptorSetWithTemplateInfoBuilder<'a> {
72591    type Target = PushDescriptorSetWithTemplateInfo;
72592    #[inline]
72593    fn deref(&self) -> &Self::Target {
72594        &self.inner
72595    }
72596}
72597impl<'a> core::ops::DerefMut for PushDescriptorSetWithTemplateInfoBuilder<'a> {
72598    #[inline]
72599    fn deref_mut(&mut self) -> &mut Self::Target {
72600        &mut self.inner
72601    }
72602}
72603///Builder for [`SetDescriptorBufferOffsetsInfoEXT`] with lifetime-tied pNext safety.
72604pub struct SetDescriptorBufferOffsetsInfoEXTBuilder<'a> {
72605    inner: SetDescriptorBufferOffsetsInfoEXT,
72606    _marker: core::marker::PhantomData<&'a ()>,
72607}
72608impl SetDescriptorBufferOffsetsInfoEXT {
72609    /// Start building this struct; `s_type` is already set to the correct variant.
72610    #[inline]
72611    pub fn builder<'a>() -> SetDescriptorBufferOffsetsInfoEXTBuilder<'a> {
72612        SetDescriptorBufferOffsetsInfoEXTBuilder {
72613            inner: SetDescriptorBufferOffsetsInfoEXT {
72614                s_type: StructureType::from_raw(1000545007i32),
72615                ..Default::default()
72616            },
72617            _marker: core::marker::PhantomData,
72618        }
72619    }
72620}
72621impl<'a> SetDescriptorBufferOffsetsInfoEXTBuilder<'a> {
72622    #[inline]
72623    pub fn stage_flags(mut self, value: ShaderStageFlags) -> Self {
72624        self.inner.stage_flags = value;
72625        self
72626    }
72627    #[inline]
72628    pub fn layout(mut self, value: PipelineLayout) -> Self {
72629        self.inner.layout = value;
72630        self
72631    }
72632    #[inline]
72633    pub fn first_set(mut self, value: u32) -> Self {
72634        self.inner.first_set = value;
72635        self
72636    }
72637    #[inline]
72638    pub fn buffer_indices(mut self, slice: &'a [u32]) -> Self {
72639        self.inner.set_count = slice.len() as u32;
72640        self.inner.p_buffer_indices = slice.as_ptr();
72641        self
72642    }
72643    #[inline]
72644    pub fn offsets(mut self, slice: &'a [u64]) -> Self {
72645        self.inner.set_count = slice.len() as u32;
72646        self.inner.p_offsets = slice.as_ptr();
72647        self
72648    }
72649    ///Prepend a struct to the pNext chain. See [`SetDescriptorBufferOffsetsInfoEXT`]'s **Extended By** section for valid types.
72650    #[inline]
72651    pub fn push_next<T: ExtendsSetDescriptorBufferOffsetsInfoEXT>(
72652        mut self,
72653        next: &'a mut T,
72654    ) -> Self {
72655        unsafe {
72656            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
72657            (*next_ptr).p_next = self.inner.p_next as *mut _;
72658            self.inner.p_next = <*mut BaseOutStructure>::cast::<
72659                core::ffi::c_void,
72660            >(next_ptr) as *const _;
72661        }
72662        self
72663    }
72664}
72665impl<'a> core::ops::Deref for SetDescriptorBufferOffsetsInfoEXTBuilder<'a> {
72666    type Target = SetDescriptorBufferOffsetsInfoEXT;
72667    #[inline]
72668    fn deref(&self) -> &Self::Target {
72669        &self.inner
72670    }
72671}
72672impl<'a> core::ops::DerefMut for SetDescriptorBufferOffsetsInfoEXTBuilder<'a> {
72673    #[inline]
72674    fn deref_mut(&mut self) -> &mut Self::Target {
72675        &mut self.inner
72676    }
72677}
72678///Builder for [`BindDescriptorBufferEmbeddedSamplersInfoEXT`] with lifetime-tied pNext safety.
72679pub struct BindDescriptorBufferEmbeddedSamplersInfoEXTBuilder<'a> {
72680    inner: BindDescriptorBufferEmbeddedSamplersInfoEXT,
72681    _marker: core::marker::PhantomData<&'a ()>,
72682}
72683impl BindDescriptorBufferEmbeddedSamplersInfoEXT {
72684    /// Start building this struct; `s_type` is already set to the correct variant.
72685    #[inline]
72686    pub fn builder<'a>() -> BindDescriptorBufferEmbeddedSamplersInfoEXTBuilder<'a> {
72687        BindDescriptorBufferEmbeddedSamplersInfoEXTBuilder {
72688            inner: BindDescriptorBufferEmbeddedSamplersInfoEXT {
72689                s_type: StructureType::from_raw(1000545008i32),
72690                ..Default::default()
72691            },
72692            _marker: core::marker::PhantomData,
72693        }
72694    }
72695}
72696impl<'a> BindDescriptorBufferEmbeddedSamplersInfoEXTBuilder<'a> {
72697    #[inline]
72698    pub fn stage_flags(mut self, value: ShaderStageFlags) -> Self {
72699        self.inner.stage_flags = value;
72700        self
72701    }
72702    #[inline]
72703    pub fn layout(mut self, value: PipelineLayout) -> Self {
72704        self.inner.layout = value;
72705        self
72706    }
72707    #[inline]
72708    pub fn set(mut self, value: u32) -> Self {
72709        self.inner.set = value;
72710        self
72711    }
72712    ///Prepend a struct to the pNext chain. See [`BindDescriptorBufferEmbeddedSamplersInfoEXT`]'s **Extended By** section for valid types.
72713    #[inline]
72714    pub fn push_next<T: ExtendsBindDescriptorBufferEmbeddedSamplersInfoEXT>(
72715        mut self,
72716        next: &'a mut T,
72717    ) -> Self {
72718        unsafe {
72719            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
72720            (*next_ptr).p_next = self.inner.p_next as *mut _;
72721            self.inner.p_next = <*mut BaseOutStructure>::cast::<
72722                core::ffi::c_void,
72723            >(next_ptr) as *const _;
72724        }
72725        self
72726    }
72727}
72728impl<'a> core::ops::Deref for BindDescriptorBufferEmbeddedSamplersInfoEXTBuilder<'a> {
72729    type Target = BindDescriptorBufferEmbeddedSamplersInfoEXT;
72730    #[inline]
72731    fn deref(&self) -> &Self::Target {
72732        &self.inner
72733    }
72734}
72735impl<'a> core::ops::DerefMut for BindDescriptorBufferEmbeddedSamplersInfoEXTBuilder<'a> {
72736    #[inline]
72737    fn deref_mut(&mut self) -> &mut Self::Target {
72738        &mut self.inner
72739    }
72740}
72741///Builder for [`PhysicalDeviceCubicClampFeaturesQCOM`] with lifetime-tied pNext safety.
72742pub struct PhysicalDeviceCubicClampFeaturesQCOMBuilder<'a> {
72743    inner: PhysicalDeviceCubicClampFeaturesQCOM,
72744    _marker: core::marker::PhantomData<&'a ()>,
72745}
72746impl PhysicalDeviceCubicClampFeaturesQCOM {
72747    /// Start building this struct; `s_type` is already set to the correct variant.
72748    #[inline]
72749    pub fn builder<'a>() -> PhysicalDeviceCubicClampFeaturesQCOMBuilder<'a> {
72750        PhysicalDeviceCubicClampFeaturesQCOMBuilder {
72751            inner: PhysicalDeviceCubicClampFeaturesQCOM {
72752                s_type: StructureType::from_raw(1000521000i32),
72753                ..Default::default()
72754            },
72755            _marker: core::marker::PhantomData,
72756        }
72757    }
72758}
72759impl<'a> PhysicalDeviceCubicClampFeaturesQCOMBuilder<'a> {
72760    #[inline]
72761    pub fn cubic_range_clamp(mut self, value: bool) -> Self {
72762        self.inner.cubic_range_clamp = value as u32;
72763        self
72764    }
72765    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceCubicClampFeaturesQCOM`]'s **Extended By** section for valid types.
72766    #[inline]
72767    pub fn push_next<T: ExtendsPhysicalDeviceCubicClampFeaturesQCOM>(
72768        mut self,
72769        next: &'a mut T,
72770    ) -> Self {
72771        unsafe {
72772            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
72773            (*next_ptr).p_next = self.inner.p_next as *mut _;
72774            self.inner.p_next = <*mut BaseOutStructure>::cast::<
72775                core::ffi::c_void,
72776            >(next_ptr);
72777        }
72778        self
72779    }
72780}
72781impl<'a> core::ops::Deref for PhysicalDeviceCubicClampFeaturesQCOMBuilder<'a> {
72782    type Target = PhysicalDeviceCubicClampFeaturesQCOM;
72783    #[inline]
72784    fn deref(&self) -> &Self::Target {
72785        &self.inner
72786    }
72787}
72788impl<'a> core::ops::DerefMut for PhysicalDeviceCubicClampFeaturesQCOMBuilder<'a> {
72789    #[inline]
72790    fn deref_mut(&mut self) -> &mut Self::Target {
72791        &mut self.inner
72792    }
72793}
72794///Builder for [`PhysicalDeviceYcbcrDegammaFeaturesQCOM`] with lifetime-tied pNext safety.
72795pub struct PhysicalDeviceYcbcrDegammaFeaturesQCOMBuilder<'a> {
72796    inner: PhysicalDeviceYcbcrDegammaFeaturesQCOM,
72797    _marker: core::marker::PhantomData<&'a ()>,
72798}
72799impl PhysicalDeviceYcbcrDegammaFeaturesQCOM {
72800    /// Start building this struct; `s_type` is already set to the correct variant.
72801    #[inline]
72802    pub fn builder<'a>() -> PhysicalDeviceYcbcrDegammaFeaturesQCOMBuilder<'a> {
72803        PhysicalDeviceYcbcrDegammaFeaturesQCOMBuilder {
72804            inner: PhysicalDeviceYcbcrDegammaFeaturesQCOM {
72805                s_type: StructureType::from_raw(1000520000i32),
72806                ..Default::default()
72807            },
72808            _marker: core::marker::PhantomData,
72809        }
72810    }
72811}
72812impl<'a> PhysicalDeviceYcbcrDegammaFeaturesQCOMBuilder<'a> {
72813    #[inline]
72814    pub fn ycbcr_degamma(mut self, value: bool) -> Self {
72815        self.inner.ycbcr_degamma = value as u32;
72816        self
72817    }
72818    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceYcbcrDegammaFeaturesQCOM`]'s **Extended By** section for valid types.
72819    #[inline]
72820    pub fn push_next<T: ExtendsPhysicalDeviceYcbcrDegammaFeaturesQCOM>(
72821        mut self,
72822        next: &'a mut T,
72823    ) -> Self {
72824        unsafe {
72825            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
72826            (*next_ptr).p_next = self.inner.p_next as *mut _;
72827            self.inner.p_next = <*mut BaseOutStructure>::cast::<
72828                core::ffi::c_void,
72829            >(next_ptr);
72830        }
72831        self
72832    }
72833}
72834impl<'a> core::ops::Deref for PhysicalDeviceYcbcrDegammaFeaturesQCOMBuilder<'a> {
72835    type Target = PhysicalDeviceYcbcrDegammaFeaturesQCOM;
72836    #[inline]
72837    fn deref(&self) -> &Self::Target {
72838        &self.inner
72839    }
72840}
72841impl<'a> core::ops::DerefMut for PhysicalDeviceYcbcrDegammaFeaturesQCOMBuilder<'a> {
72842    #[inline]
72843    fn deref_mut(&mut self) -> &mut Self::Target {
72844        &mut self.inner
72845    }
72846}
72847///Builder for [`SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM`] with lifetime-tied pNext safety.
72848pub struct SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOMBuilder<'a> {
72849    inner: SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM,
72850    _marker: core::marker::PhantomData<&'a ()>,
72851}
72852impl SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {
72853    /// Start building this struct; `s_type` is already set to the correct variant.
72854    #[inline]
72855    pub fn builder<'a>() -> SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOMBuilder<'a> {
72856        SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOMBuilder {
72857            inner: SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {
72858                s_type: StructureType::from_raw(1000520001i32),
72859                ..Default::default()
72860            },
72861            _marker: core::marker::PhantomData,
72862        }
72863    }
72864}
72865impl<'a> SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOMBuilder<'a> {
72866    #[inline]
72867    pub fn enable_y_degamma(mut self, value: bool) -> Self {
72868        self.inner.enable_y_degamma = value as u32;
72869        self
72870    }
72871    #[inline]
72872    pub fn enable_cb_cr_degamma(mut self, value: bool) -> Self {
72873        self.inner.enable_cb_cr_degamma = value as u32;
72874        self
72875    }
72876    ///Prepend a struct to the pNext chain. See [`SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM`]'s **Extended By** section for valid types.
72877    #[inline]
72878    pub fn push_next<T: ExtendsSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM>(
72879        mut self,
72880        next: &'a mut T,
72881    ) -> Self {
72882        unsafe {
72883            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
72884            (*next_ptr).p_next = self.inner.p_next as *mut _;
72885            self.inner.p_next = <*mut BaseOutStructure>::cast::<
72886                core::ffi::c_void,
72887            >(next_ptr);
72888        }
72889        self
72890    }
72891}
72892impl<'a> core::ops::Deref
72893for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOMBuilder<'a> {
72894    type Target = SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM;
72895    #[inline]
72896    fn deref(&self) -> &Self::Target {
72897        &self.inner
72898    }
72899}
72900impl<'a> core::ops::DerefMut
72901for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOMBuilder<'a> {
72902    #[inline]
72903    fn deref_mut(&mut self) -> &mut Self::Target {
72904        &mut self.inner
72905    }
72906}
72907///Builder for [`PhysicalDeviceCubicWeightsFeaturesQCOM`] with lifetime-tied pNext safety.
72908pub struct PhysicalDeviceCubicWeightsFeaturesQCOMBuilder<'a> {
72909    inner: PhysicalDeviceCubicWeightsFeaturesQCOM,
72910    _marker: core::marker::PhantomData<&'a ()>,
72911}
72912impl PhysicalDeviceCubicWeightsFeaturesQCOM {
72913    /// Start building this struct; `s_type` is already set to the correct variant.
72914    #[inline]
72915    pub fn builder<'a>() -> PhysicalDeviceCubicWeightsFeaturesQCOMBuilder<'a> {
72916        PhysicalDeviceCubicWeightsFeaturesQCOMBuilder {
72917            inner: PhysicalDeviceCubicWeightsFeaturesQCOM {
72918                s_type: StructureType::from_raw(1000519001i32),
72919                ..Default::default()
72920            },
72921            _marker: core::marker::PhantomData,
72922        }
72923    }
72924}
72925impl<'a> PhysicalDeviceCubicWeightsFeaturesQCOMBuilder<'a> {
72926    #[inline]
72927    pub fn selectable_cubic_weights(mut self, value: bool) -> Self {
72928        self.inner.selectable_cubic_weights = value as u32;
72929        self
72930    }
72931    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceCubicWeightsFeaturesQCOM`]'s **Extended By** section for valid types.
72932    #[inline]
72933    pub fn push_next<T: ExtendsPhysicalDeviceCubicWeightsFeaturesQCOM>(
72934        mut self,
72935        next: &'a mut T,
72936    ) -> Self {
72937        unsafe {
72938            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
72939            (*next_ptr).p_next = self.inner.p_next as *mut _;
72940            self.inner.p_next = <*mut BaseOutStructure>::cast::<
72941                core::ffi::c_void,
72942            >(next_ptr);
72943        }
72944        self
72945    }
72946}
72947impl<'a> core::ops::Deref for PhysicalDeviceCubicWeightsFeaturesQCOMBuilder<'a> {
72948    type Target = PhysicalDeviceCubicWeightsFeaturesQCOM;
72949    #[inline]
72950    fn deref(&self) -> &Self::Target {
72951        &self.inner
72952    }
72953}
72954impl<'a> core::ops::DerefMut for PhysicalDeviceCubicWeightsFeaturesQCOMBuilder<'a> {
72955    #[inline]
72956    fn deref_mut(&mut self) -> &mut Self::Target {
72957        &mut self.inner
72958    }
72959}
72960///Builder for [`SamplerCubicWeightsCreateInfoQCOM`] with lifetime-tied pNext safety.
72961pub struct SamplerCubicWeightsCreateInfoQCOMBuilder<'a> {
72962    inner: SamplerCubicWeightsCreateInfoQCOM,
72963    _marker: core::marker::PhantomData<&'a ()>,
72964}
72965impl SamplerCubicWeightsCreateInfoQCOM {
72966    /// Start building this struct; `s_type` is already set to the correct variant.
72967    #[inline]
72968    pub fn builder<'a>() -> SamplerCubicWeightsCreateInfoQCOMBuilder<'a> {
72969        SamplerCubicWeightsCreateInfoQCOMBuilder {
72970            inner: SamplerCubicWeightsCreateInfoQCOM {
72971                s_type: StructureType::from_raw(1000519000i32),
72972                ..Default::default()
72973            },
72974            _marker: core::marker::PhantomData,
72975        }
72976    }
72977}
72978impl<'a> SamplerCubicWeightsCreateInfoQCOMBuilder<'a> {
72979    #[inline]
72980    pub fn cubic_weights(mut self, value: CubicFilterWeightsQCOM) -> Self {
72981        self.inner.cubic_weights = value;
72982        self
72983    }
72984    ///Prepend a struct to the pNext chain. See [`SamplerCubicWeightsCreateInfoQCOM`]'s **Extended By** section for valid types.
72985    #[inline]
72986    pub fn push_next<T: ExtendsSamplerCubicWeightsCreateInfoQCOM>(
72987        mut self,
72988        next: &'a mut T,
72989    ) -> Self {
72990        unsafe {
72991            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
72992            (*next_ptr).p_next = self.inner.p_next as *mut _;
72993            self.inner.p_next = <*mut BaseOutStructure>::cast::<
72994                core::ffi::c_void,
72995            >(next_ptr) as *const _;
72996        }
72997        self
72998    }
72999}
73000impl<'a> core::ops::Deref for SamplerCubicWeightsCreateInfoQCOMBuilder<'a> {
73001    type Target = SamplerCubicWeightsCreateInfoQCOM;
73002    #[inline]
73003    fn deref(&self) -> &Self::Target {
73004        &self.inner
73005    }
73006}
73007impl<'a> core::ops::DerefMut for SamplerCubicWeightsCreateInfoQCOMBuilder<'a> {
73008    #[inline]
73009    fn deref_mut(&mut self) -> &mut Self::Target {
73010        &mut self.inner
73011    }
73012}
73013///Builder for [`BlitImageCubicWeightsInfoQCOM`] with lifetime-tied pNext safety.
73014pub struct BlitImageCubicWeightsInfoQCOMBuilder<'a> {
73015    inner: BlitImageCubicWeightsInfoQCOM,
73016    _marker: core::marker::PhantomData<&'a ()>,
73017}
73018impl BlitImageCubicWeightsInfoQCOM {
73019    /// Start building this struct; `s_type` is already set to the correct variant.
73020    #[inline]
73021    pub fn builder<'a>() -> BlitImageCubicWeightsInfoQCOMBuilder<'a> {
73022        BlitImageCubicWeightsInfoQCOMBuilder {
73023            inner: BlitImageCubicWeightsInfoQCOM {
73024                s_type: StructureType::from_raw(1000519002i32),
73025                ..Default::default()
73026            },
73027            _marker: core::marker::PhantomData,
73028        }
73029    }
73030}
73031impl<'a> BlitImageCubicWeightsInfoQCOMBuilder<'a> {
73032    #[inline]
73033    pub fn cubic_weights(mut self, value: CubicFilterWeightsQCOM) -> Self {
73034        self.inner.cubic_weights = value;
73035        self
73036    }
73037    ///Prepend a struct to the pNext chain. See [`BlitImageCubicWeightsInfoQCOM`]'s **Extended By** section for valid types.
73038    #[inline]
73039    pub fn push_next<T: ExtendsBlitImageCubicWeightsInfoQCOM>(
73040        mut self,
73041        next: &'a mut T,
73042    ) -> Self {
73043        unsafe {
73044            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
73045            (*next_ptr).p_next = self.inner.p_next as *mut _;
73046            self.inner.p_next = <*mut BaseOutStructure>::cast::<
73047                core::ffi::c_void,
73048            >(next_ptr) as *const _;
73049        }
73050        self
73051    }
73052}
73053impl<'a> core::ops::Deref for BlitImageCubicWeightsInfoQCOMBuilder<'a> {
73054    type Target = BlitImageCubicWeightsInfoQCOM;
73055    #[inline]
73056    fn deref(&self) -> &Self::Target {
73057        &self.inner
73058    }
73059}
73060impl<'a> core::ops::DerefMut for BlitImageCubicWeightsInfoQCOMBuilder<'a> {
73061    #[inline]
73062    fn deref_mut(&mut self) -> &mut Self::Target {
73063        &mut self.inner
73064    }
73065}
73066///Builder for [`PhysicalDeviceImageProcessing2FeaturesQCOM`] with lifetime-tied pNext safety.
73067pub struct PhysicalDeviceImageProcessing2FeaturesQCOMBuilder<'a> {
73068    inner: PhysicalDeviceImageProcessing2FeaturesQCOM,
73069    _marker: core::marker::PhantomData<&'a ()>,
73070}
73071impl PhysicalDeviceImageProcessing2FeaturesQCOM {
73072    /// Start building this struct; `s_type` is already set to the correct variant.
73073    #[inline]
73074    pub fn builder<'a>() -> PhysicalDeviceImageProcessing2FeaturesQCOMBuilder<'a> {
73075        PhysicalDeviceImageProcessing2FeaturesQCOMBuilder {
73076            inner: PhysicalDeviceImageProcessing2FeaturesQCOM {
73077                s_type: StructureType::from_raw(1000518000i32),
73078                ..Default::default()
73079            },
73080            _marker: core::marker::PhantomData,
73081        }
73082    }
73083}
73084impl<'a> PhysicalDeviceImageProcessing2FeaturesQCOMBuilder<'a> {
73085    #[inline]
73086    pub fn texture_block_match2(mut self, value: bool) -> Self {
73087        self.inner.texture_block_match2 = value as u32;
73088        self
73089    }
73090    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceImageProcessing2FeaturesQCOM`]'s **Extended By** section for valid types.
73091    #[inline]
73092    pub fn push_next<T: ExtendsPhysicalDeviceImageProcessing2FeaturesQCOM>(
73093        mut self,
73094        next: &'a mut T,
73095    ) -> Self {
73096        unsafe {
73097            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
73098            (*next_ptr).p_next = self.inner.p_next as *mut _;
73099            self.inner.p_next = <*mut BaseOutStructure>::cast::<
73100                core::ffi::c_void,
73101            >(next_ptr);
73102        }
73103        self
73104    }
73105}
73106impl<'a> core::ops::Deref for PhysicalDeviceImageProcessing2FeaturesQCOMBuilder<'a> {
73107    type Target = PhysicalDeviceImageProcessing2FeaturesQCOM;
73108    #[inline]
73109    fn deref(&self) -> &Self::Target {
73110        &self.inner
73111    }
73112}
73113impl<'a> core::ops::DerefMut for PhysicalDeviceImageProcessing2FeaturesQCOMBuilder<'a> {
73114    #[inline]
73115    fn deref_mut(&mut self) -> &mut Self::Target {
73116        &mut self.inner
73117    }
73118}
73119///Builder for [`PhysicalDeviceImageProcessing2PropertiesQCOM`] with lifetime-tied pNext safety.
73120pub struct PhysicalDeviceImageProcessing2PropertiesQCOMBuilder<'a> {
73121    inner: PhysicalDeviceImageProcessing2PropertiesQCOM,
73122    _marker: core::marker::PhantomData<&'a ()>,
73123}
73124impl PhysicalDeviceImageProcessing2PropertiesQCOM {
73125    /// Start building this struct; `s_type` is already set to the correct variant.
73126    #[inline]
73127    pub fn builder<'a>() -> PhysicalDeviceImageProcessing2PropertiesQCOMBuilder<'a> {
73128        PhysicalDeviceImageProcessing2PropertiesQCOMBuilder {
73129            inner: PhysicalDeviceImageProcessing2PropertiesQCOM {
73130                s_type: StructureType::from_raw(1000518001i32),
73131                ..Default::default()
73132            },
73133            _marker: core::marker::PhantomData,
73134        }
73135    }
73136}
73137impl<'a> PhysicalDeviceImageProcessing2PropertiesQCOMBuilder<'a> {
73138    #[inline]
73139    pub fn max_block_match_window(mut self, value: Extent2D) -> Self {
73140        self.inner.max_block_match_window = value;
73141        self
73142    }
73143}
73144impl<'a> core::ops::Deref for PhysicalDeviceImageProcessing2PropertiesQCOMBuilder<'a> {
73145    type Target = PhysicalDeviceImageProcessing2PropertiesQCOM;
73146    #[inline]
73147    fn deref(&self) -> &Self::Target {
73148        &self.inner
73149    }
73150}
73151impl<'a> core::ops::DerefMut
73152for PhysicalDeviceImageProcessing2PropertiesQCOMBuilder<'a> {
73153    #[inline]
73154    fn deref_mut(&mut self) -> &mut Self::Target {
73155        &mut self.inner
73156    }
73157}
73158///Builder for [`SamplerBlockMatchWindowCreateInfoQCOM`] with lifetime-tied pNext safety.
73159pub struct SamplerBlockMatchWindowCreateInfoQCOMBuilder<'a> {
73160    inner: SamplerBlockMatchWindowCreateInfoQCOM,
73161    _marker: core::marker::PhantomData<&'a ()>,
73162}
73163impl SamplerBlockMatchWindowCreateInfoQCOM {
73164    /// Start building this struct; `s_type` is already set to the correct variant.
73165    #[inline]
73166    pub fn builder<'a>() -> SamplerBlockMatchWindowCreateInfoQCOMBuilder<'a> {
73167        SamplerBlockMatchWindowCreateInfoQCOMBuilder {
73168            inner: SamplerBlockMatchWindowCreateInfoQCOM {
73169                s_type: StructureType::from_raw(1000518002i32),
73170                ..Default::default()
73171            },
73172            _marker: core::marker::PhantomData,
73173        }
73174    }
73175}
73176impl<'a> SamplerBlockMatchWindowCreateInfoQCOMBuilder<'a> {
73177    #[inline]
73178    pub fn window_extent(mut self, value: Extent2D) -> Self {
73179        self.inner.window_extent = value;
73180        self
73181    }
73182    #[inline]
73183    pub fn window_compare_mode(
73184        mut self,
73185        value: BlockMatchWindowCompareModeQCOM,
73186    ) -> Self {
73187        self.inner.window_compare_mode = value;
73188        self
73189    }
73190    ///Prepend a struct to the pNext chain. See [`SamplerBlockMatchWindowCreateInfoQCOM`]'s **Extended By** section for valid types.
73191    #[inline]
73192    pub fn push_next<T: ExtendsSamplerBlockMatchWindowCreateInfoQCOM>(
73193        mut self,
73194        next: &'a mut T,
73195    ) -> Self {
73196        unsafe {
73197            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
73198            (*next_ptr).p_next = self.inner.p_next as *mut _;
73199            self.inner.p_next = <*mut BaseOutStructure>::cast::<
73200                core::ffi::c_void,
73201            >(next_ptr) as *const _;
73202        }
73203        self
73204    }
73205}
73206impl<'a> core::ops::Deref for SamplerBlockMatchWindowCreateInfoQCOMBuilder<'a> {
73207    type Target = SamplerBlockMatchWindowCreateInfoQCOM;
73208    #[inline]
73209    fn deref(&self) -> &Self::Target {
73210        &self.inner
73211    }
73212}
73213impl<'a> core::ops::DerefMut for SamplerBlockMatchWindowCreateInfoQCOMBuilder<'a> {
73214    #[inline]
73215    fn deref_mut(&mut self) -> &mut Self::Target {
73216        &mut self.inner
73217    }
73218}
73219///Builder for [`PhysicalDeviceDescriptorPoolOverallocationFeaturesNV`] with lifetime-tied pNext safety.
73220pub struct PhysicalDeviceDescriptorPoolOverallocationFeaturesNVBuilder<'a> {
73221    inner: PhysicalDeviceDescriptorPoolOverallocationFeaturesNV,
73222    _marker: core::marker::PhantomData<&'a ()>,
73223}
73224impl PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
73225    /// Start building this struct; `s_type` is already set to the correct variant.
73226    #[inline]
73227    pub fn builder<'a>() -> PhysicalDeviceDescriptorPoolOverallocationFeaturesNVBuilder<
73228        'a,
73229    > {
73230        PhysicalDeviceDescriptorPoolOverallocationFeaturesNVBuilder {
73231            inner: PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
73232                s_type: StructureType::from_raw(1000546000i32),
73233                ..Default::default()
73234            },
73235            _marker: core::marker::PhantomData,
73236        }
73237    }
73238}
73239impl<'a> PhysicalDeviceDescriptorPoolOverallocationFeaturesNVBuilder<'a> {
73240    #[inline]
73241    pub fn descriptor_pool_overallocation(mut self, value: bool) -> Self {
73242        self.inner.descriptor_pool_overallocation = value as u32;
73243        self
73244    }
73245    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDescriptorPoolOverallocationFeaturesNV`]'s **Extended By** section for valid types.
73246    #[inline]
73247    pub fn push_next<T: ExtendsPhysicalDeviceDescriptorPoolOverallocationFeaturesNV>(
73248        mut self,
73249        next: &'a mut T,
73250    ) -> Self {
73251        unsafe {
73252            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
73253            (*next_ptr).p_next = self.inner.p_next as *mut _;
73254            self.inner.p_next = <*mut BaseOutStructure>::cast::<
73255                core::ffi::c_void,
73256            >(next_ptr);
73257        }
73258        self
73259    }
73260}
73261impl<'a> core::ops::Deref
73262for PhysicalDeviceDescriptorPoolOverallocationFeaturesNVBuilder<'a> {
73263    type Target = PhysicalDeviceDescriptorPoolOverallocationFeaturesNV;
73264    #[inline]
73265    fn deref(&self) -> &Self::Target {
73266        &self.inner
73267    }
73268}
73269impl<'a> core::ops::DerefMut
73270for PhysicalDeviceDescriptorPoolOverallocationFeaturesNVBuilder<'a> {
73271    #[inline]
73272    fn deref_mut(&mut self) -> &mut Self::Target {
73273        &mut self.inner
73274    }
73275}
73276///Builder for [`PhysicalDeviceLayeredDriverPropertiesMSFT`] with lifetime-tied pNext safety.
73277pub struct PhysicalDeviceLayeredDriverPropertiesMSFTBuilder<'a> {
73278    inner: PhysicalDeviceLayeredDriverPropertiesMSFT,
73279    _marker: core::marker::PhantomData<&'a ()>,
73280}
73281impl PhysicalDeviceLayeredDriverPropertiesMSFT {
73282    /// Start building this struct; `s_type` is already set to the correct variant.
73283    #[inline]
73284    pub fn builder<'a>() -> PhysicalDeviceLayeredDriverPropertiesMSFTBuilder<'a> {
73285        PhysicalDeviceLayeredDriverPropertiesMSFTBuilder {
73286            inner: PhysicalDeviceLayeredDriverPropertiesMSFT {
73287                s_type: StructureType::from_raw(1000530000i32),
73288                ..Default::default()
73289            },
73290            _marker: core::marker::PhantomData,
73291        }
73292    }
73293}
73294impl<'a> PhysicalDeviceLayeredDriverPropertiesMSFTBuilder<'a> {
73295    #[inline]
73296    pub fn underlying_api(mut self, value: LayeredDriverUnderlyingApiMSFT) -> Self {
73297        self.inner.underlying_api = value;
73298        self
73299    }
73300}
73301impl<'a> core::ops::Deref for PhysicalDeviceLayeredDriverPropertiesMSFTBuilder<'a> {
73302    type Target = PhysicalDeviceLayeredDriverPropertiesMSFT;
73303    #[inline]
73304    fn deref(&self) -> &Self::Target {
73305        &self.inner
73306    }
73307}
73308impl<'a> core::ops::DerefMut for PhysicalDeviceLayeredDriverPropertiesMSFTBuilder<'a> {
73309    #[inline]
73310    fn deref_mut(&mut self) -> &mut Self::Target {
73311        &mut self.inner
73312    }
73313}
73314///Builder for [`PhysicalDevicePerStageDescriptorSetFeaturesNV`] with lifetime-tied pNext safety.
73315pub struct PhysicalDevicePerStageDescriptorSetFeaturesNVBuilder<'a> {
73316    inner: PhysicalDevicePerStageDescriptorSetFeaturesNV,
73317    _marker: core::marker::PhantomData<&'a ()>,
73318}
73319impl PhysicalDevicePerStageDescriptorSetFeaturesNV {
73320    /// Start building this struct; `s_type` is already set to the correct variant.
73321    #[inline]
73322    pub fn builder<'a>() -> PhysicalDevicePerStageDescriptorSetFeaturesNVBuilder<'a> {
73323        PhysicalDevicePerStageDescriptorSetFeaturesNVBuilder {
73324            inner: PhysicalDevicePerStageDescriptorSetFeaturesNV {
73325                s_type: StructureType::from_raw(1000516000i32),
73326                ..Default::default()
73327            },
73328            _marker: core::marker::PhantomData,
73329        }
73330    }
73331}
73332impl<'a> PhysicalDevicePerStageDescriptorSetFeaturesNVBuilder<'a> {
73333    #[inline]
73334    pub fn per_stage_descriptor_set(mut self, value: bool) -> Self {
73335        self.inner.per_stage_descriptor_set = value as u32;
73336        self
73337    }
73338    #[inline]
73339    pub fn dynamic_pipeline_layout(mut self, value: bool) -> Self {
73340        self.inner.dynamic_pipeline_layout = value as u32;
73341        self
73342    }
73343    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePerStageDescriptorSetFeaturesNV`]'s **Extended By** section for valid types.
73344    #[inline]
73345    pub fn push_next<T: ExtendsPhysicalDevicePerStageDescriptorSetFeaturesNV>(
73346        mut self,
73347        next: &'a mut T,
73348    ) -> Self {
73349        unsafe {
73350            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
73351            (*next_ptr).p_next = self.inner.p_next as *mut _;
73352            self.inner.p_next = <*mut BaseOutStructure>::cast::<
73353                core::ffi::c_void,
73354            >(next_ptr);
73355        }
73356        self
73357    }
73358}
73359impl<'a> core::ops::Deref for PhysicalDevicePerStageDescriptorSetFeaturesNVBuilder<'a> {
73360    type Target = PhysicalDevicePerStageDescriptorSetFeaturesNV;
73361    #[inline]
73362    fn deref(&self) -> &Self::Target {
73363        &self.inner
73364    }
73365}
73366impl<'a> core::ops::DerefMut
73367for PhysicalDevicePerStageDescriptorSetFeaturesNVBuilder<'a> {
73368    #[inline]
73369    fn deref_mut(&mut self) -> &mut Self::Target {
73370        &mut self.inner
73371    }
73372}
73373///Builder for [`PhysicalDeviceExternalFormatResolveFeaturesANDROID`] with lifetime-tied pNext safety.
73374pub struct PhysicalDeviceExternalFormatResolveFeaturesANDROIDBuilder<'a> {
73375    inner: PhysicalDeviceExternalFormatResolveFeaturesANDROID,
73376    _marker: core::marker::PhantomData<&'a ()>,
73377}
73378impl PhysicalDeviceExternalFormatResolveFeaturesANDROID {
73379    /// Start building this struct; `s_type` is already set to the correct variant.
73380    #[inline]
73381    pub fn builder<'a>() -> PhysicalDeviceExternalFormatResolveFeaturesANDROIDBuilder<
73382        'a,
73383    > {
73384        PhysicalDeviceExternalFormatResolveFeaturesANDROIDBuilder {
73385            inner: PhysicalDeviceExternalFormatResolveFeaturesANDROID {
73386                s_type: StructureType::from_raw(1000468000i32),
73387                ..Default::default()
73388            },
73389            _marker: core::marker::PhantomData,
73390        }
73391    }
73392}
73393impl<'a> PhysicalDeviceExternalFormatResolveFeaturesANDROIDBuilder<'a> {
73394    #[inline]
73395    pub fn external_format_resolve(mut self, value: bool) -> Self {
73396        self.inner.external_format_resolve = value as u32;
73397        self
73398    }
73399    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceExternalFormatResolveFeaturesANDROID`]'s **Extended By** section for valid types.
73400    #[inline]
73401    pub fn push_next<T: ExtendsPhysicalDeviceExternalFormatResolveFeaturesANDROID>(
73402        mut self,
73403        next: &'a mut T,
73404    ) -> Self {
73405        unsafe {
73406            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
73407            (*next_ptr).p_next = self.inner.p_next as *mut _;
73408            self.inner.p_next = <*mut BaseOutStructure>::cast::<
73409                core::ffi::c_void,
73410            >(next_ptr);
73411        }
73412        self
73413    }
73414}
73415impl<'a> core::ops::Deref
73416for PhysicalDeviceExternalFormatResolveFeaturesANDROIDBuilder<'a> {
73417    type Target = PhysicalDeviceExternalFormatResolveFeaturesANDROID;
73418    #[inline]
73419    fn deref(&self) -> &Self::Target {
73420        &self.inner
73421    }
73422}
73423impl<'a> core::ops::DerefMut
73424for PhysicalDeviceExternalFormatResolveFeaturesANDROIDBuilder<'a> {
73425    #[inline]
73426    fn deref_mut(&mut self) -> &mut Self::Target {
73427        &mut self.inner
73428    }
73429}
73430///Builder for [`PhysicalDeviceExternalFormatResolvePropertiesANDROID`] with lifetime-tied pNext safety.
73431pub struct PhysicalDeviceExternalFormatResolvePropertiesANDROIDBuilder<'a> {
73432    inner: PhysicalDeviceExternalFormatResolvePropertiesANDROID,
73433    _marker: core::marker::PhantomData<&'a ()>,
73434}
73435impl PhysicalDeviceExternalFormatResolvePropertiesANDROID {
73436    /// Start building this struct; `s_type` is already set to the correct variant.
73437    #[inline]
73438    pub fn builder<'a>() -> PhysicalDeviceExternalFormatResolvePropertiesANDROIDBuilder<
73439        'a,
73440    > {
73441        PhysicalDeviceExternalFormatResolvePropertiesANDROIDBuilder {
73442            inner: PhysicalDeviceExternalFormatResolvePropertiesANDROID {
73443                s_type: StructureType::from_raw(1000468001i32),
73444                ..Default::default()
73445            },
73446            _marker: core::marker::PhantomData,
73447        }
73448    }
73449}
73450impl<'a> PhysicalDeviceExternalFormatResolvePropertiesANDROIDBuilder<'a> {
73451    #[inline]
73452    pub fn null_color_attachment_with_external_format_resolve(
73453        mut self,
73454        value: bool,
73455    ) -> Self {
73456        self.inner.null_color_attachment_with_external_format_resolve = value as u32;
73457        self
73458    }
73459    #[inline]
73460    pub fn external_format_resolve_chroma_offset_x(
73461        mut self,
73462        value: ChromaLocation,
73463    ) -> Self {
73464        self.inner.external_format_resolve_chroma_offset_x = value;
73465        self
73466    }
73467    #[inline]
73468    pub fn external_format_resolve_chroma_offset_y(
73469        mut self,
73470        value: ChromaLocation,
73471    ) -> Self {
73472        self.inner.external_format_resolve_chroma_offset_y = value;
73473        self
73474    }
73475}
73476impl<'a> core::ops::Deref
73477for PhysicalDeviceExternalFormatResolvePropertiesANDROIDBuilder<'a> {
73478    type Target = PhysicalDeviceExternalFormatResolvePropertiesANDROID;
73479    #[inline]
73480    fn deref(&self) -> &Self::Target {
73481        &self.inner
73482    }
73483}
73484impl<'a> core::ops::DerefMut
73485for PhysicalDeviceExternalFormatResolvePropertiesANDROIDBuilder<'a> {
73486    #[inline]
73487    fn deref_mut(&mut self) -> &mut Self::Target {
73488        &mut self.inner
73489    }
73490}
73491///Builder for [`AndroidHardwareBufferFormatResolvePropertiesANDROID`] with lifetime-tied pNext safety.
73492pub struct AndroidHardwareBufferFormatResolvePropertiesANDROIDBuilder<'a> {
73493    inner: AndroidHardwareBufferFormatResolvePropertiesANDROID,
73494    _marker: core::marker::PhantomData<&'a ()>,
73495}
73496impl AndroidHardwareBufferFormatResolvePropertiesANDROID {
73497    /// Start building this struct; `s_type` is already set to the correct variant.
73498    #[inline]
73499    pub fn builder<'a>() -> AndroidHardwareBufferFormatResolvePropertiesANDROIDBuilder<
73500        'a,
73501    > {
73502        AndroidHardwareBufferFormatResolvePropertiesANDROIDBuilder {
73503            inner: AndroidHardwareBufferFormatResolvePropertiesANDROID {
73504                s_type: StructureType::from_raw(1000468002i32),
73505                ..Default::default()
73506            },
73507            _marker: core::marker::PhantomData,
73508        }
73509    }
73510}
73511impl<'a> AndroidHardwareBufferFormatResolvePropertiesANDROIDBuilder<'a> {
73512    #[inline]
73513    pub fn color_attachment_format(mut self, value: Format) -> Self {
73514        self.inner.color_attachment_format = value;
73515        self
73516    }
73517}
73518impl<'a> core::ops::Deref
73519for AndroidHardwareBufferFormatResolvePropertiesANDROIDBuilder<'a> {
73520    type Target = AndroidHardwareBufferFormatResolvePropertiesANDROID;
73521    #[inline]
73522    fn deref(&self) -> &Self::Target {
73523        &self.inner
73524    }
73525}
73526impl<'a> core::ops::DerefMut
73527for AndroidHardwareBufferFormatResolvePropertiesANDROIDBuilder<'a> {
73528    #[inline]
73529    fn deref_mut(&mut self) -> &mut Self::Target {
73530        &mut self.inner
73531    }
73532}
73533///Builder for [`LatencySleepModeInfoNV`] with lifetime-tied pNext safety.
73534pub struct LatencySleepModeInfoNVBuilder<'a> {
73535    inner: LatencySleepModeInfoNV,
73536    _marker: core::marker::PhantomData<&'a ()>,
73537}
73538impl LatencySleepModeInfoNV {
73539    /// Start building this struct; `s_type` is already set to the correct variant.
73540    #[inline]
73541    pub fn builder<'a>() -> LatencySleepModeInfoNVBuilder<'a> {
73542        LatencySleepModeInfoNVBuilder {
73543            inner: LatencySleepModeInfoNV {
73544                s_type: StructureType::from_raw(1000505000i32),
73545                ..Default::default()
73546            },
73547            _marker: core::marker::PhantomData,
73548        }
73549    }
73550}
73551impl<'a> LatencySleepModeInfoNVBuilder<'a> {
73552    #[inline]
73553    pub fn low_latency_mode(mut self, value: bool) -> Self {
73554        self.inner.low_latency_mode = value as u32;
73555        self
73556    }
73557    #[inline]
73558    pub fn low_latency_boost(mut self, value: bool) -> Self {
73559        self.inner.low_latency_boost = value as u32;
73560        self
73561    }
73562    #[inline]
73563    pub fn minimum_interval_us(mut self, value: u32) -> Self {
73564        self.inner.minimum_interval_us = value;
73565        self
73566    }
73567    ///Prepend a struct to the pNext chain. See [`LatencySleepModeInfoNV`]'s **Extended By** section for valid types.
73568    #[inline]
73569    pub fn push_next<T: ExtendsLatencySleepModeInfoNV>(
73570        mut self,
73571        next: &'a mut T,
73572    ) -> Self {
73573        unsafe {
73574            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
73575            (*next_ptr).p_next = self.inner.p_next as *mut _;
73576            self.inner.p_next = <*mut BaseOutStructure>::cast::<
73577                core::ffi::c_void,
73578            >(next_ptr) as *const _;
73579        }
73580        self
73581    }
73582}
73583impl<'a> core::ops::Deref for LatencySleepModeInfoNVBuilder<'a> {
73584    type Target = LatencySleepModeInfoNV;
73585    #[inline]
73586    fn deref(&self) -> &Self::Target {
73587        &self.inner
73588    }
73589}
73590impl<'a> core::ops::DerefMut for LatencySleepModeInfoNVBuilder<'a> {
73591    #[inline]
73592    fn deref_mut(&mut self) -> &mut Self::Target {
73593        &mut self.inner
73594    }
73595}
73596///Builder for [`LatencySleepInfoNV`] with lifetime-tied pNext safety.
73597pub struct LatencySleepInfoNVBuilder<'a> {
73598    inner: LatencySleepInfoNV,
73599    _marker: core::marker::PhantomData<&'a ()>,
73600}
73601impl LatencySleepInfoNV {
73602    /// Start building this struct; `s_type` is already set to the correct variant.
73603    #[inline]
73604    pub fn builder<'a>() -> LatencySleepInfoNVBuilder<'a> {
73605        LatencySleepInfoNVBuilder {
73606            inner: LatencySleepInfoNV {
73607                s_type: StructureType::from_raw(1000505001i32),
73608                ..Default::default()
73609            },
73610            _marker: core::marker::PhantomData,
73611        }
73612    }
73613}
73614impl<'a> LatencySleepInfoNVBuilder<'a> {
73615    #[inline]
73616    pub fn signal_semaphore(mut self, value: Semaphore) -> Self {
73617        self.inner.signal_semaphore = value;
73618        self
73619    }
73620    #[inline]
73621    pub fn value(mut self, value: u64) -> Self {
73622        self.inner.value = value;
73623        self
73624    }
73625    ///Prepend a struct to the pNext chain. See [`LatencySleepInfoNV`]'s **Extended By** section for valid types.
73626    #[inline]
73627    pub fn push_next<T: ExtendsLatencySleepInfoNV>(mut self, next: &'a mut T) -> Self {
73628        unsafe {
73629            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
73630            (*next_ptr).p_next = self.inner.p_next as *mut _;
73631            self.inner.p_next = <*mut BaseOutStructure>::cast::<
73632                core::ffi::c_void,
73633            >(next_ptr) as *const _;
73634        }
73635        self
73636    }
73637}
73638impl<'a> core::ops::Deref for LatencySleepInfoNVBuilder<'a> {
73639    type Target = LatencySleepInfoNV;
73640    #[inline]
73641    fn deref(&self) -> &Self::Target {
73642        &self.inner
73643    }
73644}
73645impl<'a> core::ops::DerefMut for LatencySleepInfoNVBuilder<'a> {
73646    #[inline]
73647    fn deref_mut(&mut self) -> &mut Self::Target {
73648        &mut self.inner
73649    }
73650}
73651///Builder for [`SetLatencyMarkerInfoNV`] with lifetime-tied pNext safety.
73652pub struct SetLatencyMarkerInfoNVBuilder<'a> {
73653    inner: SetLatencyMarkerInfoNV,
73654    _marker: core::marker::PhantomData<&'a ()>,
73655}
73656impl SetLatencyMarkerInfoNV {
73657    /// Start building this struct; `s_type` is already set to the correct variant.
73658    #[inline]
73659    pub fn builder<'a>() -> SetLatencyMarkerInfoNVBuilder<'a> {
73660        SetLatencyMarkerInfoNVBuilder {
73661            inner: SetLatencyMarkerInfoNV {
73662                s_type: StructureType::from_raw(1000505002i32),
73663                ..Default::default()
73664            },
73665            _marker: core::marker::PhantomData,
73666        }
73667    }
73668}
73669impl<'a> SetLatencyMarkerInfoNVBuilder<'a> {
73670    #[inline]
73671    pub fn present_id(mut self, value: u64) -> Self {
73672        self.inner.present_id = value;
73673        self
73674    }
73675    #[inline]
73676    pub fn marker(mut self, value: LatencyMarkerNV) -> Self {
73677        self.inner.marker = value;
73678        self
73679    }
73680    ///Prepend a struct to the pNext chain. See [`SetLatencyMarkerInfoNV`]'s **Extended By** section for valid types.
73681    #[inline]
73682    pub fn push_next<T: ExtendsSetLatencyMarkerInfoNV>(
73683        mut self,
73684        next: &'a mut T,
73685    ) -> Self {
73686        unsafe {
73687            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
73688            (*next_ptr).p_next = self.inner.p_next as *mut _;
73689            self.inner.p_next = <*mut BaseOutStructure>::cast::<
73690                core::ffi::c_void,
73691            >(next_ptr) as *const _;
73692        }
73693        self
73694    }
73695}
73696impl<'a> core::ops::Deref for SetLatencyMarkerInfoNVBuilder<'a> {
73697    type Target = SetLatencyMarkerInfoNV;
73698    #[inline]
73699    fn deref(&self) -> &Self::Target {
73700        &self.inner
73701    }
73702}
73703impl<'a> core::ops::DerefMut for SetLatencyMarkerInfoNVBuilder<'a> {
73704    #[inline]
73705    fn deref_mut(&mut self) -> &mut Self::Target {
73706        &mut self.inner
73707    }
73708}
73709///Builder for [`GetLatencyMarkerInfoNV`] with lifetime-tied pNext safety.
73710pub struct GetLatencyMarkerInfoNVBuilder<'a> {
73711    inner: GetLatencyMarkerInfoNV,
73712    _marker: core::marker::PhantomData<&'a ()>,
73713}
73714impl GetLatencyMarkerInfoNV {
73715    /// Start building this struct; `s_type` is already set to the correct variant.
73716    #[inline]
73717    pub fn builder<'a>() -> GetLatencyMarkerInfoNVBuilder<'a> {
73718        GetLatencyMarkerInfoNVBuilder {
73719            inner: GetLatencyMarkerInfoNV {
73720                s_type: StructureType::from_raw(1000505003i32),
73721                ..Default::default()
73722            },
73723            _marker: core::marker::PhantomData,
73724        }
73725    }
73726}
73727impl<'a> GetLatencyMarkerInfoNVBuilder<'a> {
73728    #[inline]
73729    pub fn timing_count(mut self, value: u32) -> Self {
73730        self.inner.timing_count = value;
73731        self
73732    }
73733    #[inline]
73734    pub fn timings(mut self, slice: &'a mut [LatencyTimingsFrameReportNV]) -> Self {
73735        self.inner.timing_count = slice.len() as u32;
73736        self.inner.p_timings = slice.as_mut_ptr();
73737        self
73738    }
73739    ///Prepend a struct to the pNext chain. See [`GetLatencyMarkerInfoNV`]'s **Extended By** section for valid types.
73740    #[inline]
73741    pub fn push_next<T: ExtendsGetLatencyMarkerInfoNV>(
73742        mut self,
73743        next: &'a mut T,
73744    ) -> Self {
73745        unsafe {
73746            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
73747            (*next_ptr).p_next = self.inner.p_next as *mut _;
73748            self.inner.p_next = <*mut BaseOutStructure>::cast::<
73749                core::ffi::c_void,
73750            >(next_ptr) as *const _;
73751        }
73752        self
73753    }
73754}
73755impl<'a> core::ops::Deref for GetLatencyMarkerInfoNVBuilder<'a> {
73756    type Target = GetLatencyMarkerInfoNV;
73757    #[inline]
73758    fn deref(&self) -> &Self::Target {
73759        &self.inner
73760    }
73761}
73762impl<'a> core::ops::DerefMut for GetLatencyMarkerInfoNVBuilder<'a> {
73763    #[inline]
73764    fn deref_mut(&mut self) -> &mut Self::Target {
73765        &mut self.inner
73766    }
73767}
73768///Builder for [`LatencyTimingsFrameReportNV`] with lifetime-tied pNext safety.
73769pub struct LatencyTimingsFrameReportNVBuilder<'a> {
73770    inner: LatencyTimingsFrameReportNV,
73771    _marker: core::marker::PhantomData<&'a ()>,
73772}
73773impl LatencyTimingsFrameReportNV {
73774    /// Start building this struct; `s_type` is already set to the correct variant.
73775    #[inline]
73776    pub fn builder<'a>() -> LatencyTimingsFrameReportNVBuilder<'a> {
73777        LatencyTimingsFrameReportNVBuilder {
73778            inner: LatencyTimingsFrameReportNV {
73779                s_type: StructureType::from_raw(1000505004i32),
73780                ..Default::default()
73781            },
73782            _marker: core::marker::PhantomData,
73783        }
73784    }
73785}
73786impl<'a> LatencyTimingsFrameReportNVBuilder<'a> {
73787    #[inline]
73788    pub fn present_id(mut self, value: u64) -> Self {
73789        self.inner.present_id = value;
73790        self
73791    }
73792    #[inline]
73793    pub fn input_sample_time_us(mut self, value: u64) -> Self {
73794        self.inner.input_sample_time_us = value;
73795        self
73796    }
73797    #[inline]
73798    pub fn sim_start_time_us(mut self, value: u64) -> Self {
73799        self.inner.sim_start_time_us = value;
73800        self
73801    }
73802    #[inline]
73803    pub fn sim_end_time_us(mut self, value: u64) -> Self {
73804        self.inner.sim_end_time_us = value;
73805        self
73806    }
73807    #[inline]
73808    pub fn render_submit_start_time_us(mut self, value: u64) -> Self {
73809        self.inner.render_submit_start_time_us = value;
73810        self
73811    }
73812    #[inline]
73813    pub fn render_submit_end_time_us(mut self, value: u64) -> Self {
73814        self.inner.render_submit_end_time_us = value;
73815        self
73816    }
73817    #[inline]
73818    pub fn present_start_time_us(mut self, value: u64) -> Self {
73819        self.inner.present_start_time_us = value;
73820        self
73821    }
73822    #[inline]
73823    pub fn present_end_time_us(mut self, value: u64) -> Self {
73824        self.inner.present_end_time_us = value;
73825        self
73826    }
73827    #[inline]
73828    pub fn driver_start_time_us(mut self, value: u64) -> Self {
73829        self.inner.driver_start_time_us = value;
73830        self
73831    }
73832    #[inline]
73833    pub fn driver_end_time_us(mut self, value: u64) -> Self {
73834        self.inner.driver_end_time_us = value;
73835        self
73836    }
73837    #[inline]
73838    pub fn os_render_queue_start_time_us(mut self, value: u64) -> Self {
73839        self.inner.os_render_queue_start_time_us = value;
73840        self
73841    }
73842    #[inline]
73843    pub fn os_render_queue_end_time_us(mut self, value: u64) -> Self {
73844        self.inner.os_render_queue_end_time_us = value;
73845        self
73846    }
73847    #[inline]
73848    pub fn gpu_render_start_time_us(mut self, value: u64) -> Self {
73849        self.inner.gpu_render_start_time_us = value;
73850        self
73851    }
73852    #[inline]
73853    pub fn gpu_render_end_time_us(mut self, value: u64) -> Self {
73854        self.inner.gpu_render_end_time_us = value;
73855        self
73856    }
73857}
73858impl<'a> core::ops::Deref for LatencyTimingsFrameReportNVBuilder<'a> {
73859    type Target = LatencyTimingsFrameReportNV;
73860    #[inline]
73861    fn deref(&self) -> &Self::Target {
73862        &self.inner
73863    }
73864}
73865impl<'a> core::ops::DerefMut for LatencyTimingsFrameReportNVBuilder<'a> {
73866    #[inline]
73867    fn deref_mut(&mut self) -> &mut Self::Target {
73868        &mut self.inner
73869    }
73870}
73871///Builder for [`OutOfBandQueueTypeInfoNV`] with lifetime-tied pNext safety.
73872pub struct OutOfBandQueueTypeInfoNVBuilder<'a> {
73873    inner: OutOfBandQueueTypeInfoNV,
73874    _marker: core::marker::PhantomData<&'a ()>,
73875}
73876impl OutOfBandQueueTypeInfoNV {
73877    /// Start building this struct; `s_type` is already set to the correct variant.
73878    #[inline]
73879    pub fn builder<'a>() -> OutOfBandQueueTypeInfoNVBuilder<'a> {
73880        OutOfBandQueueTypeInfoNVBuilder {
73881            inner: OutOfBandQueueTypeInfoNV {
73882                s_type: StructureType::from_raw(1000505006i32),
73883                ..Default::default()
73884            },
73885            _marker: core::marker::PhantomData,
73886        }
73887    }
73888}
73889impl<'a> OutOfBandQueueTypeInfoNVBuilder<'a> {
73890    #[inline]
73891    pub fn queue_type(mut self, value: OutOfBandQueueTypeNV) -> Self {
73892        self.inner.queue_type = value;
73893        self
73894    }
73895    ///Prepend a struct to the pNext chain. See [`OutOfBandQueueTypeInfoNV`]'s **Extended By** section for valid types.
73896    #[inline]
73897    pub fn push_next<T: ExtendsOutOfBandQueueTypeInfoNV>(
73898        mut self,
73899        next: &'a mut T,
73900    ) -> Self {
73901        unsafe {
73902            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
73903            (*next_ptr).p_next = self.inner.p_next as *mut _;
73904            self.inner.p_next = <*mut BaseOutStructure>::cast::<
73905                core::ffi::c_void,
73906            >(next_ptr) as *const _;
73907        }
73908        self
73909    }
73910}
73911impl<'a> core::ops::Deref for OutOfBandQueueTypeInfoNVBuilder<'a> {
73912    type Target = OutOfBandQueueTypeInfoNV;
73913    #[inline]
73914    fn deref(&self) -> &Self::Target {
73915        &self.inner
73916    }
73917}
73918impl<'a> core::ops::DerefMut for OutOfBandQueueTypeInfoNVBuilder<'a> {
73919    #[inline]
73920    fn deref_mut(&mut self) -> &mut Self::Target {
73921        &mut self.inner
73922    }
73923}
73924///Builder for [`LatencySubmissionPresentIdNV`] with lifetime-tied pNext safety.
73925pub struct LatencySubmissionPresentIdNVBuilder<'a> {
73926    inner: LatencySubmissionPresentIdNV,
73927    _marker: core::marker::PhantomData<&'a ()>,
73928}
73929impl LatencySubmissionPresentIdNV {
73930    /// Start building this struct; `s_type` is already set to the correct variant.
73931    #[inline]
73932    pub fn builder<'a>() -> LatencySubmissionPresentIdNVBuilder<'a> {
73933        LatencySubmissionPresentIdNVBuilder {
73934            inner: LatencySubmissionPresentIdNV {
73935                s_type: StructureType::from_raw(1000505005i32),
73936                ..Default::default()
73937            },
73938            _marker: core::marker::PhantomData,
73939        }
73940    }
73941}
73942impl<'a> LatencySubmissionPresentIdNVBuilder<'a> {
73943    #[inline]
73944    pub fn present_id(mut self, value: u64) -> Self {
73945        self.inner.present_id = value;
73946        self
73947    }
73948    ///Prepend a struct to the pNext chain. See [`LatencySubmissionPresentIdNV`]'s **Extended By** section for valid types.
73949    #[inline]
73950    pub fn push_next<T: ExtendsLatencySubmissionPresentIdNV>(
73951        mut self,
73952        next: &'a mut T,
73953    ) -> Self {
73954        unsafe {
73955            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
73956            (*next_ptr).p_next = self.inner.p_next as *mut _;
73957            self.inner.p_next = <*mut BaseOutStructure>::cast::<
73958                core::ffi::c_void,
73959            >(next_ptr) as *const _;
73960        }
73961        self
73962    }
73963}
73964impl<'a> core::ops::Deref for LatencySubmissionPresentIdNVBuilder<'a> {
73965    type Target = LatencySubmissionPresentIdNV;
73966    #[inline]
73967    fn deref(&self) -> &Self::Target {
73968        &self.inner
73969    }
73970}
73971impl<'a> core::ops::DerefMut for LatencySubmissionPresentIdNVBuilder<'a> {
73972    #[inline]
73973    fn deref_mut(&mut self) -> &mut Self::Target {
73974        &mut self.inner
73975    }
73976}
73977///Builder for [`SwapchainLatencyCreateInfoNV`] with lifetime-tied pNext safety.
73978pub struct SwapchainLatencyCreateInfoNVBuilder<'a> {
73979    inner: SwapchainLatencyCreateInfoNV,
73980    _marker: core::marker::PhantomData<&'a ()>,
73981}
73982impl SwapchainLatencyCreateInfoNV {
73983    /// Start building this struct; `s_type` is already set to the correct variant.
73984    #[inline]
73985    pub fn builder<'a>() -> SwapchainLatencyCreateInfoNVBuilder<'a> {
73986        SwapchainLatencyCreateInfoNVBuilder {
73987            inner: SwapchainLatencyCreateInfoNV {
73988                s_type: StructureType::from_raw(1000505007i32),
73989                ..Default::default()
73990            },
73991            _marker: core::marker::PhantomData,
73992        }
73993    }
73994}
73995impl<'a> SwapchainLatencyCreateInfoNVBuilder<'a> {
73996    #[inline]
73997    pub fn latency_mode_enable(mut self, value: bool) -> Self {
73998        self.inner.latency_mode_enable = value as u32;
73999        self
74000    }
74001    ///Prepend a struct to the pNext chain. See [`SwapchainLatencyCreateInfoNV`]'s **Extended By** section for valid types.
74002    #[inline]
74003    pub fn push_next<T: ExtendsSwapchainLatencyCreateInfoNV>(
74004        mut self,
74005        next: &'a mut T,
74006    ) -> Self {
74007        unsafe {
74008            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
74009            (*next_ptr).p_next = self.inner.p_next as *mut _;
74010            self.inner.p_next = <*mut BaseOutStructure>::cast::<
74011                core::ffi::c_void,
74012            >(next_ptr) as *const _;
74013        }
74014        self
74015    }
74016}
74017impl<'a> core::ops::Deref for SwapchainLatencyCreateInfoNVBuilder<'a> {
74018    type Target = SwapchainLatencyCreateInfoNV;
74019    #[inline]
74020    fn deref(&self) -> &Self::Target {
74021        &self.inner
74022    }
74023}
74024impl<'a> core::ops::DerefMut for SwapchainLatencyCreateInfoNVBuilder<'a> {
74025    #[inline]
74026    fn deref_mut(&mut self) -> &mut Self::Target {
74027        &mut self.inner
74028    }
74029}
74030///Builder for [`LatencySurfaceCapabilitiesNV`] with lifetime-tied pNext safety.
74031pub struct LatencySurfaceCapabilitiesNVBuilder<'a> {
74032    inner: LatencySurfaceCapabilitiesNV,
74033    _marker: core::marker::PhantomData<&'a ()>,
74034}
74035impl LatencySurfaceCapabilitiesNV {
74036    /// Start building this struct; `s_type` is already set to the correct variant.
74037    #[inline]
74038    pub fn builder<'a>() -> LatencySurfaceCapabilitiesNVBuilder<'a> {
74039        LatencySurfaceCapabilitiesNVBuilder {
74040            inner: LatencySurfaceCapabilitiesNV {
74041                s_type: StructureType::from_raw(1000505008i32),
74042                ..Default::default()
74043            },
74044            _marker: core::marker::PhantomData,
74045        }
74046    }
74047}
74048impl<'a> LatencySurfaceCapabilitiesNVBuilder<'a> {
74049    #[inline]
74050    pub fn present_mode_count(mut self, value: u32) -> Self {
74051        self.inner.present_mode_count = value;
74052        self
74053    }
74054    #[inline]
74055    pub fn present_modes(mut self, slice: &'a mut [PresentModeKHR]) -> Self {
74056        self.inner.present_mode_count = slice.len() as u32;
74057        self.inner.p_present_modes = slice.as_mut_ptr();
74058        self
74059    }
74060    ///Prepend a struct to the pNext chain. See [`LatencySurfaceCapabilitiesNV`]'s **Extended By** section for valid types.
74061    #[inline]
74062    pub fn push_next<T: ExtendsLatencySurfaceCapabilitiesNV>(
74063        mut self,
74064        next: &'a mut T,
74065    ) -> Self {
74066        unsafe {
74067            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
74068            (*next_ptr).p_next = self.inner.p_next as *mut _;
74069            self.inner.p_next = <*mut BaseOutStructure>::cast::<
74070                core::ffi::c_void,
74071            >(next_ptr) as *const _;
74072        }
74073        self
74074    }
74075}
74076impl<'a> core::ops::Deref for LatencySurfaceCapabilitiesNVBuilder<'a> {
74077    type Target = LatencySurfaceCapabilitiesNV;
74078    #[inline]
74079    fn deref(&self) -> &Self::Target {
74080        &self.inner
74081    }
74082}
74083impl<'a> core::ops::DerefMut for LatencySurfaceCapabilitiesNVBuilder<'a> {
74084    #[inline]
74085    fn deref_mut(&mut self) -> &mut Self::Target {
74086        &mut self.inner
74087    }
74088}
74089///Builder for [`PhysicalDeviceCudaKernelLaunchFeaturesNV`] with lifetime-tied pNext safety.
74090pub struct PhysicalDeviceCudaKernelLaunchFeaturesNVBuilder<'a> {
74091    inner: PhysicalDeviceCudaKernelLaunchFeaturesNV,
74092    _marker: core::marker::PhantomData<&'a ()>,
74093}
74094impl PhysicalDeviceCudaKernelLaunchFeaturesNV {
74095    /// Start building this struct; `s_type` is already set to the correct variant.
74096    #[inline]
74097    pub fn builder<'a>() -> PhysicalDeviceCudaKernelLaunchFeaturesNVBuilder<'a> {
74098        PhysicalDeviceCudaKernelLaunchFeaturesNVBuilder {
74099            inner: PhysicalDeviceCudaKernelLaunchFeaturesNV {
74100                s_type: StructureType::from_raw(1000307003i32),
74101                ..Default::default()
74102            },
74103            _marker: core::marker::PhantomData,
74104        }
74105    }
74106}
74107impl<'a> PhysicalDeviceCudaKernelLaunchFeaturesNVBuilder<'a> {
74108    #[inline]
74109    pub fn cuda_kernel_launch_features(mut self, value: bool) -> Self {
74110        self.inner.cuda_kernel_launch_features = value as u32;
74111        self
74112    }
74113    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceCudaKernelLaunchFeaturesNV`]'s **Extended By** section for valid types.
74114    #[inline]
74115    pub fn push_next<T: ExtendsPhysicalDeviceCudaKernelLaunchFeaturesNV>(
74116        mut self,
74117        next: &'a mut T,
74118    ) -> Self {
74119        unsafe {
74120            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
74121            (*next_ptr).p_next = self.inner.p_next as *mut _;
74122            self.inner.p_next = <*mut BaseOutStructure>::cast::<
74123                core::ffi::c_void,
74124            >(next_ptr);
74125        }
74126        self
74127    }
74128}
74129impl<'a> core::ops::Deref for PhysicalDeviceCudaKernelLaunchFeaturesNVBuilder<'a> {
74130    type Target = PhysicalDeviceCudaKernelLaunchFeaturesNV;
74131    #[inline]
74132    fn deref(&self) -> &Self::Target {
74133        &self.inner
74134    }
74135}
74136impl<'a> core::ops::DerefMut for PhysicalDeviceCudaKernelLaunchFeaturesNVBuilder<'a> {
74137    #[inline]
74138    fn deref_mut(&mut self) -> &mut Self::Target {
74139        &mut self.inner
74140    }
74141}
74142///Builder for [`PhysicalDeviceCudaKernelLaunchPropertiesNV`] with lifetime-tied pNext safety.
74143pub struct PhysicalDeviceCudaKernelLaunchPropertiesNVBuilder<'a> {
74144    inner: PhysicalDeviceCudaKernelLaunchPropertiesNV,
74145    _marker: core::marker::PhantomData<&'a ()>,
74146}
74147impl PhysicalDeviceCudaKernelLaunchPropertiesNV {
74148    /// Start building this struct; `s_type` is already set to the correct variant.
74149    #[inline]
74150    pub fn builder<'a>() -> PhysicalDeviceCudaKernelLaunchPropertiesNVBuilder<'a> {
74151        PhysicalDeviceCudaKernelLaunchPropertiesNVBuilder {
74152            inner: PhysicalDeviceCudaKernelLaunchPropertiesNV {
74153                s_type: StructureType::from_raw(1000307004i32),
74154                ..Default::default()
74155            },
74156            _marker: core::marker::PhantomData,
74157        }
74158    }
74159}
74160impl<'a> PhysicalDeviceCudaKernelLaunchPropertiesNVBuilder<'a> {
74161    #[inline]
74162    pub fn compute_capability_minor(mut self, value: u32) -> Self {
74163        self.inner.compute_capability_minor = value;
74164        self
74165    }
74166    #[inline]
74167    pub fn compute_capability_major(mut self, value: u32) -> Self {
74168        self.inner.compute_capability_major = value;
74169        self
74170    }
74171}
74172impl<'a> core::ops::Deref for PhysicalDeviceCudaKernelLaunchPropertiesNVBuilder<'a> {
74173    type Target = PhysicalDeviceCudaKernelLaunchPropertiesNV;
74174    #[inline]
74175    fn deref(&self) -> &Self::Target {
74176        &self.inner
74177    }
74178}
74179impl<'a> core::ops::DerefMut for PhysicalDeviceCudaKernelLaunchPropertiesNVBuilder<'a> {
74180    #[inline]
74181    fn deref_mut(&mut self) -> &mut Self::Target {
74182        &mut self.inner
74183    }
74184}
74185///Builder for [`DeviceQueueShaderCoreControlCreateInfoARM`] with lifetime-tied pNext safety.
74186pub struct DeviceQueueShaderCoreControlCreateInfoARMBuilder<'a> {
74187    inner: DeviceQueueShaderCoreControlCreateInfoARM,
74188    _marker: core::marker::PhantomData<&'a ()>,
74189}
74190impl DeviceQueueShaderCoreControlCreateInfoARM {
74191    /// Start building this struct; `s_type` is already set to the correct variant.
74192    #[inline]
74193    pub fn builder<'a>() -> DeviceQueueShaderCoreControlCreateInfoARMBuilder<'a> {
74194        DeviceQueueShaderCoreControlCreateInfoARMBuilder {
74195            inner: DeviceQueueShaderCoreControlCreateInfoARM {
74196                s_type: StructureType::from_raw(1000417000i32),
74197                ..Default::default()
74198            },
74199            _marker: core::marker::PhantomData,
74200        }
74201    }
74202}
74203impl<'a> DeviceQueueShaderCoreControlCreateInfoARMBuilder<'a> {
74204    #[inline]
74205    pub fn shader_core_count(mut self, value: u32) -> Self {
74206        self.inner.shader_core_count = value;
74207        self
74208    }
74209    ///Prepend a struct to the pNext chain. See [`DeviceQueueShaderCoreControlCreateInfoARM`]'s **Extended By** section for valid types.
74210    #[inline]
74211    pub fn push_next<T: ExtendsDeviceQueueShaderCoreControlCreateInfoARM>(
74212        mut self,
74213        next: &'a mut T,
74214    ) -> Self {
74215        unsafe {
74216            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
74217            (*next_ptr).p_next = self.inner.p_next as *mut _;
74218            self.inner.p_next = <*mut BaseOutStructure>::cast::<
74219                core::ffi::c_void,
74220            >(next_ptr);
74221        }
74222        self
74223    }
74224}
74225impl<'a> core::ops::Deref for DeviceQueueShaderCoreControlCreateInfoARMBuilder<'a> {
74226    type Target = DeviceQueueShaderCoreControlCreateInfoARM;
74227    #[inline]
74228    fn deref(&self) -> &Self::Target {
74229        &self.inner
74230    }
74231}
74232impl<'a> core::ops::DerefMut for DeviceQueueShaderCoreControlCreateInfoARMBuilder<'a> {
74233    #[inline]
74234    fn deref_mut(&mut self) -> &mut Self::Target {
74235        &mut self.inner
74236    }
74237}
74238///Builder for [`PhysicalDeviceSchedulingControlsFeaturesARM`] with lifetime-tied pNext safety.
74239pub struct PhysicalDeviceSchedulingControlsFeaturesARMBuilder<'a> {
74240    inner: PhysicalDeviceSchedulingControlsFeaturesARM,
74241    _marker: core::marker::PhantomData<&'a ()>,
74242}
74243impl PhysicalDeviceSchedulingControlsFeaturesARM {
74244    /// Start building this struct; `s_type` is already set to the correct variant.
74245    #[inline]
74246    pub fn builder<'a>() -> PhysicalDeviceSchedulingControlsFeaturesARMBuilder<'a> {
74247        PhysicalDeviceSchedulingControlsFeaturesARMBuilder {
74248            inner: PhysicalDeviceSchedulingControlsFeaturesARM {
74249                s_type: StructureType::from_raw(1000417001i32),
74250                ..Default::default()
74251            },
74252            _marker: core::marker::PhantomData,
74253        }
74254    }
74255}
74256impl<'a> PhysicalDeviceSchedulingControlsFeaturesARMBuilder<'a> {
74257    #[inline]
74258    pub fn scheduling_controls(mut self, value: bool) -> Self {
74259        self.inner.scheduling_controls = value as u32;
74260        self
74261    }
74262    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceSchedulingControlsFeaturesARM`]'s **Extended By** section for valid types.
74263    #[inline]
74264    pub fn push_next<T: ExtendsPhysicalDeviceSchedulingControlsFeaturesARM>(
74265        mut self,
74266        next: &'a mut T,
74267    ) -> Self {
74268        unsafe {
74269            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
74270            (*next_ptr).p_next = self.inner.p_next as *mut _;
74271            self.inner.p_next = <*mut BaseOutStructure>::cast::<
74272                core::ffi::c_void,
74273            >(next_ptr);
74274        }
74275        self
74276    }
74277}
74278impl<'a> core::ops::Deref for PhysicalDeviceSchedulingControlsFeaturesARMBuilder<'a> {
74279    type Target = PhysicalDeviceSchedulingControlsFeaturesARM;
74280    #[inline]
74281    fn deref(&self) -> &Self::Target {
74282        &self.inner
74283    }
74284}
74285impl<'a> core::ops::DerefMut for PhysicalDeviceSchedulingControlsFeaturesARMBuilder<'a> {
74286    #[inline]
74287    fn deref_mut(&mut self) -> &mut Self::Target {
74288        &mut self.inner
74289    }
74290}
74291///Builder for [`PhysicalDeviceSchedulingControlsPropertiesARM`] with lifetime-tied pNext safety.
74292pub struct PhysicalDeviceSchedulingControlsPropertiesARMBuilder<'a> {
74293    inner: PhysicalDeviceSchedulingControlsPropertiesARM,
74294    _marker: core::marker::PhantomData<&'a ()>,
74295}
74296impl PhysicalDeviceSchedulingControlsPropertiesARM {
74297    /// Start building this struct; `s_type` is already set to the correct variant.
74298    #[inline]
74299    pub fn builder<'a>() -> PhysicalDeviceSchedulingControlsPropertiesARMBuilder<'a> {
74300        PhysicalDeviceSchedulingControlsPropertiesARMBuilder {
74301            inner: PhysicalDeviceSchedulingControlsPropertiesARM {
74302                s_type: StructureType::from_raw(1000417002i32),
74303                ..Default::default()
74304            },
74305            _marker: core::marker::PhantomData,
74306        }
74307    }
74308}
74309impl<'a> PhysicalDeviceSchedulingControlsPropertiesARMBuilder<'a> {
74310    #[inline]
74311    pub fn scheduling_controls_flags(
74312        mut self,
74313        value: PhysicalDeviceSchedulingControlsFlagsARM,
74314    ) -> Self {
74315        self.inner.scheduling_controls_flags = value;
74316        self
74317    }
74318}
74319impl<'a> core::ops::Deref for PhysicalDeviceSchedulingControlsPropertiesARMBuilder<'a> {
74320    type Target = PhysicalDeviceSchedulingControlsPropertiesARM;
74321    #[inline]
74322    fn deref(&self) -> &Self::Target {
74323        &self.inner
74324    }
74325}
74326impl<'a> core::ops::DerefMut
74327for PhysicalDeviceSchedulingControlsPropertiesARMBuilder<'a> {
74328    #[inline]
74329    fn deref_mut(&mut self) -> &mut Self::Target {
74330        &mut self.inner
74331    }
74332}
74333///Builder for [`PhysicalDeviceRelaxedLineRasterizationFeaturesIMG`] with lifetime-tied pNext safety.
74334pub struct PhysicalDeviceRelaxedLineRasterizationFeaturesIMGBuilder<'a> {
74335    inner: PhysicalDeviceRelaxedLineRasterizationFeaturesIMG,
74336    _marker: core::marker::PhantomData<&'a ()>,
74337}
74338impl PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
74339    /// Start building this struct; `s_type` is already set to the correct variant.
74340    #[inline]
74341    pub fn builder<'a>() -> PhysicalDeviceRelaxedLineRasterizationFeaturesIMGBuilder<
74342        'a,
74343    > {
74344        PhysicalDeviceRelaxedLineRasterizationFeaturesIMGBuilder {
74345            inner: PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
74346                s_type: StructureType::from_raw(1000110000i32),
74347                ..Default::default()
74348            },
74349            _marker: core::marker::PhantomData,
74350        }
74351    }
74352}
74353impl<'a> PhysicalDeviceRelaxedLineRasterizationFeaturesIMGBuilder<'a> {
74354    #[inline]
74355    pub fn relaxed_line_rasterization(mut self, value: bool) -> Self {
74356        self.inner.relaxed_line_rasterization = value as u32;
74357        self
74358    }
74359    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceRelaxedLineRasterizationFeaturesIMG`]'s **Extended By** section for valid types.
74360    #[inline]
74361    pub fn push_next<T: ExtendsPhysicalDeviceRelaxedLineRasterizationFeaturesIMG>(
74362        mut self,
74363        next: &'a mut T,
74364    ) -> Self {
74365        unsafe {
74366            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
74367            (*next_ptr).p_next = self.inner.p_next as *mut _;
74368            self.inner.p_next = <*mut BaseOutStructure>::cast::<
74369                core::ffi::c_void,
74370            >(next_ptr);
74371        }
74372        self
74373    }
74374}
74375impl<'a> core::ops::Deref
74376for PhysicalDeviceRelaxedLineRasterizationFeaturesIMGBuilder<'a> {
74377    type Target = PhysicalDeviceRelaxedLineRasterizationFeaturesIMG;
74378    #[inline]
74379    fn deref(&self) -> &Self::Target {
74380        &self.inner
74381    }
74382}
74383impl<'a> core::ops::DerefMut
74384for PhysicalDeviceRelaxedLineRasterizationFeaturesIMGBuilder<'a> {
74385    #[inline]
74386    fn deref_mut(&mut self) -> &mut Self::Target {
74387        &mut self.inner
74388    }
74389}
74390///Builder for [`PhysicalDeviceRenderPassStripedFeaturesARM`] with lifetime-tied pNext safety.
74391pub struct PhysicalDeviceRenderPassStripedFeaturesARMBuilder<'a> {
74392    inner: PhysicalDeviceRenderPassStripedFeaturesARM,
74393    _marker: core::marker::PhantomData<&'a ()>,
74394}
74395impl PhysicalDeviceRenderPassStripedFeaturesARM {
74396    /// Start building this struct; `s_type` is already set to the correct variant.
74397    #[inline]
74398    pub fn builder<'a>() -> PhysicalDeviceRenderPassStripedFeaturesARMBuilder<'a> {
74399        PhysicalDeviceRenderPassStripedFeaturesARMBuilder {
74400            inner: PhysicalDeviceRenderPassStripedFeaturesARM {
74401                s_type: StructureType::from_raw(1000424000i32),
74402                ..Default::default()
74403            },
74404            _marker: core::marker::PhantomData,
74405        }
74406    }
74407}
74408impl<'a> PhysicalDeviceRenderPassStripedFeaturesARMBuilder<'a> {
74409    #[inline]
74410    pub fn render_pass_striped(mut self, value: bool) -> Self {
74411        self.inner.render_pass_striped = value as u32;
74412        self
74413    }
74414    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceRenderPassStripedFeaturesARM`]'s **Extended By** section for valid types.
74415    #[inline]
74416    pub fn push_next<T: ExtendsPhysicalDeviceRenderPassStripedFeaturesARM>(
74417        mut self,
74418        next: &'a mut T,
74419    ) -> Self {
74420        unsafe {
74421            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
74422            (*next_ptr).p_next = self.inner.p_next as *mut _;
74423            self.inner.p_next = <*mut BaseOutStructure>::cast::<
74424                core::ffi::c_void,
74425            >(next_ptr);
74426        }
74427        self
74428    }
74429}
74430impl<'a> core::ops::Deref for PhysicalDeviceRenderPassStripedFeaturesARMBuilder<'a> {
74431    type Target = PhysicalDeviceRenderPassStripedFeaturesARM;
74432    #[inline]
74433    fn deref(&self) -> &Self::Target {
74434        &self.inner
74435    }
74436}
74437impl<'a> core::ops::DerefMut for PhysicalDeviceRenderPassStripedFeaturesARMBuilder<'a> {
74438    #[inline]
74439    fn deref_mut(&mut self) -> &mut Self::Target {
74440        &mut self.inner
74441    }
74442}
74443///Builder for [`PhysicalDeviceRenderPassStripedPropertiesARM`] with lifetime-tied pNext safety.
74444pub struct PhysicalDeviceRenderPassStripedPropertiesARMBuilder<'a> {
74445    inner: PhysicalDeviceRenderPassStripedPropertiesARM,
74446    _marker: core::marker::PhantomData<&'a ()>,
74447}
74448impl PhysicalDeviceRenderPassStripedPropertiesARM {
74449    /// Start building this struct; `s_type` is already set to the correct variant.
74450    #[inline]
74451    pub fn builder<'a>() -> PhysicalDeviceRenderPassStripedPropertiesARMBuilder<'a> {
74452        PhysicalDeviceRenderPassStripedPropertiesARMBuilder {
74453            inner: PhysicalDeviceRenderPassStripedPropertiesARM {
74454                s_type: StructureType::from_raw(1000424001i32),
74455                ..Default::default()
74456            },
74457            _marker: core::marker::PhantomData,
74458        }
74459    }
74460}
74461impl<'a> PhysicalDeviceRenderPassStripedPropertiesARMBuilder<'a> {
74462    #[inline]
74463    pub fn render_pass_stripe_granularity(mut self, value: Extent2D) -> Self {
74464        self.inner.render_pass_stripe_granularity = value;
74465        self
74466    }
74467    #[inline]
74468    pub fn max_render_pass_stripes(mut self, value: u32) -> Self {
74469        self.inner.max_render_pass_stripes = value;
74470        self
74471    }
74472}
74473impl<'a> core::ops::Deref for PhysicalDeviceRenderPassStripedPropertiesARMBuilder<'a> {
74474    type Target = PhysicalDeviceRenderPassStripedPropertiesARM;
74475    #[inline]
74476    fn deref(&self) -> &Self::Target {
74477        &self.inner
74478    }
74479}
74480impl<'a> core::ops::DerefMut
74481for PhysicalDeviceRenderPassStripedPropertiesARMBuilder<'a> {
74482    #[inline]
74483    fn deref_mut(&mut self) -> &mut Self::Target {
74484        &mut self.inner
74485    }
74486}
74487///Builder for [`RenderPassStripeInfoARM`] with lifetime-tied pNext safety.
74488pub struct RenderPassStripeInfoARMBuilder<'a> {
74489    inner: RenderPassStripeInfoARM,
74490    _marker: core::marker::PhantomData<&'a ()>,
74491}
74492impl RenderPassStripeInfoARM {
74493    /// Start building this struct; `s_type` is already set to the correct variant.
74494    #[inline]
74495    pub fn builder<'a>() -> RenderPassStripeInfoARMBuilder<'a> {
74496        RenderPassStripeInfoARMBuilder {
74497            inner: RenderPassStripeInfoARM {
74498                s_type: StructureType::from_raw(1000424003i32),
74499                ..Default::default()
74500            },
74501            _marker: core::marker::PhantomData,
74502        }
74503    }
74504}
74505impl<'a> RenderPassStripeInfoARMBuilder<'a> {
74506    #[inline]
74507    pub fn stripe_area(mut self, value: Rect2D) -> Self {
74508        self.inner.stripe_area = value;
74509        self
74510    }
74511    ///Prepend a struct to the pNext chain. See [`RenderPassStripeInfoARM`]'s **Extended By** section for valid types.
74512    #[inline]
74513    pub fn push_next<T: ExtendsRenderPassStripeInfoARM>(
74514        mut self,
74515        next: &'a mut T,
74516    ) -> Self {
74517        unsafe {
74518            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
74519            (*next_ptr).p_next = self.inner.p_next as *mut _;
74520            self.inner.p_next = <*mut BaseOutStructure>::cast::<
74521                core::ffi::c_void,
74522            >(next_ptr) as *const _;
74523        }
74524        self
74525    }
74526}
74527impl<'a> core::ops::Deref for RenderPassStripeInfoARMBuilder<'a> {
74528    type Target = RenderPassStripeInfoARM;
74529    #[inline]
74530    fn deref(&self) -> &Self::Target {
74531        &self.inner
74532    }
74533}
74534impl<'a> core::ops::DerefMut for RenderPassStripeInfoARMBuilder<'a> {
74535    #[inline]
74536    fn deref_mut(&mut self) -> &mut Self::Target {
74537        &mut self.inner
74538    }
74539}
74540///Builder for [`RenderPassStripeBeginInfoARM`] with lifetime-tied pNext safety.
74541pub struct RenderPassStripeBeginInfoARMBuilder<'a> {
74542    inner: RenderPassStripeBeginInfoARM,
74543    _marker: core::marker::PhantomData<&'a ()>,
74544}
74545impl RenderPassStripeBeginInfoARM {
74546    /// Start building this struct; `s_type` is already set to the correct variant.
74547    #[inline]
74548    pub fn builder<'a>() -> RenderPassStripeBeginInfoARMBuilder<'a> {
74549        RenderPassStripeBeginInfoARMBuilder {
74550            inner: RenderPassStripeBeginInfoARM {
74551                s_type: StructureType::from_raw(1000424002i32),
74552                ..Default::default()
74553            },
74554            _marker: core::marker::PhantomData,
74555        }
74556    }
74557}
74558impl<'a> RenderPassStripeBeginInfoARMBuilder<'a> {
74559    #[inline]
74560    pub fn stripe_infos(mut self, slice: &'a [RenderPassStripeInfoARM]) -> Self {
74561        self.inner.stripe_info_count = slice.len() as u32;
74562        self.inner.p_stripe_infos = slice.as_ptr();
74563        self
74564    }
74565    ///Prepend a struct to the pNext chain. See [`RenderPassStripeBeginInfoARM`]'s **Extended By** section for valid types.
74566    #[inline]
74567    pub fn push_next<T: ExtendsRenderPassStripeBeginInfoARM>(
74568        mut self,
74569        next: &'a mut T,
74570    ) -> Self {
74571        unsafe {
74572            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
74573            (*next_ptr).p_next = self.inner.p_next as *mut _;
74574            self.inner.p_next = <*mut BaseOutStructure>::cast::<
74575                core::ffi::c_void,
74576            >(next_ptr) as *const _;
74577        }
74578        self
74579    }
74580}
74581impl<'a> core::ops::Deref for RenderPassStripeBeginInfoARMBuilder<'a> {
74582    type Target = RenderPassStripeBeginInfoARM;
74583    #[inline]
74584    fn deref(&self) -> &Self::Target {
74585        &self.inner
74586    }
74587}
74588impl<'a> core::ops::DerefMut for RenderPassStripeBeginInfoARMBuilder<'a> {
74589    #[inline]
74590    fn deref_mut(&mut self) -> &mut Self::Target {
74591        &mut self.inner
74592    }
74593}
74594///Builder for [`RenderPassStripeSubmitInfoARM`] with lifetime-tied pNext safety.
74595pub struct RenderPassStripeSubmitInfoARMBuilder<'a> {
74596    inner: RenderPassStripeSubmitInfoARM,
74597    _marker: core::marker::PhantomData<&'a ()>,
74598}
74599impl RenderPassStripeSubmitInfoARM {
74600    /// Start building this struct; `s_type` is already set to the correct variant.
74601    #[inline]
74602    pub fn builder<'a>() -> RenderPassStripeSubmitInfoARMBuilder<'a> {
74603        RenderPassStripeSubmitInfoARMBuilder {
74604            inner: RenderPassStripeSubmitInfoARM {
74605                s_type: StructureType::from_raw(1000424004i32),
74606                ..Default::default()
74607            },
74608            _marker: core::marker::PhantomData,
74609        }
74610    }
74611}
74612impl<'a> RenderPassStripeSubmitInfoARMBuilder<'a> {
74613    #[inline]
74614    pub fn stripe_semaphore_infos(mut self, slice: &'a [SemaphoreSubmitInfo]) -> Self {
74615        self.inner.stripe_semaphore_info_count = slice.len() as u32;
74616        self.inner.p_stripe_semaphore_infos = slice.as_ptr();
74617        self
74618    }
74619    ///Prepend a struct to the pNext chain. See [`RenderPassStripeSubmitInfoARM`]'s **Extended By** section for valid types.
74620    #[inline]
74621    pub fn push_next<T: ExtendsRenderPassStripeSubmitInfoARM>(
74622        mut self,
74623        next: &'a mut T,
74624    ) -> Self {
74625        unsafe {
74626            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
74627            (*next_ptr).p_next = self.inner.p_next as *mut _;
74628            self.inner.p_next = <*mut BaseOutStructure>::cast::<
74629                core::ffi::c_void,
74630            >(next_ptr) as *const _;
74631        }
74632        self
74633    }
74634}
74635impl<'a> core::ops::Deref for RenderPassStripeSubmitInfoARMBuilder<'a> {
74636    type Target = RenderPassStripeSubmitInfoARM;
74637    #[inline]
74638    fn deref(&self) -> &Self::Target {
74639        &self.inner
74640    }
74641}
74642impl<'a> core::ops::DerefMut for RenderPassStripeSubmitInfoARMBuilder<'a> {
74643    #[inline]
74644    fn deref_mut(&mut self) -> &mut Self::Target {
74645        &mut self.inner
74646    }
74647}
74648///Builder for [`PhysicalDevicePipelineOpacityMicromapFeaturesARM`] with lifetime-tied pNext safety.
74649pub struct PhysicalDevicePipelineOpacityMicromapFeaturesARMBuilder<'a> {
74650    inner: PhysicalDevicePipelineOpacityMicromapFeaturesARM,
74651    _marker: core::marker::PhantomData<&'a ()>,
74652}
74653impl PhysicalDevicePipelineOpacityMicromapFeaturesARM {
74654    /// Start building this struct; `s_type` is already set to the correct variant.
74655    #[inline]
74656    pub fn builder<'a>() -> PhysicalDevicePipelineOpacityMicromapFeaturesARMBuilder<'a> {
74657        PhysicalDevicePipelineOpacityMicromapFeaturesARMBuilder {
74658            inner: PhysicalDevicePipelineOpacityMicromapFeaturesARM {
74659                s_type: StructureType::from_raw(1000596000i32),
74660                ..Default::default()
74661            },
74662            _marker: core::marker::PhantomData,
74663        }
74664    }
74665}
74666impl<'a> PhysicalDevicePipelineOpacityMicromapFeaturesARMBuilder<'a> {
74667    #[inline]
74668    pub fn pipeline_opacity_micromap(mut self, value: bool) -> Self {
74669        self.inner.pipeline_opacity_micromap = value as u32;
74670        self
74671    }
74672    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePipelineOpacityMicromapFeaturesARM`]'s **Extended By** section for valid types.
74673    #[inline]
74674    pub fn push_next<T: ExtendsPhysicalDevicePipelineOpacityMicromapFeaturesARM>(
74675        mut self,
74676        next: &'a mut T,
74677    ) -> Self {
74678        unsafe {
74679            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
74680            (*next_ptr).p_next = self.inner.p_next as *mut _;
74681            self.inner.p_next = <*mut BaseOutStructure>::cast::<
74682                core::ffi::c_void,
74683            >(next_ptr);
74684        }
74685        self
74686    }
74687}
74688impl<'a> core::ops::Deref
74689for PhysicalDevicePipelineOpacityMicromapFeaturesARMBuilder<'a> {
74690    type Target = PhysicalDevicePipelineOpacityMicromapFeaturesARM;
74691    #[inline]
74692    fn deref(&self) -> &Self::Target {
74693        &self.inner
74694    }
74695}
74696impl<'a> core::ops::DerefMut
74697for PhysicalDevicePipelineOpacityMicromapFeaturesARMBuilder<'a> {
74698    #[inline]
74699    fn deref_mut(&mut self) -> &mut Self::Target {
74700        &mut self.inner
74701    }
74702}
74703///Builder for [`PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR`] with lifetime-tied pNext safety.
74704pub struct PhysicalDeviceShaderMaximalReconvergenceFeaturesKHRBuilder<'a> {
74705    inner: PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR,
74706    _marker: core::marker::PhantomData<&'a ()>,
74707}
74708impl PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {
74709    /// Start building this struct; `s_type` is already set to the correct variant.
74710    #[inline]
74711    pub fn builder<'a>() -> PhysicalDeviceShaderMaximalReconvergenceFeaturesKHRBuilder<
74712        'a,
74713    > {
74714        PhysicalDeviceShaderMaximalReconvergenceFeaturesKHRBuilder {
74715            inner: PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {
74716                s_type: StructureType::from_raw(1000434000i32),
74717                ..Default::default()
74718            },
74719            _marker: core::marker::PhantomData,
74720        }
74721    }
74722}
74723impl<'a> PhysicalDeviceShaderMaximalReconvergenceFeaturesKHRBuilder<'a> {
74724    #[inline]
74725    pub fn shader_maximal_reconvergence(mut self, value: bool) -> Self {
74726        self.inner.shader_maximal_reconvergence = value as u32;
74727        self
74728    }
74729    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR`]'s **Extended By** section for valid types.
74730    #[inline]
74731    pub fn push_next<T: ExtendsPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR>(
74732        mut self,
74733        next: &'a mut T,
74734    ) -> Self {
74735        unsafe {
74736            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
74737            (*next_ptr).p_next = self.inner.p_next as *mut _;
74738            self.inner.p_next = <*mut BaseOutStructure>::cast::<
74739                core::ffi::c_void,
74740            >(next_ptr);
74741        }
74742        self
74743    }
74744}
74745impl<'a> core::ops::Deref
74746for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHRBuilder<'a> {
74747    type Target = PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR;
74748    #[inline]
74749    fn deref(&self) -> &Self::Target {
74750        &self.inner
74751    }
74752}
74753impl<'a> core::ops::DerefMut
74754for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHRBuilder<'a> {
74755    #[inline]
74756    fn deref_mut(&mut self) -> &mut Self::Target {
74757        &mut self.inner
74758    }
74759}
74760///Builder for [`PhysicalDeviceShaderSubgroupRotateFeatures`] with lifetime-tied pNext safety.
74761pub struct PhysicalDeviceShaderSubgroupRotateFeaturesBuilder<'a> {
74762    inner: PhysicalDeviceShaderSubgroupRotateFeatures,
74763    _marker: core::marker::PhantomData<&'a ()>,
74764}
74765impl PhysicalDeviceShaderSubgroupRotateFeatures {
74766    /// Start building this struct; `s_type` is already set to the correct variant.
74767    #[inline]
74768    pub fn builder<'a>() -> PhysicalDeviceShaderSubgroupRotateFeaturesBuilder<'a> {
74769        PhysicalDeviceShaderSubgroupRotateFeaturesBuilder {
74770            inner: PhysicalDeviceShaderSubgroupRotateFeatures {
74771                s_type: StructureType::from_raw(1000416000i32),
74772                ..Default::default()
74773            },
74774            _marker: core::marker::PhantomData,
74775        }
74776    }
74777}
74778impl<'a> PhysicalDeviceShaderSubgroupRotateFeaturesBuilder<'a> {
74779    #[inline]
74780    pub fn shader_subgroup_rotate(mut self, value: bool) -> Self {
74781        self.inner.shader_subgroup_rotate = value as u32;
74782        self
74783    }
74784    #[inline]
74785    pub fn shader_subgroup_rotate_clustered(mut self, value: bool) -> Self {
74786        self.inner.shader_subgroup_rotate_clustered = value as u32;
74787        self
74788    }
74789    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderSubgroupRotateFeatures`]'s **Extended By** section for valid types.
74790    #[inline]
74791    pub fn push_next<T: ExtendsPhysicalDeviceShaderSubgroupRotateFeatures>(
74792        mut self,
74793        next: &'a mut T,
74794    ) -> Self {
74795        unsafe {
74796            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
74797            (*next_ptr).p_next = self.inner.p_next as *mut _;
74798            self.inner.p_next = <*mut BaseOutStructure>::cast::<
74799                core::ffi::c_void,
74800            >(next_ptr);
74801        }
74802        self
74803    }
74804}
74805impl<'a> core::ops::Deref for PhysicalDeviceShaderSubgroupRotateFeaturesBuilder<'a> {
74806    type Target = PhysicalDeviceShaderSubgroupRotateFeatures;
74807    #[inline]
74808    fn deref(&self) -> &Self::Target {
74809        &self.inner
74810    }
74811}
74812impl<'a> core::ops::DerefMut for PhysicalDeviceShaderSubgroupRotateFeaturesBuilder<'a> {
74813    #[inline]
74814    fn deref_mut(&mut self) -> &mut Self::Target {
74815        &mut self.inner
74816    }
74817}
74818///Builder for [`PhysicalDeviceShaderExpectAssumeFeatures`] with lifetime-tied pNext safety.
74819pub struct PhysicalDeviceShaderExpectAssumeFeaturesBuilder<'a> {
74820    inner: PhysicalDeviceShaderExpectAssumeFeatures,
74821    _marker: core::marker::PhantomData<&'a ()>,
74822}
74823impl PhysicalDeviceShaderExpectAssumeFeatures {
74824    /// Start building this struct; `s_type` is already set to the correct variant.
74825    #[inline]
74826    pub fn builder<'a>() -> PhysicalDeviceShaderExpectAssumeFeaturesBuilder<'a> {
74827        PhysicalDeviceShaderExpectAssumeFeaturesBuilder {
74828            inner: PhysicalDeviceShaderExpectAssumeFeatures {
74829                s_type: StructureType::from_raw(1000544000i32),
74830                ..Default::default()
74831            },
74832            _marker: core::marker::PhantomData,
74833        }
74834    }
74835}
74836impl<'a> PhysicalDeviceShaderExpectAssumeFeaturesBuilder<'a> {
74837    #[inline]
74838    pub fn shader_expect_assume(mut self, value: bool) -> Self {
74839        self.inner.shader_expect_assume = value as u32;
74840        self
74841    }
74842    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderExpectAssumeFeatures`]'s **Extended By** section for valid types.
74843    #[inline]
74844    pub fn push_next<T: ExtendsPhysicalDeviceShaderExpectAssumeFeatures>(
74845        mut self,
74846        next: &'a mut T,
74847    ) -> Self {
74848        unsafe {
74849            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
74850            (*next_ptr).p_next = self.inner.p_next as *mut _;
74851            self.inner.p_next = <*mut BaseOutStructure>::cast::<
74852                core::ffi::c_void,
74853            >(next_ptr);
74854        }
74855        self
74856    }
74857}
74858impl<'a> core::ops::Deref for PhysicalDeviceShaderExpectAssumeFeaturesBuilder<'a> {
74859    type Target = PhysicalDeviceShaderExpectAssumeFeatures;
74860    #[inline]
74861    fn deref(&self) -> &Self::Target {
74862        &self.inner
74863    }
74864}
74865impl<'a> core::ops::DerefMut for PhysicalDeviceShaderExpectAssumeFeaturesBuilder<'a> {
74866    #[inline]
74867    fn deref_mut(&mut self) -> &mut Self::Target {
74868        &mut self.inner
74869    }
74870}
74871///Builder for [`PhysicalDeviceShaderFloatControls2Features`] with lifetime-tied pNext safety.
74872pub struct PhysicalDeviceShaderFloatControls2FeaturesBuilder<'a> {
74873    inner: PhysicalDeviceShaderFloatControls2Features,
74874    _marker: core::marker::PhantomData<&'a ()>,
74875}
74876impl PhysicalDeviceShaderFloatControls2Features {
74877    /// Start building this struct; `s_type` is already set to the correct variant.
74878    #[inline]
74879    pub fn builder<'a>() -> PhysicalDeviceShaderFloatControls2FeaturesBuilder<'a> {
74880        PhysicalDeviceShaderFloatControls2FeaturesBuilder {
74881            inner: PhysicalDeviceShaderFloatControls2Features {
74882                s_type: StructureType::from_raw(1000528000i32),
74883                ..Default::default()
74884            },
74885            _marker: core::marker::PhantomData,
74886        }
74887    }
74888}
74889impl<'a> PhysicalDeviceShaderFloatControls2FeaturesBuilder<'a> {
74890    #[inline]
74891    pub fn shader_float_controls2(mut self, value: bool) -> Self {
74892        self.inner.shader_float_controls2 = value as u32;
74893        self
74894    }
74895    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderFloatControls2Features`]'s **Extended By** section for valid types.
74896    #[inline]
74897    pub fn push_next<T: ExtendsPhysicalDeviceShaderFloatControls2Features>(
74898        mut self,
74899        next: &'a mut T,
74900    ) -> Self {
74901        unsafe {
74902            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
74903            (*next_ptr).p_next = self.inner.p_next as *mut _;
74904            self.inner.p_next = <*mut BaseOutStructure>::cast::<
74905                core::ffi::c_void,
74906            >(next_ptr);
74907        }
74908        self
74909    }
74910}
74911impl<'a> core::ops::Deref for PhysicalDeviceShaderFloatControls2FeaturesBuilder<'a> {
74912    type Target = PhysicalDeviceShaderFloatControls2Features;
74913    #[inline]
74914    fn deref(&self) -> &Self::Target {
74915        &self.inner
74916    }
74917}
74918impl<'a> core::ops::DerefMut for PhysicalDeviceShaderFloatControls2FeaturesBuilder<'a> {
74919    #[inline]
74920    fn deref_mut(&mut self) -> &mut Self::Target {
74921        &mut self.inner
74922    }
74923}
74924///Builder for [`PhysicalDeviceDynamicRenderingLocalReadFeatures`] with lifetime-tied pNext safety.
74925pub struct PhysicalDeviceDynamicRenderingLocalReadFeaturesBuilder<'a> {
74926    inner: PhysicalDeviceDynamicRenderingLocalReadFeatures,
74927    _marker: core::marker::PhantomData<&'a ()>,
74928}
74929impl PhysicalDeviceDynamicRenderingLocalReadFeatures {
74930    /// Start building this struct; `s_type` is already set to the correct variant.
74931    #[inline]
74932    pub fn builder<'a>() -> PhysicalDeviceDynamicRenderingLocalReadFeaturesBuilder<'a> {
74933        PhysicalDeviceDynamicRenderingLocalReadFeaturesBuilder {
74934            inner: PhysicalDeviceDynamicRenderingLocalReadFeatures {
74935                s_type: StructureType::from_raw(1000232000i32),
74936                ..Default::default()
74937            },
74938            _marker: core::marker::PhantomData,
74939        }
74940    }
74941}
74942impl<'a> PhysicalDeviceDynamicRenderingLocalReadFeaturesBuilder<'a> {
74943    #[inline]
74944    pub fn dynamic_rendering_local_read(mut self, value: bool) -> Self {
74945        self.inner.dynamic_rendering_local_read = value as u32;
74946        self
74947    }
74948    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDynamicRenderingLocalReadFeatures`]'s **Extended By** section for valid types.
74949    #[inline]
74950    pub fn push_next<T: ExtendsPhysicalDeviceDynamicRenderingLocalReadFeatures>(
74951        mut self,
74952        next: &'a mut T,
74953    ) -> Self {
74954        unsafe {
74955            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
74956            (*next_ptr).p_next = self.inner.p_next as *mut _;
74957            self.inner.p_next = <*mut BaseOutStructure>::cast::<
74958                core::ffi::c_void,
74959            >(next_ptr);
74960        }
74961        self
74962    }
74963}
74964impl<'a> core::ops::Deref
74965for PhysicalDeviceDynamicRenderingLocalReadFeaturesBuilder<'a> {
74966    type Target = PhysicalDeviceDynamicRenderingLocalReadFeatures;
74967    #[inline]
74968    fn deref(&self) -> &Self::Target {
74969        &self.inner
74970    }
74971}
74972impl<'a> core::ops::DerefMut
74973for PhysicalDeviceDynamicRenderingLocalReadFeaturesBuilder<'a> {
74974    #[inline]
74975    fn deref_mut(&mut self) -> &mut Self::Target {
74976        &mut self.inner
74977    }
74978}
74979///Builder for [`RenderingAttachmentLocationInfo`] with lifetime-tied pNext safety.
74980pub struct RenderingAttachmentLocationInfoBuilder<'a> {
74981    inner: RenderingAttachmentLocationInfo,
74982    _marker: core::marker::PhantomData<&'a ()>,
74983}
74984impl RenderingAttachmentLocationInfo {
74985    /// Start building this struct; `s_type` is already set to the correct variant.
74986    #[inline]
74987    pub fn builder<'a>() -> RenderingAttachmentLocationInfoBuilder<'a> {
74988        RenderingAttachmentLocationInfoBuilder {
74989            inner: RenderingAttachmentLocationInfo {
74990                s_type: StructureType::from_raw(1000232001i32),
74991                ..Default::default()
74992            },
74993            _marker: core::marker::PhantomData,
74994        }
74995    }
74996}
74997impl<'a> RenderingAttachmentLocationInfoBuilder<'a> {
74998    #[inline]
74999    pub fn color_attachment_locations(mut self, slice: &'a [u32]) -> Self {
75000        self.inner.color_attachment_count = slice.len() as u32;
75001        self.inner.p_color_attachment_locations = slice.as_ptr();
75002        self
75003    }
75004    ///Prepend a struct to the pNext chain. See [`RenderingAttachmentLocationInfo`]'s **Extended By** section for valid types.
75005    #[inline]
75006    pub fn push_next<T: ExtendsRenderingAttachmentLocationInfo>(
75007        mut self,
75008        next: &'a mut T,
75009    ) -> Self {
75010        unsafe {
75011            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
75012            (*next_ptr).p_next = self.inner.p_next as *mut _;
75013            self.inner.p_next = <*mut BaseOutStructure>::cast::<
75014                core::ffi::c_void,
75015            >(next_ptr) as *const _;
75016        }
75017        self
75018    }
75019}
75020impl<'a> core::ops::Deref for RenderingAttachmentLocationInfoBuilder<'a> {
75021    type Target = RenderingAttachmentLocationInfo;
75022    #[inline]
75023    fn deref(&self) -> &Self::Target {
75024        &self.inner
75025    }
75026}
75027impl<'a> core::ops::DerefMut for RenderingAttachmentLocationInfoBuilder<'a> {
75028    #[inline]
75029    fn deref_mut(&mut self) -> &mut Self::Target {
75030        &mut self.inner
75031    }
75032}
75033///Builder for [`RenderingInputAttachmentIndexInfo`] with lifetime-tied pNext safety.
75034pub struct RenderingInputAttachmentIndexInfoBuilder<'a> {
75035    inner: RenderingInputAttachmentIndexInfo,
75036    _marker: core::marker::PhantomData<&'a ()>,
75037}
75038impl RenderingInputAttachmentIndexInfo {
75039    /// Start building this struct; `s_type` is already set to the correct variant.
75040    #[inline]
75041    pub fn builder<'a>() -> RenderingInputAttachmentIndexInfoBuilder<'a> {
75042        RenderingInputAttachmentIndexInfoBuilder {
75043            inner: RenderingInputAttachmentIndexInfo {
75044                s_type: StructureType::from_raw(1000232002i32),
75045                ..Default::default()
75046            },
75047            _marker: core::marker::PhantomData,
75048        }
75049    }
75050}
75051impl<'a> RenderingInputAttachmentIndexInfoBuilder<'a> {
75052    #[inline]
75053    pub fn color_attachment_count(mut self, value: u32) -> Self {
75054        self.inner.color_attachment_count = value;
75055        self
75056    }
75057    #[inline]
75058    pub fn color_attachment_input_indices(mut self, slice: &'a [u32]) -> Self {
75059        self.inner.color_attachment_count = slice.len() as u32;
75060        self.inner.p_color_attachment_input_indices = slice.as_ptr();
75061        self
75062    }
75063    #[inline]
75064    pub fn depth_input_attachment_index(mut self, value: *const u32) -> Self {
75065        self.inner.p_depth_input_attachment_index = value;
75066        self
75067    }
75068    #[inline]
75069    pub fn stencil_input_attachment_index(mut self, value: *const u32) -> Self {
75070        self.inner.p_stencil_input_attachment_index = value;
75071        self
75072    }
75073    ///Prepend a struct to the pNext chain. See [`RenderingInputAttachmentIndexInfo`]'s **Extended By** section for valid types.
75074    #[inline]
75075    pub fn push_next<T: ExtendsRenderingInputAttachmentIndexInfo>(
75076        mut self,
75077        next: &'a mut T,
75078    ) -> Self {
75079        unsafe {
75080            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
75081            (*next_ptr).p_next = self.inner.p_next as *mut _;
75082            self.inner.p_next = <*mut BaseOutStructure>::cast::<
75083                core::ffi::c_void,
75084            >(next_ptr) as *const _;
75085        }
75086        self
75087    }
75088}
75089impl<'a> core::ops::Deref for RenderingInputAttachmentIndexInfoBuilder<'a> {
75090    type Target = RenderingInputAttachmentIndexInfo;
75091    #[inline]
75092    fn deref(&self) -> &Self::Target {
75093        &self.inner
75094    }
75095}
75096impl<'a> core::ops::DerefMut for RenderingInputAttachmentIndexInfoBuilder<'a> {
75097    #[inline]
75098    fn deref_mut(&mut self) -> &mut Self::Target {
75099        &mut self.inner
75100    }
75101}
75102///Builder for [`PhysicalDeviceShaderQuadControlFeaturesKHR`] with lifetime-tied pNext safety.
75103pub struct PhysicalDeviceShaderQuadControlFeaturesKHRBuilder<'a> {
75104    inner: PhysicalDeviceShaderQuadControlFeaturesKHR,
75105    _marker: core::marker::PhantomData<&'a ()>,
75106}
75107impl PhysicalDeviceShaderQuadControlFeaturesKHR {
75108    /// Start building this struct; `s_type` is already set to the correct variant.
75109    #[inline]
75110    pub fn builder<'a>() -> PhysicalDeviceShaderQuadControlFeaturesKHRBuilder<'a> {
75111        PhysicalDeviceShaderQuadControlFeaturesKHRBuilder {
75112            inner: PhysicalDeviceShaderQuadControlFeaturesKHR {
75113                s_type: StructureType::from_raw(1000235000i32),
75114                ..Default::default()
75115            },
75116            _marker: core::marker::PhantomData,
75117        }
75118    }
75119}
75120impl<'a> PhysicalDeviceShaderQuadControlFeaturesKHRBuilder<'a> {
75121    #[inline]
75122    pub fn shader_quad_control(mut self, value: bool) -> Self {
75123        self.inner.shader_quad_control = value as u32;
75124        self
75125    }
75126    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderQuadControlFeaturesKHR`]'s **Extended By** section for valid types.
75127    #[inline]
75128    pub fn push_next<T: ExtendsPhysicalDeviceShaderQuadControlFeaturesKHR>(
75129        mut self,
75130        next: &'a mut T,
75131    ) -> Self {
75132        unsafe {
75133            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
75134            (*next_ptr).p_next = self.inner.p_next as *mut _;
75135            self.inner.p_next = <*mut BaseOutStructure>::cast::<
75136                core::ffi::c_void,
75137            >(next_ptr);
75138        }
75139        self
75140    }
75141}
75142impl<'a> core::ops::Deref for PhysicalDeviceShaderQuadControlFeaturesKHRBuilder<'a> {
75143    type Target = PhysicalDeviceShaderQuadControlFeaturesKHR;
75144    #[inline]
75145    fn deref(&self) -> &Self::Target {
75146        &self.inner
75147    }
75148}
75149impl<'a> core::ops::DerefMut for PhysicalDeviceShaderQuadControlFeaturesKHRBuilder<'a> {
75150    #[inline]
75151    fn deref_mut(&mut self) -> &mut Self::Target {
75152        &mut self.inner
75153    }
75154}
75155///Builder for [`PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV`] with lifetime-tied pNext safety.
75156pub struct PhysicalDeviceShaderAtomicFloat16VectorFeaturesNVBuilder<'a> {
75157    inner: PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV,
75158    _marker: core::marker::PhantomData<&'a ()>,
75159}
75160impl PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {
75161    /// Start building this struct; `s_type` is already set to the correct variant.
75162    #[inline]
75163    pub fn builder<'a>() -> PhysicalDeviceShaderAtomicFloat16VectorFeaturesNVBuilder<
75164        'a,
75165    > {
75166        PhysicalDeviceShaderAtomicFloat16VectorFeaturesNVBuilder {
75167            inner: PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {
75168                s_type: StructureType::from_raw(1000563000i32),
75169                ..Default::default()
75170            },
75171            _marker: core::marker::PhantomData,
75172        }
75173    }
75174}
75175impl<'a> PhysicalDeviceShaderAtomicFloat16VectorFeaturesNVBuilder<'a> {
75176    #[inline]
75177    pub fn shader_float16_vector_atomics(mut self, value: bool) -> Self {
75178        self.inner.shader_float16_vector_atomics = value as u32;
75179        self
75180    }
75181    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV`]'s **Extended By** section for valid types.
75182    #[inline]
75183    pub fn push_next<T: ExtendsPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV>(
75184        mut self,
75185        next: &'a mut T,
75186    ) -> Self {
75187        unsafe {
75188            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
75189            (*next_ptr).p_next = self.inner.p_next as *mut _;
75190            self.inner.p_next = <*mut BaseOutStructure>::cast::<
75191                core::ffi::c_void,
75192            >(next_ptr);
75193        }
75194        self
75195    }
75196}
75197impl<'a> core::ops::Deref
75198for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNVBuilder<'a> {
75199    type Target = PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV;
75200    #[inline]
75201    fn deref(&self) -> &Self::Target {
75202        &self.inner
75203    }
75204}
75205impl<'a> core::ops::DerefMut
75206for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNVBuilder<'a> {
75207    #[inline]
75208    fn deref_mut(&mut self) -> &mut Self::Target {
75209        &mut self.inner
75210    }
75211}
75212///Builder for [`PhysicalDeviceMapMemoryPlacedFeaturesEXT`] with lifetime-tied pNext safety.
75213pub struct PhysicalDeviceMapMemoryPlacedFeaturesEXTBuilder<'a> {
75214    inner: PhysicalDeviceMapMemoryPlacedFeaturesEXT,
75215    _marker: core::marker::PhantomData<&'a ()>,
75216}
75217impl PhysicalDeviceMapMemoryPlacedFeaturesEXT {
75218    /// Start building this struct; `s_type` is already set to the correct variant.
75219    #[inline]
75220    pub fn builder<'a>() -> PhysicalDeviceMapMemoryPlacedFeaturesEXTBuilder<'a> {
75221        PhysicalDeviceMapMemoryPlacedFeaturesEXTBuilder {
75222            inner: PhysicalDeviceMapMemoryPlacedFeaturesEXT {
75223                s_type: StructureType::from_raw(1000272000i32),
75224                ..Default::default()
75225            },
75226            _marker: core::marker::PhantomData,
75227        }
75228    }
75229}
75230impl<'a> PhysicalDeviceMapMemoryPlacedFeaturesEXTBuilder<'a> {
75231    #[inline]
75232    pub fn memory_map_placed(mut self, value: bool) -> Self {
75233        self.inner.memory_map_placed = value as u32;
75234        self
75235    }
75236    #[inline]
75237    pub fn memory_map_range_placed(mut self, value: bool) -> Self {
75238        self.inner.memory_map_range_placed = value as u32;
75239        self
75240    }
75241    #[inline]
75242    pub fn memory_unmap_reserve(mut self, value: bool) -> Self {
75243        self.inner.memory_unmap_reserve = value as u32;
75244        self
75245    }
75246    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceMapMemoryPlacedFeaturesEXT`]'s **Extended By** section for valid types.
75247    #[inline]
75248    pub fn push_next<T: ExtendsPhysicalDeviceMapMemoryPlacedFeaturesEXT>(
75249        mut self,
75250        next: &'a mut T,
75251    ) -> Self {
75252        unsafe {
75253            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
75254            (*next_ptr).p_next = self.inner.p_next as *mut _;
75255            self.inner.p_next = <*mut BaseOutStructure>::cast::<
75256                core::ffi::c_void,
75257            >(next_ptr);
75258        }
75259        self
75260    }
75261}
75262impl<'a> core::ops::Deref for PhysicalDeviceMapMemoryPlacedFeaturesEXTBuilder<'a> {
75263    type Target = PhysicalDeviceMapMemoryPlacedFeaturesEXT;
75264    #[inline]
75265    fn deref(&self) -> &Self::Target {
75266        &self.inner
75267    }
75268}
75269impl<'a> core::ops::DerefMut for PhysicalDeviceMapMemoryPlacedFeaturesEXTBuilder<'a> {
75270    #[inline]
75271    fn deref_mut(&mut self) -> &mut Self::Target {
75272        &mut self.inner
75273    }
75274}
75275///Builder for [`PhysicalDeviceMapMemoryPlacedPropertiesEXT`] with lifetime-tied pNext safety.
75276pub struct PhysicalDeviceMapMemoryPlacedPropertiesEXTBuilder<'a> {
75277    inner: PhysicalDeviceMapMemoryPlacedPropertiesEXT,
75278    _marker: core::marker::PhantomData<&'a ()>,
75279}
75280impl PhysicalDeviceMapMemoryPlacedPropertiesEXT {
75281    /// Start building this struct; `s_type` is already set to the correct variant.
75282    #[inline]
75283    pub fn builder<'a>() -> PhysicalDeviceMapMemoryPlacedPropertiesEXTBuilder<'a> {
75284        PhysicalDeviceMapMemoryPlacedPropertiesEXTBuilder {
75285            inner: PhysicalDeviceMapMemoryPlacedPropertiesEXT {
75286                s_type: StructureType::from_raw(1000272001i32),
75287                ..Default::default()
75288            },
75289            _marker: core::marker::PhantomData,
75290        }
75291    }
75292}
75293impl<'a> PhysicalDeviceMapMemoryPlacedPropertiesEXTBuilder<'a> {
75294    #[inline]
75295    pub fn min_placed_memory_map_alignment(mut self, value: u64) -> Self {
75296        self.inner.min_placed_memory_map_alignment = value;
75297        self
75298    }
75299}
75300impl<'a> core::ops::Deref for PhysicalDeviceMapMemoryPlacedPropertiesEXTBuilder<'a> {
75301    type Target = PhysicalDeviceMapMemoryPlacedPropertiesEXT;
75302    #[inline]
75303    fn deref(&self) -> &Self::Target {
75304        &self.inner
75305    }
75306}
75307impl<'a> core::ops::DerefMut for PhysicalDeviceMapMemoryPlacedPropertiesEXTBuilder<'a> {
75308    #[inline]
75309    fn deref_mut(&mut self) -> &mut Self::Target {
75310        &mut self.inner
75311    }
75312}
75313///Builder for [`MemoryMapPlacedInfoEXT`] with lifetime-tied pNext safety.
75314pub struct MemoryMapPlacedInfoEXTBuilder<'a> {
75315    inner: MemoryMapPlacedInfoEXT,
75316    _marker: core::marker::PhantomData<&'a ()>,
75317}
75318impl MemoryMapPlacedInfoEXT {
75319    /// Start building this struct; `s_type` is already set to the correct variant.
75320    #[inline]
75321    pub fn builder<'a>() -> MemoryMapPlacedInfoEXTBuilder<'a> {
75322        MemoryMapPlacedInfoEXTBuilder {
75323            inner: MemoryMapPlacedInfoEXT {
75324                s_type: StructureType::from_raw(1000272002i32),
75325                ..Default::default()
75326            },
75327            _marker: core::marker::PhantomData,
75328        }
75329    }
75330}
75331impl<'a> MemoryMapPlacedInfoEXTBuilder<'a> {
75332    #[inline]
75333    pub fn placed_address(mut self, value: *mut core::ffi::c_void) -> Self {
75334        self.inner.p_placed_address = value;
75335        self
75336    }
75337    ///Prepend a struct to the pNext chain. See [`MemoryMapPlacedInfoEXT`]'s **Extended By** section for valid types.
75338    #[inline]
75339    pub fn push_next<T: ExtendsMemoryMapPlacedInfoEXT>(
75340        mut self,
75341        next: &'a mut T,
75342    ) -> Self {
75343        unsafe {
75344            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
75345            (*next_ptr).p_next = self.inner.p_next as *mut _;
75346            self.inner.p_next = <*mut BaseOutStructure>::cast::<
75347                core::ffi::c_void,
75348            >(next_ptr) as *const _;
75349        }
75350        self
75351    }
75352}
75353impl<'a> core::ops::Deref for MemoryMapPlacedInfoEXTBuilder<'a> {
75354    type Target = MemoryMapPlacedInfoEXT;
75355    #[inline]
75356    fn deref(&self) -> &Self::Target {
75357        &self.inner
75358    }
75359}
75360impl<'a> core::ops::DerefMut for MemoryMapPlacedInfoEXTBuilder<'a> {
75361    #[inline]
75362    fn deref_mut(&mut self) -> &mut Self::Target {
75363        &mut self.inner
75364    }
75365}
75366///Builder for [`PhysicalDeviceShaderBfloat16FeaturesKHR`] with lifetime-tied pNext safety.
75367pub struct PhysicalDeviceShaderBfloat16FeaturesKHRBuilder<'a> {
75368    inner: PhysicalDeviceShaderBfloat16FeaturesKHR,
75369    _marker: core::marker::PhantomData<&'a ()>,
75370}
75371impl PhysicalDeviceShaderBfloat16FeaturesKHR {
75372    /// Start building this struct; `s_type` is already set to the correct variant.
75373    #[inline]
75374    pub fn builder<'a>() -> PhysicalDeviceShaderBfloat16FeaturesKHRBuilder<'a> {
75375        PhysicalDeviceShaderBfloat16FeaturesKHRBuilder {
75376            inner: PhysicalDeviceShaderBfloat16FeaturesKHR {
75377                s_type: StructureType::from_raw(1000141000i32),
75378                ..Default::default()
75379            },
75380            _marker: core::marker::PhantomData,
75381        }
75382    }
75383}
75384impl<'a> PhysicalDeviceShaderBfloat16FeaturesKHRBuilder<'a> {
75385    #[inline]
75386    pub fn shader_b_float16_type(mut self, value: bool) -> Self {
75387        self.inner.shader_b_float16_type = value as u32;
75388        self
75389    }
75390    #[inline]
75391    pub fn shader_b_float16_dot_product(mut self, value: bool) -> Self {
75392        self.inner.shader_b_float16_dot_product = value as u32;
75393        self
75394    }
75395    #[inline]
75396    pub fn shader_b_float16_cooperative_matrix(mut self, value: bool) -> Self {
75397        self.inner.shader_b_float16_cooperative_matrix = value as u32;
75398        self
75399    }
75400    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderBfloat16FeaturesKHR`]'s **Extended By** section for valid types.
75401    #[inline]
75402    pub fn push_next<T: ExtendsPhysicalDeviceShaderBfloat16FeaturesKHR>(
75403        mut self,
75404        next: &'a mut T,
75405    ) -> Self {
75406        unsafe {
75407            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
75408            (*next_ptr).p_next = self.inner.p_next as *mut _;
75409            self.inner.p_next = <*mut BaseOutStructure>::cast::<
75410                core::ffi::c_void,
75411            >(next_ptr);
75412        }
75413        self
75414    }
75415}
75416impl<'a> core::ops::Deref for PhysicalDeviceShaderBfloat16FeaturesKHRBuilder<'a> {
75417    type Target = PhysicalDeviceShaderBfloat16FeaturesKHR;
75418    #[inline]
75419    fn deref(&self) -> &Self::Target {
75420        &self.inner
75421    }
75422}
75423impl<'a> core::ops::DerefMut for PhysicalDeviceShaderBfloat16FeaturesKHRBuilder<'a> {
75424    #[inline]
75425    fn deref_mut(&mut self) -> &mut Self::Target {
75426        &mut self.inner
75427    }
75428}
75429///Builder for [`PhysicalDeviceRawAccessChainsFeaturesNV`] with lifetime-tied pNext safety.
75430pub struct PhysicalDeviceRawAccessChainsFeaturesNVBuilder<'a> {
75431    inner: PhysicalDeviceRawAccessChainsFeaturesNV,
75432    _marker: core::marker::PhantomData<&'a ()>,
75433}
75434impl PhysicalDeviceRawAccessChainsFeaturesNV {
75435    /// Start building this struct; `s_type` is already set to the correct variant.
75436    #[inline]
75437    pub fn builder<'a>() -> PhysicalDeviceRawAccessChainsFeaturesNVBuilder<'a> {
75438        PhysicalDeviceRawAccessChainsFeaturesNVBuilder {
75439            inner: PhysicalDeviceRawAccessChainsFeaturesNV {
75440                s_type: StructureType::from_raw(1000555000i32),
75441                ..Default::default()
75442            },
75443            _marker: core::marker::PhantomData,
75444        }
75445    }
75446}
75447impl<'a> PhysicalDeviceRawAccessChainsFeaturesNVBuilder<'a> {
75448    #[inline]
75449    pub fn shader_raw_access_chains(mut self, value: bool) -> Self {
75450        self.inner.shader_raw_access_chains = value as u32;
75451        self
75452    }
75453    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceRawAccessChainsFeaturesNV`]'s **Extended By** section for valid types.
75454    #[inline]
75455    pub fn push_next<T: ExtendsPhysicalDeviceRawAccessChainsFeaturesNV>(
75456        mut self,
75457        next: &'a mut T,
75458    ) -> Self {
75459        unsafe {
75460            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
75461            (*next_ptr).p_next = self.inner.p_next as *mut _;
75462            self.inner.p_next = <*mut BaseOutStructure>::cast::<
75463                core::ffi::c_void,
75464            >(next_ptr);
75465        }
75466        self
75467    }
75468}
75469impl<'a> core::ops::Deref for PhysicalDeviceRawAccessChainsFeaturesNVBuilder<'a> {
75470    type Target = PhysicalDeviceRawAccessChainsFeaturesNV;
75471    #[inline]
75472    fn deref(&self) -> &Self::Target {
75473        &self.inner
75474    }
75475}
75476impl<'a> core::ops::DerefMut for PhysicalDeviceRawAccessChainsFeaturesNVBuilder<'a> {
75477    #[inline]
75478    fn deref_mut(&mut self) -> &mut Self::Target {
75479        &mut self.inner
75480    }
75481}
75482///Builder for [`PhysicalDeviceCommandBufferInheritanceFeaturesNV`] with lifetime-tied pNext safety.
75483pub struct PhysicalDeviceCommandBufferInheritanceFeaturesNVBuilder<'a> {
75484    inner: PhysicalDeviceCommandBufferInheritanceFeaturesNV,
75485    _marker: core::marker::PhantomData<&'a ()>,
75486}
75487impl PhysicalDeviceCommandBufferInheritanceFeaturesNV {
75488    /// Start building this struct; `s_type` is already set to the correct variant.
75489    #[inline]
75490    pub fn builder<'a>() -> PhysicalDeviceCommandBufferInheritanceFeaturesNVBuilder<'a> {
75491        PhysicalDeviceCommandBufferInheritanceFeaturesNVBuilder {
75492            inner: PhysicalDeviceCommandBufferInheritanceFeaturesNV {
75493                s_type: StructureType::from_raw(1000559000i32),
75494                ..Default::default()
75495            },
75496            _marker: core::marker::PhantomData,
75497        }
75498    }
75499}
75500impl<'a> PhysicalDeviceCommandBufferInheritanceFeaturesNVBuilder<'a> {
75501    #[inline]
75502    pub fn command_buffer_inheritance(mut self, value: bool) -> Self {
75503        self.inner.command_buffer_inheritance = value as u32;
75504        self
75505    }
75506    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceCommandBufferInheritanceFeaturesNV`]'s **Extended By** section for valid types.
75507    #[inline]
75508    pub fn push_next<T: ExtendsPhysicalDeviceCommandBufferInheritanceFeaturesNV>(
75509        mut self,
75510        next: &'a mut T,
75511    ) -> Self {
75512        unsafe {
75513            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
75514            (*next_ptr).p_next = self.inner.p_next as *mut _;
75515            self.inner.p_next = <*mut BaseOutStructure>::cast::<
75516                core::ffi::c_void,
75517            >(next_ptr);
75518        }
75519        self
75520    }
75521}
75522impl<'a> core::ops::Deref
75523for PhysicalDeviceCommandBufferInheritanceFeaturesNVBuilder<'a> {
75524    type Target = PhysicalDeviceCommandBufferInheritanceFeaturesNV;
75525    #[inline]
75526    fn deref(&self) -> &Self::Target {
75527        &self.inner
75528    }
75529}
75530impl<'a> core::ops::DerefMut
75531for PhysicalDeviceCommandBufferInheritanceFeaturesNVBuilder<'a> {
75532    #[inline]
75533    fn deref_mut(&mut self) -> &mut Self::Target {
75534        &mut self.inner
75535    }
75536}
75537///Builder for [`PhysicalDeviceImageAlignmentControlFeaturesMESA`] with lifetime-tied pNext safety.
75538pub struct PhysicalDeviceImageAlignmentControlFeaturesMESABuilder<'a> {
75539    inner: PhysicalDeviceImageAlignmentControlFeaturesMESA,
75540    _marker: core::marker::PhantomData<&'a ()>,
75541}
75542impl PhysicalDeviceImageAlignmentControlFeaturesMESA {
75543    /// Start building this struct; `s_type` is already set to the correct variant.
75544    #[inline]
75545    pub fn builder<'a>() -> PhysicalDeviceImageAlignmentControlFeaturesMESABuilder<'a> {
75546        PhysicalDeviceImageAlignmentControlFeaturesMESABuilder {
75547            inner: PhysicalDeviceImageAlignmentControlFeaturesMESA {
75548                s_type: StructureType::from_raw(1000575000i32),
75549                ..Default::default()
75550            },
75551            _marker: core::marker::PhantomData,
75552        }
75553    }
75554}
75555impl<'a> PhysicalDeviceImageAlignmentControlFeaturesMESABuilder<'a> {
75556    #[inline]
75557    pub fn image_alignment_control(mut self, value: bool) -> Self {
75558        self.inner.image_alignment_control = value as u32;
75559        self
75560    }
75561    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceImageAlignmentControlFeaturesMESA`]'s **Extended By** section for valid types.
75562    #[inline]
75563    pub fn push_next<T: ExtendsPhysicalDeviceImageAlignmentControlFeaturesMESA>(
75564        mut self,
75565        next: &'a mut T,
75566    ) -> Self {
75567        unsafe {
75568            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
75569            (*next_ptr).p_next = self.inner.p_next as *mut _;
75570            self.inner.p_next = <*mut BaseOutStructure>::cast::<
75571                core::ffi::c_void,
75572            >(next_ptr);
75573        }
75574        self
75575    }
75576}
75577impl<'a> core::ops::Deref
75578for PhysicalDeviceImageAlignmentControlFeaturesMESABuilder<'a> {
75579    type Target = PhysicalDeviceImageAlignmentControlFeaturesMESA;
75580    #[inline]
75581    fn deref(&self) -> &Self::Target {
75582        &self.inner
75583    }
75584}
75585impl<'a> core::ops::DerefMut
75586for PhysicalDeviceImageAlignmentControlFeaturesMESABuilder<'a> {
75587    #[inline]
75588    fn deref_mut(&mut self) -> &mut Self::Target {
75589        &mut self.inner
75590    }
75591}
75592///Builder for [`PhysicalDeviceImageAlignmentControlPropertiesMESA`] with lifetime-tied pNext safety.
75593pub struct PhysicalDeviceImageAlignmentControlPropertiesMESABuilder<'a> {
75594    inner: PhysicalDeviceImageAlignmentControlPropertiesMESA,
75595    _marker: core::marker::PhantomData<&'a ()>,
75596}
75597impl PhysicalDeviceImageAlignmentControlPropertiesMESA {
75598    /// Start building this struct; `s_type` is already set to the correct variant.
75599    #[inline]
75600    pub fn builder<'a>() -> PhysicalDeviceImageAlignmentControlPropertiesMESABuilder<
75601        'a,
75602    > {
75603        PhysicalDeviceImageAlignmentControlPropertiesMESABuilder {
75604            inner: PhysicalDeviceImageAlignmentControlPropertiesMESA {
75605                s_type: StructureType::from_raw(1000575001i32),
75606                ..Default::default()
75607            },
75608            _marker: core::marker::PhantomData,
75609        }
75610    }
75611}
75612impl<'a> PhysicalDeviceImageAlignmentControlPropertiesMESABuilder<'a> {
75613    #[inline]
75614    pub fn supported_image_alignment_mask(mut self, value: u32) -> Self {
75615        self.inner.supported_image_alignment_mask = value;
75616        self
75617    }
75618}
75619impl<'a> core::ops::Deref
75620for PhysicalDeviceImageAlignmentControlPropertiesMESABuilder<'a> {
75621    type Target = PhysicalDeviceImageAlignmentControlPropertiesMESA;
75622    #[inline]
75623    fn deref(&self) -> &Self::Target {
75624        &self.inner
75625    }
75626}
75627impl<'a> core::ops::DerefMut
75628for PhysicalDeviceImageAlignmentControlPropertiesMESABuilder<'a> {
75629    #[inline]
75630    fn deref_mut(&mut self) -> &mut Self::Target {
75631        &mut self.inner
75632    }
75633}
75634///Builder for [`ImageAlignmentControlCreateInfoMESA`] with lifetime-tied pNext safety.
75635pub struct ImageAlignmentControlCreateInfoMESABuilder<'a> {
75636    inner: ImageAlignmentControlCreateInfoMESA,
75637    _marker: core::marker::PhantomData<&'a ()>,
75638}
75639impl ImageAlignmentControlCreateInfoMESA {
75640    /// Start building this struct; `s_type` is already set to the correct variant.
75641    #[inline]
75642    pub fn builder<'a>() -> ImageAlignmentControlCreateInfoMESABuilder<'a> {
75643        ImageAlignmentControlCreateInfoMESABuilder {
75644            inner: ImageAlignmentControlCreateInfoMESA {
75645                s_type: StructureType::from_raw(1000575002i32),
75646                ..Default::default()
75647            },
75648            _marker: core::marker::PhantomData,
75649        }
75650    }
75651}
75652impl<'a> ImageAlignmentControlCreateInfoMESABuilder<'a> {
75653    #[inline]
75654    pub fn maximum_requested_alignment(mut self, value: u32) -> Self {
75655        self.inner.maximum_requested_alignment = value;
75656        self
75657    }
75658    ///Prepend a struct to the pNext chain. See [`ImageAlignmentControlCreateInfoMESA`]'s **Extended By** section for valid types.
75659    #[inline]
75660    pub fn push_next<T: ExtendsImageAlignmentControlCreateInfoMESA>(
75661        mut self,
75662        next: &'a mut T,
75663    ) -> Self {
75664        unsafe {
75665            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
75666            (*next_ptr).p_next = self.inner.p_next as *mut _;
75667            self.inner.p_next = <*mut BaseOutStructure>::cast::<
75668                core::ffi::c_void,
75669            >(next_ptr) as *const _;
75670        }
75671        self
75672    }
75673}
75674impl<'a> core::ops::Deref for ImageAlignmentControlCreateInfoMESABuilder<'a> {
75675    type Target = ImageAlignmentControlCreateInfoMESA;
75676    #[inline]
75677    fn deref(&self) -> &Self::Target {
75678        &self.inner
75679    }
75680}
75681impl<'a> core::ops::DerefMut for ImageAlignmentControlCreateInfoMESABuilder<'a> {
75682    #[inline]
75683    fn deref_mut(&mut self) -> &mut Self::Target {
75684        &mut self.inner
75685    }
75686}
75687///Builder for [`PhysicalDeviceShaderReplicatedCompositesFeaturesEXT`] with lifetime-tied pNext safety.
75688pub struct PhysicalDeviceShaderReplicatedCompositesFeaturesEXTBuilder<'a> {
75689    inner: PhysicalDeviceShaderReplicatedCompositesFeaturesEXT,
75690    _marker: core::marker::PhantomData<&'a ()>,
75691}
75692impl PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {
75693    /// Start building this struct; `s_type` is already set to the correct variant.
75694    #[inline]
75695    pub fn builder<'a>() -> PhysicalDeviceShaderReplicatedCompositesFeaturesEXTBuilder<
75696        'a,
75697    > {
75698        PhysicalDeviceShaderReplicatedCompositesFeaturesEXTBuilder {
75699            inner: PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {
75700                s_type: StructureType::from_raw(1000564000i32),
75701                ..Default::default()
75702            },
75703            _marker: core::marker::PhantomData,
75704        }
75705    }
75706}
75707impl<'a> PhysicalDeviceShaderReplicatedCompositesFeaturesEXTBuilder<'a> {
75708    #[inline]
75709    pub fn shader_replicated_composites(mut self, value: bool) -> Self {
75710        self.inner.shader_replicated_composites = value as u32;
75711        self
75712    }
75713    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderReplicatedCompositesFeaturesEXT`]'s **Extended By** section for valid types.
75714    #[inline]
75715    pub fn push_next<T: ExtendsPhysicalDeviceShaderReplicatedCompositesFeaturesEXT>(
75716        mut self,
75717        next: &'a mut T,
75718    ) -> Self {
75719        unsafe {
75720            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
75721            (*next_ptr).p_next = self.inner.p_next as *mut _;
75722            self.inner.p_next = <*mut BaseOutStructure>::cast::<
75723                core::ffi::c_void,
75724            >(next_ptr);
75725        }
75726        self
75727    }
75728}
75729impl<'a> core::ops::Deref
75730for PhysicalDeviceShaderReplicatedCompositesFeaturesEXTBuilder<'a> {
75731    type Target = PhysicalDeviceShaderReplicatedCompositesFeaturesEXT;
75732    #[inline]
75733    fn deref(&self) -> &Self::Target {
75734        &self.inner
75735    }
75736}
75737impl<'a> core::ops::DerefMut
75738for PhysicalDeviceShaderReplicatedCompositesFeaturesEXTBuilder<'a> {
75739    #[inline]
75740    fn deref_mut(&mut self) -> &mut Self::Target {
75741        &mut self.inner
75742    }
75743}
75744///Builder for [`PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR`] with lifetime-tied pNext safety.
75745pub struct PhysicalDevicePresentModeFifoLatestReadyFeaturesKHRBuilder<'a> {
75746    inner: PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR,
75747    _marker: core::marker::PhantomData<&'a ()>,
75748}
75749impl PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {
75750    /// Start building this struct; `s_type` is already set to the correct variant.
75751    #[inline]
75752    pub fn builder<'a>() -> PhysicalDevicePresentModeFifoLatestReadyFeaturesKHRBuilder<
75753        'a,
75754    > {
75755        PhysicalDevicePresentModeFifoLatestReadyFeaturesKHRBuilder {
75756            inner: PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {
75757                s_type: StructureType::from_raw(1000361000i32),
75758                ..Default::default()
75759            },
75760            _marker: core::marker::PhantomData,
75761        }
75762    }
75763}
75764impl<'a> PhysicalDevicePresentModeFifoLatestReadyFeaturesKHRBuilder<'a> {
75765    #[inline]
75766    pub fn present_mode_fifo_latest_ready(mut self, value: bool) -> Self {
75767        self.inner.present_mode_fifo_latest_ready = value as u32;
75768        self
75769    }
75770    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR`]'s **Extended By** section for valid types.
75771    #[inline]
75772    pub fn push_next<T: ExtendsPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR>(
75773        mut self,
75774        next: &'a mut T,
75775    ) -> Self {
75776        unsafe {
75777            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
75778            (*next_ptr).p_next = self.inner.p_next as *mut _;
75779            self.inner.p_next = <*mut BaseOutStructure>::cast::<
75780                core::ffi::c_void,
75781            >(next_ptr);
75782        }
75783        self
75784    }
75785}
75786impl<'a> core::ops::Deref
75787for PhysicalDevicePresentModeFifoLatestReadyFeaturesKHRBuilder<'a> {
75788    type Target = PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR;
75789    #[inline]
75790    fn deref(&self) -> &Self::Target {
75791        &self.inner
75792    }
75793}
75794impl<'a> core::ops::DerefMut
75795for PhysicalDevicePresentModeFifoLatestReadyFeaturesKHRBuilder<'a> {
75796    #[inline]
75797    fn deref_mut(&mut self) -> &mut Self::Target {
75798        &mut self.inner
75799    }
75800}
75801///Builder for [`DepthClampRangeEXT`].
75802pub struct DepthClampRangeEXTBuilder {
75803    inner: DepthClampRangeEXT,
75804}
75805impl DepthClampRangeEXT {
75806    /// Start building this struct.
75807    #[inline]
75808    pub fn builder() -> DepthClampRangeEXTBuilder {
75809        DepthClampRangeEXTBuilder {
75810            inner: DepthClampRangeEXT {
75811                ..Default::default()
75812            },
75813        }
75814    }
75815}
75816impl DepthClampRangeEXTBuilder {
75817    #[inline]
75818    pub fn min_depth_clamp(mut self, value: f32) -> Self {
75819        self.inner.min_depth_clamp = value;
75820        self
75821    }
75822    #[inline]
75823    pub fn max_depth_clamp(mut self, value: f32) -> Self {
75824        self.inner.max_depth_clamp = value;
75825        self
75826    }
75827}
75828impl core::ops::Deref for DepthClampRangeEXTBuilder {
75829    type Target = DepthClampRangeEXT;
75830    #[inline]
75831    fn deref(&self) -> &Self::Target {
75832        &self.inner
75833    }
75834}
75835impl core::ops::DerefMut for DepthClampRangeEXTBuilder {
75836    #[inline]
75837    fn deref_mut(&mut self) -> &mut Self::Target {
75838        &mut self.inner
75839    }
75840}
75841///Builder for [`PhysicalDeviceCooperativeMatrix2FeaturesNV`] with lifetime-tied pNext safety.
75842pub struct PhysicalDeviceCooperativeMatrix2FeaturesNVBuilder<'a> {
75843    inner: PhysicalDeviceCooperativeMatrix2FeaturesNV,
75844    _marker: core::marker::PhantomData<&'a ()>,
75845}
75846impl PhysicalDeviceCooperativeMatrix2FeaturesNV {
75847    /// Start building this struct; `s_type` is already set to the correct variant.
75848    #[inline]
75849    pub fn builder<'a>() -> PhysicalDeviceCooperativeMatrix2FeaturesNVBuilder<'a> {
75850        PhysicalDeviceCooperativeMatrix2FeaturesNVBuilder {
75851            inner: PhysicalDeviceCooperativeMatrix2FeaturesNV {
75852                s_type: StructureType::from_raw(1000593000i32),
75853                ..Default::default()
75854            },
75855            _marker: core::marker::PhantomData,
75856        }
75857    }
75858}
75859impl<'a> PhysicalDeviceCooperativeMatrix2FeaturesNVBuilder<'a> {
75860    #[inline]
75861    pub fn cooperative_matrix_workgroup_scope(mut self, value: bool) -> Self {
75862        self.inner.cooperative_matrix_workgroup_scope = value as u32;
75863        self
75864    }
75865    #[inline]
75866    pub fn cooperative_matrix_flexible_dimensions(mut self, value: bool) -> Self {
75867        self.inner.cooperative_matrix_flexible_dimensions = value as u32;
75868        self
75869    }
75870    #[inline]
75871    pub fn cooperative_matrix_reductions(mut self, value: bool) -> Self {
75872        self.inner.cooperative_matrix_reductions = value as u32;
75873        self
75874    }
75875    #[inline]
75876    pub fn cooperative_matrix_conversions(mut self, value: bool) -> Self {
75877        self.inner.cooperative_matrix_conversions = value as u32;
75878        self
75879    }
75880    #[inline]
75881    pub fn cooperative_matrix_per_element_operations(mut self, value: bool) -> Self {
75882        self.inner.cooperative_matrix_per_element_operations = value as u32;
75883        self
75884    }
75885    #[inline]
75886    pub fn cooperative_matrix_tensor_addressing(mut self, value: bool) -> Self {
75887        self.inner.cooperative_matrix_tensor_addressing = value as u32;
75888        self
75889    }
75890    #[inline]
75891    pub fn cooperative_matrix_block_loads(mut self, value: bool) -> Self {
75892        self.inner.cooperative_matrix_block_loads = value as u32;
75893        self
75894    }
75895    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceCooperativeMatrix2FeaturesNV`]'s **Extended By** section for valid types.
75896    #[inline]
75897    pub fn push_next<T: ExtendsPhysicalDeviceCooperativeMatrix2FeaturesNV>(
75898        mut self,
75899        next: &'a mut T,
75900    ) -> Self {
75901        unsafe {
75902            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
75903            (*next_ptr).p_next = self.inner.p_next as *mut _;
75904            self.inner.p_next = <*mut BaseOutStructure>::cast::<
75905                core::ffi::c_void,
75906            >(next_ptr);
75907        }
75908        self
75909    }
75910}
75911impl<'a> core::ops::Deref for PhysicalDeviceCooperativeMatrix2FeaturesNVBuilder<'a> {
75912    type Target = PhysicalDeviceCooperativeMatrix2FeaturesNV;
75913    #[inline]
75914    fn deref(&self) -> &Self::Target {
75915        &self.inner
75916    }
75917}
75918impl<'a> core::ops::DerefMut for PhysicalDeviceCooperativeMatrix2FeaturesNVBuilder<'a> {
75919    #[inline]
75920    fn deref_mut(&mut self) -> &mut Self::Target {
75921        &mut self.inner
75922    }
75923}
75924///Builder for [`PhysicalDeviceCooperativeMatrix2PropertiesNV`] with lifetime-tied pNext safety.
75925pub struct PhysicalDeviceCooperativeMatrix2PropertiesNVBuilder<'a> {
75926    inner: PhysicalDeviceCooperativeMatrix2PropertiesNV,
75927    _marker: core::marker::PhantomData<&'a ()>,
75928}
75929impl PhysicalDeviceCooperativeMatrix2PropertiesNV {
75930    /// Start building this struct; `s_type` is already set to the correct variant.
75931    #[inline]
75932    pub fn builder<'a>() -> PhysicalDeviceCooperativeMatrix2PropertiesNVBuilder<'a> {
75933        PhysicalDeviceCooperativeMatrix2PropertiesNVBuilder {
75934            inner: PhysicalDeviceCooperativeMatrix2PropertiesNV {
75935                s_type: StructureType::from_raw(1000593002i32),
75936                ..Default::default()
75937            },
75938            _marker: core::marker::PhantomData,
75939        }
75940    }
75941}
75942impl<'a> PhysicalDeviceCooperativeMatrix2PropertiesNVBuilder<'a> {
75943    #[inline]
75944    pub fn cooperative_matrix_workgroup_scope_max_workgroup_size(
75945        mut self,
75946        value: u32,
75947    ) -> Self {
75948        self.inner.cooperative_matrix_workgroup_scope_max_workgroup_size = value;
75949        self
75950    }
75951    #[inline]
75952    pub fn cooperative_matrix_flexible_dimensions_max_dimension(
75953        mut self,
75954        value: u32,
75955    ) -> Self {
75956        self.inner.cooperative_matrix_flexible_dimensions_max_dimension = value;
75957        self
75958    }
75959    #[inline]
75960    pub fn cooperative_matrix_workgroup_scope_reserved_shared_memory(
75961        mut self,
75962        value: u32,
75963    ) -> Self {
75964        self.inner.cooperative_matrix_workgroup_scope_reserved_shared_memory = value;
75965        self
75966    }
75967}
75968impl<'a> core::ops::Deref for PhysicalDeviceCooperativeMatrix2PropertiesNVBuilder<'a> {
75969    type Target = PhysicalDeviceCooperativeMatrix2PropertiesNV;
75970    #[inline]
75971    fn deref(&self) -> &Self::Target {
75972        &self.inner
75973    }
75974}
75975impl<'a> core::ops::DerefMut
75976for PhysicalDeviceCooperativeMatrix2PropertiesNVBuilder<'a> {
75977    #[inline]
75978    fn deref_mut(&mut self) -> &mut Self::Target {
75979        &mut self.inner
75980    }
75981}
75982///Builder for [`CooperativeMatrixFlexibleDimensionsPropertiesNV`] with lifetime-tied pNext safety.
75983pub struct CooperativeMatrixFlexibleDimensionsPropertiesNVBuilder<'a> {
75984    inner: CooperativeMatrixFlexibleDimensionsPropertiesNV,
75985    _marker: core::marker::PhantomData<&'a ()>,
75986}
75987impl CooperativeMatrixFlexibleDimensionsPropertiesNV {
75988    /// Start building this struct; `s_type` is already set to the correct variant.
75989    #[inline]
75990    pub fn builder<'a>() -> CooperativeMatrixFlexibleDimensionsPropertiesNVBuilder<'a> {
75991        CooperativeMatrixFlexibleDimensionsPropertiesNVBuilder {
75992            inner: CooperativeMatrixFlexibleDimensionsPropertiesNV {
75993                s_type: StructureType::from_raw(1000593001i32),
75994                ..Default::default()
75995            },
75996            _marker: core::marker::PhantomData,
75997        }
75998    }
75999}
76000impl<'a> CooperativeMatrixFlexibleDimensionsPropertiesNVBuilder<'a> {
76001    #[inline]
76002    pub fn m_granularity(mut self, value: u32) -> Self {
76003        self.inner.m_granularity = value;
76004        self
76005    }
76006    #[inline]
76007    pub fn n_granularity(mut self, value: u32) -> Self {
76008        self.inner.n_granularity = value;
76009        self
76010    }
76011    #[inline]
76012    pub fn k_granularity(mut self, value: u32) -> Self {
76013        self.inner.k_granularity = value;
76014        self
76015    }
76016    #[inline]
76017    pub fn a_type(mut self, value: ComponentTypeKHR) -> Self {
76018        self.inner.a_type = value;
76019        self
76020    }
76021    #[inline]
76022    pub fn b_type(mut self, value: ComponentTypeKHR) -> Self {
76023        self.inner.b_type = value;
76024        self
76025    }
76026    #[inline]
76027    pub fn c_type(mut self, value: ComponentTypeKHR) -> Self {
76028        self.inner.c_type = value;
76029        self
76030    }
76031    #[inline]
76032    pub fn result_type(mut self, value: ComponentTypeKHR) -> Self {
76033        self.inner.result_type = value;
76034        self
76035    }
76036    #[inline]
76037    pub fn saturating_accumulation(mut self, value: bool) -> Self {
76038        self.inner.saturating_accumulation = value as u32;
76039        self
76040    }
76041    #[inline]
76042    pub fn scope(mut self, value: ScopeKHR) -> Self {
76043        self.inner.scope = value;
76044        self
76045    }
76046    #[inline]
76047    pub fn workgroup_invocations(mut self, value: u32) -> Self {
76048        self.inner.workgroup_invocations = value;
76049        self
76050    }
76051}
76052impl<'a> core::ops::Deref
76053for CooperativeMatrixFlexibleDimensionsPropertiesNVBuilder<'a> {
76054    type Target = CooperativeMatrixFlexibleDimensionsPropertiesNV;
76055    #[inline]
76056    fn deref(&self) -> &Self::Target {
76057        &self.inner
76058    }
76059}
76060impl<'a> core::ops::DerefMut
76061for CooperativeMatrixFlexibleDimensionsPropertiesNVBuilder<'a> {
76062    #[inline]
76063    fn deref_mut(&mut self) -> &mut Self::Target {
76064        &mut self.inner
76065    }
76066}
76067///Builder for [`PhysicalDeviceHdrVividFeaturesHUAWEI`] with lifetime-tied pNext safety.
76068pub struct PhysicalDeviceHdrVividFeaturesHUAWEIBuilder<'a> {
76069    inner: PhysicalDeviceHdrVividFeaturesHUAWEI,
76070    _marker: core::marker::PhantomData<&'a ()>,
76071}
76072impl PhysicalDeviceHdrVividFeaturesHUAWEI {
76073    /// Start building this struct; `s_type` is already set to the correct variant.
76074    #[inline]
76075    pub fn builder<'a>() -> PhysicalDeviceHdrVividFeaturesHUAWEIBuilder<'a> {
76076        PhysicalDeviceHdrVividFeaturesHUAWEIBuilder {
76077            inner: PhysicalDeviceHdrVividFeaturesHUAWEI {
76078                s_type: StructureType::from_raw(1000590000i32),
76079                ..Default::default()
76080            },
76081            _marker: core::marker::PhantomData,
76082        }
76083    }
76084}
76085impl<'a> PhysicalDeviceHdrVividFeaturesHUAWEIBuilder<'a> {
76086    #[inline]
76087    pub fn hdr_vivid(mut self, value: bool) -> Self {
76088        self.inner.hdr_vivid = value as u32;
76089        self
76090    }
76091    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceHdrVividFeaturesHUAWEI`]'s **Extended By** section for valid types.
76092    #[inline]
76093    pub fn push_next<T: ExtendsPhysicalDeviceHdrVividFeaturesHUAWEI>(
76094        mut self,
76095        next: &'a mut T,
76096    ) -> Self {
76097        unsafe {
76098            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
76099            (*next_ptr).p_next = self.inner.p_next as *mut _;
76100            self.inner.p_next = <*mut BaseOutStructure>::cast::<
76101                core::ffi::c_void,
76102            >(next_ptr);
76103        }
76104        self
76105    }
76106}
76107impl<'a> core::ops::Deref for PhysicalDeviceHdrVividFeaturesHUAWEIBuilder<'a> {
76108    type Target = PhysicalDeviceHdrVividFeaturesHUAWEI;
76109    #[inline]
76110    fn deref(&self) -> &Self::Target {
76111        &self.inner
76112    }
76113}
76114impl<'a> core::ops::DerefMut for PhysicalDeviceHdrVividFeaturesHUAWEIBuilder<'a> {
76115    #[inline]
76116    fn deref_mut(&mut self) -> &mut Self::Target {
76117        &mut self.inner
76118    }
76119}
76120///Builder for [`PhysicalDeviceVertexAttributeRobustnessFeaturesEXT`] with lifetime-tied pNext safety.
76121pub struct PhysicalDeviceVertexAttributeRobustnessFeaturesEXTBuilder<'a> {
76122    inner: PhysicalDeviceVertexAttributeRobustnessFeaturesEXT,
76123    _marker: core::marker::PhantomData<&'a ()>,
76124}
76125impl PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
76126    /// Start building this struct; `s_type` is already set to the correct variant.
76127    #[inline]
76128    pub fn builder<'a>() -> PhysicalDeviceVertexAttributeRobustnessFeaturesEXTBuilder<
76129        'a,
76130    > {
76131        PhysicalDeviceVertexAttributeRobustnessFeaturesEXTBuilder {
76132            inner: PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
76133                s_type: StructureType::from_raw(1000608000i32),
76134                ..Default::default()
76135            },
76136            _marker: core::marker::PhantomData,
76137        }
76138    }
76139}
76140impl<'a> PhysicalDeviceVertexAttributeRobustnessFeaturesEXTBuilder<'a> {
76141    #[inline]
76142    pub fn vertex_attribute_robustness(mut self, value: bool) -> Self {
76143        self.inner.vertex_attribute_robustness = value as u32;
76144        self
76145    }
76146    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceVertexAttributeRobustnessFeaturesEXT`]'s **Extended By** section for valid types.
76147    #[inline]
76148    pub fn push_next<T: ExtendsPhysicalDeviceVertexAttributeRobustnessFeaturesEXT>(
76149        mut self,
76150        next: &'a mut T,
76151    ) -> Self {
76152        unsafe {
76153            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
76154            (*next_ptr).p_next = self.inner.p_next as *mut _;
76155            self.inner.p_next = <*mut BaseOutStructure>::cast::<
76156                core::ffi::c_void,
76157            >(next_ptr);
76158        }
76159        self
76160    }
76161}
76162impl<'a> core::ops::Deref
76163for PhysicalDeviceVertexAttributeRobustnessFeaturesEXTBuilder<'a> {
76164    type Target = PhysicalDeviceVertexAttributeRobustnessFeaturesEXT;
76165    #[inline]
76166    fn deref(&self) -> &Self::Target {
76167        &self.inner
76168    }
76169}
76170impl<'a> core::ops::DerefMut
76171for PhysicalDeviceVertexAttributeRobustnessFeaturesEXTBuilder<'a> {
76172    #[inline]
76173    fn deref_mut(&mut self) -> &mut Self::Target {
76174        &mut self.inner
76175    }
76176}
76177///Builder for [`PhysicalDeviceDenseGeometryFormatFeaturesAMDX`] with lifetime-tied pNext safety.
76178pub struct PhysicalDeviceDenseGeometryFormatFeaturesAMDXBuilder<'a> {
76179    inner: PhysicalDeviceDenseGeometryFormatFeaturesAMDX,
76180    _marker: core::marker::PhantomData<&'a ()>,
76181}
76182impl PhysicalDeviceDenseGeometryFormatFeaturesAMDX {
76183    /// Start building this struct; `s_type` is already set to the correct variant.
76184    #[inline]
76185    pub fn builder<'a>() -> PhysicalDeviceDenseGeometryFormatFeaturesAMDXBuilder<'a> {
76186        PhysicalDeviceDenseGeometryFormatFeaturesAMDXBuilder {
76187            inner: PhysicalDeviceDenseGeometryFormatFeaturesAMDX {
76188                s_type: StructureType::from_raw(1000478000i32),
76189                ..Default::default()
76190            },
76191            _marker: core::marker::PhantomData,
76192        }
76193    }
76194}
76195impl<'a> PhysicalDeviceDenseGeometryFormatFeaturesAMDXBuilder<'a> {
76196    #[inline]
76197    pub fn dense_geometry_format(mut self, value: bool) -> Self {
76198        self.inner.dense_geometry_format = value as u32;
76199        self
76200    }
76201    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDenseGeometryFormatFeaturesAMDX`]'s **Extended By** section for valid types.
76202    #[inline]
76203    pub fn push_next<T: ExtendsPhysicalDeviceDenseGeometryFormatFeaturesAMDX>(
76204        mut self,
76205        next: &'a mut T,
76206    ) -> Self {
76207        unsafe {
76208            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
76209            (*next_ptr).p_next = self.inner.p_next as *mut _;
76210            self.inner.p_next = <*mut BaseOutStructure>::cast::<
76211                core::ffi::c_void,
76212            >(next_ptr);
76213        }
76214        self
76215    }
76216}
76217impl<'a> core::ops::Deref for PhysicalDeviceDenseGeometryFormatFeaturesAMDXBuilder<'a> {
76218    type Target = PhysicalDeviceDenseGeometryFormatFeaturesAMDX;
76219    #[inline]
76220    fn deref(&self) -> &Self::Target {
76221        &self.inner
76222    }
76223}
76224impl<'a> core::ops::DerefMut
76225for PhysicalDeviceDenseGeometryFormatFeaturesAMDXBuilder<'a> {
76226    #[inline]
76227    fn deref_mut(&mut self) -> &mut Self::Target {
76228        &mut self.inner
76229    }
76230}
76231///Builder for [`AccelerationStructureDenseGeometryFormatTrianglesDataAMDX`] with lifetime-tied pNext safety.
76232pub struct AccelerationStructureDenseGeometryFormatTrianglesDataAMDXBuilder<'a> {
76233    inner: AccelerationStructureDenseGeometryFormatTrianglesDataAMDX,
76234    _marker: core::marker::PhantomData<&'a ()>,
76235}
76236impl AccelerationStructureDenseGeometryFormatTrianglesDataAMDX {
76237    /// Start building this struct; `s_type` is already set to the correct variant.
76238    #[inline]
76239    pub fn builder<'a>() -> AccelerationStructureDenseGeometryFormatTrianglesDataAMDXBuilder<
76240        'a,
76241    > {
76242        AccelerationStructureDenseGeometryFormatTrianglesDataAMDXBuilder {
76243            inner: AccelerationStructureDenseGeometryFormatTrianglesDataAMDX {
76244                s_type: StructureType::from_raw(1000478001i32),
76245                ..Default::default()
76246            },
76247            _marker: core::marker::PhantomData,
76248        }
76249    }
76250}
76251impl<'a> AccelerationStructureDenseGeometryFormatTrianglesDataAMDXBuilder<'a> {
76252    #[inline]
76253    pub fn compressed_data(mut self, value: DeviceOrHostAddressConstKHR) -> Self {
76254        self.inner.compressed_data = value;
76255        self
76256    }
76257    #[inline]
76258    pub fn data_size(mut self, value: u64) -> Self {
76259        self.inner.data_size = value;
76260        self
76261    }
76262    #[inline]
76263    pub fn num_triangles(mut self, value: u32) -> Self {
76264        self.inner.num_triangles = value;
76265        self
76266    }
76267    #[inline]
76268    pub fn num_vertices(mut self, value: u32) -> Self {
76269        self.inner.num_vertices = value;
76270        self
76271    }
76272    #[inline]
76273    pub fn max_primitive_index(mut self, value: u32) -> Self {
76274        self.inner.max_primitive_index = value;
76275        self
76276    }
76277    #[inline]
76278    pub fn max_geometry_index(mut self, value: u32) -> Self {
76279        self.inner.max_geometry_index = value;
76280        self
76281    }
76282    #[inline]
76283    pub fn format(mut self, value: CompressedTriangleFormatAMDX) -> Self {
76284        self.inner.format = value;
76285        self
76286    }
76287    ///Prepend a struct to the pNext chain. See [`AccelerationStructureDenseGeometryFormatTrianglesDataAMDX`]'s **Extended By** section for valid types.
76288    #[inline]
76289    pub fn push_next<
76290        T: ExtendsAccelerationStructureDenseGeometryFormatTrianglesDataAMDX,
76291    >(mut self, next: &'a mut T) -> Self {
76292        unsafe {
76293            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
76294            (*next_ptr).p_next = self.inner.p_next as *mut _;
76295            self.inner.p_next = <*mut BaseOutStructure>::cast::<
76296                core::ffi::c_void,
76297            >(next_ptr) as *const _;
76298        }
76299        self
76300    }
76301}
76302impl<'a> core::ops::Deref
76303for AccelerationStructureDenseGeometryFormatTrianglesDataAMDXBuilder<'a> {
76304    type Target = AccelerationStructureDenseGeometryFormatTrianglesDataAMDX;
76305    #[inline]
76306    fn deref(&self) -> &Self::Target {
76307        &self.inner
76308    }
76309}
76310impl<'a> core::ops::DerefMut
76311for AccelerationStructureDenseGeometryFormatTrianglesDataAMDXBuilder<'a> {
76312    #[inline]
76313    fn deref_mut(&mut self) -> &mut Self::Target {
76314        &mut self.inner
76315    }
76316}
76317///Builder for [`PhysicalDeviceDepthClampZeroOneFeaturesKHR`] with lifetime-tied pNext safety.
76318pub struct PhysicalDeviceDepthClampZeroOneFeaturesKHRBuilder<'a> {
76319    inner: PhysicalDeviceDepthClampZeroOneFeaturesKHR,
76320    _marker: core::marker::PhantomData<&'a ()>,
76321}
76322impl PhysicalDeviceDepthClampZeroOneFeaturesKHR {
76323    /// Start building this struct; `s_type` is already set to the correct variant.
76324    #[inline]
76325    pub fn builder<'a>() -> PhysicalDeviceDepthClampZeroOneFeaturesKHRBuilder<'a> {
76326        PhysicalDeviceDepthClampZeroOneFeaturesKHRBuilder {
76327            inner: PhysicalDeviceDepthClampZeroOneFeaturesKHR {
76328                s_type: StructureType::from_raw(1000421000i32),
76329                ..Default::default()
76330            },
76331            _marker: core::marker::PhantomData,
76332        }
76333    }
76334}
76335impl<'a> PhysicalDeviceDepthClampZeroOneFeaturesKHRBuilder<'a> {
76336    #[inline]
76337    pub fn depth_clamp_zero_one(mut self, value: bool) -> Self {
76338        self.inner.depth_clamp_zero_one = value as u32;
76339        self
76340    }
76341    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDepthClampZeroOneFeaturesKHR`]'s **Extended By** section for valid types.
76342    #[inline]
76343    pub fn push_next<T: ExtendsPhysicalDeviceDepthClampZeroOneFeaturesKHR>(
76344        mut self,
76345        next: &'a mut T,
76346    ) -> Self {
76347        unsafe {
76348            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
76349            (*next_ptr).p_next = self.inner.p_next as *mut _;
76350            self.inner.p_next = <*mut BaseOutStructure>::cast::<
76351                core::ffi::c_void,
76352            >(next_ptr);
76353        }
76354        self
76355    }
76356}
76357impl<'a> core::ops::Deref for PhysicalDeviceDepthClampZeroOneFeaturesKHRBuilder<'a> {
76358    type Target = PhysicalDeviceDepthClampZeroOneFeaturesKHR;
76359    #[inline]
76360    fn deref(&self) -> &Self::Target {
76361        &self.inner
76362    }
76363}
76364impl<'a> core::ops::DerefMut for PhysicalDeviceDepthClampZeroOneFeaturesKHRBuilder<'a> {
76365    #[inline]
76366    fn deref_mut(&mut self) -> &mut Self::Target {
76367        &mut self.inner
76368    }
76369}
76370///Builder for [`PhysicalDeviceCooperativeVectorFeaturesNV`] with lifetime-tied pNext safety.
76371pub struct PhysicalDeviceCooperativeVectorFeaturesNVBuilder<'a> {
76372    inner: PhysicalDeviceCooperativeVectorFeaturesNV,
76373    _marker: core::marker::PhantomData<&'a ()>,
76374}
76375impl PhysicalDeviceCooperativeVectorFeaturesNV {
76376    /// Start building this struct; `s_type` is already set to the correct variant.
76377    #[inline]
76378    pub fn builder<'a>() -> PhysicalDeviceCooperativeVectorFeaturesNVBuilder<'a> {
76379        PhysicalDeviceCooperativeVectorFeaturesNVBuilder {
76380            inner: PhysicalDeviceCooperativeVectorFeaturesNV {
76381                s_type: StructureType::from_raw(1000491000i32),
76382                ..Default::default()
76383            },
76384            _marker: core::marker::PhantomData,
76385        }
76386    }
76387}
76388impl<'a> PhysicalDeviceCooperativeVectorFeaturesNVBuilder<'a> {
76389    #[inline]
76390    pub fn cooperative_vector(mut self, value: bool) -> Self {
76391        self.inner.cooperative_vector = value as u32;
76392        self
76393    }
76394    #[inline]
76395    pub fn cooperative_vector_training(mut self, value: bool) -> Self {
76396        self.inner.cooperative_vector_training = value as u32;
76397        self
76398    }
76399    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceCooperativeVectorFeaturesNV`]'s **Extended By** section for valid types.
76400    #[inline]
76401    pub fn push_next<T: ExtendsPhysicalDeviceCooperativeVectorFeaturesNV>(
76402        mut self,
76403        next: &'a mut T,
76404    ) -> Self {
76405        unsafe {
76406            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
76407            (*next_ptr).p_next = self.inner.p_next as *mut _;
76408            self.inner.p_next = <*mut BaseOutStructure>::cast::<
76409                core::ffi::c_void,
76410            >(next_ptr);
76411        }
76412        self
76413    }
76414}
76415impl<'a> core::ops::Deref for PhysicalDeviceCooperativeVectorFeaturesNVBuilder<'a> {
76416    type Target = PhysicalDeviceCooperativeVectorFeaturesNV;
76417    #[inline]
76418    fn deref(&self) -> &Self::Target {
76419        &self.inner
76420    }
76421}
76422impl<'a> core::ops::DerefMut for PhysicalDeviceCooperativeVectorFeaturesNVBuilder<'a> {
76423    #[inline]
76424    fn deref_mut(&mut self) -> &mut Self::Target {
76425        &mut self.inner
76426    }
76427}
76428///Builder for [`CooperativeVectorPropertiesNV`] with lifetime-tied pNext safety.
76429pub struct CooperativeVectorPropertiesNVBuilder<'a> {
76430    inner: CooperativeVectorPropertiesNV,
76431    _marker: core::marker::PhantomData<&'a ()>,
76432}
76433impl CooperativeVectorPropertiesNV {
76434    /// Start building this struct; `s_type` is already set to the correct variant.
76435    #[inline]
76436    pub fn builder<'a>() -> CooperativeVectorPropertiesNVBuilder<'a> {
76437        CooperativeVectorPropertiesNVBuilder {
76438            inner: CooperativeVectorPropertiesNV {
76439                s_type: StructureType::from_raw(1000491002i32),
76440                ..Default::default()
76441            },
76442            _marker: core::marker::PhantomData,
76443        }
76444    }
76445}
76446impl<'a> CooperativeVectorPropertiesNVBuilder<'a> {
76447    #[inline]
76448    pub fn input_type(mut self, value: ComponentTypeKHR) -> Self {
76449        self.inner.input_type = value;
76450        self
76451    }
76452    #[inline]
76453    pub fn input_interpretation(mut self, value: ComponentTypeKHR) -> Self {
76454        self.inner.input_interpretation = value;
76455        self
76456    }
76457    #[inline]
76458    pub fn matrix_interpretation(mut self, value: ComponentTypeKHR) -> Self {
76459        self.inner.matrix_interpretation = value;
76460        self
76461    }
76462    #[inline]
76463    pub fn bias_interpretation(mut self, value: ComponentTypeKHR) -> Self {
76464        self.inner.bias_interpretation = value;
76465        self
76466    }
76467    #[inline]
76468    pub fn result_type(mut self, value: ComponentTypeKHR) -> Self {
76469        self.inner.result_type = value;
76470        self
76471    }
76472    #[inline]
76473    pub fn transpose(mut self, value: bool) -> Self {
76474        self.inner.transpose = value as u32;
76475        self
76476    }
76477    ///Prepend a struct to the pNext chain. See [`CooperativeVectorPropertiesNV`]'s **Extended By** section for valid types.
76478    #[inline]
76479    pub fn push_next<T: ExtendsCooperativeVectorPropertiesNV>(
76480        mut self,
76481        next: &'a mut T,
76482    ) -> Self {
76483        unsafe {
76484            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
76485            (*next_ptr).p_next = self.inner.p_next as *mut _;
76486            self.inner.p_next = <*mut BaseOutStructure>::cast::<
76487                core::ffi::c_void,
76488            >(next_ptr);
76489        }
76490        self
76491    }
76492}
76493impl<'a> core::ops::Deref for CooperativeVectorPropertiesNVBuilder<'a> {
76494    type Target = CooperativeVectorPropertiesNV;
76495    #[inline]
76496    fn deref(&self) -> &Self::Target {
76497        &self.inner
76498    }
76499}
76500impl<'a> core::ops::DerefMut for CooperativeVectorPropertiesNVBuilder<'a> {
76501    #[inline]
76502    fn deref_mut(&mut self) -> &mut Self::Target {
76503        &mut self.inner
76504    }
76505}
76506///Builder for [`PhysicalDeviceCooperativeVectorPropertiesNV`] with lifetime-tied pNext safety.
76507pub struct PhysicalDeviceCooperativeVectorPropertiesNVBuilder<'a> {
76508    inner: PhysicalDeviceCooperativeVectorPropertiesNV,
76509    _marker: core::marker::PhantomData<&'a ()>,
76510}
76511impl PhysicalDeviceCooperativeVectorPropertiesNV {
76512    /// Start building this struct; `s_type` is already set to the correct variant.
76513    #[inline]
76514    pub fn builder<'a>() -> PhysicalDeviceCooperativeVectorPropertiesNVBuilder<'a> {
76515        PhysicalDeviceCooperativeVectorPropertiesNVBuilder {
76516            inner: PhysicalDeviceCooperativeVectorPropertiesNV {
76517                s_type: StructureType::from_raw(1000491001i32),
76518                ..Default::default()
76519            },
76520            _marker: core::marker::PhantomData,
76521        }
76522    }
76523}
76524impl<'a> PhysicalDeviceCooperativeVectorPropertiesNVBuilder<'a> {
76525    #[inline]
76526    pub fn cooperative_vector_supported_stages(
76527        mut self,
76528        value: ShaderStageFlags,
76529    ) -> Self {
76530        self.inner.cooperative_vector_supported_stages = value;
76531        self
76532    }
76533    #[inline]
76534    pub fn cooperative_vector_training_float16_accumulation(
76535        mut self,
76536        value: bool,
76537    ) -> Self {
76538        self.inner.cooperative_vector_training_float16_accumulation = value as u32;
76539        self
76540    }
76541    #[inline]
76542    pub fn cooperative_vector_training_float32_accumulation(
76543        mut self,
76544        value: bool,
76545    ) -> Self {
76546        self.inner.cooperative_vector_training_float32_accumulation = value as u32;
76547        self
76548    }
76549    #[inline]
76550    pub fn max_cooperative_vector_components(mut self, value: u32) -> Self {
76551        self.inner.max_cooperative_vector_components = value;
76552        self
76553    }
76554}
76555impl<'a> core::ops::Deref for PhysicalDeviceCooperativeVectorPropertiesNVBuilder<'a> {
76556    type Target = PhysicalDeviceCooperativeVectorPropertiesNV;
76557    #[inline]
76558    fn deref(&self) -> &Self::Target {
76559        &self.inner
76560    }
76561}
76562impl<'a> core::ops::DerefMut for PhysicalDeviceCooperativeVectorPropertiesNVBuilder<'a> {
76563    #[inline]
76564    fn deref_mut(&mut self) -> &mut Self::Target {
76565        &mut self.inner
76566    }
76567}
76568///Builder for [`ConvertCooperativeVectorMatrixInfoNV`] with lifetime-tied pNext safety.
76569pub struct ConvertCooperativeVectorMatrixInfoNVBuilder<'a> {
76570    inner: ConvertCooperativeVectorMatrixInfoNV,
76571    _marker: core::marker::PhantomData<&'a ()>,
76572}
76573impl ConvertCooperativeVectorMatrixInfoNV {
76574    /// Start building this struct; `s_type` is already set to the correct variant.
76575    #[inline]
76576    pub fn builder<'a>() -> ConvertCooperativeVectorMatrixInfoNVBuilder<'a> {
76577        ConvertCooperativeVectorMatrixInfoNVBuilder {
76578            inner: ConvertCooperativeVectorMatrixInfoNV {
76579                s_type: StructureType::from_raw(1000491004i32),
76580                ..Default::default()
76581            },
76582            _marker: core::marker::PhantomData,
76583        }
76584    }
76585}
76586impl<'a> ConvertCooperativeVectorMatrixInfoNVBuilder<'a> {
76587    #[inline]
76588    pub fn src_size(mut self, value: usize) -> Self {
76589        self.inner.src_size = value;
76590        self
76591    }
76592    #[inline]
76593    pub fn src_data(mut self, value: DeviceOrHostAddressConstKHR) -> Self {
76594        self.inner.src_data = value;
76595        self
76596    }
76597    #[inline]
76598    pub fn dst_size(mut self, value: *mut usize) -> Self {
76599        self.inner.p_dst_size = value;
76600        self
76601    }
76602    #[inline]
76603    pub fn dst_data(mut self, value: DeviceOrHostAddressKHR) -> Self {
76604        self.inner.dst_data = value;
76605        self
76606    }
76607    #[inline]
76608    pub fn src_component_type(mut self, value: ComponentTypeKHR) -> Self {
76609        self.inner.src_component_type = value;
76610        self
76611    }
76612    #[inline]
76613    pub fn dst_component_type(mut self, value: ComponentTypeKHR) -> Self {
76614        self.inner.dst_component_type = value;
76615        self
76616    }
76617    #[inline]
76618    pub fn num_rows(mut self, value: u32) -> Self {
76619        self.inner.num_rows = value;
76620        self
76621    }
76622    #[inline]
76623    pub fn num_columns(mut self, value: u32) -> Self {
76624        self.inner.num_columns = value;
76625        self
76626    }
76627    #[inline]
76628    pub fn src_layout(mut self, value: CooperativeVectorMatrixLayoutNV) -> Self {
76629        self.inner.src_layout = value;
76630        self
76631    }
76632    #[inline]
76633    pub fn src_stride(mut self, value: usize) -> Self {
76634        self.inner.src_stride = value;
76635        self
76636    }
76637    #[inline]
76638    pub fn dst_layout(mut self, value: CooperativeVectorMatrixLayoutNV) -> Self {
76639        self.inner.dst_layout = value;
76640        self
76641    }
76642    #[inline]
76643    pub fn dst_stride(mut self, value: usize) -> Self {
76644        self.inner.dst_stride = value;
76645        self
76646    }
76647    ///Prepend a struct to the pNext chain. See [`ConvertCooperativeVectorMatrixInfoNV`]'s **Extended By** section for valid types.
76648    #[inline]
76649    pub fn push_next<T: ExtendsConvertCooperativeVectorMatrixInfoNV>(
76650        mut self,
76651        next: &'a mut T,
76652    ) -> Self {
76653        unsafe {
76654            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
76655            (*next_ptr).p_next = self.inner.p_next as *mut _;
76656            self.inner.p_next = <*mut BaseOutStructure>::cast::<
76657                core::ffi::c_void,
76658            >(next_ptr) as *const _;
76659        }
76660        self
76661    }
76662}
76663impl<'a> core::ops::Deref for ConvertCooperativeVectorMatrixInfoNVBuilder<'a> {
76664    type Target = ConvertCooperativeVectorMatrixInfoNV;
76665    #[inline]
76666    fn deref(&self) -> &Self::Target {
76667        &self.inner
76668    }
76669}
76670impl<'a> core::ops::DerefMut for ConvertCooperativeVectorMatrixInfoNVBuilder<'a> {
76671    #[inline]
76672    fn deref_mut(&mut self) -> &mut Self::Target {
76673        &mut self.inner
76674    }
76675}
76676///Builder for [`PhysicalDeviceTileShadingFeaturesQCOM`] with lifetime-tied pNext safety.
76677pub struct PhysicalDeviceTileShadingFeaturesQCOMBuilder<'a> {
76678    inner: PhysicalDeviceTileShadingFeaturesQCOM,
76679    _marker: core::marker::PhantomData<&'a ()>,
76680}
76681impl PhysicalDeviceTileShadingFeaturesQCOM {
76682    /// Start building this struct; `s_type` is already set to the correct variant.
76683    #[inline]
76684    pub fn builder<'a>() -> PhysicalDeviceTileShadingFeaturesQCOMBuilder<'a> {
76685        PhysicalDeviceTileShadingFeaturesQCOMBuilder {
76686            inner: PhysicalDeviceTileShadingFeaturesQCOM {
76687                s_type: StructureType::from_raw(1000309000i32),
76688                ..Default::default()
76689            },
76690            _marker: core::marker::PhantomData,
76691        }
76692    }
76693}
76694impl<'a> PhysicalDeviceTileShadingFeaturesQCOMBuilder<'a> {
76695    #[inline]
76696    pub fn tile_shading(mut self, value: bool) -> Self {
76697        self.inner.tile_shading = value as u32;
76698        self
76699    }
76700    #[inline]
76701    pub fn tile_shading_fragment_stage(mut self, value: bool) -> Self {
76702        self.inner.tile_shading_fragment_stage = value as u32;
76703        self
76704    }
76705    #[inline]
76706    pub fn tile_shading_color_attachments(mut self, value: bool) -> Self {
76707        self.inner.tile_shading_color_attachments = value as u32;
76708        self
76709    }
76710    #[inline]
76711    pub fn tile_shading_depth_attachments(mut self, value: bool) -> Self {
76712        self.inner.tile_shading_depth_attachments = value as u32;
76713        self
76714    }
76715    #[inline]
76716    pub fn tile_shading_stencil_attachments(mut self, value: bool) -> Self {
76717        self.inner.tile_shading_stencil_attachments = value as u32;
76718        self
76719    }
76720    #[inline]
76721    pub fn tile_shading_input_attachments(mut self, value: bool) -> Self {
76722        self.inner.tile_shading_input_attachments = value as u32;
76723        self
76724    }
76725    #[inline]
76726    pub fn tile_shading_sampled_attachments(mut self, value: bool) -> Self {
76727        self.inner.tile_shading_sampled_attachments = value as u32;
76728        self
76729    }
76730    #[inline]
76731    pub fn tile_shading_per_tile_draw(mut self, value: bool) -> Self {
76732        self.inner.tile_shading_per_tile_draw = value as u32;
76733        self
76734    }
76735    #[inline]
76736    pub fn tile_shading_per_tile_dispatch(mut self, value: bool) -> Self {
76737        self.inner.tile_shading_per_tile_dispatch = value as u32;
76738        self
76739    }
76740    #[inline]
76741    pub fn tile_shading_dispatch_tile(mut self, value: bool) -> Self {
76742        self.inner.tile_shading_dispatch_tile = value as u32;
76743        self
76744    }
76745    #[inline]
76746    pub fn tile_shading_apron(mut self, value: bool) -> Self {
76747        self.inner.tile_shading_apron = value as u32;
76748        self
76749    }
76750    #[inline]
76751    pub fn tile_shading_anisotropic_apron(mut self, value: bool) -> Self {
76752        self.inner.tile_shading_anisotropic_apron = value as u32;
76753        self
76754    }
76755    #[inline]
76756    pub fn tile_shading_atomic_ops(mut self, value: bool) -> Self {
76757        self.inner.tile_shading_atomic_ops = value as u32;
76758        self
76759    }
76760    #[inline]
76761    pub fn tile_shading_image_processing(mut self, value: bool) -> Self {
76762        self.inner.tile_shading_image_processing = value as u32;
76763        self
76764    }
76765    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceTileShadingFeaturesQCOM`]'s **Extended By** section for valid types.
76766    #[inline]
76767    pub fn push_next<T: ExtendsPhysicalDeviceTileShadingFeaturesQCOM>(
76768        mut self,
76769        next: &'a mut T,
76770    ) -> Self {
76771        unsafe {
76772            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
76773            (*next_ptr).p_next = self.inner.p_next as *mut _;
76774            self.inner.p_next = <*mut BaseOutStructure>::cast::<
76775                core::ffi::c_void,
76776            >(next_ptr);
76777        }
76778        self
76779    }
76780}
76781impl<'a> core::ops::Deref for PhysicalDeviceTileShadingFeaturesQCOMBuilder<'a> {
76782    type Target = PhysicalDeviceTileShadingFeaturesQCOM;
76783    #[inline]
76784    fn deref(&self) -> &Self::Target {
76785        &self.inner
76786    }
76787}
76788impl<'a> core::ops::DerefMut for PhysicalDeviceTileShadingFeaturesQCOMBuilder<'a> {
76789    #[inline]
76790    fn deref_mut(&mut self) -> &mut Self::Target {
76791        &mut self.inner
76792    }
76793}
76794///Builder for [`PhysicalDeviceTileShadingPropertiesQCOM`] with lifetime-tied pNext safety.
76795pub struct PhysicalDeviceTileShadingPropertiesQCOMBuilder<'a> {
76796    inner: PhysicalDeviceTileShadingPropertiesQCOM,
76797    _marker: core::marker::PhantomData<&'a ()>,
76798}
76799impl PhysicalDeviceTileShadingPropertiesQCOM {
76800    /// Start building this struct; `s_type` is already set to the correct variant.
76801    #[inline]
76802    pub fn builder<'a>() -> PhysicalDeviceTileShadingPropertiesQCOMBuilder<'a> {
76803        PhysicalDeviceTileShadingPropertiesQCOMBuilder {
76804            inner: PhysicalDeviceTileShadingPropertiesQCOM {
76805                s_type: StructureType::from_raw(1000309001i32),
76806                ..Default::default()
76807            },
76808            _marker: core::marker::PhantomData,
76809        }
76810    }
76811}
76812impl<'a> PhysicalDeviceTileShadingPropertiesQCOMBuilder<'a> {
76813    #[inline]
76814    pub fn max_apron_size(mut self, value: u32) -> Self {
76815        self.inner.max_apron_size = value;
76816        self
76817    }
76818    #[inline]
76819    pub fn prefer_non_coherent(mut self, value: bool) -> Self {
76820        self.inner.prefer_non_coherent = value as u32;
76821        self
76822    }
76823    #[inline]
76824    pub fn tile_granularity(mut self, value: Extent2D) -> Self {
76825        self.inner.tile_granularity = value;
76826        self
76827    }
76828    #[inline]
76829    pub fn max_tile_shading_rate(mut self, value: Extent2D) -> Self {
76830        self.inner.max_tile_shading_rate = value;
76831        self
76832    }
76833}
76834impl<'a> core::ops::Deref for PhysicalDeviceTileShadingPropertiesQCOMBuilder<'a> {
76835    type Target = PhysicalDeviceTileShadingPropertiesQCOM;
76836    #[inline]
76837    fn deref(&self) -> &Self::Target {
76838        &self.inner
76839    }
76840}
76841impl<'a> core::ops::DerefMut for PhysicalDeviceTileShadingPropertiesQCOMBuilder<'a> {
76842    #[inline]
76843    fn deref_mut(&mut self) -> &mut Self::Target {
76844        &mut self.inner
76845    }
76846}
76847///Builder for [`RenderPassTileShadingCreateInfoQCOM`] with lifetime-tied pNext safety.
76848pub struct RenderPassTileShadingCreateInfoQCOMBuilder<'a> {
76849    inner: RenderPassTileShadingCreateInfoQCOM,
76850    _marker: core::marker::PhantomData<&'a ()>,
76851}
76852impl RenderPassTileShadingCreateInfoQCOM {
76853    /// Start building this struct; `s_type` is already set to the correct variant.
76854    #[inline]
76855    pub fn builder<'a>() -> RenderPassTileShadingCreateInfoQCOMBuilder<'a> {
76856        RenderPassTileShadingCreateInfoQCOMBuilder {
76857            inner: RenderPassTileShadingCreateInfoQCOM {
76858                s_type: StructureType::from_raw(1000309002i32),
76859                ..Default::default()
76860            },
76861            _marker: core::marker::PhantomData,
76862        }
76863    }
76864}
76865impl<'a> RenderPassTileShadingCreateInfoQCOMBuilder<'a> {
76866    #[inline]
76867    pub fn flags(mut self, value: TileShadingRenderPassFlagsQCOM) -> Self {
76868        self.inner.flags = value;
76869        self
76870    }
76871    #[inline]
76872    pub fn tile_apron_size(mut self, value: Extent2D) -> Self {
76873        self.inner.tile_apron_size = value;
76874        self
76875    }
76876    ///Prepend a struct to the pNext chain. See [`RenderPassTileShadingCreateInfoQCOM`]'s **Extended By** section for valid types.
76877    #[inline]
76878    pub fn push_next<T: ExtendsRenderPassTileShadingCreateInfoQCOM>(
76879        mut self,
76880        next: &'a mut T,
76881    ) -> Self {
76882        unsafe {
76883            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
76884            (*next_ptr).p_next = self.inner.p_next as *mut _;
76885            self.inner.p_next = <*mut BaseOutStructure>::cast::<
76886                core::ffi::c_void,
76887            >(next_ptr) as *const _;
76888        }
76889        self
76890    }
76891}
76892impl<'a> core::ops::Deref for RenderPassTileShadingCreateInfoQCOMBuilder<'a> {
76893    type Target = RenderPassTileShadingCreateInfoQCOM;
76894    #[inline]
76895    fn deref(&self) -> &Self::Target {
76896        &self.inner
76897    }
76898}
76899impl<'a> core::ops::DerefMut for RenderPassTileShadingCreateInfoQCOMBuilder<'a> {
76900    #[inline]
76901    fn deref_mut(&mut self) -> &mut Self::Target {
76902        &mut self.inner
76903    }
76904}
76905///Builder for [`PerTileBeginInfoQCOM`] with lifetime-tied pNext safety.
76906pub struct PerTileBeginInfoQCOMBuilder<'a> {
76907    inner: PerTileBeginInfoQCOM,
76908    _marker: core::marker::PhantomData<&'a ()>,
76909}
76910impl PerTileBeginInfoQCOM {
76911    /// Start building this struct; `s_type` is already set to the correct variant.
76912    #[inline]
76913    pub fn builder<'a>() -> PerTileBeginInfoQCOMBuilder<'a> {
76914        PerTileBeginInfoQCOMBuilder {
76915            inner: PerTileBeginInfoQCOM {
76916                s_type: StructureType::from_raw(1000309003i32),
76917                ..Default::default()
76918            },
76919            _marker: core::marker::PhantomData,
76920        }
76921    }
76922}
76923impl<'a> PerTileBeginInfoQCOMBuilder<'a> {
76924    ///Prepend a struct to the pNext chain. See [`PerTileBeginInfoQCOM`]'s **Extended By** section for valid types.
76925    #[inline]
76926    pub fn push_next<T: ExtendsPerTileBeginInfoQCOM>(mut self, next: &'a mut T) -> Self {
76927        unsafe {
76928            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
76929            (*next_ptr).p_next = self.inner.p_next as *mut _;
76930            self.inner.p_next = <*mut BaseOutStructure>::cast::<
76931                core::ffi::c_void,
76932            >(next_ptr) as *const _;
76933        }
76934        self
76935    }
76936}
76937impl<'a> core::ops::Deref for PerTileBeginInfoQCOMBuilder<'a> {
76938    type Target = PerTileBeginInfoQCOM;
76939    #[inline]
76940    fn deref(&self) -> &Self::Target {
76941        &self.inner
76942    }
76943}
76944impl<'a> core::ops::DerefMut for PerTileBeginInfoQCOMBuilder<'a> {
76945    #[inline]
76946    fn deref_mut(&mut self) -> &mut Self::Target {
76947        &mut self.inner
76948    }
76949}
76950///Builder for [`PerTileEndInfoQCOM`] with lifetime-tied pNext safety.
76951pub struct PerTileEndInfoQCOMBuilder<'a> {
76952    inner: PerTileEndInfoQCOM,
76953    _marker: core::marker::PhantomData<&'a ()>,
76954}
76955impl PerTileEndInfoQCOM {
76956    /// Start building this struct; `s_type` is already set to the correct variant.
76957    #[inline]
76958    pub fn builder<'a>() -> PerTileEndInfoQCOMBuilder<'a> {
76959        PerTileEndInfoQCOMBuilder {
76960            inner: PerTileEndInfoQCOM {
76961                s_type: StructureType::from_raw(1000309004i32),
76962                ..Default::default()
76963            },
76964            _marker: core::marker::PhantomData,
76965        }
76966    }
76967}
76968impl<'a> PerTileEndInfoQCOMBuilder<'a> {
76969    ///Prepend a struct to the pNext chain. See [`PerTileEndInfoQCOM`]'s **Extended By** section for valid types.
76970    #[inline]
76971    pub fn push_next<T: ExtendsPerTileEndInfoQCOM>(mut self, next: &'a mut T) -> Self {
76972        unsafe {
76973            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
76974            (*next_ptr).p_next = self.inner.p_next as *mut _;
76975            self.inner.p_next = <*mut BaseOutStructure>::cast::<
76976                core::ffi::c_void,
76977            >(next_ptr) as *const _;
76978        }
76979        self
76980    }
76981}
76982impl<'a> core::ops::Deref for PerTileEndInfoQCOMBuilder<'a> {
76983    type Target = PerTileEndInfoQCOM;
76984    #[inline]
76985    fn deref(&self) -> &Self::Target {
76986        &self.inner
76987    }
76988}
76989impl<'a> core::ops::DerefMut for PerTileEndInfoQCOMBuilder<'a> {
76990    #[inline]
76991    fn deref_mut(&mut self) -> &mut Self::Target {
76992        &mut self.inner
76993    }
76994}
76995///Builder for [`DispatchTileInfoQCOM`] with lifetime-tied pNext safety.
76996pub struct DispatchTileInfoQCOMBuilder<'a> {
76997    inner: DispatchTileInfoQCOM,
76998    _marker: core::marker::PhantomData<&'a ()>,
76999}
77000impl DispatchTileInfoQCOM {
77001    /// Start building this struct; `s_type` is already set to the correct variant.
77002    #[inline]
77003    pub fn builder<'a>() -> DispatchTileInfoQCOMBuilder<'a> {
77004        DispatchTileInfoQCOMBuilder {
77005            inner: DispatchTileInfoQCOM {
77006                s_type: StructureType::from_raw(1000309005i32),
77007                ..Default::default()
77008            },
77009            _marker: core::marker::PhantomData,
77010        }
77011    }
77012}
77013impl<'a> DispatchTileInfoQCOMBuilder<'a> {
77014    ///Prepend a struct to the pNext chain. See [`DispatchTileInfoQCOM`]'s **Extended By** section for valid types.
77015    #[inline]
77016    pub fn push_next<T: ExtendsDispatchTileInfoQCOM>(mut self, next: &'a mut T) -> Self {
77017        unsafe {
77018            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
77019            (*next_ptr).p_next = self.inner.p_next as *mut _;
77020            self.inner.p_next = <*mut BaseOutStructure>::cast::<
77021                core::ffi::c_void,
77022            >(next_ptr) as *const _;
77023        }
77024        self
77025    }
77026}
77027impl<'a> core::ops::Deref for DispatchTileInfoQCOMBuilder<'a> {
77028    type Target = DispatchTileInfoQCOM;
77029    #[inline]
77030    fn deref(&self) -> &Self::Target {
77031        &self.inner
77032    }
77033}
77034impl<'a> core::ops::DerefMut for DispatchTileInfoQCOMBuilder<'a> {
77035    #[inline]
77036    fn deref_mut(&mut self) -> &mut Self::Target {
77037        &mut self.inner
77038    }
77039}
77040///Builder for [`PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE`] with lifetime-tied pNext safety.
77041pub struct PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVEBuilder<'a> {
77042    inner: PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE,
77043    _marker: core::marker::PhantomData<&'a ()>,
77044}
77045impl PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {
77046    /// Start building this struct; `s_type` is already set to the correct variant.
77047    #[inline]
77048    pub fn builder<'a>() -> PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVEBuilder<
77049        'a,
77050    > {
77051        PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVEBuilder {
77052            inner: PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {
77053                s_type: StructureType::from_raw(1000611001i32),
77054                ..Default::default()
77055            },
77056            _marker: core::marker::PhantomData,
77057        }
77058    }
77059}
77060impl<'a> PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVEBuilder<'a> {
77061    #[inline]
77062    pub fn max_fragment_density_map_layers(mut self, value: u32) -> Self {
77063        self.inner.max_fragment_density_map_layers = value;
77064        self
77065    }
77066}
77067impl<'a> core::ops::Deref
77068for PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVEBuilder<'a> {
77069    type Target = PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE;
77070    #[inline]
77071    fn deref(&self) -> &Self::Target {
77072        &self.inner
77073    }
77074}
77075impl<'a> core::ops::DerefMut
77076for PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVEBuilder<'a> {
77077    #[inline]
77078    fn deref_mut(&mut self) -> &mut Self::Target {
77079        &mut self.inner
77080    }
77081}
77082///Builder for [`PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE`] with lifetime-tied pNext safety.
77083pub struct PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVEBuilder<'a> {
77084    inner: PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE,
77085    _marker: core::marker::PhantomData<&'a ()>,
77086}
77087impl PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {
77088    /// Start building this struct; `s_type` is already set to the correct variant.
77089    #[inline]
77090    pub fn builder<'a>() -> PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVEBuilder<
77091        'a,
77092    > {
77093        PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVEBuilder {
77094            inner: PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {
77095                s_type: StructureType::from_raw(1000611000i32),
77096                ..Default::default()
77097            },
77098            _marker: core::marker::PhantomData,
77099        }
77100    }
77101}
77102impl<'a> PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVEBuilder<'a> {
77103    #[inline]
77104    pub fn fragment_density_map_layered(mut self, value: bool) -> Self {
77105        self.inner.fragment_density_map_layered = value as u32;
77106        self
77107    }
77108    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE`]'s **Extended By** section for valid types.
77109    #[inline]
77110    pub fn push_next<T: ExtendsPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE>(
77111        mut self,
77112        next: &'a mut T,
77113    ) -> Self {
77114        unsafe {
77115            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
77116            (*next_ptr).p_next = self.inner.p_next as *mut _;
77117            self.inner.p_next = <*mut BaseOutStructure>::cast::<
77118                core::ffi::c_void,
77119            >(next_ptr);
77120        }
77121        self
77122    }
77123}
77124impl<'a> core::ops::Deref
77125for PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVEBuilder<'a> {
77126    type Target = PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE;
77127    #[inline]
77128    fn deref(&self) -> &Self::Target {
77129        &self.inner
77130    }
77131}
77132impl<'a> core::ops::DerefMut
77133for PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVEBuilder<'a> {
77134    #[inline]
77135    fn deref_mut(&mut self) -> &mut Self::Target {
77136        &mut self.inner
77137    }
77138}
77139///Builder for [`PipelineFragmentDensityMapLayeredCreateInfoVALVE`] with lifetime-tied pNext safety.
77140pub struct PipelineFragmentDensityMapLayeredCreateInfoVALVEBuilder<'a> {
77141    inner: PipelineFragmentDensityMapLayeredCreateInfoVALVE,
77142    _marker: core::marker::PhantomData<&'a ()>,
77143}
77144impl PipelineFragmentDensityMapLayeredCreateInfoVALVE {
77145    /// Start building this struct; `s_type` is already set to the correct variant.
77146    #[inline]
77147    pub fn builder<'a>() -> PipelineFragmentDensityMapLayeredCreateInfoVALVEBuilder<'a> {
77148        PipelineFragmentDensityMapLayeredCreateInfoVALVEBuilder {
77149            inner: PipelineFragmentDensityMapLayeredCreateInfoVALVE {
77150                s_type: StructureType::from_raw(1000611002i32),
77151                ..Default::default()
77152            },
77153            _marker: core::marker::PhantomData,
77154        }
77155    }
77156}
77157impl<'a> PipelineFragmentDensityMapLayeredCreateInfoVALVEBuilder<'a> {
77158    #[inline]
77159    pub fn max_fragment_density_map_layers(mut self, value: u32) -> Self {
77160        self.inner.max_fragment_density_map_layers = value;
77161        self
77162    }
77163    ///Prepend a struct to the pNext chain. See [`PipelineFragmentDensityMapLayeredCreateInfoVALVE`]'s **Extended By** section for valid types.
77164    #[inline]
77165    pub fn push_next<T: ExtendsPipelineFragmentDensityMapLayeredCreateInfoVALVE>(
77166        mut self,
77167        next: &'a mut T,
77168    ) -> Self {
77169        unsafe {
77170            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
77171            (*next_ptr).p_next = self.inner.p_next as *mut _;
77172            self.inner.p_next = <*mut BaseOutStructure>::cast::<
77173                core::ffi::c_void,
77174            >(next_ptr) as *const _;
77175        }
77176        self
77177    }
77178}
77179impl<'a> core::ops::Deref
77180for PipelineFragmentDensityMapLayeredCreateInfoVALVEBuilder<'a> {
77181    type Target = PipelineFragmentDensityMapLayeredCreateInfoVALVE;
77182    #[inline]
77183    fn deref(&self) -> &Self::Target {
77184        &self.inner
77185    }
77186}
77187impl<'a> core::ops::DerefMut
77188for PipelineFragmentDensityMapLayeredCreateInfoVALVEBuilder<'a> {
77189    #[inline]
77190    fn deref_mut(&mut self) -> &mut Self::Target {
77191        &mut self.inner
77192    }
77193}
77194///Builder for [`SetPresentConfigNV`] with lifetime-tied pNext safety.
77195pub struct SetPresentConfigNVBuilder<'a> {
77196    inner: SetPresentConfigNV,
77197    _marker: core::marker::PhantomData<&'a ()>,
77198}
77199impl SetPresentConfigNV {
77200    /// Start building this struct; `s_type` is already set to the correct variant.
77201    #[inline]
77202    pub fn builder<'a>() -> SetPresentConfigNVBuilder<'a> {
77203        SetPresentConfigNVBuilder {
77204            inner: SetPresentConfigNV {
77205                s_type: StructureType::from_raw(1000613000i32),
77206                ..Default::default()
77207            },
77208            _marker: core::marker::PhantomData,
77209        }
77210    }
77211}
77212impl<'a> SetPresentConfigNVBuilder<'a> {
77213    #[inline]
77214    pub fn num_frames_per_batch(mut self, value: u32) -> Self {
77215        self.inner.num_frames_per_batch = value;
77216        self
77217    }
77218    #[inline]
77219    pub fn present_config_feedback(mut self, value: u32) -> Self {
77220        self.inner.present_config_feedback = value;
77221        self
77222    }
77223    ///Prepend a struct to the pNext chain. See [`SetPresentConfigNV`]'s **Extended By** section for valid types.
77224    #[inline]
77225    pub fn push_next<T: ExtendsSetPresentConfigNV>(mut self, next: &'a mut T) -> Self {
77226        unsafe {
77227            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
77228            (*next_ptr).p_next = self.inner.p_next as *mut _;
77229            self.inner.p_next = <*mut BaseOutStructure>::cast::<
77230                core::ffi::c_void,
77231            >(next_ptr) as *const _;
77232        }
77233        self
77234    }
77235}
77236impl<'a> core::ops::Deref for SetPresentConfigNVBuilder<'a> {
77237    type Target = SetPresentConfigNV;
77238    #[inline]
77239    fn deref(&self) -> &Self::Target {
77240        &self.inner
77241    }
77242}
77243impl<'a> core::ops::DerefMut for SetPresentConfigNVBuilder<'a> {
77244    #[inline]
77245    fn deref_mut(&mut self) -> &mut Self::Target {
77246        &mut self.inner
77247    }
77248}
77249///Builder for [`PhysicalDevicePresentMeteringFeaturesNV`] with lifetime-tied pNext safety.
77250pub struct PhysicalDevicePresentMeteringFeaturesNVBuilder<'a> {
77251    inner: PhysicalDevicePresentMeteringFeaturesNV,
77252    _marker: core::marker::PhantomData<&'a ()>,
77253}
77254impl PhysicalDevicePresentMeteringFeaturesNV {
77255    /// Start building this struct; `s_type` is already set to the correct variant.
77256    #[inline]
77257    pub fn builder<'a>() -> PhysicalDevicePresentMeteringFeaturesNVBuilder<'a> {
77258        PhysicalDevicePresentMeteringFeaturesNVBuilder {
77259            inner: PhysicalDevicePresentMeteringFeaturesNV {
77260                s_type: StructureType::from_raw(1000613001i32),
77261                ..Default::default()
77262            },
77263            _marker: core::marker::PhantomData,
77264        }
77265    }
77266}
77267impl<'a> PhysicalDevicePresentMeteringFeaturesNVBuilder<'a> {
77268    #[inline]
77269    pub fn present_metering(mut self, value: bool) -> Self {
77270        self.inner.present_metering = value as u32;
77271        self
77272    }
77273    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePresentMeteringFeaturesNV`]'s **Extended By** section for valid types.
77274    #[inline]
77275    pub fn push_next<T: ExtendsPhysicalDevicePresentMeteringFeaturesNV>(
77276        mut self,
77277        next: &'a mut T,
77278    ) -> Self {
77279        unsafe {
77280            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
77281            (*next_ptr).p_next = self.inner.p_next as *mut _;
77282            self.inner.p_next = <*mut BaseOutStructure>::cast::<
77283                core::ffi::c_void,
77284            >(next_ptr);
77285        }
77286        self
77287    }
77288}
77289impl<'a> core::ops::Deref for PhysicalDevicePresentMeteringFeaturesNVBuilder<'a> {
77290    type Target = PhysicalDevicePresentMeteringFeaturesNV;
77291    #[inline]
77292    fn deref(&self) -> &Self::Target {
77293        &self.inner
77294    }
77295}
77296impl<'a> core::ops::DerefMut for PhysicalDevicePresentMeteringFeaturesNVBuilder<'a> {
77297    #[inline]
77298    fn deref_mut(&mut self) -> &mut Self::Target {
77299        &mut self.inner
77300    }
77301}
77302///Builder for [`ExternalComputeQueueDeviceCreateInfoNV`] with lifetime-tied pNext safety.
77303pub struct ExternalComputeQueueDeviceCreateInfoNVBuilder<'a> {
77304    inner: ExternalComputeQueueDeviceCreateInfoNV,
77305    _marker: core::marker::PhantomData<&'a ()>,
77306}
77307impl ExternalComputeQueueDeviceCreateInfoNV {
77308    /// Start building this struct; `s_type` is already set to the correct variant.
77309    #[inline]
77310    pub fn builder<'a>() -> ExternalComputeQueueDeviceCreateInfoNVBuilder<'a> {
77311        ExternalComputeQueueDeviceCreateInfoNVBuilder {
77312            inner: ExternalComputeQueueDeviceCreateInfoNV {
77313                s_type: StructureType::from_raw(1000556000i32),
77314                ..Default::default()
77315            },
77316            _marker: core::marker::PhantomData,
77317        }
77318    }
77319}
77320impl<'a> ExternalComputeQueueDeviceCreateInfoNVBuilder<'a> {
77321    #[inline]
77322    pub fn reserved_external_queues(mut self, value: u32) -> Self {
77323        self.inner.reserved_external_queues = value;
77324        self
77325    }
77326    ///Prepend a struct to the pNext chain. See [`ExternalComputeQueueDeviceCreateInfoNV`]'s **Extended By** section for valid types.
77327    #[inline]
77328    pub fn push_next<T: ExtendsExternalComputeQueueDeviceCreateInfoNV>(
77329        mut self,
77330        next: &'a mut T,
77331    ) -> Self {
77332        unsafe {
77333            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
77334            (*next_ptr).p_next = self.inner.p_next as *mut _;
77335            self.inner.p_next = <*mut BaseOutStructure>::cast::<
77336                core::ffi::c_void,
77337            >(next_ptr) as *const _;
77338        }
77339        self
77340    }
77341}
77342impl<'a> core::ops::Deref for ExternalComputeQueueDeviceCreateInfoNVBuilder<'a> {
77343    type Target = ExternalComputeQueueDeviceCreateInfoNV;
77344    #[inline]
77345    fn deref(&self) -> &Self::Target {
77346        &self.inner
77347    }
77348}
77349impl<'a> core::ops::DerefMut for ExternalComputeQueueDeviceCreateInfoNVBuilder<'a> {
77350    #[inline]
77351    fn deref_mut(&mut self) -> &mut Self::Target {
77352        &mut self.inner
77353    }
77354}
77355///Builder for [`ExternalComputeQueueCreateInfoNV`] with lifetime-tied pNext safety.
77356pub struct ExternalComputeQueueCreateInfoNVBuilder<'a> {
77357    inner: ExternalComputeQueueCreateInfoNV,
77358    _marker: core::marker::PhantomData<&'a ()>,
77359}
77360impl ExternalComputeQueueCreateInfoNV {
77361    /// Start building this struct; `s_type` is already set to the correct variant.
77362    #[inline]
77363    pub fn builder<'a>() -> ExternalComputeQueueCreateInfoNVBuilder<'a> {
77364        ExternalComputeQueueCreateInfoNVBuilder {
77365            inner: ExternalComputeQueueCreateInfoNV {
77366                s_type: StructureType::from_raw(1000556001i32),
77367                ..Default::default()
77368            },
77369            _marker: core::marker::PhantomData,
77370        }
77371    }
77372}
77373impl<'a> ExternalComputeQueueCreateInfoNVBuilder<'a> {
77374    #[inline]
77375    pub fn preferred_queue(mut self, value: Queue) -> Self {
77376        self.inner.preferred_queue = value;
77377        self
77378    }
77379    ///Prepend a struct to the pNext chain. See [`ExternalComputeQueueCreateInfoNV`]'s **Extended By** section for valid types.
77380    #[inline]
77381    pub fn push_next<T: ExtendsExternalComputeQueueCreateInfoNV>(
77382        mut self,
77383        next: &'a mut T,
77384    ) -> Self {
77385        unsafe {
77386            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
77387            (*next_ptr).p_next = self.inner.p_next as *mut _;
77388            self.inner.p_next = <*mut BaseOutStructure>::cast::<
77389                core::ffi::c_void,
77390            >(next_ptr) as *const _;
77391        }
77392        self
77393    }
77394}
77395impl<'a> core::ops::Deref for ExternalComputeQueueCreateInfoNVBuilder<'a> {
77396    type Target = ExternalComputeQueueCreateInfoNV;
77397    #[inline]
77398    fn deref(&self) -> &Self::Target {
77399        &self.inner
77400    }
77401}
77402impl<'a> core::ops::DerefMut for ExternalComputeQueueCreateInfoNVBuilder<'a> {
77403    #[inline]
77404    fn deref_mut(&mut self) -> &mut Self::Target {
77405        &mut self.inner
77406    }
77407}
77408///Builder for [`ExternalComputeQueueDataParamsNV`] with lifetime-tied pNext safety.
77409pub struct ExternalComputeQueueDataParamsNVBuilder<'a> {
77410    inner: ExternalComputeQueueDataParamsNV,
77411    _marker: core::marker::PhantomData<&'a ()>,
77412}
77413impl ExternalComputeQueueDataParamsNV {
77414    /// Start building this struct; `s_type` is already set to the correct variant.
77415    #[inline]
77416    pub fn builder<'a>() -> ExternalComputeQueueDataParamsNVBuilder<'a> {
77417        ExternalComputeQueueDataParamsNVBuilder {
77418            inner: ExternalComputeQueueDataParamsNV {
77419                s_type: StructureType::from_raw(1000556002i32),
77420                ..Default::default()
77421            },
77422            _marker: core::marker::PhantomData,
77423        }
77424    }
77425}
77426impl<'a> ExternalComputeQueueDataParamsNVBuilder<'a> {
77427    #[inline]
77428    pub fn device_index(mut self, value: u32) -> Self {
77429        self.inner.device_index = value;
77430        self
77431    }
77432    ///Prepend a struct to the pNext chain. See [`ExternalComputeQueueDataParamsNV`]'s **Extended By** section for valid types.
77433    #[inline]
77434    pub fn push_next<T: ExtendsExternalComputeQueueDataParamsNV>(
77435        mut self,
77436        next: &'a mut T,
77437    ) -> Self {
77438        unsafe {
77439            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
77440            (*next_ptr).p_next = self.inner.p_next as *mut _;
77441            self.inner.p_next = <*mut BaseOutStructure>::cast::<
77442                core::ffi::c_void,
77443            >(next_ptr) as *const _;
77444        }
77445        self
77446    }
77447}
77448impl<'a> core::ops::Deref for ExternalComputeQueueDataParamsNVBuilder<'a> {
77449    type Target = ExternalComputeQueueDataParamsNV;
77450    #[inline]
77451    fn deref(&self) -> &Self::Target {
77452        &self.inner
77453    }
77454}
77455impl<'a> core::ops::DerefMut for ExternalComputeQueueDataParamsNVBuilder<'a> {
77456    #[inline]
77457    fn deref_mut(&mut self) -> &mut Self::Target {
77458        &mut self.inner
77459    }
77460}
77461///Builder for [`PhysicalDeviceExternalComputeQueuePropertiesNV`] with lifetime-tied pNext safety.
77462pub struct PhysicalDeviceExternalComputeQueuePropertiesNVBuilder<'a> {
77463    inner: PhysicalDeviceExternalComputeQueuePropertiesNV,
77464    _marker: core::marker::PhantomData<&'a ()>,
77465}
77466impl PhysicalDeviceExternalComputeQueuePropertiesNV {
77467    /// Start building this struct; `s_type` is already set to the correct variant.
77468    #[inline]
77469    pub fn builder<'a>() -> PhysicalDeviceExternalComputeQueuePropertiesNVBuilder<'a> {
77470        PhysicalDeviceExternalComputeQueuePropertiesNVBuilder {
77471            inner: PhysicalDeviceExternalComputeQueuePropertiesNV {
77472                s_type: StructureType::from_raw(1000556003i32),
77473                ..Default::default()
77474            },
77475            _marker: core::marker::PhantomData,
77476        }
77477    }
77478}
77479impl<'a> PhysicalDeviceExternalComputeQueuePropertiesNVBuilder<'a> {
77480    #[inline]
77481    pub fn external_data_size(mut self, value: u32) -> Self {
77482        self.inner.external_data_size = value;
77483        self
77484    }
77485    #[inline]
77486    pub fn max_external_queues(mut self, value: u32) -> Self {
77487        self.inner.max_external_queues = value;
77488        self
77489    }
77490}
77491impl<'a> core::ops::Deref for PhysicalDeviceExternalComputeQueuePropertiesNVBuilder<'a> {
77492    type Target = PhysicalDeviceExternalComputeQueuePropertiesNV;
77493    #[inline]
77494    fn deref(&self) -> &Self::Target {
77495        &self.inner
77496    }
77497}
77498impl<'a> core::ops::DerefMut
77499for PhysicalDeviceExternalComputeQueuePropertiesNVBuilder<'a> {
77500    #[inline]
77501    fn deref_mut(&mut self) -> &mut Self::Target {
77502        &mut self.inner
77503    }
77504}
77505///Builder for [`PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT`] with lifetime-tied pNext safety.
77506pub struct PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXTBuilder<'a> {
77507    inner: PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT,
77508    _marker: core::marker::PhantomData<&'a ()>,
77509}
77510impl PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT {
77511    /// Start building this struct; `s_type` is already set to the correct variant.
77512    #[inline]
77513    pub fn builder<'a>() -> PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXTBuilder<
77514        'a,
77515    > {
77516        PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXTBuilder {
77517            inner: PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT {
77518                s_type: StructureType::from_raw(1000642000i32),
77519                ..Default::default()
77520            },
77521            _marker: core::marker::PhantomData,
77522        }
77523    }
77524}
77525impl<'a> PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXTBuilder<'a> {
77526    #[inline]
77527    pub fn shader_uniform_buffer_unsized_array(mut self, value: bool) -> Self {
77528        self.inner.shader_uniform_buffer_unsized_array = value as u32;
77529        self
77530    }
77531    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT`]'s **Extended By** section for valid types.
77532    #[inline]
77533    pub fn push_next<T: ExtendsPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT>(
77534        mut self,
77535        next: &'a mut T,
77536    ) -> Self {
77537        unsafe {
77538            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
77539            (*next_ptr).p_next = self.inner.p_next as *mut _;
77540            self.inner.p_next = <*mut BaseOutStructure>::cast::<
77541                core::ffi::c_void,
77542            >(next_ptr);
77543        }
77544        self
77545    }
77546}
77547impl<'a> core::ops::Deref
77548for PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXTBuilder<'a> {
77549    type Target = PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT;
77550    #[inline]
77551    fn deref(&self) -> &Self::Target {
77552        &self.inner
77553    }
77554}
77555impl<'a> core::ops::DerefMut
77556for PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXTBuilder<'a> {
77557    #[inline]
77558    fn deref_mut(&mut self) -> &mut Self::Target {
77559        &mut self.inner
77560    }
77561}
77562///Builder for [`PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE`] with lifetime-tied pNext safety.
77563pub struct PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVEBuilder<'a> {
77564    inner: PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE,
77565    _marker: core::marker::PhantomData<&'a ()>,
77566}
77567impl PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE {
77568    /// Start building this struct; `s_type` is already set to the correct variant.
77569    #[inline]
77570    pub fn builder<'a>() -> PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVEBuilder<
77571        'a,
77572    > {
77573        PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVEBuilder {
77574            inner: PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE {
77575                s_type: StructureType::from_raw(1000673000i32),
77576                ..Default::default()
77577            },
77578            _marker: core::marker::PhantomData,
77579        }
77580    }
77581}
77582impl<'a> PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVEBuilder<'a> {
77583    #[inline]
77584    pub fn shader_mixed_float_dot_product_float16_acc_float32(
77585        mut self,
77586        value: bool,
77587    ) -> Self {
77588        self.inner.shader_mixed_float_dot_product_float16_acc_float32 = value as u32;
77589        self
77590    }
77591    #[inline]
77592    pub fn shader_mixed_float_dot_product_float16_acc_float16(
77593        mut self,
77594        value: bool,
77595    ) -> Self {
77596        self.inner.shader_mixed_float_dot_product_float16_acc_float16 = value as u32;
77597        self
77598    }
77599    #[inline]
77600    pub fn shader_mixed_float_dot_product_b_float16_acc(mut self, value: bool) -> Self {
77601        self.inner.shader_mixed_float_dot_product_b_float16_acc = value as u32;
77602        self
77603    }
77604    #[inline]
77605    pub fn shader_mixed_float_dot_product_float8_acc_float32(
77606        mut self,
77607        value: bool,
77608    ) -> Self {
77609        self.inner.shader_mixed_float_dot_product_float8_acc_float32 = value as u32;
77610        self
77611    }
77612    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE`]'s **Extended By** section for valid types.
77613    #[inline]
77614    pub fn push_next<T: ExtendsPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE>(
77615        mut self,
77616        next: &'a mut T,
77617    ) -> Self {
77618        unsafe {
77619            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
77620            (*next_ptr).p_next = self.inner.p_next as *mut _;
77621            self.inner.p_next = <*mut BaseOutStructure>::cast::<
77622                core::ffi::c_void,
77623            >(next_ptr);
77624        }
77625        self
77626    }
77627}
77628impl<'a> core::ops::Deref
77629for PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVEBuilder<'a> {
77630    type Target = PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE;
77631    #[inline]
77632    fn deref(&self) -> &Self::Target {
77633        &self.inner
77634    }
77635}
77636impl<'a> core::ops::DerefMut
77637for PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVEBuilder<'a> {
77638    #[inline]
77639    fn deref_mut(&mut self) -> &mut Self::Target {
77640        &mut self.inner
77641    }
77642}
77643///Builder for [`PhysicalDeviceFormatPackFeaturesARM`] with lifetime-tied pNext safety.
77644pub struct PhysicalDeviceFormatPackFeaturesARMBuilder<'a> {
77645    inner: PhysicalDeviceFormatPackFeaturesARM,
77646    _marker: core::marker::PhantomData<&'a ()>,
77647}
77648impl PhysicalDeviceFormatPackFeaturesARM {
77649    /// Start building this struct; `s_type` is already set to the correct variant.
77650    #[inline]
77651    pub fn builder<'a>() -> PhysicalDeviceFormatPackFeaturesARMBuilder<'a> {
77652        PhysicalDeviceFormatPackFeaturesARMBuilder {
77653            inner: PhysicalDeviceFormatPackFeaturesARM {
77654                s_type: StructureType::from_raw(1000609000i32),
77655                ..Default::default()
77656            },
77657            _marker: core::marker::PhantomData,
77658        }
77659    }
77660}
77661impl<'a> PhysicalDeviceFormatPackFeaturesARMBuilder<'a> {
77662    #[inline]
77663    pub fn format_pack(mut self, value: bool) -> Self {
77664        self.inner.format_pack = value as u32;
77665        self
77666    }
77667    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceFormatPackFeaturesARM`]'s **Extended By** section for valid types.
77668    #[inline]
77669    pub fn push_next<T: ExtendsPhysicalDeviceFormatPackFeaturesARM>(
77670        mut self,
77671        next: &'a mut T,
77672    ) -> Self {
77673        unsafe {
77674            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
77675            (*next_ptr).p_next = self.inner.p_next as *mut _;
77676            self.inner.p_next = <*mut BaseOutStructure>::cast::<
77677                core::ffi::c_void,
77678            >(next_ptr);
77679        }
77680        self
77681    }
77682}
77683impl<'a> core::ops::Deref for PhysicalDeviceFormatPackFeaturesARMBuilder<'a> {
77684    type Target = PhysicalDeviceFormatPackFeaturesARM;
77685    #[inline]
77686    fn deref(&self) -> &Self::Target {
77687        &self.inner
77688    }
77689}
77690impl<'a> core::ops::DerefMut for PhysicalDeviceFormatPackFeaturesARMBuilder<'a> {
77691    #[inline]
77692    fn deref_mut(&mut self) -> &mut Self::Target {
77693        &mut self.inner
77694    }
77695}
77696///Builder for [`TensorDescriptionARM`] with lifetime-tied pNext safety.
77697pub struct TensorDescriptionARMBuilder<'a> {
77698    inner: TensorDescriptionARM,
77699    _marker: core::marker::PhantomData<&'a ()>,
77700}
77701impl TensorDescriptionARM {
77702    /// Start building this struct; `s_type` is already set to the correct variant.
77703    #[inline]
77704    pub fn builder<'a>() -> TensorDescriptionARMBuilder<'a> {
77705        TensorDescriptionARMBuilder {
77706            inner: TensorDescriptionARM {
77707                s_type: StructureType::from_raw(1000460006i32),
77708                ..Default::default()
77709            },
77710            _marker: core::marker::PhantomData,
77711        }
77712    }
77713}
77714impl<'a> TensorDescriptionARMBuilder<'a> {
77715    #[inline]
77716    pub fn tiling(mut self, value: TensorTilingARM) -> Self {
77717        self.inner.tiling = value;
77718        self
77719    }
77720    #[inline]
77721    pub fn format(mut self, value: Format) -> Self {
77722        self.inner.format = value;
77723        self
77724    }
77725    #[inline]
77726    pub fn dimensions(mut self, slice: &'a [i64]) -> Self {
77727        self.inner.dimension_count = slice.len() as u32;
77728        self.inner.p_dimensions = slice.as_ptr();
77729        self
77730    }
77731    #[inline]
77732    pub fn strides(mut self, slice: &'a [i64]) -> Self {
77733        self.inner.dimension_count = slice.len() as u32;
77734        self.inner.p_strides = slice.as_ptr();
77735        self
77736    }
77737    #[inline]
77738    pub fn usage(mut self, value: TensorUsageFlagsARM) -> Self {
77739        self.inner.usage = value;
77740        self
77741    }
77742    ///Prepend a struct to the pNext chain. See [`TensorDescriptionARM`]'s **Extended By** section for valid types.
77743    #[inline]
77744    pub fn push_next<T: ExtendsTensorDescriptionARM>(mut self, next: &'a mut T) -> Self {
77745        unsafe {
77746            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
77747            (*next_ptr).p_next = self.inner.p_next as *mut _;
77748            self.inner.p_next = <*mut BaseOutStructure>::cast::<
77749                core::ffi::c_void,
77750            >(next_ptr) as *const _;
77751        }
77752        self
77753    }
77754}
77755impl<'a> core::ops::Deref for TensorDescriptionARMBuilder<'a> {
77756    type Target = TensorDescriptionARM;
77757    #[inline]
77758    fn deref(&self) -> &Self::Target {
77759        &self.inner
77760    }
77761}
77762impl<'a> core::ops::DerefMut for TensorDescriptionARMBuilder<'a> {
77763    #[inline]
77764    fn deref_mut(&mut self) -> &mut Self::Target {
77765        &mut self.inner
77766    }
77767}
77768///Builder for [`TensorCreateInfoARM`] with lifetime-tied pNext safety.
77769pub struct TensorCreateInfoARMBuilder<'a> {
77770    inner: TensorCreateInfoARM,
77771    _marker: core::marker::PhantomData<&'a ()>,
77772}
77773impl TensorCreateInfoARM {
77774    /// Start building this struct; `s_type` is already set to the correct variant.
77775    #[inline]
77776    pub fn builder<'a>() -> TensorCreateInfoARMBuilder<'a> {
77777        TensorCreateInfoARMBuilder {
77778            inner: TensorCreateInfoARM {
77779                s_type: StructureType::from_raw(1000460000i32),
77780                ..Default::default()
77781            },
77782            _marker: core::marker::PhantomData,
77783        }
77784    }
77785}
77786impl<'a> TensorCreateInfoARMBuilder<'a> {
77787    #[inline]
77788    pub fn flags(mut self, value: TensorCreateFlagsARM) -> Self {
77789        self.inner.flags = value;
77790        self
77791    }
77792    #[inline]
77793    pub fn description(mut self, value: &'a TensorDescriptionARM) -> Self {
77794        self.inner.p_description = value;
77795        self
77796    }
77797    #[inline]
77798    pub fn sharing_mode(mut self, value: SharingMode) -> Self {
77799        self.inner.sharing_mode = value;
77800        self
77801    }
77802    #[inline]
77803    pub fn queue_family_indices(mut self, slice: &'a [u32]) -> Self {
77804        self.inner.queue_family_index_count = slice.len() as u32;
77805        self.inner.p_queue_family_indices = slice.as_ptr();
77806        self
77807    }
77808    ///Prepend a struct to the pNext chain. See [`TensorCreateInfoARM`]'s **Extended By** section for valid types.
77809    #[inline]
77810    pub fn push_next<T: ExtendsTensorCreateInfoARM>(mut self, next: &'a mut T) -> Self {
77811        unsafe {
77812            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
77813            (*next_ptr).p_next = self.inner.p_next as *mut _;
77814            self.inner.p_next = <*mut BaseOutStructure>::cast::<
77815                core::ffi::c_void,
77816            >(next_ptr) as *const _;
77817        }
77818        self
77819    }
77820}
77821impl<'a> core::ops::Deref for TensorCreateInfoARMBuilder<'a> {
77822    type Target = TensorCreateInfoARM;
77823    #[inline]
77824    fn deref(&self) -> &Self::Target {
77825        &self.inner
77826    }
77827}
77828impl<'a> core::ops::DerefMut for TensorCreateInfoARMBuilder<'a> {
77829    #[inline]
77830    fn deref_mut(&mut self) -> &mut Self::Target {
77831        &mut self.inner
77832    }
77833}
77834///Builder for [`TensorViewCreateInfoARM`] with lifetime-tied pNext safety.
77835pub struct TensorViewCreateInfoARMBuilder<'a> {
77836    inner: TensorViewCreateInfoARM,
77837    _marker: core::marker::PhantomData<&'a ()>,
77838}
77839impl TensorViewCreateInfoARM {
77840    /// Start building this struct; `s_type` is already set to the correct variant.
77841    #[inline]
77842    pub fn builder<'a>() -> TensorViewCreateInfoARMBuilder<'a> {
77843        TensorViewCreateInfoARMBuilder {
77844            inner: TensorViewCreateInfoARM {
77845                s_type: StructureType::from_raw(1000460001i32),
77846                ..Default::default()
77847            },
77848            _marker: core::marker::PhantomData,
77849        }
77850    }
77851}
77852impl<'a> TensorViewCreateInfoARMBuilder<'a> {
77853    #[inline]
77854    pub fn flags(mut self, value: TensorViewCreateFlagsARM) -> Self {
77855        self.inner.flags = value;
77856        self
77857    }
77858    #[inline]
77859    pub fn tensor(mut self, value: TensorARM) -> Self {
77860        self.inner.tensor = value;
77861        self
77862    }
77863    #[inline]
77864    pub fn format(mut self, value: Format) -> Self {
77865        self.inner.format = value;
77866        self
77867    }
77868    ///Prepend a struct to the pNext chain. See [`TensorViewCreateInfoARM`]'s **Extended By** section for valid types.
77869    #[inline]
77870    pub fn push_next<T: ExtendsTensorViewCreateInfoARM>(
77871        mut self,
77872        next: &'a mut T,
77873    ) -> Self {
77874        unsafe {
77875            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
77876            (*next_ptr).p_next = self.inner.p_next as *mut _;
77877            self.inner.p_next = <*mut BaseOutStructure>::cast::<
77878                core::ffi::c_void,
77879            >(next_ptr) as *const _;
77880        }
77881        self
77882    }
77883}
77884impl<'a> core::ops::Deref for TensorViewCreateInfoARMBuilder<'a> {
77885    type Target = TensorViewCreateInfoARM;
77886    #[inline]
77887    fn deref(&self) -> &Self::Target {
77888        &self.inner
77889    }
77890}
77891impl<'a> core::ops::DerefMut for TensorViewCreateInfoARMBuilder<'a> {
77892    #[inline]
77893    fn deref_mut(&mut self) -> &mut Self::Target {
77894        &mut self.inner
77895    }
77896}
77897///Builder for [`TensorMemoryRequirementsInfoARM`] with lifetime-tied pNext safety.
77898pub struct TensorMemoryRequirementsInfoARMBuilder<'a> {
77899    inner: TensorMemoryRequirementsInfoARM,
77900    _marker: core::marker::PhantomData<&'a ()>,
77901}
77902impl TensorMemoryRequirementsInfoARM {
77903    /// Start building this struct; `s_type` is already set to the correct variant.
77904    #[inline]
77905    pub fn builder<'a>() -> TensorMemoryRequirementsInfoARMBuilder<'a> {
77906        TensorMemoryRequirementsInfoARMBuilder {
77907            inner: TensorMemoryRequirementsInfoARM {
77908                s_type: StructureType::from_raw(1000460007i32),
77909                ..Default::default()
77910            },
77911            _marker: core::marker::PhantomData,
77912        }
77913    }
77914}
77915impl<'a> TensorMemoryRequirementsInfoARMBuilder<'a> {
77916    #[inline]
77917    pub fn tensor(mut self, value: TensorARM) -> Self {
77918        self.inner.tensor = value;
77919        self
77920    }
77921    ///Prepend a struct to the pNext chain. See [`TensorMemoryRequirementsInfoARM`]'s **Extended By** section for valid types.
77922    #[inline]
77923    pub fn push_next<T: ExtendsTensorMemoryRequirementsInfoARM>(
77924        mut self,
77925        next: &'a mut T,
77926    ) -> Self {
77927        unsafe {
77928            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
77929            (*next_ptr).p_next = self.inner.p_next as *mut _;
77930            self.inner.p_next = <*mut BaseOutStructure>::cast::<
77931                core::ffi::c_void,
77932            >(next_ptr) as *const _;
77933        }
77934        self
77935    }
77936}
77937impl<'a> core::ops::Deref for TensorMemoryRequirementsInfoARMBuilder<'a> {
77938    type Target = TensorMemoryRequirementsInfoARM;
77939    #[inline]
77940    fn deref(&self) -> &Self::Target {
77941        &self.inner
77942    }
77943}
77944impl<'a> core::ops::DerefMut for TensorMemoryRequirementsInfoARMBuilder<'a> {
77945    #[inline]
77946    fn deref_mut(&mut self) -> &mut Self::Target {
77947        &mut self.inner
77948    }
77949}
77950///Builder for [`BindTensorMemoryInfoARM`] with lifetime-tied pNext safety.
77951pub struct BindTensorMemoryInfoARMBuilder<'a> {
77952    inner: BindTensorMemoryInfoARM,
77953    _marker: core::marker::PhantomData<&'a ()>,
77954}
77955impl BindTensorMemoryInfoARM {
77956    /// Start building this struct; `s_type` is already set to the correct variant.
77957    #[inline]
77958    pub fn builder<'a>() -> BindTensorMemoryInfoARMBuilder<'a> {
77959        BindTensorMemoryInfoARMBuilder {
77960            inner: BindTensorMemoryInfoARM {
77961                s_type: StructureType::from_raw(1000460002i32),
77962                ..Default::default()
77963            },
77964            _marker: core::marker::PhantomData,
77965        }
77966    }
77967}
77968impl<'a> BindTensorMemoryInfoARMBuilder<'a> {
77969    #[inline]
77970    pub fn tensor(mut self, value: TensorARM) -> Self {
77971        self.inner.tensor = value;
77972        self
77973    }
77974    #[inline]
77975    pub fn memory(mut self, value: DeviceMemory) -> Self {
77976        self.inner.memory = value;
77977        self
77978    }
77979    #[inline]
77980    pub fn memory_offset(mut self, value: u64) -> Self {
77981        self.inner.memory_offset = value;
77982        self
77983    }
77984    ///Prepend a struct to the pNext chain. See [`BindTensorMemoryInfoARM`]'s **Extended By** section for valid types.
77985    #[inline]
77986    pub fn push_next<T: ExtendsBindTensorMemoryInfoARM>(
77987        mut self,
77988        next: &'a mut T,
77989    ) -> Self {
77990        unsafe {
77991            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
77992            (*next_ptr).p_next = self.inner.p_next as *mut _;
77993            self.inner.p_next = <*mut BaseOutStructure>::cast::<
77994                core::ffi::c_void,
77995            >(next_ptr) as *const _;
77996        }
77997        self
77998    }
77999}
78000impl<'a> core::ops::Deref for BindTensorMemoryInfoARMBuilder<'a> {
78001    type Target = BindTensorMemoryInfoARM;
78002    #[inline]
78003    fn deref(&self) -> &Self::Target {
78004        &self.inner
78005    }
78006}
78007impl<'a> core::ops::DerefMut for BindTensorMemoryInfoARMBuilder<'a> {
78008    #[inline]
78009    fn deref_mut(&mut self) -> &mut Self::Target {
78010        &mut self.inner
78011    }
78012}
78013///Builder for [`WriteDescriptorSetTensorARM`] with lifetime-tied pNext safety.
78014pub struct WriteDescriptorSetTensorARMBuilder<'a> {
78015    inner: WriteDescriptorSetTensorARM,
78016    _marker: core::marker::PhantomData<&'a ()>,
78017}
78018impl WriteDescriptorSetTensorARM {
78019    /// Start building this struct; `s_type` is already set to the correct variant.
78020    #[inline]
78021    pub fn builder<'a>() -> WriteDescriptorSetTensorARMBuilder<'a> {
78022        WriteDescriptorSetTensorARMBuilder {
78023            inner: WriteDescriptorSetTensorARM {
78024                s_type: StructureType::from_raw(1000460003i32),
78025                ..Default::default()
78026            },
78027            _marker: core::marker::PhantomData,
78028        }
78029    }
78030}
78031impl<'a> WriteDescriptorSetTensorARMBuilder<'a> {
78032    #[inline]
78033    pub fn tensor_view_count(mut self, value: u32) -> Self {
78034        self.inner.tensor_view_count = value;
78035        self
78036    }
78037    #[inline]
78038    pub fn tensor_views(mut self, slice: &'a [TensorViewARM]) -> Self {
78039        self.inner.tensor_view_count = slice.len() as u32;
78040        self.inner.p_tensor_views = slice.as_ptr();
78041        self
78042    }
78043    ///Prepend a struct to the pNext chain. See [`WriteDescriptorSetTensorARM`]'s **Extended By** section for valid types.
78044    #[inline]
78045    pub fn push_next<T: ExtendsWriteDescriptorSetTensorARM>(
78046        mut self,
78047        next: &'a mut T,
78048    ) -> Self {
78049        unsafe {
78050            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
78051            (*next_ptr).p_next = self.inner.p_next as *mut _;
78052            self.inner.p_next = <*mut BaseOutStructure>::cast::<
78053                core::ffi::c_void,
78054            >(next_ptr) as *const _;
78055        }
78056        self
78057    }
78058}
78059impl<'a> core::ops::Deref for WriteDescriptorSetTensorARMBuilder<'a> {
78060    type Target = WriteDescriptorSetTensorARM;
78061    #[inline]
78062    fn deref(&self) -> &Self::Target {
78063        &self.inner
78064    }
78065}
78066impl<'a> core::ops::DerefMut for WriteDescriptorSetTensorARMBuilder<'a> {
78067    #[inline]
78068    fn deref_mut(&mut self) -> &mut Self::Target {
78069        &mut self.inner
78070    }
78071}
78072///Builder for [`TensorFormatPropertiesARM`] with lifetime-tied pNext safety.
78073pub struct TensorFormatPropertiesARMBuilder<'a> {
78074    inner: TensorFormatPropertiesARM,
78075    _marker: core::marker::PhantomData<&'a ()>,
78076}
78077impl TensorFormatPropertiesARM {
78078    /// Start building this struct; `s_type` is already set to the correct variant.
78079    #[inline]
78080    pub fn builder<'a>() -> TensorFormatPropertiesARMBuilder<'a> {
78081        TensorFormatPropertiesARMBuilder {
78082            inner: TensorFormatPropertiesARM {
78083                s_type: StructureType::from_raw(1000460005i32),
78084                ..Default::default()
78085            },
78086            _marker: core::marker::PhantomData,
78087        }
78088    }
78089}
78090impl<'a> TensorFormatPropertiesARMBuilder<'a> {
78091    #[inline]
78092    pub fn optimal_tiling_tensor_features(mut self, value: FormatFeatureFlags2) -> Self {
78093        self.inner.optimal_tiling_tensor_features = value;
78094        self
78095    }
78096    #[inline]
78097    pub fn linear_tiling_tensor_features(mut self, value: FormatFeatureFlags2) -> Self {
78098        self.inner.linear_tiling_tensor_features = value;
78099        self
78100    }
78101}
78102impl<'a> core::ops::Deref for TensorFormatPropertiesARMBuilder<'a> {
78103    type Target = TensorFormatPropertiesARM;
78104    #[inline]
78105    fn deref(&self) -> &Self::Target {
78106        &self.inner
78107    }
78108}
78109impl<'a> core::ops::DerefMut for TensorFormatPropertiesARMBuilder<'a> {
78110    #[inline]
78111    fn deref_mut(&mut self) -> &mut Self::Target {
78112        &mut self.inner
78113    }
78114}
78115///Builder for [`PhysicalDeviceTensorPropertiesARM`] with lifetime-tied pNext safety.
78116pub struct PhysicalDeviceTensorPropertiesARMBuilder<'a> {
78117    inner: PhysicalDeviceTensorPropertiesARM,
78118    _marker: core::marker::PhantomData<&'a ()>,
78119}
78120impl PhysicalDeviceTensorPropertiesARM {
78121    /// Start building this struct; `s_type` is already set to the correct variant.
78122    #[inline]
78123    pub fn builder<'a>() -> PhysicalDeviceTensorPropertiesARMBuilder<'a> {
78124        PhysicalDeviceTensorPropertiesARMBuilder {
78125            inner: PhysicalDeviceTensorPropertiesARM {
78126                s_type: StructureType::from_raw(1000460004i32),
78127                ..Default::default()
78128            },
78129            _marker: core::marker::PhantomData,
78130        }
78131    }
78132}
78133impl<'a> PhysicalDeviceTensorPropertiesARMBuilder<'a> {
78134    #[inline]
78135    pub fn max_tensor_dimension_count(mut self, value: u32) -> Self {
78136        self.inner.max_tensor_dimension_count = value;
78137        self
78138    }
78139    #[inline]
78140    pub fn max_tensor_elements(mut self, value: u64) -> Self {
78141        self.inner.max_tensor_elements = value;
78142        self
78143    }
78144    #[inline]
78145    pub fn max_per_dimension_tensor_elements(mut self, value: u64) -> Self {
78146        self.inner.max_per_dimension_tensor_elements = value;
78147        self
78148    }
78149    #[inline]
78150    pub fn max_tensor_stride(mut self, value: i64) -> Self {
78151        self.inner.max_tensor_stride = value;
78152        self
78153    }
78154    #[inline]
78155    pub fn max_tensor_size(mut self, value: u64) -> Self {
78156        self.inner.max_tensor_size = value;
78157        self
78158    }
78159    #[inline]
78160    pub fn max_tensor_shader_access_array_length(mut self, value: u32) -> Self {
78161        self.inner.max_tensor_shader_access_array_length = value;
78162        self
78163    }
78164    #[inline]
78165    pub fn max_tensor_shader_access_size(mut self, value: u32) -> Self {
78166        self.inner.max_tensor_shader_access_size = value;
78167        self
78168    }
78169    #[inline]
78170    pub fn max_descriptor_set_storage_tensors(mut self, value: u32) -> Self {
78171        self.inner.max_descriptor_set_storage_tensors = value;
78172        self
78173    }
78174    #[inline]
78175    pub fn max_per_stage_descriptor_set_storage_tensors(mut self, value: u32) -> Self {
78176        self.inner.max_per_stage_descriptor_set_storage_tensors = value;
78177        self
78178    }
78179    #[inline]
78180    pub fn max_descriptor_set_update_after_bind_storage_tensors(
78181        mut self,
78182        value: u32,
78183    ) -> Self {
78184        self.inner.max_descriptor_set_update_after_bind_storage_tensors = value;
78185        self
78186    }
78187    #[inline]
78188    pub fn max_per_stage_descriptor_update_after_bind_storage_tensors(
78189        mut self,
78190        value: u32,
78191    ) -> Self {
78192        self.inner.max_per_stage_descriptor_update_after_bind_storage_tensors = value;
78193        self
78194    }
78195    #[inline]
78196    pub fn shader_storage_tensor_array_non_uniform_indexing_native(
78197        mut self,
78198        value: bool,
78199    ) -> Self {
78200        self.inner.shader_storage_tensor_array_non_uniform_indexing_native = value
78201            as u32;
78202        self
78203    }
78204    #[inline]
78205    pub fn shader_tensor_supported_stages(mut self, value: ShaderStageFlags) -> Self {
78206        self.inner.shader_tensor_supported_stages = value;
78207        self
78208    }
78209}
78210impl<'a> core::ops::Deref for PhysicalDeviceTensorPropertiesARMBuilder<'a> {
78211    type Target = PhysicalDeviceTensorPropertiesARM;
78212    #[inline]
78213    fn deref(&self) -> &Self::Target {
78214        &self.inner
78215    }
78216}
78217impl<'a> core::ops::DerefMut for PhysicalDeviceTensorPropertiesARMBuilder<'a> {
78218    #[inline]
78219    fn deref_mut(&mut self) -> &mut Self::Target {
78220        &mut self.inner
78221    }
78222}
78223///Builder for [`TensorMemoryBarrierARM`] with lifetime-tied pNext safety.
78224pub struct TensorMemoryBarrierARMBuilder<'a> {
78225    inner: TensorMemoryBarrierARM,
78226    _marker: core::marker::PhantomData<&'a ()>,
78227}
78228impl TensorMemoryBarrierARM {
78229    /// Start building this struct; `s_type` is already set to the correct variant.
78230    #[inline]
78231    pub fn builder<'a>() -> TensorMemoryBarrierARMBuilder<'a> {
78232        TensorMemoryBarrierARMBuilder {
78233            inner: TensorMemoryBarrierARM {
78234                s_type: StructureType::from_raw(1000460008i32),
78235                ..Default::default()
78236            },
78237            _marker: core::marker::PhantomData,
78238        }
78239    }
78240}
78241impl<'a> TensorMemoryBarrierARMBuilder<'a> {
78242    #[inline]
78243    pub fn src_stage_mask(mut self, value: PipelineStageFlags2) -> Self {
78244        self.inner.src_stage_mask = value;
78245        self
78246    }
78247    #[inline]
78248    pub fn src_access_mask(mut self, value: AccessFlags2) -> Self {
78249        self.inner.src_access_mask = value;
78250        self
78251    }
78252    #[inline]
78253    pub fn dst_stage_mask(mut self, value: PipelineStageFlags2) -> Self {
78254        self.inner.dst_stage_mask = value;
78255        self
78256    }
78257    #[inline]
78258    pub fn dst_access_mask(mut self, value: AccessFlags2) -> Self {
78259        self.inner.dst_access_mask = value;
78260        self
78261    }
78262    #[inline]
78263    pub fn src_queue_family_index(mut self, value: u32) -> Self {
78264        self.inner.src_queue_family_index = value;
78265        self
78266    }
78267    #[inline]
78268    pub fn dst_queue_family_index(mut self, value: u32) -> Self {
78269        self.inner.dst_queue_family_index = value;
78270        self
78271    }
78272    #[inline]
78273    pub fn tensor(mut self, value: TensorARM) -> Self {
78274        self.inner.tensor = value;
78275        self
78276    }
78277    ///Prepend a struct to the pNext chain. See [`TensorMemoryBarrierARM`]'s **Extended By** section for valid types.
78278    #[inline]
78279    pub fn push_next<T: ExtendsTensorMemoryBarrierARM>(
78280        mut self,
78281        next: &'a mut T,
78282    ) -> Self {
78283        unsafe {
78284            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
78285            (*next_ptr).p_next = self.inner.p_next as *mut _;
78286            self.inner.p_next = <*mut BaseOutStructure>::cast::<
78287                core::ffi::c_void,
78288            >(next_ptr) as *const _;
78289        }
78290        self
78291    }
78292}
78293impl<'a> core::ops::Deref for TensorMemoryBarrierARMBuilder<'a> {
78294    type Target = TensorMemoryBarrierARM;
78295    #[inline]
78296    fn deref(&self) -> &Self::Target {
78297        &self.inner
78298    }
78299}
78300impl<'a> core::ops::DerefMut for TensorMemoryBarrierARMBuilder<'a> {
78301    #[inline]
78302    fn deref_mut(&mut self) -> &mut Self::Target {
78303        &mut self.inner
78304    }
78305}
78306///Builder for [`TensorDependencyInfoARM`] with lifetime-tied pNext safety.
78307pub struct TensorDependencyInfoARMBuilder<'a> {
78308    inner: TensorDependencyInfoARM,
78309    _marker: core::marker::PhantomData<&'a ()>,
78310}
78311impl TensorDependencyInfoARM {
78312    /// Start building this struct; `s_type` is already set to the correct variant.
78313    #[inline]
78314    pub fn builder<'a>() -> TensorDependencyInfoARMBuilder<'a> {
78315        TensorDependencyInfoARMBuilder {
78316            inner: TensorDependencyInfoARM {
78317                s_type: StructureType::from_raw(1000460013i32),
78318                ..Default::default()
78319            },
78320            _marker: core::marker::PhantomData,
78321        }
78322    }
78323}
78324impl<'a> TensorDependencyInfoARMBuilder<'a> {
78325    #[inline]
78326    pub fn tensor_memory_barrier_count(mut self, value: u32) -> Self {
78327        self.inner.tensor_memory_barrier_count = value;
78328        self
78329    }
78330    #[inline]
78331    pub fn tensor_memory_barriers(mut self, value: &'a TensorMemoryBarrierARM) -> Self {
78332        self.inner.p_tensor_memory_barriers = value;
78333        self
78334    }
78335    ///Prepend a struct to the pNext chain. See [`TensorDependencyInfoARM`]'s **Extended By** section for valid types.
78336    #[inline]
78337    pub fn push_next<T: ExtendsTensorDependencyInfoARM>(
78338        mut self,
78339        next: &'a mut T,
78340    ) -> Self {
78341        unsafe {
78342            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
78343            (*next_ptr).p_next = self.inner.p_next as *mut _;
78344            self.inner.p_next = <*mut BaseOutStructure>::cast::<
78345                core::ffi::c_void,
78346            >(next_ptr) as *const _;
78347        }
78348        self
78349    }
78350}
78351impl<'a> core::ops::Deref for TensorDependencyInfoARMBuilder<'a> {
78352    type Target = TensorDependencyInfoARM;
78353    #[inline]
78354    fn deref(&self) -> &Self::Target {
78355        &self.inner
78356    }
78357}
78358impl<'a> core::ops::DerefMut for TensorDependencyInfoARMBuilder<'a> {
78359    #[inline]
78360    fn deref_mut(&mut self) -> &mut Self::Target {
78361        &mut self.inner
78362    }
78363}
78364///Builder for [`PhysicalDeviceTensorFeaturesARM`] with lifetime-tied pNext safety.
78365pub struct PhysicalDeviceTensorFeaturesARMBuilder<'a> {
78366    inner: PhysicalDeviceTensorFeaturesARM,
78367    _marker: core::marker::PhantomData<&'a ()>,
78368}
78369impl PhysicalDeviceTensorFeaturesARM {
78370    /// Start building this struct; `s_type` is already set to the correct variant.
78371    #[inline]
78372    pub fn builder<'a>() -> PhysicalDeviceTensorFeaturesARMBuilder<'a> {
78373        PhysicalDeviceTensorFeaturesARMBuilder {
78374            inner: PhysicalDeviceTensorFeaturesARM {
78375                s_type: StructureType::from_raw(1000460009i32),
78376                ..Default::default()
78377            },
78378            _marker: core::marker::PhantomData,
78379        }
78380    }
78381}
78382impl<'a> PhysicalDeviceTensorFeaturesARMBuilder<'a> {
78383    #[inline]
78384    pub fn tensor_non_packed(mut self, value: bool) -> Self {
78385        self.inner.tensor_non_packed = value as u32;
78386        self
78387    }
78388    #[inline]
78389    pub fn shader_tensor_access(mut self, value: bool) -> Self {
78390        self.inner.shader_tensor_access = value as u32;
78391        self
78392    }
78393    #[inline]
78394    pub fn shader_storage_tensor_array_dynamic_indexing(mut self, value: bool) -> Self {
78395        self.inner.shader_storage_tensor_array_dynamic_indexing = value as u32;
78396        self
78397    }
78398    #[inline]
78399    pub fn shader_storage_tensor_array_non_uniform_indexing(
78400        mut self,
78401        value: bool,
78402    ) -> Self {
78403        self.inner.shader_storage_tensor_array_non_uniform_indexing = value as u32;
78404        self
78405    }
78406    #[inline]
78407    pub fn descriptor_binding_storage_tensor_update_after_bind(
78408        mut self,
78409        value: bool,
78410    ) -> Self {
78411        self.inner.descriptor_binding_storage_tensor_update_after_bind = value as u32;
78412        self
78413    }
78414    #[inline]
78415    pub fn tensors(mut self, value: bool) -> Self {
78416        self.inner.tensors = value as u32;
78417        self
78418    }
78419    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceTensorFeaturesARM`]'s **Extended By** section for valid types.
78420    #[inline]
78421    pub fn push_next<T: ExtendsPhysicalDeviceTensorFeaturesARM>(
78422        mut self,
78423        next: &'a mut T,
78424    ) -> Self {
78425        unsafe {
78426            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
78427            (*next_ptr).p_next = self.inner.p_next as *mut _;
78428            self.inner.p_next = <*mut BaseOutStructure>::cast::<
78429                core::ffi::c_void,
78430            >(next_ptr);
78431        }
78432        self
78433    }
78434}
78435impl<'a> core::ops::Deref for PhysicalDeviceTensorFeaturesARMBuilder<'a> {
78436    type Target = PhysicalDeviceTensorFeaturesARM;
78437    #[inline]
78438    fn deref(&self) -> &Self::Target {
78439        &self.inner
78440    }
78441}
78442impl<'a> core::ops::DerefMut for PhysicalDeviceTensorFeaturesARMBuilder<'a> {
78443    #[inline]
78444    fn deref_mut(&mut self) -> &mut Self::Target {
78445        &mut self.inner
78446    }
78447}
78448///Builder for [`DeviceTensorMemoryRequirementsARM`] with lifetime-tied pNext safety.
78449pub struct DeviceTensorMemoryRequirementsARMBuilder<'a> {
78450    inner: DeviceTensorMemoryRequirementsARM,
78451    _marker: core::marker::PhantomData<&'a ()>,
78452}
78453impl DeviceTensorMemoryRequirementsARM {
78454    /// Start building this struct; `s_type` is already set to the correct variant.
78455    #[inline]
78456    pub fn builder<'a>() -> DeviceTensorMemoryRequirementsARMBuilder<'a> {
78457        DeviceTensorMemoryRequirementsARMBuilder {
78458            inner: DeviceTensorMemoryRequirementsARM {
78459                s_type: StructureType::from_raw(1000460010i32),
78460                ..Default::default()
78461            },
78462            _marker: core::marker::PhantomData,
78463        }
78464    }
78465}
78466impl<'a> DeviceTensorMemoryRequirementsARMBuilder<'a> {
78467    #[inline]
78468    pub fn create_info(mut self, value: &'a TensorCreateInfoARM) -> Self {
78469        self.inner.p_create_info = value;
78470        self
78471    }
78472    ///Prepend a struct to the pNext chain. See [`DeviceTensorMemoryRequirementsARM`]'s **Extended By** section for valid types.
78473    #[inline]
78474    pub fn push_next<T: ExtendsDeviceTensorMemoryRequirementsARM>(
78475        mut self,
78476        next: &'a mut T,
78477    ) -> Self {
78478        unsafe {
78479            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
78480            (*next_ptr).p_next = self.inner.p_next as *mut _;
78481            self.inner.p_next = <*mut BaseOutStructure>::cast::<
78482                core::ffi::c_void,
78483            >(next_ptr) as *const _;
78484        }
78485        self
78486    }
78487}
78488impl<'a> core::ops::Deref for DeviceTensorMemoryRequirementsARMBuilder<'a> {
78489    type Target = DeviceTensorMemoryRequirementsARM;
78490    #[inline]
78491    fn deref(&self) -> &Self::Target {
78492        &self.inner
78493    }
78494}
78495impl<'a> core::ops::DerefMut for DeviceTensorMemoryRequirementsARMBuilder<'a> {
78496    #[inline]
78497    fn deref_mut(&mut self) -> &mut Self::Target {
78498        &mut self.inner
78499    }
78500}
78501///Builder for [`CopyTensorInfoARM`] with lifetime-tied pNext safety.
78502pub struct CopyTensorInfoARMBuilder<'a> {
78503    inner: CopyTensorInfoARM,
78504    _marker: core::marker::PhantomData<&'a ()>,
78505}
78506impl CopyTensorInfoARM {
78507    /// Start building this struct; `s_type` is already set to the correct variant.
78508    #[inline]
78509    pub fn builder<'a>() -> CopyTensorInfoARMBuilder<'a> {
78510        CopyTensorInfoARMBuilder {
78511            inner: CopyTensorInfoARM {
78512                s_type: StructureType::from_raw(1000460011i32),
78513                ..Default::default()
78514            },
78515            _marker: core::marker::PhantomData,
78516        }
78517    }
78518}
78519impl<'a> CopyTensorInfoARMBuilder<'a> {
78520    #[inline]
78521    pub fn src_tensor(mut self, value: TensorARM) -> Self {
78522        self.inner.src_tensor = value;
78523        self
78524    }
78525    #[inline]
78526    pub fn dst_tensor(mut self, value: TensorARM) -> Self {
78527        self.inner.dst_tensor = value;
78528        self
78529    }
78530    #[inline]
78531    pub fn regions(mut self, slice: &'a [TensorCopyARM]) -> Self {
78532        self.inner.region_count = slice.len() as u32;
78533        self.inner.p_regions = slice.as_ptr();
78534        self
78535    }
78536    ///Prepend a struct to the pNext chain. See [`CopyTensorInfoARM`]'s **Extended By** section for valid types.
78537    #[inline]
78538    pub fn push_next<T: ExtendsCopyTensorInfoARM>(mut self, next: &'a mut T) -> Self {
78539        unsafe {
78540            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
78541            (*next_ptr).p_next = self.inner.p_next as *mut _;
78542            self.inner.p_next = <*mut BaseOutStructure>::cast::<
78543                core::ffi::c_void,
78544            >(next_ptr) as *const _;
78545        }
78546        self
78547    }
78548}
78549impl<'a> core::ops::Deref for CopyTensorInfoARMBuilder<'a> {
78550    type Target = CopyTensorInfoARM;
78551    #[inline]
78552    fn deref(&self) -> &Self::Target {
78553        &self.inner
78554    }
78555}
78556impl<'a> core::ops::DerefMut for CopyTensorInfoARMBuilder<'a> {
78557    #[inline]
78558    fn deref_mut(&mut self) -> &mut Self::Target {
78559        &mut self.inner
78560    }
78561}
78562///Builder for [`TensorCopyARM`] with lifetime-tied pNext safety.
78563pub struct TensorCopyARMBuilder<'a> {
78564    inner: TensorCopyARM,
78565    _marker: core::marker::PhantomData<&'a ()>,
78566}
78567impl TensorCopyARM {
78568    /// Start building this struct; `s_type` is already set to the correct variant.
78569    #[inline]
78570    pub fn builder<'a>() -> TensorCopyARMBuilder<'a> {
78571        TensorCopyARMBuilder {
78572            inner: TensorCopyARM {
78573                s_type: StructureType::from_raw(1000460012i32),
78574                ..Default::default()
78575            },
78576            _marker: core::marker::PhantomData,
78577        }
78578    }
78579}
78580impl<'a> TensorCopyARMBuilder<'a> {
78581    #[inline]
78582    pub fn dimension_count(mut self, value: u32) -> Self {
78583        self.inner.dimension_count = value;
78584        self
78585    }
78586    #[inline]
78587    pub fn src_offset(mut self, slice: &'a [u64]) -> Self {
78588        self.inner.dimension_count = slice.len() as u32;
78589        self.inner.p_src_offset = slice.as_ptr();
78590        self
78591    }
78592    #[inline]
78593    pub fn dst_offset(mut self, slice: &'a [u64]) -> Self {
78594        self.inner.dimension_count = slice.len() as u32;
78595        self.inner.p_dst_offset = slice.as_ptr();
78596        self
78597    }
78598    #[inline]
78599    pub fn extent(mut self, slice: &'a [u64]) -> Self {
78600        self.inner.dimension_count = slice.len() as u32;
78601        self.inner.p_extent = slice.as_ptr();
78602        self
78603    }
78604    ///Prepend a struct to the pNext chain. See [`TensorCopyARM`]'s **Extended By** section for valid types.
78605    #[inline]
78606    pub fn push_next<T: ExtendsTensorCopyARM>(mut self, next: &'a mut T) -> Self {
78607        unsafe {
78608            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
78609            (*next_ptr).p_next = self.inner.p_next as *mut _;
78610            self.inner.p_next = <*mut BaseOutStructure>::cast::<
78611                core::ffi::c_void,
78612            >(next_ptr) as *const _;
78613        }
78614        self
78615    }
78616}
78617impl<'a> core::ops::Deref for TensorCopyARMBuilder<'a> {
78618    type Target = TensorCopyARM;
78619    #[inline]
78620    fn deref(&self) -> &Self::Target {
78621        &self.inner
78622    }
78623}
78624impl<'a> core::ops::DerefMut for TensorCopyARMBuilder<'a> {
78625    #[inline]
78626    fn deref_mut(&mut self) -> &mut Self::Target {
78627        &mut self.inner
78628    }
78629}
78630///Builder for [`MemoryDedicatedAllocateInfoTensorARM`] with lifetime-tied pNext safety.
78631pub struct MemoryDedicatedAllocateInfoTensorARMBuilder<'a> {
78632    inner: MemoryDedicatedAllocateInfoTensorARM,
78633    _marker: core::marker::PhantomData<&'a ()>,
78634}
78635impl MemoryDedicatedAllocateInfoTensorARM {
78636    /// Start building this struct; `s_type` is already set to the correct variant.
78637    #[inline]
78638    pub fn builder<'a>() -> MemoryDedicatedAllocateInfoTensorARMBuilder<'a> {
78639        MemoryDedicatedAllocateInfoTensorARMBuilder {
78640            inner: MemoryDedicatedAllocateInfoTensorARM {
78641                s_type: StructureType::from_raw(1000460014i32),
78642                ..Default::default()
78643            },
78644            _marker: core::marker::PhantomData,
78645        }
78646    }
78647}
78648impl<'a> MemoryDedicatedAllocateInfoTensorARMBuilder<'a> {
78649    #[inline]
78650    pub fn tensor(mut self, value: TensorARM) -> Self {
78651        self.inner.tensor = value;
78652        self
78653    }
78654    ///Prepend a struct to the pNext chain. See [`MemoryDedicatedAllocateInfoTensorARM`]'s **Extended By** section for valid types.
78655    #[inline]
78656    pub fn push_next<T: ExtendsMemoryDedicatedAllocateInfoTensorARM>(
78657        mut self,
78658        next: &'a mut T,
78659    ) -> Self {
78660        unsafe {
78661            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
78662            (*next_ptr).p_next = self.inner.p_next as *mut _;
78663            self.inner.p_next = <*mut BaseOutStructure>::cast::<
78664                core::ffi::c_void,
78665            >(next_ptr) as *const _;
78666        }
78667        self
78668    }
78669}
78670impl<'a> core::ops::Deref for MemoryDedicatedAllocateInfoTensorARMBuilder<'a> {
78671    type Target = MemoryDedicatedAllocateInfoTensorARM;
78672    #[inline]
78673    fn deref(&self) -> &Self::Target {
78674        &self.inner
78675    }
78676}
78677impl<'a> core::ops::DerefMut for MemoryDedicatedAllocateInfoTensorARMBuilder<'a> {
78678    #[inline]
78679    fn deref_mut(&mut self) -> &mut Self::Target {
78680        &mut self.inner
78681    }
78682}
78683///Builder for [`PhysicalDeviceDescriptorBufferTensorPropertiesARM`] with lifetime-tied pNext safety.
78684pub struct PhysicalDeviceDescriptorBufferTensorPropertiesARMBuilder<'a> {
78685    inner: PhysicalDeviceDescriptorBufferTensorPropertiesARM,
78686    _marker: core::marker::PhantomData<&'a ()>,
78687}
78688impl PhysicalDeviceDescriptorBufferTensorPropertiesARM {
78689    /// Start building this struct; `s_type` is already set to the correct variant.
78690    #[inline]
78691    pub fn builder<'a>() -> PhysicalDeviceDescriptorBufferTensorPropertiesARMBuilder<
78692        'a,
78693    > {
78694        PhysicalDeviceDescriptorBufferTensorPropertiesARMBuilder {
78695            inner: PhysicalDeviceDescriptorBufferTensorPropertiesARM {
78696                s_type: StructureType::from_raw(1000460019i32),
78697                ..Default::default()
78698            },
78699            _marker: core::marker::PhantomData,
78700        }
78701    }
78702}
78703impl<'a> PhysicalDeviceDescriptorBufferTensorPropertiesARMBuilder<'a> {
78704    #[inline]
78705    pub fn tensor_capture_replay_descriptor_data_size(mut self, value: usize) -> Self {
78706        self.inner.tensor_capture_replay_descriptor_data_size = value;
78707        self
78708    }
78709    #[inline]
78710    pub fn tensor_view_capture_replay_descriptor_data_size(
78711        mut self,
78712        value: usize,
78713    ) -> Self {
78714        self.inner.tensor_view_capture_replay_descriptor_data_size = value;
78715        self
78716    }
78717    #[inline]
78718    pub fn tensor_descriptor_size(mut self, value: usize) -> Self {
78719        self.inner.tensor_descriptor_size = value;
78720        self
78721    }
78722    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDescriptorBufferTensorPropertiesARM`]'s **Extended By** section for valid types.
78723    #[inline]
78724    pub fn push_next<T: ExtendsPhysicalDeviceDescriptorBufferTensorPropertiesARM>(
78725        mut self,
78726        next: &'a mut T,
78727    ) -> Self {
78728        unsafe {
78729            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
78730            (*next_ptr).p_next = self.inner.p_next as *mut _;
78731            self.inner.p_next = <*mut BaseOutStructure>::cast::<
78732                core::ffi::c_void,
78733            >(next_ptr);
78734        }
78735        self
78736    }
78737}
78738impl<'a> core::ops::Deref
78739for PhysicalDeviceDescriptorBufferTensorPropertiesARMBuilder<'a> {
78740    type Target = PhysicalDeviceDescriptorBufferTensorPropertiesARM;
78741    #[inline]
78742    fn deref(&self) -> &Self::Target {
78743        &self.inner
78744    }
78745}
78746impl<'a> core::ops::DerefMut
78747for PhysicalDeviceDescriptorBufferTensorPropertiesARMBuilder<'a> {
78748    #[inline]
78749    fn deref_mut(&mut self) -> &mut Self::Target {
78750        &mut self.inner
78751    }
78752}
78753///Builder for [`PhysicalDeviceDescriptorBufferTensorFeaturesARM`] with lifetime-tied pNext safety.
78754pub struct PhysicalDeviceDescriptorBufferTensorFeaturesARMBuilder<'a> {
78755    inner: PhysicalDeviceDescriptorBufferTensorFeaturesARM,
78756    _marker: core::marker::PhantomData<&'a ()>,
78757}
78758impl PhysicalDeviceDescriptorBufferTensorFeaturesARM {
78759    /// Start building this struct; `s_type` is already set to the correct variant.
78760    #[inline]
78761    pub fn builder<'a>() -> PhysicalDeviceDescriptorBufferTensorFeaturesARMBuilder<'a> {
78762        PhysicalDeviceDescriptorBufferTensorFeaturesARMBuilder {
78763            inner: PhysicalDeviceDescriptorBufferTensorFeaturesARM {
78764                s_type: StructureType::from_raw(1000460018i32),
78765                ..Default::default()
78766            },
78767            _marker: core::marker::PhantomData,
78768        }
78769    }
78770}
78771impl<'a> PhysicalDeviceDescriptorBufferTensorFeaturesARMBuilder<'a> {
78772    #[inline]
78773    pub fn descriptor_buffer_tensor_descriptors(mut self, value: bool) -> Self {
78774        self.inner.descriptor_buffer_tensor_descriptors = value as u32;
78775        self
78776    }
78777    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDescriptorBufferTensorFeaturesARM`]'s **Extended By** section for valid types.
78778    #[inline]
78779    pub fn push_next<T: ExtendsPhysicalDeviceDescriptorBufferTensorFeaturesARM>(
78780        mut self,
78781        next: &'a mut T,
78782    ) -> Self {
78783        unsafe {
78784            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
78785            (*next_ptr).p_next = self.inner.p_next as *mut _;
78786            self.inner.p_next = <*mut BaseOutStructure>::cast::<
78787                core::ffi::c_void,
78788            >(next_ptr);
78789        }
78790        self
78791    }
78792}
78793impl<'a> core::ops::Deref
78794for PhysicalDeviceDescriptorBufferTensorFeaturesARMBuilder<'a> {
78795    type Target = PhysicalDeviceDescriptorBufferTensorFeaturesARM;
78796    #[inline]
78797    fn deref(&self) -> &Self::Target {
78798        &self.inner
78799    }
78800}
78801impl<'a> core::ops::DerefMut
78802for PhysicalDeviceDescriptorBufferTensorFeaturesARMBuilder<'a> {
78803    #[inline]
78804    fn deref_mut(&mut self) -> &mut Self::Target {
78805        &mut self.inner
78806    }
78807}
78808///Builder for [`TensorCaptureDescriptorDataInfoARM`] with lifetime-tied pNext safety.
78809pub struct TensorCaptureDescriptorDataInfoARMBuilder<'a> {
78810    inner: TensorCaptureDescriptorDataInfoARM,
78811    _marker: core::marker::PhantomData<&'a ()>,
78812}
78813impl TensorCaptureDescriptorDataInfoARM {
78814    /// Start building this struct; `s_type` is already set to the correct variant.
78815    #[inline]
78816    pub fn builder<'a>() -> TensorCaptureDescriptorDataInfoARMBuilder<'a> {
78817        TensorCaptureDescriptorDataInfoARMBuilder {
78818            inner: TensorCaptureDescriptorDataInfoARM {
78819                s_type: StructureType::from_raw(1000460021i32),
78820                ..Default::default()
78821            },
78822            _marker: core::marker::PhantomData,
78823        }
78824    }
78825}
78826impl<'a> TensorCaptureDescriptorDataInfoARMBuilder<'a> {
78827    #[inline]
78828    pub fn tensor(mut self, value: TensorARM) -> Self {
78829        self.inner.tensor = value;
78830        self
78831    }
78832    ///Prepend a struct to the pNext chain. See [`TensorCaptureDescriptorDataInfoARM`]'s **Extended By** section for valid types.
78833    #[inline]
78834    pub fn push_next<T: ExtendsTensorCaptureDescriptorDataInfoARM>(
78835        mut self,
78836        next: &'a mut T,
78837    ) -> Self {
78838        unsafe {
78839            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
78840            (*next_ptr).p_next = self.inner.p_next as *mut _;
78841            self.inner.p_next = <*mut BaseOutStructure>::cast::<
78842                core::ffi::c_void,
78843            >(next_ptr) as *const _;
78844        }
78845        self
78846    }
78847}
78848impl<'a> core::ops::Deref for TensorCaptureDescriptorDataInfoARMBuilder<'a> {
78849    type Target = TensorCaptureDescriptorDataInfoARM;
78850    #[inline]
78851    fn deref(&self) -> &Self::Target {
78852        &self.inner
78853    }
78854}
78855impl<'a> core::ops::DerefMut for TensorCaptureDescriptorDataInfoARMBuilder<'a> {
78856    #[inline]
78857    fn deref_mut(&mut self) -> &mut Self::Target {
78858        &mut self.inner
78859    }
78860}
78861///Builder for [`TensorViewCaptureDescriptorDataInfoARM`] with lifetime-tied pNext safety.
78862pub struct TensorViewCaptureDescriptorDataInfoARMBuilder<'a> {
78863    inner: TensorViewCaptureDescriptorDataInfoARM,
78864    _marker: core::marker::PhantomData<&'a ()>,
78865}
78866impl TensorViewCaptureDescriptorDataInfoARM {
78867    /// Start building this struct; `s_type` is already set to the correct variant.
78868    #[inline]
78869    pub fn builder<'a>() -> TensorViewCaptureDescriptorDataInfoARMBuilder<'a> {
78870        TensorViewCaptureDescriptorDataInfoARMBuilder {
78871            inner: TensorViewCaptureDescriptorDataInfoARM {
78872                s_type: StructureType::from_raw(1000460022i32),
78873                ..Default::default()
78874            },
78875            _marker: core::marker::PhantomData,
78876        }
78877    }
78878}
78879impl<'a> TensorViewCaptureDescriptorDataInfoARMBuilder<'a> {
78880    #[inline]
78881    pub fn tensor_view(mut self, value: TensorViewARM) -> Self {
78882        self.inner.tensor_view = value;
78883        self
78884    }
78885    ///Prepend a struct to the pNext chain. See [`TensorViewCaptureDescriptorDataInfoARM`]'s **Extended By** section for valid types.
78886    #[inline]
78887    pub fn push_next<T: ExtendsTensorViewCaptureDescriptorDataInfoARM>(
78888        mut self,
78889        next: &'a mut T,
78890    ) -> Self {
78891        unsafe {
78892            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
78893            (*next_ptr).p_next = self.inner.p_next as *mut _;
78894            self.inner.p_next = <*mut BaseOutStructure>::cast::<
78895                core::ffi::c_void,
78896            >(next_ptr) as *const _;
78897        }
78898        self
78899    }
78900}
78901impl<'a> core::ops::Deref for TensorViewCaptureDescriptorDataInfoARMBuilder<'a> {
78902    type Target = TensorViewCaptureDescriptorDataInfoARM;
78903    #[inline]
78904    fn deref(&self) -> &Self::Target {
78905        &self.inner
78906    }
78907}
78908impl<'a> core::ops::DerefMut for TensorViewCaptureDescriptorDataInfoARMBuilder<'a> {
78909    #[inline]
78910    fn deref_mut(&mut self) -> &mut Self::Target {
78911        &mut self.inner
78912    }
78913}
78914///Builder for [`DescriptorGetTensorInfoARM`] with lifetime-tied pNext safety.
78915pub struct DescriptorGetTensorInfoARMBuilder<'a> {
78916    inner: DescriptorGetTensorInfoARM,
78917    _marker: core::marker::PhantomData<&'a ()>,
78918}
78919impl DescriptorGetTensorInfoARM {
78920    /// Start building this struct; `s_type` is already set to the correct variant.
78921    #[inline]
78922    pub fn builder<'a>() -> DescriptorGetTensorInfoARMBuilder<'a> {
78923        DescriptorGetTensorInfoARMBuilder {
78924            inner: DescriptorGetTensorInfoARM {
78925                s_type: StructureType::from_raw(1000460020i32),
78926                ..Default::default()
78927            },
78928            _marker: core::marker::PhantomData,
78929        }
78930    }
78931}
78932impl<'a> DescriptorGetTensorInfoARMBuilder<'a> {
78933    #[inline]
78934    pub fn tensor_view(mut self, value: TensorViewARM) -> Self {
78935        self.inner.tensor_view = value;
78936        self
78937    }
78938    ///Prepend a struct to the pNext chain. See [`DescriptorGetTensorInfoARM`]'s **Extended By** section for valid types.
78939    #[inline]
78940    pub fn push_next<T: ExtendsDescriptorGetTensorInfoARM>(
78941        mut self,
78942        next: &'a mut T,
78943    ) -> Self {
78944        unsafe {
78945            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
78946            (*next_ptr).p_next = self.inner.p_next as *mut _;
78947            self.inner.p_next = <*mut BaseOutStructure>::cast::<
78948                core::ffi::c_void,
78949            >(next_ptr) as *const _;
78950        }
78951        self
78952    }
78953}
78954impl<'a> core::ops::Deref for DescriptorGetTensorInfoARMBuilder<'a> {
78955    type Target = DescriptorGetTensorInfoARM;
78956    #[inline]
78957    fn deref(&self) -> &Self::Target {
78958        &self.inner
78959    }
78960}
78961impl<'a> core::ops::DerefMut for DescriptorGetTensorInfoARMBuilder<'a> {
78962    #[inline]
78963    fn deref_mut(&mut self) -> &mut Self::Target {
78964        &mut self.inner
78965    }
78966}
78967///Builder for [`FrameBoundaryTensorsARM`] with lifetime-tied pNext safety.
78968pub struct FrameBoundaryTensorsARMBuilder<'a> {
78969    inner: FrameBoundaryTensorsARM,
78970    _marker: core::marker::PhantomData<&'a ()>,
78971}
78972impl FrameBoundaryTensorsARM {
78973    /// Start building this struct; `s_type` is already set to the correct variant.
78974    #[inline]
78975    pub fn builder<'a>() -> FrameBoundaryTensorsARMBuilder<'a> {
78976        FrameBoundaryTensorsARMBuilder {
78977            inner: FrameBoundaryTensorsARM {
78978                s_type: StructureType::from_raw(1000460023i32),
78979                ..Default::default()
78980            },
78981            _marker: core::marker::PhantomData,
78982        }
78983    }
78984}
78985impl<'a> FrameBoundaryTensorsARMBuilder<'a> {
78986    #[inline]
78987    pub fn tensors(mut self, slice: &'a [TensorARM]) -> Self {
78988        self.inner.tensor_count = slice.len() as u32;
78989        self.inner.p_tensors = slice.as_ptr();
78990        self
78991    }
78992    ///Prepend a struct to the pNext chain. See [`FrameBoundaryTensorsARM`]'s **Extended By** section for valid types.
78993    #[inline]
78994    pub fn push_next<T: ExtendsFrameBoundaryTensorsARM>(
78995        mut self,
78996        next: &'a mut T,
78997    ) -> Self {
78998        unsafe {
78999            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
79000            (*next_ptr).p_next = self.inner.p_next as *mut _;
79001            self.inner.p_next = <*mut BaseOutStructure>::cast::<
79002                core::ffi::c_void,
79003            >(next_ptr) as *const _;
79004        }
79005        self
79006    }
79007}
79008impl<'a> core::ops::Deref for FrameBoundaryTensorsARMBuilder<'a> {
79009    type Target = FrameBoundaryTensorsARM;
79010    #[inline]
79011    fn deref(&self) -> &Self::Target {
79012        &self.inner
79013    }
79014}
79015impl<'a> core::ops::DerefMut for FrameBoundaryTensorsARMBuilder<'a> {
79016    #[inline]
79017    fn deref_mut(&mut self) -> &mut Self::Target {
79018        &mut self.inner
79019    }
79020}
79021///Builder for [`PhysicalDeviceExternalTensorInfoARM`] with lifetime-tied pNext safety.
79022pub struct PhysicalDeviceExternalTensorInfoARMBuilder<'a> {
79023    inner: PhysicalDeviceExternalTensorInfoARM,
79024    _marker: core::marker::PhantomData<&'a ()>,
79025}
79026impl PhysicalDeviceExternalTensorInfoARM {
79027    /// Start building this struct; `s_type` is already set to the correct variant.
79028    #[inline]
79029    pub fn builder<'a>() -> PhysicalDeviceExternalTensorInfoARMBuilder<'a> {
79030        PhysicalDeviceExternalTensorInfoARMBuilder {
79031            inner: PhysicalDeviceExternalTensorInfoARM {
79032                s_type: StructureType::from_raw(1000460015i32),
79033                ..Default::default()
79034            },
79035            _marker: core::marker::PhantomData,
79036        }
79037    }
79038}
79039impl<'a> PhysicalDeviceExternalTensorInfoARMBuilder<'a> {
79040    #[inline]
79041    pub fn flags(mut self, value: TensorCreateFlagsARM) -> Self {
79042        self.inner.flags = value;
79043        self
79044    }
79045    #[inline]
79046    pub fn description(mut self, value: &'a TensorDescriptionARM) -> Self {
79047        self.inner.p_description = value;
79048        self
79049    }
79050    #[inline]
79051    pub fn handle_type(mut self, value: ExternalMemoryHandleTypeFlagBits) -> Self {
79052        self.inner.handle_type = value;
79053        self
79054    }
79055    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceExternalTensorInfoARM`]'s **Extended By** section for valid types.
79056    #[inline]
79057    pub fn push_next<T: ExtendsPhysicalDeviceExternalTensorInfoARM>(
79058        mut self,
79059        next: &'a mut T,
79060    ) -> Self {
79061        unsafe {
79062            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
79063            (*next_ptr).p_next = self.inner.p_next as *mut _;
79064            self.inner.p_next = <*mut BaseOutStructure>::cast::<
79065                core::ffi::c_void,
79066            >(next_ptr) as *const _;
79067        }
79068        self
79069    }
79070}
79071impl<'a> core::ops::Deref for PhysicalDeviceExternalTensorInfoARMBuilder<'a> {
79072    type Target = PhysicalDeviceExternalTensorInfoARM;
79073    #[inline]
79074    fn deref(&self) -> &Self::Target {
79075        &self.inner
79076    }
79077}
79078impl<'a> core::ops::DerefMut for PhysicalDeviceExternalTensorInfoARMBuilder<'a> {
79079    #[inline]
79080    fn deref_mut(&mut self) -> &mut Self::Target {
79081        &mut self.inner
79082    }
79083}
79084///Builder for [`ExternalTensorPropertiesARM`] with lifetime-tied pNext safety.
79085pub struct ExternalTensorPropertiesARMBuilder<'a> {
79086    inner: ExternalTensorPropertiesARM,
79087    _marker: core::marker::PhantomData<&'a ()>,
79088}
79089impl ExternalTensorPropertiesARM {
79090    /// Start building this struct; `s_type` is already set to the correct variant.
79091    #[inline]
79092    pub fn builder<'a>() -> ExternalTensorPropertiesARMBuilder<'a> {
79093        ExternalTensorPropertiesARMBuilder {
79094            inner: ExternalTensorPropertiesARM {
79095                s_type: StructureType::from_raw(1000460016i32),
79096                ..Default::default()
79097            },
79098            _marker: core::marker::PhantomData,
79099        }
79100    }
79101}
79102impl<'a> ExternalTensorPropertiesARMBuilder<'a> {
79103    #[inline]
79104    pub fn external_memory_properties(
79105        mut self,
79106        value: ExternalMemoryProperties,
79107    ) -> Self {
79108        self.inner.external_memory_properties = value;
79109        self
79110    }
79111    ///Prepend a struct to the pNext chain. See [`ExternalTensorPropertiesARM`]'s **Extended By** section for valid types.
79112    #[inline]
79113    pub fn push_next<T: ExtendsExternalTensorPropertiesARM>(
79114        mut self,
79115        next: &'a mut T,
79116    ) -> Self {
79117        unsafe {
79118            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
79119            (*next_ptr).p_next = self.inner.p_next as *mut _;
79120            self.inner.p_next = <*mut BaseOutStructure>::cast::<
79121                core::ffi::c_void,
79122            >(next_ptr) as *const _;
79123        }
79124        self
79125    }
79126}
79127impl<'a> core::ops::Deref for ExternalTensorPropertiesARMBuilder<'a> {
79128    type Target = ExternalTensorPropertiesARM;
79129    #[inline]
79130    fn deref(&self) -> &Self::Target {
79131        &self.inner
79132    }
79133}
79134impl<'a> core::ops::DerefMut for ExternalTensorPropertiesARMBuilder<'a> {
79135    #[inline]
79136    fn deref_mut(&mut self) -> &mut Self::Target {
79137        &mut self.inner
79138    }
79139}
79140///Builder for [`ExternalMemoryTensorCreateInfoARM`] with lifetime-tied pNext safety.
79141pub struct ExternalMemoryTensorCreateInfoARMBuilder<'a> {
79142    inner: ExternalMemoryTensorCreateInfoARM,
79143    _marker: core::marker::PhantomData<&'a ()>,
79144}
79145impl ExternalMemoryTensorCreateInfoARM {
79146    /// Start building this struct; `s_type` is already set to the correct variant.
79147    #[inline]
79148    pub fn builder<'a>() -> ExternalMemoryTensorCreateInfoARMBuilder<'a> {
79149        ExternalMemoryTensorCreateInfoARMBuilder {
79150            inner: ExternalMemoryTensorCreateInfoARM {
79151                s_type: StructureType::from_raw(1000460017i32),
79152                ..Default::default()
79153            },
79154            _marker: core::marker::PhantomData,
79155        }
79156    }
79157}
79158impl<'a> ExternalMemoryTensorCreateInfoARMBuilder<'a> {
79159    #[inline]
79160    pub fn handle_types(mut self, value: ExternalMemoryHandleTypeFlags) -> Self {
79161        self.inner.handle_types = value;
79162        self
79163    }
79164    ///Prepend a struct to the pNext chain. See [`ExternalMemoryTensorCreateInfoARM`]'s **Extended By** section for valid types.
79165    #[inline]
79166    pub fn push_next<T: ExtendsExternalMemoryTensorCreateInfoARM>(
79167        mut self,
79168        next: &'a mut T,
79169    ) -> Self {
79170        unsafe {
79171            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
79172            (*next_ptr).p_next = self.inner.p_next as *mut _;
79173            self.inner.p_next = <*mut BaseOutStructure>::cast::<
79174                core::ffi::c_void,
79175            >(next_ptr) as *const _;
79176        }
79177        self
79178    }
79179}
79180impl<'a> core::ops::Deref for ExternalMemoryTensorCreateInfoARMBuilder<'a> {
79181    type Target = ExternalMemoryTensorCreateInfoARM;
79182    #[inline]
79183    fn deref(&self) -> &Self::Target {
79184        &self.inner
79185    }
79186}
79187impl<'a> core::ops::DerefMut for ExternalMemoryTensorCreateInfoARMBuilder<'a> {
79188    #[inline]
79189    fn deref_mut(&mut self) -> &mut Self::Target {
79190        &mut self.inner
79191    }
79192}
79193///Builder for [`PhysicalDeviceShaderFloat8FeaturesEXT`] with lifetime-tied pNext safety.
79194pub struct PhysicalDeviceShaderFloat8FeaturesEXTBuilder<'a> {
79195    inner: PhysicalDeviceShaderFloat8FeaturesEXT,
79196    _marker: core::marker::PhantomData<&'a ()>,
79197}
79198impl PhysicalDeviceShaderFloat8FeaturesEXT {
79199    /// Start building this struct; `s_type` is already set to the correct variant.
79200    #[inline]
79201    pub fn builder<'a>() -> PhysicalDeviceShaderFloat8FeaturesEXTBuilder<'a> {
79202        PhysicalDeviceShaderFloat8FeaturesEXTBuilder {
79203            inner: PhysicalDeviceShaderFloat8FeaturesEXT {
79204                s_type: StructureType::from_raw(1000567000i32),
79205                ..Default::default()
79206            },
79207            _marker: core::marker::PhantomData,
79208        }
79209    }
79210}
79211impl<'a> PhysicalDeviceShaderFloat8FeaturesEXTBuilder<'a> {
79212    #[inline]
79213    pub fn shader_float8(mut self, value: bool) -> Self {
79214        self.inner.shader_float8 = value as u32;
79215        self
79216    }
79217    #[inline]
79218    pub fn shader_float8_cooperative_matrix(mut self, value: bool) -> Self {
79219        self.inner.shader_float8_cooperative_matrix = value as u32;
79220        self
79221    }
79222    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderFloat8FeaturesEXT`]'s **Extended By** section for valid types.
79223    #[inline]
79224    pub fn push_next<T: ExtendsPhysicalDeviceShaderFloat8FeaturesEXT>(
79225        mut self,
79226        next: &'a mut T,
79227    ) -> Self {
79228        unsafe {
79229            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
79230            (*next_ptr).p_next = self.inner.p_next as *mut _;
79231            self.inner.p_next = <*mut BaseOutStructure>::cast::<
79232                core::ffi::c_void,
79233            >(next_ptr);
79234        }
79235        self
79236    }
79237}
79238impl<'a> core::ops::Deref for PhysicalDeviceShaderFloat8FeaturesEXTBuilder<'a> {
79239    type Target = PhysicalDeviceShaderFloat8FeaturesEXT;
79240    #[inline]
79241    fn deref(&self) -> &Self::Target {
79242        &self.inner
79243    }
79244}
79245impl<'a> core::ops::DerefMut for PhysicalDeviceShaderFloat8FeaturesEXTBuilder<'a> {
79246    #[inline]
79247    fn deref_mut(&mut self) -> &mut Self::Target {
79248        &mut self.inner
79249    }
79250}
79251///Builder for [`SurfaceCreateInfoOHOS`] with lifetime-tied pNext safety.
79252pub struct SurfaceCreateInfoOHOSBuilder<'a> {
79253    inner: SurfaceCreateInfoOHOS,
79254    _marker: core::marker::PhantomData<&'a ()>,
79255}
79256impl SurfaceCreateInfoOHOS {
79257    /// Start building this struct; `s_type` is already set to the correct variant.
79258    #[inline]
79259    pub fn builder<'a>() -> SurfaceCreateInfoOHOSBuilder<'a> {
79260        SurfaceCreateInfoOHOSBuilder {
79261            inner: SurfaceCreateInfoOHOS {
79262                s_type: StructureType::from_raw(1000685000i32),
79263                ..Default::default()
79264            },
79265            _marker: core::marker::PhantomData,
79266        }
79267    }
79268}
79269impl<'a> SurfaceCreateInfoOHOSBuilder<'a> {
79270    #[inline]
79271    pub fn flags(mut self, value: SurfaceCreateFlagsOHOS) -> Self {
79272        self.inner.flags = value;
79273        self
79274    }
79275    #[inline]
79276    pub fn window(mut self, value: *mut core::ffi::c_void) -> Self {
79277        self.inner.window = value;
79278        self
79279    }
79280    ///Prepend a struct to the pNext chain. See [`SurfaceCreateInfoOHOS`]'s **Extended By** section for valid types.
79281    #[inline]
79282    pub fn push_next<T: ExtendsSurfaceCreateInfoOHOS>(
79283        mut self,
79284        next: &'a mut T,
79285    ) -> Self {
79286        unsafe {
79287            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
79288            (*next_ptr).p_next = self.inner.p_next as *mut _;
79289            self.inner.p_next = <*mut BaseOutStructure>::cast::<
79290                core::ffi::c_void,
79291            >(next_ptr) as *const _;
79292        }
79293        self
79294    }
79295}
79296impl<'a> core::ops::Deref for SurfaceCreateInfoOHOSBuilder<'a> {
79297    type Target = SurfaceCreateInfoOHOS;
79298    #[inline]
79299    fn deref(&self) -> &Self::Target {
79300        &self.inner
79301    }
79302}
79303impl<'a> core::ops::DerefMut for SurfaceCreateInfoOHOSBuilder<'a> {
79304    #[inline]
79305    fn deref_mut(&mut self) -> &mut Self::Target {
79306        &mut self.inner
79307    }
79308}
79309///Builder for [`PhysicalDeviceDataGraphFeaturesARM`] with lifetime-tied pNext safety.
79310pub struct PhysicalDeviceDataGraphFeaturesARMBuilder<'a> {
79311    inner: PhysicalDeviceDataGraphFeaturesARM,
79312    _marker: core::marker::PhantomData<&'a ()>,
79313}
79314impl PhysicalDeviceDataGraphFeaturesARM {
79315    /// Start building this struct; `s_type` is already set to the correct variant.
79316    #[inline]
79317    pub fn builder<'a>() -> PhysicalDeviceDataGraphFeaturesARMBuilder<'a> {
79318        PhysicalDeviceDataGraphFeaturesARMBuilder {
79319            inner: PhysicalDeviceDataGraphFeaturesARM {
79320                s_type: StructureType::from_raw(1000507006i32),
79321                ..Default::default()
79322            },
79323            _marker: core::marker::PhantomData,
79324        }
79325    }
79326}
79327impl<'a> PhysicalDeviceDataGraphFeaturesARMBuilder<'a> {
79328    #[inline]
79329    pub fn data_graph(mut self, value: bool) -> Self {
79330        self.inner.data_graph = value as u32;
79331        self
79332    }
79333    #[inline]
79334    pub fn data_graph_update_after_bind(mut self, value: bool) -> Self {
79335        self.inner.data_graph_update_after_bind = value as u32;
79336        self
79337    }
79338    #[inline]
79339    pub fn data_graph_specialization_constants(mut self, value: bool) -> Self {
79340        self.inner.data_graph_specialization_constants = value as u32;
79341        self
79342    }
79343    #[inline]
79344    pub fn data_graph_descriptor_buffer(mut self, value: bool) -> Self {
79345        self.inner.data_graph_descriptor_buffer = value as u32;
79346        self
79347    }
79348    #[inline]
79349    pub fn data_graph_shader_module(mut self, value: bool) -> Self {
79350        self.inner.data_graph_shader_module = value as u32;
79351        self
79352    }
79353    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDataGraphFeaturesARM`]'s **Extended By** section for valid types.
79354    #[inline]
79355    pub fn push_next<T: ExtendsPhysicalDeviceDataGraphFeaturesARM>(
79356        mut self,
79357        next: &'a mut T,
79358    ) -> Self {
79359        unsafe {
79360            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
79361            (*next_ptr).p_next = self.inner.p_next as *mut _;
79362            self.inner.p_next = <*mut BaseOutStructure>::cast::<
79363                core::ffi::c_void,
79364            >(next_ptr);
79365        }
79366        self
79367    }
79368}
79369impl<'a> core::ops::Deref for PhysicalDeviceDataGraphFeaturesARMBuilder<'a> {
79370    type Target = PhysicalDeviceDataGraphFeaturesARM;
79371    #[inline]
79372    fn deref(&self) -> &Self::Target {
79373        &self.inner
79374    }
79375}
79376impl<'a> core::ops::DerefMut for PhysicalDeviceDataGraphFeaturesARMBuilder<'a> {
79377    #[inline]
79378    fn deref_mut(&mut self) -> &mut Self::Target {
79379        &mut self.inner
79380    }
79381}
79382///Builder for [`DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM`] with lifetime-tied pNext safety.
79383pub struct DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARMBuilder<'a> {
79384    inner: DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM,
79385    _marker: core::marker::PhantomData<&'a ()>,
79386}
79387impl DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {
79388    /// Start building this struct; `s_type` is already set to the correct variant.
79389    #[inline]
79390    pub fn builder<'a>() -> DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARMBuilder<
79391        'a,
79392    > {
79393        DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARMBuilder {
79394            inner: DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {
79395                s_type: StructureType::from_raw(1000507015i32),
79396                ..Default::default()
79397            },
79398            _marker: core::marker::PhantomData,
79399        }
79400    }
79401}
79402impl<'a> DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARMBuilder<'a> {
79403    #[inline]
79404    pub fn dimension(mut self, value: u32) -> Self {
79405        self.inner.dimension = value;
79406        self
79407    }
79408    #[inline]
79409    pub fn zero_count(mut self, value: u32) -> Self {
79410        self.inner.zero_count = value;
79411        self
79412    }
79413    #[inline]
79414    pub fn group_size(mut self, value: u32) -> Self {
79415        self.inner.group_size = value;
79416        self
79417    }
79418    ///Prepend a struct to the pNext chain. See [`DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM`]'s **Extended By** section for valid types.
79419    #[inline]
79420    pub fn push_next<
79421        T: ExtendsDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM,
79422    >(mut self, next: &'a mut T) -> Self {
79423        unsafe {
79424            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
79425            (*next_ptr).p_next = self.inner.p_next as *mut _;
79426            self.inner.p_next = <*mut BaseOutStructure>::cast::<
79427                core::ffi::c_void,
79428            >(next_ptr) as *const _;
79429        }
79430        self
79431    }
79432}
79433impl<'a> core::ops::Deref
79434for DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARMBuilder<'a> {
79435    type Target = DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM;
79436    #[inline]
79437    fn deref(&self) -> &Self::Target {
79438        &self.inner
79439    }
79440}
79441impl<'a> core::ops::DerefMut
79442for DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARMBuilder<'a> {
79443    #[inline]
79444    fn deref_mut(&mut self) -> &mut Self::Target {
79445        &mut self.inner
79446    }
79447}
79448///Builder for [`DataGraphPipelineConstantARM`] with lifetime-tied pNext safety.
79449pub struct DataGraphPipelineConstantARMBuilder<'a> {
79450    inner: DataGraphPipelineConstantARM,
79451    _marker: core::marker::PhantomData<&'a ()>,
79452}
79453impl DataGraphPipelineConstantARM {
79454    /// Start building this struct; `s_type` is already set to the correct variant.
79455    #[inline]
79456    pub fn builder<'a>() -> DataGraphPipelineConstantARMBuilder<'a> {
79457        DataGraphPipelineConstantARMBuilder {
79458            inner: DataGraphPipelineConstantARM {
79459                s_type: StructureType::from_raw(1000507003i32),
79460                ..Default::default()
79461            },
79462            _marker: core::marker::PhantomData,
79463        }
79464    }
79465}
79466impl<'a> DataGraphPipelineConstantARMBuilder<'a> {
79467    #[inline]
79468    pub fn id(mut self, value: u32) -> Self {
79469        self.inner.id = value;
79470        self
79471    }
79472    #[inline]
79473    pub fn constant_data(mut self, value: *const core::ffi::c_void) -> Self {
79474        self.inner.p_constant_data = value;
79475        self
79476    }
79477    ///Prepend a struct to the pNext chain. See [`DataGraphPipelineConstantARM`]'s **Extended By** section for valid types.
79478    #[inline]
79479    pub fn push_next<T: ExtendsDataGraphPipelineConstantARM>(
79480        mut self,
79481        next: &'a mut T,
79482    ) -> Self {
79483        unsafe {
79484            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
79485            (*next_ptr).p_next = self.inner.p_next as *mut _;
79486            self.inner.p_next = <*mut BaseOutStructure>::cast::<
79487                core::ffi::c_void,
79488            >(next_ptr) as *const _;
79489        }
79490        self
79491    }
79492}
79493impl<'a> core::ops::Deref for DataGraphPipelineConstantARMBuilder<'a> {
79494    type Target = DataGraphPipelineConstantARM;
79495    #[inline]
79496    fn deref(&self) -> &Self::Target {
79497        &self.inner
79498    }
79499}
79500impl<'a> core::ops::DerefMut for DataGraphPipelineConstantARMBuilder<'a> {
79501    #[inline]
79502    fn deref_mut(&mut self) -> &mut Self::Target {
79503        &mut self.inner
79504    }
79505}
79506///Builder for [`DataGraphPipelineResourceInfoARM`] with lifetime-tied pNext safety.
79507pub struct DataGraphPipelineResourceInfoARMBuilder<'a> {
79508    inner: DataGraphPipelineResourceInfoARM,
79509    _marker: core::marker::PhantomData<&'a ()>,
79510}
79511impl DataGraphPipelineResourceInfoARM {
79512    /// Start building this struct; `s_type` is already set to the correct variant.
79513    #[inline]
79514    pub fn builder<'a>() -> DataGraphPipelineResourceInfoARMBuilder<'a> {
79515        DataGraphPipelineResourceInfoARMBuilder {
79516            inner: DataGraphPipelineResourceInfoARM {
79517                s_type: StructureType::from_raw(1000507002i32),
79518                ..Default::default()
79519            },
79520            _marker: core::marker::PhantomData,
79521        }
79522    }
79523}
79524impl<'a> DataGraphPipelineResourceInfoARMBuilder<'a> {
79525    #[inline]
79526    pub fn descriptor_set(mut self, value: u32) -> Self {
79527        self.inner.descriptor_set = value;
79528        self
79529    }
79530    #[inline]
79531    pub fn binding(mut self, value: u32) -> Self {
79532        self.inner.binding = value;
79533        self
79534    }
79535    #[inline]
79536    pub fn array_element(mut self, value: u32) -> Self {
79537        self.inner.array_element = value;
79538        self
79539    }
79540    ///Prepend a struct to the pNext chain. See [`DataGraphPipelineResourceInfoARM`]'s **Extended By** section for valid types.
79541    #[inline]
79542    pub fn push_next<T: ExtendsDataGraphPipelineResourceInfoARM>(
79543        mut self,
79544        next: &'a mut T,
79545    ) -> Self {
79546        unsafe {
79547            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
79548            (*next_ptr).p_next = self.inner.p_next as *mut _;
79549            self.inner.p_next = <*mut BaseOutStructure>::cast::<
79550                core::ffi::c_void,
79551            >(next_ptr) as *const _;
79552        }
79553        self
79554    }
79555}
79556impl<'a> core::ops::Deref for DataGraphPipelineResourceInfoARMBuilder<'a> {
79557    type Target = DataGraphPipelineResourceInfoARM;
79558    #[inline]
79559    fn deref(&self) -> &Self::Target {
79560        &self.inner
79561    }
79562}
79563impl<'a> core::ops::DerefMut for DataGraphPipelineResourceInfoARMBuilder<'a> {
79564    #[inline]
79565    fn deref_mut(&mut self) -> &mut Self::Target {
79566        &mut self.inner
79567    }
79568}
79569///Builder for [`DataGraphPipelineCompilerControlCreateInfoARM`] with lifetime-tied pNext safety.
79570pub struct DataGraphPipelineCompilerControlCreateInfoARMBuilder<'a> {
79571    inner: DataGraphPipelineCompilerControlCreateInfoARM,
79572    _marker: core::marker::PhantomData<&'a ()>,
79573}
79574impl DataGraphPipelineCompilerControlCreateInfoARM {
79575    /// Start building this struct; `s_type` is already set to the correct variant.
79576    #[inline]
79577    pub fn builder<'a>() -> DataGraphPipelineCompilerControlCreateInfoARMBuilder<'a> {
79578        DataGraphPipelineCompilerControlCreateInfoARMBuilder {
79579            inner: DataGraphPipelineCompilerControlCreateInfoARM {
79580                s_type: StructureType::from_raw(1000507010i32),
79581                ..Default::default()
79582            },
79583            _marker: core::marker::PhantomData,
79584        }
79585    }
79586}
79587impl<'a> DataGraphPipelineCompilerControlCreateInfoARMBuilder<'a> {
79588    #[inline]
79589    pub fn vendor_options(mut self, value: &'a core::ffi::CStr) -> Self {
79590        self.inner.p_vendor_options = value.as_ptr();
79591        self
79592    }
79593    ///Prepend a struct to the pNext chain. See [`DataGraphPipelineCompilerControlCreateInfoARM`]'s **Extended By** section for valid types.
79594    #[inline]
79595    pub fn push_next<T: ExtendsDataGraphPipelineCompilerControlCreateInfoARM>(
79596        mut self,
79597        next: &'a mut T,
79598    ) -> Self {
79599        unsafe {
79600            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
79601            (*next_ptr).p_next = self.inner.p_next as *mut _;
79602            self.inner.p_next = <*mut BaseOutStructure>::cast::<
79603                core::ffi::c_void,
79604            >(next_ptr) as *const _;
79605        }
79606        self
79607    }
79608}
79609impl<'a> core::ops::Deref for DataGraphPipelineCompilerControlCreateInfoARMBuilder<'a> {
79610    type Target = DataGraphPipelineCompilerControlCreateInfoARM;
79611    #[inline]
79612    fn deref(&self) -> &Self::Target {
79613        &self.inner
79614    }
79615}
79616impl<'a> core::ops::DerefMut
79617for DataGraphPipelineCompilerControlCreateInfoARMBuilder<'a> {
79618    #[inline]
79619    fn deref_mut(&mut self) -> &mut Self::Target {
79620        &mut self.inner
79621    }
79622}
79623///Builder for [`DataGraphPipelineCreateInfoARM`] with lifetime-tied pNext safety.
79624pub struct DataGraphPipelineCreateInfoARMBuilder<'a> {
79625    inner: DataGraphPipelineCreateInfoARM,
79626    _marker: core::marker::PhantomData<&'a ()>,
79627}
79628impl DataGraphPipelineCreateInfoARM {
79629    /// Start building this struct; `s_type` is already set to the correct variant.
79630    #[inline]
79631    pub fn builder<'a>() -> DataGraphPipelineCreateInfoARMBuilder<'a> {
79632        DataGraphPipelineCreateInfoARMBuilder {
79633            inner: DataGraphPipelineCreateInfoARM {
79634                s_type: StructureType::from_raw(1000507000i32),
79635                ..Default::default()
79636            },
79637            _marker: core::marker::PhantomData,
79638        }
79639    }
79640}
79641impl<'a> DataGraphPipelineCreateInfoARMBuilder<'a> {
79642    #[inline]
79643    pub fn flags(mut self, value: PipelineCreateFlags2KHR) -> Self {
79644        self.inner.flags = value;
79645        self
79646    }
79647    #[inline]
79648    pub fn layout(mut self, value: PipelineLayout) -> Self {
79649        self.inner.layout = value;
79650        self
79651    }
79652    #[inline]
79653    pub fn resource_infos(
79654        mut self,
79655        slice: &'a [DataGraphPipelineResourceInfoARM],
79656    ) -> Self {
79657        self.inner.resource_info_count = slice.len() as u32;
79658        self.inner.p_resource_infos = slice.as_ptr();
79659        self
79660    }
79661    ///Prepend a struct to the pNext chain. See [`DataGraphPipelineCreateInfoARM`]'s **Extended By** section for valid types.
79662    #[inline]
79663    pub fn push_next<T: ExtendsDataGraphPipelineCreateInfoARM>(
79664        mut self,
79665        next: &'a mut T,
79666    ) -> Self {
79667        unsafe {
79668            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
79669            (*next_ptr).p_next = self.inner.p_next as *mut _;
79670            self.inner.p_next = <*mut BaseOutStructure>::cast::<
79671                core::ffi::c_void,
79672            >(next_ptr) as *const _;
79673        }
79674        self
79675    }
79676}
79677impl<'a> core::ops::Deref for DataGraphPipelineCreateInfoARMBuilder<'a> {
79678    type Target = DataGraphPipelineCreateInfoARM;
79679    #[inline]
79680    fn deref(&self) -> &Self::Target {
79681        &self.inner
79682    }
79683}
79684impl<'a> core::ops::DerefMut for DataGraphPipelineCreateInfoARMBuilder<'a> {
79685    #[inline]
79686    fn deref_mut(&mut self) -> &mut Self::Target {
79687        &mut self.inner
79688    }
79689}
79690///Builder for [`DataGraphPipelineShaderModuleCreateInfoARM`] with lifetime-tied pNext safety.
79691pub struct DataGraphPipelineShaderModuleCreateInfoARMBuilder<'a> {
79692    inner: DataGraphPipelineShaderModuleCreateInfoARM,
79693    _marker: core::marker::PhantomData<&'a ()>,
79694}
79695impl DataGraphPipelineShaderModuleCreateInfoARM {
79696    /// Start building this struct; `s_type` is already set to the correct variant.
79697    #[inline]
79698    pub fn builder<'a>() -> DataGraphPipelineShaderModuleCreateInfoARMBuilder<'a> {
79699        DataGraphPipelineShaderModuleCreateInfoARMBuilder {
79700            inner: DataGraphPipelineShaderModuleCreateInfoARM {
79701                s_type: StructureType::from_raw(1000507007i32),
79702                ..Default::default()
79703            },
79704            _marker: core::marker::PhantomData,
79705        }
79706    }
79707}
79708impl<'a> DataGraphPipelineShaderModuleCreateInfoARMBuilder<'a> {
79709    #[inline]
79710    pub fn module(mut self, value: ShaderModule) -> Self {
79711        self.inner.module = value;
79712        self
79713    }
79714    #[inline]
79715    pub fn name(mut self, value: &'a core::ffi::CStr) -> Self {
79716        self.inner.p_name = value.as_ptr();
79717        self
79718    }
79719    #[inline]
79720    pub fn specialization_info(mut self, value: &'a SpecializationInfo) -> Self {
79721        self.inner.p_specialization_info = value;
79722        self
79723    }
79724    #[inline]
79725    pub fn constant_count(mut self, value: u32) -> Self {
79726        self.inner.constant_count = value;
79727        self
79728    }
79729    #[inline]
79730    pub fn constants(mut self, slice: &'a [DataGraphPipelineConstantARM]) -> Self {
79731        self.inner.constant_count = slice.len() as u32;
79732        self.inner.p_constants = slice.as_ptr();
79733        self
79734    }
79735    ///Prepend a struct to the pNext chain. See [`DataGraphPipelineShaderModuleCreateInfoARM`]'s **Extended By** section for valid types.
79736    #[inline]
79737    pub fn push_next<T: ExtendsDataGraphPipelineShaderModuleCreateInfoARM>(
79738        mut self,
79739        next: &'a mut T,
79740    ) -> Self {
79741        unsafe {
79742            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
79743            (*next_ptr).p_next = self.inner.p_next as *mut _;
79744            self.inner.p_next = <*mut BaseOutStructure>::cast::<
79745                core::ffi::c_void,
79746            >(next_ptr) as *const _;
79747        }
79748        self
79749    }
79750}
79751impl<'a> core::ops::Deref for DataGraphPipelineShaderModuleCreateInfoARMBuilder<'a> {
79752    type Target = DataGraphPipelineShaderModuleCreateInfoARM;
79753    #[inline]
79754    fn deref(&self) -> &Self::Target {
79755        &self.inner
79756    }
79757}
79758impl<'a> core::ops::DerefMut for DataGraphPipelineShaderModuleCreateInfoARMBuilder<'a> {
79759    #[inline]
79760    fn deref_mut(&mut self) -> &mut Self::Target {
79761        &mut self.inner
79762    }
79763}
79764///Builder for [`DataGraphPipelineSessionCreateInfoARM`] with lifetime-tied pNext safety.
79765pub struct DataGraphPipelineSessionCreateInfoARMBuilder<'a> {
79766    inner: DataGraphPipelineSessionCreateInfoARM,
79767    _marker: core::marker::PhantomData<&'a ()>,
79768}
79769impl DataGraphPipelineSessionCreateInfoARM {
79770    /// Start building this struct; `s_type` is already set to the correct variant.
79771    #[inline]
79772    pub fn builder<'a>() -> DataGraphPipelineSessionCreateInfoARMBuilder<'a> {
79773        DataGraphPipelineSessionCreateInfoARMBuilder {
79774            inner: DataGraphPipelineSessionCreateInfoARM {
79775                s_type: StructureType::from_raw(1000507001i32),
79776                ..Default::default()
79777            },
79778            _marker: core::marker::PhantomData,
79779        }
79780    }
79781}
79782impl<'a> DataGraphPipelineSessionCreateInfoARMBuilder<'a> {
79783    #[inline]
79784    pub fn flags(mut self, value: DataGraphPipelineSessionCreateFlagsARM) -> Self {
79785        self.inner.flags = value;
79786        self
79787    }
79788    #[inline]
79789    pub fn data_graph_pipeline(mut self, value: Pipeline) -> Self {
79790        self.inner.data_graph_pipeline = value;
79791        self
79792    }
79793    ///Prepend a struct to the pNext chain. See [`DataGraphPipelineSessionCreateInfoARM`]'s **Extended By** section for valid types.
79794    #[inline]
79795    pub fn push_next<T: ExtendsDataGraphPipelineSessionCreateInfoARM>(
79796        mut self,
79797        next: &'a mut T,
79798    ) -> Self {
79799        unsafe {
79800            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
79801            (*next_ptr).p_next = self.inner.p_next as *mut _;
79802            self.inner.p_next = <*mut BaseOutStructure>::cast::<
79803                core::ffi::c_void,
79804            >(next_ptr) as *const _;
79805        }
79806        self
79807    }
79808}
79809impl<'a> core::ops::Deref for DataGraphPipelineSessionCreateInfoARMBuilder<'a> {
79810    type Target = DataGraphPipelineSessionCreateInfoARM;
79811    #[inline]
79812    fn deref(&self) -> &Self::Target {
79813        &self.inner
79814    }
79815}
79816impl<'a> core::ops::DerefMut for DataGraphPipelineSessionCreateInfoARMBuilder<'a> {
79817    #[inline]
79818    fn deref_mut(&mut self) -> &mut Self::Target {
79819        &mut self.inner
79820    }
79821}
79822///Builder for [`DataGraphPipelineSessionBindPointRequirementsInfoARM`] with lifetime-tied pNext safety.
79823pub struct DataGraphPipelineSessionBindPointRequirementsInfoARMBuilder<'a> {
79824    inner: DataGraphPipelineSessionBindPointRequirementsInfoARM,
79825    _marker: core::marker::PhantomData<&'a ()>,
79826}
79827impl DataGraphPipelineSessionBindPointRequirementsInfoARM {
79828    /// Start building this struct; `s_type` is already set to the correct variant.
79829    #[inline]
79830    pub fn builder<'a>() -> DataGraphPipelineSessionBindPointRequirementsInfoARMBuilder<
79831        'a,
79832    > {
79833        DataGraphPipelineSessionBindPointRequirementsInfoARMBuilder {
79834            inner: DataGraphPipelineSessionBindPointRequirementsInfoARM {
79835                s_type: StructureType::from_raw(1000507011i32),
79836                ..Default::default()
79837            },
79838            _marker: core::marker::PhantomData,
79839        }
79840    }
79841}
79842impl<'a> DataGraphPipelineSessionBindPointRequirementsInfoARMBuilder<'a> {
79843    #[inline]
79844    pub fn session(mut self, value: DataGraphPipelineSessionARM) -> Self {
79845        self.inner.session = value;
79846        self
79847    }
79848    ///Prepend a struct to the pNext chain. See [`DataGraphPipelineSessionBindPointRequirementsInfoARM`]'s **Extended By** section for valid types.
79849    #[inline]
79850    pub fn push_next<T: ExtendsDataGraphPipelineSessionBindPointRequirementsInfoARM>(
79851        mut self,
79852        next: &'a mut T,
79853    ) -> Self {
79854        unsafe {
79855            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
79856            (*next_ptr).p_next = self.inner.p_next as *mut _;
79857            self.inner.p_next = <*mut BaseOutStructure>::cast::<
79858                core::ffi::c_void,
79859            >(next_ptr) as *const _;
79860        }
79861        self
79862    }
79863}
79864impl<'a> core::ops::Deref
79865for DataGraphPipelineSessionBindPointRequirementsInfoARMBuilder<'a> {
79866    type Target = DataGraphPipelineSessionBindPointRequirementsInfoARM;
79867    #[inline]
79868    fn deref(&self) -> &Self::Target {
79869        &self.inner
79870    }
79871}
79872impl<'a> core::ops::DerefMut
79873for DataGraphPipelineSessionBindPointRequirementsInfoARMBuilder<'a> {
79874    #[inline]
79875    fn deref_mut(&mut self) -> &mut Self::Target {
79876        &mut self.inner
79877    }
79878}
79879///Builder for [`DataGraphPipelineSessionBindPointRequirementARM`] with lifetime-tied pNext safety.
79880pub struct DataGraphPipelineSessionBindPointRequirementARMBuilder<'a> {
79881    inner: DataGraphPipelineSessionBindPointRequirementARM,
79882    _marker: core::marker::PhantomData<&'a ()>,
79883}
79884impl DataGraphPipelineSessionBindPointRequirementARM {
79885    /// Start building this struct; `s_type` is already set to the correct variant.
79886    #[inline]
79887    pub fn builder<'a>() -> DataGraphPipelineSessionBindPointRequirementARMBuilder<'a> {
79888        DataGraphPipelineSessionBindPointRequirementARMBuilder {
79889            inner: DataGraphPipelineSessionBindPointRequirementARM {
79890                s_type: StructureType::from_raw(1000507012i32),
79891                ..Default::default()
79892            },
79893            _marker: core::marker::PhantomData,
79894        }
79895    }
79896}
79897impl<'a> DataGraphPipelineSessionBindPointRequirementARMBuilder<'a> {
79898    #[inline]
79899    pub fn bind_point(mut self, value: DataGraphPipelineSessionBindPointARM) -> Self {
79900        self.inner.bind_point = value;
79901        self
79902    }
79903    #[inline]
79904    pub fn bind_point_type(
79905        mut self,
79906        value: DataGraphPipelineSessionBindPointTypeARM,
79907    ) -> Self {
79908        self.inner.bind_point_type = value;
79909        self
79910    }
79911    #[inline]
79912    pub fn num_objects(mut self, value: u32) -> Self {
79913        self.inner.num_objects = value;
79914        self
79915    }
79916}
79917impl<'a> core::ops::Deref
79918for DataGraphPipelineSessionBindPointRequirementARMBuilder<'a> {
79919    type Target = DataGraphPipelineSessionBindPointRequirementARM;
79920    #[inline]
79921    fn deref(&self) -> &Self::Target {
79922        &self.inner
79923    }
79924}
79925impl<'a> core::ops::DerefMut
79926for DataGraphPipelineSessionBindPointRequirementARMBuilder<'a> {
79927    #[inline]
79928    fn deref_mut(&mut self) -> &mut Self::Target {
79929        &mut self.inner
79930    }
79931}
79932///Builder for [`DataGraphPipelineSessionMemoryRequirementsInfoARM`] with lifetime-tied pNext safety.
79933pub struct DataGraphPipelineSessionMemoryRequirementsInfoARMBuilder<'a> {
79934    inner: DataGraphPipelineSessionMemoryRequirementsInfoARM,
79935    _marker: core::marker::PhantomData<&'a ()>,
79936}
79937impl DataGraphPipelineSessionMemoryRequirementsInfoARM {
79938    /// Start building this struct; `s_type` is already set to the correct variant.
79939    #[inline]
79940    pub fn builder<'a>() -> DataGraphPipelineSessionMemoryRequirementsInfoARMBuilder<
79941        'a,
79942    > {
79943        DataGraphPipelineSessionMemoryRequirementsInfoARMBuilder {
79944            inner: DataGraphPipelineSessionMemoryRequirementsInfoARM {
79945                s_type: StructureType::from_raw(1000507004i32),
79946                ..Default::default()
79947            },
79948            _marker: core::marker::PhantomData,
79949        }
79950    }
79951}
79952impl<'a> DataGraphPipelineSessionMemoryRequirementsInfoARMBuilder<'a> {
79953    #[inline]
79954    pub fn session(mut self, value: DataGraphPipelineSessionARM) -> Self {
79955        self.inner.session = value;
79956        self
79957    }
79958    #[inline]
79959    pub fn bind_point(mut self, value: DataGraphPipelineSessionBindPointARM) -> Self {
79960        self.inner.bind_point = value;
79961        self
79962    }
79963    #[inline]
79964    pub fn object_index(mut self, value: u32) -> Self {
79965        self.inner.object_index = value;
79966        self
79967    }
79968    ///Prepend a struct to the pNext chain. See [`DataGraphPipelineSessionMemoryRequirementsInfoARM`]'s **Extended By** section for valid types.
79969    #[inline]
79970    pub fn push_next<T: ExtendsDataGraphPipelineSessionMemoryRequirementsInfoARM>(
79971        mut self,
79972        next: &'a mut T,
79973    ) -> Self {
79974        unsafe {
79975            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
79976            (*next_ptr).p_next = self.inner.p_next as *mut _;
79977            self.inner.p_next = <*mut BaseOutStructure>::cast::<
79978                core::ffi::c_void,
79979            >(next_ptr) as *const _;
79980        }
79981        self
79982    }
79983}
79984impl<'a> core::ops::Deref
79985for DataGraphPipelineSessionMemoryRequirementsInfoARMBuilder<'a> {
79986    type Target = DataGraphPipelineSessionMemoryRequirementsInfoARM;
79987    #[inline]
79988    fn deref(&self) -> &Self::Target {
79989        &self.inner
79990    }
79991}
79992impl<'a> core::ops::DerefMut
79993for DataGraphPipelineSessionMemoryRequirementsInfoARMBuilder<'a> {
79994    #[inline]
79995    fn deref_mut(&mut self) -> &mut Self::Target {
79996        &mut self.inner
79997    }
79998}
79999///Builder for [`BindDataGraphPipelineSessionMemoryInfoARM`] with lifetime-tied pNext safety.
80000pub struct BindDataGraphPipelineSessionMemoryInfoARMBuilder<'a> {
80001    inner: BindDataGraphPipelineSessionMemoryInfoARM,
80002    _marker: core::marker::PhantomData<&'a ()>,
80003}
80004impl BindDataGraphPipelineSessionMemoryInfoARM {
80005    /// Start building this struct; `s_type` is already set to the correct variant.
80006    #[inline]
80007    pub fn builder<'a>() -> BindDataGraphPipelineSessionMemoryInfoARMBuilder<'a> {
80008        BindDataGraphPipelineSessionMemoryInfoARMBuilder {
80009            inner: BindDataGraphPipelineSessionMemoryInfoARM {
80010                s_type: StructureType::from_raw(1000507005i32),
80011                ..Default::default()
80012            },
80013            _marker: core::marker::PhantomData,
80014        }
80015    }
80016}
80017impl<'a> BindDataGraphPipelineSessionMemoryInfoARMBuilder<'a> {
80018    #[inline]
80019    pub fn session(mut self, value: DataGraphPipelineSessionARM) -> Self {
80020        self.inner.session = value;
80021        self
80022    }
80023    #[inline]
80024    pub fn bind_point(mut self, value: DataGraphPipelineSessionBindPointARM) -> Self {
80025        self.inner.bind_point = value;
80026        self
80027    }
80028    #[inline]
80029    pub fn object_index(mut self, value: u32) -> Self {
80030        self.inner.object_index = value;
80031        self
80032    }
80033    #[inline]
80034    pub fn memory(mut self, value: DeviceMemory) -> Self {
80035        self.inner.memory = value;
80036        self
80037    }
80038    #[inline]
80039    pub fn memory_offset(mut self, value: u64) -> Self {
80040        self.inner.memory_offset = value;
80041        self
80042    }
80043    ///Prepend a struct to the pNext chain. See [`BindDataGraphPipelineSessionMemoryInfoARM`]'s **Extended By** section for valid types.
80044    #[inline]
80045    pub fn push_next<T: ExtendsBindDataGraphPipelineSessionMemoryInfoARM>(
80046        mut self,
80047        next: &'a mut T,
80048    ) -> Self {
80049        unsafe {
80050            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
80051            (*next_ptr).p_next = self.inner.p_next as *mut _;
80052            self.inner.p_next = <*mut BaseOutStructure>::cast::<
80053                core::ffi::c_void,
80054            >(next_ptr) as *const _;
80055        }
80056        self
80057    }
80058}
80059impl<'a> core::ops::Deref for BindDataGraphPipelineSessionMemoryInfoARMBuilder<'a> {
80060    type Target = BindDataGraphPipelineSessionMemoryInfoARM;
80061    #[inline]
80062    fn deref(&self) -> &Self::Target {
80063        &self.inner
80064    }
80065}
80066impl<'a> core::ops::DerefMut for BindDataGraphPipelineSessionMemoryInfoARMBuilder<'a> {
80067    #[inline]
80068    fn deref_mut(&mut self) -> &mut Self::Target {
80069        &mut self.inner
80070    }
80071}
80072///Builder for [`DataGraphPipelineInfoARM`] with lifetime-tied pNext safety.
80073pub struct DataGraphPipelineInfoARMBuilder<'a> {
80074    inner: DataGraphPipelineInfoARM,
80075    _marker: core::marker::PhantomData<&'a ()>,
80076}
80077impl DataGraphPipelineInfoARM {
80078    /// Start building this struct; `s_type` is already set to the correct variant.
80079    #[inline]
80080    pub fn builder<'a>() -> DataGraphPipelineInfoARMBuilder<'a> {
80081        DataGraphPipelineInfoARMBuilder {
80082            inner: DataGraphPipelineInfoARM {
80083                s_type: StructureType::from_raw(1000507009i32),
80084                ..Default::default()
80085            },
80086            _marker: core::marker::PhantomData,
80087        }
80088    }
80089}
80090impl<'a> DataGraphPipelineInfoARMBuilder<'a> {
80091    #[inline]
80092    pub fn data_graph_pipeline(mut self, value: Pipeline) -> Self {
80093        self.inner.data_graph_pipeline = value;
80094        self
80095    }
80096    ///Prepend a struct to the pNext chain. See [`DataGraphPipelineInfoARM`]'s **Extended By** section for valid types.
80097    #[inline]
80098    pub fn push_next<T: ExtendsDataGraphPipelineInfoARM>(
80099        mut self,
80100        next: &'a mut T,
80101    ) -> Self {
80102        unsafe {
80103            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
80104            (*next_ptr).p_next = self.inner.p_next as *mut _;
80105            self.inner.p_next = <*mut BaseOutStructure>::cast::<
80106                core::ffi::c_void,
80107            >(next_ptr) as *const _;
80108        }
80109        self
80110    }
80111}
80112impl<'a> core::ops::Deref for DataGraphPipelineInfoARMBuilder<'a> {
80113    type Target = DataGraphPipelineInfoARM;
80114    #[inline]
80115    fn deref(&self) -> &Self::Target {
80116        &self.inner
80117    }
80118}
80119impl<'a> core::ops::DerefMut for DataGraphPipelineInfoARMBuilder<'a> {
80120    #[inline]
80121    fn deref_mut(&mut self) -> &mut Self::Target {
80122        &mut self.inner
80123    }
80124}
80125///Builder for [`DataGraphPipelinePropertyQueryResultARM`] with lifetime-tied pNext safety.
80126pub struct DataGraphPipelinePropertyQueryResultARMBuilder<'a> {
80127    inner: DataGraphPipelinePropertyQueryResultARM,
80128    _marker: core::marker::PhantomData<&'a ()>,
80129}
80130impl DataGraphPipelinePropertyQueryResultARM {
80131    /// Start building this struct; `s_type` is already set to the correct variant.
80132    #[inline]
80133    pub fn builder<'a>() -> DataGraphPipelinePropertyQueryResultARMBuilder<'a> {
80134        DataGraphPipelinePropertyQueryResultARMBuilder {
80135            inner: DataGraphPipelinePropertyQueryResultARM {
80136                s_type: StructureType::from_raw(1000507008i32),
80137                ..Default::default()
80138            },
80139            _marker: core::marker::PhantomData,
80140        }
80141    }
80142}
80143impl<'a> DataGraphPipelinePropertyQueryResultARMBuilder<'a> {
80144    #[inline]
80145    pub fn property(mut self, value: DataGraphPipelinePropertyARM) -> Self {
80146        self.inner.property = value;
80147        self
80148    }
80149    #[inline]
80150    pub fn is_text(mut self, value: bool) -> Self {
80151        self.inner.is_text = value as u32;
80152        self
80153    }
80154    #[inline]
80155    pub fn data_size(mut self, value: usize) -> Self {
80156        self.inner.data_size = value;
80157        self
80158    }
80159    #[inline]
80160    pub fn data(mut self, slice: &'a mut [core::ffi::c_void]) -> Self {
80161        self.inner.data_size = slice.len();
80162        self.inner.p_data = slice.as_mut_ptr();
80163        self
80164    }
80165    ///Prepend a struct to the pNext chain. See [`DataGraphPipelinePropertyQueryResultARM`]'s **Extended By** section for valid types.
80166    #[inline]
80167    pub fn push_next<T: ExtendsDataGraphPipelinePropertyQueryResultARM>(
80168        mut self,
80169        next: &'a mut T,
80170    ) -> Self {
80171        unsafe {
80172            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
80173            (*next_ptr).p_next = self.inner.p_next as *mut _;
80174            self.inner.p_next = <*mut BaseOutStructure>::cast::<
80175                core::ffi::c_void,
80176            >(next_ptr);
80177        }
80178        self
80179    }
80180}
80181impl<'a> core::ops::Deref for DataGraphPipelinePropertyQueryResultARMBuilder<'a> {
80182    type Target = DataGraphPipelinePropertyQueryResultARM;
80183    #[inline]
80184    fn deref(&self) -> &Self::Target {
80185        &self.inner
80186    }
80187}
80188impl<'a> core::ops::DerefMut for DataGraphPipelinePropertyQueryResultARMBuilder<'a> {
80189    #[inline]
80190    fn deref_mut(&mut self) -> &mut Self::Target {
80191        &mut self.inner
80192    }
80193}
80194///Builder for [`DataGraphPipelineIdentifierCreateInfoARM`] with lifetime-tied pNext safety.
80195pub struct DataGraphPipelineIdentifierCreateInfoARMBuilder<'a> {
80196    inner: DataGraphPipelineIdentifierCreateInfoARM,
80197    _marker: core::marker::PhantomData<&'a ()>,
80198}
80199impl DataGraphPipelineIdentifierCreateInfoARM {
80200    /// Start building this struct; `s_type` is already set to the correct variant.
80201    #[inline]
80202    pub fn builder<'a>() -> DataGraphPipelineIdentifierCreateInfoARMBuilder<'a> {
80203        DataGraphPipelineIdentifierCreateInfoARMBuilder {
80204            inner: DataGraphPipelineIdentifierCreateInfoARM {
80205                s_type: StructureType::from_raw(1000507013i32),
80206                ..Default::default()
80207            },
80208            _marker: core::marker::PhantomData,
80209        }
80210    }
80211}
80212impl<'a> DataGraphPipelineIdentifierCreateInfoARMBuilder<'a> {
80213    #[inline]
80214    pub fn identifier(mut self, slice: &'a [u8]) -> Self {
80215        self.inner.identifier_size = slice.len() as u32;
80216        self.inner.p_identifier = slice.as_ptr();
80217        self
80218    }
80219    ///Prepend a struct to the pNext chain. See [`DataGraphPipelineIdentifierCreateInfoARM`]'s **Extended By** section for valid types.
80220    #[inline]
80221    pub fn push_next<T: ExtendsDataGraphPipelineIdentifierCreateInfoARM>(
80222        mut self,
80223        next: &'a mut T,
80224    ) -> Self {
80225        unsafe {
80226            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
80227            (*next_ptr).p_next = self.inner.p_next as *mut _;
80228            self.inner.p_next = <*mut BaseOutStructure>::cast::<
80229                core::ffi::c_void,
80230            >(next_ptr) as *const _;
80231        }
80232        self
80233    }
80234}
80235impl<'a> core::ops::Deref for DataGraphPipelineIdentifierCreateInfoARMBuilder<'a> {
80236    type Target = DataGraphPipelineIdentifierCreateInfoARM;
80237    #[inline]
80238    fn deref(&self) -> &Self::Target {
80239        &self.inner
80240    }
80241}
80242impl<'a> core::ops::DerefMut for DataGraphPipelineIdentifierCreateInfoARMBuilder<'a> {
80243    #[inline]
80244    fn deref_mut(&mut self) -> &mut Self::Target {
80245        &mut self.inner
80246    }
80247}
80248///Builder for [`DataGraphPipelineDispatchInfoARM`] with lifetime-tied pNext safety.
80249pub struct DataGraphPipelineDispatchInfoARMBuilder<'a> {
80250    inner: DataGraphPipelineDispatchInfoARM,
80251    _marker: core::marker::PhantomData<&'a ()>,
80252}
80253impl DataGraphPipelineDispatchInfoARM {
80254    /// Start building this struct; `s_type` is already set to the correct variant.
80255    #[inline]
80256    pub fn builder<'a>() -> DataGraphPipelineDispatchInfoARMBuilder<'a> {
80257        DataGraphPipelineDispatchInfoARMBuilder {
80258            inner: DataGraphPipelineDispatchInfoARM {
80259                s_type: StructureType::from_raw(1000507014i32),
80260                ..Default::default()
80261            },
80262            _marker: core::marker::PhantomData,
80263        }
80264    }
80265}
80266impl<'a> DataGraphPipelineDispatchInfoARMBuilder<'a> {
80267    #[inline]
80268    pub fn flags(mut self, value: DataGraphPipelineDispatchFlagsARM) -> Self {
80269        self.inner.flags = value;
80270        self
80271    }
80272    ///Prepend a struct to the pNext chain. See [`DataGraphPipelineDispatchInfoARM`]'s **Extended By** section for valid types.
80273    #[inline]
80274    pub fn push_next<T: ExtendsDataGraphPipelineDispatchInfoARM>(
80275        mut self,
80276        next: &'a mut T,
80277    ) -> Self {
80278        unsafe {
80279            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
80280            (*next_ptr).p_next = self.inner.p_next as *mut _;
80281            self.inner.p_next = <*mut BaseOutStructure>::cast::<
80282                core::ffi::c_void,
80283            >(next_ptr);
80284        }
80285        self
80286    }
80287}
80288impl<'a> core::ops::Deref for DataGraphPipelineDispatchInfoARMBuilder<'a> {
80289    type Target = DataGraphPipelineDispatchInfoARM;
80290    #[inline]
80291    fn deref(&self) -> &Self::Target {
80292        &self.inner
80293    }
80294}
80295impl<'a> core::ops::DerefMut for DataGraphPipelineDispatchInfoARMBuilder<'a> {
80296    #[inline]
80297    fn deref_mut(&mut self) -> &mut Self::Target {
80298        &mut self.inner
80299    }
80300}
80301///Builder for [`PhysicalDeviceDataGraphProcessingEngineARM`].
80302pub struct PhysicalDeviceDataGraphProcessingEngineARMBuilder {
80303    inner: PhysicalDeviceDataGraphProcessingEngineARM,
80304}
80305impl PhysicalDeviceDataGraphProcessingEngineARM {
80306    /// Start building this struct.
80307    #[inline]
80308    pub fn builder() -> PhysicalDeviceDataGraphProcessingEngineARMBuilder {
80309        PhysicalDeviceDataGraphProcessingEngineARMBuilder {
80310            inner: PhysicalDeviceDataGraphProcessingEngineARM {
80311                ..Default::default()
80312            },
80313        }
80314    }
80315}
80316impl PhysicalDeviceDataGraphProcessingEngineARMBuilder {
80317    #[inline]
80318    pub fn r#type(
80319        mut self,
80320        value: PhysicalDeviceDataGraphProcessingEngineTypeARM,
80321    ) -> Self {
80322        self.inner.r#type = value;
80323        self
80324    }
80325    #[inline]
80326    pub fn is_foreign(mut self, value: bool) -> Self {
80327        self.inner.is_foreign = value as u32;
80328        self
80329    }
80330}
80331impl core::ops::Deref for PhysicalDeviceDataGraphProcessingEngineARMBuilder {
80332    type Target = PhysicalDeviceDataGraphProcessingEngineARM;
80333    #[inline]
80334    fn deref(&self) -> &Self::Target {
80335        &self.inner
80336    }
80337}
80338impl core::ops::DerefMut for PhysicalDeviceDataGraphProcessingEngineARMBuilder {
80339    #[inline]
80340    fn deref_mut(&mut self) -> &mut Self::Target {
80341        &mut self.inner
80342    }
80343}
80344///Builder for [`PhysicalDeviceDataGraphOperationSupportARM`].
80345pub struct PhysicalDeviceDataGraphOperationSupportARMBuilder {
80346    inner: PhysicalDeviceDataGraphOperationSupportARM,
80347}
80348impl PhysicalDeviceDataGraphOperationSupportARM {
80349    /// Start building this struct.
80350    #[inline]
80351    pub fn builder() -> PhysicalDeviceDataGraphOperationSupportARMBuilder {
80352        PhysicalDeviceDataGraphOperationSupportARMBuilder {
80353            inner: PhysicalDeviceDataGraphOperationSupportARM {
80354                ..Default::default()
80355            },
80356        }
80357    }
80358}
80359impl PhysicalDeviceDataGraphOperationSupportARMBuilder {
80360    #[inline]
80361    pub fn operation_type(
80362        mut self,
80363        value: PhysicalDeviceDataGraphOperationTypeARM,
80364    ) -> Self {
80365        self.inner.operation_type = value;
80366        self
80367    }
80368    #[inline]
80369    pub fn name(
80370        mut self,
80371        value: crate::StringArray<
80372            { MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM as usize },
80373        >,
80374    ) -> Self {
80375        self.inner.name = value;
80376        self
80377    }
80378    #[inline]
80379    pub fn version(mut self, value: u32) -> Self {
80380        self.inner.version = value;
80381        self
80382    }
80383}
80384impl core::ops::Deref for PhysicalDeviceDataGraphOperationSupportARMBuilder {
80385    type Target = PhysicalDeviceDataGraphOperationSupportARM;
80386    #[inline]
80387    fn deref(&self) -> &Self::Target {
80388        &self.inner
80389    }
80390}
80391impl core::ops::DerefMut for PhysicalDeviceDataGraphOperationSupportARMBuilder {
80392    #[inline]
80393    fn deref_mut(&mut self) -> &mut Self::Target {
80394        &mut self.inner
80395    }
80396}
80397///Builder for [`QueueFamilyDataGraphPropertiesARM`] with lifetime-tied pNext safety.
80398pub struct QueueFamilyDataGraphPropertiesARMBuilder<'a> {
80399    inner: QueueFamilyDataGraphPropertiesARM,
80400    _marker: core::marker::PhantomData<&'a ()>,
80401}
80402impl QueueFamilyDataGraphPropertiesARM {
80403    /// Start building this struct; `s_type` is already set to the correct variant.
80404    #[inline]
80405    pub fn builder<'a>() -> QueueFamilyDataGraphPropertiesARMBuilder<'a> {
80406        QueueFamilyDataGraphPropertiesARMBuilder {
80407            inner: QueueFamilyDataGraphPropertiesARM {
80408                s_type: StructureType::from_raw(1000507018i32),
80409                ..Default::default()
80410            },
80411            _marker: core::marker::PhantomData,
80412        }
80413    }
80414}
80415impl<'a> QueueFamilyDataGraphPropertiesARMBuilder<'a> {
80416    #[inline]
80417    pub fn engine(mut self, value: PhysicalDeviceDataGraphProcessingEngineARM) -> Self {
80418        self.inner.engine = value;
80419        self
80420    }
80421    #[inline]
80422    pub fn operation(
80423        mut self,
80424        value: PhysicalDeviceDataGraphOperationSupportARM,
80425    ) -> Self {
80426        self.inner.operation = value;
80427        self
80428    }
80429}
80430impl<'a> core::ops::Deref for QueueFamilyDataGraphPropertiesARMBuilder<'a> {
80431    type Target = QueueFamilyDataGraphPropertiesARM;
80432    #[inline]
80433    fn deref(&self) -> &Self::Target {
80434        &self.inner
80435    }
80436}
80437impl<'a> core::ops::DerefMut for QueueFamilyDataGraphPropertiesARMBuilder<'a> {
80438    #[inline]
80439    fn deref_mut(&mut self) -> &mut Self::Target {
80440        &mut self.inner
80441    }
80442}
80443///Builder for [`PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM`] with lifetime-tied pNext safety.
80444pub struct PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARMBuilder<'a> {
80445    inner: PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM,
80446    _marker: core::marker::PhantomData<&'a ()>,
80447}
80448impl PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {
80449    /// Start building this struct; `s_type` is already set to the correct variant.
80450    #[inline]
80451    pub fn builder<'a>() -> PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARMBuilder<
80452        'a,
80453    > {
80454        PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARMBuilder {
80455            inner: PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {
80456                s_type: StructureType::from_raw(1000507019i32),
80457                ..Default::default()
80458            },
80459            _marker: core::marker::PhantomData,
80460        }
80461    }
80462}
80463impl<'a> PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARMBuilder<'a> {
80464    #[inline]
80465    pub fn queue_family_index(mut self, value: u32) -> Self {
80466        self.inner.queue_family_index = value;
80467        self
80468    }
80469    #[inline]
80470    pub fn engine_type(
80471        mut self,
80472        value: PhysicalDeviceDataGraphProcessingEngineTypeARM,
80473    ) -> Self {
80474        self.inner.engine_type = value;
80475        self
80476    }
80477    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM`]'s **Extended By** section for valid types.
80478    #[inline]
80479    pub fn push_next<
80480        T: ExtendsPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM,
80481    >(mut self, next: &'a mut T) -> Self {
80482        unsafe {
80483            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
80484            (*next_ptr).p_next = self.inner.p_next as *mut _;
80485            self.inner.p_next = <*mut BaseOutStructure>::cast::<
80486                core::ffi::c_void,
80487            >(next_ptr) as *const _;
80488        }
80489        self
80490    }
80491}
80492impl<'a> core::ops::Deref
80493for PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARMBuilder<'a> {
80494    type Target = PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM;
80495    #[inline]
80496    fn deref(&self) -> &Self::Target {
80497        &self.inner
80498    }
80499}
80500impl<'a> core::ops::DerefMut
80501for PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARMBuilder<'a> {
80502    #[inline]
80503    fn deref_mut(&mut self) -> &mut Self::Target {
80504        &mut self.inner
80505    }
80506}
80507///Builder for [`QueueFamilyDataGraphProcessingEnginePropertiesARM`] with lifetime-tied pNext safety.
80508pub struct QueueFamilyDataGraphProcessingEnginePropertiesARMBuilder<'a> {
80509    inner: QueueFamilyDataGraphProcessingEnginePropertiesARM,
80510    _marker: core::marker::PhantomData<&'a ()>,
80511}
80512impl QueueFamilyDataGraphProcessingEnginePropertiesARM {
80513    /// Start building this struct; `s_type` is already set to the correct variant.
80514    #[inline]
80515    pub fn builder<'a>() -> QueueFamilyDataGraphProcessingEnginePropertiesARMBuilder<
80516        'a,
80517    > {
80518        QueueFamilyDataGraphProcessingEnginePropertiesARMBuilder {
80519            inner: QueueFamilyDataGraphProcessingEnginePropertiesARM {
80520                s_type: StructureType::from_raw(1000507017i32),
80521                ..Default::default()
80522            },
80523            _marker: core::marker::PhantomData,
80524        }
80525    }
80526}
80527impl<'a> QueueFamilyDataGraphProcessingEnginePropertiesARMBuilder<'a> {
80528    #[inline]
80529    pub fn foreign_semaphore_handle_types(
80530        mut self,
80531        value: ExternalSemaphoreHandleTypeFlags,
80532    ) -> Self {
80533        self.inner.foreign_semaphore_handle_types = value;
80534        self
80535    }
80536    #[inline]
80537    pub fn foreign_memory_handle_types(
80538        mut self,
80539        value: ExternalMemoryHandleTypeFlags,
80540    ) -> Self {
80541        self.inner.foreign_memory_handle_types = value;
80542        self
80543    }
80544}
80545impl<'a> core::ops::Deref
80546for QueueFamilyDataGraphProcessingEnginePropertiesARMBuilder<'a> {
80547    type Target = QueueFamilyDataGraphProcessingEnginePropertiesARM;
80548    #[inline]
80549    fn deref(&self) -> &Self::Target {
80550        &self.inner
80551    }
80552}
80553impl<'a> core::ops::DerefMut
80554for QueueFamilyDataGraphProcessingEnginePropertiesARMBuilder<'a> {
80555    #[inline]
80556    fn deref_mut(&mut self) -> &mut Self::Target {
80557        &mut self.inner
80558    }
80559}
80560///Builder for [`DataGraphProcessingEngineCreateInfoARM`] with lifetime-tied pNext safety.
80561pub struct DataGraphProcessingEngineCreateInfoARMBuilder<'a> {
80562    inner: DataGraphProcessingEngineCreateInfoARM,
80563    _marker: core::marker::PhantomData<&'a ()>,
80564}
80565impl DataGraphProcessingEngineCreateInfoARM {
80566    /// Start building this struct; `s_type` is already set to the correct variant.
80567    #[inline]
80568    pub fn builder<'a>() -> DataGraphProcessingEngineCreateInfoARMBuilder<'a> {
80569        DataGraphProcessingEngineCreateInfoARMBuilder {
80570            inner: DataGraphProcessingEngineCreateInfoARM {
80571                s_type: StructureType::from_raw(1000507016i32),
80572                ..Default::default()
80573            },
80574            _marker: core::marker::PhantomData,
80575        }
80576    }
80577}
80578impl<'a> DataGraphProcessingEngineCreateInfoARMBuilder<'a> {
80579    #[inline]
80580    pub fn processing_engines(
80581        mut self,
80582        slice: &'a mut [PhysicalDeviceDataGraphProcessingEngineARM],
80583    ) -> Self {
80584        self.inner.processing_engine_count = slice.len() as u32;
80585        self.inner.p_processing_engines = slice.as_mut_ptr();
80586        self
80587    }
80588    ///Prepend a struct to the pNext chain. See [`DataGraphProcessingEngineCreateInfoARM`]'s **Extended By** section for valid types.
80589    #[inline]
80590    pub fn push_next<T: ExtendsDataGraphProcessingEngineCreateInfoARM>(
80591        mut self,
80592        next: &'a mut T,
80593    ) -> Self {
80594        unsafe {
80595            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
80596            (*next_ptr).p_next = self.inner.p_next as *mut _;
80597            self.inner.p_next = <*mut BaseOutStructure>::cast::<
80598                core::ffi::c_void,
80599            >(next_ptr) as *const _;
80600        }
80601        self
80602    }
80603}
80604impl<'a> core::ops::Deref for DataGraphProcessingEngineCreateInfoARMBuilder<'a> {
80605    type Target = DataGraphProcessingEngineCreateInfoARM;
80606    #[inline]
80607    fn deref(&self) -> &Self::Target {
80608        &self.inner
80609    }
80610}
80611impl<'a> core::ops::DerefMut for DataGraphProcessingEngineCreateInfoARMBuilder<'a> {
80612    #[inline]
80613    fn deref_mut(&mut self) -> &mut Self::Target {
80614        &mut self.inner
80615    }
80616}
80617///Builder for [`PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC`] with lifetime-tied pNext safety.
80618pub struct PhysicalDevicePipelineCacheIncrementalModeFeaturesSECBuilder<'a> {
80619    inner: PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC,
80620    _marker: core::marker::PhantomData<&'a ()>,
80621}
80622impl PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {
80623    /// Start building this struct; `s_type` is already set to the correct variant.
80624    #[inline]
80625    pub fn builder<'a>() -> PhysicalDevicePipelineCacheIncrementalModeFeaturesSECBuilder<
80626        'a,
80627    > {
80628        PhysicalDevicePipelineCacheIncrementalModeFeaturesSECBuilder {
80629            inner: PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {
80630                s_type: StructureType::from_raw(1000637000i32),
80631                ..Default::default()
80632            },
80633            _marker: core::marker::PhantomData,
80634        }
80635    }
80636}
80637impl<'a> PhysicalDevicePipelineCacheIncrementalModeFeaturesSECBuilder<'a> {
80638    #[inline]
80639    pub fn pipeline_cache_incremental_mode(mut self, value: bool) -> Self {
80640        self.inner.pipeline_cache_incremental_mode = value as u32;
80641        self
80642    }
80643    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC`]'s **Extended By** section for valid types.
80644    #[inline]
80645    pub fn push_next<T: ExtendsPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC>(
80646        mut self,
80647        next: &'a mut T,
80648    ) -> Self {
80649        unsafe {
80650            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
80651            (*next_ptr).p_next = self.inner.p_next as *mut _;
80652            self.inner.p_next = <*mut BaseOutStructure>::cast::<
80653                core::ffi::c_void,
80654            >(next_ptr);
80655        }
80656        self
80657    }
80658}
80659impl<'a> core::ops::Deref
80660for PhysicalDevicePipelineCacheIncrementalModeFeaturesSECBuilder<'a> {
80661    type Target = PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC;
80662    #[inline]
80663    fn deref(&self) -> &Self::Target {
80664        &self.inner
80665    }
80666}
80667impl<'a> core::ops::DerefMut
80668for PhysicalDevicePipelineCacheIncrementalModeFeaturesSECBuilder<'a> {
80669    #[inline]
80670    fn deref_mut(&mut self) -> &mut Self::Target {
80671        &mut self.inner
80672    }
80673}
80674///Builder for [`DataGraphPipelineBuiltinModelCreateInfoQCOM`] with lifetime-tied pNext safety.
80675pub struct DataGraphPipelineBuiltinModelCreateInfoQCOMBuilder<'a> {
80676    inner: DataGraphPipelineBuiltinModelCreateInfoQCOM,
80677    _marker: core::marker::PhantomData<&'a ()>,
80678}
80679impl DataGraphPipelineBuiltinModelCreateInfoQCOM {
80680    /// Start building this struct; `s_type` is already set to the correct variant.
80681    #[inline]
80682    pub fn builder<'a>() -> DataGraphPipelineBuiltinModelCreateInfoQCOMBuilder<'a> {
80683        DataGraphPipelineBuiltinModelCreateInfoQCOMBuilder {
80684            inner: DataGraphPipelineBuiltinModelCreateInfoQCOM {
80685                s_type: StructureType::from_raw(1000629001i32),
80686                ..Default::default()
80687            },
80688            _marker: core::marker::PhantomData,
80689        }
80690    }
80691}
80692impl<'a> DataGraphPipelineBuiltinModelCreateInfoQCOMBuilder<'a> {
80693    #[inline]
80694    pub fn operation(
80695        mut self,
80696        value: &'a PhysicalDeviceDataGraphOperationSupportARM,
80697    ) -> Self {
80698        self.inner.p_operation = value;
80699        self
80700    }
80701    ///Prepend a struct to the pNext chain. See [`DataGraphPipelineBuiltinModelCreateInfoQCOM`]'s **Extended By** section for valid types.
80702    #[inline]
80703    pub fn push_next<T: ExtendsDataGraphPipelineBuiltinModelCreateInfoQCOM>(
80704        mut self,
80705        next: &'a mut T,
80706    ) -> Self {
80707        unsafe {
80708            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
80709            (*next_ptr).p_next = self.inner.p_next as *mut _;
80710            self.inner.p_next = <*mut BaseOutStructure>::cast::<
80711                core::ffi::c_void,
80712            >(next_ptr) as *const _;
80713        }
80714        self
80715    }
80716}
80717impl<'a> core::ops::Deref for DataGraphPipelineBuiltinModelCreateInfoQCOMBuilder<'a> {
80718    type Target = DataGraphPipelineBuiltinModelCreateInfoQCOM;
80719    #[inline]
80720    fn deref(&self) -> &Self::Target {
80721        &self.inner
80722    }
80723}
80724impl<'a> core::ops::DerefMut for DataGraphPipelineBuiltinModelCreateInfoQCOMBuilder<'a> {
80725    #[inline]
80726    fn deref_mut(&mut self) -> &mut Self::Target {
80727        &mut self.inner
80728    }
80729}
80730///Builder for [`PhysicalDeviceDataGraphModelFeaturesQCOM`] with lifetime-tied pNext safety.
80731pub struct PhysicalDeviceDataGraphModelFeaturesQCOMBuilder<'a> {
80732    inner: PhysicalDeviceDataGraphModelFeaturesQCOM,
80733    _marker: core::marker::PhantomData<&'a ()>,
80734}
80735impl PhysicalDeviceDataGraphModelFeaturesQCOM {
80736    /// Start building this struct; `s_type` is already set to the correct variant.
80737    #[inline]
80738    pub fn builder<'a>() -> PhysicalDeviceDataGraphModelFeaturesQCOMBuilder<'a> {
80739        PhysicalDeviceDataGraphModelFeaturesQCOMBuilder {
80740            inner: PhysicalDeviceDataGraphModelFeaturesQCOM {
80741                s_type: StructureType::from_raw(1000629000i32),
80742                ..Default::default()
80743            },
80744            _marker: core::marker::PhantomData,
80745        }
80746    }
80747}
80748impl<'a> PhysicalDeviceDataGraphModelFeaturesQCOMBuilder<'a> {
80749    #[inline]
80750    pub fn data_graph_model(mut self, value: bool) -> Self {
80751        self.inner.data_graph_model = value as u32;
80752        self
80753    }
80754    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDataGraphModelFeaturesQCOM`]'s **Extended By** section for valid types.
80755    #[inline]
80756    pub fn push_next<T: ExtendsPhysicalDeviceDataGraphModelFeaturesQCOM>(
80757        mut self,
80758        next: &'a mut T,
80759    ) -> Self {
80760        unsafe {
80761            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
80762            (*next_ptr).p_next = self.inner.p_next as *mut _;
80763            self.inner.p_next = <*mut BaseOutStructure>::cast::<
80764                core::ffi::c_void,
80765            >(next_ptr);
80766        }
80767        self
80768    }
80769}
80770impl<'a> core::ops::Deref for PhysicalDeviceDataGraphModelFeaturesQCOMBuilder<'a> {
80771    type Target = PhysicalDeviceDataGraphModelFeaturesQCOM;
80772    #[inline]
80773    fn deref(&self) -> &Self::Target {
80774        &self.inner
80775    }
80776}
80777impl<'a> core::ops::DerefMut for PhysicalDeviceDataGraphModelFeaturesQCOMBuilder<'a> {
80778    #[inline]
80779    fn deref_mut(&mut self) -> &mut Self::Target {
80780        &mut self.inner
80781    }
80782}
80783///Builder for [`PhysicalDeviceShaderUntypedPointersFeaturesKHR`] with lifetime-tied pNext safety.
80784pub struct PhysicalDeviceShaderUntypedPointersFeaturesKHRBuilder<'a> {
80785    inner: PhysicalDeviceShaderUntypedPointersFeaturesKHR,
80786    _marker: core::marker::PhantomData<&'a ()>,
80787}
80788impl PhysicalDeviceShaderUntypedPointersFeaturesKHR {
80789    /// Start building this struct; `s_type` is already set to the correct variant.
80790    #[inline]
80791    pub fn builder<'a>() -> PhysicalDeviceShaderUntypedPointersFeaturesKHRBuilder<'a> {
80792        PhysicalDeviceShaderUntypedPointersFeaturesKHRBuilder {
80793            inner: PhysicalDeviceShaderUntypedPointersFeaturesKHR {
80794                s_type: StructureType::from_raw(1000387000i32),
80795                ..Default::default()
80796            },
80797            _marker: core::marker::PhantomData,
80798        }
80799    }
80800}
80801impl<'a> PhysicalDeviceShaderUntypedPointersFeaturesKHRBuilder<'a> {
80802    #[inline]
80803    pub fn shader_untyped_pointers(mut self, value: bool) -> Self {
80804        self.inner.shader_untyped_pointers = value as u32;
80805        self
80806    }
80807    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderUntypedPointersFeaturesKHR`]'s **Extended By** section for valid types.
80808    #[inline]
80809    pub fn push_next<T: ExtendsPhysicalDeviceShaderUntypedPointersFeaturesKHR>(
80810        mut self,
80811        next: &'a mut T,
80812    ) -> Self {
80813        unsafe {
80814            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
80815            (*next_ptr).p_next = self.inner.p_next as *mut _;
80816            self.inner.p_next = <*mut BaseOutStructure>::cast::<
80817                core::ffi::c_void,
80818            >(next_ptr);
80819        }
80820        self
80821    }
80822}
80823impl<'a> core::ops::Deref for PhysicalDeviceShaderUntypedPointersFeaturesKHRBuilder<'a> {
80824    type Target = PhysicalDeviceShaderUntypedPointersFeaturesKHR;
80825    #[inline]
80826    fn deref(&self) -> &Self::Target {
80827        &self.inner
80828    }
80829}
80830impl<'a> core::ops::DerefMut
80831for PhysicalDeviceShaderUntypedPointersFeaturesKHRBuilder<'a> {
80832    #[inline]
80833    fn deref_mut(&mut self) -> &mut Self::Target {
80834        &mut self.inner
80835    }
80836}
80837///Builder for [`NativeBufferOHOS`] with lifetime-tied pNext safety.
80838pub struct NativeBufferOHOSBuilder<'a> {
80839    inner: NativeBufferOHOS,
80840    _marker: core::marker::PhantomData<&'a ()>,
80841}
80842impl NativeBufferOHOS {
80843    /// Start building this struct; `s_type` is already set to the correct variant.
80844    #[inline]
80845    pub fn builder<'a>() -> NativeBufferOHOSBuilder<'a> {
80846        NativeBufferOHOSBuilder {
80847            inner: NativeBufferOHOS {
80848                s_type: Default::default(),
80849                ..Default::default()
80850            },
80851            _marker: core::marker::PhantomData,
80852        }
80853    }
80854}
80855impl<'a> NativeBufferOHOSBuilder<'a> {
80856    #[inline]
80857    pub fn handle(mut self, value: *mut core::ffi::c_void) -> Self {
80858        self.inner.handle = value;
80859        self
80860    }
80861    ///Prepend a struct to the pNext chain. See [`NativeBufferOHOS`]'s **Extended By** section for valid types.
80862    #[inline]
80863    pub fn push_next<T: ExtendsNativeBufferOHOS>(mut self, next: &'a mut T) -> Self {
80864        unsafe {
80865            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
80866            (*next_ptr).p_next = self.inner.p_next as *mut _;
80867            self.inner.p_next = <*mut BaseOutStructure>::cast::<
80868                core::ffi::c_void,
80869            >(next_ptr) as *const _;
80870        }
80871        self
80872    }
80873}
80874impl<'a> core::ops::Deref for NativeBufferOHOSBuilder<'a> {
80875    type Target = NativeBufferOHOS;
80876    #[inline]
80877    fn deref(&self) -> &Self::Target {
80878        &self.inner
80879    }
80880}
80881impl<'a> core::ops::DerefMut for NativeBufferOHOSBuilder<'a> {
80882    #[inline]
80883    fn deref_mut(&mut self) -> &mut Self::Target {
80884        &mut self.inner
80885    }
80886}
80887///Builder for [`SwapchainImageCreateInfoOHOS`] with lifetime-tied pNext safety.
80888pub struct SwapchainImageCreateInfoOHOSBuilder<'a> {
80889    inner: SwapchainImageCreateInfoOHOS,
80890    _marker: core::marker::PhantomData<&'a ()>,
80891}
80892impl SwapchainImageCreateInfoOHOS {
80893    /// Start building this struct; `s_type` is already set to the correct variant.
80894    #[inline]
80895    pub fn builder<'a>() -> SwapchainImageCreateInfoOHOSBuilder<'a> {
80896        SwapchainImageCreateInfoOHOSBuilder {
80897            inner: SwapchainImageCreateInfoOHOS {
80898                s_type: Default::default(),
80899                ..Default::default()
80900            },
80901            _marker: core::marker::PhantomData,
80902        }
80903    }
80904}
80905impl<'a> SwapchainImageCreateInfoOHOSBuilder<'a> {
80906    #[inline]
80907    pub fn usage(mut self, value: SwapchainImageUsageFlagsOHOS) -> Self {
80908        self.inner.usage = value;
80909        self
80910    }
80911    ///Prepend a struct to the pNext chain. See [`SwapchainImageCreateInfoOHOS`]'s **Extended By** section for valid types.
80912    #[inline]
80913    pub fn push_next<T: ExtendsSwapchainImageCreateInfoOHOS>(
80914        mut self,
80915        next: &'a mut T,
80916    ) -> Self {
80917        unsafe {
80918            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
80919            (*next_ptr).p_next = self.inner.p_next as *mut _;
80920            self.inner.p_next = <*mut BaseOutStructure>::cast::<
80921                core::ffi::c_void,
80922            >(next_ptr) as *const _;
80923        }
80924        self
80925    }
80926}
80927impl<'a> core::ops::Deref for SwapchainImageCreateInfoOHOSBuilder<'a> {
80928    type Target = SwapchainImageCreateInfoOHOS;
80929    #[inline]
80930    fn deref(&self) -> &Self::Target {
80931        &self.inner
80932    }
80933}
80934impl<'a> core::ops::DerefMut for SwapchainImageCreateInfoOHOSBuilder<'a> {
80935    #[inline]
80936    fn deref_mut(&mut self) -> &mut Self::Target {
80937        &mut self.inner
80938    }
80939}
80940///Builder for [`PhysicalDevicePresentationPropertiesOHOS`] with lifetime-tied pNext safety.
80941pub struct PhysicalDevicePresentationPropertiesOHOSBuilder<'a> {
80942    inner: PhysicalDevicePresentationPropertiesOHOS,
80943    _marker: core::marker::PhantomData<&'a ()>,
80944}
80945impl PhysicalDevicePresentationPropertiesOHOS {
80946    /// Start building this struct; `s_type` is already set to the correct variant.
80947    #[inline]
80948    pub fn builder<'a>() -> PhysicalDevicePresentationPropertiesOHOSBuilder<'a> {
80949        PhysicalDevicePresentationPropertiesOHOSBuilder {
80950            inner: PhysicalDevicePresentationPropertiesOHOS {
80951                s_type: Default::default(),
80952                ..Default::default()
80953            },
80954            _marker: core::marker::PhantomData,
80955        }
80956    }
80957}
80958impl<'a> PhysicalDevicePresentationPropertiesOHOSBuilder<'a> {
80959    #[inline]
80960    pub fn shared_image(mut self, value: bool) -> Self {
80961        self.inner.shared_image = value as u32;
80962        self
80963    }
80964}
80965impl<'a> core::ops::Deref for PhysicalDevicePresentationPropertiesOHOSBuilder<'a> {
80966    type Target = PhysicalDevicePresentationPropertiesOHOS;
80967    #[inline]
80968    fn deref(&self) -> &Self::Target {
80969        &self.inner
80970    }
80971}
80972impl<'a> core::ops::DerefMut for PhysicalDevicePresentationPropertiesOHOSBuilder<'a> {
80973    #[inline]
80974    fn deref_mut(&mut self) -> &mut Self::Target {
80975        &mut self.inner
80976    }
80977}
80978///Builder for [`PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE`] with lifetime-tied pNext safety.
80979pub struct PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVEBuilder<'a> {
80980    inner: PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE,
80981    _marker: core::marker::PhantomData<&'a ()>,
80982}
80983impl PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {
80984    /// Start building this struct; `s_type` is already set to the correct variant.
80985    #[inline]
80986    pub fn builder<'a>() -> PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVEBuilder<
80987        'a,
80988    > {
80989        PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVEBuilder {
80990            inner: PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {
80991                s_type: StructureType::from_raw(1000390000i32),
80992                ..Default::default()
80993            },
80994            _marker: core::marker::PhantomData,
80995        }
80996    }
80997}
80998impl<'a> PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVEBuilder<'a> {
80999    #[inline]
81000    pub fn video_encode_rgb_conversion(mut self, value: bool) -> Self {
81001        self.inner.video_encode_rgb_conversion = value as u32;
81002        self
81003    }
81004    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE`]'s **Extended By** section for valid types.
81005    #[inline]
81006    pub fn push_next<T: ExtendsPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE>(
81007        mut self,
81008        next: &'a mut T,
81009    ) -> Self {
81010        unsafe {
81011            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
81012            (*next_ptr).p_next = self.inner.p_next as *mut _;
81013            self.inner.p_next = <*mut BaseOutStructure>::cast::<
81014                core::ffi::c_void,
81015            >(next_ptr);
81016        }
81017        self
81018    }
81019}
81020impl<'a> core::ops::Deref
81021for PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVEBuilder<'a> {
81022    type Target = PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE;
81023    #[inline]
81024    fn deref(&self) -> &Self::Target {
81025        &self.inner
81026    }
81027}
81028impl<'a> core::ops::DerefMut
81029for PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVEBuilder<'a> {
81030    #[inline]
81031    fn deref_mut(&mut self) -> &mut Self::Target {
81032        &mut self.inner
81033    }
81034}
81035///Builder for [`VideoEncodeRgbConversionCapabilitiesVALVE`] with lifetime-tied pNext safety.
81036pub struct VideoEncodeRgbConversionCapabilitiesVALVEBuilder<'a> {
81037    inner: VideoEncodeRgbConversionCapabilitiesVALVE,
81038    _marker: core::marker::PhantomData<&'a ()>,
81039}
81040impl VideoEncodeRgbConversionCapabilitiesVALVE {
81041    /// Start building this struct; `s_type` is already set to the correct variant.
81042    #[inline]
81043    pub fn builder<'a>() -> VideoEncodeRgbConversionCapabilitiesVALVEBuilder<'a> {
81044        VideoEncodeRgbConversionCapabilitiesVALVEBuilder {
81045            inner: VideoEncodeRgbConversionCapabilitiesVALVE {
81046                s_type: StructureType::from_raw(1000390001i32),
81047                ..Default::default()
81048            },
81049            _marker: core::marker::PhantomData,
81050        }
81051    }
81052}
81053impl<'a> VideoEncodeRgbConversionCapabilitiesVALVEBuilder<'a> {
81054    #[inline]
81055    pub fn rgb_models(mut self, value: VideoEncodeRgbModelConversionFlagsVALVE) -> Self {
81056        self.inner.rgb_models = value;
81057        self
81058    }
81059    #[inline]
81060    pub fn rgb_ranges(
81061        mut self,
81062        value: VideoEncodeRgbRangeCompressionFlagsVALVE,
81063    ) -> Self {
81064        self.inner.rgb_ranges = value;
81065        self
81066    }
81067    #[inline]
81068    pub fn x_chroma_offsets(
81069        mut self,
81070        value: VideoEncodeRgbChromaOffsetFlagsVALVE,
81071    ) -> Self {
81072        self.inner.x_chroma_offsets = value;
81073        self
81074    }
81075    #[inline]
81076    pub fn y_chroma_offsets(
81077        mut self,
81078        value: VideoEncodeRgbChromaOffsetFlagsVALVE,
81079    ) -> Self {
81080        self.inner.y_chroma_offsets = value;
81081        self
81082    }
81083}
81084impl<'a> core::ops::Deref for VideoEncodeRgbConversionCapabilitiesVALVEBuilder<'a> {
81085    type Target = VideoEncodeRgbConversionCapabilitiesVALVE;
81086    #[inline]
81087    fn deref(&self) -> &Self::Target {
81088        &self.inner
81089    }
81090}
81091impl<'a> core::ops::DerefMut for VideoEncodeRgbConversionCapabilitiesVALVEBuilder<'a> {
81092    #[inline]
81093    fn deref_mut(&mut self) -> &mut Self::Target {
81094        &mut self.inner
81095    }
81096}
81097///Builder for [`VideoEncodeProfileRgbConversionInfoVALVE`] with lifetime-tied pNext safety.
81098pub struct VideoEncodeProfileRgbConversionInfoVALVEBuilder<'a> {
81099    inner: VideoEncodeProfileRgbConversionInfoVALVE,
81100    _marker: core::marker::PhantomData<&'a ()>,
81101}
81102impl VideoEncodeProfileRgbConversionInfoVALVE {
81103    /// Start building this struct; `s_type` is already set to the correct variant.
81104    #[inline]
81105    pub fn builder<'a>() -> VideoEncodeProfileRgbConversionInfoVALVEBuilder<'a> {
81106        VideoEncodeProfileRgbConversionInfoVALVEBuilder {
81107            inner: VideoEncodeProfileRgbConversionInfoVALVE {
81108                s_type: StructureType::from_raw(1000390002i32),
81109                ..Default::default()
81110            },
81111            _marker: core::marker::PhantomData,
81112        }
81113    }
81114}
81115impl<'a> VideoEncodeProfileRgbConversionInfoVALVEBuilder<'a> {
81116    #[inline]
81117    pub fn perform_encode_rgb_conversion(mut self, value: bool) -> Self {
81118        self.inner.perform_encode_rgb_conversion = value as u32;
81119        self
81120    }
81121    ///Prepend a struct to the pNext chain. See [`VideoEncodeProfileRgbConversionInfoVALVE`]'s **Extended By** section for valid types.
81122    #[inline]
81123    pub fn push_next<T: ExtendsVideoEncodeProfileRgbConversionInfoVALVE>(
81124        mut self,
81125        next: &'a mut T,
81126    ) -> Self {
81127        unsafe {
81128            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
81129            (*next_ptr).p_next = self.inner.p_next as *mut _;
81130            self.inner.p_next = <*mut BaseOutStructure>::cast::<
81131                core::ffi::c_void,
81132            >(next_ptr) as *const _;
81133        }
81134        self
81135    }
81136}
81137impl<'a> core::ops::Deref for VideoEncodeProfileRgbConversionInfoVALVEBuilder<'a> {
81138    type Target = VideoEncodeProfileRgbConversionInfoVALVE;
81139    #[inline]
81140    fn deref(&self) -> &Self::Target {
81141        &self.inner
81142    }
81143}
81144impl<'a> core::ops::DerefMut for VideoEncodeProfileRgbConversionInfoVALVEBuilder<'a> {
81145    #[inline]
81146    fn deref_mut(&mut self) -> &mut Self::Target {
81147        &mut self.inner
81148    }
81149}
81150///Builder for [`VideoEncodeSessionRgbConversionCreateInfoVALVE`] with lifetime-tied pNext safety.
81151pub struct VideoEncodeSessionRgbConversionCreateInfoVALVEBuilder<'a> {
81152    inner: VideoEncodeSessionRgbConversionCreateInfoVALVE,
81153    _marker: core::marker::PhantomData<&'a ()>,
81154}
81155impl VideoEncodeSessionRgbConversionCreateInfoVALVE {
81156    /// Start building this struct; `s_type` is already set to the correct variant.
81157    #[inline]
81158    pub fn builder<'a>() -> VideoEncodeSessionRgbConversionCreateInfoVALVEBuilder<'a> {
81159        VideoEncodeSessionRgbConversionCreateInfoVALVEBuilder {
81160            inner: VideoEncodeSessionRgbConversionCreateInfoVALVE {
81161                s_type: StructureType::from_raw(1000390003i32),
81162                ..Default::default()
81163            },
81164            _marker: core::marker::PhantomData,
81165        }
81166    }
81167}
81168impl<'a> VideoEncodeSessionRgbConversionCreateInfoVALVEBuilder<'a> {
81169    #[inline]
81170    pub fn rgb_model(
81171        mut self,
81172        value: VideoEncodeRgbModelConversionFlagBitsVALVE,
81173    ) -> Self {
81174        self.inner.rgb_model = value;
81175        self
81176    }
81177    #[inline]
81178    pub fn rgb_range(
81179        mut self,
81180        value: VideoEncodeRgbRangeCompressionFlagBitsVALVE,
81181    ) -> Self {
81182        self.inner.rgb_range = value;
81183        self
81184    }
81185    #[inline]
81186    pub fn x_chroma_offset(
81187        mut self,
81188        value: VideoEncodeRgbChromaOffsetFlagBitsVALVE,
81189    ) -> Self {
81190        self.inner.x_chroma_offset = value;
81191        self
81192    }
81193    #[inline]
81194    pub fn y_chroma_offset(
81195        mut self,
81196        value: VideoEncodeRgbChromaOffsetFlagBitsVALVE,
81197    ) -> Self {
81198        self.inner.y_chroma_offset = value;
81199        self
81200    }
81201    ///Prepend a struct to the pNext chain. See [`VideoEncodeSessionRgbConversionCreateInfoVALVE`]'s **Extended By** section for valid types.
81202    #[inline]
81203    pub fn push_next<T: ExtendsVideoEncodeSessionRgbConversionCreateInfoVALVE>(
81204        mut self,
81205        next: &'a mut T,
81206    ) -> Self {
81207        unsafe {
81208            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
81209            (*next_ptr).p_next = self.inner.p_next as *mut _;
81210            self.inner.p_next = <*mut BaseOutStructure>::cast::<
81211                core::ffi::c_void,
81212            >(next_ptr) as *const _;
81213        }
81214        self
81215    }
81216}
81217impl<'a> core::ops::Deref for VideoEncodeSessionRgbConversionCreateInfoVALVEBuilder<'a> {
81218    type Target = VideoEncodeSessionRgbConversionCreateInfoVALVE;
81219    #[inline]
81220    fn deref(&self) -> &Self::Target {
81221        &self.inner
81222    }
81223}
81224impl<'a> core::ops::DerefMut
81225for VideoEncodeSessionRgbConversionCreateInfoVALVEBuilder<'a> {
81226    #[inline]
81227    fn deref_mut(&mut self) -> &mut Self::Target {
81228        &mut self.inner
81229    }
81230}
81231///Builder for [`PhysicalDeviceShader64BitIndexingFeaturesEXT`] with lifetime-tied pNext safety.
81232pub struct PhysicalDeviceShader64BitIndexingFeaturesEXTBuilder<'a> {
81233    inner: PhysicalDeviceShader64BitIndexingFeaturesEXT,
81234    _marker: core::marker::PhantomData<&'a ()>,
81235}
81236impl PhysicalDeviceShader64BitIndexingFeaturesEXT {
81237    /// Start building this struct; `s_type` is already set to the correct variant.
81238    #[inline]
81239    pub fn builder<'a>() -> PhysicalDeviceShader64BitIndexingFeaturesEXTBuilder<'a> {
81240        PhysicalDeviceShader64BitIndexingFeaturesEXTBuilder {
81241            inner: PhysicalDeviceShader64BitIndexingFeaturesEXT {
81242                s_type: StructureType::from_raw(1000627000i32),
81243                ..Default::default()
81244            },
81245            _marker: core::marker::PhantomData,
81246        }
81247    }
81248}
81249impl<'a> PhysicalDeviceShader64BitIndexingFeaturesEXTBuilder<'a> {
81250    #[inline]
81251    pub fn shader64_bit_indexing(mut self, value: bool) -> Self {
81252        self.inner.shader64_bit_indexing = value as u32;
81253        self
81254    }
81255    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShader64BitIndexingFeaturesEXT`]'s **Extended By** section for valid types.
81256    #[inline]
81257    pub fn push_next<T: ExtendsPhysicalDeviceShader64BitIndexingFeaturesEXT>(
81258        mut self,
81259        next: &'a mut T,
81260    ) -> Self {
81261        unsafe {
81262            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
81263            (*next_ptr).p_next = self.inner.p_next as *mut _;
81264            self.inner.p_next = <*mut BaseOutStructure>::cast::<
81265                core::ffi::c_void,
81266            >(next_ptr);
81267        }
81268        self
81269    }
81270}
81271impl<'a> core::ops::Deref for PhysicalDeviceShader64BitIndexingFeaturesEXTBuilder<'a> {
81272    type Target = PhysicalDeviceShader64BitIndexingFeaturesEXT;
81273    #[inline]
81274    fn deref(&self) -> &Self::Target {
81275        &self.inner
81276    }
81277}
81278impl<'a> core::ops::DerefMut
81279for PhysicalDeviceShader64BitIndexingFeaturesEXTBuilder<'a> {
81280    #[inline]
81281    fn deref_mut(&mut self) -> &mut Self::Target {
81282        &mut self.inner
81283    }
81284}
81285///Builder for [`NativeBufferUsageOHOS`] with lifetime-tied pNext safety.
81286pub struct NativeBufferUsageOHOSBuilder<'a> {
81287    inner: NativeBufferUsageOHOS,
81288    _marker: core::marker::PhantomData<&'a ()>,
81289}
81290impl NativeBufferUsageOHOS {
81291    /// Start building this struct; `s_type` is already set to the correct variant.
81292    #[inline]
81293    pub fn builder<'a>() -> NativeBufferUsageOHOSBuilder<'a> {
81294        NativeBufferUsageOHOSBuilder {
81295            inner: NativeBufferUsageOHOS {
81296                s_type: StructureType::from_raw(1000452000i32),
81297                ..Default::default()
81298            },
81299            _marker: core::marker::PhantomData,
81300        }
81301    }
81302}
81303impl<'a> NativeBufferUsageOHOSBuilder<'a> {
81304    #[inline]
81305    pub fn ohos_native_buffer_usage(mut self, value: u64) -> Self {
81306        self.inner.ohos_native_buffer_usage = value;
81307        self
81308    }
81309}
81310impl<'a> core::ops::Deref for NativeBufferUsageOHOSBuilder<'a> {
81311    type Target = NativeBufferUsageOHOS;
81312    #[inline]
81313    fn deref(&self) -> &Self::Target {
81314        &self.inner
81315    }
81316}
81317impl<'a> core::ops::DerefMut for NativeBufferUsageOHOSBuilder<'a> {
81318    #[inline]
81319    fn deref_mut(&mut self) -> &mut Self::Target {
81320        &mut self.inner
81321    }
81322}
81323///Builder for [`NativeBufferPropertiesOHOS`] with lifetime-tied pNext safety.
81324pub struct NativeBufferPropertiesOHOSBuilder<'a> {
81325    inner: NativeBufferPropertiesOHOS,
81326    _marker: core::marker::PhantomData<&'a ()>,
81327}
81328impl NativeBufferPropertiesOHOS {
81329    /// Start building this struct; `s_type` is already set to the correct variant.
81330    #[inline]
81331    pub fn builder<'a>() -> NativeBufferPropertiesOHOSBuilder<'a> {
81332        NativeBufferPropertiesOHOSBuilder {
81333            inner: NativeBufferPropertiesOHOS {
81334                s_type: StructureType::from_raw(1000452001i32),
81335                ..Default::default()
81336            },
81337            _marker: core::marker::PhantomData,
81338        }
81339    }
81340}
81341impl<'a> NativeBufferPropertiesOHOSBuilder<'a> {
81342    #[inline]
81343    pub fn allocation_size(mut self, value: u64) -> Self {
81344        self.inner.allocation_size = value;
81345        self
81346    }
81347    #[inline]
81348    pub fn memory_type_bits(mut self, value: u32) -> Self {
81349        self.inner.memory_type_bits = value;
81350        self
81351    }
81352}
81353impl<'a> core::ops::Deref for NativeBufferPropertiesOHOSBuilder<'a> {
81354    type Target = NativeBufferPropertiesOHOS;
81355    #[inline]
81356    fn deref(&self) -> &Self::Target {
81357        &self.inner
81358    }
81359}
81360impl<'a> core::ops::DerefMut for NativeBufferPropertiesOHOSBuilder<'a> {
81361    #[inline]
81362    fn deref_mut(&mut self) -> &mut Self::Target {
81363        &mut self.inner
81364    }
81365}
81366///Builder for [`NativeBufferFormatPropertiesOHOS`] with lifetime-tied pNext safety.
81367pub struct NativeBufferFormatPropertiesOHOSBuilder<'a> {
81368    inner: NativeBufferFormatPropertiesOHOS,
81369    _marker: core::marker::PhantomData<&'a ()>,
81370}
81371impl NativeBufferFormatPropertiesOHOS {
81372    /// Start building this struct; `s_type` is already set to the correct variant.
81373    #[inline]
81374    pub fn builder<'a>() -> NativeBufferFormatPropertiesOHOSBuilder<'a> {
81375        NativeBufferFormatPropertiesOHOSBuilder {
81376            inner: NativeBufferFormatPropertiesOHOS {
81377                s_type: StructureType::from_raw(1000452002i32),
81378                ..Default::default()
81379            },
81380            _marker: core::marker::PhantomData,
81381        }
81382    }
81383}
81384impl<'a> NativeBufferFormatPropertiesOHOSBuilder<'a> {
81385    #[inline]
81386    pub fn format(mut self, value: Format) -> Self {
81387        self.inner.format = value;
81388        self
81389    }
81390    #[inline]
81391    pub fn external_format(mut self, value: u64) -> Self {
81392        self.inner.external_format = value;
81393        self
81394    }
81395    #[inline]
81396    pub fn format_features(mut self, value: FormatFeatureFlags) -> Self {
81397        self.inner.format_features = value;
81398        self
81399    }
81400    #[inline]
81401    pub fn sampler_ycbcr_conversion_components(
81402        mut self,
81403        value: ComponentMapping,
81404    ) -> Self {
81405        self.inner.sampler_ycbcr_conversion_components = value;
81406        self
81407    }
81408    #[inline]
81409    pub fn suggested_ycbcr_model(mut self, value: SamplerYcbcrModelConversion) -> Self {
81410        self.inner.suggested_ycbcr_model = value;
81411        self
81412    }
81413    #[inline]
81414    pub fn suggested_ycbcr_range(mut self, value: SamplerYcbcrRange) -> Self {
81415        self.inner.suggested_ycbcr_range = value;
81416        self
81417    }
81418    #[inline]
81419    pub fn suggested_x_chroma_offset(mut self, value: ChromaLocation) -> Self {
81420        self.inner.suggested_x_chroma_offset = value;
81421        self
81422    }
81423    #[inline]
81424    pub fn suggested_y_chroma_offset(mut self, value: ChromaLocation) -> Self {
81425        self.inner.suggested_y_chroma_offset = value;
81426        self
81427    }
81428}
81429impl<'a> core::ops::Deref for NativeBufferFormatPropertiesOHOSBuilder<'a> {
81430    type Target = NativeBufferFormatPropertiesOHOS;
81431    #[inline]
81432    fn deref(&self) -> &Self::Target {
81433        &self.inner
81434    }
81435}
81436impl<'a> core::ops::DerefMut for NativeBufferFormatPropertiesOHOSBuilder<'a> {
81437    #[inline]
81438    fn deref_mut(&mut self) -> &mut Self::Target {
81439        &mut self.inner
81440    }
81441}
81442///Builder for [`ImportNativeBufferInfoOHOS`] with lifetime-tied pNext safety.
81443pub struct ImportNativeBufferInfoOHOSBuilder<'a> {
81444    inner: ImportNativeBufferInfoOHOS,
81445    _marker: core::marker::PhantomData<&'a ()>,
81446}
81447impl ImportNativeBufferInfoOHOS {
81448    /// Start building this struct; `s_type` is already set to the correct variant.
81449    #[inline]
81450    pub fn builder<'a>() -> ImportNativeBufferInfoOHOSBuilder<'a> {
81451        ImportNativeBufferInfoOHOSBuilder {
81452            inner: ImportNativeBufferInfoOHOS {
81453                s_type: StructureType::from_raw(1000452003i32),
81454                ..Default::default()
81455            },
81456            _marker: core::marker::PhantomData,
81457        }
81458    }
81459}
81460impl<'a> ImportNativeBufferInfoOHOSBuilder<'a> {
81461    #[inline]
81462    pub fn buffer(mut self, value: *mut core::ffi::c_void) -> Self {
81463        self.inner.buffer = value;
81464        self
81465    }
81466    ///Prepend a struct to the pNext chain. See [`ImportNativeBufferInfoOHOS`]'s **Extended By** section for valid types.
81467    #[inline]
81468    pub fn push_next<T: ExtendsImportNativeBufferInfoOHOS>(
81469        mut self,
81470        next: &'a mut T,
81471    ) -> Self {
81472        unsafe {
81473            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
81474            (*next_ptr).p_next = self.inner.p_next as *mut _;
81475            self.inner.p_next = <*mut BaseOutStructure>::cast::<
81476                core::ffi::c_void,
81477            >(next_ptr) as *const _;
81478        }
81479        self
81480    }
81481}
81482impl<'a> core::ops::Deref for ImportNativeBufferInfoOHOSBuilder<'a> {
81483    type Target = ImportNativeBufferInfoOHOS;
81484    #[inline]
81485    fn deref(&self) -> &Self::Target {
81486        &self.inner
81487    }
81488}
81489impl<'a> core::ops::DerefMut for ImportNativeBufferInfoOHOSBuilder<'a> {
81490    #[inline]
81491    fn deref_mut(&mut self) -> &mut Self::Target {
81492        &mut self.inner
81493    }
81494}
81495///Builder for [`MemoryGetNativeBufferInfoOHOS`] with lifetime-tied pNext safety.
81496pub struct MemoryGetNativeBufferInfoOHOSBuilder<'a> {
81497    inner: MemoryGetNativeBufferInfoOHOS,
81498    _marker: core::marker::PhantomData<&'a ()>,
81499}
81500impl MemoryGetNativeBufferInfoOHOS {
81501    /// Start building this struct; `s_type` is already set to the correct variant.
81502    #[inline]
81503    pub fn builder<'a>() -> MemoryGetNativeBufferInfoOHOSBuilder<'a> {
81504        MemoryGetNativeBufferInfoOHOSBuilder {
81505            inner: MemoryGetNativeBufferInfoOHOS {
81506                s_type: StructureType::from_raw(1000452004i32),
81507                ..Default::default()
81508            },
81509            _marker: core::marker::PhantomData,
81510        }
81511    }
81512}
81513impl<'a> MemoryGetNativeBufferInfoOHOSBuilder<'a> {
81514    #[inline]
81515    pub fn memory(mut self, value: DeviceMemory) -> Self {
81516        self.inner.memory = value;
81517        self
81518    }
81519    ///Prepend a struct to the pNext chain. See [`MemoryGetNativeBufferInfoOHOS`]'s **Extended By** section for valid types.
81520    #[inline]
81521    pub fn push_next<T: ExtendsMemoryGetNativeBufferInfoOHOS>(
81522        mut self,
81523        next: &'a mut T,
81524    ) -> Self {
81525        unsafe {
81526            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
81527            (*next_ptr).p_next = self.inner.p_next as *mut _;
81528            self.inner.p_next = <*mut BaseOutStructure>::cast::<
81529                core::ffi::c_void,
81530            >(next_ptr) as *const _;
81531        }
81532        self
81533    }
81534}
81535impl<'a> core::ops::Deref for MemoryGetNativeBufferInfoOHOSBuilder<'a> {
81536    type Target = MemoryGetNativeBufferInfoOHOS;
81537    #[inline]
81538    fn deref(&self) -> &Self::Target {
81539        &self.inner
81540    }
81541}
81542impl<'a> core::ops::DerefMut for MemoryGetNativeBufferInfoOHOSBuilder<'a> {
81543    #[inline]
81544    fn deref_mut(&mut self) -> &mut Self::Target {
81545        &mut self.inner
81546    }
81547}
81548///Builder for [`ExternalFormatOHOS`] with lifetime-tied pNext safety.
81549pub struct ExternalFormatOHOSBuilder<'a> {
81550    inner: ExternalFormatOHOS,
81551    _marker: core::marker::PhantomData<&'a ()>,
81552}
81553impl ExternalFormatOHOS {
81554    /// Start building this struct; `s_type` is already set to the correct variant.
81555    #[inline]
81556    pub fn builder<'a>() -> ExternalFormatOHOSBuilder<'a> {
81557        ExternalFormatOHOSBuilder {
81558            inner: ExternalFormatOHOS {
81559                s_type: StructureType::from_raw(1000452005i32),
81560                ..Default::default()
81561            },
81562            _marker: core::marker::PhantomData,
81563        }
81564    }
81565}
81566impl<'a> ExternalFormatOHOSBuilder<'a> {
81567    #[inline]
81568    pub fn external_format(mut self, value: u64) -> Self {
81569        self.inner.external_format = value;
81570        self
81571    }
81572    ///Prepend a struct to the pNext chain. See [`ExternalFormatOHOS`]'s **Extended By** section for valid types.
81573    #[inline]
81574    pub fn push_next<T: ExtendsExternalFormatOHOS>(mut self, next: &'a mut T) -> Self {
81575        unsafe {
81576            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
81577            (*next_ptr).p_next = self.inner.p_next as *mut _;
81578            self.inner.p_next = <*mut BaseOutStructure>::cast::<
81579                core::ffi::c_void,
81580            >(next_ptr);
81581        }
81582        self
81583    }
81584}
81585impl<'a> core::ops::Deref for ExternalFormatOHOSBuilder<'a> {
81586    type Target = ExternalFormatOHOS;
81587    #[inline]
81588    fn deref(&self) -> &Self::Target {
81589        &self.inner
81590    }
81591}
81592impl<'a> core::ops::DerefMut for ExternalFormatOHOSBuilder<'a> {
81593    #[inline]
81594    fn deref_mut(&mut self) -> &mut Self::Target {
81595        &mut self.inner
81596    }
81597}
81598///Builder for [`PhysicalDevicePerformanceCountersByRegionFeaturesARM`] with lifetime-tied pNext safety.
81599pub struct PhysicalDevicePerformanceCountersByRegionFeaturesARMBuilder<'a> {
81600    inner: PhysicalDevicePerformanceCountersByRegionFeaturesARM,
81601    _marker: core::marker::PhantomData<&'a ()>,
81602}
81603impl PhysicalDevicePerformanceCountersByRegionFeaturesARM {
81604    /// Start building this struct; `s_type` is already set to the correct variant.
81605    #[inline]
81606    pub fn builder<'a>() -> PhysicalDevicePerformanceCountersByRegionFeaturesARMBuilder<
81607        'a,
81608    > {
81609        PhysicalDevicePerformanceCountersByRegionFeaturesARMBuilder {
81610            inner: PhysicalDevicePerformanceCountersByRegionFeaturesARM {
81611                s_type: StructureType::from_raw(1000605000i32),
81612                ..Default::default()
81613            },
81614            _marker: core::marker::PhantomData,
81615        }
81616    }
81617}
81618impl<'a> PhysicalDevicePerformanceCountersByRegionFeaturesARMBuilder<'a> {
81619    #[inline]
81620    pub fn performance_counters_by_region(mut self, value: bool) -> Self {
81621        self.inner.performance_counters_by_region = value as u32;
81622        self
81623    }
81624    ///Prepend a struct to the pNext chain. See [`PhysicalDevicePerformanceCountersByRegionFeaturesARM`]'s **Extended By** section for valid types.
81625    #[inline]
81626    pub fn push_next<T: ExtendsPhysicalDevicePerformanceCountersByRegionFeaturesARM>(
81627        mut self,
81628        next: &'a mut T,
81629    ) -> Self {
81630        unsafe {
81631            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
81632            (*next_ptr).p_next = self.inner.p_next as *mut _;
81633            self.inner.p_next = <*mut BaseOutStructure>::cast::<
81634                core::ffi::c_void,
81635            >(next_ptr);
81636        }
81637        self
81638    }
81639}
81640impl<'a> core::ops::Deref
81641for PhysicalDevicePerformanceCountersByRegionFeaturesARMBuilder<'a> {
81642    type Target = PhysicalDevicePerformanceCountersByRegionFeaturesARM;
81643    #[inline]
81644    fn deref(&self) -> &Self::Target {
81645        &self.inner
81646    }
81647}
81648impl<'a> core::ops::DerefMut
81649for PhysicalDevicePerformanceCountersByRegionFeaturesARMBuilder<'a> {
81650    #[inline]
81651    fn deref_mut(&mut self) -> &mut Self::Target {
81652        &mut self.inner
81653    }
81654}
81655///Builder for [`PhysicalDevicePerformanceCountersByRegionPropertiesARM`] with lifetime-tied pNext safety.
81656pub struct PhysicalDevicePerformanceCountersByRegionPropertiesARMBuilder<'a> {
81657    inner: PhysicalDevicePerformanceCountersByRegionPropertiesARM,
81658    _marker: core::marker::PhantomData<&'a ()>,
81659}
81660impl PhysicalDevicePerformanceCountersByRegionPropertiesARM {
81661    /// Start building this struct; `s_type` is already set to the correct variant.
81662    #[inline]
81663    pub fn builder<'a>() -> PhysicalDevicePerformanceCountersByRegionPropertiesARMBuilder<
81664        'a,
81665    > {
81666        PhysicalDevicePerformanceCountersByRegionPropertiesARMBuilder {
81667            inner: PhysicalDevicePerformanceCountersByRegionPropertiesARM {
81668                s_type: StructureType::from_raw(1000605001i32),
81669                ..Default::default()
81670            },
81671            _marker: core::marker::PhantomData,
81672        }
81673    }
81674}
81675impl<'a> PhysicalDevicePerformanceCountersByRegionPropertiesARMBuilder<'a> {
81676    #[inline]
81677    pub fn max_per_region_performance_counters(mut self, value: u32) -> Self {
81678        self.inner.max_per_region_performance_counters = value;
81679        self
81680    }
81681    #[inline]
81682    pub fn performance_counter_region_size(mut self, value: Extent2D) -> Self {
81683        self.inner.performance_counter_region_size = value;
81684        self
81685    }
81686    #[inline]
81687    pub fn row_stride_alignment(mut self, value: u32) -> Self {
81688        self.inner.row_stride_alignment = value;
81689        self
81690    }
81691    #[inline]
81692    pub fn region_alignment(mut self, value: u32) -> Self {
81693        self.inner.region_alignment = value;
81694        self
81695    }
81696    #[inline]
81697    pub fn identity_transform_order(mut self, value: bool) -> Self {
81698        self.inner.identity_transform_order = value as u32;
81699        self
81700    }
81701}
81702impl<'a> core::ops::Deref
81703for PhysicalDevicePerformanceCountersByRegionPropertiesARMBuilder<'a> {
81704    type Target = PhysicalDevicePerformanceCountersByRegionPropertiesARM;
81705    #[inline]
81706    fn deref(&self) -> &Self::Target {
81707        &self.inner
81708    }
81709}
81710impl<'a> core::ops::DerefMut
81711for PhysicalDevicePerformanceCountersByRegionPropertiesARMBuilder<'a> {
81712    #[inline]
81713    fn deref_mut(&mut self) -> &mut Self::Target {
81714        &mut self.inner
81715    }
81716}
81717///Builder for [`PerformanceCounterARM`] with lifetime-tied pNext safety.
81718pub struct PerformanceCounterARMBuilder<'a> {
81719    inner: PerformanceCounterARM,
81720    _marker: core::marker::PhantomData<&'a ()>,
81721}
81722impl PerformanceCounterARM {
81723    /// Start building this struct; `s_type` is already set to the correct variant.
81724    #[inline]
81725    pub fn builder<'a>() -> PerformanceCounterARMBuilder<'a> {
81726        PerformanceCounterARMBuilder {
81727            inner: PerformanceCounterARM {
81728                s_type: StructureType::from_raw(1000605002i32),
81729                ..Default::default()
81730            },
81731            _marker: core::marker::PhantomData,
81732        }
81733    }
81734}
81735impl<'a> PerformanceCounterARMBuilder<'a> {
81736    #[inline]
81737    pub fn counter_id(mut self, value: u32) -> Self {
81738        self.inner.counter_id = value;
81739        self
81740    }
81741}
81742impl<'a> core::ops::Deref for PerformanceCounterARMBuilder<'a> {
81743    type Target = PerformanceCounterARM;
81744    #[inline]
81745    fn deref(&self) -> &Self::Target {
81746        &self.inner
81747    }
81748}
81749impl<'a> core::ops::DerefMut for PerformanceCounterARMBuilder<'a> {
81750    #[inline]
81751    fn deref_mut(&mut self) -> &mut Self::Target {
81752        &mut self.inner
81753    }
81754}
81755///Builder for [`PerformanceCounterDescriptionARM`] with lifetime-tied pNext safety.
81756pub struct PerformanceCounterDescriptionARMBuilder<'a> {
81757    inner: PerformanceCounterDescriptionARM,
81758    _marker: core::marker::PhantomData<&'a ()>,
81759}
81760impl PerformanceCounterDescriptionARM {
81761    /// Start building this struct; `s_type` is already set to the correct variant.
81762    #[inline]
81763    pub fn builder<'a>() -> PerformanceCounterDescriptionARMBuilder<'a> {
81764        PerformanceCounterDescriptionARMBuilder {
81765            inner: PerformanceCounterDescriptionARM {
81766                s_type: StructureType::from_raw(1000605003i32),
81767                ..Default::default()
81768            },
81769            _marker: core::marker::PhantomData,
81770        }
81771    }
81772}
81773impl<'a> PerformanceCounterDescriptionARMBuilder<'a> {
81774    #[inline]
81775    pub fn flags(mut self, value: PerformanceCounterDescriptionFlagsARM) -> Self {
81776        self.inner.flags = value;
81777        self
81778    }
81779    #[inline]
81780    pub fn name(
81781        mut self,
81782        value: crate::StringArray<{ MAX_DESCRIPTION_SIZE as usize }>,
81783    ) -> Self {
81784        self.inner.name = value;
81785        self
81786    }
81787}
81788impl<'a> core::ops::Deref for PerformanceCounterDescriptionARMBuilder<'a> {
81789    type Target = PerformanceCounterDescriptionARM;
81790    #[inline]
81791    fn deref(&self) -> &Self::Target {
81792        &self.inner
81793    }
81794}
81795impl<'a> core::ops::DerefMut for PerformanceCounterDescriptionARMBuilder<'a> {
81796    #[inline]
81797    fn deref_mut(&mut self) -> &mut Self::Target {
81798        &mut self.inner
81799    }
81800}
81801///Builder for [`RenderPassPerformanceCountersByRegionBeginInfoARM`] with lifetime-tied pNext safety.
81802pub struct RenderPassPerformanceCountersByRegionBeginInfoARMBuilder<'a> {
81803    inner: RenderPassPerformanceCountersByRegionBeginInfoARM,
81804    _marker: core::marker::PhantomData<&'a ()>,
81805}
81806impl RenderPassPerformanceCountersByRegionBeginInfoARM {
81807    /// Start building this struct; `s_type` is already set to the correct variant.
81808    #[inline]
81809    pub fn builder<'a>() -> RenderPassPerformanceCountersByRegionBeginInfoARMBuilder<
81810        'a,
81811    > {
81812        RenderPassPerformanceCountersByRegionBeginInfoARMBuilder {
81813            inner: RenderPassPerformanceCountersByRegionBeginInfoARM {
81814                s_type: StructureType::from_raw(1000605004i32),
81815                ..Default::default()
81816            },
81817            _marker: core::marker::PhantomData,
81818        }
81819    }
81820}
81821impl<'a> RenderPassPerformanceCountersByRegionBeginInfoARMBuilder<'a> {
81822    #[inline]
81823    pub fn counter_addresses(mut self, slice: &'a [u64]) -> Self {
81824        self.inner.counter_address_count = slice.len() as u32;
81825        self.inner.p_counter_addresses = slice.as_ptr();
81826        self
81827    }
81828    #[inline]
81829    pub fn serialize_regions(mut self, value: bool) -> Self {
81830        self.inner.serialize_regions = value as u32;
81831        self
81832    }
81833    #[inline]
81834    pub fn counter_indices(mut self, slice: &'a mut [u32]) -> Self {
81835        self.inner.counter_index_count = slice.len() as u32;
81836        self.inner.p_counter_indices = slice.as_mut_ptr();
81837        self
81838    }
81839    ///Prepend a struct to the pNext chain. See [`RenderPassPerformanceCountersByRegionBeginInfoARM`]'s **Extended By** section for valid types.
81840    #[inline]
81841    pub fn push_next<T: ExtendsRenderPassPerformanceCountersByRegionBeginInfoARM>(
81842        mut self,
81843        next: &'a mut T,
81844    ) -> Self {
81845        unsafe {
81846            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
81847            (*next_ptr).p_next = self.inner.p_next as *mut _;
81848            self.inner.p_next = <*mut BaseOutStructure>::cast::<
81849                core::ffi::c_void,
81850            >(next_ptr);
81851        }
81852        self
81853    }
81854}
81855impl<'a> core::ops::Deref
81856for RenderPassPerformanceCountersByRegionBeginInfoARMBuilder<'a> {
81857    type Target = RenderPassPerformanceCountersByRegionBeginInfoARM;
81858    #[inline]
81859    fn deref(&self) -> &Self::Target {
81860        &self.inner
81861    }
81862}
81863impl<'a> core::ops::DerefMut
81864for RenderPassPerformanceCountersByRegionBeginInfoARMBuilder<'a> {
81865    #[inline]
81866    fn deref_mut(&mut self) -> &mut Self::Target {
81867        &mut self.inner
81868    }
81869}
81870///Builder for [`ComputeOccupancyPriorityParametersNV`] with lifetime-tied pNext safety.
81871pub struct ComputeOccupancyPriorityParametersNVBuilder<'a> {
81872    inner: ComputeOccupancyPriorityParametersNV,
81873    _marker: core::marker::PhantomData<&'a ()>,
81874}
81875impl ComputeOccupancyPriorityParametersNV {
81876    /// Start building this struct; `s_type` is already set to the correct variant.
81877    #[inline]
81878    pub fn builder<'a>() -> ComputeOccupancyPriorityParametersNVBuilder<'a> {
81879        ComputeOccupancyPriorityParametersNVBuilder {
81880            inner: ComputeOccupancyPriorityParametersNV {
81881                s_type: StructureType::from_raw(1000645000i32),
81882                ..Default::default()
81883            },
81884            _marker: core::marker::PhantomData,
81885        }
81886    }
81887}
81888impl<'a> ComputeOccupancyPriorityParametersNVBuilder<'a> {
81889    #[inline]
81890    pub fn occupancy_priority(mut self, value: f32) -> Self {
81891        self.inner.occupancy_priority = value;
81892        self
81893    }
81894    #[inline]
81895    pub fn occupancy_throttling(mut self, value: f32) -> Self {
81896        self.inner.occupancy_throttling = value;
81897        self
81898    }
81899    ///Prepend a struct to the pNext chain. See [`ComputeOccupancyPriorityParametersNV`]'s **Extended By** section for valid types.
81900    #[inline]
81901    pub fn push_next<T: ExtendsComputeOccupancyPriorityParametersNV>(
81902        mut self,
81903        next: &'a mut T,
81904    ) -> Self {
81905        unsafe {
81906            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
81907            (*next_ptr).p_next = self.inner.p_next as *mut _;
81908            self.inner.p_next = <*mut BaseOutStructure>::cast::<
81909                core::ffi::c_void,
81910            >(next_ptr) as *const _;
81911        }
81912        self
81913    }
81914}
81915impl<'a> core::ops::Deref for ComputeOccupancyPriorityParametersNVBuilder<'a> {
81916    type Target = ComputeOccupancyPriorityParametersNV;
81917    #[inline]
81918    fn deref(&self) -> &Self::Target {
81919        &self.inner
81920    }
81921}
81922impl<'a> core::ops::DerefMut for ComputeOccupancyPriorityParametersNVBuilder<'a> {
81923    #[inline]
81924    fn deref_mut(&mut self) -> &mut Self::Target {
81925        &mut self.inner
81926    }
81927}
81928///Builder for [`PhysicalDeviceComputeOccupancyPriorityFeaturesNV`] with lifetime-tied pNext safety.
81929pub struct PhysicalDeviceComputeOccupancyPriorityFeaturesNVBuilder<'a> {
81930    inner: PhysicalDeviceComputeOccupancyPriorityFeaturesNV,
81931    _marker: core::marker::PhantomData<&'a ()>,
81932}
81933impl PhysicalDeviceComputeOccupancyPriorityFeaturesNV {
81934    /// Start building this struct; `s_type` is already set to the correct variant.
81935    #[inline]
81936    pub fn builder<'a>() -> PhysicalDeviceComputeOccupancyPriorityFeaturesNVBuilder<'a> {
81937        PhysicalDeviceComputeOccupancyPriorityFeaturesNVBuilder {
81938            inner: PhysicalDeviceComputeOccupancyPriorityFeaturesNV {
81939                s_type: StructureType::from_raw(1000645001i32),
81940                ..Default::default()
81941            },
81942            _marker: core::marker::PhantomData,
81943        }
81944    }
81945}
81946impl<'a> PhysicalDeviceComputeOccupancyPriorityFeaturesNVBuilder<'a> {
81947    #[inline]
81948    pub fn compute_occupancy_priority(mut self, value: bool) -> Self {
81949        self.inner.compute_occupancy_priority = value as u32;
81950        self
81951    }
81952    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceComputeOccupancyPriorityFeaturesNV`]'s **Extended By** section for valid types.
81953    #[inline]
81954    pub fn push_next<T: ExtendsPhysicalDeviceComputeOccupancyPriorityFeaturesNV>(
81955        mut self,
81956        next: &'a mut T,
81957    ) -> Self {
81958        unsafe {
81959            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
81960            (*next_ptr).p_next = self.inner.p_next as *mut _;
81961            self.inner.p_next = <*mut BaseOutStructure>::cast::<
81962                core::ffi::c_void,
81963            >(next_ptr);
81964        }
81965        self
81966    }
81967}
81968impl<'a> core::ops::Deref
81969for PhysicalDeviceComputeOccupancyPriorityFeaturesNVBuilder<'a> {
81970    type Target = PhysicalDeviceComputeOccupancyPriorityFeaturesNV;
81971    #[inline]
81972    fn deref(&self) -> &Self::Target {
81973        &self.inner
81974    }
81975}
81976impl<'a> core::ops::DerefMut
81977for PhysicalDeviceComputeOccupancyPriorityFeaturesNVBuilder<'a> {
81978    #[inline]
81979    fn deref_mut(&mut self) -> &mut Self::Target {
81980        &mut self.inner
81981    }
81982}
81983///Builder for [`PhysicalDeviceShaderLongVectorFeaturesEXT`] with lifetime-tied pNext safety.
81984pub struct PhysicalDeviceShaderLongVectorFeaturesEXTBuilder<'a> {
81985    inner: PhysicalDeviceShaderLongVectorFeaturesEXT,
81986    _marker: core::marker::PhantomData<&'a ()>,
81987}
81988impl PhysicalDeviceShaderLongVectorFeaturesEXT {
81989    /// Start building this struct; `s_type` is already set to the correct variant.
81990    #[inline]
81991    pub fn builder<'a>() -> PhysicalDeviceShaderLongVectorFeaturesEXTBuilder<'a> {
81992        PhysicalDeviceShaderLongVectorFeaturesEXTBuilder {
81993            inner: PhysicalDeviceShaderLongVectorFeaturesEXT {
81994                s_type: StructureType::from_raw(1000635000i32),
81995                ..Default::default()
81996            },
81997            _marker: core::marker::PhantomData,
81998        }
81999    }
82000}
82001impl<'a> PhysicalDeviceShaderLongVectorFeaturesEXTBuilder<'a> {
82002    #[inline]
82003    pub fn long_vector(mut self, value: bool) -> Self {
82004        self.inner.long_vector = value as u32;
82005        self
82006    }
82007    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderLongVectorFeaturesEXT`]'s **Extended By** section for valid types.
82008    #[inline]
82009    pub fn push_next<T: ExtendsPhysicalDeviceShaderLongVectorFeaturesEXT>(
82010        mut self,
82011        next: &'a mut T,
82012    ) -> Self {
82013        unsafe {
82014            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
82015            (*next_ptr).p_next = self.inner.p_next as *mut _;
82016            self.inner.p_next = <*mut BaseOutStructure>::cast::<
82017                core::ffi::c_void,
82018            >(next_ptr);
82019        }
82020        self
82021    }
82022}
82023impl<'a> core::ops::Deref for PhysicalDeviceShaderLongVectorFeaturesEXTBuilder<'a> {
82024    type Target = PhysicalDeviceShaderLongVectorFeaturesEXT;
82025    #[inline]
82026    fn deref(&self) -> &Self::Target {
82027        &self.inner
82028    }
82029}
82030impl<'a> core::ops::DerefMut for PhysicalDeviceShaderLongVectorFeaturesEXTBuilder<'a> {
82031    #[inline]
82032    fn deref_mut(&mut self) -> &mut Self::Target {
82033        &mut self.inner
82034    }
82035}
82036///Builder for [`PhysicalDeviceShaderLongVectorPropertiesEXT`] with lifetime-tied pNext safety.
82037pub struct PhysicalDeviceShaderLongVectorPropertiesEXTBuilder<'a> {
82038    inner: PhysicalDeviceShaderLongVectorPropertiesEXT,
82039    _marker: core::marker::PhantomData<&'a ()>,
82040}
82041impl PhysicalDeviceShaderLongVectorPropertiesEXT {
82042    /// Start building this struct; `s_type` is already set to the correct variant.
82043    #[inline]
82044    pub fn builder<'a>() -> PhysicalDeviceShaderLongVectorPropertiesEXTBuilder<'a> {
82045        PhysicalDeviceShaderLongVectorPropertiesEXTBuilder {
82046            inner: PhysicalDeviceShaderLongVectorPropertiesEXT {
82047                s_type: StructureType::from_raw(1000635001i32),
82048                ..Default::default()
82049            },
82050            _marker: core::marker::PhantomData,
82051        }
82052    }
82053}
82054impl<'a> PhysicalDeviceShaderLongVectorPropertiesEXTBuilder<'a> {
82055    #[inline]
82056    pub fn max_vector_components(mut self, value: u32) -> Self {
82057        self.inner.max_vector_components = value;
82058        self
82059    }
82060}
82061impl<'a> core::ops::Deref for PhysicalDeviceShaderLongVectorPropertiesEXTBuilder<'a> {
82062    type Target = PhysicalDeviceShaderLongVectorPropertiesEXT;
82063    #[inline]
82064    fn deref(&self) -> &Self::Target {
82065        &self.inner
82066    }
82067}
82068impl<'a> core::ops::DerefMut for PhysicalDeviceShaderLongVectorPropertiesEXTBuilder<'a> {
82069    #[inline]
82070    fn deref_mut(&mut self) -> &mut Self::Target {
82071        &mut self.inner
82072    }
82073}
82074///Builder for [`PhysicalDeviceTextureCompressionASTC3DFeaturesEXT`] with lifetime-tied pNext safety.
82075pub struct PhysicalDeviceTextureCompressionASTC3DFeaturesEXTBuilder<'a> {
82076    inner: PhysicalDeviceTextureCompressionASTC3DFeaturesEXT,
82077    _marker: core::marker::PhantomData<&'a ()>,
82078}
82079impl PhysicalDeviceTextureCompressionASTC3DFeaturesEXT {
82080    /// Start building this struct; `s_type` is already set to the correct variant.
82081    #[inline]
82082    pub fn builder<'a>() -> PhysicalDeviceTextureCompressionASTC3DFeaturesEXTBuilder<
82083        'a,
82084    > {
82085        PhysicalDeviceTextureCompressionASTC3DFeaturesEXTBuilder {
82086            inner: PhysicalDeviceTextureCompressionASTC3DFeaturesEXT {
82087                s_type: StructureType::from_raw(1000288000i32),
82088                ..Default::default()
82089            },
82090            _marker: core::marker::PhantomData,
82091        }
82092    }
82093}
82094impl<'a> PhysicalDeviceTextureCompressionASTC3DFeaturesEXTBuilder<'a> {
82095    #[inline]
82096    pub fn texture_compression_astc_3d(mut self, value: bool) -> Self {
82097        self.inner.texture_compression_astc_3d = value as u32;
82098        self
82099    }
82100    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceTextureCompressionASTC3DFeaturesEXT`]'s **Extended By** section for valid types.
82101    #[inline]
82102    pub fn push_next<T: ExtendsPhysicalDeviceTextureCompressionASTC3DFeaturesEXT>(
82103        mut self,
82104        next: &'a mut T,
82105    ) -> Self {
82106        unsafe {
82107            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
82108            (*next_ptr).p_next = self.inner.p_next as *mut _;
82109            self.inner.p_next = <*mut BaseOutStructure>::cast::<
82110                core::ffi::c_void,
82111            >(next_ptr);
82112        }
82113        self
82114    }
82115}
82116impl<'a> core::ops::Deref
82117for PhysicalDeviceTextureCompressionASTC3DFeaturesEXTBuilder<'a> {
82118    type Target = PhysicalDeviceTextureCompressionASTC3DFeaturesEXT;
82119    #[inline]
82120    fn deref(&self) -> &Self::Target {
82121        &self.inner
82122    }
82123}
82124impl<'a> core::ops::DerefMut
82125for PhysicalDeviceTextureCompressionASTC3DFeaturesEXTBuilder<'a> {
82126    #[inline]
82127    fn deref_mut(&mut self) -> &mut Self::Target {
82128        &mut self.inner
82129    }
82130}
82131///Builder for [`PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT`] with lifetime-tied pNext safety.
82132pub struct PhysicalDeviceShaderSubgroupPartitionedFeaturesEXTBuilder<'a> {
82133    inner: PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT,
82134    _marker: core::marker::PhantomData<&'a ()>,
82135}
82136impl PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT {
82137    /// Start building this struct; `s_type` is already set to the correct variant.
82138    #[inline]
82139    pub fn builder<'a>() -> PhysicalDeviceShaderSubgroupPartitionedFeaturesEXTBuilder<
82140        'a,
82141    > {
82142        PhysicalDeviceShaderSubgroupPartitionedFeaturesEXTBuilder {
82143            inner: PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT {
82144                s_type: StructureType::from_raw(1000662000i32),
82145                ..Default::default()
82146            },
82147            _marker: core::marker::PhantomData,
82148        }
82149    }
82150}
82151impl<'a> PhysicalDeviceShaderSubgroupPartitionedFeaturesEXTBuilder<'a> {
82152    #[inline]
82153    pub fn shader_subgroup_partitioned(mut self, value: bool) -> Self {
82154        self.inner.shader_subgroup_partitioned = value as u32;
82155        self
82156    }
82157    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT`]'s **Extended By** section for valid types.
82158    #[inline]
82159    pub fn push_next<T: ExtendsPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT>(
82160        mut self,
82161        next: &'a mut T,
82162    ) -> Self {
82163        unsafe {
82164            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
82165            (*next_ptr).p_next = self.inner.p_next as *mut _;
82166            self.inner.p_next = <*mut BaseOutStructure>::cast::<
82167                core::ffi::c_void,
82168            >(next_ptr);
82169        }
82170        self
82171    }
82172}
82173impl<'a> core::ops::Deref
82174for PhysicalDeviceShaderSubgroupPartitionedFeaturesEXTBuilder<'a> {
82175    type Target = PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT;
82176    #[inline]
82177    fn deref(&self) -> &Self::Target {
82178        &self.inner
82179    }
82180}
82181impl<'a> core::ops::DerefMut
82182for PhysicalDeviceShaderSubgroupPartitionedFeaturesEXTBuilder<'a> {
82183    #[inline]
82184    fn deref_mut(&mut self) -> &mut Self::Target {
82185        &mut self.inner
82186    }
82187}
82188///Builder for [`HostAddressRangeEXT`].
82189pub struct HostAddressRangeEXTBuilder<'a> {
82190    inner: HostAddressRangeEXT,
82191    _marker: core::marker::PhantomData<&'a ()>,
82192}
82193impl HostAddressRangeEXT {
82194    /// Start building this struct.
82195    #[inline]
82196    pub fn builder<'a>() -> HostAddressRangeEXTBuilder<'a> {
82197        HostAddressRangeEXTBuilder {
82198            inner: HostAddressRangeEXT {
82199                ..Default::default()
82200            },
82201            _marker: core::marker::PhantomData,
82202        }
82203    }
82204}
82205impl<'a> HostAddressRangeEXTBuilder<'a> {
82206    #[inline]
82207    pub fn address(mut self, slice: &'a mut [core::ffi::c_void]) -> Self {
82208        self.inner.size = slice.len();
82209        self.inner.address = slice.as_mut_ptr();
82210        self
82211    }
82212}
82213impl<'a> core::ops::Deref for HostAddressRangeEXTBuilder<'a> {
82214    type Target = HostAddressRangeEXT;
82215    #[inline]
82216    fn deref(&self) -> &Self::Target {
82217        &self.inner
82218    }
82219}
82220impl<'a> core::ops::DerefMut for HostAddressRangeEXTBuilder<'a> {
82221    #[inline]
82222    fn deref_mut(&mut self) -> &mut Self::Target {
82223        &mut self.inner
82224    }
82225}
82226///Builder for [`HostAddressRangeConstEXT`].
82227pub struct HostAddressRangeConstEXTBuilder<'a> {
82228    inner: HostAddressRangeConstEXT,
82229    _marker: core::marker::PhantomData<&'a ()>,
82230}
82231impl HostAddressRangeConstEXT {
82232    /// Start building this struct.
82233    #[inline]
82234    pub fn builder<'a>() -> HostAddressRangeConstEXTBuilder<'a> {
82235        HostAddressRangeConstEXTBuilder {
82236            inner: HostAddressRangeConstEXT {
82237                ..Default::default()
82238            },
82239            _marker: core::marker::PhantomData,
82240        }
82241    }
82242}
82243impl<'a> HostAddressRangeConstEXTBuilder<'a> {
82244    #[inline]
82245    pub fn address(mut self, slice: &'a [core::ffi::c_void]) -> Self {
82246        self.inner.size = slice.len();
82247        self.inner.address = slice.as_ptr();
82248        self
82249    }
82250}
82251impl<'a> core::ops::Deref for HostAddressRangeConstEXTBuilder<'a> {
82252    type Target = HostAddressRangeConstEXT;
82253    #[inline]
82254    fn deref(&self) -> &Self::Target {
82255        &self.inner
82256    }
82257}
82258impl<'a> core::ops::DerefMut for HostAddressRangeConstEXTBuilder<'a> {
82259    #[inline]
82260    fn deref_mut(&mut self) -> &mut Self::Target {
82261        &mut self.inner
82262    }
82263}
82264///Builder for [`TexelBufferDescriptorInfoEXT`] with lifetime-tied pNext safety.
82265pub struct TexelBufferDescriptorInfoEXTBuilder<'a> {
82266    inner: TexelBufferDescriptorInfoEXT,
82267    _marker: core::marker::PhantomData<&'a ()>,
82268}
82269impl TexelBufferDescriptorInfoEXT {
82270    /// Start building this struct; `s_type` is already set to the correct variant.
82271    #[inline]
82272    pub fn builder<'a>() -> TexelBufferDescriptorInfoEXTBuilder<'a> {
82273        TexelBufferDescriptorInfoEXTBuilder {
82274            inner: TexelBufferDescriptorInfoEXT {
82275                s_type: StructureType::from_raw(1000135000i32),
82276                ..Default::default()
82277            },
82278            _marker: core::marker::PhantomData,
82279        }
82280    }
82281}
82282impl<'a> TexelBufferDescriptorInfoEXTBuilder<'a> {
82283    #[inline]
82284    pub fn format(mut self, value: Format) -> Self {
82285        self.inner.format = value;
82286        self
82287    }
82288    #[inline]
82289    pub fn address_range(mut self, value: DeviceAddressRangeEXT) -> Self {
82290        self.inner.address_range = value;
82291        self
82292    }
82293    ///Prepend a struct to the pNext chain. See [`TexelBufferDescriptorInfoEXT`]'s **Extended By** section for valid types.
82294    #[inline]
82295    pub fn push_next<T: ExtendsTexelBufferDescriptorInfoEXT>(
82296        mut self,
82297        next: &'a mut T,
82298    ) -> Self {
82299        unsafe {
82300            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
82301            (*next_ptr).p_next = self.inner.p_next as *mut _;
82302            self.inner.p_next = <*mut BaseOutStructure>::cast::<
82303                core::ffi::c_void,
82304            >(next_ptr) as *const _;
82305        }
82306        self
82307    }
82308}
82309impl<'a> core::ops::Deref for TexelBufferDescriptorInfoEXTBuilder<'a> {
82310    type Target = TexelBufferDescriptorInfoEXT;
82311    #[inline]
82312    fn deref(&self) -> &Self::Target {
82313        &self.inner
82314    }
82315}
82316impl<'a> core::ops::DerefMut for TexelBufferDescriptorInfoEXTBuilder<'a> {
82317    #[inline]
82318    fn deref_mut(&mut self) -> &mut Self::Target {
82319        &mut self.inner
82320    }
82321}
82322///Builder for [`ImageDescriptorInfoEXT`] with lifetime-tied pNext safety.
82323pub struct ImageDescriptorInfoEXTBuilder<'a> {
82324    inner: ImageDescriptorInfoEXT,
82325    _marker: core::marker::PhantomData<&'a ()>,
82326}
82327impl ImageDescriptorInfoEXT {
82328    /// Start building this struct; `s_type` is already set to the correct variant.
82329    #[inline]
82330    pub fn builder<'a>() -> ImageDescriptorInfoEXTBuilder<'a> {
82331        ImageDescriptorInfoEXTBuilder {
82332            inner: ImageDescriptorInfoEXT {
82333                s_type: StructureType::from_raw(1000135001i32),
82334                ..Default::default()
82335            },
82336            _marker: core::marker::PhantomData,
82337        }
82338    }
82339}
82340impl<'a> ImageDescriptorInfoEXTBuilder<'a> {
82341    #[inline]
82342    pub fn view(mut self, value: &'a ImageViewCreateInfo) -> Self {
82343        self.inner.p_view = value;
82344        self
82345    }
82346    #[inline]
82347    pub fn layout(mut self, value: ImageLayout) -> Self {
82348        self.inner.layout = value;
82349        self
82350    }
82351    ///Prepend a struct to the pNext chain. See [`ImageDescriptorInfoEXT`]'s **Extended By** section for valid types.
82352    #[inline]
82353    pub fn push_next<T: ExtendsImageDescriptorInfoEXT>(
82354        mut self,
82355        next: &'a mut T,
82356    ) -> Self {
82357        unsafe {
82358            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
82359            (*next_ptr).p_next = self.inner.p_next as *mut _;
82360            self.inner.p_next = <*mut BaseOutStructure>::cast::<
82361                core::ffi::c_void,
82362            >(next_ptr) as *const _;
82363        }
82364        self
82365    }
82366}
82367impl<'a> core::ops::Deref for ImageDescriptorInfoEXTBuilder<'a> {
82368    type Target = ImageDescriptorInfoEXT;
82369    #[inline]
82370    fn deref(&self) -> &Self::Target {
82371        &self.inner
82372    }
82373}
82374impl<'a> core::ops::DerefMut for ImageDescriptorInfoEXTBuilder<'a> {
82375    #[inline]
82376    fn deref_mut(&mut self) -> &mut Self::Target {
82377        &mut self.inner
82378    }
82379}
82380///Builder for [`ResourceDescriptorInfoEXT`] with lifetime-tied pNext safety.
82381pub struct ResourceDescriptorInfoEXTBuilder<'a> {
82382    inner: ResourceDescriptorInfoEXT,
82383    _marker: core::marker::PhantomData<&'a ()>,
82384}
82385impl ResourceDescriptorInfoEXT {
82386    /// Start building this struct; `s_type` is already set to the correct variant.
82387    #[inline]
82388    pub fn builder<'a>() -> ResourceDescriptorInfoEXTBuilder<'a> {
82389        ResourceDescriptorInfoEXTBuilder {
82390            inner: ResourceDescriptorInfoEXT {
82391                s_type: StructureType::from_raw(1000135002i32),
82392                ..Default::default()
82393            },
82394            _marker: core::marker::PhantomData,
82395        }
82396    }
82397}
82398impl<'a> ResourceDescriptorInfoEXTBuilder<'a> {
82399    #[inline]
82400    pub fn r#type(mut self, value: DescriptorType) -> Self {
82401        self.inner.r#type = value;
82402        self
82403    }
82404    #[inline]
82405    pub fn data(mut self, value: ResourceDescriptorDataEXT) -> Self {
82406        self.inner.data = value;
82407        self
82408    }
82409    ///Prepend a struct to the pNext chain. See [`ResourceDescriptorInfoEXT`]'s **Extended By** section for valid types.
82410    #[inline]
82411    pub fn push_next<T: ExtendsResourceDescriptorInfoEXT>(
82412        mut self,
82413        next: &'a mut T,
82414    ) -> Self {
82415        unsafe {
82416            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
82417            (*next_ptr).p_next = self.inner.p_next as *mut _;
82418            self.inner.p_next = <*mut BaseOutStructure>::cast::<
82419                core::ffi::c_void,
82420            >(next_ptr) as *const _;
82421        }
82422        self
82423    }
82424}
82425impl<'a> core::ops::Deref for ResourceDescriptorInfoEXTBuilder<'a> {
82426    type Target = ResourceDescriptorInfoEXT;
82427    #[inline]
82428    fn deref(&self) -> &Self::Target {
82429        &self.inner
82430    }
82431}
82432impl<'a> core::ops::DerefMut for ResourceDescriptorInfoEXTBuilder<'a> {
82433    #[inline]
82434    fn deref_mut(&mut self) -> &mut Self::Target {
82435        &mut self.inner
82436    }
82437}
82438///Builder for [`BindHeapInfoEXT`] with lifetime-tied pNext safety.
82439pub struct BindHeapInfoEXTBuilder<'a> {
82440    inner: BindHeapInfoEXT,
82441    _marker: core::marker::PhantomData<&'a ()>,
82442}
82443impl BindHeapInfoEXT {
82444    /// Start building this struct; `s_type` is already set to the correct variant.
82445    #[inline]
82446    pub fn builder<'a>() -> BindHeapInfoEXTBuilder<'a> {
82447        BindHeapInfoEXTBuilder {
82448            inner: BindHeapInfoEXT {
82449                s_type: StructureType::from_raw(1000135003i32),
82450                ..Default::default()
82451            },
82452            _marker: core::marker::PhantomData,
82453        }
82454    }
82455}
82456impl<'a> BindHeapInfoEXTBuilder<'a> {
82457    #[inline]
82458    pub fn heap_range(mut self, value: DeviceAddressRangeEXT) -> Self {
82459        self.inner.heap_range = value;
82460        self
82461    }
82462    #[inline]
82463    pub fn reserved_range_offset(mut self, value: u64) -> Self {
82464        self.inner.reserved_range_offset = value;
82465        self
82466    }
82467    #[inline]
82468    pub fn reserved_range_size(mut self, value: u64) -> Self {
82469        self.inner.reserved_range_size = value;
82470        self
82471    }
82472    ///Prepend a struct to the pNext chain. See [`BindHeapInfoEXT`]'s **Extended By** section for valid types.
82473    #[inline]
82474    pub fn push_next<T: ExtendsBindHeapInfoEXT>(mut self, next: &'a mut T) -> Self {
82475        unsafe {
82476            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
82477            (*next_ptr).p_next = self.inner.p_next as *mut _;
82478            self.inner.p_next = <*mut BaseOutStructure>::cast::<
82479                core::ffi::c_void,
82480            >(next_ptr) as *const _;
82481        }
82482        self
82483    }
82484}
82485impl<'a> core::ops::Deref for BindHeapInfoEXTBuilder<'a> {
82486    type Target = BindHeapInfoEXT;
82487    #[inline]
82488    fn deref(&self) -> &Self::Target {
82489        &self.inner
82490    }
82491}
82492impl<'a> core::ops::DerefMut for BindHeapInfoEXTBuilder<'a> {
82493    #[inline]
82494    fn deref_mut(&mut self) -> &mut Self::Target {
82495        &mut self.inner
82496    }
82497}
82498///Builder for [`PushDataInfoEXT`] with lifetime-tied pNext safety.
82499pub struct PushDataInfoEXTBuilder<'a> {
82500    inner: PushDataInfoEXT,
82501    _marker: core::marker::PhantomData<&'a ()>,
82502}
82503impl PushDataInfoEXT {
82504    /// Start building this struct; `s_type` is already set to the correct variant.
82505    #[inline]
82506    pub fn builder<'a>() -> PushDataInfoEXTBuilder<'a> {
82507        PushDataInfoEXTBuilder {
82508            inner: PushDataInfoEXT {
82509                s_type: StructureType::from_raw(1000135004i32),
82510                ..Default::default()
82511            },
82512            _marker: core::marker::PhantomData,
82513        }
82514    }
82515}
82516impl<'a> PushDataInfoEXTBuilder<'a> {
82517    #[inline]
82518    pub fn offset(mut self, value: u32) -> Self {
82519        self.inner.offset = value;
82520        self
82521    }
82522    #[inline]
82523    pub fn data(mut self, value: HostAddressRangeConstEXT) -> Self {
82524        self.inner.data = value;
82525        self
82526    }
82527    ///Prepend a struct to the pNext chain. See [`PushDataInfoEXT`]'s **Extended By** section for valid types.
82528    #[inline]
82529    pub fn push_next<T: ExtendsPushDataInfoEXT>(mut self, next: &'a mut T) -> Self {
82530        unsafe {
82531            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
82532            (*next_ptr).p_next = self.inner.p_next as *mut _;
82533            self.inner.p_next = <*mut BaseOutStructure>::cast::<
82534                core::ffi::c_void,
82535            >(next_ptr) as *const _;
82536        }
82537        self
82538    }
82539}
82540impl<'a> core::ops::Deref for PushDataInfoEXTBuilder<'a> {
82541    type Target = PushDataInfoEXT;
82542    #[inline]
82543    fn deref(&self) -> &Self::Target {
82544        &self.inner
82545    }
82546}
82547impl<'a> core::ops::DerefMut for PushDataInfoEXTBuilder<'a> {
82548    #[inline]
82549    fn deref_mut(&mut self) -> &mut Self::Target {
82550        &mut self.inner
82551    }
82552}
82553///Builder for [`DescriptorMappingSourceConstantOffsetEXT`].
82554pub struct DescriptorMappingSourceConstantOffsetEXTBuilder<'a> {
82555    inner: DescriptorMappingSourceConstantOffsetEXT,
82556    _marker: core::marker::PhantomData<&'a ()>,
82557}
82558impl DescriptorMappingSourceConstantOffsetEXT {
82559    /// Start building this struct.
82560    #[inline]
82561    pub fn builder<'a>() -> DescriptorMappingSourceConstantOffsetEXTBuilder<'a> {
82562        DescriptorMappingSourceConstantOffsetEXTBuilder {
82563            inner: DescriptorMappingSourceConstantOffsetEXT {
82564                ..Default::default()
82565            },
82566            _marker: core::marker::PhantomData,
82567        }
82568    }
82569}
82570impl<'a> DescriptorMappingSourceConstantOffsetEXTBuilder<'a> {
82571    #[inline]
82572    pub fn heap_offset(mut self, value: u32) -> Self {
82573        self.inner.heap_offset = value;
82574        self
82575    }
82576    #[inline]
82577    pub fn heap_array_stride(mut self, value: u32) -> Self {
82578        self.inner.heap_array_stride = value;
82579        self
82580    }
82581    #[inline]
82582    pub fn embedded_sampler(mut self, value: &'a SamplerCreateInfo) -> Self {
82583        self.inner.p_embedded_sampler = value;
82584        self
82585    }
82586    #[inline]
82587    pub fn sampler_heap_offset(mut self, value: u32) -> Self {
82588        self.inner.sampler_heap_offset = value;
82589        self
82590    }
82591    #[inline]
82592    pub fn sampler_heap_array_stride(mut self, value: u32) -> Self {
82593        self.inner.sampler_heap_array_stride = value;
82594        self
82595    }
82596}
82597impl<'a> core::ops::Deref for DescriptorMappingSourceConstantOffsetEXTBuilder<'a> {
82598    type Target = DescriptorMappingSourceConstantOffsetEXT;
82599    #[inline]
82600    fn deref(&self) -> &Self::Target {
82601        &self.inner
82602    }
82603}
82604impl<'a> core::ops::DerefMut for DescriptorMappingSourceConstantOffsetEXTBuilder<'a> {
82605    #[inline]
82606    fn deref_mut(&mut self) -> &mut Self::Target {
82607        &mut self.inner
82608    }
82609}
82610///Builder for [`DescriptorMappingSourcePushIndexEXT`].
82611pub struct DescriptorMappingSourcePushIndexEXTBuilder<'a> {
82612    inner: DescriptorMappingSourcePushIndexEXT,
82613    _marker: core::marker::PhantomData<&'a ()>,
82614}
82615impl DescriptorMappingSourcePushIndexEXT {
82616    /// Start building this struct.
82617    #[inline]
82618    pub fn builder<'a>() -> DescriptorMappingSourcePushIndexEXTBuilder<'a> {
82619        DescriptorMappingSourcePushIndexEXTBuilder {
82620            inner: DescriptorMappingSourcePushIndexEXT {
82621                ..Default::default()
82622            },
82623            _marker: core::marker::PhantomData,
82624        }
82625    }
82626}
82627impl<'a> DescriptorMappingSourcePushIndexEXTBuilder<'a> {
82628    #[inline]
82629    pub fn heap_offset(mut self, value: u32) -> Self {
82630        self.inner.heap_offset = value;
82631        self
82632    }
82633    #[inline]
82634    pub fn push_offset(mut self, value: u32) -> Self {
82635        self.inner.push_offset = value;
82636        self
82637    }
82638    #[inline]
82639    pub fn heap_index_stride(mut self, value: u32) -> Self {
82640        self.inner.heap_index_stride = value;
82641        self
82642    }
82643    #[inline]
82644    pub fn heap_array_stride(mut self, value: u32) -> Self {
82645        self.inner.heap_array_stride = value;
82646        self
82647    }
82648    #[inline]
82649    pub fn embedded_sampler(mut self, value: &'a SamplerCreateInfo) -> Self {
82650        self.inner.p_embedded_sampler = value;
82651        self
82652    }
82653    #[inline]
82654    pub fn use_combined_image_sampler_index(mut self, value: bool) -> Self {
82655        self.inner.use_combined_image_sampler_index = value as u32;
82656        self
82657    }
82658    #[inline]
82659    pub fn sampler_heap_offset(mut self, value: u32) -> Self {
82660        self.inner.sampler_heap_offset = value;
82661        self
82662    }
82663    #[inline]
82664    pub fn sampler_push_offset(mut self, value: u32) -> Self {
82665        self.inner.sampler_push_offset = value;
82666        self
82667    }
82668    #[inline]
82669    pub fn sampler_heap_index_stride(mut self, value: u32) -> Self {
82670        self.inner.sampler_heap_index_stride = value;
82671        self
82672    }
82673    #[inline]
82674    pub fn sampler_heap_array_stride(mut self, value: u32) -> Self {
82675        self.inner.sampler_heap_array_stride = value;
82676        self
82677    }
82678}
82679impl<'a> core::ops::Deref for DescriptorMappingSourcePushIndexEXTBuilder<'a> {
82680    type Target = DescriptorMappingSourcePushIndexEXT;
82681    #[inline]
82682    fn deref(&self) -> &Self::Target {
82683        &self.inner
82684    }
82685}
82686impl<'a> core::ops::DerefMut for DescriptorMappingSourcePushIndexEXTBuilder<'a> {
82687    #[inline]
82688    fn deref_mut(&mut self) -> &mut Self::Target {
82689        &mut self.inner
82690    }
82691}
82692///Builder for [`DescriptorMappingSourceIndirectIndexEXT`].
82693pub struct DescriptorMappingSourceIndirectIndexEXTBuilder<'a> {
82694    inner: DescriptorMappingSourceIndirectIndexEXT,
82695    _marker: core::marker::PhantomData<&'a ()>,
82696}
82697impl DescriptorMappingSourceIndirectIndexEXT {
82698    /// Start building this struct.
82699    #[inline]
82700    pub fn builder<'a>() -> DescriptorMappingSourceIndirectIndexEXTBuilder<'a> {
82701        DescriptorMappingSourceIndirectIndexEXTBuilder {
82702            inner: DescriptorMappingSourceIndirectIndexEXT {
82703                ..Default::default()
82704            },
82705            _marker: core::marker::PhantomData,
82706        }
82707    }
82708}
82709impl<'a> DescriptorMappingSourceIndirectIndexEXTBuilder<'a> {
82710    #[inline]
82711    pub fn heap_offset(mut self, value: u32) -> Self {
82712        self.inner.heap_offset = value;
82713        self
82714    }
82715    #[inline]
82716    pub fn push_offset(mut self, value: u32) -> Self {
82717        self.inner.push_offset = value;
82718        self
82719    }
82720    #[inline]
82721    pub fn address_offset(mut self, value: u32) -> Self {
82722        self.inner.address_offset = value;
82723        self
82724    }
82725    #[inline]
82726    pub fn heap_index_stride(mut self, value: u32) -> Self {
82727        self.inner.heap_index_stride = value;
82728        self
82729    }
82730    #[inline]
82731    pub fn heap_array_stride(mut self, value: u32) -> Self {
82732        self.inner.heap_array_stride = value;
82733        self
82734    }
82735    #[inline]
82736    pub fn embedded_sampler(mut self, value: &'a SamplerCreateInfo) -> Self {
82737        self.inner.p_embedded_sampler = value;
82738        self
82739    }
82740    #[inline]
82741    pub fn use_combined_image_sampler_index(mut self, value: bool) -> Self {
82742        self.inner.use_combined_image_sampler_index = value as u32;
82743        self
82744    }
82745    #[inline]
82746    pub fn sampler_heap_offset(mut self, value: u32) -> Self {
82747        self.inner.sampler_heap_offset = value;
82748        self
82749    }
82750    #[inline]
82751    pub fn sampler_push_offset(mut self, value: u32) -> Self {
82752        self.inner.sampler_push_offset = value;
82753        self
82754    }
82755    #[inline]
82756    pub fn sampler_address_offset(mut self, value: u32) -> Self {
82757        self.inner.sampler_address_offset = value;
82758        self
82759    }
82760    #[inline]
82761    pub fn sampler_heap_index_stride(mut self, value: u32) -> Self {
82762        self.inner.sampler_heap_index_stride = value;
82763        self
82764    }
82765    #[inline]
82766    pub fn sampler_heap_array_stride(mut self, value: u32) -> Self {
82767        self.inner.sampler_heap_array_stride = value;
82768        self
82769    }
82770}
82771impl<'a> core::ops::Deref for DescriptorMappingSourceIndirectIndexEXTBuilder<'a> {
82772    type Target = DescriptorMappingSourceIndirectIndexEXT;
82773    #[inline]
82774    fn deref(&self) -> &Self::Target {
82775        &self.inner
82776    }
82777}
82778impl<'a> core::ops::DerefMut for DescriptorMappingSourceIndirectIndexEXTBuilder<'a> {
82779    #[inline]
82780    fn deref_mut(&mut self) -> &mut Self::Target {
82781        &mut self.inner
82782    }
82783}
82784///Builder for [`DescriptorMappingSourceIndirectIndexArrayEXT`].
82785pub struct DescriptorMappingSourceIndirectIndexArrayEXTBuilder<'a> {
82786    inner: DescriptorMappingSourceIndirectIndexArrayEXT,
82787    _marker: core::marker::PhantomData<&'a ()>,
82788}
82789impl DescriptorMappingSourceIndirectIndexArrayEXT {
82790    /// Start building this struct.
82791    #[inline]
82792    pub fn builder<'a>() -> DescriptorMappingSourceIndirectIndexArrayEXTBuilder<'a> {
82793        DescriptorMappingSourceIndirectIndexArrayEXTBuilder {
82794            inner: DescriptorMappingSourceIndirectIndexArrayEXT {
82795                ..Default::default()
82796            },
82797            _marker: core::marker::PhantomData,
82798        }
82799    }
82800}
82801impl<'a> DescriptorMappingSourceIndirectIndexArrayEXTBuilder<'a> {
82802    #[inline]
82803    pub fn heap_offset(mut self, value: u32) -> Self {
82804        self.inner.heap_offset = value;
82805        self
82806    }
82807    #[inline]
82808    pub fn push_offset(mut self, value: u32) -> Self {
82809        self.inner.push_offset = value;
82810        self
82811    }
82812    #[inline]
82813    pub fn address_offset(mut self, value: u32) -> Self {
82814        self.inner.address_offset = value;
82815        self
82816    }
82817    #[inline]
82818    pub fn heap_index_stride(mut self, value: u32) -> Self {
82819        self.inner.heap_index_stride = value;
82820        self
82821    }
82822    #[inline]
82823    pub fn embedded_sampler(mut self, value: &'a SamplerCreateInfo) -> Self {
82824        self.inner.p_embedded_sampler = value;
82825        self
82826    }
82827    #[inline]
82828    pub fn use_combined_image_sampler_index(mut self, value: bool) -> Self {
82829        self.inner.use_combined_image_sampler_index = value as u32;
82830        self
82831    }
82832    #[inline]
82833    pub fn sampler_heap_offset(mut self, value: u32) -> Self {
82834        self.inner.sampler_heap_offset = value;
82835        self
82836    }
82837    #[inline]
82838    pub fn sampler_push_offset(mut self, value: u32) -> Self {
82839        self.inner.sampler_push_offset = value;
82840        self
82841    }
82842    #[inline]
82843    pub fn sampler_address_offset(mut self, value: u32) -> Self {
82844        self.inner.sampler_address_offset = value;
82845        self
82846    }
82847    #[inline]
82848    pub fn sampler_heap_index_stride(mut self, value: u32) -> Self {
82849        self.inner.sampler_heap_index_stride = value;
82850        self
82851    }
82852}
82853impl<'a> core::ops::Deref for DescriptorMappingSourceIndirectIndexArrayEXTBuilder<'a> {
82854    type Target = DescriptorMappingSourceIndirectIndexArrayEXT;
82855    #[inline]
82856    fn deref(&self) -> &Self::Target {
82857        &self.inner
82858    }
82859}
82860impl<'a> core::ops::DerefMut
82861for DescriptorMappingSourceIndirectIndexArrayEXTBuilder<'a> {
82862    #[inline]
82863    fn deref_mut(&mut self) -> &mut Self::Target {
82864        &mut self.inner
82865    }
82866}
82867///Builder for [`DescriptorMappingSourceHeapDataEXT`].
82868pub struct DescriptorMappingSourceHeapDataEXTBuilder {
82869    inner: DescriptorMappingSourceHeapDataEXT,
82870}
82871impl DescriptorMappingSourceHeapDataEXT {
82872    /// Start building this struct.
82873    #[inline]
82874    pub fn builder() -> DescriptorMappingSourceHeapDataEXTBuilder {
82875        DescriptorMappingSourceHeapDataEXTBuilder {
82876            inner: DescriptorMappingSourceHeapDataEXT {
82877                ..Default::default()
82878            },
82879        }
82880    }
82881}
82882impl DescriptorMappingSourceHeapDataEXTBuilder {
82883    #[inline]
82884    pub fn heap_offset(mut self, value: u32) -> Self {
82885        self.inner.heap_offset = value;
82886        self
82887    }
82888    #[inline]
82889    pub fn push_offset(mut self, value: u32) -> Self {
82890        self.inner.push_offset = value;
82891        self
82892    }
82893}
82894impl core::ops::Deref for DescriptorMappingSourceHeapDataEXTBuilder {
82895    type Target = DescriptorMappingSourceHeapDataEXT;
82896    #[inline]
82897    fn deref(&self) -> &Self::Target {
82898        &self.inner
82899    }
82900}
82901impl core::ops::DerefMut for DescriptorMappingSourceHeapDataEXTBuilder {
82902    #[inline]
82903    fn deref_mut(&mut self) -> &mut Self::Target {
82904        &mut self.inner
82905    }
82906}
82907///Builder for [`DescriptorMappingSourceShaderRecordIndexEXT`].
82908pub struct DescriptorMappingSourceShaderRecordIndexEXTBuilder<'a> {
82909    inner: DescriptorMappingSourceShaderRecordIndexEXT,
82910    _marker: core::marker::PhantomData<&'a ()>,
82911}
82912impl DescriptorMappingSourceShaderRecordIndexEXT {
82913    /// Start building this struct.
82914    #[inline]
82915    pub fn builder<'a>() -> DescriptorMappingSourceShaderRecordIndexEXTBuilder<'a> {
82916        DescriptorMappingSourceShaderRecordIndexEXTBuilder {
82917            inner: DescriptorMappingSourceShaderRecordIndexEXT {
82918                ..Default::default()
82919            },
82920            _marker: core::marker::PhantomData,
82921        }
82922    }
82923}
82924impl<'a> DescriptorMappingSourceShaderRecordIndexEXTBuilder<'a> {
82925    #[inline]
82926    pub fn heap_offset(mut self, value: u32) -> Self {
82927        self.inner.heap_offset = value;
82928        self
82929    }
82930    #[inline]
82931    pub fn shader_record_offset(mut self, value: u32) -> Self {
82932        self.inner.shader_record_offset = value;
82933        self
82934    }
82935    #[inline]
82936    pub fn heap_index_stride(mut self, value: u32) -> Self {
82937        self.inner.heap_index_stride = value;
82938        self
82939    }
82940    #[inline]
82941    pub fn heap_array_stride(mut self, value: u32) -> Self {
82942        self.inner.heap_array_stride = value;
82943        self
82944    }
82945    #[inline]
82946    pub fn embedded_sampler(mut self, value: &'a SamplerCreateInfo) -> Self {
82947        self.inner.p_embedded_sampler = value;
82948        self
82949    }
82950    #[inline]
82951    pub fn use_combined_image_sampler_index(mut self, value: bool) -> Self {
82952        self.inner.use_combined_image_sampler_index = value as u32;
82953        self
82954    }
82955    #[inline]
82956    pub fn sampler_heap_offset(mut self, value: u32) -> Self {
82957        self.inner.sampler_heap_offset = value;
82958        self
82959    }
82960    #[inline]
82961    pub fn sampler_shader_record_offset(mut self, value: u32) -> Self {
82962        self.inner.sampler_shader_record_offset = value;
82963        self
82964    }
82965    #[inline]
82966    pub fn sampler_heap_index_stride(mut self, value: u32) -> Self {
82967        self.inner.sampler_heap_index_stride = value;
82968        self
82969    }
82970    #[inline]
82971    pub fn sampler_heap_array_stride(mut self, value: u32) -> Self {
82972        self.inner.sampler_heap_array_stride = value;
82973        self
82974    }
82975}
82976impl<'a> core::ops::Deref for DescriptorMappingSourceShaderRecordIndexEXTBuilder<'a> {
82977    type Target = DescriptorMappingSourceShaderRecordIndexEXT;
82978    #[inline]
82979    fn deref(&self) -> &Self::Target {
82980        &self.inner
82981    }
82982}
82983impl<'a> core::ops::DerefMut for DescriptorMappingSourceShaderRecordIndexEXTBuilder<'a> {
82984    #[inline]
82985    fn deref_mut(&mut self) -> &mut Self::Target {
82986        &mut self.inner
82987    }
82988}
82989///Builder for [`DescriptorMappingSourceIndirectAddressEXT`].
82990pub struct DescriptorMappingSourceIndirectAddressEXTBuilder {
82991    inner: DescriptorMappingSourceIndirectAddressEXT,
82992}
82993impl DescriptorMappingSourceIndirectAddressEXT {
82994    /// Start building this struct.
82995    #[inline]
82996    pub fn builder() -> DescriptorMappingSourceIndirectAddressEXTBuilder {
82997        DescriptorMappingSourceIndirectAddressEXTBuilder {
82998            inner: DescriptorMappingSourceIndirectAddressEXT {
82999                ..Default::default()
83000            },
83001        }
83002    }
83003}
83004impl DescriptorMappingSourceIndirectAddressEXTBuilder {
83005    #[inline]
83006    pub fn push_offset(mut self, value: u32) -> Self {
83007        self.inner.push_offset = value;
83008        self
83009    }
83010    #[inline]
83011    pub fn address_offset(mut self, value: u32) -> Self {
83012        self.inner.address_offset = value;
83013        self
83014    }
83015}
83016impl core::ops::Deref for DescriptorMappingSourceIndirectAddressEXTBuilder {
83017    type Target = DescriptorMappingSourceIndirectAddressEXT;
83018    #[inline]
83019    fn deref(&self) -> &Self::Target {
83020        &self.inner
83021    }
83022}
83023impl core::ops::DerefMut for DescriptorMappingSourceIndirectAddressEXTBuilder {
83024    #[inline]
83025    fn deref_mut(&mut self) -> &mut Self::Target {
83026        &mut self.inner
83027    }
83028}
83029///Builder for [`DescriptorSetAndBindingMappingEXT`] with lifetime-tied pNext safety.
83030pub struct DescriptorSetAndBindingMappingEXTBuilder<'a> {
83031    inner: DescriptorSetAndBindingMappingEXT,
83032    _marker: core::marker::PhantomData<&'a ()>,
83033}
83034impl DescriptorSetAndBindingMappingEXT {
83035    /// Start building this struct; `s_type` is already set to the correct variant.
83036    #[inline]
83037    pub fn builder<'a>() -> DescriptorSetAndBindingMappingEXTBuilder<'a> {
83038        DescriptorSetAndBindingMappingEXTBuilder {
83039            inner: DescriptorSetAndBindingMappingEXT {
83040                s_type: StructureType::from_raw(1000135005i32),
83041                ..Default::default()
83042            },
83043            _marker: core::marker::PhantomData,
83044        }
83045    }
83046}
83047impl<'a> DescriptorSetAndBindingMappingEXTBuilder<'a> {
83048    #[inline]
83049    pub fn descriptor_set(mut self, value: u32) -> Self {
83050        self.inner.descriptor_set = value;
83051        self
83052    }
83053    #[inline]
83054    pub fn first_binding(mut self, value: u32) -> Self {
83055        self.inner.first_binding = value;
83056        self
83057    }
83058    #[inline]
83059    pub fn binding_count(mut self, value: u32) -> Self {
83060        self.inner.binding_count = value;
83061        self
83062    }
83063    #[inline]
83064    pub fn resource_mask(mut self, value: SpirvResourceTypeFlagsEXT) -> Self {
83065        self.inner.resource_mask = value;
83066        self
83067    }
83068    #[inline]
83069    pub fn source(mut self, value: DescriptorMappingSourceEXT) -> Self {
83070        self.inner.source = value;
83071        self
83072    }
83073    #[inline]
83074    pub fn source_data(mut self, value: DescriptorMappingSourceDataEXT) -> Self {
83075        self.inner.source_data = value;
83076        self
83077    }
83078    ///Prepend a struct to the pNext chain. See [`DescriptorSetAndBindingMappingEXT`]'s **Extended By** section for valid types.
83079    #[inline]
83080    pub fn push_next<T: ExtendsDescriptorSetAndBindingMappingEXT>(
83081        mut self,
83082        next: &'a mut T,
83083    ) -> Self {
83084        unsafe {
83085            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
83086            (*next_ptr).p_next = self.inner.p_next as *mut _;
83087            self.inner.p_next = <*mut BaseOutStructure>::cast::<
83088                core::ffi::c_void,
83089            >(next_ptr) as *const _;
83090        }
83091        self
83092    }
83093}
83094impl<'a> core::ops::Deref for DescriptorSetAndBindingMappingEXTBuilder<'a> {
83095    type Target = DescriptorSetAndBindingMappingEXT;
83096    #[inline]
83097    fn deref(&self) -> &Self::Target {
83098        &self.inner
83099    }
83100}
83101impl<'a> core::ops::DerefMut for DescriptorSetAndBindingMappingEXTBuilder<'a> {
83102    #[inline]
83103    fn deref_mut(&mut self) -> &mut Self::Target {
83104        &mut self.inner
83105    }
83106}
83107///Builder for [`ShaderDescriptorSetAndBindingMappingInfoEXT`] with lifetime-tied pNext safety.
83108pub struct ShaderDescriptorSetAndBindingMappingInfoEXTBuilder<'a> {
83109    inner: ShaderDescriptorSetAndBindingMappingInfoEXT,
83110    _marker: core::marker::PhantomData<&'a ()>,
83111}
83112impl ShaderDescriptorSetAndBindingMappingInfoEXT {
83113    /// Start building this struct; `s_type` is already set to the correct variant.
83114    #[inline]
83115    pub fn builder<'a>() -> ShaderDescriptorSetAndBindingMappingInfoEXTBuilder<'a> {
83116        ShaderDescriptorSetAndBindingMappingInfoEXTBuilder {
83117            inner: ShaderDescriptorSetAndBindingMappingInfoEXT {
83118                s_type: StructureType::from_raw(1000135006i32),
83119                ..Default::default()
83120            },
83121            _marker: core::marker::PhantomData,
83122        }
83123    }
83124}
83125impl<'a> ShaderDescriptorSetAndBindingMappingInfoEXTBuilder<'a> {
83126    #[inline]
83127    pub fn mappings(mut self, slice: &'a [DescriptorSetAndBindingMappingEXT]) -> Self {
83128        self.inner.mapping_count = slice.len() as u32;
83129        self.inner.p_mappings = slice.as_ptr();
83130        self
83131    }
83132    ///Prepend a struct to the pNext chain. See [`ShaderDescriptorSetAndBindingMappingInfoEXT`]'s **Extended By** section for valid types.
83133    #[inline]
83134    pub fn push_next<T: ExtendsShaderDescriptorSetAndBindingMappingInfoEXT>(
83135        mut self,
83136        next: &'a mut T,
83137    ) -> Self {
83138        unsafe {
83139            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
83140            (*next_ptr).p_next = self.inner.p_next as *mut _;
83141            self.inner.p_next = <*mut BaseOutStructure>::cast::<
83142                core::ffi::c_void,
83143            >(next_ptr) as *const _;
83144        }
83145        self
83146    }
83147}
83148impl<'a> core::ops::Deref for ShaderDescriptorSetAndBindingMappingInfoEXTBuilder<'a> {
83149    type Target = ShaderDescriptorSetAndBindingMappingInfoEXT;
83150    #[inline]
83151    fn deref(&self) -> &Self::Target {
83152        &self.inner
83153    }
83154}
83155impl<'a> core::ops::DerefMut for ShaderDescriptorSetAndBindingMappingInfoEXTBuilder<'a> {
83156    #[inline]
83157    fn deref_mut(&mut self) -> &mut Self::Target {
83158        &mut self.inner
83159    }
83160}
83161///Builder for [`SamplerCustomBorderColorIndexCreateInfoEXT`] with lifetime-tied pNext safety.
83162pub struct SamplerCustomBorderColorIndexCreateInfoEXTBuilder<'a> {
83163    inner: SamplerCustomBorderColorIndexCreateInfoEXT,
83164    _marker: core::marker::PhantomData<&'a ()>,
83165}
83166impl SamplerCustomBorderColorIndexCreateInfoEXT {
83167    /// Start building this struct; `s_type` is already set to the correct variant.
83168    #[inline]
83169    pub fn builder<'a>() -> SamplerCustomBorderColorIndexCreateInfoEXTBuilder<'a> {
83170        SamplerCustomBorderColorIndexCreateInfoEXTBuilder {
83171            inner: SamplerCustomBorderColorIndexCreateInfoEXT {
83172                s_type: StructureType::from_raw(1000135011i32),
83173                ..Default::default()
83174            },
83175            _marker: core::marker::PhantomData,
83176        }
83177    }
83178}
83179impl<'a> SamplerCustomBorderColorIndexCreateInfoEXTBuilder<'a> {
83180    #[inline]
83181    pub fn index(mut self, value: u32) -> Self {
83182        self.inner.index = value;
83183        self
83184    }
83185    ///Prepend a struct to the pNext chain. See [`SamplerCustomBorderColorIndexCreateInfoEXT`]'s **Extended By** section for valid types.
83186    #[inline]
83187    pub fn push_next<T: ExtendsSamplerCustomBorderColorIndexCreateInfoEXT>(
83188        mut self,
83189        next: &'a mut T,
83190    ) -> Self {
83191        unsafe {
83192            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
83193            (*next_ptr).p_next = self.inner.p_next as *mut _;
83194            self.inner.p_next = <*mut BaseOutStructure>::cast::<
83195                core::ffi::c_void,
83196            >(next_ptr) as *const _;
83197        }
83198        self
83199    }
83200}
83201impl<'a> core::ops::Deref for SamplerCustomBorderColorIndexCreateInfoEXTBuilder<'a> {
83202    type Target = SamplerCustomBorderColorIndexCreateInfoEXT;
83203    #[inline]
83204    fn deref(&self) -> &Self::Target {
83205        &self.inner
83206    }
83207}
83208impl<'a> core::ops::DerefMut for SamplerCustomBorderColorIndexCreateInfoEXTBuilder<'a> {
83209    #[inline]
83210    fn deref_mut(&mut self) -> &mut Self::Target {
83211        &mut self.inner
83212    }
83213}
83214///Builder for [`OpaqueCaptureDataCreateInfoEXT`] with lifetime-tied pNext safety.
83215pub struct OpaqueCaptureDataCreateInfoEXTBuilder<'a> {
83216    inner: OpaqueCaptureDataCreateInfoEXT,
83217    _marker: core::marker::PhantomData<&'a ()>,
83218}
83219impl OpaqueCaptureDataCreateInfoEXT {
83220    /// Start building this struct; `s_type` is already set to the correct variant.
83221    #[inline]
83222    pub fn builder<'a>() -> OpaqueCaptureDataCreateInfoEXTBuilder<'a> {
83223        OpaqueCaptureDataCreateInfoEXTBuilder {
83224            inner: OpaqueCaptureDataCreateInfoEXT {
83225                s_type: StructureType::from_raw(1000135007i32),
83226                ..Default::default()
83227            },
83228            _marker: core::marker::PhantomData,
83229        }
83230    }
83231}
83232impl<'a> OpaqueCaptureDataCreateInfoEXTBuilder<'a> {
83233    #[inline]
83234    pub fn data(mut self, value: &'a HostAddressRangeConstEXT) -> Self {
83235        self.inner.p_data = value;
83236        self
83237    }
83238    ///Prepend a struct to the pNext chain. See [`OpaqueCaptureDataCreateInfoEXT`]'s **Extended By** section for valid types.
83239    #[inline]
83240    pub fn push_next<T: ExtendsOpaqueCaptureDataCreateInfoEXT>(
83241        mut self,
83242        next: &'a mut T,
83243    ) -> Self {
83244        unsafe {
83245            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
83246            (*next_ptr).p_next = self.inner.p_next as *mut _;
83247            self.inner.p_next = <*mut BaseOutStructure>::cast::<
83248                core::ffi::c_void,
83249            >(next_ptr) as *const _;
83250        }
83251        self
83252    }
83253}
83254impl<'a> core::ops::Deref for OpaqueCaptureDataCreateInfoEXTBuilder<'a> {
83255    type Target = OpaqueCaptureDataCreateInfoEXT;
83256    #[inline]
83257    fn deref(&self) -> &Self::Target {
83258        &self.inner
83259    }
83260}
83261impl<'a> core::ops::DerefMut for OpaqueCaptureDataCreateInfoEXTBuilder<'a> {
83262    #[inline]
83263    fn deref_mut(&mut self) -> &mut Self::Target {
83264        &mut self.inner
83265    }
83266}
83267///Builder for [`IndirectCommandsLayoutPushDataTokenNV`] with lifetime-tied pNext safety.
83268pub struct IndirectCommandsLayoutPushDataTokenNVBuilder<'a> {
83269    inner: IndirectCommandsLayoutPushDataTokenNV,
83270    _marker: core::marker::PhantomData<&'a ()>,
83271}
83272impl IndirectCommandsLayoutPushDataTokenNV {
83273    /// Start building this struct; `s_type` is already set to the correct variant.
83274    #[inline]
83275    pub fn builder<'a>() -> IndirectCommandsLayoutPushDataTokenNVBuilder<'a> {
83276        IndirectCommandsLayoutPushDataTokenNVBuilder {
83277            inner: IndirectCommandsLayoutPushDataTokenNV {
83278                s_type: StructureType::from_raw(1000135012i32),
83279                ..Default::default()
83280            },
83281            _marker: core::marker::PhantomData,
83282        }
83283    }
83284}
83285impl<'a> IndirectCommandsLayoutPushDataTokenNVBuilder<'a> {
83286    #[inline]
83287    pub fn push_data_offset(mut self, value: u32) -> Self {
83288        self.inner.push_data_offset = value;
83289        self
83290    }
83291    #[inline]
83292    pub fn push_data_size(mut self, value: u32) -> Self {
83293        self.inner.push_data_size = value;
83294        self
83295    }
83296    ///Prepend a struct to the pNext chain. See [`IndirectCommandsLayoutPushDataTokenNV`]'s **Extended By** section for valid types.
83297    #[inline]
83298    pub fn push_next<T: ExtendsIndirectCommandsLayoutPushDataTokenNV>(
83299        mut self,
83300        next: &'a mut T,
83301    ) -> Self {
83302        unsafe {
83303            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
83304            (*next_ptr).p_next = self.inner.p_next as *mut _;
83305            self.inner.p_next = <*mut BaseOutStructure>::cast::<
83306                core::ffi::c_void,
83307            >(next_ptr) as *const _;
83308        }
83309        self
83310    }
83311}
83312impl<'a> core::ops::Deref for IndirectCommandsLayoutPushDataTokenNVBuilder<'a> {
83313    type Target = IndirectCommandsLayoutPushDataTokenNV;
83314    #[inline]
83315    fn deref(&self) -> &Self::Target {
83316        &self.inner
83317    }
83318}
83319impl<'a> core::ops::DerefMut for IndirectCommandsLayoutPushDataTokenNVBuilder<'a> {
83320    #[inline]
83321    fn deref_mut(&mut self) -> &mut Self::Target {
83322        &mut self.inner
83323    }
83324}
83325///Builder for [`SubsampledImageFormatPropertiesEXT`] with lifetime-tied pNext safety.
83326pub struct SubsampledImageFormatPropertiesEXTBuilder<'a> {
83327    inner: SubsampledImageFormatPropertiesEXT,
83328    _marker: core::marker::PhantomData<&'a ()>,
83329}
83330impl SubsampledImageFormatPropertiesEXT {
83331    /// Start building this struct; `s_type` is already set to the correct variant.
83332    #[inline]
83333    pub fn builder<'a>() -> SubsampledImageFormatPropertiesEXTBuilder<'a> {
83334        SubsampledImageFormatPropertiesEXTBuilder {
83335            inner: SubsampledImageFormatPropertiesEXT {
83336                s_type: StructureType::from_raw(1000135013i32),
83337                ..Default::default()
83338            },
83339            _marker: core::marker::PhantomData,
83340        }
83341    }
83342}
83343impl<'a> SubsampledImageFormatPropertiesEXTBuilder<'a> {
83344    #[inline]
83345    pub fn subsampled_image_descriptor_count(mut self, value: u32) -> Self {
83346        self.inner.subsampled_image_descriptor_count = value;
83347        self
83348    }
83349    ///Prepend a struct to the pNext chain. See [`SubsampledImageFormatPropertiesEXT`]'s **Extended By** section for valid types.
83350    #[inline]
83351    pub fn push_next<T: ExtendsSubsampledImageFormatPropertiesEXT>(
83352        mut self,
83353        next: &'a mut T,
83354    ) -> Self {
83355        unsafe {
83356            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
83357            (*next_ptr).p_next = self.inner.p_next as *mut _;
83358            self.inner.p_next = <*mut BaseOutStructure>::cast::<
83359                core::ffi::c_void,
83360            >(next_ptr) as *const _;
83361        }
83362        self
83363    }
83364}
83365impl<'a> core::ops::Deref for SubsampledImageFormatPropertiesEXTBuilder<'a> {
83366    type Target = SubsampledImageFormatPropertiesEXT;
83367    #[inline]
83368    fn deref(&self) -> &Self::Target {
83369        &self.inner
83370    }
83371}
83372impl<'a> core::ops::DerefMut for SubsampledImageFormatPropertiesEXTBuilder<'a> {
83373    #[inline]
83374    fn deref_mut(&mut self) -> &mut Self::Target {
83375        &mut self.inner
83376    }
83377}
83378///Builder for [`PhysicalDeviceDescriptorHeapFeaturesEXT`] with lifetime-tied pNext safety.
83379pub struct PhysicalDeviceDescriptorHeapFeaturesEXTBuilder<'a> {
83380    inner: PhysicalDeviceDescriptorHeapFeaturesEXT,
83381    _marker: core::marker::PhantomData<&'a ()>,
83382}
83383impl PhysicalDeviceDescriptorHeapFeaturesEXT {
83384    /// Start building this struct; `s_type` is already set to the correct variant.
83385    #[inline]
83386    pub fn builder<'a>() -> PhysicalDeviceDescriptorHeapFeaturesEXTBuilder<'a> {
83387        PhysicalDeviceDescriptorHeapFeaturesEXTBuilder {
83388            inner: PhysicalDeviceDescriptorHeapFeaturesEXT {
83389                s_type: StructureType::from_raw(1000135009i32),
83390                ..Default::default()
83391            },
83392            _marker: core::marker::PhantomData,
83393        }
83394    }
83395}
83396impl<'a> PhysicalDeviceDescriptorHeapFeaturesEXTBuilder<'a> {
83397    #[inline]
83398    pub fn descriptor_heap(mut self, value: bool) -> Self {
83399        self.inner.descriptor_heap = value as u32;
83400        self
83401    }
83402    #[inline]
83403    pub fn descriptor_heap_capture_replay(mut self, value: bool) -> Self {
83404        self.inner.descriptor_heap_capture_replay = value as u32;
83405        self
83406    }
83407    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDescriptorHeapFeaturesEXT`]'s **Extended By** section for valid types.
83408    #[inline]
83409    pub fn push_next<T: ExtendsPhysicalDeviceDescriptorHeapFeaturesEXT>(
83410        mut self,
83411        next: &'a mut T,
83412    ) -> Self {
83413        unsafe {
83414            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
83415            (*next_ptr).p_next = self.inner.p_next as *mut _;
83416            self.inner.p_next = <*mut BaseOutStructure>::cast::<
83417                core::ffi::c_void,
83418            >(next_ptr);
83419        }
83420        self
83421    }
83422}
83423impl<'a> core::ops::Deref for PhysicalDeviceDescriptorHeapFeaturesEXTBuilder<'a> {
83424    type Target = PhysicalDeviceDescriptorHeapFeaturesEXT;
83425    #[inline]
83426    fn deref(&self) -> &Self::Target {
83427        &self.inner
83428    }
83429}
83430impl<'a> core::ops::DerefMut for PhysicalDeviceDescriptorHeapFeaturesEXTBuilder<'a> {
83431    #[inline]
83432    fn deref_mut(&mut self) -> &mut Self::Target {
83433        &mut self.inner
83434    }
83435}
83436///Builder for [`PhysicalDeviceDescriptorHeapPropertiesEXT`] with lifetime-tied pNext safety.
83437pub struct PhysicalDeviceDescriptorHeapPropertiesEXTBuilder<'a> {
83438    inner: PhysicalDeviceDescriptorHeapPropertiesEXT,
83439    _marker: core::marker::PhantomData<&'a ()>,
83440}
83441impl PhysicalDeviceDescriptorHeapPropertiesEXT {
83442    /// Start building this struct; `s_type` is already set to the correct variant.
83443    #[inline]
83444    pub fn builder<'a>() -> PhysicalDeviceDescriptorHeapPropertiesEXTBuilder<'a> {
83445        PhysicalDeviceDescriptorHeapPropertiesEXTBuilder {
83446            inner: PhysicalDeviceDescriptorHeapPropertiesEXT {
83447                s_type: StructureType::from_raw(1000135008i32),
83448                ..Default::default()
83449            },
83450            _marker: core::marker::PhantomData,
83451        }
83452    }
83453}
83454impl<'a> PhysicalDeviceDescriptorHeapPropertiesEXTBuilder<'a> {
83455    #[inline]
83456    pub fn sampler_heap_alignment(mut self, value: u64) -> Self {
83457        self.inner.sampler_heap_alignment = value;
83458        self
83459    }
83460    #[inline]
83461    pub fn resource_heap_alignment(mut self, value: u64) -> Self {
83462        self.inner.resource_heap_alignment = value;
83463        self
83464    }
83465    #[inline]
83466    pub fn max_sampler_heap_size(mut self, value: u64) -> Self {
83467        self.inner.max_sampler_heap_size = value;
83468        self
83469    }
83470    #[inline]
83471    pub fn max_resource_heap_size(mut self, value: u64) -> Self {
83472        self.inner.max_resource_heap_size = value;
83473        self
83474    }
83475    #[inline]
83476    pub fn min_sampler_heap_reserved_range(mut self, value: u64) -> Self {
83477        self.inner.min_sampler_heap_reserved_range = value;
83478        self
83479    }
83480    #[inline]
83481    pub fn min_sampler_heap_reserved_range_with_embedded(mut self, value: u64) -> Self {
83482        self.inner.min_sampler_heap_reserved_range_with_embedded = value;
83483        self
83484    }
83485    #[inline]
83486    pub fn min_resource_heap_reserved_range(mut self, value: u64) -> Self {
83487        self.inner.min_resource_heap_reserved_range = value;
83488        self
83489    }
83490    #[inline]
83491    pub fn sampler_descriptor_size(mut self, value: u64) -> Self {
83492        self.inner.sampler_descriptor_size = value;
83493        self
83494    }
83495    #[inline]
83496    pub fn image_descriptor_size(mut self, value: u64) -> Self {
83497        self.inner.image_descriptor_size = value;
83498        self
83499    }
83500    #[inline]
83501    pub fn buffer_descriptor_size(mut self, value: u64) -> Self {
83502        self.inner.buffer_descriptor_size = value;
83503        self
83504    }
83505    #[inline]
83506    pub fn sampler_descriptor_alignment(mut self, value: u64) -> Self {
83507        self.inner.sampler_descriptor_alignment = value;
83508        self
83509    }
83510    #[inline]
83511    pub fn image_descriptor_alignment(mut self, value: u64) -> Self {
83512        self.inner.image_descriptor_alignment = value;
83513        self
83514    }
83515    #[inline]
83516    pub fn buffer_descriptor_alignment(mut self, value: u64) -> Self {
83517        self.inner.buffer_descriptor_alignment = value;
83518        self
83519    }
83520    #[inline]
83521    pub fn max_push_data_size(mut self, value: u64) -> Self {
83522        self.inner.max_push_data_size = value;
83523        self
83524    }
83525    #[inline]
83526    pub fn image_capture_replay_opaque_data_size(mut self, value: usize) -> Self {
83527        self.inner.image_capture_replay_opaque_data_size = value;
83528        self
83529    }
83530    #[inline]
83531    pub fn max_descriptor_heap_embedded_samplers(mut self, value: u32) -> Self {
83532        self.inner.max_descriptor_heap_embedded_samplers = value;
83533        self
83534    }
83535    #[inline]
83536    pub fn sampler_ycbcr_conversion_count(mut self, value: u32) -> Self {
83537        self.inner.sampler_ycbcr_conversion_count = value;
83538        self
83539    }
83540    #[inline]
83541    pub fn sparse_descriptor_heaps(mut self, value: bool) -> Self {
83542        self.inner.sparse_descriptor_heaps = value as u32;
83543        self
83544    }
83545    #[inline]
83546    pub fn protected_descriptor_heaps(mut self, value: bool) -> Self {
83547        self.inner.protected_descriptor_heaps = value as u32;
83548        self
83549    }
83550}
83551impl<'a> core::ops::Deref for PhysicalDeviceDescriptorHeapPropertiesEXTBuilder<'a> {
83552    type Target = PhysicalDeviceDescriptorHeapPropertiesEXT;
83553    #[inline]
83554    fn deref(&self) -> &Self::Target {
83555        &self.inner
83556    }
83557}
83558impl<'a> core::ops::DerefMut for PhysicalDeviceDescriptorHeapPropertiesEXTBuilder<'a> {
83559    #[inline]
83560    fn deref_mut(&mut self) -> &mut Self::Target {
83561        &mut self.inner
83562    }
83563}
83564///Builder for [`CommandBufferInheritanceDescriptorHeapInfoEXT`] with lifetime-tied pNext safety.
83565pub struct CommandBufferInheritanceDescriptorHeapInfoEXTBuilder<'a> {
83566    inner: CommandBufferInheritanceDescriptorHeapInfoEXT,
83567    _marker: core::marker::PhantomData<&'a ()>,
83568}
83569impl CommandBufferInheritanceDescriptorHeapInfoEXT {
83570    /// Start building this struct; `s_type` is already set to the correct variant.
83571    #[inline]
83572    pub fn builder<'a>() -> CommandBufferInheritanceDescriptorHeapInfoEXTBuilder<'a> {
83573        CommandBufferInheritanceDescriptorHeapInfoEXTBuilder {
83574            inner: CommandBufferInheritanceDescriptorHeapInfoEXT {
83575                s_type: StructureType::from_raw(1000135010i32),
83576                ..Default::default()
83577            },
83578            _marker: core::marker::PhantomData,
83579        }
83580    }
83581}
83582impl<'a> CommandBufferInheritanceDescriptorHeapInfoEXTBuilder<'a> {
83583    #[inline]
83584    pub fn sampler_heap_bind_info(mut self, value: &'a BindHeapInfoEXT) -> Self {
83585        self.inner.p_sampler_heap_bind_info = value;
83586        self
83587    }
83588    #[inline]
83589    pub fn resource_heap_bind_info(mut self, value: &'a BindHeapInfoEXT) -> Self {
83590        self.inner.p_resource_heap_bind_info = value;
83591        self
83592    }
83593    ///Prepend a struct to the pNext chain. See [`CommandBufferInheritanceDescriptorHeapInfoEXT`]'s **Extended By** section for valid types.
83594    #[inline]
83595    pub fn push_next<T: ExtendsCommandBufferInheritanceDescriptorHeapInfoEXT>(
83596        mut self,
83597        next: &'a mut T,
83598    ) -> Self {
83599        unsafe {
83600            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
83601            (*next_ptr).p_next = self.inner.p_next as *mut _;
83602            self.inner.p_next = <*mut BaseOutStructure>::cast::<
83603                core::ffi::c_void,
83604            >(next_ptr) as *const _;
83605        }
83606        self
83607    }
83608}
83609impl<'a> core::ops::Deref for CommandBufferInheritanceDescriptorHeapInfoEXTBuilder<'a> {
83610    type Target = CommandBufferInheritanceDescriptorHeapInfoEXT;
83611    #[inline]
83612    fn deref(&self) -> &Self::Target {
83613        &self.inner
83614    }
83615}
83616impl<'a> core::ops::DerefMut
83617for CommandBufferInheritanceDescriptorHeapInfoEXTBuilder<'a> {
83618    #[inline]
83619    fn deref_mut(&mut self) -> &mut Self::Target {
83620        &mut self.inner
83621    }
83622}
83623///Builder for [`PhysicalDeviceDescriptorHeapTensorPropertiesARM`] with lifetime-tied pNext safety.
83624pub struct PhysicalDeviceDescriptorHeapTensorPropertiesARMBuilder<'a> {
83625    inner: PhysicalDeviceDescriptorHeapTensorPropertiesARM,
83626    _marker: core::marker::PhantomData<&'a ()>,
83627}
83628impl PhysicalDeviceDescriptorHeapTensorPropertiesARM {
83629    /// Start building this struct; `s_type` is already set to the correct variant.
83630    #[inline]
83631    pub fn builder<'a>() -> PhysicalDeviceDescriptorHeapTensorPropertiesARMBuilder<'a> {
83632        PhysicalDeviceDescriptorHeapTensorPropertiesARMBuilder {
83633            inner: PhysicalDeviceDescriptorHeapTensorPropertiesARM {
83634                s_type: StructureType::from_raw(1000135014i32),
83635                ..Default::default()
83636            },
83637            _marker: core::marker::PhantomData,
83638        }
83639    }
83640}
83641impl<'a> PhysicalDeviceDescriptorHeapTensorPropertiesARMBuilder<'a> {
83642    #[inline]
83643    pub fn tensor_descriptor_size(mut self, value: u64) -> Self {
83644        self.inner.tensor_descriptor_size = value;
83645        self
83646    }
83647    #[inline]
83648    pub fn tensor_descriptor_alignment(mut self, value: u64) -> Self {
83649        self.inner.tensor_descriptor_alignment = value;
83650        self
83651    }
83652    #[inline]
83653    pub fn tensor_capture_replay_opaque_data_size(mut self, value: usize) -> Self {
83654        self.inner.tensor_capture_replay_opaque_data_size = value;
83655        self
83656    }
83657}
83658impl<'a> core::ops::Deref
83659for PhysicalDeviceDescriptorHeapTensorPropertiesARMBuilder<'a> {
83660    type Target = PhysicalDeviceDescriptorHeapTensorPropertiesARM;
83661    #[inline]
83662    fn deref(&self) -> &Self::Target {
83663        &self.inner
83664    }
83665}
83666impl<'a> core::ops::DerefMut
83667for PhysicalDeviceDescriptorHeapTensorPropertiesARMBuilder<'a> {
83668    #[inline]
83669    fn deref_mut(&mut self) -> &mut Self::Target {
83670        &mut self.inner
83671    }
83672}
83673///Builder for [`PhysicalDeviceShaderInstrumentationFeaturesARM`] with lifetime-tied pNext safety.
83674pub struct PhysicalDeviceShaderInstrumentationFeaturesARMBuilder<'a> {
83675    inner: PhysicalDeviceShaderInstrumentationFeaturesARM,
83676    _marker: core::marker::PhantomData<&'a ()>,
83677}
83678impl PhysicalDeviceShaderInstrumentationFeaturesARM {
83679    /// Start building this struct; `s_type` is already set to the correct variant.
83680    #[inline]
83681    pub fn builder<'a>() -> PhysicalDeviceShaderInstrumentationFeaturesARMBuilder<'a> {
83682        PhysicalDeviceShaderInstrumentationFeaturesARMBuilder {
83683            inner: PhysicalDeviceShaderInstrumentationFeaturesARM {
83684                s_type: StructureType::from_raw(1000607000i32),
83685                ..Default::default()
83686            },
83687            _marker: core::marker::PhantomData,
83688        }
83689    }
83690}
83691impl<'a> PhysicalDeviceShaderInstrumentationFeaturesARMBuilder<'a> {
83692    #[inline]
83693    pub fn shader_instrumentation(mut self, value: bool) -> Self {
83694        self.inner.shader_instrumentation = value as u32;
83695        self
83696    }
83697    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderInstrumentationFeaturesARM`]'s **Extended By** section for valid types.
83698    #[inline]
83699    pub fn push_next<T: ExtendsPhysicalDeviceShaderInstrumentationFeaturesARM>(
83700        mut self,
83701        next: &'a mut T,
83702    ) -> Self {
83703        unsafe {
83704            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
83705            (*next_ptr).p_next = self.inner.p_next as *mut _;
83706            self.inner.p_next = <*mut BaseOutStructure>::cast::<
83707                core::ffi::c_void,
83708            >(next_ptr);
83709        }
83710        self
83711    }
83712}
83713impl<'a> core::ops::Deref for PhysicalDeviceShaderInstrumentationFeaturesARMBuilder<'a> {
83714    type Target = PhysicalDeviceShaderInstrumentationFeaturesARM;
83715    #[inline]
83716    fn deref(&self) -> &Self::Target {
83717        &self.inner
83718    }
83719}
83720impl<'a> core::ops::DerefMut
83721for PhysicalDeviceShaderInstrumentationFeaturesARMBuilder<'a> {
83722    #[inline]
83723    fn deref_mut(&mut self) -> &mut Self::Target {
83724        &mut self.inner
83725    }
83726}
83727///Builder for [`PhysicalDeviceShaderInstrumentationPropertiesARM`] with lifetime-tied pNext safety.
83728pub struct PhysicalDeviceShaderInstrumentationPropertiesARMBuilder<'a> {
83729    inner: PhysicalDeviceShaderInstrumentationPropertiesARM,
83730    _marker: core::marker::PhantomData<&'a ()>,
83731}
83732impl PhysicalDeviceShaderInstrumentationPropertiesARM {
83733    /// Start building this struct; `s_type` is already set to the correct variant.
83734    #[inline]
83735    pub fn builder<'a>() -> PhysicalDeviceShaderInstrumentationPropertiesARMBuilder<'a> {
83736        PhysicalDeviceShaderInstrumentationPropertiesARMBuilder {
83737            inner: PhysicalDeviceShaderInstrumentationPropertiesARM {
83738                s_type: StructureType::from_raw(1000607001i32),
83739                ..Default::default()
83740            },
83741            _marker: core::marker::PhantomData,
83742        }
83743    }
83744}
83745impl<'a> PhysicalDeviceShaderInstrumentationPropertiesARMBuilder<'a> {
83746    #[inline]
83747    pub fn num_metrics(mut self, value: u32) -> Self {
83748        self.inner.num_metrics = value;
83749        self
83750    }
83751    #[inline]
83752    pub fn per_basic_block_granularity(mut self, value: bool) -> Self {
83753        self.inner.per_basic_block_granularity = value as u32;
83754        self
83755    }
83756}
83757impl<'a> core::ops::Deref
83758for PhysicalDeviceShaderInstrumentationPropertiesARMBuilder<'a> {
83759    type Target = PhysicalDeviceShaderInstrumentationPropertiesARM;
83760    #[inline]
83761    fn deref(&self) -> &Self::Target {
83762        &self.inner
83763    }
83764}
83765impl<'a> core::ops::DerefMut
83766for PhysicalDeviceShaderInstrumentationPropertiesARMBuilder<'a> {
83767    #[inline]
83768    fn deref_mut(&mut self) -> &mut Self::Target {
83769        &mut self.inner
83770    }
83771}
83772///Builder for [`ShaderInstrumentationCreateInfoARM`] with lifetime-tied pNext safety.
83773pub struct ShaderInstrumentationCreateInfoARMBuilder<'a> {
83774    inner: ShaderInstrumentationCreateInfoARM,
83775    _marker: core::marker::PhantomData<&'a ()>,
83776}
83777impl ShaderInstrumentationCreateInfoARM {
83778    /// Start building this struct; `s_type` is already set to the correct variant.
83779    #[inline]
83780    pub fn builder<'a>() -> ShaderInstrumentationCreateInfoARMBuilder<'a> {
83781        ShaderInstrumentationCreateInfoARMBuilder {
83782            inner: ShaderInstrumentationCreateInfoARM {
83783                s_type: StructureType::from_raw(1000607002i32),
83784                ..Default::default()
83785            },
83786            _marker: core::marker::PhantomData,
83787        }
83788    }
83789}
83790impl<'a> ShaderInstrumentationCreateInfoARMBuilder<'a> {
83791    ///Prepend a struct to the pNext chain. See [`ShaderInstrumentationCreateInfoARM`]'s **Extended By** section for valid types.
83792    #[inline]
83793    pub fn push_next<T: ExtendsShaderInstrumentationCreateInfoARM>(
83794        mut self,
83795        next: &'a mut T,
83796    ) -> Self {
83797        unsafe {
83798            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
83799            (*next_ptr).p_next = self.inner.p_next as *mut _;
83800            self.inner.p_next = <*mut BaseOutStructure>::cast::<
83801                core::ffi::c_void,
83802            >(next_ptr);
83803        }
83804        self
83805    }
83806}
83807impl<'a> core::ops::Deref for ShaderInstrumentationCreateInfoARMBuilder<'a> {
83808    type Target = ShaderInstrumentationCreateInfoARM;
83809    #[inline]
83810    fn deref(&self) -> &Self::Target {
83811        &self.inner
83812    }
83813}
83814impl<'a> core::ops::DerefMut for ShaderInstrumentationCreateInfoARMBuilder<'a> {
83815    #[inline]
83816    fn deref_mut(&mut self) -> &mut Self::Target {
83817        &mut self.inner
83818    }
83819}
83820///Builder for [`ShaderInstrumentationMetricDescriptionARM`] with lifetime-tied pNext safety.
83821pub struct ShaderInstrumentationMetricDescriptionARMBuilder<'a> {
83822    inner: ShaderInstrumentationMetricDescriptionARM,
83823    _marker: core::marker::PhantomData<&'a ()>,
83824}
83825impl ShaderInstrumentationMetricDescriptionARM {
83826    /// Start building this struct; `s_type` is already set to the correct variant.
83827    #[inline]
83828    pub fn builder<'a>() -> ShaderInstrumentationMetricDescriptionARMBuilder<'a> {
83829        ShaderInstrumentationMetricDescriptionARMBuilder {
83830            inner: ShaderInstrumentationMetricDescriptionARM {
83831                s_type: StructureType::from_raw(1000607003i32),
83832                ..Default::default()
83833            },
83834            _marker: core::marker::PhantomData,
83835        }
83836    }
83837}
83838impl<'a> ShaderInstrumentationMetricDescriptionARMBuilder<'a> {
83839    #[inline]
83840    pub fn name(
83841        mut self,
83842        value: crate::StringArray<{ MAX_DESCRIPTION_SIZE as usize }>,
83843    ) -> Self {
83844        self.inner.name = value;
83845        self
83846    }
83847    #[inline]
83848    pub fn description(
83849        mut self,
83850        value: crate::StringArray<{ MAX_DESCRIPTION_SIZE as usize }>,
83851    ) -> Self {
83852        self.inner.description = value;
83853        self
83854    }
83855    ///Prepend a struct to the pNext chain. See [`ShaderInstrumentationMetricDescriptionARM`]'s **Extended By** section for valid types.
83856    #[inline]
83857    pub fn push_next<T: ExtendsShaderInstrumentationMetricDescriptionARM>(
83858        mut self,
83859        next: &'a mut T,
83860    ) -> Self {
83861        unsafe {
83862            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
83863            (*next_ptr).p_next = self.inner.p_next as *mut _;
83864            self.inner.p_next = <*mut BaseOutStructure>::cast::<
83865                core::ffi::c_void,
83866            >(next_ptr);
83867        }
83868        self
83869    }
83870}
83871impl<'a> core::ops::Deref for ShaderInstrumentationMetricDescriptionARMBuilder<'a> {
83872    type Target = ShaderInstrumentationMetricDescriptionARM;
83873    #[inline]
83874    fn deref(&self) -> &Self::Target {
83875        &self.inner
83876    }
83877}
83878impl<'a> core::ops::DerefMut for ShaderInstrumentationMetricDescriptionARMBuilder<'a> {
83879    #[inline]
83880    fn deref_mut(&mut self) -> &mut Self::Target {
83881        &mut self.inner
83882    }
83883}
83884///Builder for [`ShaderInstrumentationMetricDataHeaderARM`].
83885pub struct ShaderInstrumentationMetricDataHeaderARMBuilder {
83886    inner: ShaderInstrumentationMetricDataHeaderARM,
83887}
83888impl ShaderInstrumentationMetricDataHeaderARM {
83889    /// Start building this struct.
83890    #[inline]
83891    pub fn builder() -> ShaderInstrumentationMetricDataHeaderARMBuilder {
83892        ShaderInstrumentationMetricDataHeaderARMBuilder {
83893            inner: ShaderInstrumentationMetricDataHeaderARM {
83894                ..Default::default()
83895            },
83896        }
83897    }
83898}
83899impl ShaderInstrumentationMetricDataHeaderARMBuilder {
83900    #[inline]
83901    pub fn result_index(mut self, value: u32) -> Self {
83902        self.inner.result_index = value;
83903        self
83904    }
83905    #[inline]
83906    pub fn result_sub_index(mut self, value: u32) -> Self {
83907        self.inner.result_sub_index = value;
83908        self
83909    }
83910    #[inline]
83911    pub fn stages(mut self, value: ShaderStageFlags) -> Self {
83912        self.inner.stages = value;
83913        self
83914    }
83915    #[inline]
83916    pub fn basic_block_index(mut self, value: u32) -> Self {
83917        self.inner.basic_block_index = value;
83918        self
83919    }
83920}
83921impl core::ops::Deref for ShaderInstrumentationMetricDataHeaderARMBuilder {
83922    type Target = ShaderInstrumentationMetricDataHeaderARM;
83923    #[inline]
83924    fn deref(&self) -> &Self::Target {
83925        &self.inner
83926    }
83927}
83928impl core::ops::DerefMut for ShaderInstrumentationMetricDataHeaderARMBuilder {
83929    #[inline]
83930    fn deref_mut(&mut self) -> &mut Self::Target {
83931        &mut self.inner
83932    }
83933}
83934///Builder for [`DeviceAddressRangeKHR`].
83935pub struct DeviceAddressRangeKHRBuilder {
83936    inner: DeviceAddressRangeKHR,
83937}
83938impl DeviceAddressRangeKHR {
83939    /// Start building this struct.
83940    #[inline]
83941    pub fn builder() -> DeviceAddressRangeKHRBuilder {
83942        DeviceAddressRangeKHRBuilder {
83943            inner: DeviceAddressRangeKHR {
83944                ..Default::default()
83945            },
83946        }
83947    }
83948}
83949impl DeviceAddressRangeKHRBuilder {
83950    #[inline]
83951    pub fn address(mut self, value: u64) -> Self {
83952        self.inner.address = value;
83953        self
83954    }
83955    #[inline]
83956    pub fn size(mut self, value: u64) -> Self {
83957        self.inner.size = value;
83958        self
83959    }
83960}
83961impl core::ops::Deref for DeviceAddressRangeKHRBuilder {
83962    type Target = DeviceAddressRangeKHR;
83963    #[inline]
83964    fn deref(&self) -> &Self::Target {
83965        &self.inner
83966    }
83967}
83968impl core::ops::DerefMut for DeviceAddressRangeKHRBuilder {
83969    #[inline]
83970    fn deref_mut(&mut self) -> &mut Self::Target {
83971        &mut self.inner
83972    }
83973}
83974///Builder for [`DeviceMemoryCopyKHR`] with lifetime-tied pNext safety.
83975pub struct DeviceMemoryCopyKHRBuilder<'a> {
83976    inner: DeviceMemoryCopyKHR,
83977    _marker: core::marker::PhantomData<&'a ()>,
83978}
83979impl DeviceMemoryCopyKHR {
83980    /// Start building this struct; `s_type` is already set to the correct variant.
83981    #[inline]
83982    pub fn builder<'a>() -> DeviceMemoryCopyKHRBuilder<'a> {
83983        DeviceMemoryCopyKHRBuilder {
83984            inner: DeviceMemoryCopyKHR {
83985                s_type: StructureType::from_raw(1000318000i32),
83986                ..Default::default()
83987            },
83988            _marker: core::marker::PhantomData,
83989        }
83990    }
83991}
83992impl<'a> DeviceMemoryCopyKHRBuilder<'a> {
83993    #[inline]
83994    pub fn src_range(mut self, value: DeviceAddressRangeKHR) -> Self {
83995        self.inner.src_range = value;
83996        self
83997    }
83998    #[inline]
83999    pub fn src_flags(mut self, value: AddressCommandFlagsKHR) -> Self {
84000        self.inner.src_flags = value;
84001        self
84002    }
84003    #[inline]
84004    pub fn dst_range(mut self, value: DeviceAddressRangeKHR) -> Self {
84005        self.inner.dst_range = value;
84006        self
84007    }
84008    #[inline]
84009    pub fn dst_flags(mut self, value: AddressCommandFlagsKHR) -> Self {
84010        self.inner.dst_flags = value;
84011        self
84012    }
84013    ///Prepend a struct to the pNext chain. See [`DeviceMemoryCopyKHR`]'s **Extended By** section for valid types.
84014    #[inline]
84015    pub fn push_next<T: ExtendsDeviceMemoryCopyKHR>(mut self, next: &'a mut T) -> Self {
84016        unsafe {
84017            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
84018            (*next_ptr).p_next = self.inner.p_next as *mut _;
84019            self.inner.p_next = <*mut BaseOutStructure>::cast::<
84020                core::ffi::c_void,
84021            >(next_ptr) as *const _;
84022        }
84023        self
84024    }
84025}
84026impl<'a> core::ops::Deref for DeviceMemoryCopyKHRBuilder<'a> {
84027    type Target = DeviceMemoryCopyKHR;
84028    #[inline]
84029    fn deref(&self) -> &Self::Target {
84030        &self.inner
84031    }
84032}
84033impl<'a> core::ops::DerefMut for DeviceMemoryCopyKHRBuilder<'a> {
84034    #[inline]
84035    fn deref_mut(&mut self) -> &mut Self::Target {
84036        &mut self.inner
84037    }
84038}
84039///Builder for [`CopyDeviceMemoryInfoKHR`] with lifetime-tied pNext safety.
84040pub struct CopyDeviceMemoryInfoKHRBuilder<'a> {
84041    inner: CopyDeviceMemoryInfoKHR,
84042    _marker: core::marker::PhantomData<&'a ()>,
84043}
84044impl CopyDeviceMemoryInfoKHR {
84045    /// Start building this struct; `s_type` is already set to the correct variant.
84046    #[inline]
84047    pub fn builder<'a>() -> CopyDeviceMemoryInfoKHRBuilder<'a> {
84048        CopyDeviceMemoryInfoKHRBuilder {
84049            inner: CopyDeviceMemoryInfoKHR {
84050                s_type: StructureType::from_raw(1000318001i32),
84051                ..Default::default()
84052            },
84053            _marker: core::marker::PhantomData,
84054        }
84055    }
84056}
84057impl<'a> CopyDeviceMemoryInfoKHRBuilder<'a> {
84058    #[inline]
84059    pub fn regions(mut self, slice: &'a [DeviceMemoryCopyKHR]) -> Self {
84060        self.inner.region_count = slice.len() as u32;
84061        self.inner.p_regions = slice.as_ptr();
84062        self
84063    }
84064    ///Prepend a struct to the pNext chain. See [`CopyDeviceMemoryInfoKHR`]'s **Extended By** section for valid types.
84065    #[inline]
84066    pub fn push_next<T: ExtendsCopyDeviceMemoryInfoKHR>(
84067        mut self,
84068        next: &'a mut T,
84069    ) -> Self {
84070        unsafe {
84071            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
84072            (*next_ptr).p_next = self.inner.p_next as *mut _;
84073            self.inner.p_next = <*mut BaseOutStructure>::cast::<
84074                core::ffi::c_void,
84075            >(next_ptr) as *const _;
84076        }
84077        self
84078    }
84079}
84080impl<'a> core::ops::Deref for CopyDeviceMemoryInfoKHRBuilder<'a> {
84081    type Target = CopyDeviceMemoryInfoKHR;
84082    #[inline]
84083    fn deref(&self) -> &Self::Target {
84084        &self.inner
84085    }
84086}
84087impl<'a> core::ops::DerefMut for CopyDeviceMemoryInfoKHRBuilder<'a> {
84088    #[inline]
84089    fn deref_mut(&mut self) -> &mut Self::Target {
84090        &mut self.inner
84091    }
84092}
84093///Builder for [`DeviceMemoryImageCopyKHR`] with lifetime-tied pNext safety.
84094pub struct DeviceMemoryImageCopyKHRBuilder<'a> {
84095    inner: DeviceMemoryImageCopyKHR,
84096    _marker: core::marker::PhantomData<&'a ()>,
84097}
84098impl DeviceMemoryImageCopyKHR {
84099    /// Start building this struct; `s_type` is already set to the correct variant.
84100    #[inline]
84101    pub fn builder<'a>() -> DeviceMemoryImageCopyKHRBuilder<'a> {
84102        DeviceMemoryImageCopyKHRBuilder {
84103            inner: DeviceMemoryImageCopyKHR {
84104                s_type: StructureType::from_raw(1000318002i32),
84105                ..Default::default()
84106            },
84107            _marker: core::marker::PhantomData,
84108        }
84109    }
84110}
84111impl<'a> DeviceMemoryImageCopyKHRBuilder<'a> {
84112    #[inline]
84113    pub fn address_range(mut self, value: DeviceAddressRangeKHR) -> Self {
84114        self.inner.address_range = value;
84115        self
84116    }
84117    #[inline]
84118    pub fn address_flags(mut self, value: AddressCommandFlagsKHR) -> Self {
84119        self.inner.address_flags = value;
84120        self
84121    }
84122    #[inline]
84123    pub fn address_row_length(mut self, value: u32) -> Self {
84124        self.inner.address_row_length = value;
84125        self
84126    }
84127    #[inline]
84128    pub fn address_image_height(mut self, value: u32) -> Self {
84129        self.inner.address_image_height = value;
84130        self
84131    }
84132    #[inline]
84133    pub fn image_subresource(mut self, value: ImageSubresourceLayers) -> Self {
84134        self.inner.image_subresource = value;
84135        self
84136    }
84137    #[inline]
84138    pub fn image_layout(mut self, value: ImageLayout) -> Self {
84139        self.inner.image_layout = value;
84140        self
84141    }
84142    #[inline]
84143    pub fn image_offset(mut self, value: Offset3D) -> Self {
84144        self.inner.image_offset = value;
84145        self
84146    }
84147    #[inline]
84148    pub fn image_extent(mut self, value: Extent3D) -> Self {
84149        self.inner.image_extent = value;
84150        self
84151    }
84152    ///Prepend a struct to the pNext chain. See [`DeviceMemoryImageCopyKHR`]'s **Extended By** section for valid types.
84153    #[inline]
84154    pub fn push_next<T: ExtendsDeviceMemoryImageCopyKHR>(
84155        mut self,
84156        next: &'a mut T,
84157    ) -> Self {
84158        unsafe {
84159            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
84160            (*next_ptr).p_next = self.inner.p_next as *mut _;
84161            self.inner.p_next = <*mut BaseOutStructure>::cast::<
84162                core::ffi::c_void,
84163            >(next_ptr) as *const _;
84164        }
84165        self
84166    }
84167}
84168impl<'a> core::ops::Deref for DeviceMemoryImageCopyKHRBuilder<'a> {
84169    type Target = DeviceMemoryImageCopyKHR;
84170    #[inline]
84171    fn deref(&self) -> &Self::Target {
84172        &self.inner
84173    }
84174}
84175impl<'a> core::ops::DerefMut for DeviceMemoryImageCopyKHRBuilder<'a> {
84176    #[inline]
84177    fn deref_mut(&mut self) -> &mut Self::Target {
84178        &mut self.inner
84179    }
84180}
84181///Builder for [`CopyDeviceMemoryImageInfoKHR`] with lifetime-tied pNext safety.
84182pub struct CopyDeviceMemoryImageInfoKHRBuilder<'a> {
84183    inner: CopyDeviceMemoryImageInfoKHR,
84184    _marker: core::marker::PhantomData<&'a ()>,
84185}
84186impl CopyDeviceMemoryImageInfoKHR {
84187    /// Start building this struct; `s_type` is already set to the correct variant.
84188    #[inline]
84189    pub fn builder<'a>() -> CopyDeviceMemoryImageInfoKHRBuilder<'a> {
84190        CopyDeviceMemoryImageInfoKHRBuilder {
84191            inner: CopyDeviceMemoryImageInfoKHR {
84192                s_type: StructureType::from_raw(1000318003i32),
84193                ..Default::default()
84194            },
84195            _marker: core::marker::PhantomData,
84196        }
84197    }
84198}
84199impl<'a> CopyDeviceMemoryImageInfoKHRBuilder<'a> {
84200    #[inline]
84201    pub fn image(mut self, value: Image) -> Self {
84202        self.inner.image = value;
84203        self
84204    }
84205    #[inline]
84206    pub fn regions(mut self, slice: &'a [DeviceMemoryImageCopyKHR]) -> Self {
84207        self.inner.region_count = slice.len() as u32;
84208        self.inner.p_regions = slice.as_ptr();
84209        self
84210    }
84211    ///Prepend a struct to the pNext chain. See [`CopyDeviceMemoryImageInfoKHR`]'s **Extended By** section for valid types.
84212    #[inline]
84213    pub fn push_next<T: ExtendsCopyDeviceMemoryImageInfoKHR>(
84214        mut self,
84215        next: &'a mut T,
84216    ) -> Self {
84217        unsafe {
84218            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
84219            (*next_ptr).p_next = self.inner.p_next as *mut _;
84220            self.inner.p_next = <*mut BaseOutStructure>::cast::<
84221                core::ffi::c_void,
84222            >(next_ptr) as *const _;
84223        }
84224        self
84225    }
84226}
84227impl<'a> core::ops::Deref for CopyDeviceMemoryImageInfoKHRBuilder<'a> {
84228    type Target = CopyDeviceMemoryImageInfoKHR;
84229    #[inline]
84230    fn deref(&self) -> &Self::Target {
84231        &self.inner
84232    }
84233}
84234impl<'a> core::ops::DerefMut for CopyDeviceMemoryImageInfoKHRBuilder<'a> {
84235    #[inline]
84236    fn deref_mut(&mut self) -> &mut Self::Target {
84237        &mut self.inner
84238    }
84239}
84240///Builder for [`MemoryRangeBarriersInfoKHR`] with lifetime-tied pNext safety.
84241pub struct MemoryRangeBarriersInfoKHRBuilder<'a> {
84242    inner: MemoryRangeBarriersInfoKHR,
84243    _marker: core::marker::PhantomData<&'a ()>,
84244}
84245impl MemoryRangeBarriersInfoKHR {
84246    /// Start building this struct; `s_type` is already set to the correct variant.
84247    #[inline]
84248    pub fn builder<'a>() -> MemoryRangeBarriersInfoKHRBuilder<'a> {
84249        MemoryRangeBarriersInfoKHRBuilder {
84250            inner: MemoryRangeBarriersInfoKHR {
84251                s_type: StructureType::from_raw(1000318004i32),
84252                ..Default::default()
84253            },
84254            _marker: core::marker::PhantomData,
84255        }
84256    }
84257}
84258impl<'a> MemoryRangeBarriersInfoKHRBuilder<'a> {
84259    #[inline]
84260    pub fn memory_range_barriers(mut self, slice: &'a [MemoryRangeBarrierKHR]) -> Self {
84261        self.inner.memory_range_barrier_count = slice.len() as u32;
84262        self.inner.p_memory_range_barriers = slice.as_ptr();
84263        self
84264    }
84265    ///Prepend a struct to the pNext chain. See [`MemoryRangeBarriersInfoKHR`]'s **Extended By** section for valid types.
84266    #[inline]
84267    pub fn push_next<T: ExtendsMemoryRangeBarriersInfoKHR>(
84268        mut self,
84269        next: &'a mut T,
84270    ) -> Self {
84271        unsafe {
84272            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
84273            (*next_ptr).p_next = self.inner.p_next as *mut _;
84274            self.inner.p_next = <*mut BaseOutStructure>::cast::<
84275                core::ffi::c_void,
84276            >(next_ptr) as *const _;
84277        }
84278        self
84279    }
84280}
84281impl<'a> core::ops::Deref for MemoryRangeBarriersInfoKHRBuilder<'a> {
84282    type Target = MemoryRangeBarriersInfoKHR;
84283    #[inline]
84284    fn deref(&self) -> &Self::Target {
84285        &self.inner
84286    }
84287}
84288impl<'a> core::ops::DerefMut for MemoryRangeBarriersInfoKHRBuilder<'a> {
84289    #[inline]
84290    fn deref_mut(&mut self) -> &mut Self::Target {
84291        &mut self.inner
84292    }
84293}
84294///Builder for [`MemoryRangeBarrierKHR`] with lifetime-tied pNext safety.
84295pub struct MemoryRangeBarrierKHRBuilder<'a> {
84296    inner: MemoryRangeBarrierKHR,
84297    _marker: core::marker::PhantomData<&'a ()>,
84298}
84299impl MemoryRangeBarrierKHR {
84300    /// Start building this struct; `s_type` is already set to the correct variant.
84301    #[inline]
84302    pub fn builder<'a>() -> MemoryRangeBarrierKHRBuilder<'a> {
84303        MemoryRangeBarrierKHRBuilder {
84304            inner: MemoryRangeBarrierKHR {
84305                s_type: StructureType::from_raw(1000318005i32),
84306                ..Default::default()
84307            },
84308            _marker: core::marker::PhantomData,
84309        }
84310    }
84311}
84312impl<'a> MemoryRangeBarrierKHRBuilder<'a> {
84313    #[inline]
84314    pub fn src_stage_mask(mut self, value: PipelineStageFlags2) -> Self {
84315        self.inner.src_stage_mask = value;
84316        self
84317    }
84318    #[inline]
84319    pub fn src_access_mask(mut self, value: AccessFlags2) -> Self {
84320        self.inner.src_access_mask = value;
84321        self
84322    }
84323    #[inline]
84324    pub fn dst_stage_mask(mut self, value: PipelineStageFlags2) -> Self {
84325        self.inner.dst_stage_mask = value;
84326        self
84327    }
84328    #[inline]
84329    pub fn dst_access_mask(mut self, value: AccessFlags2) -> Self {
84330        self.inner.dst_access_mask = value;
84331        self
84332    }
84333    #[inline]
84334    pub fn src_queue_family_index(mut self, value: u32) -> Self {
84335        self.inner.src_queue_family_index = value;
84336        self
84337    }
84338    #[inline]
84339    pub fn dst_queue_family_index(mut self, value: u32) -> Self {
84340        self.inner.dst_queue_family_index = value;
84341        self
84342    }
84343    #[inline]
84344    pub fn address_range(mut self, value: DeviceAddressRangeKHR) -> Self {
84345        self.inner.address_range = value;
84346        self
84347    }
84348    #[inline]
84349    pub fn address_flags(mut self, value: AddressCommandFlagsKHR) -> Self {
84350        self.inner.address_flags = value;
84351        self
84352    }
84353    ///Prepend a struct to the pNext chain. See [`MemoryRangeBarrierKHR`]'s **Extended By** section for valid types.
84354    #[inline]
84355    pub fn push_next<T: ExtendsMemoryRangeBarrierKHR>(
84356        mut self,
84357        next: &'a mut T,
84358    ) -> Self {
84359        unsafe {
84360            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
84361            (*next_ptr).p_next = self.inner.p_next as *mut _;
84362            self.inner.p_next = <*mut BaseOutStructure>::cast::<
84363                core::ffi::c_void,
84364            >(next_ptr) as *const _;
84365        }
84366        self
84367    }
84368}
84369impl<'a> core::ops::Deref for MemoryRangeBarrierKHRBuilder<'a> {
84370    type Target = MemoryRangeBarrierKHR;
84371    #[inline]
84372    fn deref(&self) -> &Self::Target {
84373        &self.inner
84374    }
84375}
84376impl<'a> core::ops::DerefMut for MemoryRangeBarrierKHRBuilder<'a> {
84377    #[inline]
84378    fn deref_mut(&mut self) -> &mut Self::Target {
84379        &mut self.inner
84380    }
84381}
84382///Builder for [`PhysicalDeviceDeviceAddressCommandsFeaturesKHR`] with lifetime-tied pNext safety.
84383pub struct PhysicalDeviceDeviceAddressCommandsFeaturesKHRBuilder<'a> {
84384    inner: PhysicalDeviceDeviceAddressCommandsFeaturesKHR,
84385    _marker: core::marker::PhantomData<&'a ()>,
84386}
84387impl PhysicalDeviceDeviceAddressCommandsFeaturesKHR {
84388    /// Start building this struct; `s_type` is already set to the correct variant.
84389    #[inline]
84390    pub fn builder<'a>() -> PhysicalDeviceDeviceAddressCommandsFeaturesKHRBuilder<'a> {
84391        PhysicalDeviceDeviceAddressCommandsFeaturesKHRBuilder {
84392            inner: PhysicalDeviceDeviceAddressCommandsFeaturesKHR {
84393                s_type: StructureType::from_raw(1000318006i32),
84394                ..Default::default()
84395            },
84396            _marker: core::marker::PhantomData,
84397        }
84398    }
84399}
84400impl<'a> PhysicalDeviceDeviceAddressCommandsFeaturesKHRBuilder<'a> {
84401    #[inline]
84402    pub fn device_address_commands(mut self, value: bool) -> Self {
84403        self.inner.device_address_commands = value as u32;
84404        self
84405    }
84406    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceDeviceAddressCommandsFeaturesKHR`]'s **Extended By** section for valid types.
84407    #[inline]
84408    pub fn push_next<T: ExtendsPhysicalDeviceDeviceAddressCommandsFeaturesKHR>(
84409        mut self,
84410        next: &'a mut T,
84411    ) -> Self {
84412        unsafe {
84413            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
84414            (*next_ptr).p_next = self.inner.p_next as *mut _;
84415            self.inner.p_next = <*mut BaseOutStructure>::cast::<
84416                core::ffi::c_void,
84417            >(next_ptr);
84418        }
84419        self
84420    }
84421}
84422impl<'a> core::ops::Deref for PhysicalDeviceDeviceAddressCommandsFeaturesKHRBuilder<'a> {
84423    type Target = PhysicalDeviceDeviceAddressCommandsFeaturesKHR;
84424    #[inline]
84425    fn deref(&self) -> &Self::Target {
84426        &self.inner
84427    }
84428}
84429impl<'a> core::ops::DerefMut
84430for PhysicalDeviceDeviceAddressCommandsFeaturesKHRBuilder<'a> {
84431    #[inline]
84432    fn deref_mut(&mut self) -> &mut Self::Target {
84433        &mut self.inner
84434    }
84435}
84436///Builder for [`ConditionalRenderingBeginInfo2EXT`] with lifetime-tied pNext safety.
84437pub struct ConditionalRenderingBeginInfo2EXTBuilder<'a> {
84438    inner: ConditionalRenderingBeginInfo2EXT,
84439    _marker: core::marker::PhantomData<&'a ()>,
84440}
84441impl ConditionalRenderingBeginInfo2EXT {
84442    /// Start building this struct; `s_type` is already set to the correct variant.
84443    #[inline]
84444    pub fn builder<'a>() -> ConditionalRenderingBeginInfo2EXTBuilder<'a> {
84445        ConditionalRenderingBeginInfo2EXTBuilder {
84446            inner: ConditionalRenderingBeginInfo2EXT {
84447                s_type: StructureType::from_raw(1000318012i32),
84448                ..Default::default()
84449            },
84450            _marker: core::marker::PhantomData,
84451        }
84452    }
84453}
84454impl<'a> ConditionalRenderingBeginInfo2EXTBuilder<'a> {
84455    #[inline]
84456    pub fn address_range(mut self, value: DeviceAddressRangeKHR) -> Self {
84457        self.inner.address_range = value;
84458        self
84459    }
84460    #[inline]
84461    pub fn address_flags(mut self, value: AddressCommandFlagsKHR) -> Self {
84462        self.inner.address_flags = value;
84463        self
84464    }
84465    #[inline]
84466    pub fn flags(mut self, value: ConditionalRenderingFlagsEXT) -> Self {
84467        self.inner.flags = value;
84468        self
84469    }
84470    ///Prepend a struct to the pNext chain. See [`ConditionalRenderingBeginInfo2EXT`]'s **Extended By** section for valid types.
84471    #[inline]
84472    pub fn push_next<T: ExtendsConditionalRenderingBeginInfo2EXT>(
84473        mut self,
84474        next: &'a mut T,
84475    ) -> Self {
84476        unsafe {
84477            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
84478            (*next_ptr).p_next = self.inner.p_next as *mut _;
84479            self.inner.p_next = <*mut BaseOutStructure>::cast::<
84480                core::ffi::c_void,
84481            >(next_ptr) as *const _;
84482        }
84483        self
84484    }
84485}
84486impl<'a> core::ops::Deref for ConditionalRenderingBeginInfo2EXTBuilder<'a> {
84487    type Target = ConditionalRenderingBeginInfo2EXT;
84488    #[inline]
84489    fn deref(&self) -> &Self::Target {
84490        &self.inner
84491    }
84492}
84493impl<'a> core::ops::DerefMut for ConditionalRenderingBeginInfo2EXTBuilder<'a> {
84494    #[inline]
84495    fn deref_mut(&mut self) -> &mut Self::Target {
84496        &mut self.inner
84497    }
84498}
84499///Builder for [`AccelerationStructureCreateInfo2KHR`] with lifetime-tied pNext safety.
84500pub struct AccelerationStructureCreateInfo2KHRBuilder<'a> {
84501    inner: AccelerationStructureCreateInfo2KHR,
84502    _marker: core::marker::PhantomData<&'a ()>,
84503}
84504impl AccelerationStructureCreateInfo2KHR {
84505    /// Start building this struct; `s_type` is already set to the correct variant.
84506    #[inline]
84507    pub fn builder<'a>() -> AccelerationStructureCreateInfo2KHRBuilder<'a> {
84508        AccelerationStructureCreateInfo2KHRBuilder {
84509            inner: AccelerationStructureCreateInfo2KHR {
84510                s_type: StructureType::from_raw(1000318015i32),
84511                ..Default::default()
84512            },
84513            _marker: core::marker::PhantomData,
84514        }
84515    }
84516}
84517impl<'a> AccelerationStructureCreateInfo2KHRBuilder<'a> {
84518    #[inline]
84519    pub fn create_flags(mut self, value: AccelerationStructureCreateFlagsKHR) -> Self {
84520        self.inner.create_flags = value;
84521        self
84522    }
84523    #[inline]
84524    pub fn address_range(mut self, value: DeviceAddressRangeKHR) -> Self {
84525        self.inner.address_range = value;
84526        self
84527    }
84528    #[inline]
84529    pub fn address_flags(mut self, value: AddressCommandFlagsKHR) -> Self {
84530        self.inner.address_flags = value;
84531        self
84532    }
84533    #[inline]
84534    pub fn r#type(mut self, value: AccelerationStructureTypeKHR) -> Self {
84535        self.inner.r#type = value;
84536        self
84537    }
84538    ///Prepend a struct to the pNext chain. See [`AccelerationStructureCreateInfo2KHR`]'s **Extended By** section for valid types.
84539    #[inline]
84540    pub fn push_next<T: ExtendsAccelerationStructureCreateInfo2KHR>(
84541        mut self,
84542        next: &'a mut T,
84543    ) -> Self {
84544        unsafe {
84545            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
84546            (*next_ptr).p_next = self.inner.p_next as *mut _;
84547            self.inner.p_next = <*mut BaseOutStructure>::cast::<
84548                core::ffi::c_void,
84549            >(next_ptr) as *const _;
84550        }
84551        self
84552    }
84553}
84554impl<'a> core::ops::Deref for AccelerationStructureCreateInfo2KHRBuilder<'a> {
84555    type Target = AccelerationStructureCreateInfo2KHR;
84556    #[inline]
84557    fn deref(&self) -> &Self::Target {
84558        &self.inner
84559    }
84560}
84561impl<'a> core::ops::DerefMut for AccelerationStructureCreateInfo2KHRBuilder<'a> {
84562    #[inline]
84563    fn deref_mut(&mut self) -> &mut Self::Target {
84564        &mut self.inner
84565    }
84566}
84567///Builder for [`BindIndexBuffer3InfoKHR`] with lifetime-tied pNext safety.
84568pub struct BindIndexBuffer3InfoKHRBuilder<'a> {
84569    inner: BindIndexBuffer3InfoKHR,
84570    _marker: core::marker::PhantomData<&'a ()>,
84571}
84572impl BindIndexBuffer3InfoKHR {
84573    /// Start building this struct; `s_type` is already set to the correct variant.
84574    #[inline]
84575    pub fn builder<'a>() -> BindIndexBuffer3InfoKHRBuilder<'a> {
84576        BindIndexBuffer3InfoKHRBuilder {
84577            inner: BindIndexBuffer3InfoKHR {
84578                s_type: StructureType::from_raw(1000318007i32),
84579                ..Default::default()
84580            },
84581            _marker: core::marker::PhantomData,
84582        }
84583    }
84584}
84585impl<'a> BindIndexBuffer3InfoKHRBuilder<'a> {
84586    #[inline]
84587    pub fn address_range(mut self, value: DeviceAddressRangeKHR) -> Self {
84588        self.inner.address_range = value;
84589        self
84590    }
84591    #[inline]
84592    pub fn address_flags(mut self, value: AddressCommandFlagsKHR) -> Self {
84593        self.inner.address_flags = value;
84594        self
84595    }
84596    #[inline]
84597    pub fn index_type(mut self, value: IndexType) -> Self {
84598        self.inner.index_type = value;
84599        self
84600    }
84601    ///Prepend a struct to the pNext chain. See [`BindIndexBuffer3InfoKHR`]'s **Extended By** section for valid types.
84602    #[inline]
84603    pub fn push_next<T: ExtendsBindIndexBuffer3InfoKHR>(
84604        mut self,
84605        next: &'a mut T,
84606    ) -> Self {
84607        unsafe {
84608            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
84609            (*next_ptr).p_next = self.inner.p_next as *mut _;
84610            self.inner.p_next = <*mut BaseOutStructure>::cast::<
84611                core::ffi::c_void,
84612            >(next_ptr) as *const _;
84613        }
84614        self
84615    }
84616}
84617impl<'a> core::ops::Deref for BindIndexBuffer3InfoKHRBuilder<'a> {
84618    type Target = BindIndexBuffer3InfoKHR;
84619    #[inline]
84620    fn deref(&self) -> &Self::Target {
84621        &self.inner
84622    }
84623}
84624impl<'a> core::ops::DerefMut for BindIndexBuffer3InfoKHRBuilder<'a> {
84625    #[inline]
84626    fn deref_mut(&mut self) -> &mut Self::Target {
84627        &mut self.inner
84628    }
84629}
84630///Builder for [`BindVertexBuffer3InfoKHR`] with lifetime-tied pNext safety.
84631pub struct BindVertexBuffer3InfoKHRBuilder<'a> {
84632    inner: BindVertexBuffer3InfoKHR,
84633    _marker: core::marker::PhantomData<&'a ()>,
84634}
84635impl BindVertexBuffer3InfoKHR {
84636    /// Start building this struct; `s_type` is already set to the correct variant.
84637    #[inline]
84638    pub fn builder<'a>() -> BindVertexBuffer3InfoKHRBuilder<'a> {
84639        BindVertexBuffer3InfoKHRBuilder {
84640            inner: BindVertexBuffer3InfoKHR {
84641                s_type: StructureType::from_raw(1000318008i32),
84642                ..Default::default()
84643            },
84644            _marker: core::marker::PhantomData,
84645        }
84646    }
84647}
84648impl<'a> BindVertexBuffer3InfoKHRBuilder<'a> {
84649    #[inline]
84650    pub fn set_stride(mut self, value: bool) -> Self {
84651        self.inner.set_stride = value as u32;
84652        self
84653    }
84654    #[inline]
84655    pub fn address_range(mut self, value: StridedDeviceAddressRangeKHR) -> Self {
84656        self.inner.address_range = value;
84657        self
84658    }
84659    #[inline]
84660    pub fn address_flags(mut self, value: AddressCommandFlagsKHR) -> Self {
84661        self.inner.address_flags = value;
84662        self
84663    }
84664    ///Prepend a struct to the pNext chain. See [`BindVertexBuffer3InfoKHR`]'s **Extended By** section for valid types.
84665    #[inline]
84666    pub fn push_next<T: ExtendsBindVertexBuffer3InfoKHR>(
84667        mut self,
84668        next: &'a mut T,
84669    ) -> Self {
84670        unsafe {
84671            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
84672            (*next_ptr).p_next = self.inner.p_next as *mut _;
84673            self.inner.p_next = <*mut BaseOutStructure>::cast::<
84674                core::ffi::c_void,
84675            >(next_ptr) as *const _;
84676        }
84677        self
84678    }
84679}
84680impl<'a> core::ops::Deref for BindVertexBuffer3InfoKHRBuilder<'a> {
84681    type Target = BindVertexBuffer3InfoKHR;
84682    #[inline]
84683    fn deref(&self) -> &Self::Target {
84684        &self.inner
84685    }
84686}
84687impl<'a> core::ops::DerefMut for BindVertexBuffer3InfoKHRBuilder<'a> {
84688    #[inline]
84689    fn deref_mut(&mut self) -> &mut Self::Target {
84690        &mut self.inner
84691    }
84692}
84693///Builder for [`DrawIndirect2InfoKHR`] with lifetime-tied pNext safety.
84694pub struct DrawIndirect2InfoKHRBuilder<'a> {
84695    inner: DrawIndirect2InfoKHR,
84696    _marker: core::marker::PhantomData<&'a ()>,
84697}
84698impl DrawIndirect2InfoKHR {
84699    /// Start building this struct; `s_type` is already set to the correct variant.
84700    #[inline]
84701    pub fn builder<'a>() -> DrawIndirect2InfoKHRBuilder<'a> {
84702        DrawIndirect2InfoKHRBuilder {
84703            inner: DrawIndirect2InfoKHR {
84704                s_type: StructureType::from_raw(1000318009i32),
84705                ..Default::default()
84706            },
84707            _marker: core::marker::PhantomData,
84708        }
84709    }
84710}
84711impl<'a> DrawIndirect2InfoKHRBuilder<'a> {
84712    #[inline]
84713    pub fn address_range(mut self, value: StridedDeviceAddressRangeKHR) -> Self {
84714        self.inner.address_range = value;
84715        self
84716    }
84717    #[inline]
84718    pub fn address_flags(mut self, value: AddressCommandFlagsKHR) -> Self {
84719        self.inner.address_flags = value;
84720        self
84721    }
84722    #[inline]
84723    pub fn draw_count(mut self, value: u32) -> Self {
84724        self.inner.draw_count = value;
84725        self
84726    }
84727    ///Prepend a struct to the pNext chain. See [`DrawIndirect2InfoKHR`]'s **Extended By** section for valid types.
84728    #[inline]
84729    pub fn push_next<T: ExtendsDrawIndirect2InfoKHR>(mut self, next: &'a mut T) -> Self {
84730        unsafe {
84731            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
84732            (*next_ptr).p_next = self.inner.p_next as *mut _;
84733            self.inner.p_next = <*mut BaseOutStructure>::cast::<
84734                core::ffi::c_void,
84735            >(next_ptr) as *const _;
84736        }
84737        self
84738    }
84739}
84740impl<'a> core::ops::Deref for DrawIndirect2InfoKHRBuilder<'a> {
84741    type Target = DrawIndirect2InfoKHR;
84742    #[inline]
84743    fn deref(&self) -> &Self::Target {
84744        &self.inner
84745    }
84746}
84747impl<'a> core::ops::DerefMut for DrawIndirect2InfoKHRBuilder<'a> {
84748    #[inline]
84749    fn deref_mut(&mut self) -> &mut Self::Target {
84750        &mut self.inner
84751    }
84752}
84753///Builder for [`DrawIndirectCount2InfoKHR`] with lifetime-tied pNext safety.
84754pub struct DrawIndirectCount2InfoKHRBuilder<'a> {
84755    inner: DrawIndirectCount2InfoKHR,
84756    _marker: core::marker::PhantomData<&'a ()>,
84757}
84758impl DrawIndirectCount2InfoKHR {
84759    /// Start building this struct; `s_type` is already set to the correct variant.
84760    #[inline]
84761    pub fn builder<'a>() -> DrawIndirectCount2InfoKHRBuilder<'a> {
84762        DrawIndirectCount2InfoKHRBuilder {
84763            inner: DrawIndirectCount2InfoKHR {
84764                s_type: StructureType::from_raw(1000318010i32),
84765                ..Default::default()
84766            },
84767            _marker: core::marker::PhantomData,
84768        }
84769    }
84770}
84771impl<'a> DrawIndirectCount2InfoKHRBuilder<'a> {
84772    #[inline]
84773    pub fn address_range(mut self, value: StridedDeviceAddressRangeKHR) -> Self {
84774        self.inner.address_range = value;
84775        self
84776    }
84777    #[inline]
84778    pub fn address_flags(mut self, value: AddressCommandFlagsKHR) -> Self {
84779        self.inner.address_flags = value;
84780        self
84781    }
84782    #[inline]
84783    pub fn count_address_range(mut self, value: DeviceAddressRangeKHR) -> Self {
84784        self.inner.count_address_range = value;
84785        self
84786    }
84787    #[inline]
84788    pub fn count_address_flags(mut self, value: AddressCommandFlagsKHR) -> Self {
84789        self.inner.count_address_flags = value;
84790        self
84791    }
84792    #[inline]
84793    pub fn max_draw_count(mut self, value: u32) -> Self {
84794        self.inner.max_draw_count = value;
84795        self
84796    }
84797    ///Prepend a struct to the pNext chain. See [`DrawIndirectCount2InfoKHR`]'s **Extended By** section for valid types.
84798    #[inline]
84799    pub fn push_next<T: ExtendsDrawIndirectCount2InfoKHR>(
84800        mut self,
84801        next: &'a mut T,
84802    ) -> Self {
84803        unsafe {
84804            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
84805            (*next_ptr).p_next = self.inner.p_next as *mut _;
84806            self.inner.p_next = <*mut BaseOutStructure>::cast::<
84807                core::ffi::c_void,
84808            >(next_ptr) as *const _;
84809        }
84810        self
84811    }
84812}
84813impl<'a> core::ops::Deref for DrawIndirectCount2InfoKHRBuilder<'a> {
84814    type Target = DrawIndirectCount2InfoKHR;
84815    #[inline]
84816    fn deref(&self) -> &Self::Target {
84817        &self.inner
84818    }
84819}
84820impl<'a> core::ops::DerefMut for DrawIndirectCount2InfoKHRBuilder<'a> {
84821    #[inline]
84822    fn deref_mut(&mut self) -> &mut Self::Target {
84823        &mut self.inner
84824    }
84825}
84826///Builder for [`DispatchIndirect2InfoKHR`] with lifetime-tied pNext safety.
84827pub struct DispatchIndirect2InfoKHRBuilder<'a> {
84828    inner: DispatchIndirect2InfoKHR,
84829    _marker: core::marker::PhantomData<&'a ()>,
84830}
84831impl DispatchIndirect2InfoKHR {
84832    /// Start building this struct; `s_type` is already set to the correct variant.
84833    #[inline]
84834    pub fn builder<'a>() -> DispatchIndirect2InfoKHRBuilder<'a> {
84835        DispatchIndirect2InfoKHRBuilder {
84836            inner: DispatchIndirect2InfoKHR {
84837                s_type: StructureType::from_raw(1000318011i32),
84838                ..Default::default()
84839            },
84840            _marker: core::marker::PhantomData,
84841        }
84842    }
84843}
84844impl<'a> DispatchIndirect2InfoKHRBuilder<'a> {
84845    #[inline]
84846    pub fn address_range(mut self, value: DeviceAddressRangeKHR) -> Self {
84847        self.inner.address_range = value;
84848        self
84849    }
84850    #[inline]
84851    pub fn address_flags(mut self, value: AddressCommandFlagsKHR) -> Self {
84852        self.inner.address_flags = value;
84853        self
84854    }
84855    ///Prepend a struct to the pNext chain. See [`DispatchIndirect2InfoKHR`]'s **Extended By** section for valid types.
84856    #[inline]
84857    pub fn push_next<T: ExtendsDispatchIndirect2InfoKHR>(
84858        mut self,
84859        next: &'a mut T,
84860    ) -> Self {
84861        unsafe {
84862            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
84863            (*next_ptr).p_next = self.inner.p_next as *mut _;
84864            self.inner.p_next = <*mut BaseOutStructure>::cast::<
84865                core::ffi::c_void,
84866            >(next_ptr) as *const _;
84867        }
84868        self
84869    }
84870}
84871impl<'a> core::ops::Deref for DispatchIndirect2InfoKHRBuilder<'a> {
84872    type Target = DispatchIndirect2InfoKHR;
84873    #[inline]
84874    fn deref(&self) -> &Self::Target {
84875        &self.inner
84876    }
84877}
84878impl<'a> core::ops::DerefMut for DispatchIndirect2InfoKHRBuilder<'a> {
84879    #[inline]
84880    fn deref_mut(&mut self) -> &mut Self::Target {
84881        &mut self.inner
84882    }
84883}
84884///Builder for [`BindTransformFeedbackBuffer2InfoEXT`] with lifetime-tied pNext safety.
84885pub struct BindTransformFeedbackBuffer2InfoEXTBuilder<'a> {
84886    inner: BindTransformFeedbackBuffer2InfoEXT,
84887    _marker: core::marker::PhantomData<&'a ()>,
84888}
84889impl BindTransformFeedbackBuffer2InfoEXT {
84890    /// Start building this struct; `s_type` is already set to the correct variant.
84891    #[inline]
84892    pub fn builder<'a>() -> BindTransformFeedbackBuffer2InfoEXTBuilder<'a> {
84893        BindTransformFeedbackBuffer2InfoEXTBuilder {
84894            inner: BindTransformFeedbackBuffer2InfoEXT {
84895                s_type: StructureType::from_raw(1000318013i32),
84896                ..Default::default()
84897            },
84898            _marker: core::marker::PhantomData,
84899        }
84900    }
84901}
84902impl<'a> BindTransformFeedbackBuffer2InfoEXTBuilder<'a> {
84903    #[inline]
84904    pub fn address_range(mut self, value: DeviceAddressRangeKHR) -> Self {
84905        self.inner.address_range = value;
84906        self
84907    }
84908    #[inline]
84909    pub fn address_flags(mut self, value: AddressCommandFlagsKHR) -> Self {
84910        self.inner.address_flags = value;
84911        self
84912    }
84913    ///Prepend a struct to the pNext chain. See [`BindTransformFeedbackBuffer2InfoEXT`]'s **Extended By** section for valid types.
84914    #[inline]
84915    pub fn push_next<T: ExtendsBindTransformFeedbackBuffer2InfoEXT>(
84916        mut self,
84917        next: &'a mut T,
84918    ) -> Self {
84919        unsafe {
84920            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
84921            (*next_ptr).p_next = self.inner.p_next as *mut _;
84922            self.inner.p_next = <*mut BaseOutStructure>::cast::<
84923                core::ffi::c_void,
84924            >(next_ptr) as *const _;
84925        }
84926        self
84927    }
84928}
84929impl<'a> core::ops::Deref for BindTransformFeedbackBuffer2InfoEXTBuilder<'a> {
84930    type Target = BindTransformFeedbackBuffer2InfoEXT;
84931    #[inline]
84932    fn deref(&self) -> &Self::Target {
84933        &self.inner
84934    }
84935}
84936impl<'a> core::ops::DerefMut for BindTransformFeedbackBuffer2InfoEXTBuilder<'a> {
84937    #[inline]
84938    fn deref_mut(&mut self) -> &mut Self::Target {
84939        &mut self.inner
84940    }
84941}
84942///Builder for [`MemoryMarkerInfoAMD`] with lifetime-tied pNext safety.
84943pub struct MemoryMarkerInfoAMDBuilder<'a> {
84944    inner: MemoryMarkerInfoAMD,
84945    _marker: core::marker::PhantomData<&'a ()>,
84946}
84947impl MemoryMarkerInfoAMD {
84948    /// Start building this struct; `s_type` is already set to the correct variant.
84949    #[inline]
84950    pub fn builder<'a>() -> MemoryMarkerInfoAMDBuilder<'a> {
84951        MemoryMarkerInfoAMDBuilder {
84952            inner: MemoryMarkerInfoAMD {
84953                s_type: StructureType::from_raw(1000318014i32),
84954                ..Default::default()
84955            },
84956            _marker: core::marker::PhantomData,
84957        }
84958    }
84959}
84960impl<'a> MemoryMarkerInfoAMDBuilder<'a> {
84961    #[inline]
84962    pub fn stage(mut self, value: PipelineStageFlags2KHR) -> Self {
84963        self.inner.stage = value;
84964        self
84965    }
84966    #[inline]
84967    pub fn dst_range(mut self, value: DeviceAddressRangeKHR) -> Self {
84968        self.inner.dst_range = value;
84969        self
84970    }
84971    #[inline]
84972    pub fn dst_flags(mut self, value: AddressCommandFlagsKHR) -> Self {
84973        self.inner.dst_flags = value;
84974        self
84975    }
84976    #[inline]
84977    pub fn marker(mut self, value: u32) -> Self {
84978        self.inner.marker = value;
84979        self
84980    }
84981    ///Prepend a struct to the pNext chain. See [`MemoryMarkerInfoAMD`]'s **Extended By** section for valid types.
84982    #[inline]
84983    pub fn push_next<T: ExtendsMemoryMarkerInfoAMD>(mut self, next: &'a mut T) -> Self {
84984        unsafe {
84985            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
84986            (*next_ptr).p_next = self.inner.p_next as *mut _;
84987            self.inner.p_next = <*mut BaseOutStructure>::cast::<
84988                core::ffi::c_void,
84989            >(next_ptr) as *const _;
84990        }
84991        self
84992    }
84993}
84994impl<'a> core::ops::Deref for MemoryMarkerInfoAMDBuilder<'a> {
84995    type Target = MemoryMarkerInfoAMD;
84996    #[inline]
84997    fn deref(&self) -> &Self::Target {
84998        &self.inner
84999    }
85000}
85001impl<'a> core::ops::DerefMut for MemoryMarkerInfoAMDBuilder<'a> {
85002    #[inline]
85003    fn deref_mut(&mut self) -> &mut Self::Target {
85004        &mut self.inner
85005    }
85006}
85007///Builder for [`PhysicalDeviceShaderConstantDataFeaturesKHR`] with lifetime-tied pNext safety.
85008pub struct PhysicalDeviceShaderConstantDataFeaturesKHRBuilder<'a> {
85009    inner: PhysicalDeviceShaderConstantDataFeaturesKHR,
85010    _marker: core::marker::PhantomData<&'a ()>,
85011}
85012impl PhysicalDeviceShaderConstantDataFeaturesKHR {
85013    /// Start building this struct; `s_type` is already set to the correct variant.
85014    #[inline]
85015    pub fn builder<'a>() -> PhysicalDeviceShaderConstantDataFeaturesKHRBuilder<'a> {
85016        PhysicalDeviceShaderConstantDataFeaturesKHRBuilder {
85017            inner: PhysicalDeviceShaderConstantDataFeaturesKHR {
85018                s_type: StructureType::from_raw(1000231000i32),
85019                ..Default::default()
85020            },
85021            _marker: core::marker::PhantomData,
85022        }
85023    }
85024}
85025impl<'a> PhysicalDeviceShaderConstantDataFeaturesKHRBuilder<'a> {
85026    #[inline]
85027    pub fn shader_constant_data(mut self, value: bool) -> Self {
85028        self.inner.shader_constant_data = value as u32;
85029        self
85030    }
85031    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderConstantDataFeaturesKHR`]'s **Extended By** section for valid types.
85032    #[inline]
85033    pub fn push_next<T: ExtendsPhysicalDeviceShaderConstantDataFeaturesKHR>(
85034        mut self,
85035        next: &'a mut T,
85036    ) -> Self {
85037        unsafe {
85038            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
85039            (*next_ptr).p_next = self.inner.p_next as *mut _;
85040            self.inner.p_next = <*mut BaseOutStructure>::cast::<
85041                core::ffi::c_void,
85042            >(next_ptr);
85043        }
85044        self
85045    }
85046}
85047impl<'a> core::ops::Deref for PhysicalDeviceShaderConstantDataFeaturesKHRBuilder<'a> {
85048    type Target = PhysicalDeviceShaderConstantDataFeaturesKHR;
85049    #[inline]
85050    fn deref(&self) -> &Self::Target {
85051        &self.inner
85052    }
85053}
85054impl<'a> core::ops::DerefMut for PhysicalDeviceShaderConstantDataFeaturesKHRBuilder<'a> {
85055    #[inline]
85056    fn deref_mut(&mut self) -> &mut Self::Target {
85057        &mut self.inner
85058    }
85059}
85060///Builder for [`PhysicalDeviceShaderAbortFeaturesKHR`] with lifetime-tied pNext safety.
85061pub struct PhysicalDeviceShaderAbortFeaturesKHRBuilder<'a> {
85062    inner: PhysicalDeviceShaderAbortFeaturesKHR,
85063    _marker: core::marker::PhantomData<&'a ()>,
85064}
85065impl PhysicalDeviceShaderAbortFeaturesKHR {
85066    /// Start building this struct; `s_type` is already set to the correct variant.
85067    #[inline]
85068    pub fn builder<'a>() -> PhysicalDeviceShaderAbortFeaturesKHRBuilder<'a> {
85069        PhysicalDeviceShaderAbortFeaturesKHRBuilder {
85070            inner: PhysicalDeviceShaderAbortFeaturesKHR {
85071                s_type: StructureType::from_raw(1000233000i32),
85072                ..Default::default()
85073            },
85074            _marker: core::marker::PhantomData,
85075        }
85076    }
85077}
85078impl<'a> PhysicalDeviceShaderAbortFeaturesKHRBuilder<'a> {
85079    #[inline]
85080    pub fn shader_abort(mut self, value: bool) -> Self {
85081        self.inner.shader_abort = value as u32;
85082        self
85083    }
85084    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderAbortFeaturesKHR`]'s **Extended By** section for valid types.
85085    #[inline]
85086    pub fn push_next<T: ExtendsPhysicalDeviceShaderAbortFeaturesKHR>(
85087        mut self,
85088        next: &'a mut T,
85089    ) -> Self {
85090        unsafe {
85091            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
85092            (*next_ptr).p_next = self.inner.p_next as *mut _;
85093            self.inner.p_next = <*mut BaseOutStructure>::cast::<
85094                core::ffi::c_void,
85095            >(next_ptr);
85096        }
85097        self
85098    }
85099}
85100impl<'a> core::ops::Deref for PhysicalDeviceShaderAbortFeaturesKHRBuilder<'a> {
85101    type Target = PhysicalDeviceShaderAbortFeaturesKHR;
85102    #[inline]
85103    fn deref(&self) -> &Self::Target {
85104        &self.inner
85105    }
85106}
85107impl<'a> core::ops::DerefMut for PhysicalDeviceShaderAbortFeaturesKHRBuilder<'a> {
85108    #[inline]
85109    fn deref_mut(&mut self) -> &mut Self::Target {
85110        &mut self.inner
85111    }
85112}
85113///Builder for [`PhysicalDeviceShaderAbortPropertiesKHR`] with lifetime-tied pNext safety.
85114pub struct PhysicalDeviceShaderAbortPropertiesKHRBuilder<'a> {
85115    inner: PhysicalDeviceShaderAbortPropertiesKHR,
85116    _marker: core::marker::PhantomData<&'a ()>,
85117}
85118impl PhysicalDeviceShaderAbortPropertiesKHR {
85119    /// Start building this struct; `s_type` is already set to the correct variant.
85120    #[inline]
85121    pub fn builder<'a>() -> PhysicalDeviceShaderAbortPropertiesKHRBuilder<'a> {
85122        PhysicalDeviceShaderAbortPropertiesKHRBuilder {
85123            inner: PhysicalDeviceShaderAbortPropertiesKHR {
85124                s_type: StructureType::from_raw(1000233002i32),
85125                ..Default::default()
85126            },
85127            _marker: core::marker::PhantomData,
85128        }
85129    }
85130}
85131impl<'a> PhysicalDeviceShaderAbortPropertiesKHRBuilder<'a> {
85132    #[inline]
85133    pub fn max_shader_abort_message_size(mut self, value: u64) -> Self {
85134        self.inner.max_shader_abort_message_size = value;
85135        self
85136    }
85137    ///Prepend a struct to the pNext chain. See [`PhysicalDeviceShaderAbortPropertiesKHR`]'s **Extended By** section for valid types.
85138    #[inline]
85139    pub fn push_next<T: ExtendsPhysicalDeviceShaderAbortPropertiesKHR>(
85140        mut self,
85141        next: &'a mut T,
85142    ) -> Self {
85143        unsafe {
85144            let next_ptr = <*mut T>::cast::<BaseOutStructure>(next);
85145            (*next_ptr).p_next = self.inner.p_next as *mut _;
85146            self.inner.p_next = <*mut BaseOutStructure>::cast::<
85147                core::ffi::c_void,
85148            >(next_ptr);
85149        }
85150        self
85151    }
85152}
85153impl<'a> core::ops::Deref for PhysicalDeviceShaderAbortPropertiesKHRBuilder<'a> {
85154    type Target = PhysicalDeviceShaderAbortPropertiesKHR;
85155    #[inline]
85156    fn deref(&self) -> &Self::Target {
85157        &self.inner
85158    }
85159}
85160impl<'a> core::ops::DerefMut for PhysicalDeviceShaderAbortPropertiesKHRBuilder<'a> {
85161    #[inline]
85162    fn deref_mut(&mut self) -> &mut Self::Target {
85163        &mut self.inner
85164    }
85165}
85166///Builder for [`DeviceFaultShaderAbortMessageInfoKHR`] with lifetime-tied pNext safety.
85167pub struct DeviceFaultShaderAbortMessageInfoKHRBuilder<'a> {
85168    inner: DeviceFaultShaderAbortMessageInfoKHR,
85169    _marker: core::marker::PhantomData<&'a ()>,
85170}
85171impl DeviceFaultShaderAbortMessageInfoKHR {
85172    /// Start building this struct; `s_type` is already set to the correct variant.
85173    #[inline]
85174    pub fn builder<'a>() -> DeviceFaultShaderAbortMessageInfoKHRBuilder<'a> {
85175        DeviceFaultShaderAbortMessageInfoKHRBuilder {
85176            inner: DeviceFaultShaderAbortMessageInfoKHR {
85177                s_type: StructureType::from_raw(1000233001i32),
85178                ..Default::default()
85179            },
85180            _marker: core::marker::PhantomData,
85181        }
85182    }
85183}
85184impl<'a> DeviceFaultShaderAbortMessageInfoKHRBuilder<'a> {
85185    #[inline]
85186    pub fn message_data_size(mut self, value: u64) -> Self {
85187        self.inner.message_data_size = value;
85188        self
85189    }
85190    #[inline]
85191    pub fn message_data(mut self, value: *mut core::ffi::c_void) -> Self {
85192        self.inner.p_message_data = value;
85193        self
85194    }
85195}
85196impl<'a> core::ops::Deref for DeviceFaultShaderAbortMessageInfoKHRBuilder<'a> {
85197    type Target = DeviceFaultShaderAbortMessageInfoKHR;
85198    #[inline]
85199    fn deref(&self) -> &Self::Target {
85200        &self.inner
85201    }
85202}
85203impl<'a> core::ops::DerefMut for DeviceFaultShaderAbortMessageInfoKHRBuilder<'a> {
85204    #[inline]
85205    fn deref_mut(&mut self) -> &mut Self::Target {
85206        &mut self.inner
85207    }
85208}