Skip to main content

vk/
construction.gen.rs

1// @generated by vk-gen — sealed native chain relationships.
2use crate as vk;
3
4impl<'a> crate::construction::sealed::ChainNode for vk::ApplicationInfo<'a> {
5	const S_TYPE: vk::StructureType = vk::StructureType::APPLICATION_INFO;
6
7	fn s_type(&self) -> vk::StructureType {
8		self.s_type
9	}
10
11	fn p_next(&self) -> *const std::ffi::c_void {
12		self.p_next
13	}
14
15	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16		self.p_next = p_next.cast_const();
17	}
18
19	fn address(&mut self) -> *mut std::ffi::c_void {
20		std::ptr::from_mut(self).cast()
21	}
22}
23
24impl<'a> crate::construction::sealed::ChainNode for vk::DeviceQueueCreateInfo<'a> {
25	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_QUEUE_CREATE_INFO;
26
27	fn s_type(&self) -> vk::StructureType {
28		self.s_type
29	}
30
31	fn p_next(&self) -> *const std::ffi::c_void {
32		self.p_next
33	}
34
35	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
36		self.p_next = p_next.cast_const();
37	}
38
39	fn address(&mut self) -> *mut std::ffi::c_void {
40		std::ptr::from_mut(self).cast()
41	}
42}
43
44impl<'a> crate::construction::sealed::ChainNode for vk::DeviceCreateInfo<'a> {
45	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_CREATE_INFO;
46
47	fn s_type(&self) -> vk::StructureType {
48		self.s_type
49	}
50
51	fn p_next(&self) -> *const std::ffi::c_void {
52		self.p_next
53	}
54
55	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
56		self.p_next = p_next.cast_const();
57	}
58
59	fn address(&mut self) -> *mut std::ffi::c_void {
60		std::ptr::from_mut(self).cast()
61	}
62}
63
64impl<'a> crate::construction::sealed::ChainNode for vk::InstanceCreateInfo<'a> {
65	const S_TYPE: vk::StructureType = vk::StructureType::INSTANCE_CREATE_INFO;
66
67	fn s_type(&self) -> vk::StructureType {
68		self.s_type
69	}
70
71	fn p_next(&self) -> *const std::ffi::c_void {
72		self.p_next
73	}
74
75	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
76		self.p_next = p_next.cast_const();
77	}
78
79	fn address(&mut self) -> *mut std::ffi::c_void {
80		std::ptr::from_mut(self).cast()
81	}
82}
83
84impl<'a> crate::construction::sealed::ChainNode for vk::MemoryAllocateInfo<'a> {
85	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_ALLOCATE_INFO;
86
87	fn s_type(&self) -> vk::StructureType {
88		self.s_type
89	}
90
91	fn p_next(&self) -> *const std::ffi::c_void {
92		self.p_next
93	}
94
95	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
96		self.p_next = p_next.cast_const();
97	}
98
99	fn address(&mut self) -> *mut std::ffi::c_void {
100		std::ptr::from_mut(self).cast()
101	}
102}
103
104impl<'a> crate::construction::sealed::ChainNode for vk::MappedMemoryRange<'a> {
105	const S_TYPE: vk::StructureType = vk::StructureType::MAPPED_MEMORY_RANGE;
106
107	fn s_type(&self) -> vk::StructureType {
108		self.s_type
109	}
110
111	fn p_next(&self) -> *const std::ffi::c_void {
112		self.p_next
113	}
114
115	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
116		self.p_next = p_next.cast_const();
117	}
118
119	fn address(&mut self) -> *mut std::ffi::c_void {
120		std::ptr::from_mut(self).cast()
121	}
122}
123
124impl<'a> crate::construction::sealed::ChainNode for vk::WriteDescriptorSet<'a> {
125	const S_TYPE: vk::StructureType = vk::StructureType::WRITE_DESCRIPTOR_SET;
126
127	fn s_type(&self) -> vk::StructureType {
128		self.s_type
129	}
130
131	fn p_next(&self) -> *const std::ffi::c_void {
132		self.p_next
133	}
134
135	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
136		self.p_next = p_next.cast_const();
137	}
138
139	fn address(&mut self) -> *mut std::ffi::c_void {
140		std::ptr::from_mut(self).cast()
141	}
142}
143
144impl<'a> crate::construction::sealed::ChainNode for vk::CopyDescriptorSet<'a> {
145	const S_TYPE: vk::StructureType = vk::StructureType::COPY_DESCRIPTOR_SET;
146
147	fn s_type(&self) -> vk::StructureType {
148		self.s_type
149	}
150
151	fn p_next(&self) -> *const std::ffi::c_void {
152		self.p_next
153	}
154
155	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
156		self.p_next = p_next.cast_const();
157	}
158
159	fn address(&mut self) -> *mut std::ffi::c_void {
160		std::ptr::from_mut(self).cast()
161	}
162}
163
164impl<'a> crate::construction::sealed::ChainNode for vk::BufferUsageFlags2CreateInfo<'a> {
165	const S_TYPE: vk::StructureType = vk::StructureType::BUFFER_USAGE_FLAGS_2_CREATE_INFO;
166
167	fn s_type(&self) -> vk::StructureType {
168		self.s_type
169	}
170
171	fn p_next(&self) -> *const std::ffi::c_void {
172		self.p_next
173	}
174
175	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
176		self.p_next = p_next.cast_const();
177	}
178
179	fn address(&mut self) -> *mut std::ffi::c_void {
180		std::ptr::from_mut(self).cast()
181	}
182}
183
184impl<'a, 'root> crate::Extends<vk::BufferViewCreateInfo<'root>>
185	for vk::BufferUsageFlags2CreateInfo<'a>
186{
187}
188
189impl<'a, 'root> crate::Extends<vk::BufferCreateInfo<'root>>
190	for vk::BufferUsageFlags2CreateInfo<'a>
191{
192}
193
194impl<'a, 'root> crate::Extends<vk::PhysicalDeviceExternalBufferInfo<'root>>
195	for vk::BufferUsageFlags2CreateInfo<'a>
196{
197}
198
199impl<'a, 'root> crate::Extends<vk::DescriptorBufferBindingInfoEXT<'root>>
200	for vk::BufferUsageFlags2CreateInfo<'a>
201{
202}
203
204impl<'a> crate::construction::sealed::ChainNode for vk::BufferCreateInfo<'a> {
205	const S_TYPE: vk::StructureType = vk::StructureType::BUFFER_CREATE_INFO;
206
207	fn s_type(&self) -> vk::StructureType {
208		self.s_type
209	}
210
211	fn p_next(&self) -> *const std::ffi::c_void {
212		self.p_next
213	}
214
215	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
216		self.p_next = p_next.cast_const();
217	}
218
219	fn address(&mut self) -> *mut std::ffi::c_void {
220		std::ptr::from_mut(self).cast()
221	}
222}
223
224impl<'a> crate::construction::sealed::ChainNode for vk::BufferViewCreateInfo<'a> {
225	const S_TYPE: vk::StructureType = vk::StructureType::BUFFER_VIEW_CREATE_INFO;
226
227	fn s_type(&self) -> vk::StructureType {
228		self.s_type
229	}
230
231	fn p_next(&self) -> *const std::ffi::c_void {
232		self.p_next
233	}
234
235	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
236		self.p_next = p_next.cast_const();
237	}
238
239	fn address(&mut self) -> *mut std::ffi::c_void {
240		std::ptr::from_mut(self).cast()
241	}
242}
243
244impl<'a> crate::construction::sealed::ChainNode for vk::MemoryBarrier<'a> {
245	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_BARRIER;
246
247	fn s_type(&self) -> vk::StructureType {
248		self.s_type
249	}
250
251	fn p_next(&self) -> *const std::ffi::c_void {
252		self.p_next
253	}
254
255	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
256		self.p_next = p_next.cast_const();
257	}
258
259	fn address(&mut self) -> *mut std::ffi::c_void {
260		std::ptr::from_mut(self).cast()
261	}
262}
263
264impl<'a> crate::construction::sealed::ChainNode for vk::BufferMemoryBarrier<'a> {
265	const S_TYPE: vk::StructureType = vk::StructureType::BUFFER_MEMORY_BARRIER;
266
267	fn s_type(&self) -> vk::StructureType {
268		self.s_type
269	}
270
271	fn p_next(&self) -> *const std::ffi::c_void {
272		self.p_next
273	}
274
275	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
276		self.p_next = p_next.cast_const();
277	}
278
279	fn address(&mut self) -> *mut std::ffi::c_void {
280		std::ptr::from_mut(self).cast()
281	}
282}
283
284impl<'a> crate::construction::sealed::ChainNode for vk::ImageMemoryBarrier<'a> {
285	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_MEMORY_BARRIER;
286
287	fn s_type(&self) -> vk::StructureType {
288		self.s_type
289	}
290
291	fn p_next(&self) -> *const std::ffi::c_void {
292		self.p_next
293	}
294
295	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
296		self.p_next = p_next.cast_const();
297	}
298
299	fn address(&mut self) -> *mut std::ffi::c_void {
300		std::ptr::from_mut(self).cast()
301	}
302}
303
304impl<'a> crate::construction::sealed::ChainNode for vk::ImageCreateInfo<'a> {
305	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_CREATE_INFO;
306
307	fn s_type(&self) -> vk::StructureType {
308		self.s_type
309	}
310
311	fn p_next(&self) -> *const std::ffi::c_void {
312		self.p_next
313	}
314
315	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
316		self.p_next = p_next.cast_const();
317	}
318
319	fn address(&mut self) -> *mut std::ffi::c_void {
320		std::ptr::from_mut(self).cast()
321	}
322}
323
324impl<'a> crate::construction::sealed::ChainNode for vk::ImageCreateFlags2CreateInfoKHR<'a> {
325	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_CREATE_FLAGS_2_CREATE_INFO_KHR;
326
327	fn s_type(&self) -> vk::StructureType {
328		self.s_type
329	}
330
331	fn p_next(&self) -> *const std::ffi::c_void {
332		self.p_next.cast_const()
333	}
334
335	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
336		self.p_next = p_next;
337	}
338
339	fn address(&mut self) -> *mut std::ffi::c_void {
340		std::ptr::from_mut(self).cast()
341	}
342}
343
344impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>>
345	for vk::ImageCreateFlags2CreateInfoKHR<'a>
346{
347}
348
349impl<'a, 'root> crate::Extends<vk::PhysicalDeviceImageFormatInfo2<'root>>
350	for vk::ImageCreateFlags2CreateInfoKHR<'a>
351{
352}
353
354impl<'a, 'root> crate::Extends<vk::FramebufferAttachmentImageInfo<'root>>
355	for vk::ImageCreateFlags2CreateInfoKHR<'a>
356{
357}
358
359impl<'a, 'root> crate::Extends<vk::VideoFormatPropertiesKHR<'root>>
360	for vk::ImageCreateFlags2CreateInfoKHR<'a>
361{
362}
363
364impl<'a> crate::construction::sealed::ChainNode for vk::ImageUsageFlags2CreateInfoKHR<'a> {
365	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_USAGE_FLAGS_2_CREATE_INFO_KHR;
366
367	fn s_type(&self) -> vk::StructureType {
368		self.s_type
369	}
370
371	fn p_next(&self) -> *const std::ffi::c_void {
372		self.p_next.cast_const()
373	}
374
375	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
376		self.p_next = p_next;
377	}
378
379	fn address(&mut self) -> *mut std::ffi::c_void {
380		std::ptr::from_mut(self).cast()
381	}
382}
383
384impl<'a, 'root> crate::Extends<vk::FramebufferAttachmentImageInfo<'root>>
385	for vk::ImageUsageFlags2CreateInfoKHR<'a>
386{
387}
388
389impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>>
390	for vk::ImageUsageFlags2CreateInfoKHR<'a>
391{
392}
393
394impl<'a, 'root> crate::Extends<vk::PhysicalDeviceImageFormatInfo2<'root>>
395	for vk::ImageUsageFlags2CreateInfoKHR<'a>
396{
397}
398
399impl<'a, 'root> crate::Extends<vk::PhysicalDeviceSparseImageFormatInfo2<'root>>
400	for vk::ImageUsageFlags2CreateInfoKHR<'a>
401{
402}
403
404impl<'a, 'root> crate::Extends<vk::PhysicalDeviceVideoFormatInfoKHR<'root>>
405	for vk::ImageUsageFlags2CreateInfoKHR<'a>
406{
407}
408
409impl<'a, 'root> crate::Extends<vk::SurfaceCapabilities2KHR<'root>>
410	for vk::ImageUsageFlags2CreateInfoKHR<'a>
411{
412}
413
414impl<'a, 'root> crate::Extends<vk::SwapchainCreateInfoKHR<'root>>
415	for vk::ImageUsageFlags2CreateInfoKHR<'a>
416{
417}
418
419impl<'a, 'root> crate::Extends<vk::VideoFormatPropertiesKHR<'root>>
420	for vk::ImageUsageFlags2CreateInfoKHR<'a>
421{
422}
423
424impl<'a> crate::construction::sealed::ChainNode for vk::ImageViewCreateInfo<'a> {
425	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_VIEW_CREATE_INFO;
426
427	fn s_type(&self) -> vk::StructureType {
428		self.s_type
429	}
430
431	fn p_next(&self) -> *const std::ffi::c_void {
432		self.p_next
433	}
434
435	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
436		self.p_next = p_next.cast_const();
437	}
438
439	fn address(&mut self) -> *mut std::ffi::c_void {
440		std::ptr::from_mut(self).cast()
441	}
442}
443
444impl<'a> crate::construction::sealed::ChainNode for vk::BindSparseInfo<'a> {
445	const S_TYPE: vk::StructureType = vk::StructureType::BIND_SPARSE_INFO;
446
447	fn s_type(&self) -> vk::StructureType {
448		self.s_type
449	}
450
451	fn p_next(&self) -> *const std::ffi::c_void {
452		self.p_next
453	}
454
455	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
456		self.p_next = p_next.cast_const();
457	}
458
459	fn address(&mut self) -> *mut std::ffi::c_void {
460		std::ptr::from_mut(self).cast()
461	}
462}
463
464impl<'a> crate::construction::sealed::ChainNode for vk::CopyMemoryIndirectInfoKHR<'a> {
465	const S_TYPE: vk::StructureType = vk::StructureType::COPY_MEMORY_INDIRECT_INFO_KHR;
466
467	fn s_type(&self) -> vk::StructureType {
468		self.s_type
469	}
470
471	fn p_next(&self) -> *const std::ffi::c_void {
472		self.p_next
473	}
474
475	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
476		self.p_next = p_next.cast_const();
477	}
478
479	fn address(&mut self) -> *mut std::ffi::c_void {
480		std::ptr::from_mut(self).cast()
481	}
482}
483
484impl<'a> crate::construction::sealed::ChainNode for vk::CopyMemoryToImageIndirectInfoKHR<'a> {
485	const S_TYPE: vk::StructureType = vk::StructureType::COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR;
486
487	fn s_type(&self) -> vk::StructureType {
488		self.s_type
489	}
490
491	fn p_next(&self) -> *const std::ffi::c_void {
492		self.p_next
493	}
494
495	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
496		self.p_next = p_next.cast_const();
497	}
498
499	fn address(&mut self) -> *mut std::ffi::c_void {
500		std::ptr::from_mut(self).cast()
501	}
502}
503
504impl<'a> crate::construction::sealed::ChainNode for vk::ShaderModuleCreateInfo<'a> {
505	const S_TYPE: vk::StructureType = vk::StructureType::SHADER_MODULE_CREATE_INFO;
506
507	fn s_type(&self) -> vk::StructureType {
508		self.s_type
509	}
510
511	fn p_next(&self) -> *const std::ffi::c_void {
512		self.p_next
513	}
514
515	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
516		self.p_next = p_next.cast_const();
517	}
518
519	fn address(&mut self) -> *mut std::ffi::c_void {
520		std::ptr::from_mut(self).cast()
521	}
522}
523
524impl<'a, 'root> crate::Extends<vk::PipelineShaderStageCreateInfo<'root>>
525	for vk::ShaderModuleCreateInfo<'a>
526{
527}
528
529impl<'a, 'root> crate::Extends<vk::DataGraphPipelineCreateInfoARM<'root>>
530	for vk::ShaderModuleCreateInfo<'a>
531{
532}
533
534impl<'a> crate::construction::sealed::ChainNode for vk::DescriptorSetLayoutCreateInfo<'a> {
535	const S_TYPE: vk::StructureType = vk::StructureType::DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
536
537	fn s_type(&self) -> vk::StructureType {
538		self.s_type
539	}
540
541	fn p_next(&self) -> *const std::ffi::c_void {
542		self.p_next
543	}
544
545	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
546		self.p_next = p_next.cast_const();
547	}
548
549	fn address(&mut self) -> *mut std::ffi::c_void {
550		std::ptr::from_mut(self).cast()
551	}
552}
553
554impl<'a> crate::construction::sealed::ChainNode for vk::DescriptorPoolCreateInfo<'a> {
555	const S_TYPE: vk::StructureType = vk::StructureType::DESCRIPTOR_POOL_CREATE_INFO;
556
557	fn s_type(&self) -> vk::StructureType {
558		self.s_type
559	}
560
561	fn p_next(&self) -> *const std::ffi::c_void {
562		self.p_next
563	}
564
565	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
566		self.p_next = p_next.cast_const();
567	}
568
569	fn address(&mut self) -> *mut std::ffi::c_void {
570		std::ptr::from_mut(self).cast()
571	}
572}
573
574impl<'a> crate::construction::sealed::ChainNode for vk::DescriptorSetAllocateInfo<'a> {
575	const S_TYPE: vk::StructureType = vk::StructureType::DESCRIPTOR_SET_ALLOCATE_INFO;
576
577	fn s_type(&self) -> vk::StructureType {
578		self.s_type
579	}
580
581	fn p_next(&self) -> *const std::ffi::c_void {
582		self.p_next
583	}
584
585	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
586		self.p_next = p_next.cast_const();
587	}
588
589	fn address(&mut self) -> *mut std::ffi::c_void {
590		std::ptr::from_mut(self).cast()
591	}
592}
593
594impl<'a> crate::construction::sealed::ChainNode for vk::PipelineShaderStageCreateInfo<'a> {
595	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_SHADER_STAGE_CREATE_INFO;
596
597	fn s_type(&self) -> vk::StructureType {
598		self.s_type
599	}
600
601	fn p_next(&self) -> *const std::ffi::c_void {
602		self.p_next
603	}
604
605	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
606		self.p_next = p_next.cast_const();
607	}
608
609	fn address(&mut self) -> *mut std::ffi::c_void {
610		std::ptr::from_mut(self).cast()
611	}
612}
613
614impl<'a> crate::construction::sealed::ChainNode for vk::ComputePipelineCreateInfo<'a> {
615	const S_TYPE: vk::StructureType = vk::StructureType::COMPUTE_PIPELINE_CREATE_INFO;
616
617	fn s_type(&self) -> vk::StructureType {
618		self.s_type
619	}
620
621	fn p_next(&self) -> *const std::ffi::c_void {
622		self.p_next
623	}
624
625	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
626		self.p_next = p_next.cast_const();
627	}
628
629	fn address(&mut self) -> *mut std::ffi::c_void {
630		std::ptr::from_mut(self).cast()
631	}
632}
633
634impl<'a, 'root> crate::Extends<vk::PipelineCreateInfoKHR<'root>>
635	for vk::ComputePipelineCreateInfo<'a>
636{
637}
638
639impl<'a> crate::construction::sealed::ChainNode for vk::ComputePipelineIndirectBufferInfoNV<'a> {
640	const S_TYPE: vk::StructureType = vk::StructureType::COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV;
641
642	fn s_type(&self) -> vk::StructureType {
643		self.s_type
644	}
645
646	fn p_next(&self) -> *const std::ffi::c_void {
647		self.p_next
648	}
649
650	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
651		self.p_next = p_next.cast_const();
652	}
653
654	fn address(&mut self) -> *mut std::ffi::c_void {
655		std::ptr::from_mut(self).cast()
656	}
657}
658
659impl<'a, 'root> crate::Extends<vk::ComputePipelineCreateInfo<'root>>
660	for vk::ComputePipelineIndirectBufferInfoNV<'a>
661{
662}
663
664impl<'a> crate::construction::sealed::ChainNode for vk::PipelineCreateFlags2CreateInfo<'a> {
665	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_CREATE_FLAGS_2_CREATE_INFO;
666
667	fn s_type(&self) -> vk::StructureType {
668		self.s_type
669	}
670
671	fn p_next(&self) -> *const std::ffi::c_void {
672		self.p_next
673	}
674
675	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
676		self.p_next = p_next.cast_const();
677	}
678
679	fn address(&mut self) -> *mut std::ffi::c_void {
680		std::ptr::from_mut(self).cast()
681	}
682}
683
684impl<'a, 'root> crate::Extends<vk::ComputePipelineCreateInfo<'root>>
685	for vk::PipelineCreateFlags2CreateInfo<'a>
686{
687}
688
689impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
690	for vk::PipelineCreateFlags2CreateInfo<'a>
691{
692}
693
694impl<'a, 'root> crate::Extends<vk::RayTracingPipelineCreateInfoNV<'root>>
695	for vk::PipelineCreateFlags2CreateInfo<'a>
696{
697}
698
699impl<'a, 'root> crate::Extends<vk::RayTracingPipelineCreateInfoKHR<'root>>
700	for vk::PipelineCreateFlags2CreateInfo<'a>
701{
702}
703
704impl<'a> crate::construction::sealed::ChainNode for vk::PipelineVertexInputStateCreateInfo<'a> {
705	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO;
706
707	fn s_type(&self) -> vk::StructureType {
708		self.s_type
709	}
710
711	fn p_next(&self) -> *const std::ffi::c_void {
712		self.p_next
713	}
714
715	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
716		self.p_next = p_next.cast_const();
717	}
718
719	fn address(&mut self) -> *mut std::ffi::c_void {
720		std::ptr::from_mut(self).cast()
721	}
722}
723
724impl<'a> crate::construction::sealed::ChainNode for vk::PipelineInputAssemblyStateCreateInfo<'a> {
725	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO;
726
727	fn s_type(&self) -> vk::StructureType {
728		self.s_type
729	}
730
731	fn p_next(&self) -> *const std::ffi::c_void {
732		self.p_next
733	}
734
735	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
736		self.p_next = p_next.cast_const();
737	}
738
739	fn address(&mut self) -> *mut std::ffi::c_void {
740		std::ptr::from_mut(self).cast()
741	}
742}
743
744impl<'a> crate::construction::sealed::ChainNode for vk::PipelineTessellationStateCreateInfo<'a> {
745	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_TESSELLATION_STATE_CREATE_INFO;
746
747	fn s_type(&self) -> vk::StructureType {
748		self.s_type
749	}
750
751	fn p_next(&self) -> *const std::ffi::c_void {
752		self.p_next
753	}
754
755	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
756		self.p_next = p_next.cast_const();
757	}
758
759	fn address(&mut self) -> *mut std::ffi::c_void {
760		std::ptr::from_mut(self).cast()
761	}
762}
763
764impl<'a> crate::construction::sealed::ChainNode for vk::PipelineViewportStateCreateInfo<'a> {
765	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_VIEWPORT_STATE_CREATE_INFO;
766
767	fn s_type(&self) -> vk::StructureType {
768		self.s_type
769	}
770
771	fn p_next(&self) -> *const std::ffi::c_void {
772		self.p_next
773	}
774
775	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
776		self.p_next = p_next.cast_const();
777	}
778
779	fn address(&mut self) -> *mut std::ffi::c_void {
780		std::ptr::from_mut(self).cast()
781	}
782}
783
784impl<'a> crate::construction::sealed::ChainNode for vk::PipelineRasterizationStateCreateInfo<'a> {
785	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_RASTERIZATION_STATE_CREATE_INFO;
786
787	fn s_type(&self) -> vk::StructureType {
788		self.s_type
789	}
790
791	fn p_next(&self) -> *const std::ffi::c_void {
792		self.p_next
793	}
794
795	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
796		self.p_next = p_next.cast_const();
797	}
798
799	fn address(&mut self) -> *mut std::ffi::c_void {
800		std::ptr::from_mut(self).cast()
801	}
802}
803
804impl<'a> crate::construction::sealed::ChainNode for vk::PipelineMultisampleStateCreateInfo<'a> {
805	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_MULTISAMPLE_STATE_CREATE_INFO;
806
807	fn s_type(&self) -> vk::StructureType {
808		self.s_type
809	}
810
811	fn p_next(&self) -> *const std::ffi::c_void {
812		self.p_next
813	}
814
815	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
816		self.p_next = p_next.cast_const();
817	}
818
819	fn address(&mut self) -> *mut std::ffi::c_void {
820		std::ptr::from_mut(self).cast()
821	}
822}
823
824impl<'a> crate::construction::sealed::ChainNode for vk::PipelineColorBlendStateCreateInfo<'a> {
825	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_COLOR_BLEND_STATE_CREATE_INFO;
826
827	fn s_type(&self) -> vk::StructureType {
828		self.s_type
829	}
830
831	fn p_next(&self) -> *const std::ffi::c_void {
832		self.p_next
833	}
834
835	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
836		self.p_next = p_next.cast_const();
837	}
838
839	fn address(&mut self) -> *mut std::ffi::c_void {
840		std::ptr::from_mut(self).cast()
841	}
842}
843
844impl<'a> crate::construction::sealed::ChainNode for vk::PipelineDynamicStateCreateInfo<'a> {
845	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_DYNAMIC_STATE_CREATE_INFO;
846
847	fn s_type(&self) -> vk::StructureType {
848		self.s_type
849	}
850
851	fn p_next(&self) -> *const std::ffi::c_void {
852		self.p_next
853	}
854
855	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
856		self.p_next = p_next.cast_const();
857	}
858
859	fn address(&mut self) -> *mut std::ffi::c_void {
860		std::ptr::from_mut(self).cast()
861	}
862}
863
864impl<'a> crate::construction::sealed::ChainNode for vk::PipelineDepthStencilStateCreateInfo<'a> {
865	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO;
866
867	fn s_type(&self) -> vk::StructureType {
868		self.s_type
869	}
870
871	fn p_next(&self) -> *const std::ffi::c_void {
872		self.p_next
873	}
874
875	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
876		self.p_next = p_next.cast_const();
877	}
878
879	fn address(&mut self) -> *mut std::ffi::c_void {
880		std::ptr::from_mut(self).cast()
881	}
882}
883
884impl<'a> crate::construction::sealed::ChainNode for vk::GraphicsPipelineCreateInfo<'a> {
885	const S_TYPE: vk::StructureType = vk::StructureType::GRAPHICS_PIPELINE_CREATE_INFO;
886
887	fn s_type(&self) -> vk::StructureType {
888		self.s_type
889	}
890
891	fn p_next(&self) -> *const std::ffi::c_void {
892		self.p_next
893	}
894
895	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
896		self.p_next = p_next.cast_const();
897	}
898
899	fn address(&mut self) -> *mut std::ffi::c_void {
900		std::ptr::from_mut(self).cast()
901	}
902}
903
904impl<'a, 'root> crate::Extends<vk::PipelineCreateInfoKHR<'root>>
905	for vk::GraphicsPipelineCreateInfo<'a>
906{
907}
908
909impl<'a> crate::construction::sealed::ChainNode for vk::PipelineCacheCreateInfo<'a> {
910	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_CACHE_CREATE_INFO;
911
912	fn s_type(&self) -> vk::StructureType {
913		self.s_type
914	}
915
916	fn p_next(&self) -> *const std::ffi::c_void {
917		self.p_next
918	}
919
920	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
921		self.p_next = p_next.cast_const();
922	}
923
924	fn address(&mut self) -> *mut std::ffi::c_void {
925		std::ptr::from_mut(self).cast()
926	}
927}
928
929impl<'a> crate::construction::sealed::ChainNode for vk::PipelineBinaryCreateInfoKHR<'a> {
930	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_BINARY_CREATE_INFO_KHR;
931
932	fn s_type(&self) -> vk::StructureType {
933		self.s_type
934	}
935
936	fn p_next(&self) -> *const std::ffi::c_void {
937		self.p_next
938	}
939
940	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
941		self.p_next = p_next.cast_const();
942	}
943
944	fn address(&mut self) -> *mut std::ffi::c_void {
945		std::ptr::from_mut(self).cast()
946	}
947}
948
949impl<'a> crate::construction::sealed::ChainNode for vk::PipelineBinaryHandlesInfoKHR<'a> {
950	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_BINARY_HANDLES_INFO_KHR;
951
952	fn s_type(&self) -> vk::StructureType {
953		self.s_type
954	}
955
956	fn p_next(&self) -> *const std::ffi::c_void {
957		self.p_next
958	}
959
960	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
961		self.p_next = p_next.cast_const();
962	}
963
964	fn address(&mut self) -> *mut std::ffi::c_void {
965		std::ptr::from_mut(self).cast()
966	}
967}
968
969impl<'a> crate::construction::sealed::ChainNode for vk::PipelineBinaryKeyKHR<'a> {
970	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_BINARY_KEY_KHR;
971
972	fn s_type(&self) -> vk::StructureType {
973		self.s_type
974	}
975
976	fn p_next(&self) -> *const std::ffi::c_void {
977		self.p_next.cast_const()
978	}
979
980	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
981		self.p_next = p_next;
982	}
983
984	fn address(&mut self) -> *mut std::ffi::c_void {
985		std::ptr::from_mut(self).cast()
986	}
987}
988
989impl<'a> crate::construction::sealed::ChainNode for vk::PipelineBinaryInfoKHR<'a> {
990	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_BINARY_INFO_KHR;
991
992	fn s_type(&self) -> vk::StructureType {
993		self.s_type
994	}
995
996	fn p_next(&self) -> *const std::ffi::c_void {
997		self.p_next
998	}
999
1000	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1001		self.p_next = p_next.cast_const();
1002	}
1003
1004	fn address(&mut self) -> *mut std::ffi::c_void {
1005		std::ptr::from_mut(self).cast()
1006	}
1007}
1008
1009impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
1010	for vk::PipelineBinaryInfoKHR<'a>
1011{
1012}
1013
1014impl<'a, 'root> crate::Extends<vk::ComputePipelineCreateInfo<'root>>
1015	for vk::PipelineBinaryInfoKHR<'a>
1016{
1017}
1018
1019impl<'a, 'root> crate::Extends<vk::RayTracingPipelineCreateInfoKHR<'root>>
1020	for vk::PipelineBinaryInfoKHR<'a>
1021{
1022}
1023
1024impl<'a> crate::construction::sealed::ChainNode for vk::ReleaseCapturedPipelineDataInfoKHR<'a> {
1025	const S_TYPE: vk::StructureType = vk::StructureType::RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR;
1026
1027	fn s_type(&self) -> vk::StructureType {
1028		self.s_type
1029	}
1030
1031	fn p_next(&self) -> *const std::ffi::c_void {
1032		self.p_next.cast_const()
1033	}
1034
1035	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1036		self.p_next = p_next;
1037	}
1038
1039	fn address(&mut self) -> *mut std::ffi::c_void {
1040		std::ptr::from_mut(self).cast()
1041	}
1042}
1043
1044impl<'a> crate::construction::sealed::ChainNode for vk::PipelineBinaryDataInfoKHR<'a> {
1045	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_BINARY_DATA_INFO_KHR;
1046
1047	fn s_type(&self) -> vk::StructureType {
1048		self.s_type
1049	}
1050
1051	fn p_next(&self) -> *const std::ffi::c_void {
1052		self.p_next.cast_const()
1053	}
1054
1055	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1056		self.p_next = p_next;
1057	}
1058
1059	fn address(&mut self) -> *mut std::ffi::c_void {
1060		std::ptr::from_mut(self).cast()
1061	}
1062}
1063
1064impl<'a> crate::construction::sealed::ChainNode for vk::PipelineCreateInfoKHR<'a> {
1065	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_CREATE_INFO_KHR;
1066
1067	fn s_type(&self) -> vk::StructureType {
1068		self.s_type
1069	}
1070
1071	fn p_next(&self) -> *const std::ffi::c_void {
1072		self.p_next.cast_const()
1073	}
1074
1075	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1076		self.p_next = p_next;
1077	}
1078
1079	fn address(&mut self) -> *mut std::ffi::c_void {
1080		std::ptr::from_mut(self).cast()
1081	}
1082}
1083
1084impl<'a> crate::construction::sealed::ChainNode for vk::PipelineLayoutCreateInfo<'a> {
1085	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_LAYOUT_CREATE_INFO;
1086
1087	fn s_type(&self) -> vk::StructureType {
1088		self.s_type
1089	}
1090
1091	fn p_next(&self) -> *const std::ffi::c_void {
1092		self.p_next
1093	}
1094
1095	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1096		self.p_next = p_next.cast_const();
1097	}
1098
1099	fn address(&mut self) -> *mut std::ffi::c_void {
1100		std::ptr::from_mut(self).cast()
1101	}
1102}
1103
1104impl<'a, 'root> crate::Extends<vk::BindDescriptorSetsInfo<'root>>
1105	for vk::PipelineLayoutCreateInfo<'a>
1106{
1107}
1108
1109impl<'a, 'root> crate::Extends<vk::PushConstantsInfo<'root>> for vk::PipelineLayoutCreateInfo<'a> {}
1110
1111impl<'a, 'root> crate::Extends<vk::PushDescriptorSetInfo<'root>>
1112	for vk::PipelineLayoutCreateInfo<'a>
1113{
1114}
1115
1116impl<'a, 'root> crate::Extends<vk::PushDescriptorSetWithTemplateInfo<'root>>
1117	for vk::PipelineLayoutCreateInfo<'a>
1118{
1119}
1120
1121impl<'a, 'root> crate::Extends<vk::SetDescriptorBufferOffsetsInfoEXT<'root>>
1122	for vk::PipelineLayoutCreateInfo<'a>
1123{
1124}
1125
1126impl<'a, 'root> crate::Extends<vk::BindDescriptorBufferEmbeddedSamplersInfoEXT<'root>>
1127	for vk::PipelineLayoutCreateInfo<'a>
1128{
1129}
1130
1131impl<'a, 'root> crate::Extends<vk::IndirectCommandsLayoutCreateInfoEXT<'root>>
1132	for vk::PipelineLayoutCreateInfo<'a>
1133{
1134}
1135
1136impl<'a> crate::construction::sealed::ChainNode for vk::SamplerCreateInfo<'a> {
1137	const S_TYPE: vk::StructureType = vk::StructureType::SAMPLER_CREATE_INFO;
1138
1139	fn s_type(&self) -> vk::StructureType {
1140		self.s_type
1141	}
1142
1143	fn p_next(&self) -> *const std::ffi::c_void {
1144		self.p_next
1145	}
1146
1147	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1148		self.p_next = p_next.cast_const();
1149	}
1150
1151	fn address(&mut self) -> *mut std::ffi::c_void {
1152		std::ptr::from_mut(self).cast()
1153	}
1154}
1155
1156impl<'a> crate::construction::sealed::ChainNode for vk::CommandPoolCreateInfo<'a> {
1157	const S_TYPE: vk::StructureType = vk::StructureType::COMMAND_POOL_CREATE_INFO;
1158
1159	fn s_type(&self) -> vk::StructureType {
1160		self.s_type
1161	}
1162
1163	fn p_next(&self) -> *const std::ffi::c_void {
1164		self.p_next
1165	}
1166
1167	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1168		self.p_next = p_next.cast_const();
1169	}
1170
1171	fn address(&mut self) -> *mut std::ffi::c_void {
1172		std::ptr::from_mut(self).cast()
1173	}
1174}
1175
1176impl<'a> crate::construction::sealed::ChainNode for vk::CommandBufferAllocateInfo<'a> {
1177	const S_TYPE: vk::StructureType = vk::StructureType::COMMAND_BUFFER_ALLOCATE_INFO;
1178
1179	fn s_type(&self) -> vk::StructureType {
1180		self.s_type
1181	}
1182
1183	fn p_next(&self) -> *const std::ffi::c_void {
1184		self.p_next
1185	}
1186
1187	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1188		self.p_next = p_next.cast_const();
1189	}
1190
1191	fn address(&mut self) -> *mut std::ffi::c_void {
1192		std::ptr::from_mut(self).cast()
1193	}
1194}
1195
1196impl<'a> crate::construction::sealed::ChainNode for vk::CommandBufferInheritanceInfo<'a> {
1197	const S_TYPE: vk::StructureType = vk::StructureType::COMMAND_BUFFER_INHERITANCE_INFO;
1198
1199	fn s_type(&self) -> vk::StructureType {
1200		self.s_type
1201	}
1202
1203	fn p_next(&self) -> *const std::ffi::c_void {
1204		self.p_next
1205	}
1206
1207	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1208		self.p_next = p_next.cast_const();
1209	}
1210
1211	fn address(&mut self) -> *mut std::ffi::c_void {
1212		std::ptr::from_mut(self).cast()
1213	}
1214}
1215
1216impl<'a> crate::construction::sealed::ChainNode for vk::CommandBufferBeginInfo<'a> {
1217	const S_TYPE: vk::StructureType = vk::StructureType::COMMAND_BUFFER_BEGIN_INFO;
1218
1219	fn s_type(&self) -> vk::StructureType {
1220		self.s_type
1221	}
1222
1223	fn p_next(&self) -> *const std::ffi::c_void {
1224		self.p_next
1225	}
1226
1227	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1228		self.p_next = p_next.cast_const();
1229	}
1230
1231	fn address(&mut self) -> *mut std::ffi::c_void {
1232		std::ptr::from_mut(self).cast()
1233	}
1234}
1235
1236impl<'a> crate::construction::sealed::ChainNode for vk::RenderPassBeginInfo<'a> {
1237	const S_TYPE: vk::StructureType = vk::StructureType::RENDER_PASS_BEGIN_INFO;
1238
1239	fn s_type(&self) -> vk::StructureType {
1240		self.s_type
1241	}
1242
1243	fn p_next(&self) -> *const std::ffi::c_void {
1244		self.p_next
1245	}
1246
1247	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1248		self.p_next = p_next.cast_const();
1249	}
1250
1251	fn address(&mut self) -> *mut std::ffi::c_void {
1252		std::ptr::from_mut(self).cast()
1253	}
1254}
1255
1256impl<'a> crate::construction::sealed::ChainNode for vk::RenderPassCreateInfo<'a> {
1257	const S_TYPE: vk::StructureType = vk::StructureType::RENDER_PASS_CREATE_INFO;
1258
1259	fn s_type(&self) -> vk::StructureType {
1260		self.s_type
1261	}
1262
1263	fn p_next(&self) -> *const std::ffi::c_void {
1264		self.p_next
1265	}
1266
1267	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1268		self.p_next = p_next.cast_const();
1269	}
1270
1271	fn address(&mut self) -> *mut std::ffi::c_void {
1272		std::ptr::from_mut(self).cast()
1273	}
1274}
1275
1276impl<'a> crate::construction::sealed::ChainNode for vk::EventCreateInfo<'a> {
1277	const S_TYPE: vk::StructureType = vk::StructureType::EVENT_CREATE_INFO;
1278
1279	fn s_type(&self) -> vk::StructureType {
1280		self.s_type
1281	}
1282
1283	fn p_next(&self) -> *const std::ffi::c_void {
1284		self.p_next
1285	}
1286
1287	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1288		self.p_next = p_next.cast_const();
1289	}
1290
1291	fn address(&mut self) -> *mut std::ffi::c_void {
1292		std::ptr::from_mut(self).cast()
1293	}
1294}
1295
1296impl<'a> crate::construction::sealed::ChainNode for vk::FenceCreateInfo<'a> {
1297	const S_TYPE: vk::StructureType = vk::StructureType::FENCE_CREATE_INFO;
1298
1299	fn s_type(&self) -> vk::StructureType {
1300		self.s_type
1301	}
1302
1303	fn p_next(&self) -> *const std::ffi::c_void {
1304		self.p_next
1305	}
1306
1307	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1308		self.p_next = p_next.cast_const();
1309	}
1310
1311	fn address(&mut self) -> *mut std::ffi::c_void {
1312		std::ptr::from_mut(self).cast()
1313	}
1314}
1315
1316impl<'a> crate::construction::sealed::ChainNode for vk::SemaphoreCreateInfo<'a> {
1317	const S_TYPE: vk::StructureType = vk::StructureType::SEMAPHORE_CREATE_INFO;
1318
1319	fn s_type(&self) -> vk::StructureType {
1320		self.s_type
1321	}
1322
1323	fn p_next(&self) -> *const std::ffi::c_void {
1324		self.p_next
1325	}
1326
1327	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1328		self.p_next = p_next.cast_const();
1329	}
1330
1331	fn address(&mut self) -> *mut std::ffi::c_void {
1332		std::ptr::from_mut(self).cast()
1333	}
1334}
1335
1336impl<'a> crate::construction::sealed::ChainNode for vk::QueryPoolCreateInfo<'a> {
1337	const S_TYPE: vk::StructureType = vk::StructureType::QUERY_POOL_CREATE_INFO;
1338
1339	fn s_type(&self) -> vk::StructureType {
1340		self.s_type
1341	}
1342
1343	fn p_next(&self) -> *const std::ffi::c_void {
1344		self.p_next
1345	}
1346
1347	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1348		self.p_next = p_next.cast_const();
1349	}
1350
1351	fn address(&mut self) -> *mut std::ffi::c_void {
1352		std::ptr::from_mut(self).cast()
1353	}
1354}
1355
1356impl<'a> crate::construction::sealed::ChainNode for vk::FramebufferCreateInfo<'a> {
1357	const S_TYPE: vk::StructureType = vk::StructureType::FRAMEBUFFER_CREATE_INFO;
1358
1359	fn s_type(&self) -> vk::StructureType {
1360		self.s_type
1361	}
1362
1363	fn p_next(&self) -> *const std::ffi::c_void {
1364		self.p_next
1365	}
1366
1367	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1368		self.p_next = p_next.cast_const();
1369	}
1370
1371	fn address(&mut self) -> *mut std::ffi::c_void {
1372		std::ptr::from_mut(self).cast()
1373	}
1374}
1375
1376impl<'a> crate::construction::sealed::ChainNode for vk::SubmitInfo<'a> {
1377	const S_TYPE: vk::StructureType = vk::StructureType::SUBMIT_INFO;
1378
1379	fn s_type(&self) -> vk::StructureType {
1380		self.s_type
1381	}
1382
1383	fn p_next(&self) -> *const std::ffi::c_void {
1384		self.p_next
1385	}
1386
1387	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1388		self.p_next = p_next.cast_const();
1389	}
1390
1391	fn address(&mut self) -> *mut std::ffi::c_void {
1392		std::ptr::from_mut(self).cast()
1393	}
1394}
1395
1396impl<'a> crate::construction::sealed::ChainNode for vk::DisplayModeCreateInfoKHR<'a> {
1397	const S_TYPE: vk::StructureType = vk::StructureType::DISPLAY_MODE_CREATE_INFO_KHR;
1398
1399	fn s_type(&self) -> vk::StructureType {
1400		self.s_type
1401	}
1402
1403	fn p_next(&self) -> *const std::ffi::c_void {
1404		self.p_next
1405	}
1406
1407	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1408		self.p_next = p_next.cast_const();
1409	}
1410
1411	fn address(&mut self) -> *mut std::ffi::c_void {
1412		std::ptr::from_mut(self).cast()
1413	}
1414}
1415
1416impl<'a> crate::construction::sealed::ChainNode for vk::DisplaySurfaceCreateInfoKHR<'a> {
1417	const S_TYPE: vk::StructureType = vk::StructureType::DISPLAY_SURFACE_CREATE_INFO_KHR;
1418
1419	fn s_type(&self) -> vk::StructureType {
1420		self.s_type
1421	}
1422
1423	fn p_next(&self) -> *const std::ffi::c_void {
1424		self.p_next
1425	}
1426
1427	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1428		self.p_next = p_next.cast_const();
1429	}
1430
1431	fn address(&mut self) -> *mut std::ffi::c_void {
1432		std::ptr::from_mut(self).cast()
1433	}
1434}
1435
1436impl<'a> crate::construction::sealed::ChainNode for vk::DisplaySurfaceStereoCreateInfoNV<'a> {
1437	const S_TYPE: vk::StructureType = vk::StructureType::DISPLAY_SURFACE_STEREO_CREATE_INFO_NV;
1438
1439	fn s_type(&self) -> vk::StructureType {
1440		self.s_type
1441	}
1442
1443	fn p_next(&self) -> *const std::ffi::c_void {
1444		self.p_next
1445	}
1446
1447	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1448		self.p_next = p_next.cast_const();
1449	}
1450
1451	fn address(&mut self) -> *mut std::ffi::c_void {
1452		std::ptr::from_mut(self).cast()
1453	}
1454}
1455
1456impl<'a, 'root> crate::Extends<vk::DisplaySurfaceCreateInfoKHR<'root>>
1457	for vk::DisplaySurfaceStereoCreateInfoNV<'a>
1458{
1459}
1460
1461impl<'a> crate::construction::sealed::ChainNode for vk::DisplayPresentInfoKHR<'a> {
1462	const S_TYPE: vk::StructureType = vk::StructureType::DISPLAY_PRESENT_INFO_KHR;
1463
1464	fn s_type(&self) -> vk::StructureType {
1465		self.s_type
1466	}
1467
1468	fn p_next(&self) -> *const std::ffi::c_void {
1469		self.p_next
1470	}
1471
1472	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1473		self.p_next = p_next.cast_const();
1474	}
1475
1476	fn address(&mut self) -> *mut std::ffi::c_void {
1477		std::ptr::from_mut(self).cast()
1478	}
1479}
1480
1481impl<'a, 'root> crate::Extends<vk::PresentInfoKHR<'root>> for vk::DisplayPresentInfoKHR<'a> {}
1482
1483#[cfg(feature = "platform-android")]
1484impl<'a> crate::construction::sealed::ChainNode for vk::AndroidSurfaceCreateInfoKHR<'a> {
1485	const S_TYPE: vk::StructureType = vk::StructureType::ANDROID_SURFACE_CREATE_INFO_KHR;
1486
1487	fn s_type(&self) -> vk::StructureType {
1488		self.s_type
1489	}
1490
1491	fn p_next(&self) -> *const std::ffi::c_void {
1492		self.p_next
1493	}
1494
1495	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1496		self.p_next = p_next.cast_const();
1497	}
1498
1499	fn address(&mut self) -> *mut std::ffi::c_void {
1500		std::ptr::from_mut(self).cast()
1501	}
1502}
1503
1504#[cfg(feature = "platform-vi")]
1505impl<'a> crate::construction::sealed::ChainNode for vk::ViSurfaceCreateInfoNN<'a> {
1506	const S_TYPE: vk::StructureType = vk::StructureType::VI_SURFACE_CREATE_INFO_NN;
1507
1508	fn s_type(&self) -> vk::StructureType {
1509		self.s_type
1510	}
1511
1512	fn p_next(&self) -> *const std::ffi::c_void {
1513		self.p_next
1514	}
1515
1516	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1517		self.p_next = p_next.cast_const();
1518	}
1519
1520	fn address(&mut self) -> *mut std::ffi::c_void {
1521		std::ptr::from_mut(self).cast()
1522	}
1523}
1524
1525#[cfg(feature = "platform-wayland")]
1526impl<'a> crate::construction::sealed::ChainNode for vk::WaylandSurfaceCreateInfoKHR<'a> {
1527	const S_TYPE: vk::StructureType = vk::StructureType::WAYLAND_SURFACE_CREATE_INFO_KHR;
1528
1529	fn s_type(&self) -> vk::StructureType {
1530		self.s_type
1531	}
1532
1533	fn p_next(&self) -> *const std::ffi::c_void {
1534		self.p_next
1535	}
1536
1537	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1538		self.p_next = p_next.cast_const();
1539	}
1540
1541	fn address(&mut self) -> *mut std::ffi::c_void {
1542		std::ptr::from_mut(self).cast()
1543	}
1544}
1545
1546#[cfg(feature = "platform-ubm")]
1547impl<'a> crate::construction::sealed::ChainNode for vk::UbmSurfaceCreateInfoSEC<'a> {
1548	const S_TYPE: vk::StructureType = vk::StructureType::UBM_SURFACE_CREATE_INFO_SEC;
1549
1550	fn s_type(&self) -> vk::StructureType {
1551		self.s_type
1552	}
1553
1554	fn p_next(&self) -> *const std::ffi::c_void {
1555		self.p_next
1556	}
1557
1558	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1559		self.p_next = p_next.cast_const();
1560	}
1561
1562	fn address(&mut self) -> *mut std::ffi::c_void {
1563		std::ptr::from_mut(self).cast()
1564	}
1565}
1566
1567#[cfg(feature = "platform-win32")]
1568impl<'a> crate::construction::sealed::ChainNode for vk::Win32SurfaceCreateInfoKHR<'a> {
1569	const S_TYPE: vk::StructureType = vk::StructureType::WIN32_SURFACE_CREATE_INFO_KHR;
1570
1571	fn s_type(&self) -> vk::StructureType {
1572		self.s_type
1573	}
1574
1575	fn p_next(&self) -> *const std::ffi::c_void {
1576		self.p_next
1577	}
1578
1579	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1580		self.p_next = p_next.cast_const();
1581	}
1582
1583	fn address(&mut self) -> *mut std::ffi::c_void {
1584		std::ptr::from_mut(self).cast()
1585	}
1586}
1587
1588#[cfg(feature = "platform-xlib")]
1589impl<'a> crate::construction::sealed::ChainNode for vk::XlibSurfaceCreateInfoKHR<'a> {
1590	const S_TYPE: vk::StructureType = vk::StructureType::XLIB_SURFACE_CREATE_INFO_KHR;
1591
1592	fn s_type(&self) -> vk::StructureType {
1593		self.s_type
1594	}
1595
1596	fn p_next(&self) -> *const std::ffi::c_void {
1597		self.p_next
1598	}
1599
1600	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1601		self.p_next = p_next.cast_const();
1602	}
1603
1604	fn address(&mut self) -> *mut std::ffi::c_void {
1605		std::ptr::from_mut(self).cast()
1606	}
1607}
1608
1609#[cfg(feature = "platform-xcb")]
1610impl<'a> crate::construction::sealed::ChainNode for vk::XcbSurfaceCreateInfoKHR<'a> {
1611	const S_TYPE: vk::StructureType = vk::StructureType::XCB_SURFACE_CREATE_INFO_KHR;
1612
1613	fn s_type(&self) -> vk::StructureType {
1614		self.s_type
1615	}
1616
1617	fn p_next(&self) -> *const std::ffi::c_void {
1618		self.p_next
1619	}
1620
1621	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1622		self.p_next = p_next.cast_const();
1623	}
1624
1625	fn address(&mut self) -> *mut std::ffi::c_void {
1626		std::ptr::from_mut(self).cast()
1627	}
1628}
1629
1630#[cfg(feature = "platform-directfb")]
1631impl<'a> crate::construction::sealed::ChainNode for vk::DirectFBSurfaceCreateInfoEXT<'a> {
1632	const S_TYPE: vk::StructureType = vk::StructureType::DIRECTFB_SURFACE_CREATE_INFO_EXT;
1633
1634	fn s_type(&self) -> vk::StructureType {
1635		self.s_type
1636	}
1637
1638	fn p_next(&self) -> *const std::ffi::c_void {
1639		self.p_next
1640	}
1641
1642	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1643		self.p_next = p_next.cast_const();
1644	}
1645
1646	fn address(&mut self) -> *mut std::ffi::c_void {
1647		std::ptr::from_mut(self).cast()
1648	}
1649}
1650
1651#[cfg(feature = "platform-fuchsia")]
1652impl<'a> crate::construction::sealed::ChainNode for vk::ImagePipeSurfaceCreateInfoFUCHSIA<'a> {
1653	const S_TYPE: vk::StructureType = vk::StructureType::IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA;
1654
1655	fn s_type(&self) -> vk::StructureType {
1656		self.s_type
1657	}
1658
1659	fn p_next(&self) -> *const std::ffi::c_void {
1660		self.p_next
1661	}
1662
1663	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1664		self.p_next = p_next.cast_const();
1665	}
1666
1667	fn address(&mut self) -> *mut std::ffi::c_void {
1668		std::ptr::from_mut(self).cast()
1669	}
1670}
1671
1672#[cfg(feature = "platform-ggp")]
1673impl<'a> crate::construction::sealed::ChainNode for vk::StreamDescriptorSurfaceCreateInfoGGP<'a> {
1674	const S_TYPE: vk::StructureType = vk::StructureType::STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP;
1675
1676	fn s_type(&self) -> vk::StructureType {
1677		self.s_type
1678	}
1679
1680	fn p_next(&self) -> *const std::ffi::c_void {
1681		self.p_next
1682	}
1683
1684	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1685		self.p_next = p_next.cast_const();
1686	}
1687
1688	fn address(&mut self) -> *mut std::ffi::c_void {
1689		std::ptr::from_mut(self).cast()
1690	}
1691}
1692
1693#[cfg(feature = "platform-screen")]
1694impl<'a> crate::construction::sealed::ChainNode for vk::ScreenSurfaceCreateInfoQNX<'a> {
1695	const S_TYPE: vk::StructureType = vk::StructureType::SCREEN_SURFACE_CREATE_INFO_QNX;
1696
1697	fn s_type(&self) -> vk::StructureType {
1698		self.s_type
1699	}
1700
1701	fn p_next(&self) -> *const std::ffi::c_void {
1702		self.p_next
1703	}
1704
1705	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1706		self.p_next = p_next.cast_const();
1707	}
1708
1709	fn address(&mut self) -> *mut std::ffi::c_void {
1710		std::ptr::from_mut(self).cast()
1711	}
1712}
1713
1714impl<'a> crate::construction::sealed::ChainNode for vk::SwapchainCreateInfoKHR<'a> {
1715	const S_TYPE: vk::StructureType = vk::StructureType::SWAPCHAIN_CREATE_INFO_KHR;
1716
1717	fn s_type(&self) -> vk::StructureType {
1718		self.s_type
1719	}
1720
1721	fn p_next(&self) -> *const std::ffi::c_void {
1722		self.p_next
1723	}
1724
1725	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1726		self.p_next = p_next.cast_const();
1727	}
1728
1729	fn address(&mut self) -> *mut std::ffi::c_void {
1730		std::ptr::from_mut(self).cast()
1731	}
1732}
1733
1734impl<'a> crate::construction::sealed::ChainNode for vk::PresentInfoKHR<'a> {
1735	const S_TYPE: vk::StructureType = vk::StructureType::PRESENT_INFO_KHR;
1736
1737	fn s_type(&self) -> vk::StructureType {
1738		self.s_type
1739	}
1740
1741	fn p_next(&self) -> *const std::ffi::c_void {
1742		self.p_next
1743	}
1744
1745	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1746		self.p_next = p_next.cast_const();
1747	}
1748
1749	fn address(&mut self) -> *mut std::ffi::c_void {
1750		std::ptr::from_mut(self).cast()
1751	}
1752}
1753
1754impl<'a> crate::construction::sealed::ChainNode for vk::DebugReportCallbackCreateInfoEXT<'a> {
1755	const S_TYPE: vk::StructureType = vk::StructureType::DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT;
1756
1757	fn s_type(&self) -> vk::StructureType {
1758		self.s_type
1759	}
1760
1761	fn p_next(&self) -> *const std::ffi::c_void {
1762		self.p_next
1763	}
1764
1765	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1766		self.p_next = p_next.cast_const();
1767	}
1768
1769	fn address(&mut self) -> *mut std::ffi::c_void {
1770		std::ptr::from_mut(self).cast()
1771	}
1772}
1773
1774impl<'a, 'root> crate::Extends<vk::InstanceCreateInfo<'root>>
1775	for vk::DebugReportCallbackCreateInfoEXT<'a>
1776{
1777}
1778
1779impl<'a> crate::construction::sealed::ChainNode for vk::ValidationFlagsEXT<'a> {
1780	const S_TYPE: vk::StructureType = vk::StructureType::VALIDATION_FLAGS_EXT;
1781
1782	fn s_type(&self) -> vk::StructureType {
1783		self.s_type
1784	}
1785
1786	fn p_next(&self) -> *const std::ffi::c_void {
1787		self.p_next
1788	}
1789
1790	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1791		self.p_next = p_next.cast_const();
1792	}
1793
1794	fn address(&mut self) -> *mut std::ffi::c_void {
1795		std::ptr::from_mut(self).cast()
1796	}
1797}
1798
1799impl<'a, 'root> crate::Extends<vk::InstanceCreateInfo<'root>> for vk::ValidationFlagsEXT<'a> {}
1800
1801impl<'a> crate::construction::sealed::ChainNode for vk::ValidationFeaturesEXT<'a> {
1802	const S_TYPE: vk::StructureType = vk::StructureType::VALIDATION_FEATURES_EXT;
1803
1804	fn s_type(&self) -> vk::StructureType {
1805		self.s_type
1806	}
1807
1808	fn p_next(&self) -> *const std::ffi::c_void {
1809		self.p_next
1810	}
1811
1812	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1813		self.p_next = p_next.cast_const();
1814	}
1815
1816	fn address(&mut self) -> *mut std::ffi::c_void {
1817		std::ptr::from_mut(self).cast()
1818	}
1819}
1820
1821impl<'a, 'root> crate::Extends<vk::InstanceCreateInfo<'root>> for vk::ValidationFeaturesEXT<'a> {}
1822
1823impl<'a, 'root> crate::Extends<vk::ShaderModuleCreateInfo<'root>>
1824	for vk::ValidationFeaturesEXT<'a>
1825{
1826}
1827
1828impl<'a, 'root> crate::Extends<vk::ShaderCreateInfoEXT<'root>> for vk::ValidationFeaturesEXT<'a> {}
1829
1830impl<'a, 'root> crate::Extends<vk::PipelineShaderStageCreateInfo<'root>>
1831	for vk::ValidationFeaturesEXT<'a>
1832{
1833}
1834
1835impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
1836	for vk::ValidationFeaturesEXT<'a>
1837{
1838}
1839
1840impl<'a, 'root> crate::Extends<vk::ComputePipelineCreateInfo<'root>>
1841	for vk::ValidationFeaturesEXT<'a>
1842{
1843}
1844
1845impl<'a, 'root> crate::Extends<vk::RayTracingPipelineCreateInfoKHR<'root>>
1846	for vk::ValidationFeaturesEXT<'a>
1847{
1848}
1849
1850impl<'a> crate::construction::sealed::ChainNode for vk::LayerSettingsCreateInfoEXT<'a> {
1851	const S_TYPE: vk::StructureType = vk::StructureType::LAYER_SETTINGS_CREATE_INFO_EXT;
1852
1853	fn s_type(&self) -> vk::StructureType {
1854		self.s_type
1855	}
1856
1857	fn p_next(&self) -> *const std::ffi::c_void {
1858		self.p_next
1859	}
1860
1861	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1862		self.p_next = p_next.cast_const();
1863	}
1864
1865	fn address(&mut self) -> *mut std::ffi::c_void {
1866		std::ptr::from_mut(self).cast()
1867	}
1868}
1869
1870impl<'a, 'root> crate::Extends<vk::InstanceCreateInfo<'root>>
1871	for vk::LayerSettingsCreateInfoEXT<'a>
1872{
1873}
1874
1875impl<'a> crate::construction::sealed::ChainNode
1876	for vk::PipelineRasterizationStateRasterizationOrderAMD<'a>
1877{
1878	const S_TYPE: vk::StructureType =
1879		vk::StructureType::PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD;
1880
1881	fn s_type(&self) -> vk::StructureType {
1882		self.s_type
1883	}
1884
1885	fn p_next(&self) -> *const std::ffi::c_void {
1886		self.p_next
1887	}
1888
1889	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1890		self.p_next = p_next.cast_const();
1891	}
1892
1893	fn address(&mut self) -> *mut std::ffi::c_void {
1894		std::ptr::from_mut(self).cast()
1895	}
1896}
1897
1898impl<'a, 'root> crate::Extends<vk::PipelineRasterizationStateCreateInfo<'root>>
1899	for vk::PipelineRasterizationStateRasterizationOrderAMD<'a>
1900{
1901}
1902
1903impl<'a> crate::construction::sealed::ChainNode for vk::DebugMarkerObjectNameInfoEXT<'a> {
1904	const S_TYPE: vk::StructureType = vk::StructureType::DEBUG_MARKER_OBJECT_NAME_INFO_EXT;
1905
1906	fn s_type(&self) -> vk::StructureType {
1907		self.s_type
1908	}
1909
1910	fn p_next(&self) -> *const std::ffi::c_void {
1911		self.p_next
1912	}
1913
1914	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1915		self.p_next = p_next.cast_const();
1916	}
1917
1918	fn address(&mut self) -> *mut std::ffi::c_void {
1919		std::ptr::from_mut(self).cast()
1920	}
1921}
1922
1923impl<'a> crate::construction::sealed::ChainNode for vk::DebugMarkerObjectTagInfoEXT<'a> {
1924	const S_TYPE: vk::StructureType = vk::StructureType::DEBUG_MARKER_OBJECT_TAG_INFO_EXT;
1925
1926	fn s_type(&self) -> vk::StructureType {
1927		self.s_type
1928	}
1929
1930	fn p_next(&self) -> *const std::ffi::c_void {
1931		self.p_next
1932	}
1933
1934	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1935		self.p_next = p_next.cast_const();
1936	}
1937
1938	fn address(&mut self) -> *mut std::ffi::c_void {
1939		std::ptr::from_mut(self).cast()
1940	}
1941}
1942
1943impl<'a> crate::construction::sealed::ChainNode for vk::DebugMarkerMarkerInfoEXT<'a> {
1944	const S_TYPE: vk::StructureType = vk::StructureType::DEBUG_MARKER_MARKER_INFO_EXT;
1945
1946	fn s_type(&self) -> vk::StructureType {
1947		self.s_type
1948	}
1949
1950	fn p_next(&self) -> *const std::ffi::c_void {
1951		self.p_next
1952	}
1953
1954	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1955		self.p_next = p_next.cast_const();
1956	}
1957
1958	fn address(&mut self) -> *mut std::ffi::c_void {
1959		std::ptr::from_mut(self).cast()
1960	}
1961}
1962
1963impl<'a> crate::construction::sealed::ChainNode for vk::DedicatedAllocationImageCreateInfoNV<'a> {
1964	const S_TYPE: vk::StructureType = vk::StructureType::DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV;
1965
1966	fn s_type(&self) -> vk::StructureType {
1967		self.s_type
1968	}
1969
1970	fn p_next(&self) -> *const std::ffi::c_void {
1971		self.p_next
1972	}
1973
1974	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
1975		self.p_next = p_next.cast_const();
1976	}
1977
1978	fn address(&mut self) -> *mut std::ffi::c_void {
1979		std::ptr::from_mut(self).cast()
1980	}
1981}
1982
1983impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>>
1984	for vk::DedicatedAllocationImageCreateInfoNV<'a>
1985{
1986}
1987
1988impl<'a> crate::construction::sealed::ChainNode for vk::DedicatedAllocationBufferCreateInfoNV<'a> {
1989	const S_TYPE: vk::StructureType = vk::StructureType::DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV;
1990
1991	fn s_type(&self) -> vk::StructureType {
1992		self.s_type
1993	}
1994
1995	fn p_next(&self) -> *const std::ffi::c_void {
1996		self.p_next
1997	}
1998
1999	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2000		self.p_next = p_next.cast_const();
2001	}
2002
2003	fn address(&mut self) -> *mut std::ffi::c_void {
2004		std::ptr::from_mut(self).cast()
2005	}
2006}
2007
2008impl<'a, 'root> crate::Extends<vk::BufferCreateInfo<'root>>
2009	for vk::DedicatedAllocationBufferCreateInfoNV<'a>
2010{
2011}
2012
2013impl<'a> crate::construction::sealed::ChainNode
2014	for vk::DedicatedAllocationMemoryAllocateInfoNV<'a>
2015{
2016	const S_TYPE: vk::StructureType = vk::StructureType::DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV;
2017
2018	fn s_type(&self) -> vk::StructureType {
2019		self.s_type
2020	}
2021
2022	fn p_next(&self) -> *const std::ffi::c_void {
2023		self.p_next
2024	}
2025
2026	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2027		self.p_next = p_next.cast_const();
2028	}
2029
2030	fn address(&mut self) -> *mut std::ffi::c_void {
2031		std::ptr::from_mut(self).cast()
2032	}
2033}
2034
2035impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>>
2036	for vk::DedicatedAllocationMemoryAllocateInfoNV<'a>
2037{
2038}
2039
2040impl<'a> crate::construction::sealed::ChainNode for vk::ExternalMemoryImageCreateInfoNV<'a> {
2041	const S_TYPE: vk::StructureType = vk::StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV;
2042
2043	fn s_type(&self) -> vk::StructureType {
2044		self.s_type
2045	}
2046
2047	fn p_next(&self) -> *const std::ffi::c_void {
2048		self.p_next
2049	}
2050
2051	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2052		self.p_next = p_next.cast_const();
2053	}
2054
2055	fn address(&mut self) -> *mut std::ffi::c_void {
2056		std::ptr::from_mut(self).cast()
2057	}
2058}
2059
2060impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>>
2061	for vk::ExternalMemoryImageCreateInfoNV<'a>
2062{
2063}
2064
2065impl<'a> crate::construction::sealed::ChainNode for vk::ExportMemoryAllocateInfoNV<'a> {
2066	const S_TYPE: vk::StructureType = vk::StructureType::EXPORT_MEMORY_ALLOCATE_INFO_NV;
2067
2068	fn s_type(&self) -> vk::StructureType {
2069		self.s_type
2070	}
2071
2072	fn p_next(&self) -> *const std::ffi::c_void {
2073		self.p_next
2074	}
2075
2076	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2077		self.p_next = p_next.cast_const();
2078	}
2079
2080	fn address(&mut self) -> *mut std::ffi::c_void {
2081		std::ptr::from_mut(self).cast()
2082	}
2083}
2084
2085impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>>
2086	for vk::ExportMemoryAllocateInfoNV<'a>
2087{
2088}
2089
2090#[cfg(feature = "platform-win32")]
2091impl<'a> crate::construction::sealed::ChainNode for vk::ImportMemoryWin32HandleInfoNV<'a> {
2092	const S_TYPE: vk::StructureType = vk::StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_NV;
2093
2094	fn s_type(&self) -> vk::StructureType {
2095		self.s_type
2096	}
2097
2098	fn p_next(&self) -> *const std::ffi::c_void {
2099		self.p_next
2100	}
2101
2102	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2103		self.p_next = p_next.cast_const();
2104	}
2105
2106	fn address(&mut self) -> *mut std::ffi::c_void {
2107		std::ptr::from_mut(self).cast()
2108	}
2109}
2110
2111#[cfg(feature = "platform-win32")]
2112impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>>
2113	for vk::ImportMemoryWin32HandleInfoNV<'a>
2114{
2115}
2116
2117#[cfg(feature = "platform-win32")]
2118impl<'a> crate::construction::sealed::ChainNode for vk::ExportMemoryWin32HandleInfoNV<'a> {
2119	const S_TYPE: vk::StructureType = vk::StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_NV;
2120
2121	fn s_type(&self) -> vk::StructureType {
2122		self.s_type
2123	}
2124
2125	fn p_next(&self) -> *const std::ffi::c_void {
2126		self.p_next
2127	}
2128
2129	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2130		self.p_next = p_next.cast_const();
2131	}
2132
2133	fn address(&mut self) -> *mut std::ffi::c_void {
2134		std::ptr::from_mut(self).cast()
2135	}
2136}
2137
2138#[cfg(feature = "platform-win32")]
2139impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>>
2140	for vk::ExportMemoryWin32HandleInfoNV<'a>
2141{
2142}
2143
2144#[cfg(feature = "platform-win32")]
2145impl<'a> crate::construction::sealed::ChainNode for vk::Win32KeyedMutexAcquireReleaseInfoNV<'a> {
2146	const S_TYPE: vk::StructureType = vk::StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV;
2147
2148	fn s_type(&self) -> vk::StructureType {
2149		self.s_type
2150	}
2151
2152	fn p_next(&self) -> *const std::ffi::c_void {
2153		self.p_next
2154	}
2155
2156	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2157		self.p_next = p_next.cast_const();
2158	}
2159
2160	fn address(&mut self) -> *mut std::ffi::c_void {
2161		std::ptr::from_mut(self).cast()
2162	}
2163}
2164
2165#[cfg(feature = "platform-win32")]
2166impl<'a, 'root> crate::Extends<vk::SubmitInfo<'root>>
2167	for vk::Win32KeyedMutexAcquireReleaseInfoNV<'a>
2168{
2169}
2170
2171#[cfg(feature = "platform-win32")]
2172impl<'a, 'root> crate::Extends<vk::SubmitInfo2<'root>>
2173	for vk::Win32KeyedMutexAcquireReleaseInfoNV<'a>
2174{
2175}
2176
2177impl<'a> crate::construction::sealed::ChainNode
2178	for vk::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV<'a>
2179{
2180	const S_TYPE: vk::StructureType =
2181		vk::StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV;
2182
2183	fn s_type(&self) -> vk::StructureType {
2184		self.s_type
2185	}
2186
2187	fn p_next(&self) -> *const std::ffi::c_void {
2188		self.p_next.cast_const()
2189	}
2190
2191	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2192		self.p_next = p_next;
2193	}
2194
2195	fn address(&mut self) -> *mut std::ffi::c_void {
2196		std::ptr::from_mut(self).cast()
2197	}
2198}
2199
2200impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
2201	for vk::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV<'a>
2202{
2203}
2204
2205impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
2206	for vk::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV<'a>
2207{
2208}
2209
2210impl<'a> crate::construction::sealed::ChainNode for vk::PushConstantBankInfoNV<'a> {
2211	const S_TYPE: vk::StructureType = vk::StructureType::PUSH_CONSTANT_BANK_INFO_NV;
2212
2213	fn s_type(&self) -> vk::StructureType {
2214		self.s_type
2215	}
2216
2217	fn p_next(&self) -> *const std::ffi::c_void {
2218		self.p_next
2219	}
2220
2221	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2222		self.p_next = p_next.cast_const();
2223	}
2224
2225	fn address(&mut self) -> *mut std::ffi::c_void {
2226		std::ptr::from_mut(self).cast()
2227	}
2228}
2229
2230impl<'a, 'root> crate::Extends<vk::DescriptorSetAndBindingMappingEXT<'root>>
2231	for vk::PushConstantBankInfoNV<'a>
2232{
2233}
2234
2235impl<'a, 'root> crate::Extends<vk::PushDataInfoEXT<'root>> for vk::PushConstantBankInfoNV<'a> {}
2236
2237impl<'a, 'root> crate::Extends<vk::PushConstantsInfo<'root>> for vk::PushConstantBankInfoNV<'a> {}
2238
2239impl<'a, 'root> crate::Extends<vk::IndirectCommandsLayoutTokenEXT<'root>>
2240	for vk::PushConstantBankInfoNV<'a>
2241{
2242}
2243
2244impl<'a> crate::construction::sealed::ChainNode
2245	for vk::PhysicalDevicePushConstantBankFeaturesNV<'a>
2246{
2247	const S_TYPE: vk::StructureType =
2248		vk::StructureType::PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_FEATURES_NV;
2249
2250	fn s_type(&self) -> vk::StructureType {
2251		self.s_type
2252	}
2253
2254	fn p_next(&self) -> *const std::ffi::c_void {
2255		self.p_next.cast_const()
2256	}
2257
2258	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2259		self.p_next = p_next;
2260	}
2261
2262	fn address(&mut self) -> *mut std::ffi::c_void {
2263		std::ptr::from_mut(self).cast()
2264	}
2265}
2266
2267impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
2268	for vk::PhysicalDevicePushConstantBankFeaturesNV<'a>
2269{
2270}
2271
2272impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
2273	for vk::PhysicalDevicePushConstantBankFeaturesNV<'a>
2274{
2275}
2276
2277impl<'a> crate::construction::sealed::ChainNode
2278	for vk::PhysicalDevicePushConstantBankPropertiesNV<'a>
2279{
2280	const S_TYPE: vk::StructureType =
2281		vk::StructureType::PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_PROPERTIES_NV;
2282
2283	fn s_type(&self) -> vk::StructureType {
2284		self.s_type
2285	}
2286
2287	fn p_next(&self) -> *const std::ffi::c_void {
2288		self.p_next.cast_const()
2289	}
2290
2291	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2292		self.p_next = p_next;
2293	}
2294
2295	fn address(&mut self) -> *mut std::ffi::c_void {
2296		std::ptr::from_mut(self).cast()
2297	}
2298}
2299
2300impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
2301	for vk::PhysicalDevicePushConstantBankPropertiesNV<'a>
2302{
2303}
2304
2305impl<'a> crate::construction::sealed::ChainNode
2306	for vk::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV<'a>
2307{
2308	const S_TYPE: vk::StructureType =
2309		vk::StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV;
2310
2311	fn s_type(&self) -> vk::StructureType {
2312		self.s_type
2313	}
2314
2315	fn p_next(&self) -> *const std::ffi::c_void {
2316		self.p_next.cast_const()
2317	}
2318
2319	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2320		self.p_next = p_next;
2321	}
2322
2323	fn address(&mut self) -> *mut std::ffi::c_void {
2324		std::ptr::from_mut(self).cast()
2325	}
2326}
2327
2328impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
2329	for vk::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV<'a>
2330{
2331}
2332
2333impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
2334	for vk::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV<'a>
2335{
2336}
2337
2338impl<'a> crate::construction::sealed::ChainNode for vk::DevicePrivateDataCreateInfo<'a> {
2339	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_PRIVATE_DATA_CREATE_INFO;
2340
2341	fn s_type(&self) -> vk::StructureType {
2342		self.s_type
2343	}
2344
2345	fn p_next(&self) -> *const std::ffi::c_void {
2346		self.p_next
2347	}
2348
2349	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2350		self.p_next = p_next.cast_const();
2351	}
2352
2353	fn address(&mut self) -> *mut std::ffi::c_void {
2354		std::ptr::from_mut(self).cast()
2355	}
2356}
2357
2358impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
2359	for vk::DevicePrivateDataCreateInfo<'a>
2360{
2361}
2362
2363impl<'a> crate::construction::sealed::ChainNode for vk::PrivateDataSlotCreateInfo<'a> {
2364	const S_TYPE: vk::StructureType = vk::StructureType::PRIVATE_DATA_SLOT_CREATE_INFO;
2365
2366	fn s_type(&self) -> vk::StructureType {
2367		self.s_type
2368	}
2369
2370	fn p_next(&self) -> *const std::ffi::c_void {
2371		self.p_next
2372	}
2373
2374	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2375		self.p_next = p_next.cast_const();
2376	}
2377
2378	fn address(&mut self) -> *mut std::ffi::c_void {
2379		std::ptr::from_mut(self).cast()
2380	}
2381}
2382
2383impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDevicePrivateDataFeatures<'a> {
2384	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES;
2385
2386	fn s_type(&self) -> vk::StructureType {
2387		self.s_type
2388	}
2389
2390	fn p_next(&self) -> *const std::ffi::c_void {
2391		self.p_next.cast_const()
2392	}
2393
2394	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2395		self.p_next = p_next;
2396	}
2397
2398	fn address(&mut self) -> *mut std::ffi::c_void {
2399		std::ptr::from_mut(self).cast()
2400	}
2401}
2402
2403impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
2404	for vk::PhysicalDevicePrivateDataFeatures<'a>
2405{
2406}
2407
2408impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
2409	for vk::PhysicalDevicePrivateDataFeatures<'a>
2410{
2411}
2412
2413impl<'a> crate::construction::sealed::ChainNode
2414	for vk::PhysicalDevicePrivateDataBaseHandleFeaturesNV<'a>
2415{
2416	const S_TYPE: vk::StructureType =
2417		vk::StructureType::PHYSICAL_DEVICE_PRIVATE_DATA_BASE_HANDLE_FEATURES_NV;
2418
2419	fn s_type(&self) -> vk::StructureType {
2420		self.s_type
2421	}
2422
2423	fn p_next(&self) -> *const std::ffi::c_void {
2424		self.p_next.cast_const()
2425	}
2426
2427	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2428		self.p_next = p_next;
2429	}
2430
2431	fn address(&mut self) -> *mut std::ffi::c_void {
2432		std::ptr::from_mut(self).cast()
2433	}
2434}
2435
2436impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
2437	for vk::PhysicalDevicePrivateDataBaseHandleFeaturesNV<'a>
2438{
2439}
2440
2441impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
2442	for vk::PhysicalDevicePrivateDataBaseHandleFeaturesNV<'a>
2443{
2444}
2445
2446impl<'a> crate::construction::sealed::ChainNode
2447	for vk::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV<'a>
2448{
2449	const S_TYPE: vk::StructureType =
2450		vk::StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV;
2451
2452	fn s_type(&self) -> vk::StructureType {
2453		self.s_type
2454	}
2455
2456	fn p_next(&self) -> *const std::ffi::c_void {
2457		self.p_next.cast_const()
2458	}
2459
2460	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2461		self.p_next = p_next;
2462	}
2463
2464	fn address(&mut self) -> *mut std::ffi::c_void {
2465		std::ptr::from_mut(self).cast()
2466	}
2467}
2468
2469impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
2470	for vk::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV<'a>
2471{
2472}
2473
2474impl<'a> crate::construction::sealed::ChainNode
2475	for vk::PhysicalDeviceClusterAccelerationStructureFeaturesNV<'a>
2476{
2477	const S_TYPE: vk::StructureType =
2478		vk::StructureType::PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV;
2479
2480	fn s_type(&self) -> vk::StructureType {
2481		self.s_type
2482	}
2483
2484	fn p_next(&self) -> *const std::ffi::c_void {
2485		self.p_next.cast_const()
2486	}
2487
2488	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2489		self.p_next = p_next;
2490	}
2491
2492	fn address(&mut self) -> *mut std::ffi::c_void {
2493		std::ptr::from_mut(self).cast()
2494	}
2495}
2496
2497impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
2498	for vk::PhysicalDeviceClusterAccelerationStructureFeaturesNV<'a>
2499{
2500}
2501
2502impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
2503	for vk::PhysicalDeviceClusterAccelerationStructureFeaturesNV<'a>
2504{
2505}
2506
2507impl<'a> crate::construction::sealed::ChainNode
2508	for vk::PhysicalDeviceClusterAccelerationStructurePropertiesNV<'a>
2509{
2510	const S_TYPE: vk::StructureType =
2511		vk::StructureType::PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV;
2512
2513	fn s_type(&self) -> vk::StructureType {
2514		self.s_type
2515	}
2516
2517	fn p_next(&self) -> *const std::ffi::c_void {
2518		self.p_next.cast_const()
2519	}
2520
2521	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2522		self.p_next = p_next;
2523	}
2524
2525	fn address(&mut self) -> *mut std::ffi::c_void {
2526		std::ptr::from_mut(self).cast()
2527	}
2528}
2529
2530impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
2531	for vk::PhysicalDeviceClusterAccelerationStructurePropertiesNV<'a>
2532{
2533}
2534
2535impl<'a> crate::construction::sealed::ChainNode
2536	for vk::RayTracingPipelineClusterAccelerationStructureCreateInfoNV<'a>
2537{
2538	const S_TYPE: vk::StructureType =
2539		vk::StructureType::RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV;
2540
2541	fn s_type(&self) -> vk::StructureType {
2542		self.s_type
2543	}
2544
2545	fn p_next(&self) -> *const std::ffi::c_void {
2546		self.p_next.cast_const()
2547	}
2548
2549	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2550		self.p_next = p_next;
2551	}
2552
2553	fn address(&mut self) -> *mut std::ffi::c_void {
2554		std::ptr::from_mut(self).cast()
2555	}
2556}
2557
2558impl<'a, 'root> crate::Extends<vk::RayTracingPipelineCreateInfoKHR<'root>>
2559	for vk::RayTracingPipelineClusterAccelerationStructureCreateInfoNV<'a>
2560{
2561}
2562
2563impl<'a> crate::construction::sealed::ChainNode
2564	for vk::ClusterAccelerationStructureClustersBottomLevelInputNV<'a>
2565{
2566	const S_TYPE: vk::StructureType =
2567		vk::StructureType::CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV;
2568
2569	fn s_type(&self) -> vk::StructureType {
2570		self.s_type
2571	}
2572
2573	fn p_next(&self) -> *const std::ffi::c_void {
2574		self.p_next.cast_const()
2575	}
2576
2577	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2578		self.p_next = p_next;
2579	}
2580
2581	fn address(&mut self) -> *mut std::ffi::c_void {
2582		std::ptr::from_mut(self).cast()
2583	}
2584}
2585
2586impl<'a> crate::construction::sealed::ChainNode
2587	for vk::ClusterAccelerationStructureTriangleClusterInputNV<'a>
2588{
2589	const S_TYPE: vk::StructureType =
2590		vk::StructureType::CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV;
2591
2592	fn s_type(&self) -> vk::StructureType {
2593		self.s_type
2594	}
2595
2596	fn p_next(&self) -> *const std::ffi::c_void {
2597		self.p_next.cast_const()
2598	}
2599
2600	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2601		self.p_next = p_next;
2602	}
2603
2604	fn address(&mut self) -> *mut std::ffi::c_void {
2605		std::ptr::from_mut(self).cast()
2606	}
2607}
2608
2609impl<'a> crate::construction::sealed::ChainNode
2610	for vk::ClusterAccelerationStructureMoveObjectsInputNV<'a>
2611{
2612	const S_TYPE: vk::StructureType =
2613		vk::StructureType::CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV;
2614
2615	fn s_type(&self) -> vk::StructureType {
2616		self.s_type
2617	}
2618
2619	fn p_next(&self) -> *const std::ffi::c_void {
2620		self.p_next.cast_const()
2621	}
2622
2623	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2624		self.p_next = p_next;
2625	}
2626
2627	fn address(&mut self) -> *mut std::ffi::c_void {
2628		std::ptr::from_mut(self).cast()
2629	}
2630}
2631
2632impl<'a> crate::construction::sealed::ChainNode
2633	for vk::ClusterAccelerationStructureInputInfoNV<'a>
2634{
2635	const S_TYPE: vk::StructureType = vk::StructureType::CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV;
2636
2637	fn s_type(&self) -> vk::StructureType {
2638		self.s_type
2639	}
2640
2641	fn p_next(&self) -> *const std::ffi::c_void {
2642		self.p_next.cast_const()
2643	}
2644
2645	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2646		self.p_next = p_next;
2647	}
2648
2649	fn address(&mut self) -> *mut std::ffi::c_void {
2650		std::ptr::from_mut(self).cast()
2651	}
2652}
2653
2654impl<'a> crate::construction::sealed::ChainNode
2655	for vk::ClusterAccelerationStructureCommandsInfoNV<'a>
2656{
2657	const S_TYPE: vk::StructureType =
2658		vk::StructureType::CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV;
2659
2660	fn s_type(&self) -> vk::StructureType {
2661		self.s_type
2662	}
2663
2664	fn p_next(&self) -> *const std::ffi::c_void {
2665		self.p_next.cast_const()
2666	}
2667
2668	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2669		self.p_next = p_next;
2670	}
2671
2672	fn address(&mut self) -> *mut std::ffi::c_void {
2673		std::ptr::from_mut(self).cast()
2674	}
2675}
2676
2677impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceMultiDrawPropertiesEXT<'a> {
2678	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT;
2679
2680	fn s_type(&self) -> vk::StructureType {
2681		self.s_type
2682	}
2683
2684	fn p_next(&self) -> *const std::ffi::c_void {
2685		self.p_next.cast_const()
2686	}
2687
2688	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2689		self.p_next = p_next;
2690	}
2691
2692	fn address(&mut self) -> *mut std::ffi::c_void {
2693		std::ptr::from_mut(self).cast()
2694	}
2695}
2696
2697impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
2698	for vk::PhysicalDeviceMultiDrawPropertiesEXT<'a>
2699{
2700}
2701
2702impl<'a> crate::construction::sealed::ChainNode for vk::GraphicsShaderGroupCreateInfoNV<'a> {
2703	const S_TYPE: vk::StructureType = vk::StructureType::GRAPHICS_SHADER_GROUP_CREATE_INFO_NV;
2704
2705	fn s_type(&self) -> vk::StructureType {
2706		self.s_type
2707	}
2708
2709	fn p_next(&self) -> *const std::ffi::c_void {
2710		self.p_next
2711	}
2712
2713	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2714		self.p_next = p_next.cast_const();
2715	}
2716
2717	fn address(&mut self) -> *mut std::ffi::c_void {
2718		std::ptr::from_mut(self).cast()
2719	}
2720}
2721
2722impl<'a> crate::construction::sealed::ChainNode
2723	for vk::GraphicsPipelineShaderGroupsCreateInfoNV<'a>
2724{
2725	const S_TYPE: vk::StructureType =
2726		vk::StructureType::GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV;
2727
2728	fn s_type(&self) -> vk::StructureType {
2729		self.s_type
2730	}
2731
2732	fn p_next(&self) -> *const std::ffi::c_void {
2733		self.p_next
2734	}
2735
2736	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2737		self.p_next = p_next.cast_const();
2738	}
2739
2740	fn address(&mut self) -> *mut std::ffi::c_void {
2741		std::ptr::from_mut(self).cast()
2742	}
2743}
2744
2745impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
2746	for vk::GraphicsPipelineShaderGroupsCreateInfoNV<'a>
2747{
2748}
2749
2750impl<'a> crate::construction::sealed::ChainNode for vk::IndirectCommandsLayoutTokenNV<'a> {
2751	const S_TYPE: vk::StructureType = vk::StructureType::INDIRECT_COMMANDS_LAYOUT_TOKEN_NV;
2752
2753	fn s_type(&self) -> vk::StructureType {
2754		self.s_type
2755	}
2756
2757	fn p_next(&self) -> *const std::ffi::c_void {
2758		self.p_next
2759	}
2760
2761	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2762		self.p_next = p_next.cast_const();
2763	}
2764
2765	fn address(&mut self) -> *mut std::ffi::c_void {
2766		std::ptr::from_mut(self).cast()
2767	}
2768}
2769
2770impl<'a> crate::construction::sealed::ChainNode for vk::IndirectCommandsLayoutCreateInfoNV<'a> {
2771	const S_TYPE: vk::StructureType = vk::StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV;
2772
2773	fn s_type(&self) -> vk::StructureType {
2774		self.s_type
2775	}
2776
2777	fn p_next(&self) -> *const std::ffi::c_void {
2778		self.p_next
2779	}
2780
2781	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2782		self.p_next = p_next.cast_const();
2783	}
2784
2785	fn address(&mut self) -> *mut std::ffi::c_void {
2786		std::ptr::from_mut(self).cast()
2787	}
2788}
2789
2790impl<'a> crate::construction::sealed::ChainNode for vk::GeneratedCommandsInfoNV<'a> {
2791	const S_TYPE: vk::StructureType = vk::StructureType::GENERATED_COMMANDS_INFO_NV;
2792
2793	fn s_type(&self) -> vk::StructureType {
2794		self.s_type
2795	}
2796
2797	fn p_next(&self) -> *const std::ffi::c_void {
2798		self.p_next
2799	}
2800
2801	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2802		self.p_next = p_next.cast_const();
2803	}
2804
2805	fn address(&mut self) -> *mut std::ffi::c_void {
2806		std::ptr::from_mut(self).cast()
2807	}
2808}
2809
2810impl<'a> crate::construction::sealed::ChainNode
2811	for vk::GeneratedCommandsMemoryRequirementsInfoNV<'a>
2812{
2813	const S_TYPE: vk::StructureType =
2814		vk::StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV;
2815
2816	fn s_type(&self) -> vk::StructureType {
2817		self.s_type
2818	}
2819
2820	fn p_next(&self) -> *const std::ffi::c_void {
2821		self.p_next
2822	}
2823
2824	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2825		self.p_next = p_next.cast_const();
2826	}
2827
2828	fn address(&mut self) -> *mut std::ffi::c_void {
2829		std::ptr::from_mut(self).cast()
2830	}
2831}
2832
2833impl<'a> crate::construction::sealed::ChainNode for vk::PipelineIndirectDeviceAddressInfoNV<'a> {
2834	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV;
2835
2836	fn s_type(&self) -> vk::StructureType {
2837		self.s_type
2838	}
2839
2840	fn p_next(&self) -> *const std::ffi::c_void {
2841		self.p_next
2842	}
2843
2844	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2845		self.p_next = p_next.cast_const();
2846	}
2847
2848	fn address(&mut self) -> *mut std::ffi::c_void {
2849		std::ptr::from_mut(self).cast()
2850	}
2851}
2852
2853impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceFeatures2<'a> {
2854	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_FEATURES_2;
2855
2856	fn s_type(&self) -> vk::StructureType {
2857		self.s_type
2858	}
2859
2860	fn p_next(&self) -> *const std::ffi::c_void {
2861		self.p_next.cast_const()
2862	}
2863
2864	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2865		self.p_next = p_next;
2866	}
2867
2868	fn address(&mut self) -> *mut std::ffi::c_void {
2869		std::ptr::from_mut(self).cast()
2870	}
2871}
2872
2873impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>> for vk::PhysicalDeviceFeatures2<'a> {}
2874
2875impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceProperties2<'a> {
2876	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_PROPERTIES_2;
2877
2878	fn s_type(&self) -> vk::StructureType {
2879		self.s_type
2880	}
2881
2882	fn p_next(&self) -> *const std::ffi::c_void {
2883		self.p_next.cast_const()
2884	}
2885
2886	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2887		self.p_next = p_next;
2888	}
2889
2890	fn address(&mut self) -> *mut std::ffi::c_void {
2891		std::ptr::from_mut(self).cast()
2892	}
2893}
2894
2895impl<'a> crate::construction::sealed::ChainNode for vk::FormatProperties2<'a> {
2896	const S_TYPE: vk::StructureType = vk::StructureType::FORMAT_PROPERTIES_2;
2897
2898	fn s_type(&self) -> vk::StructureType {
2899		self.s_type
2900	}
2901
2902	fn p_next(&self) -> *const std::ffi::c_void {
2903		self.p_next.cast_const()
2904	}
2905
2906	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2907		self.p_next = p_next;
2908	}
2909
2910	fn address(&mut self) -> *mut std::ffi::c_void {
2911		std::ptr::from_mut(self).cast()
2912	}
2913}
2914
2915impl<'a> crate::construction::sealed::ChainNode for vk::ImageFormatProperties2<'a> {
2916	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_FORMAT_PROPERTIES_2;
2917
2918	fn s_type(&self) -> vk::StructureType {
2919		self.s_type
2920	}
2921
2922	fn p_next(&self) -> *const std::ffi::c_void {
2923		self.p_next.cast_const()
2924	}
2925
2926	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2927		self.p_next = p_next;
2928	}
2929
2930	fn address(&mut self) -> *mut std::ffi::c_void {
2931		std::ptr::from_mut(self).cast()
2932	}
2933}
2934
2935impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceImageFormatInfo2<'a> {
2936	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2;
2937
2938	fn s_type(&self) -> vk::StructureType {
2939		self.s_type
2940	}
2941
2942	fn p_next(&self) -> *const std::ffi::c_void {
2943		self.p_next
2944	}
2945
2946	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2947		self.p_next = p_next.cast_const();
2948	}
2949
2950	fn address(&mut self) -> *mut std::ffi::c_void {
2951		std::ptr::from_mut(self).cast()
2952	}
2953}
2954
2955impl<'a> crate::construction::sealed::ChainNode for vk::QueueFamilyProperties2<'a> {
2956	const S_TYPE: vk::StructureType = vk::StructureType::QUEUE_FAMILY_PROPERTIES_2;
2957
2958	fn s_type(&self) -> vk::StructureType {
2959		self.s_type
2960	}
2961
2962	fn p_next(&self) -> *const std::ffi::c_void {
2963		self.p_next.cast_const()
2964	}
2965
2966	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2967		self.p_next = p_next;
2968	}
2969
2970	fn address(&mut self) -> *mut std::ffi::c_void {
2971		std::ptr::from_mut(self).cast()
2972	}
2973}
2974
2975impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceMemoryProperties2<'a> {
2976	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MEMORY_PROPERTIES_2;
2977
2978	fn s_type(&self) -> vk::StructureType {
2979		self.s_type
2980	}
2981
2982	fn p_next(&self) -> *const std::ffi::c_void {
2983		self.p_next.cast_const()
2984	}
2985
2986	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
2987		self.p_next = p_next;
2988	}
2989
2990	fn address(&mut self) -> *mut std::ffi::c_void {
2991		std::ptr::from_mut(self).cast()
2992	}
2993}
2994
2995impl<'a> crate::construction::sealed::ChainNode for vk::SparseImageFormatProperties2<'a> {
2996	const S_TYPE: vk::StructureType = vk::StructureType::SPARSE_IMAGE_FORMAT_PROPERTIES_2;
2997
2998	fn s_type(&self) -> vk::StructureType {
2999		self.s_type
3000	}
3001
3002	fn p_next(&self) -> *const std::ffi::c_void {
3003		self.p_next.cast_const()
3004	}
3005
3006	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3007		self.p_next = p_next;
3008	}
3009
3010	fn address(&mut self) -> *mut std::ffi::c_void {
3011		std::ptr::from_mut(self).cast()
3012	}
3013}
3014
3015impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceSparseImageFormatInfo2<'a> {
3016	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2;
3017
3018	fn s_type(&self) -> vk::StructureType {
3019		self.s_type
3020	}
3021
3022	fn p_next(&self) -> *const std::ffi::c_void {
3023		self.p_next
3024	}
3025
3026	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3027		self.p_next = p_next.cast_const();
3028	}
3029
3030	fn address(&mut self) -> *mut std::ffi::c_void {
3031		std::ptr::from_mut(self).cast()
3032	}
3033}
3034
3035impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDevicePushDescriptorProperties<'a> {
3036	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES;
3037
3038	fn s_type(&self) -> vk::StructureType {
3039		self.s_type
3040	}
3041
3042	fn p_next(&self) -> *const std::ffi::c_void {
3043		self.p_next.cast_const()
3044	}
3045
3046	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3047		self.p_next = p_next;
3048	}
3049
3050	fn address(&mut self) -> *mut std::ffi::c_void {
3051		std::ptr::from_mut(self).cast()
3052	}
3053}
3054
3055impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
3056	for vk::PhysicalDevicePushDescriptorProperties<'a>
3057{
3058}
3059
3060impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceDriverProperties<'a> {
3061	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_DRIVER_PROPERTIES;
3062
3063	fn s_type(&self) -> vk::StructureType {
3064		self.s_type
3065	}
3066
3067	fn p_next(&self) -> *const std::ffi::c_void {
3068		self.p_next.cast_const()
3069	}
3070
3071	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3072		self.p_next = p_next;
3073	}
3074
3075	fn address(&mut self) -> *mut std::ffi::c_void {
3076		std::ptr::from_mut(self).cast()
3077	}
3078}
3079
3080impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
3081	for vk::PhysicalDeviceDriverProperties<'a>
3082{
3083}
3084
3085impl<'a> crate::construction::sealed::ChainNode for vk::PresentRegionsKHR<'a> {
3086	const S_TYPE: vk::StructureType = vk::StructureType::PRESENT_REGIONS_KHR;
3087
3088	fn s_type(&self) -> vk::StructureType {
3089		self.s_type
3090	}
3091
3092	fn p_next(&self) -> *const std::ffi::c_void {
3093		self.p_next
3094	}
3095
3096	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3097		self.p_next = p_next.cast_const();
3098	}
3099
3100	fn address(&mut self) -> *mut std::ffi::c_void {
3101		std::ptr::from_mut(self).cast()
3102	}
3103}
3104
3105impl<'a, 'root> crate::Extends<vk::PresentInfoKHR<'root>> for vk::PresentRegionsKHR<'a> {}
3106
3107impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceVariablePointersFeatures<'a> {
3108	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES;
3109
3110	fn s_type(&self) -> vk::StructureType {
3111		self.s_type
3112	}
3113
3114	fn p_next(&self) -> *const std::ffi::c_void {
3115		self.p_next.cast_const()
3116	}
3117
3118	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3119		self.p_next = p_next;
3120	}
3121
3122	fn address(&mut self) -> *mut std::ffi::c_void {
3123		std::ptr::from_mut(self).cast()
3124	}
3125}
3126
3127impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
3128	for vk::PhysicalDeviceVariablePointersFeatures<'a>
3129{
3130}
3131
3132impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
3133	for vk::PhysicalDeviceVariablePointersFeatures<'a>
3134{
3135}
3136
3137impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceExternalImageFormatInfo<'a> {
3138	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO;
3139
3140	fn s_type(&self) -> vk::StructureType {
3141		self.s_type
3142	}
3143
3144	fn p_next(&self) -> *const std::ffi::c_void {
3145		self.p_next
3146	}
3147
3148	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3149		self.p_next = p_next.cast_const();
3150	}
3151
3152	fn address(&mut self) -> *mut std::ffi::c_void {
3153		std::ptr::from_mut(self).cast()
3154	}
3155}
3156
3157impl<'a, 'root> crate::Extends<vk::PhysicalDeviceImageFormatInfo2<'root>>
3158	for vk::PhysicalDeviceExternalImageFormatInfo<'a>
3159{
3160}
3161
3162impl<'a> crate::construction::sealed::ChainNode for vk::ExternalImageFormatProperties<'a> {
3163	const S_TYPE: vk::StructureType = vk::StructureType::EXTERNAL_IMAGE_FORMAT_PROPERTIES;
3164
3165	fn s_type(&self) -> vk::StructureType {
3166		self.s_type
3167	}
3168
3169	fn p_next(&self) -> *const std::ffi::c_void {
3170		self.p_next.cast_const()
3171	}
3172
3173	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3174		self.p_next = p_next;
3175	}
3176
3177	fn address(&mut self) -> *mut std::ffi::c_void {
3178		std::ptr::from_mut(self).cast()
3179	}
3180}
3181
3182impl<'a, 'root> crate::Extends<vk::ImageFormatProperties2<'root>>
3183	for vk::ExternalImageFormatProperties<'a>
3184{
3185}
3186
3187impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceExternalBufferInfo<'a> {
3188	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO;
3189
3190	fn s_type(&self) -> vk::StructureType {
3191		self.s_type
3192	}
3193
3194	fn p_next(&self) -> *const std::ffi::c_void {
3195		self.p_next
3196	}
3197
3198	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3199		self.p_next = p_next.cast_const();
3200	}
3201
3202	fn address(&mut self) -> *mut std::ffi::c_void {
3203		std::ptr::from_mut(self).cast()
3204	}
3205}
3206
3207impl<'a> crate::construction::sealed::ChainNode for vk::ExternalBufferProperties<'a> {
3208	const S_TYPE: vk::StructureType = vk::StructureType::EXTERNAL_BUFFER_PROPERTIES;
3209
3210	fn s_type(&self) -> vk::StructureType {
3211		self.s_type
3212	}
3213
3214	fn p_next(&self) -> *const std::ffi::c_void {
3215		self.p_next.cast_const()
3216	}
3217
3218	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3219		self.p_next = p_next;
3220	}
3221
3222	fn address(&mut self) -> *mut std::ffi::c_void {
3223		std::ptr::from_mut(self).cast()
3224	}
3225}
3226
3227impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceIDProperties<'a> {
3228	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_ID_PROPERTIES;
3229
3230	fn s_type(&self) -> vk::StructureType {
3231		self.s_type
3232	}
3233
3234	fn p_next(&self) -> *const std::ffi::c_void {
3235		self.p_next.cast_const()
3236	}
3237
3238	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3239		self.p_next = p_next;
3240	}
3241
3242	fn address(&mut self) -> *mut std::ffi::c_void {
3243		std::ptr::from_mut(self).cast()
3244	}
3245}
3246
3247impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
3248	for vk::PhysicalDeviceIDProperties<'a>
3249{
3250}
3251
3252impl<'a> crate::construction::sealed::ChainNode for vk::ExternalMemoryImageCreateInfo<'a> {
3253	const S_TYPE: vk::StructureType = vk::StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO;
3254
3255	fn s_type(&self) -> vk::StructureType {
3256		self.s_type
3257	}
3258
3259	fn p_next(&self) -> *const std::ffi::c_void {
3260		self.p_next
3261	}
3262
3263	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3264		self.p_next = p_next.cast_const();
3265	}
3266
3267	fn address(&mut self) -> *mut std::ffi::c_void {
3268		std::ptr::from_mut(self).cast()
3269	}
3270}
3271
3272impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>>
3273	for vk::ExternalMemoryImageCreateInfo<'a>
3274{
3275}
3276
3277impl<'a> crate::construction::sealed::ChainNode for vk::ExternalMemoryBufferCreateInfo<'a> {
3278	const S_TYPE: vk::StructureType = vk::StructureType::EXTERNAL_MEMORY_BUFFER_CREATE_INFO;
3279
3280	fn s_type(&self) -> vk::StructureType {
3281		self.s_type
3282	}
3283
3284	fn p_next(&self) -> *const std::ffi::c_void {
3285		self.p_next
3286	}
3287
3288	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3289		self.p_next = p_next.cast_const();
3290	}
3291
3292	fn address(&mut self) -> *mut std::ffi::c_void {
3293		std::ptr::from_mut(self).cast()
3294	}
3295}
3296
3297impl<'a, 'root> crate::Extends<vk::BufferCreateInfo<'root>>
3298	for vk::ExternalMemoryBufferCreateInfo<'a>
3299{
3300}
3301
3302impl<'a> crate::construction::sealed::ChainNode for vk::ExportMemoryAllocateInfo<'a> {
3303	const S_TYPE: vk::StructureType = vk::StructureType::EXPORT_MEMORY_ALLOCATE_INFO;
3304
3305	fn s_type(&self) -> vk::StructureType {
3306		self.s_type
3307	}
3308
3309	fn p_next(&self) -> *const std::ffi::c_void {
3310		self.p_next
3311	}
3312
3313	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3314		self.p_next = p_next.cast_const();
3315	}
3316
3317	fn address(&mut self) -> *mut std::ffi::c_void {
3318		std::ptr::from_mut(self).cast()
3319	}
3320}
3321
3322impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>> for vk::ExportMemoryAllocateInfo<'a> {}
3323
3324#[cfg(feature = "platform-win32")]
3325impl<'a> crate::construction::sealed::ChainNode for vk::ImportMemoryWin32HandleInfoKHR<'a> {
3326	const S_TYPE: vk::StructureType = vk::StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR;
3327
3328	fn s_type(&self) -> vk::StructureType {
3329		self.s_type
3330	}
3331
3332	fn p_next(&self) -> *const std::ffi::c_void {
3333		self.p_next
3334	}
3335
3336	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3337		self.p_next = p_next.cast_const();
3338	}
3339
3340	fn address(&mut self) -> *mut std::ffi::c_void {
3341		std::ptr::from_mut(self).cast()
3342	}
3343}
3344
3345#[cfg(feature = "platform-win32")]
3346impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>>
3347	for vk::ImportMemoryWin32HandleInfoKHR<'a>
3348{
3349}
3350
3351#[cfg(feature = "platform-win32")]
3352impl<'a> crate::construction::sealed::ChainNode for vk::ExportMemoryWin32HandleInfoKHR<'a> {
3353	const S_TYPE: vk::StructureType = vk::StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR;
3354
3355	fn s_type(&self) -> vk::StructureType {
3356		self.s_type
3357	}
3358
3359	fn p_next(&self) -> *const std::ffi::c_void {
3360		self.p_next
3361	}
3362
3363	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3364		self.p_next = p_next.cast_const();
3365	}
3366
3367	fn address(&mut self) -> *mut std::ffi::c_void {
3368		std::ptr::from_mut(self).cast()
3369	}
3370}
3371
3372#[cfg(feature = "platform-win32")]
3373impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>>
3374	for vk::ExportMemoryWin32HandleInfoKHR<'a>
3375{
3376}
3377
3378#[cfg(feature = "platform-fuchsia")]
3379impl<'a> crate::construction::sealed::ChainNode for vk::ImportMemoryZirconHandleInfoFUCHSIA<'a> {
3380	const S_TYPE: vk::StructureType = vk::StructureType::IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA;
3381
3382	fn s_type(&self) -> vk::StructureType {
3383		self.s_type
3384	}
3385
3386	fn p_next(&self) -> *const std::ffi::c_void {
3387		self.p_next
3388	}
3389
3390	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3391		self.p_next = p_next.cast_const();
3392	}
3393
3394	fn address(&mut self) -> *mut std::ffi::c_void {
3395		std::ptr::from_mut(self).cast()
3396	}
3397}
3398
3399#[cfg(feature = "platform-fuchsia")]
3400impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>>
3401	for vk::ImportMemoryZirconHandleInfoFUCHSIA<'a>
3402{
3403}
3404
3405#[cfg(feature = "platform-fuchsia")]
3406impl<'a> crate::construction::sealed::ChainNode for vk::MemoryZirconHandlePropertiesFUCHSIA<'a> {
3407	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA;
3408
3409	fn s_type(&self) -> vk::StructureType {
3410		self.s_type
3411	}
3412
3413	fn p_next(&self) -> *const std::ffi::c_void {
3414		self.p_next.cast_const()
3415	}
3416
3417	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3418		self.p_next = p_next;
3419	}
3420
3421	fn address(&mut self) -> *mut std::ffi::c_void {
3422		std::ptr::from_mut(self).cast()
3423	}
3424}
3425
3426#[cfg(feature = "platform-fuchsia")]
3427impl<'a> crate::construction::sealed::ChainNode for vk::MemoryGetZirconHandleInfoFUCHSIA<'a> {
3428	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA;
3429
3430	fn s_type(&self) -> vk::StructureType {
3431		self.s_type
3432	}
3433
3434	fn p_next(&self) -> *const std::ffi::c_void {
3435		self.p_next
3436	}
3437
3438	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3439		self.p_next = p_next.cast_const();
3440	}
3441
3442	fn address(&mut self) -> *mut std::ffi::c_void {
3443		std::ptr::from_mut(self).cast()
3444	}
3445}
3446
3447#[cfg(feature = "platform-win32")]
3448impl<'a> crate::construction::sealed::ChainNode for vk::MemoryWin32HandlePropertiesKHR<'a> {
3449	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_WIN32_HANDLE_PROPERTIES_KHR;
3450
3451	fn s_type(&self) -> vk::StructureType {
3452		self.s_type
3453	}
3454
3455	fn p_next(&self) -> *const std::ffi::c_void {
3456		self.p_next.cast_const()
3457	}
3458
3459	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3460		self.p_next = p_next;
3461	}
3462
3463	fn address(&mut self) -> *mut std::ffi::c_void {
3464		std::ptr::from_mut(self).cast()
3465	}
3466}
3467
3468#[cfg(feature = "platform-win32")]
3469impl<'a> crate::construction::sealed::ChainNode for vk::MemoryGetWin32HandleInfoKHR<'a> {
3470	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_GET_WIN32_HANDLE_INFO_KHR;
3471
3472	fn s_type(&self) -> vk::StructureType {
3473		self.s_type
3474	}
3475
3476	fn p_next(&self) -> *const std::ffi::c_void {
3477		self.p_next
3478	}
3479
3480	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3481		self.p_next = p_next.cast_const();
3482	}
3483
3484	fn address(&mut self) -> *mut std::ffi::c_void {
3485		std::ptr::from_mut(self).cast()
3486	}
3487}
3488
3489impl<'a> crate::construction::sealed::ChainNode for vk::ImportMemoryFdInfoKHR<'a> {
3490	const S_TYPE: vk::StructureType = vk::StructureType::IMPORT_MEMORY_FD_INFO_KHR;
3491
3492	fn s_type(&self) -> vk::StructureType {
3493		self.s_type
3494	}
3495
3496	fn p_next(&self) -> *const std::ffi::c_void {
3497		self.p_next
3498	}
3499
3500	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3501		self.p_next = p_next.cast_const();
3502	}
3503
3504	fn address(&mut self) -> *mut std::ffi::c_void {
3505		std::ptr::from_mut(self).cast()
3506	}
3507}
3508
3509impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>> for vk::ImportMemoryFdInfoKHR<'a> {}
3510
3511impl<'a> crate::construction::sealed::ChainNode for vk::MemoryFdPropertiesKHR<'a> {
3512	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_FD_PROPERTIES_KHR;
3513
3514	fn s_type(&self) -> vk::StructureType {
3515		self.s_type
3516	}
3517
3518	fn p_next(&self) -> *const std::ffi::c_void {
3519		self.p_next.cast_const()
3520	}
3521
3522	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3523		self.p_next = p_next;
3524	}
3525
3526	fn address(&mut self) -> *mut std::ffi::c_void {
3527		std::ptr::from_mut(self).cast()
3528	}
3529}
3530
3531impl<'a> crate::construction::sealed::ChainNode for vk::MemoryGetFdInfoKHR<'a> {
3532	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_GET_FD_INFO_KHR;
3533
3534	fn s_type(&self) -> vk::StructureType {
3535		self.s_type
3536	}
3537
3538	fn p_next(&self) -> *const std::ffi::c_void {
3539		self.p_next
3540	}
3541
3542	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3543		self.p_next = p_next.cast_const();
3544	}
3545
3546	fn address(&mut self) -> *mut std::ffi::c_void {
3547		std::ptr::from_mut(self).cast()
3548	}
3549}
3550
3551#[cfg(feature = "platform-win32")]
3552impl<'a> crate::construction::sealed::ChainNode for vk::Win32KeyedMutexAcquireReleaseInfoKHR<'a> {
3553	const S_TYPE: vk::StructureType = vk::StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR;
3554
3555	fn s_type(&self) -> vk::StructureType {
3556		self.s_type
3557	}
3558
3559	fn p_next(&self) -> *const std::ffi::c_void {
3560		self.p_next
3561	}
3562
3563	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3564		self.p_next = p_next.cast_const();
3565	}
3566
3567	fn address(&mut self) -> *mut std::ffi::c_void {
3568		std::ptr::from_mut(self).cast()
3569	}
3570}
3571
3572#[cfg(feature = "platform-win32")]
3573impl<'a, 'root> crate::Extends<vk::SubmitInfo<'root>>
3574	for vk::Win32KeyedMutexAcquireReleaseInfoKHR<'a>
3575{
3576}
3577
3578#[cfg(feature = "platform-win32")]
3579impl<'a, 'root> crate::Extends<vk::SubmitInfo2<'root>>
3580	for vk::Win32KeyedMutexAcquireReleaseInfoKHR<'a>
3581{
3582}
3583
3584#[cfg(feature = "platform-metal")]
3585impl<'a> crate::construction::sealed::ChainNode for vk::ImportMemoryMetalHandleInfoEXT<'a> {
3586	const S_TYPE: vk::StructureType = vk::StructureType::IMPORT_MEMORY_METAL_HANDLE_INFO_EXT;
3587
3588	fn s_type(&self) -> vk::StructureType {
3589		self.s_type
3590	}
3591
3592	fn p_next(&self) -> *const std::ffi::c_void {
3593		self.p_next
3594	}
3595
3596	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3597		self.p_next = p_next.cast_const();
3598	}
3599
3600	fn address(&mut self) -> *mut std::ffi::c_void {
3601		std::ptr::from_mut(self).cast()
3602	}
3603}
3604
3605#[cfg(feature = "platform-metal")]
3606impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>>
3607	for vk::ImportMemoryMetalHandleInfoEXT<'a>
3608{
3609}
3610
3611#[cfg(feature = "platform-metal")]
3612impl<'a> crate::construction::sealed::ChainNode for vk::MemoryMetalHandlePropertiesEXT<'a> {
3613	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_METAL_HANDLE_PROPERTIES_EXT;
3614
3615	fn s_type(&self) -> vk::StructureType {
3616		self.s_type
3617	}
3618
3619	fn p_next(&self) -> *const std::ffi::c_void {
3620		self.p_next.cast_const()
3621	}
3622
3623	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3624		self.p_next = p_next;
3625	}
3626
3627	fn address(&mut self) -> *mut std::ffi::c_void {
3628		std::ptr::from_mut(self).cast()
3629	}
3630}
3631
3632#[cfg(feature = "platform-metal")]
3633impl<'a> crate::construction::sealed::ChainNode for vk::MemoryGetMetalHandleInfoEXT<'a> {
3634	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_GET_METAL_HANDLE_INFO_EXT;
3635
3636	fn s_type(&self) -> vk::StructureType {
3637		self.s_type
3638	}
3639
3640	fn p_next(&self) -> *const std::ffi::c_void {
3641		self.p_next
3642	}
3643
3644	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3645		self.p_next = p_next.cast_const();
3646	}
3647
3648	fn address(&mut self) -> *mut std::ffi::c_void {
3649		std::ptr::from_mut(self).cast()
3650	}
3651}
3652
3653impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceExternalSemaphoreInfo<'a> {
3654	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO;
3655
3656	fn s_type(&self) -> vk::StructureType {
3657		self.s_type
3658	}
3659
3660	fn p_next(&self) -> *const std::ffi::c_void {
3661		self.p_next
3662	}
3663
3664	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3665		self.p_next = p_next.cast_const();
3666	}
3667
3668	fn address(&mut self) -> *mut std::ffi::c_void {
3669		std::ptr::from_mut(self).cast()
3670	}
3671}
3672
3673impl<'a> crate::construction::sealed::ChainNode for vk::ExternalSemaphoreProperties<'a> {
3674	const S_TYPE: vk::StructureType = vk::StructureType::EXTERNAL_SEMAPHORE_PROPERTIES;
3675
3676	fn s_type(&self) -> vk::StructureType {
3677		self.s_type
3678	}
3679
3680	fn p_next(&self) -> *const std::ffi::c_void {
3681		self.p_next.cast_const()
3682	}
3683
3684	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3685		self.p_next = p_next;
3686	}
3687
3688	fn address(&mut self) -> *mut std::ffi::c_void {
3689		std::ptr::from_mut(self).cast()
3690	}
3691}
3692
3693impl<'a> crate::construction::sealed::ChainNode for vk::ExportSemaphoreCreateInfo<'a> {
3694	const S_TYPE: vk::StructureType = vk::StructureType::EXPORT_SEMAPHORE_CREATE_INFO;
3695
3696	fn s_type(&self) -> vk::StructureType {
3697		self.s_type
3698	}
3699
3700	fn p_next(&self) -> *const std::ffi::c_void {
3701		self.p_next
3702	}
3703
3704	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3705		self.p_next = p_next.cast_const();
3706	}
3707
3708	fn address(&mut self) -> *mut std::ffi::c_void {
3709		std::ptr::from_mut(self).cast()
3710	}
3711}
3712
3713impl<'a, 'root> crate::Extends<vk::SemaphoreCreateInfo<'root>>
3714	for vk::ExportSemaphoreCreateInfo<'a>
3715{
3716}
3717
3718#[cfg(feature = "platform-win32")]
3719impl<'a> crate::construction::sealed::ChainNode for vk::ImportSemaphoreWin32HandleInfoKHR<'a> {
3720	const S_TYPE: vk::StructureType = vk::StructureType::IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR;
3721
3722	fn s_type(&self) -> vk::StructureType {
3723		self.s_type
3724	}
3725
3726	fn p_next(&self) -> *const std::ffi::c_void {
3727		self.p_next
3728	}
3729
3730	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3731		self.p_next = p_next.cast_const();
3732	}
3733
3734	fn address(&mut self) -> *mut std::ffi::c_void {
3735		std::ptr::from_mut(self).cast()
3736	}
3737}
3738
3739#[cfg(feature = "platform-win32")]
3740impl<'a> crate::construction::sealed::ChainNode for vk::ExportSemaphoreWin32HandleInfoKHR<'a> {
3741	const S_TYPE: vk::StructureType = vk::StructureType::EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR;
3742
3743	fn s_type(&self) -> vk::StructureType {
3744		self.s_type
3745	}
3746
3747	fn p_next(&self) -> *const std::ffi::c_void {
3748		self.p_next
3749	}
3750
3751	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3752		self.p_next = p_next.cast_const();
3753	}
3754
3755	fn address(&mut self) -> *mut std::ffi::c_void {
3756		std::ptr::from_mut(self).cast()
3757	}
3758}
3759
3760#[cfg(feature = "platform-win32")]
3761impl<'a, 'root> crate::Extends<vk::SemaphoreCreateInfo<'root>>
3762	for vk::ExportSemaphoreWin32HandleInfoKHR<'a>
3763{
3764}
3765
3766#[cfg(feature = "platform-win32")]
3767impl<'a> crate::construction::sealed::ChainNode for vk::D3D12FenceSubmitInfoKHR<'a> {
3768	const S_TYPE: vk::StructureType = vk::StructureType::D3D12_FENCE_SUBMIT_INFO_KHR;
3769
3770	fn s_type(&self) -> vk::StructureType {
3771		self.s_type
3772	}
3773
3774	fn p_next(&self) -> *const std::ffi::c_void {
3775		self.p_next
3776	}
3777
3778	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3779		self.p_next = p_next.cast_const();
3780	}
3781
3782	fn address(&mut self) -> *mut std::ffi::c_void {
3783		std::ptr::from_mut(self).cast()
3784	}
3785}
3786
3787#[cfg(feature = "platform-win32")]
3788impl<'a, 'root> crate::Extends<vk::SubmitInfo<'root>> for vk::D3D12FenceSubmitInfoKHR<'a> {}
3789
3790#[cfg(feature = "platform-win32")]
3791impl<'a> crate::construction::sealed::ChainNode for vk::SemaphoreGetWin32HandleInfoKHR<'a> {
3792	const S_TYPE: vk::StructureType = vk::StructureType::SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR;
3793
3794	fn s_type(&self) -> vk::StructureType {
3795		self.s_type
3796	}
3797
3798	fn p_next(&self) -> *const std::ffi::c_void {
3799		self.p_next
3800	}
3801
3802	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3803		self.p_next = p_next.cast_const();
3804	}
3805
3806	fn address(&mut self) -> *mut std::ffi::c_void {
3807		std::ptr::from_mut(self).cast()
3808	}
3809}
3810
3811impl<'a> crate::construction::sealed::ChainNode for vk::ImportSemaphoreFdInfoKHR<'a> {
3812	const S_TYPE: vk::StructureType = vk::StructureType::IMPORT_SEMAPHORE_FD_INFO_KHR;
3813
3814	fn s_type(&self) -> vk::StructureType {
3815		self.s_type
3816	}
3817
3818	fn p_next(&self) -> *const std::ffi::c_void {
3819		self.p_next
3820	}
3821
3822	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3823		self.p_next = p_next.cast_const();
3824	}
3825
3826	fn address(&mut self) -> *mut std::ffi::c_void {
3827		std::ptr::from_mut(self).cast()
3828	}
3829}
3830
3831impl<'a> crate::construction::sealed::ChainNode for vk::SemaphoreGetFdInfoKHR<'a> {
3832	const S_TYPE: vk::StructureType = vk::StructureType::SEMAPHORE_GET_FD_INFO_KHR;
3833
3834	fn s_type(&self) -> vk::StructureType {
3835		self.s_type
3836	}
3837
3838	fn p_next(&self) -> *const std::ffi::c_void {
3839		self.p_next
3840	}
3841
3842	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3843		self.p_next = p_next.cast_const();
3844	}
3845
3846	fn address(&mut self) -> *mut std::ffi::c_void {
3847		std::ptr::from_mut(self).cast()
3848	}
3849}
3850
3851#[cfg(feature = "platform-fuchsia")]
3852impl<'a> crate::construction::sealed::ChainNode for vk::ImportSemaphoreZirconHandleInfoFUCHSIA<'a> {
3853	const S_TYPE: vk::StructureType = vk::StructureType::IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA;
3854
3855	fn s_type(&self) -> vk::StructureType {
3856		self.s_type
3857	}
3858
3859	fn p_next(&self) -> *const std::ffi::c_void {
3860		self.p_next
3861	}
3862
3863	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3864		self.p_next = p_next.cast_const();
3865	}
3866
3867	fn address(&mut self) -> *mut std::ffi::c_void {
3868		std::ptr::from_mut(self).cast()
3869	}
3870}
3871
3872#[cfg(feature = "platform-fuchsia")]
3873impl<'a> crate::construction::sealed::ChainNode for vk::SemaphoreGetZirconHandleInfoFUCHSIA<'a> {
3874	const S_TYPE: vk::StructureType = vk::StructureType::SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA;
3875
3876	fn s_type(&self) -> vk::StructureType {
3877		self.s_type
3878	}
3879
3880	fn p_next(&self) -> *const std::ffi::c_void {
3881		self.p_next
3882	}
3883
3884	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3885		self.p_next = p_next.cast_const();
3886	}
3887
3888	fn address(&mut self) -> *mut std::ffi::c_void {
3889		std::ptr::from_mut(self).cast()
3890	}
3891}
3892
3893impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceExternalFenceInfo<'a> {
3894	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO;
3895
3896	fn s_type(&self) -> vk::StructureType {
3897		self.s_type
3898	}
3899
3900	fn p_next(&self) -> *const std::ffi::c_void {
3901		self.p_next
3902	}
3903
3904	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3905		self.p_next = p_next.cast_const();
3906	}
3907
3908	fn address(&mut self) -> *mut std::ffi::c_void {
3909		std::ptr::from_mut(self).cast()
3910	}
3911}
3912
3913impl<'a> crate::construction::sealed::ChainNode for vk::ExternalFenceProperties<'a> {
3914	const S_TYPE: vk::StructureType = vk::StructureType::EXTERNAL_FENCE_PROPERTIES;
3915
3916	fn s_type(&self) -> vk::StructureType {
3917		self.s_type
3918	}
3919
3920	fn p_next(&self) -> *const std::ffi::c_void {
3921		self.p_next.cast_const()
3922	}
3923
3924	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3925		self.p_next = p_next;
3926	}
3927
3928	fn address(&mut self) -> *mut std::ffi::c_void {
3929		std::ptr::from_mut(self).cast()
3930	}
3931}
3932
3933impl<'a> crate::construction::sealed::ChainNode for vk::ExportFenceCreateInfo<'a> {
3934	const S_TYPE: vk::StructureType = vk::StructureType::EXPORT_FENCE_CREATE_INFO;
3935
3936	fn s_type(&self) -> vk::StructureType {
3937		self.s_type
3938	}
3939
3940	fn p_next(&self) -> *const std::ffi::c_void {
3941		self.p_next
3942	}
3943
3944	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3945		self.p_next = p_next.cast_const();
3946	}
3947
3948	fn address(&mut self) -> *mut std::ffi::c_void {
3949		std::ptr::from_mut(self).cast()
3950	}
3951}
3952
3953impl<'a, 'root> crate::Extends<vk::FenceCreateInfo<'root>> for vk::ExportFenceCreateInfo<'a> {}
3954
3955#[cfg(feature = "platform-win32")]
3956impl<'a> crate::construction::sealed::ChainNode for vk::ImportFenceWin32HandleInfoKHR<'a> {
3957	const S_TYPE: vk::StructureType = vk::StructureType::IMPORT_FENCE_WIN32_HANDLE_INFO_KHR;
3958
3959	fn s_type(&self) -> vk::StructureType {
3960		self.s_type
3961	}
3962
3963	fn p_next(&self) -> *const std::ffi::c_void {
3964		self.p_next
3965	}
3966
3967	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3968		self.p_next = p_next.cast_const();
3969	}
3970
3971	fn address(&mut self) -> *mut std::ffi::c_void {
3972		std::ptr::from_mut(self).cast()
3973	}
3974}
3975
3976#[cfg(feature = "platform-win32")]
3977impl<'a> crate::construction::sealed::ChainNode for vk::ExportFenceWin32HandleInfoKHR<'a> {
3978	const S_TYPE: vk::StructureType = vk::StructureType::EXPORT_FENCE_WIN32_HANDLE_INFO_KHR;
3979
3980	fn s_type(&self) -> vk::StructureType {
3981		self.s_type
3982	}
3983
3984	fn p_next(&self) -> *const std::ffi::c_void {
3985		self.p_next
3986	}
3987
3988	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
3989		self.p_next = p_next.cast_const();
3990	}
3991
3992	fn address(&mut self) -> *mut std::ffi::c_void {
3993		std::ptr::from_mut(self).cast()
3994	}
3995}
3996
3997#[cfg(feature = "platform-win32")]
3998impl<'a, 'root> crate::Extends<vk::FenceCreateInfo<'root>>
3999	for vk::ExportFenceWin32HandleInfoKHR<'a>
4000{
4001}
4002
4003#[cfg(feature = "platform-win32")]
4004impl<'a> crate::construction::sealed::ChainNode for vk::FenceGetWin32HandleInfoKHR<'a> {
4005	const S_TYPE: vk::StructureType = vk::StructureType::FENCE_GET_WIN32_HANDLE_INFO_KHR;
4006
4007	fn s_type(&self) -> vk::StructureType {
4008		self.s_type
4009	}
4010
4011	fn p_next(&self) -> *const std::ffi::c_void {
4012		self.p_next
4013	}
4014
4015	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4016		self.p_next = p_next.cast_const();
4017	}
4018
4019	fn address(&mut self) -> *mut std::ffi::c_void {
4020		std::ptr::from_mut(self).cast()
4021	}
4022}
4023
4024impl<'a> crate::construction::sealed::ChainNode for vk::ImportFenceFdInfoKHR<'a> {
4025	const S_TYPE: vk::StructureType = vk::StructureType::IMPORT_FENCE_FD_INFO_KHR;
4026
4027	fn s_type(&self) -> vk::StructureType {
4028		self.s_type
4029	}
4030
4031	fn p_next(&self) -> *const std::ffi::c_void {
4032		self.p_next
4033	}
4034
4035	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4036		self.p_next = p_next.cast_const();
4037	}
4038
4039	fn address(&mut self) -> *mut std::ffi::c_void {
4040		std::ptr::from_mut(self).cast()
4041	}
4042}
4043
4044impl<'a> crate::construction::sealed::ChainNode for vk::FenceGetFdInfoKHR<'a> {
4045	const S_TYPE: vk::StructureType = vk::StructureType::FENCE_GET_FD_INFO_KHR;
4046
4047	fn s_type(&self) -> vk::StructureType {
4048		self.s_type
4049	}
4050
4051	fn p_next(&self) -> *const std::ffi::c_void {
4052		self.p_next
4053	}
4054
4055	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4056		self.p_next = p_next.cast_const();
4057	}
4058
4059	fn address(&mut self) -> *mut std::ffi::c_void {
4060		std::ptr::from_mut(self).cast()
4061	}
4062}
4063
4064impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceMultiviewFeatures<'a> {
4065	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MULTIVIEW_FEATURES;
4066
4067	fn s_type(&self) -> vk::StructureType {
4068		self.s_type
4069	}
4070
4071	fn p_next(&self) -> *const std::ffi::c_void {
4072		self.p_next.cast_const()
4073	}
4074
4075	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4076		self.p_next = p_next;
4077	}
4078
4079	fn address(&mut self) -> *mut std::ffi::c_void {
4080		std::ptr::from_mut(self).cast()
4081	}
4082}
4083
4084impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
4085	for vk::PhysicalDeviceMultiviewFeatures<'a>
4086{
4087}
4088
4089impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
4090	for vk::PhysicalDeviceMultiviewFeatures<'a>
4091{
4092}
4093
4094impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceMultiviewProperties<'a> {
4095	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES;
4096
4097	fn s_type(&self) -> vk::StructureType {
4098		self.s_type
4099	}
4100
4101	fn p_next(&self) -> *const std::ffi::c_void {
4102		self.p_next.cast_const()
4103	}
4104
4105	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4106		self.p_next = p_next;
4107	}
4108
4109	fn address(&mut self) -> *mut std::ffi::c_void {
4110		std::ptr::from_mut(self).cast()
4111	}
4112}
4113
4114impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
4115	for vk::PhysicalDeviceMultiviewProperties<'a>
4116{
4117}
4118
4119impl<'a> crate::construction::sealed::ChainNode for vk::RenderPassMultiviewCreateInfo<'a> {
4120	const S_TYPE: vk::StructureType = vk::StructureType::RENDER_PASS_MULTIVIEW_CREATE_INFO;
4121
4122	fn s_type(&self) -> vk::StructureType {
4123		self.s_type
4124	}
4125
4126	fn p_next(&self) -> *const std::ffi::c_void {
4127		self.p_next
4128	}
4129
4130	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4131		self.p_next = p_next.cast_const();
4132	}
4133
4134	fn address(&mut self) -> *mut std::ffi::c_void {
4135		std::ptr::from_mut(self).cast()
4136	}
4137}
4138
4139impl<'a, 'root> crate::Extends<vk::RenderPassCreateInfo<'root>>
4140	for vk::RenderPassMultiviewCreateInfo<'a>
4141{
4142}
4143
4144impl<'a> crate::construction::sealed::ChainNode for vk::SurfaceCapabilities2EXT<'a> {
4145	const S_TYPE: vk::StructureType = vk::StructureType::SURFACE_CAPABILITIES_2_EXT;
4146
4147	fn s_type(&self) -> vk::StructureType {
4148		self.s_type
4149	}
4150
4151	fn p_next(&self) -> *const std::ffi::c_void {
4152		self.p_next.cast_const()
4153	}
4154
4155	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4156		self.p_next = p_next;
4157	}
4158
4159	fn address(&mut self) -> *mut std::ffi::c_void {
4160		std::ptr::from_mut(self).cast()
4161	}
4162}
4163
4164impl<'a> crate::construction::sealed::ChainNode for vk::DisplayPowerInfoEXT<'a> {
4165	const S_TYPE: vk::StructureType = vk::StructureType::DISPLAY_POWER_INFO_EXT;
4166
4167	fn s_type(&self) -> vk::StructureType {
4168		self.s_type
4169	}
4170
4171	fn p_next(&self) -> *const std::ffi::c_void {
4172		self.p_next
4173	}
4174
4175	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4176		self.p_next = p_next.cast_const();
4177	}
4178
4179	fn address(&mut self) -> *mut std::ffi::c_void {
4180		std::ptr::from_mut(self).cast()
4181	}
4182}
4183
4184impl<'a> crate::construction::sealed::ChainNode for vk::DeviceEventInfoEXT<'a> {
4185	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_EVENT_INFO_EXT;
4186
4187	fn s_type(&self) -> vk::StructureType {
4188		self.s_type
4189	}
4190
4191	fn p_next(&self) -> *const std::ffi::c_void {
4192		self.p_next
4193	}
4194
4195	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4196		self.p_next = p_next.cast_const();
4197	}
4198
4199	fn address(&mut self) -> *mut std::ffi::c_void {
4200		std::ptr::from_mut(self).cast()
4201	}
4202}
4203
4204impl<'a> crate::construction::sealed::ChainNode for vk::DisplayEventInfoEXT<'a> {
4205	const S_TYPE: vk::StructureType = vk::StructureType::DISPLAY_EVENT_INFO_EXT;
4206
4207	fn s_type(&self) -> vk::StructureType {
4208		self.s_type
4209	}
4210
4211	fn p_next(&self) -> *const std::ffi::c_void {
4212		self.p_next
4213	}
4214
4215	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4216		self.p_next = p_next.cast_const();
4217	}
4218
4219	fn address(&mut self) -> *mut std::ffi::c_void {
4220		std::ptr::from_mut(self).cast()
4221	}
4222}
4223
4224impl<'a> crate::construction::sealed::ChainNode for vk::SwapchainCounterCreateInfoEXT<'a> {
4225	const S_TYPE: vk::StructureType = vk::StructureType::SWAPCHAIN_COUNTER_CREATE_INFO_EXT;
4226
4227	fn s_type(&self) -> vk::StructureType {
4228		self.s_type
4229	}
4230
4231	fn p_next(&self) -> *const std::ffi::c_void {
4232		self.p_next
4233	}
4234
4235	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4236		self.p_next = p_next.cast_const();
4237	}
4238
4239	fn address(&mut self) -> *mut std::ffi::c_void {
4240		std::ptr::from_mut(self).cast()
4241	}
4242}
4243
4244impl<'a, 'root> crate::Extends<vk::SwapchainCreateInfoKHR<'root>>
4245	for vk::SwapchainCounterCreateInfoEXT<'a>
4246{
4247}
4248
4249impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceGroupProperties<'a> {
4250	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_GROUP_PROPERTIES;
4251
4252	fn s_type(&self) -> vk::StructureType {
4253		self.s_type
4254	}
4255
4256	fn p_next(&self) -> *const std::ffi::c_void {
4257		self.p_next.cast_const()
4258	}
4259
4260	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4261		self.p_next = p_next;
4262	}
4263
4264	fn address(&mut self) -> *mut std::ffi::c_void {
4265		std::ptr::from_mut(self).cast()
4266	}
4267}
4268
4269impl<'a> crate::construction::sealed::ChainNode for vk::MemoryAllocateFlagsInfo<'a> {
4270	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_ALLOCATE_FLAGS_INFO;
4271
4272	fn s_type(&self) -> vk::StructureType {
4273		self.s_type
4274	}
4275
4276	fn p_next(&self) -> *const std::ffi::c_void {
4277		self.p_next
4278	}
4279
4280	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4281		self.p_next = p_next.cast_const();
4282	}
4283
4284	fn address(&mut self) -> *mut std::ffi::c_void {
4285		std::ptr::from_mut(self).cast()
4286	}
4287}
4288
4289impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>> for vk::MemoryAllocateFlagsInfo<'a> {}
4290
4291impl<'a> crate::construction::sealed::ChainNode for vk::BindBufferMemoryInfo<'a> {
4292	const S_TYPE: vk::StructureType = vk::StructureType::BIND_BUFFER_MEMORY_INFO;
4293
4294	fn s_type(&self) -> vk::StructureType {
4295		self.s_type
4296	}
4297
4298	fn p_next(&self) -> *const std::ffi::c_void {
4299		self.p_next
4300	}
4301
4302	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4303		self.p_next = p_next.cast_const();
4304	}
4305
4306	fn address(&mut self) -> *mut std::ffi::c_void {
4307		std::ptr::from_mut(self).cast()
4308	}
4309}
4310
4311impl<'a> crate::construction::sealed::ChainNode for vk::BindBufferMemoryDeviceGroupInfo<'a> {
4312	const S_TYPE: vk::StructureType = vk::StructureType::BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO;
4313
4314	fn s_type(&self) -> vk::StructureType {
4315		self.s_type
4316	}
4317
4318	fn p_next(&self) -> *const std::ffi::c_void {
4319		self.p_next
4320	}
4321
4322	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4323		self.p_next = p_next.cast_const();
4324	}
4325
4326	fn address(&mut self) -> *mut std::ffi::c_void {
4327		std::ptr::from_mut(self).cast()
4328	}
4329}
4330
4331impl<'a, 'root> crate::Extends<vk::BindBufferMemoryInfo<'root>>
4332	for vk::BindBufferMemoryDeviceGroupInfo<'a>
4333{
4334}
4335
4336impl<'a> crate::construction::sealed::ChainNode for vk::BindImageMemoryInfo<'a> {
4337	const S_TYPE: vk::StructureType = vk::StructureType::BIND_IMAGE_MEMORY_INFO;
4338
4339	fn s_type(&self) -> vk::StructureType {
4340		self.s_type
4341	}
4342
4343	fn p_next(&self) -> *const std::ffi::c_void {
4344		self.p_next
4345	}
4346
4347	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4348		self.p_next = p_next.cast_const();
4349	}
4350
4351	fn address(&mut self) -> *mut std::ffi::c_void {
4352		std::ptr::from_mut(self).cast()
4353	}
4354}
4355
4356impl<'a> crate::construction::sealed::ChainNode for vk::BindImageMemoryDeviceGroupInfo<'a> {
4357	const S_TYPE: vk::StructureType = vk::StructureType::BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO;
4358
4359	fn s_type(&self) -> vk::StructureType {
4360		self.s_type
4361	}
4362
4363	fn p_next(&self) -> *const std::ffi::c_void {
4364		self.p_next
4365	}
4366
4367	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4368		self.p_next = p_next.cast_const();
4369	}
4370
4371	fn address(&mut self) -> *mut std::ffi::c_void {
4372		std::ptr::from_mut(self).cast()
4373	}
4374}
4375
4376impl<'a, 'root> crate::Extends<vk::BindImageMemoryInfo<'root>>
4377	for vk::BindImageMemoryDeviceGroupInfo<'a>
4378{
4379}
4380
4381impl<'a> crate::construction::sealed::ChainNode for vk::DeviceGroupRenderPassBeginInfo<'a> {
4382	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_GROUP_RENDER_PASS_BEGIN_INFO;
4383
4384	fn s_type(&self) -> vk::StructureType {
4385		self.s_type
4386	}
4387
4388	fn p_next(&self) -> *const std::ffi::c_void {
4389		self.p_next
4390	}
4391
4392	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4393		self.p_next = p_next.cast_const();
4394	}
4395
4396	fn address(&mut self) -> *mut std::ffi::c_void {
4397		std::ptr::from_mut(self).cast()
4398	}
4399}
4400
4401impl<'a, 'root> crate::Extends<vk::RenderPassBeginInfo<'root>>
4402	for vk::DeviceGroupRenderPassBeginInfo<'a>
4403{
4404}
4405
4406impl<'a, 'root> crate::Extends<vk::RenderingInfo<'root>>
4407	for vk::DeviceGroupRenderPassBeginInfo<'a>
4408{
4409}
4410
4411impl<'a> crate::construction::sealed::ChainNode for vk::DeviceGroupCommandBufferBeginInfo<'a> {
4412	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO;
4413
4414	fn s_type(&self) -> vk::StructureType {
4415		self.s_type
4416	}
4417
4418	fn p_next(&self) -> *const std::ffi::c_void {
4419		self.p_next
4420	}
4421
4422	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4423		self.p_next = p_next.cast_const();
4424	}
4425
4426	fn address(&mut self) -> *mut std::ffi::c_void {
4427		std::ptr::from_mut(self).cast()
4428	}
4429}
4430
4431impl<'a, 'root> crate::Extends<vk::CommandBufferBeginInfo<'root>>
4432	for vk::DeviceGroupCommandBufferBeginInfo<'a>
4433{
4434}
4435
4436impl<'a> crate::construction::sealed::ChainNode for vk::DeviceGroupSubmitInfo<'a> {
4437	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_GROUP_SUBMIT_INFO;
4438
4439	fn s_type(&self) -> vk::StructureType {
4440		self.s_type
4441	}
4442
4443	fn p_next(&self) -> *const std::ffi::c_void {
4444		self.p_next
4445	}
4446
4447	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4448		self.p_next = p_next.cast_const();
4449	}
4450
4451	fn address(&mut self) -> *mut std::ffi::c_void {
4452		std::ptr::from_mut(self).cast()
4453	}
4454}
4455
4456impl<'a, 'root> crate::Extends<vk::SubmitInfo<'root>> for vk::DeviceGroupSubmitInfo<'a> {}
4457
4458impl<'a> crate::construction::sealed::ChainNode for vk::DeviceGroupBindSparseInfo<'a> {
4459	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_GROUP_BIND_SPARSE_INFO;
4460
4461	fn s_type(&self) -> vk::StructureType {
4462		self.s_type
4463	}
4464
4465	fn p_next(&self) -> *const std::ffi::c_void {
4466		self.p_next
4467	}
4468
4469	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4470		self.p_next = p_next.cast_const();
4471	}
4472
4473	fn address(&mut self) -> *mut std::ffi::c_void {
4474		std::ptr::from_mut(self).cast()
4475	}
4476}
4477
4478impl<'a, 'root> crate::Extends<vk::BindSparseInfo<'root>> for vk::DeviceGroupBindSparseInfo<'a> {}
4479
4480impl<'a> crate::construction::sealed::ChainNode for vk::DeviceGroupPresentCapabilitiesKHR<'a> {
4481	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_GROUP_PRESENT_CAPABILITIES_KHR;
4482
4483	fn s_type(&self) -> vk::StructureType {
4484		self.s_type
4485	}
4486
4487	fn p_next(&self) -> *const std::ffi::c_void {
4488		self.p_next.cast_const()
4489	}
4490
4491	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4492		self.p_next = p_next;
4493	}
4494
4495	fn address(&mut self) -> *mut std::ffi::c_void {
4496		std::ptr::from_mut(self).cast()
4497	}
4498}
4499
4500impl<'a> crate::construction::sealed::ChainNode for vk::ImageSwapchainCreateInfoKHR<'a> {
4501	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_SWAPCHAIN_CREATE_INFO_KHR;
4502
4503	fn s_type(&self) -> vk::StructureType {
4504		self.s_type
4505	}
4506
4507	fn p_next(&self) -> *const std::ffi::c_void {
4508		self.p_next
4509	}
4510
4511	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4512		self.p_next = p_next.cast_const();
4513	}
4514
4515	fn address(&mut self) -> *mut std::ffi::c_void {
4516		std::ptr::from_mut(self).cast()
4517	}
4518}
4519
4520impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>> for vk::ImageSwapchainCreateInfoKHR<'a> {}
4521
4522impl<'a> crate::construction::sealed::ChainNode for vk::BindImageMemorySwapchainInfoKHR<'a> {
4523	const S_TYPE: vk::StructureType = vk::StructureType::BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR;
4524
4525	fn s_type(&self) -> vk::StructureType {
4526		self.s_type
4527	}
4528
4529	fn p_next(&self) -> *const std::ffi::c_void {
4530		self.p_next
4531	}
4532
4533	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4534		self.p_next = p_next.cast_const();
4535	}
4536
4537	fn address(&mut self) -> *mut std::ffi::c_void {
4538		std::ptr::from_mut(self).cast()
4539	}
4540}
4541
4542impl<'a, 'root> crate::Extends<vk::BindImageMemoryInfo<'root>>
4543	for vk::BindImageMemorySwapchainInfoKHR<'a>
4544{
4545}
4546
4547impl<'a> crate::construction::sealed::ChainNode for vk::AcquireNextImageInfoKHR<'a> {
4548	const S_TYPE: vk::StructureType = vk::StructureType::ACQUIRE_NEXT_IMAGE_INFO_KHR;
4549
4550	fn s_type(&self) -> vk::StructureType {
4551		self.s_type
4552	}
4553
4554	fn p_next(&self) -> *const std::ffi::c_void {
4555		self.p_next
4556	}
4557
4558	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4559		self.p_next = p_next.cast_const();
4560	}
4561
4562	fn address(&mut self) -> *mut std::ffi::c_void {
4563		std::ptr::from_mut(self).cast()
4564	}
4565}
4566
4567impl<'a> crate::construction::sealed::ChainNode for vk::DeviceGroupPresentInfoKHR<'a> {
4568	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_GROUP_PRESENT_INFO_KHR;
4569
4570	fn s_type(&self) -> vk::StructureType {
4571		self.s_type
4572	}
4573
4574	fn p_next(&self) -> *const std::ffi::c_void {
4575		self.p_next
4576	}
4577
4578	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4579		self.p_next = p_next.cast_const();
4580	}
4581
4582	fn address(&mut self) -> *mut std::ffi::c_void {
4583		std::ptr::from_mut(self).cast()
4584	}
4585}
4586
4587impl<'a, 'root> crate::Extends<vk::PresentInfoKHR<'root>> for vk::DeviceGroupPresentInfoKHR<'a> {}
4588
4589impl<'a> crate::construction::sealed::ChainNode for vk::DeviceGroupDeviceCreateInfo<'a> {
4590	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_GROUP_DEVICE_CREATE_INFO;
4591
4592	fn s_type(&self) -> vk::StructureType {
4593		self.s_type
4594	}
4595
4596	fn p_next(&self) -> *const std::ffi::c_void {
4597		self.p_next
4598	}
4599
4600	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4601		self.p_next = p_next.cast_const();
4602	}
4603
4604	fn address(&mut self) -> *mut std::ffi::c_void {
4605		std::ptr::from_mut(self).cast()
4606	}
4607}
4608
4609impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
4610	for vk::DeviceGroupDeviceCreateInfo<'a>
4611{
4612}
4613
4614impl<'a> crate::construction::sealed::ChainNode for vk::DeviceGroupSwapchainCreateInfoKHR<'a> {
4615	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR;
4616
4617	fn s_type(&self) -> vk::StructureType {
4618		self.s_type
4619	}
4620
4621	fn p_next(&self) -> *const std::ffi::c_void {
4622		self.p_next
4623	}
4624
4625	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4626		self.p_next = p_next.cast_const();
4627	}
4628
4629	fn address(&mut self) -> *mut std::ffi::c_void {
4630		std::ptr::from_mut(self).cast()
4631	}
4632}
4633
4634impl<'a, 'root> crate::Extends<vk::SwapchainCreateInfoKHR<'root>>
4635	for vk::DeviceGroupSwapchainCreateInfoKHR<'a>
4636{
4637}
4638
4639impl<'a> crate::construction::sealed::ChainNode for vk::DescriptorUpdateTemplateCreateInfo<'a> {
4640	const S_TYPE: vk::StructureType = vk::StructureType::DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO;
4641
4642	fn s_type(&self) -> vk::StructureType {
4643		self.s_type
4644	}
4645
4646	fn p_next(&self) -> *const std::ffi::c_void {
4647		self.p_next
4648	}
4649
4650	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4651		self.p_next = p_next.cast_const();
4652	}
4653
4654	fn address(&mut self) -> *mut std::ffi::c_void {
4655		std::ptr::from_mut(self).cast()
4656	}
4657}
4658
4659impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDevicePresentIdFeaturesKHR<'a> {
4660	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR;
4661
4662	fn s_type(&self) -> vk::StructureType {
4663		self.s_type
4664	}
4665
4666	fn p_next(&self) -> *const std::ffi::c_void {
4667		self.p_next.cast_const()
4668	}
4669
4670	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4671		self.p_next = p_next;
4672	}
4673
4674	fn address(&mut self) -> *mut std::ffi::c_void {
4675		std::ptr::from_mut(self).cast()
4676	}
4677}
4678
4679impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
4680	for vk::PhysicalDevicePresentIdFeaturesKHR<'a>
4681{
4682}
4683
4684impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
4685	for vk::PhysicalDevicePresentIdFeaturesKHR<'a>
4686{
4687}
4688
4689impl<'a> crate::construction::sealed::ChainNode for vk::PresentIdKHR<'a> {
4690	const S_TYPE: vk::StructureType = vk::StructureType::PRESENT_ID_KHR;
4691
4692	fn s_type(&self) -> vk::StructureType {
4693		self.s_type
4694	}
4695
4696	fn p_next(&self) -> *const std::ffi::c_void {
4697		self.p_next
4698	}
4699
4700	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4701		self.p_next = p_next.cast_const();
4702	}
4703
4704	fn address(&mut self) -> *mut std::ffi::c_void {
4705		std::ptr::from_mut(self).cast()
4706	}
4707}
4708
4709impl<'a, 'root> crate::Extends<vk::PresentInfoKHR<'root>> for vk::PresentIdKHR<'a> {}
4710
4711impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDevicePresentId2FeaturesKHR<'a> {
4712	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR;
4713
4714	fn s_type(&self) -> vk::StructureType {
4715		self.s_type
4716	}
4717
4718	fn p_next(&self) -> *const std::ffi::c_void {
4719		self.p_next.cast_const()
4720	}
4721
4722	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4723		self.p_next = p_next;
4724	}
4725
4726	fn address(&mut self) -> *mut std::ffi::c_void {
4727		std::ptr::from_mut(self).cast()
4728	}
4729}
4730
4731impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
4732	for vk::PhysicalDevicePresentId2FeaturesKHR<'a>
4733{
4734}
4735
4736impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
4737	for vk::PhysicalDevicePresentId2FeaturesKHR<'a>
4738{
4739}
4740
4741impl<'a> crate::construction::sealed::ChainNode for vk::PresentId2KHR<'a> {
4742	const S_TYPE: vk::StructureType = vk::StructureType::PRESENT_ID_2_KHR;
4743
4744	fn s_type(&self) -> vk::StructureType {
4745		self.s_type
4746	}
4747
4748	fn p_next(&self) -> *const std::ffi::c_void {
4749		self.p_next
4750	}
4751
4752	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4753		self.p_next = p_next.cast_const();
4754	}
4755
4756	fn address(&mut self) -> *mut std::ffi::c_void {
4757		std::ptr::from_mut(self).cast()
4758	}
4759}
4760
4761impl<'a, 'root> crate::Extends<vk::PresentInfoKHR<'root>> for vk::PresentId2KHR<'a> {}
4762
4763impl<'a> crate::construction::sealed::ChainNode for vk::PresentWait2InfoKHR<'a> {
4764	const S_TYPE: vk::StructureType = vk::StructureType::PRESENT_WAIT_2_INFO_KHR;
4765
4766	fn s_type(&self) -> vk::StructureType {
4767		self.s_type
4768	}
4769
4770	fn p_next(&self) -> *const std::ffi::c_void {
4771		self.p_next
4772	}
4773
4774	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4775		self.p_next = p_next.cast_const();
4776	}
4777
4778	fn address(&mut self) -> *mut std::ffi::c_void {
4779		std::ptr::from_mut(self).cast()
4780	}
4781}
4782
4783impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDevicePresentWaitFeaturesKHR<'a> {
4784	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR;
4785
4786	fn s_type(&self) -> vk::StructureType {
4787		self.s_type
4788	}
4789
4790	fn p_next(&self) -> *const std::ffi::c_void {
4791		self.p_next.cast_const()
4792	}
4793
4794	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4795		self.p_next = p_next;
4796	}
4797
4798	fn address(&mut self) -> *mut std::ffi::c_void {
4799		std::ptr::from_mut(self).cast()
4800	}
4801}
4802
4803impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
4804	for vk::PhysicalDevicePresentWaitFeaturesKHR<'a>
4805{
4806}
4807
4808impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
4809	for vk::PhysicalDevicePresentWaitFeaturesKHR<'a>
4810{
4811}
4812
4813impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDevicePresentWait2FeaturesKHR<'a> {
4814	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR;
4815
4816	fn s_type(&self) -> vk::StructureType {
4817		self.s_type
4818	}
4819
4820	fn p_next(&self) -> *const std::ffi::c_void {
4821		self.p_next.cast_const()
4822	}
4823
4824	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4825		self.p_next = p_next;
4826	}
4827
4828	fn address(&mut self) -> *mut std::ffi::c_void {
4829		std::ptr::from_mut(self).cast()
4830	}
4831}
4832
4833impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
4834	for vk::PhysicalDevicePresentWait2FeaturesKHR<'a>
4835{
4836}
4837
4838impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
4839	for vk::PhysicalDevicePresentWait2FeaturesKHR<'a>
4840{
4841}
4842
4843impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDevicePresentTimingFeaturesEXT<'a> {
4844	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT;
4845
4846	fn s_type(&self) -> vk::StructureType {
4847		self.s_type
4848	}
4849
4850	fn p_next(&self) -> *const std::ffi::c_void {
4851		self.p_next.cast_const()
4852	}
4853
4854	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4855		self.p_next = p_next;
4856	}
4857
4858	fn address(&mut self) -> *mut std::ffi::c_void {
4859		std::ptr::from_mut(self).cast()
4860	}
4861}
4862
4863impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
4864	for vk::PhysicalDevicePresentTimingFeaturesEXT<'a>
4865{
4866}
4867
4868impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
4869	for vk::PhysicalDevicePresentTimingFeaturesEXT<'a>
4870{
4871}
4872
4873impl<'a> crate::construction::sealed::ChainNode for vk::PresentTimingSurfaceCapabilitiesEXT<'a> {
4874	const S_TYPE: vk::StructureType = vk::StructureType::PRESENT_TIMING_SURFACE_CAPABILITIES_EXT;
4875
4876	fn s_type(&self) -> vk::StructureType {
4877		self.s_type
4878	}
4879
4880	fn p_next(&self) -> *const std::ffi::c_void {
4881		self.p_next.cast_const()
4882	}
4883
4884	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4885		self.p_next = p_next;
4886	}
4887
4888	fn address(&mut self) -> *mut std::ffi::c_void {
4889		std::ptr::from_mut(self).cast()
4890	}
4891}
4892
4893impl<'a, 'root> crate::Extends<vk::SurfaceCapabilities2KHR<'root>>
4894	for vk::PresentTimingSurfaceCapabilitiesEXT<'a>
4895{
4896}
4897
4898impl<'a> crate::construction::sealed::ChainNode for vk::SwapchainTimingPropertiesEXT<'a> {
4899	const S_TYPE: vk::StructureType = vk::StructureType::SWAPCHAIN_TIMING_PROPERTIES_EXT;
4900
4901	fn s_type(&self) -> vk::StructureType {
4902		self.s_type
4903	}
4904
4905	fn p_next(&self) -> *const std::ffi::c_void {
4906		self.p_next.cast_const()
4907	}
4908
4909	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4910		self.p_next = p_next;
4911	}
4912
4913	fn address(&mut self) -> *mut std::ffi::c_void {
4914		std::ptr::from_mut(self).cast()
4915	}
4916}
4917
4918impl<'a> crate::construction::sealed::ChainNode for vk::SwapchainTimeDomainPropertiesEXT<'a> {
4919	const S_TYPE: vk::StructureType = vk::StructureType::SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT;
4920
4921	fn s_type(&self) -> vk::StructureType {
4922		self.s_type
4923	}
4924
4925	fn p_next(&self) -> *const std::ffi::c_void {
4926		self.p_next.cast_const()
4927	}
4928
4929	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4930		self.p_next = p_next;
4931	}
4932
4933	fn address(&mut self) -> *mut std::ffi::c_void {
4934		std::ptr::from_mut(self).cast()
4935	}
4936}
4937
4938impl<'a> crate::construction::sealed::ChainNode for vk::PastPresentationTimingInfoEXT<'a> {
4939	const S_TYPE: vk::StructureType = vk::StructureType::PAST_PRESENTATION_TIMING_INFO_EXT;
4940
4941	fn s_type(&self) -> vk::StructureType {
4942		self.s_type
4943	}
4944
4945	fn p_next(&self) -> *const std::ffi::c_void {
4946		self.p_next
4947	}
4948
4949	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4950		self.p_next = p_next.cast_const();
4951	}
4952
4953	fn address(&mut self) -> *mut std::ffi::c_void {
4954		std::ptr::from_mut(self).cast()
4955	}
4956}
4957
4958impl<'a> crate::construction::sealed::ChainNode for vk::PastPresentationTimingPropertiesEXT<'a> {
4959	const S_TYPE: vk::StructureType = vk::StructureType::PAST_PRESENTATION_TIMING_PROPERTIES_EXT;
4960
4961	fn s_type(&self) -> vk::StructureType {
4962		self.s_type
4963	}
4964
4965	fn p_next(&self) -> *const std::ffi::c_void {
4966		self.p_next.cast_const()
4967	}
4968
4969	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4970		self.p_next = p_next;
4971	}
4972
4973	fn address(&mut self) -> *mut std::ffi::c_void {
4974		std::ptr::from_mut(self).cast()
4975	}
4976}
4977
4978impl<'a> crate::construction::sealed::ChainNode for vk::PastPresentationTimingEXT<'a> {
4979	const S_TYPE: vk::StructureType = vk::StructureType::PAST_PRESENTATION_TIMING_EXT;
4980
4981	fn s_type(&self) -> vk::StructureType {
4982		self.s_type
4983	}
4984
4985	fn p_next(&self) -> *const std::ffi::c_void {
4986		self.p_next.cast_const()
4987	}
4988
4989	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
4990		self.p_next = p_next;
4991	}
4992
4993	fn address(&mut self) -> *mut std::ffi::c_void {
4994		std::ptr::from_mut(self).cast()
4995	}
4996}
4997
4998impl<'a> crate::construction::sealed::ChainNode for vk::PresentTimingsInfoEXT<'a> {
4999	const S_TYPE: vk::StructureType = vk::StructureType::PRESENT_TIMINGS_INFO_EXT;
5000
5001	fn s_type(&self) -> vk::StructureType {
5002		self.s_type
5003	}
5004
5005	fn p_next(&self) -> *const std::ffi::c_void {
5006		self.p_next
5007	}
5008
5009	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5010		self.p_next = p_next.cast_const();
5011	}
5012
5013	fn address(&mut self) -> *mut std::ffi::c_void {
5014		std::ptr::from_mut(self).cast()
5015	}
5016}
5017
5018impl<'a, 'root> crate::Extends<vk::PresentInfoKHR<'root>> for vk::PresentTimingsInfoEXT<'a> {}
5019
5020impl<'a> crate::construction::sealed::ChainNode for vk::PresentTimingInfoEXT<'a> {
5021	const S_TYPE: vk::StructureType = vk::StructureType::PRESENT_TIMING_INFO_EXT;
5022
5023	fn s_type(&self) -> vk::StructureType {
5024		self.s_type
5025	}
5026
5027	fn p_next(&self) -> *const std::ffi::c_void {
5028		self.p_next
5029	}
5030
5031	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5032		self.p_next = p_next.cast_const();
5033	}
5034
5035	fn address(&mut self) -> *mut std::ffi::c_void {
5036		std::ptr::from_mut(self).cast()
5037	}
5038}
5039
5040impl<'a> crate::construction::sealed::ChainNode for vk::SwapchainCalibratedTimestampInfoEXT<'a> {
5041	const S_TYPE: vk::StructureType = vk::StructureType::SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT;
5042
5043	fn s_type(&self) -> vk::StructureType {
5044		self.s_type
5045	}
5046
5047	fn p_next(&self) -> *const std::ffi::c_void {
5048		self.p_next
5049	}
5050
5051	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5052		self.p_next = p_next.cast_const();
5053	}
5054
5055	fn address(&mut self) -> *mut std::ffi::c_void {
5056		std::ptr::from_mut(self).cast()
5057	}
5058}
5059
5060impl<'a, 'root> crate::Extends<vk::CalibratedTimestampInfoKHR<'root>>
5061	for vk::SwapchainCalibratedTimestampInfoEXT<'a>
5062{
5063}
5064
5065impl<'a> crate::construction::sealed::ChainNode for vk::HdrMetadataEXT<'a> {
5066	const S_TYPE: vk::StructureType = vk::StructureType::HDR_METADATA_EXT;
5067
5068	fn s_type(&self) -> vk::StructureType {
5069		self.s_type
5070	}
5071
5072	fn p_next(&self) -> *const std::ffi::c_void {
5073		self.p_next
5074	}
5075
5076	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5077		self.p_next = p_next.cast_const();
5078	}
5079
5080	fn address(&mut self) -> *mut std::ffi::c_void {
5081		std::ptr::from_mut(self).cast()
5082	}
5083}
5084
5085impl<'a> crate::construction::sealed::ChainNode for vk::HdrVividDynamicMetadataHUAWEI<'a> {
5086	const S_TYPE: vk::StructureType = vk::StructureType::HDR_VIVID_DYNAMIC_METADATA_HUAWEI;
5087
5088	fn s_type(&self) -> vk::StructureType {
5089		self.s_type
5090	}
5091
5092	fn p_next(&self) -> *const std::ffi::c_void {
5093		self.p_next
5094	}
5095
5096	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5097		self.p_next = p_next.cast_const();
5098	}
5099
5100	fn address(&mut self) -> *mut std::ffi::c_void {
5101		std::ptr::from_mut(self).cast()
5102	}
5103}
5104
5105impl<'a, 'root> crate::Extends<vk::HdrMetadataEXT<'root>>
5106	for vk::HdrVividDynamicMetadataHUAWEI<'a>
5107{
5108}
5109
5110impl<'a> crate::construction::sealed::ChainNode for vk::DisplayNativeHdrSurfaceCapabilitiesAMD<'a> {
5111	const S_TYPE: vk::StructureType = vk::StructureType::DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD;
5112
5113	fn s_type(&self) -> vk::StructureType {
5114		self.s_type
5115	}
5116
5117	fn p_next(&self) -> *const std::ffi::c_void {
5118		self.p_next.cast_const()
5119	}
5120
5121	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5122		self.p_next = p_next;
5123	}
5124
5125	fn address(&mut self) -> *mut std::ffi::c_void {
5126		std::ptr::from_mut(self).cast()
5127	}
5128}
5129
5130impl<'a, 'root> crate::Extends<vk::SurfaceCapabilities2KHR<'root>>
5131	for vk::DisplayNativeHdrSurfaceCapabilitiesAMD<'a>
5132{
5133}
5134
5135impl<'a> crate::construction::sealed::ChainNode for vk::SwapchainDisplayNativeHdrCreateInfoAMD<'a> {
5136	const S_TYPE: vk::StructureType = vk::StructureType::SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD;
5137
5138	fn s_type(&self) -> vk::StructureType {
5139		self.s_type
5140	}
5141
5142	fn p_next(&self) -> *const std::ffi::c_void {
5143		self.p_next
5144	}
5145
5146	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5147		self.p_next = p_next.cast_const();
5148	}
5149
5150	fn address(&mut self) -> *mut std::ffi::c_void {
5151		std::ptr::from_mut(self).cast()
5152	}
5153}
5154
5155impl<'a, 'root> crate::Extends<vk::SwapchainCreateInfoKHR<'root>>
5156	for vk::SwapchainDisplayNativeHdrCreateInfoAMD<'a>
5157{
5158}
5159
5160impl<'a> crate::construction::sealed::ChainNode for vk::PresentTimesInfoGOOGLE<'a> {
5161	const S_TYPE: vk::StructureType = vk::StructureType::PRESENT_TIMES_INFO_GOOGLE;
5162
5163	fn s_type(&self) -> vk::StructureType {
5164		self.s_type
5165	}
5166
5167	fn p_next(&self) -> *const std::ffi::c_void {
5168		self.p_next
5169	}
5170
5171	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5172		self.p_next = p_next.cast_const();
5173	}
5174
5175	fn address(&mut self) -> *mut std::ffi::c_void {
5176		std::ptr::from_mut(self).cast()
5177	}
5178}
5179
5180impl<'a, 'root> crate::Extends<vk::PresentInfoKHR<'root>> for vk::PresentTimesInfoGOOGLE<'a> {}
5181
5182#[cfg(feature = "platform-ios")]
5183impl<'a> crate::construction::sealed::ChainNode for vk::IOSSurfaceCreateInfoMVK<'a> {
5184	const S_TYPE: vk::StructureType = vk::StructureType::IOS_SURFACE_CREATE_INFO_MVK;
5185
5186	fn s_type(&self) -> vk::StructureType {
5187		self.s_type
5188	}
5189
5190	fn p_next(&self) -> *const std::ffi::c_void {
5191		self.p_next
5192	}
5193
5194	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5195		self.p_next = p_next.cast_const();
5196	}
5197
5198	fn address(&mut self) -> *mut std::ffi::c_void {
5199		std::ptr::from_mut(self).cast()
5200	}
5201}
5202
5203#[cfg(feature = "platform-macos")]
5204impl<'a> crate::construction::sealed::ChainNode for vk::MacOSSurfaceCreateInfoMVK<'a> {
5205	const S_TYPE: vk::StructureType = vk::StructureType::MACOS_SURFACE_CREATE_INFO_MVK;
5206
5207	fn s_type(&self) -> vk::StructureType {
5208		self.s_type
5209	}
5210
5211	fn p_next(&self) -> *const std::ffi::c_void {
5212		self.p_next
5213	}
5214
5215	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5216		self.p_next = p_next.cast_const();
5217	}
5218
5219	fn address(&mut self) -> *mut std::ffi::c_void {
5220		std::ptr::from_mut(self).cast()
5221	}
5222}
5223
5224#[cfg(feature = "platform-metal")]
5225impl<'a> crate::construction::sealed::ChainNode for vk::MetalSurfaceCreateInfoEXT<'a> {
5226	const S_TYPE: vk::StructureType = vk::StructureType::METAL_SURFACE_CREATE_INFO_EXT;
5227
5228	fn s_type(&self) -> vk::StructureType {
5229		self.s_type
5230	}
5231
5232	fn p_next(&self) -> *const std::ffi::c_void {
5233		self.p_next
5234	}
5235
5236	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5237		self.p_next = p_next.cast_const();
5238	}
5239
5240	fn address(&mut self) -> *mut std::ffi::c_void {
5241		std::ptr::from_mut(self).cast()
5242	}
5243}
5244
5245impl<'a> crate::construction::sealed::ChainNode
5246	for vk::PipelineViewportWScalingStateCreateInfoNV<'a>
5247{
5248	const S_TYPE: vk::StructureType =
5249		vk::StructureType::PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV;
5250
5251	fn s_type(&self) -> vk::StructureType {
5252		self.s_type
5253	}
5254
5255	fn p_next(&self) -> *const std::ffi::c_void {
5256		self.p_next
5257	}
5258
5259	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5260		self.p_next = p_next.cast_const();
5261	}
5262
5263	fn address(&mut self) -> *mut std::ffi::c_void {
5264		std::ptr::from_mut(self).cast()
5265	}
5266}
5267
5268impl<'a, 'root> crate::Extends<vk::PipelineViewportStateCreateInfo<'root>>
5269	for vk::PipelineViewportWScalingStateCreateInfoNV<'a>
5270{
5271}
5272
5273impl<'a> crate::construction::sealed::ChainNode
5274	for vk::PipelineViewportSwizzleStateCreateInfoNV<'a>
5275{
5276	const S_TYPE: vk::StructureType =
5277		vk::StructureType::PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV;
5278
5279	fn s_type(&self) -> vk::StructureType {
5280		self.s_type
5281	}
5282
5283	fn p_next(&self) -> *const std::ffi::c_void {
5284		self.p_next
5285	}
5286
5287	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5288		self.p_next = p_next.cast_const();
5289	}
5290
5291	fn address(&mut self) -> *mut std::ffi::c_void {
5292		std::ptr::from_mut(self).cast()
5293	}
5294}
5295
5296impl<'a, 'root> crate::Extends<vk::PipelineViewportStateCreateInfo<'root>>
5297	for vk::PipelineViewportSwizzleStateCreateInfoNV<'a>
5298{
5299}
5300
5301impl<'a> crate::construction::sealed::ChainNode
5302	for vk::PhysicalDeviceDiscardRectanglePropertiesEXT<'a>
5303{
5304	const S_TYPE: vk::StructureType =
5305		vk::StructureType::PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT;
5306
5307	fn s_type(&self) -> vk::StructureType {
5308		self.s_type
5309	}
5310
5311	fn p_next(&self) -> *const std::ffi::c_void {
5312		self.p_next.cast_const()
5313	}
5314
5315	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5316		self.p_next = p_next;
5317	}
5318
5319	fn address(&mut self) -> *mut std::ffi::c_void {
5320		std::ptr::from_mut(self).cast()
5321	}
5322}
5323
5324impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
5325	for vk::PhysicalDeviceDiscardRectanglePropertiesEXT<'a>
5326{
5327}
5328
5329impl<'a> crate::construction::sealed::ChainNode
5330	for vk::PipelineDiscardRectangleStateCreateInfoEXT<'a>
5331{
5332	const S_TYPE: vk::StructureType =
5333		vk::StructureType::PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT;
5334
5335	fn s_type(&self) -> vk::StructureType {
5336		self.s_type
5337	}
5338
5339	fn p_next(&self) -> *const std::ffi::c_void {
5340		self.p_next
5341	}
5342
5343	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5344		self.p_next = p_next.cast_const();
5345	}
5346
5347	fn address(&mut self) -> *mut std::ffi::c_void {
5348		std::ptr::from_mut(self).cast()
5349	}
5350}
5351
5352impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
5353	for vk::PipelineDiscardRectangleStateCreateInfoEXT<'a>
5354{
5355}
5356
5357impl<'a> crate::construction::sealed::ChainNode
5358	for vk::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX<'a>
5359{
5360	const S_TYPE: vk::StructureType =
5361		vk::StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX;
5362
5363	fn s_type(&self) -> vk::StructureType {
5364		self.s_type
5365	}
5366
5367	fn p_next(&self) -> *const std::ffi::c_void {
5368		self.p_next.cast_const()
5369	}
5370
5371	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5372		self.p_next = p_next;
5373	}
5374
5375	fn address(&mut self) -> *mut std::ffi::c_void {
5376		std::ptr::from_mut(self).cast()
5377	}
5378}
5379
5380impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
5381	for vk::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX<'a>
5382{
5383}
5384
5385impl<'a> crate::construction::sealed::ChainNode
5386	for vk::RenderPassInputAttachmentAspectCreateInfo<'a>
5387{
5388	const S_TYPE: vk::StructureType =
5389		vk::StructureType::RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO;
5390
5391	fn s_type(&self) -> vk::StructureType {
5392		self.s_type
5393	}
5394
5395	fn p_next(&self) -> *const std::ffi::c_void {
5396		self.p_next
5397	}
5398
5399	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5400		self.p_next = p_next.cast_const();
5401	}
5402
5403	fn address(&mut self) -> *mut std::ffi::c_void {
5404		std::ptr::from_mut(self).cast()
5405	}
5406}
5407
5408impl<'a, 'root> crate::Extends<vk::RenderPassCreateInfo<'root>>
5409	for vk::RenderPassInputAttachmentAspectCreateInfo<'a>
5410{
5411}
5412
5413impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceSurfaceInfo2KHR<'a> {
5414	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_SURFACE_INFO_2_KHR;
5415
5416	fn s_type(&self) -> vk::StructureType {
5417		self.s_type
5418	}
5419
5420	fn p_next(&self) -> *const std::ffi::c_void {
5421		self.p_next
5422	}
5423
5424	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5425		self.p_next = p_next.cast_const();
5426	}
5427
5428	fn address(&mut self) -> *mut std::ffi::c_void {
5429		std::ptr::from_mut(self).cast()
5430	}
5431}
5432
5433impl<'a> crate::construction::sealed::ChainNode for vk::SurfaceCapabilities2KHR<'a> {
5434	const S_TYPE: vk::StructureType = vk::StructureType::SURFACE_CAPABILITIES_2_KHR;
5435
5436	fn s_type(&self) -> vk::StructureType {
5437		self.s_type
5438	}
5439
5440	fn p_next(&self) -> *const std::ffi::c_void {
5441		self.p_next.cast_const()
5442	}
5443
5444	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5445		self.p_next = p_next;
5446	}
5447
5448	fn address(&mut self) -> *mut std::ffi::c_void {
5449		std::ptr::from_mut(self).cast()
5450	}
5451}
5452
5453impl<'a> crate::construction::sealed::ChainNode for vk::SurfaceFormat2KHR<'a> {
5454	const S_TYPE: vk::StructureType = vk::StructureType::SURFACE_FORMAT_2_KHR;
5455
5456	fn s_type(&self) -> vk::StructureType {
5457		self.s_type
5458	}
5459
5460	fn p_next(&self) -> *const std::ffi::c_void {
5461		self.p_next.cast_const()
5462	}
5463
5464	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5465		self.p_next = p_next;
5466	}
5467
5468	fn address(&mut self) -> *mut std::ffi::c_void {
5469		std::ptr::from_mut(self).cast()
5470	}
5471}
5472
5473impl<'a> crate::construction::sealed::ChainNode for vk::DisplayProperties2KHR<'a> {
5474	const S_TYPE: vk::StructureType = vk::StructureType::DISPLAY_PROPERTIES_2_KHR;
5475
5476	fn s_type(&self) -> vk::StructureType {
5477		self.s_type
5478	}
5479
5480	fn p_next(&self) -> *const std::ffi::c_void {
5481		self.p_next.cast_const()
5482	}
5483
5484	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5485		self.p_next = p_next;
5486	}
5487
5488	fn address(&mut self) -> *mut std::ffi::c_void {
5489		std::ptr::from_mut(self).cast()
5490	}
5491}
5492
5493impl<'a> crate::construction::sealed::ChainNode for vk::DisplayPlaneProperties2KHR<'a> {
5494	const S_TYPE: vk::StructureType = vk::StructureType::DISPLAY_PLANE_PROPERTIES_2_KHR;
5495
5496	fn s_type(&self) -> vk::StructureType {
5497		self.s_type
5498	}
5499
5500	fn p_next(&self) -> *const std::ffi::c_void {
5501		self.p_next.cast_const()
5502	}
5503
5504	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5505		self.p_next = p_next;
5506	}
5507
5508	fn address(&mut self) -> *mut std::ffi::c_void {
5509		std::ptr::from_mut(self).cast()
5510	}
5511}
5512
5513impl<'a> crate::construction::sealed::ChainNode for vk::DisplayModeProperties2KHR<'a> {
5514	const S_TYPE: vk::StructureType = vk::StructureType::DISPLAY_MODE_PROPERTIES_2_KHR;
5515
5516	fn s_type(&self) -> vk::StructureType {
5517		self.s_type
5518	}
5519
5520	fn p_next(&self) -> *const std::ffi::c_void {
5521		self.p_next.cast_const()
5522	}
5523
5524	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5525		self.p_next = p_next;
5526	}
5527
5528	fn address(&mut self) -> *mut std::ffi::c_void {
5529		std::ptr::from_mut(self).cast()
5530	}
5531}
5532
5533impl<'a> crate::construction::sealed::ChainNode for vk::DisplayModeStereoPropertiesNV<'a> {
5534	const S_TYPE: vk::StructureType = vk::StructureType::DISPLAY_MODE_STEREO_PROPERTIES_NV;
5535
5536	fn s_type(&self) -> vk::StructureType {
5537		self.s_type
5538	}
5539
5540	fn p_next(&self) -> *const std::ffi::c_void {
5541		self.p_next.cast_const()
5542	}
5543
5544	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5545		self.p_next = p_next;
5546	}
5547
5548	fn address(&mut self) -> *mut std::ffi::c_void {
5549		std::ptr::from_mut(self).cast()
5550	}
5551}
5552
5553impl<'a, 'root> crate::Extends<vk::DisplayModeProperties2KHR<'root>>
5554	for vk::DisplayModeStereoPropertiesNV<'a>
5555{
5556}
5557
5558impl<'a> crate::construction::sealed::ChainNode for vk::DisplayPlaneInfo2KHR<'a> {
5559	const S_TYPE: vk::StructureType = vk::StructureType::DISPLAY_PLANE_INFO_2_KHR;
5560
5561	fn s_type(&self) -> vk::StructureType {
5562		self.s_type
5563	}
5564
5565	fn p_next(&self) -> *const std::ffi::c_void {
5566		self.p_next
5567	}
5568
5569	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5570		self.p_next = p_next.cast_const();
5571	}
5572
5573	fn address(&mut self) -> *mut std::ffi::c_void {
5574		std::ptr::from_mut(self).cast()
5575	}
5576}
5577
5578impl<'a> crate::construction::sealed::ChainNode for vk::DisplayPlaneCapabilities2KHR<'a> {
5579	const S_TYPE: vk::StructureType = vk::StructureType::DISPLAY_PLANE_CAPABILITIES_2_KHR;
5580
5581	fn s_type(&self) -> vk::StructureType {
5582		self.s_type
5583	}
5584
5585	fn p_next(&self) -> *const std::ffi::c_void {
5586		self.p_next.cast_const()
5587	}
5588
5589	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5590		self.p_next = p_next;
5591	}
5592
5593	fn address(&mut self) -> *mut std::ffi::c_void {
5594		std::ptr::from_mut(self).cast()
5595	}
5596}
5597
5598impl<'a> crate::construction::sealed::ChainNode for vk::SharedPresentSurfaceCapabilitiesKHR<'a> {
5599	const S_TYPE: vk::StructureType = vk::StructureType::SHARED_PRESENT_SURFACE_CAPABILITIES_KHR;
5600
5601	fn s_type(&self) -> vk::StructureType {
5602		self.s_type
5603	}
5604
5605	fn p_next(&self) -> *const std::ffi::c_void {
5606		self.p_next.cast_const()
5607	}
5608
5609	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5610		self.p_next = p_next;
5611	}
5612
5613	fn address(&mut self) -> *mut std::ffi::c_void {
5614		std::ptr::from_mut(self).cast()
5615	}
5616}
5617
5618impl<'a, 'root> crate::Extends<vk::SurfaceCapabilities2KHR<'root>>
5619	for vk::SharedPresentSurfaceCapabilitiesKHR<'a>
5620{
5621}
5622
5623impl<'a> crate::construction::sealed::ChainNode for vk::SwapchainFlagsSurfaceCapabilitiesEXT<'a> {
5624	const S_TYPE: vk::StructureType = vk::StructureType::SWAPCHAIN_FLAGS_SURFACE_CAPABILITIES_EXT;
5625
5626	fn s_type(&self) -> vk::StructureType {
5627		self.s_type
5628	}
5629
5630	fn p_next(&self) -> *const std::ffi::c_void {
5631		self.p_next.cast_const()
5632	}
5633
5634	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5635		self.p_next = p_next;
5636	}
5637
5638	fn address(&mut self) -> *mut std::ffi::c_void {
5639		std::ptr::from_mut(self).cast()
5640	}
5641}
5642
5643impl<'a, 'root> crate::Extends<vk::SurfaceCapabilities2KHR<'root>>
5644	for vk::SwapchainFlagsSurfaceCapabilitiesEXT<'a>
5645{
5646}
5647
5648impl<'a> crate::construction::sealed::ChainNode for vk::SharedPresentSurfaceCapabilities2KHR<'a> {
5649	const S_TYPE: vk::StructureType = vk::StructureType::SHARED_PRESENT_SURFACE_CAPABILITIES_2_KHR;
5650
5651	fn s_type(&self) -> vk::StructureType {
5652		self.s_type
5653	}
5654
5655	fn p_next(&self) -> *const std::ffi::c_void {
5656		self.p_next.cast_const()
5657	}
5658
5659	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5660		self.p_next = p_next;
5661	}
5662
5663	fn address(&mut self) -> *mut std::ffi::c_void {
5664		std::ptr::from_mut(self).cast()
5665	}
5666}
5667
5668impl<'a, 'root> crate::Extends<vk::SurfaceCapabilities2KHR<'root>>
5669	for vk::SharedPresentSurfaceCapabilities2KHR<'a>
5670{
5671}
5672
5673impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDevice16BitStorageFeatures<'a> {
5674	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES;
5675
5676	fn s_type(&self) -> vk::StructureType {
5677		self.s_type
5678	}
5679
5680	fn p_next(&self) -> *const std::ffi::c_void {
5681		self.p_next.cast_const()
5682	}
5683
5684	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5685		self.p_next = p_next;
5686	}
5687
5688	fn address(&mut self) -> *mut std::ffi::c_void {
5689		std::ptr::from_mut(self).cast()
5690	}
5691}
5692
5693impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
5694	for vk::PhysicalDevice16BitStorageFeatures<'a>
5695{
5696}
5697
5698impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
5699	for vk::PhysicalDevice16BitStorageFeatures<'a>
5700{
5701}
5702
5703impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceSubgroupProperties<'a> {
5704	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_SUBGROUP_PROPERTIES;
5705
5706	fn s_type(&self) -> vk::StructureType {
5707		self.s_type
5708	}
5709
5710	fn p_next(&self) -> *const std::ffi::c_void {
5711		self.p_next.cast_const()
5712	}
5713
5714	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5715		self.p_next = p_next;
5716	}
5717
5718	fn address(&mut self) -> *mut std::ffi::c_void {
5719		std::ptr::from_mut(self).cast()
5720	}
5721}
5722
5723impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
5724	for vk::PhysicalDeviceSubgroupProperties<'a>
5725{
5726}
5727
5728impl<'a> crate::construction::sealed::ChainNode
5729	for vk::PhysicalDeviceShaderSubgroupExtendedTypesFeatures<'a>
5730{
5731	const S_TYPE: vk::StructureType =
5732		vk::StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES;
5733
5734	fn s_type(&self) -> vk::StructureType {
5735		self.s_type
5736	}
5737
5738	fn p_next(&self) -> *const std::ffi::c_void {
5739		self.p_next.cast_const()
5740	}
5741
5742	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5743		self.p_next = p_next;
5744	}
5745
5746	fn address(&mut self) -> *mut std::ffi::c_void {
5747		std::ptr::from_mut(self).cast()
5748	}
5749}
5750
5751impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
5752	for vk::PhysicalDeviceShaderSubgroupExtendedTypesFeatures<'a>
5753{
5754}
5755
5756impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
5757	for vk::PhysicalDeviceShaderSubgroupExtendedTypesFeatures<'a>
5758{
5759}
5760
5761impl<'a> crate::construction::sealed::ChainNode for vk::BufferMemoryRequirementsInfo2<'a> {
5762	const S_TYPE: vk::StructureType = vk::StructureType::BUFFER_MEMORY_REQUIREMENTS_INFO_2;
5763
5764	fn s_type(&self) -> vk::StructureType {
5765		self.s_type
5766	}
5767
5768	fn p_next(&self) -> *const std::ffi::c_void {
5769		self.p_next
5770	}
5771
5772	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5773		self.p_next = p_next.cast_const();
5774	}
5775
5776	fn address(&mut self) -> *mut std::ffi::c_void {
5777		std::ptr::from_mut(self).cast()
5778	}
5779}
5780
5781impl<'a> crate::construction::sealed::ChainNode for vk::DeviceBufferMemoryRequirements<'a> {
5782	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_BUFFER_MEMORY_REQUIREMENTS;
5783
5784	fn s_type(&self) -> vk::StructureType {
5785		self.s_type
5786	}
5787
5788	fn p_next(&self) -> *const std::ffi::c_void {
5789		self.p_next
5790	}
5791
5792	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5793		self.p_next = p_next.cast_const();
5794	}
5795
5796	fn address(&mut self) -> *mut std::ffi::c_void {
5797		std::ptr::from_mut(self).cast()
5798	}
5799}
5800
5801impl<'a> crate::construction::sealed::ChainNode for vk::ImageMemoryRequirementsInfo2<'a> {
5802	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_MEMORY_REQUIREMENTS_INFO_2;
5803
5804	fn s_type(&self) -> vk::StructureType {
5805		self.s_type
5806	}
5807
5808	fn p_next(&self) -> *const std::ffi::c_void {
5809		self.p_next
5810	}
5811
5812	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5813		self.p_next = p_next.cast_const();
5814	}
5815
5816	fn address(&mut self) -> *mut std::ffi::c_void {
5817		std::ptr::from_mut(self).cast()
5818	}
5819}
5820
5821impl<'a> crate::construction::sealed::ChainNode for vk::ImageSparseMemoryRequirementsInfo2<'a> {
5822	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2;
5823
5824	fn s_type(&self) -> vk::StructureType {
5825		self.s_type
5826	}
5827
5828	fn p_next(&self) -> *const std::ffi::c_void {
5829		self.p_next
5830	}
5831
5832	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5833		self.p_next = p_next.cast_const();
5834	}
5835
5836	fn address(&mut self) -> *mut std::ffi::c_void {
5837		std::ptr::from_mut(self).cast()
5838	}
5839}
5840
5841impl<'a> crate::construction::sealed::ChainNode for vk::DeviceImageMemoryRequirements<'a> {
5842	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_IMAGE_MEMORY_REQUIREMENTS;
5843
5844	fn s_type(&self) -> vk::StructureType {
5845		self.s_type
5846	}
5847
5848	fn p_next(&self) -> *const std::ffi::c_void {
5849		self.p_next
5850	}
5851
5852	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5853		self.p_next = p_next.cast_const();
5854	}
5855
5856	fn address(&mut self) -> *mut std::ffi::c_void {
5857		std::ptr::from_mut(self).cast()
5858	}
5859}
5860
5861impl<'a> crate::construction::sealed::ChainNode for vk::MemoryRequirements2<'a> {
5862	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_REQUIREMENTS_2;
5863
5864	fn s_type(&self) -> vk::StructureType {
5865		self.s_type
5866	}
5867
5868	fn p_next(&self) -> *const std::ffi::c_void {
5869		self.p_next.cast_const()
5870	}
5871
5872	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5873		self.p_next = p_next;
5874	}
5875
5876	fn address(&mut self) -> *mut std::ffi::c_void {
5877		std::ptr::from_mut(self).cast()
5878	}
5879}
5880
5881impl<'a> crate::construction::sealed::ChainNode for vk::SparseImageMemoryRequirements2<'a> {
5882	const S_TYPE: vk::StructureType = vk::StructureType::SPARSE_IMAGE_MEMORY_REQUIREMENTS_2;
5883
5884	fn s_type(&self) -> vk::StructureType {
5885		self.s_type
5886	}
5887
5888	fn p_next(&self) -> *const std::ffi::c_void {
5889		self.p_next.cast_const()
5890	}
5891
5892	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5893		self.p_next = p_next;
5894	}
5895
5896	fn address(&mut self) -> *mut std::ffi::c_void {
5897		std::ptr::from_mut(self).cast()
5898	}
5899}
5900
5901impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDevicePointClippingProperties<'a> {
5902	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES;
5903
5904	fn s_type(&self) -> vk::StructureType {
5905		self.s_type
5906	}
5907
5908	fn p_next(&self) -> *const std::ffi::c_void {
5909		self.p_next.cast_const()
5910	}
5911
5912	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5913		self.p_next = p_next;
5914	}
5915
5916	fn address(&mut self) -> *mut std::ffi::c_void {
5917		std::ptr::from_mut(self).cast()
5918	}
5919}
5920
5921impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
5922	for vk::PhysicalDevicePointClippingProperties<'a>
5923{
5924}
5925
5926impl<'a> crate::construction::sealed::ChainNode for vk::MemoryDedicatedRequirements<'a> {
5927	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_DEDICATED_REQUIREMENTS;
5928
5929	fn s_type(&self) -> vk::StructureType {
5930		self.s_type
5931	}
5932
5933	fn p_next(&self) -> *const std::ffi::c_void {
5934		self.p_next.cast_const()
5935	}
5936
5937	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5938		self.p_next = p_next;
5939	}
5940
5941	fn address(&mut self) -> *mut std::ffi::c_void {
5942		std::ptr::from_mut(self).cast()
5943	}
5944}
5945
5946impl<'a, 'root> crate::Extends<vk::MemoryRequirements2<'root>>
5947	for vk::MemoryDedicatedRequirements<'a>
5948{
5949}
5950
5951impl<'a> crate::construction::sealed::ChainNode for vk::MemoryDedicatedAllocateInfo<'a> {
5952	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_DEDICATED_ALLOCATE_INFO;
5953
5954	fn s_type(&self) -> vk::StructureType {
5955		self.s_type
5956	}
5957
5958	fn p_next(&self) -> *const std::ffi::c_void {
5959		self.p_next
5960	}
5961
5962	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5963		self.p_next = p_next.cast_const();
5964	}
5965
5966	fn address(&mut self) -> *mut std::ffi::c_void {
5967		std::ptr::from_mut(self).cast()
5968	}
5969}
5970
5971impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>>
5972	for vk::MemoryDedicatedAllocateInfo<'a>
5973{
5974}
5975
5976impl<'a> crate::construction::sealed::ChainNode for vk::ImageViewUsageCreateInfo<'a> {
5977	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_VIEW_USAGE_CREATE_INFO;
5978
5979	fn s_type(&self) -> vk::StructureType {
5980		self.s_type
5981	}
5982
5983	fn p_next(&self) -> *const std::ffi::c_void {
5984		self.p_next
5985	}
5986
5987	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
5988		self.p_next = p_next.cast_const();
5989	}
5990
5991	fn address(&mut self) -> *mut std::ffi::c_void {
5992		std::ptr::from_mut(self).cast()
5993	}
5994}
5995
5996impl<'a, 'root> crate::Extends<vk::ImageViewCreateInfo<'root>>
5997	for vk::ImageViewUsageCreateInfo<'a>
5998{
5999}
6000
6001impl<'a> crate::construction::sealed::ChainNode for vk::ImageViewUsage2CreateInfoKHR<'a> {
6002	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_VIEW_USAGE_2_CREATE_INFO_KHR;
6003
6004	fn s_type(&self) -> vk::StructureType {
6005		self.s_type
6006	}
6007
6008	fn p_next(&self) -> *const std::ffi::c_void {
6009		self.p_next.cast_const()
6010	}
6011
6012	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6013		self.p_next = p_next;
6014	}
6015
6016	fn address(&mut self) -> *mut std::ffi::c_void {
6017		std::ptr::from_mut(self).cast()
6018	}
6019}
6020
6021impl<'a, 'root> crate::Extends<vk::ImageViewCreateInfo<'root>>
6022	for vk::ImageViewUsage2CreateInfoKHR<'a>
6023{
6024}
6025
6026impl<'a> crate::construction::sealed::ChainNode for vk::ImageViewSlicedCreateInfoEXT<'a> {
6027	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_VIEW_SLICED_CREATE_INFO_EXT;
6028
6029	fn s_type(&self) -> vk::StructureType {
6030		self.s_type
6031	}
6032
6033	fn p_next(&self) -> *const std::ffi::c_void {
6034		self.p_next
6035	}
6036
6037	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6038		self.p_next = p_next.cast_const();
6039	}
6040
6041	fn address(&mut self) -> *mut std::ffi::c_void {
6042		std::ptr::from_mut(self).cast()
6043	}
6044}
6045
6046impl<'a, 'root> crate::Extends<vk::ImageViewCreateInfo<'root>>
6047	for vk::ImageViewSlicedCreateInfoEXT<'a>
6048{
6049}
6050
6051impl<'a> crate::construction::sealed::ChainNode
6052	for vk::PipelineTessellationDomainOriginStateCreateInfo<'a>
6053{
6054	const S_TYPE: vk::StructureType =
6055		vk::StructureType::PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO;
6056
6057	fn s_type(&self) -> vk::StructureType {
6058		self.s_type
6059	}
6060
6061	fn p_next(&self) -> *const std::ffi::c_void {
6062		self.p_next
6063	}
6064
6065	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6066		self.p_next = p_next.cast_const();
6067	}
6068
6069	fn address(&mut self) -> *mut std::ffi::c_void {
6070		std::ptr::from_mut(self).cast()
6071	}
6072}
6073
6074impl<'a, 'root> crate::Extends<vk::PipelineTessellationStateCreateInfo<'root>>
6075	for vk::PipelineTessellationDomainOriginStateCreateInfo<'a>
6076{
6077}
6078
6079impl<'a> crate::construction::sealed::ChainNode for vk::SamplerYcbcrConversionInfo<'a> {
6080	const S_TYPE: vk::StructureType = vk::StructureType::SAMPLER_YCBCR_CONVERSION_INFO;
6081
6082	fn s_type(&self) -> vk::StructureType {
6083		self.s_type
6084	}
6085
6086	fn p_next(&self) -> *const std::ffi::c_void {
6087		self.p_next
6088	}
6089
6090	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6091		self.p_next = p_next.cast_const();
6092	}
6093
6094	fn address(&mut self) -> *mut std::ffi::c_void {
6095		std::ptr::from_mut(self).cast()
6096	}
6097}
6098
6099impl<'a, 'root> crate::Extends<vk::SamplerCreateInfo<'root>>
6100	for vk::SamplerYcbcrConversionInfo<'a>
6101{
6102}
6103
6104impl<'a, 'root> crate::Extends<vk::ImageViewCreateInfo<'root>>
6105	for vk::SamplerYcbcrConversionInfo<'a>
6106{
6107}
6108
6109impl<'a> crate::construction::sealed::ChainNode for vk::SamplerYcbcrConversionCreateInfo<'a> {
6110	const S_TYPE: vk::StructureType = vk::StructureType::SAMPLER_YCBCR_CONVERSION_CREATE_INFO;
6111
6112	fn s_type(&self) -> vk::StructureType {
6113		self.s_type
6114	}
6115
6116	fn p_next(&self) -> *const std::ffi::c_void {
6117		self.p_next
6118	}
6119
6120	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6121		self.p_next = p_next.cast_const();
6122	}
6123
6124	fn address(&mut self) -> *mut std::ffi::c_void {
6125		std::ptr::from_mut(self).cast()
6126	}
6127}
6128
6129impl<'a> crate::construction::sealed::ChainNode for vk::BindImagePlaneMemoryInfo<'a> {
6130	const S_TYPE: vk::StructureType = vk::StructureType::BIND_IMAGE_PLANE_MEMORY_INFO;
6131
6132	fn s_type(&self) -> vk::StructureType {
6133		self.s_type
6134	}
6135
6136	fn p_next(&self) -> *const std::ffi::c_void {
6137		self.p_next
6138	}
6139
6140	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6141		self.p_next = p_next.cast_const();
6142	}
6143
6144	fn address(&mut self) -> *mut std::ffi::c_void {
6145		std::ptr::from_mut(self).cast()
6146	}
6147}
6148
6149impl<'a, 'root> crate::Extends<vk::BindImageMemoryInfo<'root>>
6150	for vk::BindImagePlaneMemoryInfo<'a>
6151{
6152}
6153
6154impl<'a> crate::construction::sealed::ChainNode for vk::ImagePlaneMemoryRequirementsInfo<'a> {
6155	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO;
6156
6157	fn s_type(&self) -> vk::StructureType {
6158		self.s_type
6159	}
6160
6161	fn p_next(&self) -> *const std::ffi::c_void {
6162		self.p_next
6163	}
6164
6165	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6166		self.p_next = p_next.cast_const();
6167	}
6168
6169	fn address(&mut self) -> *mut std::ffi::c_void {
6170		std::ptr::from_mut(self).cast()
6171	}
6172}
6173
6174impl<'a, 'root> crate::Extends<vk::ImageMemoryRequirementsInfo2<'root>>
6175	for vk::ImagePlaneMemoryRequirementsInfo<'a>
6176{
6177}
6178
6179impl<'a> crate::construction::sealed::ChainNode
6180	for vk::PhysicalDeviceSamplerYcbcrConversionFeatures<'a>
6181{
6182	const S_TYPE: vk::StructureType =
6183		vk::StructureType::PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES;
6184
6185	fn s_type(&self) -> vk::StructureType {
6186		self.s_type
6187	}
6188
6189	fn p_next(&self) -> *const std::ffi::c_void {
6190		self.p_next.cast_const()
6191	}
6192
6193	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6194		self.p_next = p_next;
6195	}
6196
6197	fn address(&mut self) -> *mut std::ffi::c_void {
6198		std::ptr::from_mut(self).cast()
6199	}
6200}
6201
6202impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
6203	for vk::PhysicalDeviceSamplerYcbcrConversionFeatures<'a>
6204{
6205}
6206
6207impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
6208	for vk::PhysicalDeviceSamplerYcbcrConversionFeatures<'a>
6209{
6210}
6211
6212impl<'a> crate::construction::sealed::ChainNode
6213	for vk::SamplerYcbcrConversionImageFormatProperties<'a>
6214{
6215	const S_TYPE: vk::StructureType =
6216		vk::StructureType::SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES;
6217
6218	fn s_type(&self) -> vk::StructureType {
6219		self.s_type
6220	}
6221
6222	fn p_next(&self) -> *const std::ffi::c_void {
6223		self.p_next.cast_const()
6224	}
6225
6226	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6227		self.p_next = p_next;
6228	}
6229
6230	fn address(&mut self) -> *mut std::ffi::c_void {
6231		std::ptr::from_mut(self).cast()
6232	}
6233}
6234
6235impl<'a, 'root> crate::Extends<vk::ImageFormatProperties2<'root>>
6236	for vk::SamplerYcbcrConversionImageFormatProperties<'a>
6237{
6238}
6239
6240impl<'a> crate::construction::sealed::ChainNode for vk::TextureLODGatherFormatPropertiesAMD<'a> {
6241	const S_TYPE: vk::StructureType = vk::StructureType::TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD;
6242
6243	fn s_type(&self) -> vk::StructureType {
6244		self.s_type
6245	}
6246
6247	fn p_next(&self) -> *const std::ffi::c_void {
6248		self.p_next.cast_const()
6249	}
6250
6251	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6252		self.p_next = p_next;
6253	}
6254
6255	fn address(&mut self) -> *mut std::ffi::c_void {
6256		std::ptr::from_mut(self).cast()
6257	}
6258}
6259
6260impl<'a, 'root> crate::Extends<vk::ImageFormatProperties2<'root>>
6261	for vk::TextureLODGatherFormatPropertiesAMD<'a>
6262{
6263}
6264
6265impl<'a> crate::construction::sealed::ChainNode for vk::ConditionalRenderingBeginInfoEXT<'a> {
6266	const S_TYPE: vk::StructureType = vk::StructureType::CONDITIONAL_RENDERING_BEGIN_INFO_EXT;
6267
6268	fn s_type(&self) -> vk::StructureType {
6269		self.s_type
6270	}
6271
6272	fn p_next(&self) -> *const std::ffi::c_void {
6273		self.p_next
6274	}
6275
6276	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6277		self.p_next = p_next.cast_const();
6278	}
6279
6280	fn address(&mut self) -> *mut std::ffi::c_void {
6281		std::ptr::from_mut(self).cast()
6282	}
6283}
6284
6285impl<'a> crate::construction::sealed::ChainNode for vk::ProtectedSubmitInfo<'a> {
6286	const S_TYPE: vk::StructureType = vk::StructureType::PROTECTED_SUBMIT_INFO;
6287
6288	fn s_type(&self) -> vk::StructureType {
6289		self.s_type
6290	}
6291
6292	fn p_next(&self) -> *const std::ffi::c_void {
6293		self.p_next
6294	}
6295
6296	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6297		self.p_next = p_next.cast_const();
6298	}
6299
6300	fn address(&mut self) -> *mut std::ffi::c_void {
6301		std::ptr::from_mut(self).cast()
6302	}
6303}
6304
6305impl<'a, 'root> crate::Extends<vk::SubmitInfo<'root>> for vk::ProtectedSubmitInfo<'a> {}
6306
6307impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceProtectedMemoryFeatures<'a> {
6308	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES;
6309
6310	fn s_type(&self) -> vk::StructureType {
6311		self.s_type
6312	}
6313
6314	fn p_next(&self) -> *const std::ffi::c_void {
6315		self.p_next.cast_const()
6316	}
6317
6318	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6319		self.p_next = p_next;
6320	}
6321
6322	fn address(&mut self) -> *mut std::ffi::c_void {
6323		std::ptr::from_mut(self).cast()
6324	}
6325}
6326
6327impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
6328	for vk::PhysicalDeviceProtectedMemoryFeatures<'a>
6329{
6330}
6331
6332impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
6333	for vk::PhysicalDeviceProtectedMemoryFeatures<'a>
6334{
6335}
6336
6337impl<'a> crate::construction::sealed::ChainNode
6338	for vk::PhysicalDeviceProtectedMemoryProperties<'a>
6339{
6340	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES;
6341
6342	fn s_type(&self) -> vk::StructureType {
6343		self.s_type
6344	}
6345
6346	fn p_next(&self) -> *const std::ffi::c_void {
6347		self.p_next.cast_const()
6348	}
6349
6350	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6351		self.p_next = p_next;
6352	}
6353
6354	fn address(&mut self) -> *mut std::ffi::c_void {
6355		std::ptr::from_mut(self).cast()
6356	}
6357}
6358
6359impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
6360	for vk::PhysicalDeviceProtectedMemoryProperties<'a>
6361{
6362}
6363
6364impl<'a> crate::construction::sealed::ChainNode for vk::DeviceQueueInfo2<'a> {
6365	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_QUEUE_INFO_2;
6366
6367	fn s_type(&self) -> vk::StructureType {
6368		self.s_type
6369	}
6370
6371	fn p_next(&self) -> *const std::ffi::c_void {
6372		self.p_next
6373	}
6374
6375	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6376		self.p_next = p_next.cast_const();
6377	}
6378
6379	fn address(&mut self) -> *mut std::ffi::c_void {
6380		std::ptr::from_mut(self).cast()
6381	}
6382}
6383
6384impl<'a> crate::construction::sealed::ChainNode
6385	for vk::PipelineCoverageToColorStateCreateInfoNV<'a>
6386{
6387	const S_TYPE: vk::StructureType =
6388		vk::StructureType::PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV;
6389
6390	fn s_type(&self) -> vk::StructureType {
6391		self.s_type
6392	}
6393
6394	fn p_next(&self) -> *const std::ffi::c_void {
6395		self.p_next
6396	}
6397
6398	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6399		self.p_next = p_next.cast_const();
6400	}
6401
6402	fn address(&mut self) -> *mut std::ffi::c_void {
6403		std::ptr::from_mut(self).cast()
6404	}
6405}
6406
6407impl<'a, 'root> crate::Extends<vk::PipelineMultisampleStateCreateInfo<'root>>
6408	for vk::PipelineCoverageToColorStateCreateInfoNV<'a>
6409{
6410}
6411
6412impl<'a> crate::construction::sealed::ChainNode
6413	for vk::PhysicalDeviceSamplerFilterMinmaxProperties<'a>
6414{
6415	const S_TYPE: vk::StructureType =
6416		vk::StructureType::PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES;
6417
6418	fn s_type(&self) -> vk::StructureType {
6419		self.s_type
6420	}
6421
6422	fn p_next(&self) -> *const std::ffi::c_void {
6423		self.p_next.cast_const()
6424	}
6425
6426	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6427		self.p_next = p_next;
6428	}
6429
6430	fn address(&mut self) -> *mut std::ffi::c_void {
6431		std::ptr::from_mut(self).cast()
6432	}
6433}
6434
6435impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
6436	for vk::PhysicalDeviceSamplerFilterMinmaxProperties<'a>
6437{
6438}
6439
6440impl<'a> crate::construction::sealed::ChainNode for vk::SampleLocationsInfoEXT<'a> {
6441	const S_TYPE: vk::StructureType = vk::StructureType::SAMPLE_LOCATIONS_INFO_EXT;
6442
6443	fn s_type(&self) -> vk::StructureType {
6444		self.s_type
6445	}
6446
6447	fn p_next(&self) -> *const std::ffi::c_void {
6448		self.p_next
6449	}
6450
6451	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6452		self.p_next = p_next.cast_const();
6453	}
6454
6455	fn address(&mut self) -> *mut std::ffi::c_void {
6456		std::ptr::from_mut(self).cast()
6457	}
6458}
6459
6460impl<'a, 'root> crate::Extends<vk::ImageMemoryBarrier<'root>> for vk::SampleLocationsInfoEXT<'a> {}
6461
6462impl<'a, 'root> crate::Extends<vk::ImageMemoryBarrier2<'root>> for vk::SampleLocationsInfoEXT<'a> {}
6463
6464impl<'a> crate::construction::sealed::ChainNode for vk::RenderPassSampleLocationsBeginInfoEXT<'a> {
6465	const S_TYPE: vk::StructureType = vk::StructureType::RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT;
6466
6467	fn s_type(&self) -> vk::StructureType {
6468		self.s_type
6469	}
6470
6471	fn p_next(&self) -> *const std::ffi::c_void {
6472		self.p_next
6473	}
6474
6475	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6476		self.p_next = p_next.cast_const();
6477	}
6478
6479	fn address(&mut self) -> *mut std::ffi::c_void {
6480		std::ptr::from_mut(self).cast()
6481	}
6482}
6483
6484impl<'a, 'root> crate::Extends<vk::RenderPassBeginInfo<'root>>
6485	for vk::RenderPassSampleLocationsBeginInfoEXT<'a>
6486{
6487}
6488
6489impl<'a> crate::construction::sealed::ChainNode
6490	for vk::PipelineSampleLocationsStateCreateInfoEXT<'a>
6491{
6492	const S_TYPE: vk::StructureType =
6493		vk::StructureType::PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT;
6494
6495	fn s_type(&self) -> vk::StructureType {
6496		self.s_type
6497	}
6498
6499	fn p_next(&self) -> *const std::ffi::c_void {
6500		self.p_next
6501	}
6502
6503	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6504		self.p_next = p_next.cast_const();
6505	}
6506
6507	fn address(&mut self) -> *mut std::ffi::c_void {
6508		std::ptr::from_mut(self).cast()
6509	}
6510}
6511
6512impl<'a, 'root> crate::Extends<vk::PipelineMultisampleStateCreateInfo<'root>>
6513	for vk::PipelineSampleLocationsStateCreateInfoEXT<'a>
6514{
6515}
6516
6517impl<'a> crate::construction::sealed::ChainNode
6518	for vk::PhysicalDeviceSampleLocationsPropertiesEXT<'a>
6519{
6520	const S_TYPE: vk::StructureType =
6521		vk::StructureType::PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT;
6522
6523	fn s_type(&self) -> vk::StructureType {
6524		self.s_type
6525	}
6526
6527	fn p_next(&self) -> *const std::ffi::c_void {
6528		self.p_next.cast_const()
6529	}
6530
6531	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6532		self.p_next = p_next;
6533	}
6534
6535	fn address(&mut self) -> *mut std::ffi::c_void {
6536		std::ptr::from_mut(self).cast()
6537	}
6538}
6539
6540impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
6541	for vk::PhysicalDeviceSampleLocationsPropertiesEXT<'a>
6542{
6543}
6544
6545impl<'a> crate::construction::sealed::ChainNode for vk::MultisamplePropertiesEXT<'a> {
6546	const S_TYPE: vk::StructureType = vk::StructureType::MULTISAMPLE_PROPERTIES_EXT;
6547
6548	fn s_type(&self) -> vk::StructureType {
6549		self.s_type
6550	}
6551
6552	fn p_next(&self) -> *const std::ffi::c_void {
6553		self.p_next.cast_const()
6554	}
6555
6556	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6557		self.p_next = p_next;
6558	}
6559
6560	fn address(&mut self) -> *mut std::ffi::c_void {
6561		std::ptr::from_mut(self).cast()
6562	}
6563}
6564
6565impl<'a> crate::construction::sealed::ChainNode for vk::SamplerReductionModeCreateInfo<'a> {
6566	const S_TYPE: vk::StructureType = vk::StructureType::SAMPLER_REDUCTION_MODE_CREATE_INFO;
6567
6568	fn s_type(&self) -> vk::StructureType {
6569		self.s_type
6570	}
6571
6572	fn p_next(&self) -> *const std::ffi::c_void {
6573		self.p_next
6574	}
6575
6576	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6577		self.p_next = p_next.cast_const();
6578	}
6579
6580	fn address(&mut self) -> *mut std::ffi::c_void {
6581		std::ptr::from_mut(self).cast()
6582	}
6583}
6584
6585impl<'a, 'root> crate::Extends<vk::SamplerCreateInfo<'root>>
6586	for vk::SamplerReductionModeCreateInfo<'a>
6587{
6588}
6589
6590impl<'a> crate::construction::sealed::ChainNode
6591	for vk::PhysicalDeviceBlendOperationAdvancedFeaturesEXT<'a>
6592{
6593	const S_TYPE: vk::StructureType =
6594		vk::StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT;
6595
6596	fn s_type(&self) -> vk::StructureType {
6597		self.s_type
6598	}
6599
6600	fn p_next(&self) -> *const std::ffi::c_void {
6601		self.p_next.cast_const()
6602	}
6603
6604	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6605		self.p_next = p_next;
6606	}
6607
6608	fn address(&mut self) -> *mut std::ffi::c_void {
6609		std::ptr::from_mut(self).cast()
6610	}
6611}
6612
6613impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
6614	for vk::PhysicalDeviceBlendOperationAdvancedFeaturesEXT<'a>
6615{
6616}
6617
6618impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
6619	for vk::PhysicalDeviceBlendOperationAdvancedFeaturesEXT<'a>
6620{
6621}
6622
6623impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceMultiDrawFeaturesEXT<'a> {
6624	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT;
6625
6626	fn s_type(&self) -> vk::StructureType {
6627		self.s_type
6628	}
6629
6630	fn p_next(&self) -> *const std::ffi::c_void {
6631		self.p_next.cast_const()
6632	}
6633
6634	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6635		self.p_next = p_next;
6636	}
6637
6638	fn address(&mut self) -> *mut std::ffi::c_void {
6639		std::ptr::from_mut(self).cast()
6640	}
6641}
6642
6643impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
6644	for vk::PhysicalDeviceMultiDrawFeaturesEXT<'a>
6645{
6646}
6647
6648impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
6649	for vk::PhysicalDeviceMultiDrawFeaturesEXT<'a>
6650{
6651}
6652
6653impl<'a> crate::construction::sealed::ChainNode
6654	for vk::PhysicalDeviceBlendOperationAdvancedPropertiesEXT<'a>
6655{
6656	const S_TYPE: vk::StructureType =
6657		vk::StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT;
6658
6659	fn s_type(&self) -> vk::StructureType {
6660		self.s_type
6661	}
6662
6663	fn p_next(&self) -> *const std::ffi::c_void {
6664		self.p_next.cast_const()
6665	}
6666
6667	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6668		self.p_next = p_next;
6669	}
6670
6671	fn address(&mut self) -> *mut std::ffi::c_void {
6672		std::ptr::from_mut(self).cast()
6673	}
6674}
6675
6676impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
6677	for vk::PhysicalDeviceBlendOperationAdvancedPropertiesEXT<'a>
6678{
6679}
6680
6681impl<'a> crate::construction::sealed::ChainNode
6682	for vk::PipelineColorBlendAdvancedStateCreateInfoEXT<'a>
6683{
6684	const S_TYPE: vk::StructureType =
6685		vk::StructureType::PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT;
6686
6687	fn s_type(&self) -> vk::StructureType {
6688		self.s_type
6689	}
6690
6691	fn p_next(&self) -> *const std::ffi::c_void {
6692		self.p_next
6693	}
6694
6695	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6696		self.p_next = p_next.cast_const();
6697	}
6698
6699	fn address(&mut self) -> *mut std::ffi::c_void {
6700		std::ptr::from_mut(self).cast()
6701	}
6702}
6703
6704impl<'a, 'root> crate::Extends<vk::PipelineColorBlendStateCreateInfo<'root>>
6705	for vk::PipelineColorBlendAdvancedStateCreateInfoEXT<'a>
6706{
6707}
6708
6709impl<'a> crate::construction::sealed::ChainNode
6710	for vk::PhysicalDeviceInlineUniformBlockFeatures<'a>
6711{
6712	const S_TYPE: vk::StructureType =
6713		vk::StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES;
6714
6715	fn s_type(&self) -> vk::StructureType {
6716		self.s_type
6717	}
6718
6719	fn p_next(&self) -> *const std::ffi::c_void {
6720		self.p_next.cast_const()
6721	}
6722
6723	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6724		self.p_next = p_next;
6725	}
6726
6727	fn address(&mut self) -> *mut std::ffi::c_void {
6728		std::ptr::from_mut(self).cast()
6729	}
6730}
6731
6732impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
6733	for vk::PhysicalDeviceInlineUniformBlockFeatures<'a>
6734{
6735}
6736
6737impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
6738	for vk::PhysicalDeviceInlineUniformBlockFeatures<'a>
6739{
6740}
6741
6742impl<'a> crate::construction::sealed::ChainNode
6743	for vk::PhysicalDeviceInlineUniformBlockProperties<'a>
6744{
6745	const S_TYPE: vk::StructureType =
6746		vk::StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES;
6747
6748	fn s_type(&self) -> vk::StructureType {
6749		self.s_type
6750	}
6751
6752	fn p_next(&self) -> *const std::ffi::c_void {
6753		self.p_next.cast_const()
6754	}
6755
6756	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6757		self.p_next = p_next;
6758	}
6759
6760	fn address(&mut self) -> *mut std::ffi::c_void {
6761		std::ptr::from_mut(self).cast()
6762	}
6763}
6764
6765impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
6766	for vk::PhysicalDeviceInlineUniformBlockProperties<'a>
6767{
6768}
6769
6770impl<'a> crate::construction::sealed::ChainNode for vk::WriteDescriptorSetInlineUniformBlock<'a> {
6771	const S_TYPE: vk::StructureType = vk::StructureType::WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK;
6772
6773	fn s_type(&self) -> vk::StructureType {
6774		self.s_type
6775	}
6776
6777	fn p_next(&self) -> *const std::ffi::c_void {
6778		self.p_next
6779	}
6780
6781	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6782		self.p_next = p_next.cast_const();
6783	}
6784
6785	fn address(&mut self) -> *mut std::ffi::c_void {
6786		std::ptr::from_mut(self).cast()
6787	}
6788}
6789
6790impl<'a, 'root> crate::Extends<vk::WriteDescriptorSet<'root>>
6791	for vk::WriteDescriptorSetInlineUniformBlock<'a>
6792{
6793}
6794
6795impl<'a> crate::construction::sealed::ChainNode
6796	for vk::DescriptorPoolInlineUniformBlockCreateInfo<'a>
6797{
6798	const S_TYPE: vk::StructureType =
6799		vk::StructureType::DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO;
6800
6801	fn s_type(&self) -> vk::StructureType {
6802		self.s_type
6803	}
6804
6805	fn p_next(&self) -> *const std::ffi::c_void {
6806		self.p_next
6807	}
6808
6809	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6810		self.p_next = p_next.cast_const();
6811	}
6812
6813	fn address(&mut self) -> *mut std::ffi::c_void {
6814		std::ptr::from_mut(self).cast()
6815	}
6816}
6817
6818impl<'a, 'root> crate::Extends<vk::DescriptorPoolCreateInfo<'root>>
6819	for vk::DescriptorPoolInlineUniformBlockCreateInfo<'a>
6820{
6821}
6822
6823impl<'a> crate::construction::sealed::ChainNode
6824	for vk::PipelineCoverageModulationStateCreateInfoNV<'a>
6825{
6826	const S_TYPE: vk::StructureType =
6827		vk::StructureType::PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV;
6828
6829	fn s_type(&self) -> vk::StructureType {
6830		self.s_type
6831	}
6832
6833	fn p_next(&self) -> *const std::ffi::c_void {
6834		self.p_next
6835	}
6836
6837	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6838		self.p_next = p_next.cast_const();
6839	}
6840
6841	fn address(&mut self) -> *mut std::ffi::c_void {
6842		std::ptr::from_mut(self).cast()
6843	}
6844}
6845
6846impl<'a, 'root> crate::Extends<vk::PipelineMultisampleStateCreateInfo<'root>>
6847	for vk::PipelineCoverageModulationStateCreateInfoNV<'a>
6848{
6849}
6850
6851impl<'a> crate::construction::sealed::ChainNode for vk::ImageFormatListCreateInfo<'a> {
6852	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_FORMAT_LIST_CREATE_INFO;
6853
6854	fn s_type(&self) -> vk::StructureType {
6855		self.s_type
6856	}
6857
6858	fn p_next(&self) -> *const std::ffi::c_void {
6859		self.p_next
6860	}
6861
6862	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6863		self.p_next = p_next.cast_const();
6864	}
6865
6866	fn address(&mut self) -> *mut std::ffi::c_void {
6867		std::ptr::from_mut(self).cast()
6868	}
6869}
6870
6871impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>> for vk::ImageFormatListCreateInfo<'a> {}
6872
6873impl<'a, 'root> crate::Extends<vk::SwapchainCreateInfoKHR<'root>>
6874	for vk::ImageFormatListCreateInfo<'a>
6875{
6876}
6877
6878impl<'a, 'root> crate::Extends<vk::PhysicalDeviceImageFormatInfo2<'root>>
6879	for vk::ImageFormatListCreateInfo<'a>
6880{
6881}
6882
6883impl<'a> crate::construction::sealed::ChainNode for vk::ValidationCacheCreateInfoEXT<'a> {
6884	const S_TYPE: vk::StructureType = vk::StructureType::VALIDATION_CACHE_CREATE_INFO_EXT;
6885
6886	fn s_type(&self) -> vk::StructureType {
6887		self.s_type
6888	}
6889
6890	fn p_next(&self) -> *const std::ffi::c_void {
6891		self.p_next
6892	}
6893
6894	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6895		self.p_next = p_next.cast_const();
6896	}
6897
6898	fn address(&mut self) -> *mut std::ffi::c_void {
6899		std::ptr::from_mut(self).cast()
6900	}
6901}
6902
6903impl<'a> crate::construction::sealed::ChainNode
6904	for vk::ShaderModuleValidationCacheCreateInfoEXT<'a>
6905{
6906	const S_TYPE: vk::StructureType =
6907		vk::StructureType::SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT;
6908
6909	fn s_type(&self) -> vk::StructureType {
6910		self.s_type
6911	}
6912
6913	fn p_next(&self) -> *const std::ffi::c_void {
6914		self.p_next
6915	}
6916
6917	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6918		self.p_next = p_next.cast_const();
6919	}
6920
6921	fn address(&mut self) -> *mut std::ffi::c_void {
6922		std::ptr::from_mut(self).cast()
6923	}
6924}
6925
6926impl<'a, 'root> crate::Extends<vk::ShaderModuleCreateInfo<'root>>
6927	for vk::ShaderModuleValidationCacheCreateInfoEXT<'a>
6928{
6929}
6930
6931impl<'a, 'root> crate::Extends<vk::PipelineShaderStageCreateInfo<'root>>
6932	for vk::ShaderModuleValidationCacheCreateInfoEXT<'a>
6933{
6934}
6935
6936impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceMaintenance3Properties<'a> {
6937	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES;
6938
6939	fn s_type(&self) -> vk::StructureType {
6940		self.s_type
6941	}
6942
6943	fn p_next(&self) -> *const std::ffi::c_void {
6944		self.p_next.cast_const()
6945	}
6946
6947	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6948		self.p_next = p_next;
6949	}
6950
6951	fn address(&mut self) -> *mut std::ffi::c_void {
6952		std::ptr::from_mut(self).cast()
6953	}
6954}
6955
6956impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
6957	for vk::PhysicalDeviceMaintenance3Properties<'a>
6958{
6959}
6960
6961impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceMaintenance4Features<'a> {
6962	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES;
6963
6964	fn s_type(&self) -> vk::StructureType {
6965		self.s_type
6966	}
6967
6968	fn p_next(&self) -> *const std::ffi::c_void {
6969		self.p_next.cast_const()
6970	}
6971
6972	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
6973		self.p_next = p_next;
6974	}
6975
6976	fn address(&mut self) -> *mut std::ffi::c_void {
6977		std::ptr::from_mut(self).cast()
6978	}
6979}
6980
6981impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
6982	for vk::PhysicalDeviceMaintenance4Features<'a>
6983{
6984}
6985
6986impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
6987	for vk::PhysicalDeviceMaintenance4Features<'a>
6988{
6989}
6990
6991impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceMaintenance4Properties<'a> {
6992	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES;
6993
6994	fn s_type(&self) -> vk::StructureType {
6995		self.s_type
6996	}
6997
6998	fn p_next(&self) -> *const std::ffi::c_void {
6999		self.p_next.cast_const()
7000	}
7001
7002	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7003		self.p_next = p_next;
7004	}
7005
7006	fn address(&mut self) -> *mut std::ffi::c_void {
7007		std::ptr::from_mut(self).cast()
7008	}
7009}
7010
7011impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
7012	for vk::PhysicalDeviceMaintenance4Properties<'a>
7013{
7014}
7015
7016impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceMaintenance5Features<'a> {
7017	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES;
7018
7019	fn s_type(&self) -> vk::StructureType {
7020		self.s_type
7021	}
7022
7023	fn p_next(&self) -> *const std::ffi::c_void {
7024		self.p_next.cast_const()
7025	}
7026
7027	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7028		self.p_next = p_next;
7029	}
7030
7031	fn address(&mut self) -> *mut std::ffi::c_void {
7032		std::ptr::from_mut(self).cast()
7033	}
7034}
7035
7036impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
7037	for vk::PhysicalDeviceMaintenance5Features<'a>
7038{
7039}
7040
7041impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
7042	for vk::PhysicalDeviceMaintenance5Features<'a>
7043{
7044}
7045
7046impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceMaintenance5Properties<'a> {
7047	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES;
7048
7049	fn s_type(&self) -> vk::StructureType {
7050		self.s_type
7051	}
7052
7053	fn p_next(&self) -> *const std::ffi::c_void {
7054		self.p_next.cast_const()
7055	}
7056
7057	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7058		self.p_next = p_next;
7059	}
7060
7061	fn address(&mut self) -> *mut std::ffi::c_void {
7062		std::ptr::from_mut(self).cast()
7063	}
7064}
7065
7066impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
7067	for vk::PhysicalDeviceMaintenance5Properties<'a>
7068{
7069}
7070
7071impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceMaintenance6Features<'a> {
7072	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES;
7073
7074	fn s_type(&self) -> vk::StructureType {
7075		self.s_type
7076	}
7077
7078	fn p_next(&self) -> *const std::ffi::c_void {
7079		self.p_next.cast_const()
7080	}
7081
7082	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7083		self.p_next = p_next;
7084	}
7085
7086	fn address(&mut self) -> *mut std::ffi::c_void {
7087		std::ptr::from_mut(self).cast()
7088	}
7089}
7090
7091impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
7092	for vk::PhysicalDeviceMaintenance6Features<'a>
7093{
7094}
7095
7096impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
7097	for vk::PhysicalDeviceMaintenance6Features<'a>
7098{
7099}
7100
7101impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceMaintenance6Properties<'a> {
7102	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES;
7103
7104	fn s_type(&self) -> vk::StructureType {
7105		self.s_type
7106	}
7107
7108	fn p_next(&self) -> *const std::ffi::c_void {
7109		self.p_next.cast_const()
7110	}
7111
7112	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7113		self.p_next = p_next;
7114	}
7115
7116	fn address(&mut self) -> *mut std::ffi::c_void {
7117		std::ptr::from_mut(self).cast()
7118	}
7119}
7120
7121impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
7122	for vk::PhysicalDeviceMaintenance6Properties<'a>
7123{
7124}
7125
7126impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceMaintenance7FeaturesKHR<'a> {
7127	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR;
7128
7129	fn s_type(&self) -> vk::StructureType {
7130		self.s_type
7131	}
7132
7133	fn p_next(&self) -> *const std::ffi::c_void {
7134		self.p_next.cast_const()
7135	}
7136
7137	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7138		self.p_next = p_next;
7139	}
7140
7141	fn address(&mut self) -> *mut std::ffi::c_void {
7142		std::ptr::from_mut(self).cast()
7143	}
7144}
7145
7146impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
7147	for vk::PhysicalDeviceMaintenance7FeaturesKHR<'a>
7148{
7149}
7150
7151impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
7152	for vk::PhysicalDeviceMaintenance7FeaturesKHR<'a>
7153{
7154}
7155
7156impl<'a> crate::construction::sealed::ChainNode
7157	for vk::PhysicalDeviceMaintenance7PropertiesKHR<'a>
7158{
7159	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR;
7160
7161	fn s_type(&self) -> vk::StructureType {
7162		self.s_type
7163	}
7164
7165	fn p_next(&self) -> *const std::ffi::c_void {
7166		self.p_next.cast_const()
7167	}
7168
7169	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7170		self.p_next = p_next;
7171	}
7172
7173	fn address(&mut self) -> *mut std::ffi::c_void {
7174		std::ptr::from_mut(self).cast()
7175	}
7176}
7177
7178impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
7179	for vk::PhysicalDeviceMaintenance7PropertiesKHR<'a>
7180{
7181}
7182
7183impl<'a> crate::construction::sealed::ChainNode
7184	for vk::PhysicalDeviceLayeredApiPropertiesListKHR<'a>
7185{
7186	const S_TYPE: vk::StructureType =
7187		vk::StructureType::PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR;
7188
7189	fn s_type(&self) -> vk::StructureType {
7190		self.s_type
7191	}
7192
7193	fn p_next(&self) -> *const std::ffi::c_void {
7194		self.p_next.cast_const()
7195	}
7196
7197	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7198		self.p_next = p_next;
7199	}
7200
7201	fn address(&mut self) -> *mut std::ffi::c_void {
7202		std::ptr::from_mut(self).cast()
7203	}
7204}
7205
7206impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
7207	for vk::PhysicalDeviceLayeredApiPropertiesListKHR<'a>
7208{
7209}
7210
7211impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceLayeredApiPropertiesKHR<'a> {
7212	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR;
7213
7214	fn s_type(&self) -> vk::StructureType {
7215		self.s_type
7216	}
7217
7218	fn p_next(&self) -> *const std::ffi::c_void {
7219		self.p_next.cast_const()
7220	}
7221
7222	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7223		self.p_next = p_next;
7224	}
7225
7226	fn address(&mut self) -> *mut std::ffi::c_void {
7227		std::ptr::from_mut(self).cast()
7228	}
7229}
7230
7231impl<'a> crate::construction::sealed::ChainNode
7232	for vk::PhysicalDeviceLayeredApiVulkanPropertiesKHR<'a>
7233{
7234	const S_TYPE: vk::StructureType =
7235		vk::StructureType::PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR;
7236
7237	fn s_type(&self) -> vk::StructureType {
7238		self.s_type
7239	}
7240
7241	fn p_next(&self) -> *const std::ffi::c_void {
7242		self.p_next.cast_const()
7243	}
7244
7245	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7246		self.p_next = p_next;
7247	}
7248
7249	fn address(&mut self) -> *mut std::ffi::c_void {
7250		std::ptr::from_mut(self).cast()
7251	}
7252}
7253
7254impl<'a, 'root> crate::Extends<vk::PhysicalDeviceLayeredApiPropertiesKHR<'root>>
7255	for vk::PhysicalDeviceLayeredApiVulkanPropertiesKHR<'a>
7256{
7257}
7258
7259impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceMaintenance8FeaturesKHR<'a> {
7260	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR;
7261
7262	fn s_type(&self) -> vk::StructureType {
7263		self.s_type
7264	}
7265
7266	fn p_next(&self) -> *const std::ffi::c_void {
7267		self.p_next.cast_const()
7268	}
7269
7270	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7271		self.p_next = p_next;
7272	}
7273
7274	fn address(&mut self) -> *mut std::ffi::c_void {
7275		std::ptr::from_mut(self).cast()
7276	}
7277}
7278
7279impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
7280	for vk::PhysicalDeviceMaintenance8FeaturesKHR<'a>
7281{
7282}
7283
7284impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
7285	for vk::PhysicalDeviceMaintenance8FeaturesKHR<'a>
7286{
7287}
7288
7289impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceMaintenance9FeaturesKHR<'a> {
7290	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR;
7291
7292	fn s_type(&self) -> vk::StructureType {
7293		self.s_type
7294	}
7295
7296	fn p_next(&self) -> *const std::ffi::c_void {
7297		self.p_next.cast_const()
7298	}
7299
7300	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7301		self.p_next = p_next;
7302	}
7303
7304	fn address(&mut self) -> *mut std::ffi::c_void {
7305		std::ptr::from_mut(self).cast()
7306	}
7307}
7308
7309impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
7310	for vk::PhysicalDeviceMaintenance9FeaturesKHR<'a>
7311{
7312}
7313
7314impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
7315	for vk::PhysicalDeviceMaintenance9FeaturesKHR<'a>
7316{
7317}
7318
7319impl<'a> crate::construction::sealed::ChainNode
7320	for vk::PhysicalDeviceMaintenance9PropertiesKHR<'a>
7321{
7322	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR;
7323
7324	fn s_type(&self) -> vk::StructureType {
7325		self.s_type
7326	}
7327
7328	fn p_next(&self) -> *const std::ffi::c_void {
7329		self.p_next.cast_const()
7330	}
7331
7332	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7333		self.p_next = p_next;
7334	}
7335
7336	fn address(&mut self) -> *mut std::ffi::c_void {
7337		std::ptr::from_mut(self).cast()
7338	}
7339}
7340
7341impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
7342	for vk::PhysicalDeviceMaintenance9PropertiesKHR<'a>
7343{
7344}
7345
7346impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceMaintenance11FeaturesKHR<'a> {
7347	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MAINTENANCE_11_FEATURES_KHR;
7348
7349	fn s_type(&self) -> vk::StructureType {
7350		self.s_type
7351	}
7352
7353	fn p_next(&self) -> *const std::ffi::c_void {
7354		self.p_next.cast_const()
7355	}
7356
7357	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7358		self.p_next = p_next;
7359	}
7360
7361	fn address(&mut self) -> *mut std::ffi::c_void {
7362		std::ptr::from_mut(self).cast()
7363	}
7364}
7365
7366impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
7367	for vk::PhysicalDeviceMaintenance11FeaturesKHR<'a>
7368{
7369}
7370
7371impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
7372	for vk::PhysicalDeviceMaintenance11FeaturesKHR<'a>
7373{
7374}
7375
7376impl<'a> crate::construction::sealed::ChainNode
7377	for vk::PhysicalDeviceMaintenance10PropertiesKHR<'a>
7378{
7379	const S_TYPE: vk::StructureType =
7380		vk::StructureType::PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR;
7381
7382	fn s_type(&self) -> vk::StructureType {
7383		self.s_type
7384	}
7385
7386	fn p_next(&self) -> *const std::ffi::c_void {
7387		self.p_next.cast_const()
7388	}
7389
7390	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7391		self.p_next = p_next;
7392	}
7393
7394	fn address(&mut self) -> *mut std::ffi::c_void {
7395		std::ptr::from_mut(self).cast()
7396	}
7397}
7398
7399impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
7400	for vk::PhysicalDeviceMaintenance10PropertiesKHR<'a>
7401{
7402}
7403
7404impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceMaintenance10FeaturesKHR<'a> {
7405	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR;
7406
7407	fn s_type(&self) -> vk::StructureType {
7408		self.s_type
7409	}
7410
7411	fn p_next(&self) -> *const std::ffi::c_void {
7412		self.p_next.cast_const()
7413	}
7414
7415	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7416		self.p_next = p_next;
7417	}
7418
7419	fn address(&mut self) -> *mut std::ffi::c_void {
7420		std::ptr::from_mut(self).cast()
7421	}
7422}
7423
7424impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
7425	for vk::PhysicalDeviceMaintenance10FeaturesKHR<'a>
7426{
7427}
7428
7429impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
7430	for vk::PhysicalDeviceMaintenance10FeaturesKHR<'a>
7431{
7432}
7433
7434impl<'a> crate::construction::sealed::ChainNode
7435	for vk::QueueFamilyOwnershipTransferPropertiesKHR<'a>
7436{
7437	const S_TYPE: vk::StructureType =
7438		vk::StructureType::QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR;
7439
7440	fn s_type(&self) -> vk::StructureType {
7441		self.s_type
7442	}
7443
7444	fn p_next(&self) -> *const std::ffi::c_void {
7445		self.p_next.cast_const()
7446	}
7447
7448	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7449		self.p_next = p_next;
7450	}
7451
7452	fn address(&mut self) -> *mut std::ffi::c_void {
7453		std::ptr::from_mut(self).cast()
7454	}
7455}
7456
7457impl<'a, 'root> crate::Extends<vk::QueueFamilyProperties2<'root>>
7458	for vk::QueueFamilyOwnershipTransferPropertiesKHR<'a>
7459{
7460}
7461
7462impl<'a> crate::construction::sealed::ChainNode
7463	for vk::QueueFamilyOptimalImageTransferGranularityPropertiesKHR<'a>
7464{
7465	const S_TYPE: vk::StructureType =
7466		vk::StructureType::QUEUE_FAMILY_OPTIMAL_IMAGE_TRANSFER_GRANULARITY_PROPERTIES_KHR;
7467
7468	fn s_type(&self) -> vk::StructureType {
7469		self.s_type
7470	}
7471
7472	fn p_next(&self) -> *const std::ffi::c_void {
7473		self.p_next.cast_const()
7474	}
7475
7476	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7477		self.p_next = p_next;
7478	}
7479
7480	fn address(&mut self) -> *mut std::ffi::c_void {
7481		std::ptr::from_mut(self).cast()
7482	}
7483}
7484
7485impl<'a, 'root> crate::Extends<vk::QueueFamilyProperties2<'root>>
7486	for vk::QueueFamilyOptimalImageTransferGranularityPropertiesKHR<'a>
7487{
7488}
7489
7490impl<'a> crate::construction::sealed::ChainNode for vk::RenderingAreaInfo<'a> {
7491	const S_TYPE: vk::StructureType = vk::StructureType::RENDERING_AREA_INFO;
7492
7493	fn s_type(&self) -> vk::StructureType {
7494		self.s_type
7495	}
7496
7497	fn p_next(&self) -> *const std::ffi::c_void {
7498		self.p_next
7499	}
7500
7501	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7502		self.p_next = p_next.cast_const();
7503	}
7504
7505	fn address(&mut self) -> *mut std::ffi::c_void {
7506		std::ptr::from_mut(self).cast()
7507	}
7508}
7509
7510impl<'a> crate::construction::sealed::ChainNode for vk::DescriptorSetLayoutSupport<'a> {
7511	const S_TYPE: vk::StructureType = vk::StructureType::DESCRIPTOR_SET_LAYOUT_SUPPORT;
7512
7513	fn s_type(&self) -> vk::StructureType {
7514		self.s_type
7515	}
7516
7517	fn p_next(&self) -> *const std::ffi::c_void {
7518		self.p_next.cast_const()
7519	}
7520
7521	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7522		self.p_next = p_next;
7523	}
7524
7525	fn address(&mut self) -> *mut std::ffi::c_void {
7526		std::ptr::from_mut(self).cast()
7527	}
7528}
7529
7530impl<'a> crate::construction::sealed::ChainNode
7531	for vk::PhysicalDeviceShaderDrawParametersFeatures<'a>
7532{
7533	const S_TYPE: vk::StructureType =
7534		vk::StructureType::PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES;
7535
7536	fn s_type(&self) -> vk::StructureType {
7537		self.s_type
7538	}
7539
7540	fn p_next(&self) -> *const std::ffi::c_void {
7541		self.p_next.cast_const()
7542	}
7543
7544	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7545		self.p_next = p_next;
7546	}
7547
7548	fn address(&mut self) -> *mut std::ffi::c_void {
7549		std::ptr::from_mut(self).cast()
7550	}
7551}
7552
7553impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
7554	for vk::PhysicalDeviceShaderDrawParametersFeatures<'a>
7555{
7556}
7557
7558impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
7559	for vk::PhysicalDeviceShaderDrawParametersFeatures<'a>
7560{
7561}
7562
7563impl<'a> crate::construction::sealed::ChainNode
7564	for vk::PhysicalDeviceShaderFloat16Int8Features<'a>
7565{
7566	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES;
7567
7568	fn s_type(&self) -> vk::StructureType {
7569		self.s_type
7570	}
7571
7572	fn p_next(&self) -> *const std::ffi::c_void {
7573		self.p_next.cast_const()
7574	}
7575
7576	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7577		self.p_next = p_next;
7578	}
7579
7580	fn address(&mut self) -> *mut std::ffi::c_void {
7581		std::ptr::from_mut(self).cast()
7582	}
7583}
7584
7585impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
7586	for vk::PhysicalDeviceShaderFloat16Int8Features<'a>
7587{
7588}
7589
7590impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
7591	for vk::PhysicalDeviceShaderFloat16Int8Features<'a>
7592{
7593}
7594
7595impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceFloatControlsProperties<'a> {
7596	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES;
7597
7598	fn s_type(&self) -> vk::StructureType {
7599		self.s_type
7600	}
7601
7602	fn p_next(&self) -> *const std::ffi::c_void {
7603		self.p_next.cast_const()
7604	}
7605
7606	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7607		self.p_next = p_next;
7608	}
7609
7610	fn address(&mut self) -> *mut std::ffi::c_void {
7611		std::ptr::from_mut(self).cast()
7612	}
7613}
7614
7615impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
7616	for vk::PhysicalDeviceFloatControlsProperties<'a>
7617{
7618}
7619
7620impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceHostQueryResetFeatures<'a> {
7621	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES;
7622
7623	fn s_type(&self) -> vk::StructureType {
7624		self.s_type
7625	}
7626
7627	fn p_next(&self) -> *const std::ffi::c_void {
7628		self.p_next.cast_const()
7629	}
7630
7631	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7632		self.p_next = p_next;
7633	}
7634
7635	fn address(&mut self) -> *mut std::ffi::c_void {
7636		std::ptr::from_mut(self).cast()
7637	}
7638}
7639
7640impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
7641	for vk::PhysicalDeviceHostQueryResetFeatures<'a>
7642{
7643}
7644
7645impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
7646	for vk::PhysicalDeviceHostQueryResetFeatures<'a>
7647{
7648}
7649
7650impl<'a> crate::construction::sealed::ChainNode
7651	for vk::PhysicalDeviceElapsedTimerQueryFeaturesQCOM<'a>
7652{
7653	const S_TYPE: vk::StructureType =
7654		vk::StructureType::PHYSICAL_DEVICE_ELAPSED_TIMER_QUERY_FEATURES_QCOM;
7655
7656	fn s_type(&self) -> vk::StructureType {
7657		self.s_type
7658	}
7659
7660	fn p_next(&self) -> *const std::ffi::c_void {
7661		self.p_next.cast_const()
7662	}
7663
7664	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7665		self.p_next = p_next;
7666	}
7667
7668	fn address(&mut self) -> *mut std::ffi::c_void {
7669		std::ptr::from_mut(self).cast()
7670	}
7671}
7672
7673impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
7674	for vk::PhysicalDeviceElapsedTimerQueryFeaturesQCOM<'a>
7675{
7676}
7677
7678impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
7679	for vk::PhysicalDeviceElapsedTimerQueryFeaturesQCOM<'a>
7680{
7681}
7682
7683impl<'a> crate::construction::sealed::ChainNode for vk::DeviceQueueGlobalPriorityCreateInfo<'a> {
7684	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO;
7685
7686	fn s_type(&self) -> vk::StructureType {
7687		self.s_type
7688	}
7689
7690	fn p_next(&self) -> *const std::ffi::c_void {
7691		self.p_next
7692	}
7693
7694	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7695		self.p_next = p_next.cast_const();
7696	}
7697
7698	fn address(&mut self) -> *mut std::ffi::c_void {
7699		std::ptr::from_mut(self).cast()
7700	}
7701}
7702
7703impl<'a, 'root> crate::Extends<vk::DeviceQueueCreateInfo<'root>>
7704	for vk::DeviceQueueGlobalPriorityCreateInfo<'a>
7705{
7706}
7707
7708impl<'a> crate::construction::sealed::ChainNode
7709	for vk::PhysicalDeviceGlobalPriorityQueryFeatures<'a>
7710{
7711	const S_TYPE: vk::StructureType =
7712		vk::StructureType::PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES;
7713
7714	fn s_type(&self) -> vk::StructureType {
7715		self.s_type
7716	}
7717
7718	fn p_next(&self) -> *const std::ffi::c_void {
7719		self.p_next.cast_const()
7720	}
7721
7722	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7723		self.p_next = p_next;
7724	}
7725
7726	fn address(&mut self) -> *mut std::ffi::c_void {
7727		std::ptr::from_mut(self).cast()
7728	}
7729}
7730
7731impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
7732	for vk::PhysicalDeviceGlobalPriorityQueryFeatures<'a>
7733{
7734}
7735
7736impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
7737	for vk::PhysicalDeviceGlobalPriorityQueryFeatures<'a>
7738{
7739}
7740
7741impl<'a> crate::construction::sealed::ChainNode for vk::QueueFamilyGlobalPriorityProperties<'a> {
7742	const S_TYPE: vk::StructureType = vk::StructureType::QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES;
7743
7744	fn s_type(&self) -> vk::StructureType {
7745		self.s_type
7746	}
7747
7748	fn p_next(&self) -> *const std::ffi::c_void {
7749		self.p_next.cast_const()
7750	}
7751
7752	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7753		self.p_next = p_next;
7754	}
7755
7756	fn address(&mut self) -> *mut std::ffi::c_void {
7757		std::ptr::from_mut(self).cast()
7758	}
7759}
7760
7761impl<'a, 'root> crate::Extends<vk::QueueFamilyProperties2<'root>>
7762	for vk::QueueFamilyGlobalPriorityProperties<'a>
7763{
7764}
7765
7766impl<'a> crate::construction::sealed::ChainNode for vk::DebugUtilsObjectNameInfoEXT<'a> {
7767	const S_TYPE: vk::StructureType = vk::StructureType::DEBUG_UTILS_OBJECT_NAME_INFO_EXT;
7768
7769	fn s_type(&self) -> vk::StructureType {
7770		self.s_type
7771	}
7772
7773	fn p_next(&self) -> *const std::ffi::c_void {
7774		self.p_next
7775	}
7776
7777	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7778		self.p_next = p_next.cast_const();
7779	}
7780
7781	fn address(&mut self) -> *mut std::ffi::c_void {
7782		std::ptr::from_mut(self).cast()
7783	}
7784}
7785
7786impl<'a, 'root> crate::Extends<vk::PipelineShaderStageCreateInfo<'root>>
7787	for vk::DebugUtilsObjectNameInfoEXT<'a>
7788{
7789}
7790
7791impl<'a, 'root> crate::Extends<vk::ResourceDescriptorInfoEXT<'root>>
7792	for vk::DebugUtilsObjectNameInfoEXT<'a>
7793{
7794}
7795
7796impl<'a, 'root> crate::Extends<vk::SamplerCreateInfo<'root>>
7797	for vk::DebugUtilsObjectNameInfoEXT<'a>
7798{
7799}
7800
7801impl<'a> crate::construction::sealed::ChainNode for vk::DebugUtilsObjectTagInfoEXT<'a> {
7802	const S_TYPE: vk::StructureType = vk::StructureType::DEBUG_UTILS_OBJECT_TAG_INFO_EXT;
7803
7804	fn s_type(&self) -> vk::StructureType {
7805		self.s_type
7806	}
7807
7808	fn p_next(&self) -> *const std::ffi::c_void {
7809		self.p_next
7810	}
7811
7812	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7813		self.p_next = p_next.cast_const();
7814	}
7815
7816	fn address(&mut self) -> *mut std::ffi::c_void {
7817		std::ptr::from_mut(self).cast()
7818	}
7819}
7820
7821impl<'a> crate::construction::sealed::ChainNode for vk::DebugUtilsLabelEXT<'a> {
7822	const S_TYPE: vk::StructureType = vk::StructureType::DEBUG_UTILS_LABEL_EXT;
7823
7824	fn s_type(&self) -> vk::StructureType {
7825		self.s_type
7826	}
7827
7828	fn p_next(&self) -> *const std::ffi::c_void {
7829		self.p_next
7830	}
7831
7832	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7833		self.p_next = p_next.cast_const();
7834	}
7835
7836	fn address(&mut self) -> *mut std::ffi::c_void {
7837		std::ptr::from_mut(self).cast()
7838	}
7839}
7840
7841impl<'a> crate::construction::sealed::ChainNode for vk::DebugUtilsMessengerCreateInfoEXT<'a> {
7842	const S_TYPE: vk::StructureType = vk::StructureType::DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT;
7843
7844	fn s_type(&self) -> vk::StructureType {
7845		self.s_type
7846	}
7847
7848	fn p_next(&self) -> *const std::ffi::c_void {
7849		self.p_next
7850	}
7851
7852	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7853		self.p_next = p_next.cast_const();
7854	}
7855
7856	fn address(&mut self) -> *mut std::ffi::c_void {
7857		std::ptr::from_mut(self).cast()
7858	}
7859}
7860
7861impl<'a, 'root> crate::Extends<vk::InstanceCreateInfo<'root>>
7862	for vk::DebugUtilsMessengerCreateInfoEXT<'a>
7863{
7864}
7865
7866impl<'a> crate::construction::sealed::ChainNode for vk::DebugUtilsMessengerCallbackDataEXT<'a> {
7867	const S_TYPE: vk::StructureType = vk::StructureType::DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT;
7868
7869	fn s_type(&self) -> vk::StructureType {
7870		self.s_type
7871	}
7872
7873	fn p_next(&self) -> *const std::ffi::c_void {
7874		self.p_next
7875	}
7876
7877	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7878		self.p_next = p_next.cast_const();
7879	}
7880
7881	fn address(&mut self) -> *mut std::ffi::c_void {
7882		std::ptr::from_mut(self).cast()
7883	}
7884}
7885
7886impl<'a> crate::construction::sealed::ChainNode
7887	for vk::PhysicalDeviceDeviceMemoryReportFeaturesEXT<'a>
7888{
7889	const S_TYPE: vk::StructureType =
7890		vk::StructureType::PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT;
7891
7892	fn s_type(&self) -> vk::StructureType {
7893		self.s_type
7894	}
7895
7896	fn p_next(&self) -> *const std::ffi::c_void {
7897		self.p_next.cast_const()
7898	}
7899
7900	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7901		self.p_next = p_next;
7902	}
7903
7904	fn address(&mut self) -> *mut std::ffi::c_void {
7905		std::ptr::from_mut(self).cast()
7906	}
7907}
7908
7909impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
7910	for vk::PhysicalDeviceDeviceMemoryReportFeaturesEXT<'a>
7911{
7912}
7913
7914impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
7915	for vk::PhysicalDeviceDeviceMemoryReportFeaturesEXT<'a>
7916{
7917}
7918
7919impl<'a> crate::construction::sealed::ChainNode for vk::DeviceDeviceMemoryReportCreateInfoEXT<'a> {
7920	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT;
7921
7922	fn s_type(&self) -> vk::StructureType {
7923		self.s_type
7924	}
7925
7926	fn p_next(&self) -> *const std::ffi::c_void {
7927		self.p_next
7928	}
7929
7930	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7931		self.p_next = p_next.cast_const();
7932	}
7933
7934	fn address(&mut self) -> *mut std::ffi::c_void {
7935		std::ptr::from_mut(self).cast()
7936	}
7937}
7938
7939impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
7940	for vk::DeviceDeviceMemoryReportCreateInfoEXT<'a>
7941{
7942}
7943
7944impl<'a> crate::construction::sealed::ChainNode for vk::DeviceMemoryReportCallbackDataEXT<'a> {
7945	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT;
7946
7947	fn s_type(&self) -> vk::StructureType {
7948		self.s_type
7949	}
7950
7951	fn p_next(&self) -> *const std::ffi::c_void {
7952		self.p_next.cast_const()
7953	}
7954
7955	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7956		self.p_next = p_next;
7957	}
7958
7959	fn address(&mut self) -> *mut std::ffi::c_void {
7960		std::ptr::from_mut(self).cast()
7961	}
7962}
7963
7964impl<'a> crate::construction::sealed::ChainNode for vk::ImportMemoryHostPointerInfoEXT<'a> {
7965	const S_TYPE: vk::StructureType = vk::StructureType::IMPORT_MEMORY_HOST_POINTER_INFO_EXT;
7966
7967	fn s_type(&self) -> vk::StructureType {
7968		self.s_type
7969	}
7970
7971	fn p_next(&self) -> *const std::ffi::c_void {
7972		self.p_next
7973	}
7974
7975	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
7976		self.p_next = p_next.cast_const();
7977	}
7978
7979	fn address(&mut self) -> *mut std::ffi::c_void {
7980		std::ptr::from_mut(self).cast()
7981	}
7982}
7983
7984impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>>
7985	for vk::ImportMemoryHostPointerInfoEXT<'a>
7986{
7987}
7988
7989impl<'a> crate::construction::sealed::ChainNode for vk::MemoryHostPointerPropertiesEXT<'a> {
7990	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_HOST_POINTER_PROPERTIES_EXT;
7991
7992	fn s_type(&self) -> vk::StructureType {
7993		self.s_type
7994	}
7995
7996	fn p_next(&self) -> *const std::ffi::c_void {
7997		self.p_next.cast_const()
7998	}
7999
8000	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8001		self.p_next = p_next;
8002	}
8003
8004	fn address(&mut self) -> *mut std::ffi::c_void {
8005		std::ptr::from_mut(self).cast()
8006	}
8007}
8008
8009impl<'a> crate::construction::sealed::ChainNode
8010	for vk::PhysicalDeviceExternalMemoryHostPropertiesEXT<'a>
8011{
8012	const S_TYPE: vk::StructureType =
8013		vk::StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT;
8014
8015	fn s_type(&self) -> vk::StructureType {
8016		self.s_type
8017	}
8018
8019	fn p_next(&self) -> *const std::ffi::c_void {
8020		self.p_next.cast_const()
8021	}
8022
8023	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8024		self.p_next = p_next;
8025	}
8026
8027	fn address(&mut self) -> *mut std::ffi::c_void {
8028		std::ptr::from_mut(self).cast()
8029	}
8030}
8031
8032impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
8033	for vk::PhysicalDeviceExternalMemoryHostPropertiesEXT<'a>
8034{
8035}
8036
8037impl<'a> crate::construction::sealed::ChainNode
8038	for vk::PhysicalDeviceConservativeRasterizationPropertiesEXT<'a>
8039{
8040	const S_TYPE: vk::StructureType =
8041		vk::StructureType::PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT;
8042
8043	fn s_type(&self) -> vk::StructureType {
8044		self.s_type
8045	}
8046
8047	fn p_next(&self) -> *const std::ffi::c_void {
8048		self.p_next.cast_const()
8049	}
8050
8051	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8052		self.p_next = p_next;
8053	}
8054
8055	fn address(&mut self) -> *mut std::ffi::c_void {
8056		std::ptr::from_mut(self).cast()
8057	}
8058}
8059
8060impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
8061	for vk::PhysicalDeviceConservativeRasterizationPropertiesEXT<'a>
8062{
8063}
8064
8065impl<'a> crate::construction::sealed::ChainNode for vk::CalibratedTimestampInfoKHR<'a> {
8066	const S_TYPE: vk::StructureType = vk::StructureType::CALIBRATED_TIMESTAMP_INFO_KHR;
8067
8068	fn s_type(&self) -> vk::StructureType {
8069		self.s_type
8070	}
8071
8072	fn p_next(&self) -> *const std::ffi::c_void {
8073		self.p_next
8074	}
8075
8076	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8077		self.p_next = p_next.cast_const();
8078	}
8079
8080	fn address(&mut self) -> *mut std::ffi::c_void {
8081		std::ptr::from_mut(self).cast()
8082	}
8083}
8084
8085impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceShaderCorePropertiesAMD<'a> {
8086	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD;
8087
8088	fn s_type(&self) -> vk::StructureType {
8089		self.s_type
8090	}
8091
8092	fn p_next(&self) -> *const std::ffi::c_void {
8093		self.p_next.cast_const()
8094	}
8095
8096	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8097		self.p_next = p_next;
8098	}
8099
8100	fn address(&mut self) -> *mut std::ffi::c_void {
8101		std::ptr::from_mut(self).cast()
8102	}
8103}
8104
8105impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
8106	for vk::PhysicalDeviceShaderCorePropertiesAMD<'a>
8107{
8108}
8109
8110impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceShaderCoreProperties2AMD<'a> {
8111	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD;
8112
8113	fn s_type(&self) -> vk::StructureType {
8114		self.s_type
8115	}
8116
8117	fn p_next(&self) -> *const std::ffi::c_void {
8118		self.p_next.cast_const()
8119	}
8120
8121	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8122		self.p_next = p_next;
8123	}
8124
8125	fn address(&mut self) -> *mut std::ffi::c_void {
8126		std::ptr::from_mut(self).cast()
8127	}
8128}
8129
8130impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
8131	for vk::PhysicalDeviceShaderCoreProperties2AMD<'a>
8132{
8133}
8134
8135impl<'a> crate::construction::sealed::ChainNode
8136	for vk::PipelineRasterizationConservativeStateCreateInfoEXT<'a>
8137{
8138	const S_TYPE: vk::StructureType =
8139		vk::StructureType::PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT;
8140
8141	fn s_type(&self) -> vk::StructureType {
8142		self.s_type
8143	}
8144
8145	fn p_next(&self) -> *const std::ffi::c_void {
8146		self.p_next
8147	}
8148
8149	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8150		self.p_next = p_next.cast_const();
8151	}
8152
8153	fn address(&mut self) -> *mut std::ffi::c_void {
8154		std::ptr::from_mut(self).cast()
8155	}
8156}
8157
8158impl<'a, 'root> crate::Extends<vk::PipelineRasterizationStateCreateInfo<'root>>
8159	for vk::PipelineRasterizationConservativeStateCreateInfoEXT<'a>
8160{
8161}
8162
8163impl<'a> crate::construction::sealed::ChainNode
8164	for vk::PhysicalDeviceDescriptorIndexingFeatures<'a>
8165{
8166	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES;
8167
8168	fn s_type(&self) -> vk::StructureType {
8169		self.s_type
8170	}
8171
8172	fn p_next(&self) -> *const std::ffi::c_void {
8173		self.p_next.cast_const()
8174	}
8175
8176	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8177		self.p_next = p_next;
8178	}
8179
8180	fn address(&mut self) -> *mut std::ffi::c_void {
8181		std::ptr::from_mut(self).cast()
8182	}
8183}
8184
8185impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
8186	for vk::PhysicalDeviceDescriptorIndexingFeatures<'a>
8187{
8188}
8189
8190impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
8191	for vk::PhysicalDeviceDescriptorIndexingFeatures<'a>
8192{
8193}
8194
8195impl<'a> crate::construction::sealed::ChainNode
8196	for vk::PhysicalDeviceDescriptorIndexingProperties<'a>
8197{
8198	const S_TYPE: vk::StructureType =
8199		vk::StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES;
8200
8201	fn s_type(&self) -> vk::StructureType {
8202		self.s_type
8203	}
8204
8205	fn p_next(&self) -> *const std::ffi::c_void {
8206		self.p_next.cast_const()
8207	}
8208
8209	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8210		self.p_next = p_next;
8211	}
8212
8213	fn address(&mut self) -> *mut std::ffi::c_void {
8214		std::ptr::from_mut(self).cast()
8215	}
8216}
8217
8218impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
8219	for vk::PhysicalDeviceDescriptorIndexingProperties<'a>
8220{
8221}
8222
8223impl<'a> crate::construction::sealed::ChainNode
8224	for vk::DescriptorSetLayoutBindingFlagsCreateInfo<'a>
8225{
8226	const S_TYPE: vk::StructureType =
8227		vk::StructureType::DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO;
8228
8229	fn s_type(&self) -> vk::StructureType {
8230		self.s_type
8231	}
8232
8233	fn p_next(&self) -> *const std::ffi::c_void {
8234		self.p_next
8235	}
8236
8237	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8238		self.p_next = p_next.cast_const();
8239	}
8240
8241	fn address(&mut self) -> *mut std::ffi::c_void {
8242		std::ptr::from_mut(self).cast()
8243	}
8244}
8245
8246impl<'a, 'root> crate::Extends<vk::DescriptorSetLayoutCreateInfo<'root>>
8247	for vk::DescriptorSetLayoutBindingFlagsCreateInfo<'a>
8248{
8249}
8250
8251impl<'a> crate::construction::sealed::ChainNode
8252	for vk::DescriptorSetVariableDescriptorCountAllocateInfo<'a>
8253{
8254	const S_TYPE: vk::StructureType =
8255		vk::StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO;
8256
8257	fn s_type(&self) -> vk::StructureType {
8258		self.s_type
8259	}
8260
8261	fn p_next(&self) -> *const std::ffi::c_void {
8262		self.p_next
8263	}
8264
8265	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8266		self.p_next = p_next.cast_const();
8267	}
8268
8269	fn address(&mut self) -> *mut std::ffi::c_void {
8270		std::ptr::from_mut(self).cast()
8271	}
8272}
8273
8274impl<'a, 'root> crate::Extends<vk::DescriptorSetAllocateInfo<'root>>
8275	for vk::DescriptorSetVariableDescriptorCountAllocateInfo<'a>
8276{
8277}
8278
8279impl<'a> crate::construction::sealed::ChainNode
8280	for vk::DescriptorSetVariableDescriptorCountLayoutSupport<'a>
8281{
8282	const S_TYPE: vk::StructureType =
8283		vk::StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT;
8284
8285	fn s_type(&self) -> vk::StructureType {
8286		self.s_type
8287	}
8288
8289	fn p_next(&self) -> *const std::ffi::c_void {
8290		self.p_next.cast_const()
8291	}
8292
8293	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8294		self.p_next = p_next;
8295	}
8296
8297	fn address(&mut self) -> *mut std::ffi::c_void {
8298		std::ptr::from_mut(self).cast()
8299	}
8300}
8301
8302impl<'a, 'root> crate::Extends<vk::DescriptorSetLayoutSupport<'root>>
8303	for vk::DescriptorSetVariableDescriptorCountLayoutSupport<'a>
8304{
8305}
8306
8307impl<'a> crate::construction::sealed::ChainNode for vk::AttachmentDescription2<'a> {
8308	const S_TYPE: vk::StructureType = vk::StructureType::ATTACHMENT_DESCRIPTION_2;
8309
8310	fn s_type(&self) -> vk::StructureType {
8311		self.s_type
8312	}
8313
8314	fn p_next(&self) -> *const std::ffi::c_void {
8315		self.p_next
8316	}
8317
8318	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8319		self.p_next = p_next.cast_const();
8320	}
8321
8322	fn address(&mut self) -> *mut std::ffi::c_void {
8323		std::ptr::from_mut(self).cast()
8324	}
8325}
8326
8327impl<'a> crate::construction::sealed::ChainNode for vk::AttachmentReference2<'a> {
8328	const S_TYPE: vk::StructureType = vk::StructureType::ATTACHMENT_REFERENCE_2;
8329
8330	fn s_type(&self) -> vk::StructureType {
8331		self.s_type
8332	}
8333
8334	fn p_next(&self) -> *const std::ffi::c_void {
8335		self.p_next
8336	}
8337
8338	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8339		self.p_next = p_next.cast_const();
8340	}
8341
8342	fn address(&mut self) -> *mut std::ffi::c_void {
8343		std::ptr::from_mut(self).cast()
8344	}
8345}
8346
8347impl<'a> crate::construction::sealed::ChainNode for vk::SubpassDescription2<'a> {
8348	const S_TYPE: vk::StructureType = vk::StructureType::SUBPASS_DESCRIPTION_2;
8349
8350	fn s_type(&self) -> vk::StructureType {
8351		self.s_type
8352	}
8353
8354	fn p_next(&self) -> *const std::ffi::c_void {
8355		self.p_next
8356	}
8357
8358	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8359		self.p_next = p_next.cast_const();
8360	}
8361
8362	fn address(&mut self) -> *mut std::ffi::c_void {
8363		std::ptr::from_mut(self).cast()
8364	}
8365}
8366
8367impl<'a> crate::construction::sealed::ChainNode for vk::SubpassDependency2<'a> {
8368	const S_TYPE: vk::StructureType = vk::StructureType::SUBPASS_DEPENDENCY_2;
8369
8370	fn s_type(&self) -> vk::StructureType {
8371		self.s_type
8372	}
8373
8374	fn p_next(&self) -> *const std::ffi::c_void {
8375		self.p_next
8376	}
8377
8378	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8379		self.p_next = p_next.cast_const();
8380	}
8381
8382	fn address(&mut self) -> *mut std::ffi::c_void {
8383		std::ptr::from_mut(self).cast()
8384	}
8385}
8386
8387impl<'a> crate::construction::sealed::ChainNode for vk::RenderPassCreateInfo2<'a> {
8388	const S_TYPE: vk::StructureType = vk::StructureType::RENDER_PASS_CREATE_INFO_2;
8389
8390	fn s_type(&self) -> vk::StructureType {
8391		self.s_type
8392	}
8393
8394	fn p_next(&self) -> *const std::ffi::c_void {
8395		self.p_next
8396	}
8397
8398	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8399		self.p_next = p_next.cast_const();
8400	}
8401
8402	fn address(&mut self) -> *mut std::ffi::c_void {
8403		std::ptr::from_mut(self).cast()
8404	}
8405}
8406
8407impl<'a> crate::construction::sealed::ChainNode for vk::SubpassBeginInfo<'a> {
8408	const S_TYPE: vk::StructureType = vk::StructureType::SUBPASS_BEGIN_INFO;
8409
8410	fn s_type(&self) -> vk::StructureType {
8411		self.s_type
8412	}
8413
8414	fn p_next(&self) -> *const std::ffi::c_void {
8415		self.p_next
8416	}
8417
8418	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8419		self.p_next = p_next.cast_const();
8420	}
8421
8422	fn address(&mut self) -> *mut std::ffi::c_void {
8423		std::ptr::from_mut(self).cast()
8424	}
8425}
8426
8427impl<'a> crate::construction::sealed::ChainNode for vk::SubpassEndInfo<'a> {
8428	const S_TYPE: vk::StructureType = vk::StructureType::SUBPASS_END_INFO;
8429
8430	fn s_type(&self) -> vk::StructureType {
8431		self.s_type
8432	}
8433
8434	fn p_next(&self) -> *const std::ffi::c_void {
8435		self.p_next
8436	}
8437
8438	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8439		self.p_next = p_next.cast_const();
8440	}
8441
8442	fn address(&mut self) -> *mut std::ffi::c_void {
8443		std::ptr::from_mut(self).cast()
8444	}
8445}
8446
8447impl<'a> crate::construction::sealed::ChainNode
8448	for vk::PhysicalDeviceTimelineSemaphoreFeatures<'a>
8449{
8450	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES;
8451
8452	fn s_type(&self) -> vk::StructureType {
8453		self.s_type
8454	}
8455
8456	fn p_next(&self) -> *const std::ffi::c_void {
8457		self.p_next.cast_const()
8458	}
8459
8460	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8461		self.p_next = p_next;
8462	}
8463
8464	fn address(&mut self) -> *mut std::ffi::c_void {
8465		std::ptr::from_mut(self).cast()
8466	}
8467}
8468
8469impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
8470	for vk::PhysicalDeviceTimelineSemaphoreFeatures<'a>
8471{
8472}
8473
8474impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
8475	for vk::PhysicalDeviceTimelineSemaphoreFeatures<'a>
8476{
8477}
8478
8479impl<'a> crate::construction::sealed::ChainNode
8480	for vk::PhysicalDeviceTimelineSemaphoreProperties<'a>
8481{
8482	const S_TYPE: vk::StructureType =
8483		vk::StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES;
8484
8485	fn s_type(&self) -> vk::StructureType {
8486		self.s_type
8487	}
8488
8489	fn p_next(&self) -> *const std::ffi::c_void {
8490		self.p_next.cast_const()
8491	}
8492
8493	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8494		self.p_next = p_next;
8495	}
8496
8497	fn address(&mut self) -> *mut std::ffi::c_void {
8498		std::ptr::from_mut(self).cast()
8499	}
8500}
8501
8502impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
8503	for vk::PhysicalDeviceTimelineSemaphoreProperties<'a>
8504{
8505}
8506
8507impl<'a> crate::construction::sealed::ChainNode for vk::SemaphoreTypeCreateInfo<'a> {
8508	const S_TYPE: vk::StructureType = vk::StructureType::SEMAPHORE_TYPE_CREATE_INFO;
8509
8510	fn s_type(&self) -> vk::StructureType {
8511		self.s_type
8512	}
8513
8514	fn p_next(&self) -> *const std::ffi::c_void {
8515		self.p_next
8516	}
8517
8518	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8519		self.p_next = p_next.cast_const();
8520	}
8521
8522	fn address(&mut self) -> *mut std::ffi::c_void {
8523		std::ptr::from_mut(self).cast()
8524	}
8525}
8526
8527impl<'a, 'root> crate::Extends<vk::SemaphoreCreateInfo<'root>> for vk::SemaphoreTypeCreateInfo<'a> {}
8528
8529impl<'a, 'root> crate::Extends<vk::PhysicalDeviceExternalSemaphoreInfo<'root>>
8530	for vk::SemaphoreTypeCreateInfo<'a>
8531{
8532}
8533
8534impl<'a> crate::construction::sealed::ChainNode for vk::TimelineSemaphoreSubmitInfo<'a> {
8535	const S_TYPE: vk::StructureType = vk::StructureType::TIMELINE_SEMAPHORE_SUBMIT_INFO;
8536
8537	fn s_type(&self) -> vk::StructureType {
8538		self.s_type
8539	}
8540
8541	fn p_next(&self) -> *const std::ffi::c_void {
8542		self.p_next
8543	}
8544
8545	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8546		self.p_next = p_next.cast_const();
8547	}
8548
8549	fn address(&mut self) -> *mut std::ffi::c_void {
8550		std::ptr::from_mut(self).cast()
8551	}
8552}
8553
8554impl<'a, 'root> crate::Extends<vk::SubmitInfo<'root>> for vk::TimelineSemaphoreSubmitInfo<'a> {}
8555
8556impl<'a, 'root> crate::Extends<vk::BindSparseInfo<'root>> for vk::TimelineSemaphoreSubmitInfo<'a> {}
8557
8558impl<'a> crate::construction::sealed::ChainNode for vk::SemaphoreWaitInfo<'a> {
8559	const S_TYPE: vk::StructureType = vk::StructureType::SEMAPHORE_WAIT_INFO;
8560
8561	fn s_type(&self) -> vk::StructureType {
8562		self.s_type
8563	}
8564
8565	fn p_next(&self) -> *const std::ffi::c_void {
8566		self.p_next
8567	}
8568
8569	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8570		self.p_next = p_next.cast_const();
8571	}
8572
8573	fn address(&mut self) -> *mut std::ffi::c_void {
8574		std::ptr::from_mut(self).cast()
8575	}
8576}
8577
8578impl<'a> crate::construction::sealed::ChainNode for vk::SemaphoreSignalInfo<'a> {
8579	const S_TYPE: vk::StructureType = vk::StructureType::SEMAPHORE_SIGNAL_INFO;
8580
8581	fn s_type(&self) -> vk::StructureType {
8582		self.s_type
8583	}
8584
8585	fn p_next(&self) -> *const std::ffi::c_void {
8586		self.p_next
8587	}
8588
8589	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8590		self.p_next = p_next.cast_const();
8591	}
8592
8593	fn address(&mut self) -> *mut std::ffi::c_void {
8594		std::ptr::from_mut(self).cast()
8595	}
8596}
8597
8598impl<'a> crate::construction::sealed::ChainNode
8599	for vk::PipelineVertexInputDivisorStateCreateInfo<'a>
8600{
8601	const S_TYPE: vk::StructureType =
8602		vk::StructureType::PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO;
8603
8604	fn s_type(&self) -> vk::StructureType {
8605		self.s_type
8606	}
8607
8608	fn p_next(&self) -> *const std::ffi::c_void {
8609		self.p_next
8610	}
8611
8612	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8613		self.p_next = p_next.cast_const();
8614	}
8615
8616	fn address(&mut self) -> *mut std::ffi::c_void {
8617		std::ptr::from_mut(self).cast()
8618	}
8619}
8620
8621impl<'a, 'root> crate::Extends<vk::PipelineVertexInputStateCreateInfo<'root>>
8622	for vk::PipelineVertexInputDivisorStateCreateInfo<'a>
8623{
8624}
8625
8626impl<'a> crate::construction::sealed::ChainNode
8627	for vk::PhysicalDeviceVertexAttributeDivisorPropertiesEXT<'a>
8628{
8629	const S_TYPE: vk::StructureType =
8630		vk::StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT;
8631
8632	fn s_type(&self) -> vk::StructureType {
8633		self.s_type
8634	}
8635
8636	fn p_next(&self) -> *const std::ffi::c_void {
8637		self.p_next.cast_const()
8638	}
8639
8640	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8641		self.p_next = p_next;
8642	}
8643
8644	fn address(&mut self) -> *mut std::ffi::c_void {
8645		std::ptr::from_mut(self).cast()
8646	}
8647}
8648
8649impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
8650	for vk::PhysicalDeviceVertexAttributeDivisorPropertiesEXT<'a>
8651{
8652}
8653
8654impl<'a> crate::construction::sealed::ChainNode
8655	for vk::PhysicalDeviceVertexAttributeDivisorProperties<'a>
8656{
8657	const S_TYPE: vk::StructureType =
8658		vk::StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES;
8659
8660	fn s_type(&self) -> vk::StructureType {
8661		self.s_type
8662	}
8663
8664	fn p_next(&self) -> *const std::ffi::c_void {
8665		self.p_next.cast_const()
8666	}
8667
8668	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8669		self.p_next = p_next;
8670	}
8671
8672	fn address(&mut self) -> *mut std::ffi::c_void {
8673		std::ptr::from_mut(self).cast()
8674	}
8675}
8676
8677impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
8678	for vk::PhysicalDeviceVertexAttributeDivisorProperties<'a>
8679{
8680}
8681
8682impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDevicePCIBusInfoPropertiesEXT<'a> {
8683	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT;
8684
8685	fn s_type(&self) -> vk::StructureType {
8686		self.s_type
8687	}
8688
8689	fn p_next(&self) -> *const std::ffi::c_void {
8690		self.p_next.cast_const()
8691	}
8692
8693	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8694		self.p_next = p_next;
8695	}
8696
8697	fn address(&mut self) -> *mut std::ffi::c_void {
8698		std::ptr::from_mut(self).cast()
8699	}
8700}
8701
8702impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
8703	for vk::PhysicalDevicePCIBusInfoPropertiesEXT<'a>
8704{
8705}
8706
8707#[cfg(feature = "platform-android")]
8708impl<'a> crate::construction::sealed::ChainNode for vk::ImportAndroidHardwareBufferInfoANDROID<'a> {
8709	const S_TYPE: vk::StructureType = vk::StructureType::IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID;
8710
8711	fn s_type(&self) -> vk::StructureType {
8712		self.s_type
8713	}
8714
8715	fn p_next(&self) -> *const std::ffi::c_void {
8716		self.p_next
8717	}
8718
8719	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8720		self.p_next = p_next.cast_const();
8721	}
8722
8723	fn address(&mut self) -> *mut std::ffi::c_void {
8724		std::ptr::from_mut(self).cast()
8725	}
8726}
8727
8728#[cfg(feature = "platform-android")]
8729impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>>
8730	for vk::ImportAndroidHardwareBufferInfoANDROID<'a>
8731{
8732}
8733
8734#[cfg(feature = "platform-android")]
8735impl<'a> crate::construction::sealed::ChainNode for vk::AndroidHardwareBufferUsageANDROID<'a> {
8736	const S_TYPE: vk::StructureType = vk::StructureType::ANDROID_HARDWARE_BUFFER_USAGE_ANDROID;
8737
8738	fn s_type(&self) -> vk::StructureType {
8739		self.s_type
8740	}
8741
8742	fn p_next(&self) -> *const std::ffi::c_void {
8743		self.p_next.cast_const()
8744	}
8745
8746	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8747		self.p_next = p_next;
8748	}
8749
8750	fn address(&mut self) -> *mut std::ffi::c_void {
8751		std::ptr::from_mut(self).cast()
8752	}
8753}
8754
8755#[cfg(feature = "platform-android")]
8756impl<'a, 'root> crate::Extends<vk::ImageFormatProperties2<'root>>
8757	for vk::AndroidHardwareBufferUsageANDROID<'a>
8758{
8759}
8760
8761#[cfg(feature = "platform-android")]
8762impl<'a> crate::construction::sealed::ChainNode for vk::AndroidHardwareBufferPropertiesANDROID<'a> {
8763	const S_TYPE: vk::StructureType = vk::StructureType::ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID;
8764
8765	fn s_type(&self) -> vk::StructureType {
8766		self.s_type
8767	}
8768
8769	fn p_next(&self) -> *const std::ffi::c_void {
8770		self.p_next.cast_const()
8771	}
8772
8773	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8774		self.p_next = p_next;
8775	}
8776
8777	fn address(&mut self) -> *mut std::ffi::c_void {
8778		std::ptr::from_mut(self).cast()
8779	}
8780}
8781
8782#[cfg(feature = "platform-android")]
8783impl<'a> crate::construction::sealed::ChainNode
8784	for vk::MemoryGetAndroidHardwareBufferInfoANDROID<'a>
8785{
8786	const S_TYPE: vk::StructureType =
8787		vk::StructureType::MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID;
8788
8789	fn s_type(&self) -> vk::StructureType {
8790		self.s_type
8791	}
8792
8793	fn p_next(&self) -> *const std::ffi::c_void {
8794		self.p_next
8795	}
8796
8797	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8798		self.p_next = p_next.cast_const();
8799	}
8800
8801	fn address(&mut self) -> *mut std::ffi::c_void {
8802		std::ptr::from_mut(self).cast()
8803	}
8804}
8805
8806#[cfg(feature = "platform-android")]
8807impl<'a> crate::construction::sealed::ChainNode
8808	for vk::AndroidHardwareBufferFormatPropertiesANDROID<'a>
8809{
8810	const S_TYPE: vk::StructureType =
8811		vk::StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID;
8812
8813	fn s_type(&self) -> vk::StructureType {
8814		self.s_type
8815	}
8816
8817	fn p_next(&self) -> *const std::ffi::c_void {
8818		self.p_next.cast_const()
8819	}
8820
8821	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8822		self.p_next = p_next;
8823	}
8824
8825	fn address(&mut self) -> *mut std::ffi::c_void {
8826		std::ptr::from_mut(self).cast()
8827	}
8828}
8829
8830#[cfg(feature = "platform-android")]
8831impl<'a, 'root> crate::Extends<vk::AndroidHardwareBufferPropertiesANDROID<'root>>
8832	for vk::AndroidHardwareBufferFormatPropertiesANDROID<'a>
8833{
8834}
8835
8836impl<'a> crate::construction::sealed::ChainNode
8837	for vk::CommandBufferInheritanceConditionalRenderingInfoEXT<'a>
8838{
8839	const S_TYPE: vk::StructureType =
8840		vk::StructureType::COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT;
8841
8842	fn s_type(&self) -> vk::StructureType {
8843		self.s_type
8844	}
8845
8846	fn p_next(&self) -> *const std::ffi::c_void {
8847		self.p_next
8848	}
8849
8850	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8851		self.p_next = p_next.cast_const();
8852	}
8853
8854	fn address(&mut self) -> *mut std::ffi::c_void {
8855		std::ptr::from_mut(self).cast()
8856	}
8857}
8858
8859impl<'a, 'root> crate::Extends<vk::CommandBufferInheritanceInfo<'root>>
8860	for vk::CommandBufferInheritanceConditionalRenderingInfoEXT<'a>
8861{
8862}
8863
8864#[cfg(feature = "platform-android")]
8865impl<'a> crate::construction::sealed::ChainNode for vk::ExternalFormatANDROID<'a> {
8866	const S_TYPE: vk::StructureType = vk::StructureType::EXTERNAL_FORMAT_ANDROID;
8867
8868	fn s_type(&self) -> vk::StructureType {
8869		self.s_type
8870	}
8871
8872	fn p_next(&self) -> *const std::ffi::c_void {
8873		self.p_next.cast_const()
8874	}
8875
8876	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8877		self.p_next = p_next;
8878	}
8879
8880	fn address(&mut self) -> *mut std::ffi::c_void {
8881		std::ptr::from_mut(self).cast()
8882	}
8883}
8884
8885#[cfg(feature = "platform-android")]
8886impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>> for vk::ExternalFormatANDROID<'a> {}
8887
8888#[cfg(feature = "platform-android")]
8889impl<'a, 'root> crate::Extends<vk::SamplerYcbcrConversionCreateInfo<'root>>
8890	for vk::ExternalFormatANDROID<'a>
8891{
8892}
8893
8894#[cfg(feature = "platform-android")]
8895impl<'a, 'root> crate::Extends<vk::AttachmentDescription2<'root>>
8896	for vk::ExternalFormatANDROID<'a>
8897{
8898}
8899
8900#[cfg(feature = "platform-android")]
8901impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
8902	for vk::ExternalFormatANDROID<'a>
8903{
8904}
8905
8906#[cfg(feature = "platform-android")]
8907impl<'a, 'root> crate::Extends<vk::CommandBufferInheritanceInfo<'root>>
8908	for vk::ExternalFormatANDROID<'a>
8909{
8910}
8911
8912impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDevice8BitStorageFeatures<'a> {
8913	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES;
8914
8915	fn s_type(&self) -> vk::StructureType {
8916		self.s_type
8917	}
8918
8919	fn p_next(&self) -> *const std::ffi::c_void {
8920		self.p_next.cast_const()
8921	}
8922
8923	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8924		self.p_next = p_next;
8925	}
8926
8927	fn address(&mut self) -> *mut std::ffi::c_void {
8928		std::ptr::from_mut(self).cast()
8929	}
8930}
8931
8932impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
8933	for vk::PhysicalDevice8BitStorageFeatures<'a>
8934{
8935}
8936
8937impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
8938	for vk::PhysicalDevice8BitStorageFeatures<'a>
8939{
8940}
8941
8942impl<'a> crate::construction::sealed::ChainNode
8943	for vk::PhysicalDeviceConditionalRenderingFeaturesEXT<'a>
8944{
8945	const S_TYPE: vk::StructureType =
8946		vk::StructureType::PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT;
8947
8948	fn s_type(&self) -> vk::StructureType {
8949		self.s_type
8950	}
8951
8952	fn p_next(&self) -> *const std::ffi::c_void {
8953		self.p_next.cast_const()
8954	}
8955
8956	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8957		self.p_next = p_next;
8958	}
8959
8960	fn address(&mut self) -> *mut std::ffi::c_void {
8961		std::ptr::from_mut(self).cast()
8962	}
8963}
8964
8965impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
8966	for vk::PhysicalDeviceConditionalRenderingFeaturesEXT<'a>
8967{
8968}
8969
8970impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
8971	for vk::PhysicalDeviceConditionalRenderingFeaturesEXT<'a>
8972{
8973}
8974
8975impl<'a> crate::construction::sealed::ChainNode
8976	for vk::PhysicalDeviceVulkanMemoryModelFeatures<'a>
8977{
8978	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES;
8979
8980	fn s_type(&self) -> vk::StructureType {
8981		self.s_type
8982	}
8983
8984	fn p_next(&self) -> *const std::ffi::c_void {
8985		self.p_next.cast_const()
8986	}
8987
8988	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
8989		self.p_next = p_next;
8990	}
8991
8992	fn address(&mut self) -> *mut std::ffi::c_void {
8993		std::ptr::from_mut(self).cast()
8994	}
8995}
8996
8997impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
8998	for vk::PhysicalDeviceVulkanMemoryModelFeatures<'a>
8999{
9000}
9001
9002impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
9003	for vk::PhysicalDeviceVulkanMemoryModelFeatures<'a>
9004{
9005}
9006
9007impl<'a> crate::construction::sealed::ChainNode
9008	for vk::PhysicalDeviceShaderAtomicInt64Features<'a>
9009{
9010	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES;
9011
9012	fn s_type(&self) -> vk::StructureType {
9013		self.s_type
9014	}
9015
9016	fn p_next(&self) -> *const std::ffi::c_void {
9017		self.p_next.cast_const()
9018	}
9019
9020	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9021		self.p_next = p_next;
9022	}
9023
9024	fn address(&mut self) -> *mut std::ffi::c_void {
9025		std::ptr::from_mut(self).cast()
9026	}
9027}
9028
9029impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
9030	for vk::PhysicalDeviceShaderAtomicInt64Features<'a>
9031{
9032}
9033
9034impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
9035	for vk::PhysicalDeviceShaderAtomicInt64Features<'a>
9036{
9037}
9038
9039impl<'a> crate::construction::sealed::ChainNode
9040	for vk::PhysicalDeviceShaderAtomicFloatFeaturesEXT<'a>
9041{
9042	const S_TYPE: vk::StructureType =
9043		vk::StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT;
9044
9045	fn s_type(&self) -> vk::StructureType {
9046		self.s_type
9047	}
9048
9049	fn p_next(&self) -> *const std::ffi::c_void {
9050		self.p_next.cast_const()
9051	}
9052
9053	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9054		self.p_next = p_next;
9055	}
9056
9057	fn address(&mut self) -> *mut std::ffi::c_void {
9058		std::ptr::from_mut(self).cast()
9059	}
9060}
9061
9062impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
9063	for vk::PhysicalDeviceShaderAtomicFloatFeaturesEXT<'a>
9064{
9065}
9066
9067impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
9068	for vk::PhysicalDeviceShaderAtomicFloatFeaturesEXT<'a>
9069{
9070}
9071
9072impl<'a> crate::construction::sealed::ChainNode
9073	for vk::PhysicalDeviceShaderAtomicFloat2FeaturesEXT<'a>
9074{
9075	const S_TYPE: vk::StructureType =
9076		vk::StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT;
9077
9078	fn s_type(&self) -> vk::StructureType {
9079		self.s_type
9080	}
9081
9082	fn p_next(&self) -> *const std::ffi::c_void {
9083		self.p_next.cast_const()
9084	}
9085
9086	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9087		self.p_next = p_next;
9088	}
9089
9090	fn address(&mut self) -> *mut std::ffi::c_void {
9091		std::ptr::from_mut(self).cast()
9092	}
9093}
9094
9095impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
9096	for vk::PhysicalDeviceShaderAtomicFloat2FeaturesEXT<'a>
9097{
9098}
9099
9100impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
9101	for vk::PhysicalDeviceShaderAtomicFloat2FeaturesEXT<'a>
9102{
9103}
9104
9105impl<'a> crate::construction::sealed::ChainNode
9106	for vk::PhysicalDeviceVertexAttributeDivisorFeatures<'a>
9107{
9108	const S_TYPE: vk::StructureType =
9109		vk::StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES;
9110
9111	fn s_type(&self) -> vk::StructureType {
9112		self.s_type
9113	}
9114
9115	fn p_next(&self) -> *const std::ffi::c_void {
9116		self.p_next.cast_const()
9117	}
9118
9119	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9120		self.p_next = p_next;
9121	}
9122
9123	fn address(&mut self) -> *mut std::ffi::c_void {
9124		std::ptr::from_mut(self).cast()
9125	}
9126}
9127
9128impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
9129	for vk::PhysicalDeviceVertexAttributeDivisorFeatures<'a>
9130{
9131}
9132
9133impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
9134	for vk::PhysicalDeviceVertexAttributeDivisorFeatures<'a>
9135{
9136}
9137
9138impl<'a> crate::construction::sealed::ChainNode for vk::QueueFamilyCheckpointPropertiesNV<'a> {
9139	const S_TYPE: vk::StructureType = vk::StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV;
9140
9141	fn s_type(&self) -> vk::StructureType {
9142		self.s_type
9143	}
9144
9145	fn p_next(&self) -> *const std::ffi::c_void {
9146		self.p_next.cast_const()
9147	}
9148
9149	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9150		self.p_next = p_next;
9151	}
9152
9153	fn address(&mut self) -> *mut std::ffi::c_void {
9154		std::ptr::from_mut(self).cast()
9155	}
9156}
9157
9158impl<'a, 'root> crate::Extends<vk::QueueFamilyProperties2<'root>>
9159	for vk::QueueFamilyCheckpointPropertiesNV<'a>
9160{
9161}
9162
9163impl<'a> crate::construction::sealed::ChainNode for vk::CheckpointDataNV<'a> {
9164	const S_TYPE: vk::StructureType = vk::StructureType::CHECKPOINT_DATA_NV;
9165
9166	fn s_type(&self) -> vk::StructureType {
9167		self.s_type
9168	}
9169
9170	fn p_next(&self) -> *const std::ffi::c_void {
9171		self.p_next.cast_const()
9172	}
9173
9174	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9175		self.p_next = p_next;
9176	}
9177
9178	fn address(&mut self) -> *mut std::ffi::c_void {
9179		std::ptr::from_mut(self).cast()
9180	}
9181}
9182
9183impl<'a> crate::construction::sealed::ChainNode
9184	for vk::PhysicalDeviceDepthStencilResolveProperties<'a>
9185{
9186	const S_TYPE: vk::StructureType =
9187		vk::StructureType::PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES;
9188
9189	fn s_type(&self) -> vk::StructureType {
9190		self.s_type
9191	}
9192
9193	fn p_next(&self) -> *const std::ffi::c_void {
9194		self.p_next.cast_const()
9195	}
9196
9197	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9198		self.p_next = p_next;
9199	}
9200
9201	fn address(&mut self) -> *mut std::ffi::c_void {
9202		std::ptr::from_mut(self).cast()
9203	}
9204}
9205
9206impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
9207	for vk::PhysicalDeviceDepthStencilResolveProperties<'a>
9208{
9209}
9210
9211impl<'a> crate::construction::sealed::ChainNode for vk::SubpassDescriptionDepthStencilResolve<'a> {
9212	const S_TYPE: vk::StructureType = vk::StructureType::SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE;
9213
9214	fn s_type(&self) -> vk::StructureType {
9215		self.s_type
9216	}
9217
9218	fn p_next(&self) -> *const std::ffi::c_void {
9219		self.p_next
9220	}
9221
9222	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9223		self.p_next = p_next.cast_const();
9224	}
9225
9226	fn address(&mut self) -> *mut std::ffi::c_void {
9227		std::ptr::from_mut(self).cast()
9228	}
9229}
9230
9231impl<'a, 'root> crate::Extends<vk::SubpassDescription2<'root>>
9232	for vk::SubpassDescriptionDepthStencilResolve<'a>
9233{
9234}
9235
9236impl<'a> crate::construction::sealed::ChainNode for vk::ImageViewASTCDecodeModeEXT<'a> {
9237	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_VIEW_ASTC_DECODE_MODE_EXT;
9238
9239	fn s_type(&self) -> vk::StructureType {
9240		self.s_type
9241	}
9242
9243	fn p_next(&self) -> *const std::ffi::c_void {
9244		self.p_next
9245	}
9246
9247	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9248		self.p_next = p_next.cast_const();
9249	}
9250
9251	fn address(&mut self) -> *mut std::ffi::c_void {
9252		std::ptr::from_mut(self).cast()
9253	}
9254}
9255
9256impl<'a, 'root> crate::Extends<vk::ImageViewCreateInfo<'root>>
9257	for vk::ImageViewASTCDecodeModeEXT<'a>
9258{
9259}
9260
9261impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceASTCDecodeFeaturesEXT<'a> {
9262	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT;
9263
9264	fn s_type(&self) -> vk::StructureType {
9265		self.s_type
9266	}
9267
9268	fn p_next(&self) -> *const std::ffi::c_void {
9269		self.p_next.cast_const()
9270	}
9271
9272	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9273		self.p_next = p_next;
9274	}
9275
9276	fn address(&mut self) -> *mut std::ffi::c_void {
9277		std::ptr::from_mut(self).cast()
9278	}
9279}
9280
9281impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
9282	for vk::PhysicalDeviceASTCDecodeFeaturesEXT<'a>
9283{
9284}
9285
9286impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
9287	for vk::PhysicalDeviceASTCDecodeFeaturesEXT<'a>
9288{
9289}
9290
9291impl<'a> crate::construction::sealed::ChainNode
9292	for vk::PhysicalDeviceTransformFeedbackFeaturesEXT<'a>
9293{
9294	const S_TYPE: vk::StructureType =
9295		vk::StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT;
9296
9297	fn s_type(&self) -> vk::StructureType {
9298		self.s_type
9299	}
9300
9301	fn p_next(&self) -> *const std::ffi::c_void {
9302		self.p_next.cast_const()
9303	}
9304
9305	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9306		self.p_next = p_next;
9307	}
9308
9309	fn address(&mut self) -> *mut std::ffi::c_void {
9310		std::ptr::from_mut(self).cast()
9311	}
9312}
9313
9314impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
9315	for vk::PhysicalDeviceTransformFeedbackFeaturesEXT<'a>
9316{
9317}
9318
9319impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
9320	for vk::PhysicalDeviceTransformFeedbackFeaturesEXT<'a>
9321{
9322}
9323
9324impl<'a> crate::construction::sealed::ChainNode
9325	for vk::PhysicalDeviceTransformFeedbackPropertiesEXT<'a>
9326{
9327	const S_TYPE: vk::StructureType =
9328		vk::StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT;
9329
9330	fn s_type(&self) -> vk::StructureType {
9331		self.s_type
9332	}
9333
9334	fn p_next(&self) -> *const std::ffi::c_void {
9335		self.p_next.cast_const()
9336	}
9337
9338	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9339		self.p_next = p_next;
9340	}
9341
9342	fn address(&mut self) -> *mut std::ffi::c_void {
9343		std::ptr::from_mut(self).cast()
9344	}
9345}
9346
9347impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
9348	for vk::PhysicalDeviceTransformFeedbackPropertiesEXT<'a>
9349{
9350}
9351
9352impl<'a> crate::construction::sealed::ChainNode
9353	for vk::PipelineRasterizationStateStreamCreateInfoEXT<'a>
9354{
9355	const S_TYPE: vk::StructureType =
9356		vk::StructureType::PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT;
9357
9358	fn s_type(&self) -> vk::StructureType {
9359		self.s_type
9360	}
9361
9362	fn p_next(&self) -> *const std::ffi::c_void {
9363		self.p_next
9364	}
9365
9366	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9367		self.p_next = p_next.cast_const();
9368	}
9369
9370	fn address(&mut self) -> *mut std::ffi::c_void {
9371		std::ptr::from_mut(self).cast()
9372	}
9373}
9374
9375impl<'a, 'root> crate::Extends<vk::PipelineRasterizationStateCreateInfo<'root>>
9376	for vk::PipelineRasterizationStateStreamCreateInfoEXT<'a>
9377{
9378}
9379
9380impl<'a> crate::construction::sealed::ChainNode
9381	for vk::PhysicalDeviceRepresentativeFragmentTestFeaturesNV<'a>
9382{
9383	const S_TYPE: vk::StructureType =
9384		vk::StructureType::PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV;
9385
9386	fn s_type(&self) -> vk::StructureType {
9387		self.s_type
9388	}
9389
9390	fn p_next(&self) -> *const std::ffi::c_void {
9391		self.p_next.cast_const()
9392	}
9393
9394	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9395		self.p_next = p_next;
9396	}
9397
9398	fn address(&mut self) -> *mut std::ffi::c_void {
9399		std::ptr::from_mut(self).cast()
9400	}
9401}
9402
9403impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
9404	for vk::PhysicalDeviceRepresentativeFragmentTestFeaturesNV<'a>
9405{
9406}
9407
9408impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
9409	for vk::PhysicalDeviceRepresentativeFragmentTestFeaturesNV<'a>
9410{
9411}
9412
9413impl<'a> crate::construction::sealed::ChainNode
9414	for vk::PipelineRepresentativeFragmentTestStateCreateInfoNV<'a>
9415{
9416	const S_TYPE: vk::StructureType =
9417		vk::StructureType::PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV;
9418
9419	fn s_type(&self) -> vk::StructureType {
9420		self.s_type
9421	}
9422
9423	fn p_next(&self) -> *const std::ffi::c_void {
9424		self.p_next
9425	}
9426
9427	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9428		self.p_next = p_next.cast_const();
9429	}
9430
9431	fn address(&mut self) -> *mut std::ffi::c_void {
9432		std::ptr::from_mut(self).cast()
9433	}
9434}
9435
9436impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
9437	for vk::PipelineRepresentativeFragmentTestStateCreateInfoNV<'a>
9438{
9439}
9440
9441impl<'a> crate::construction::sealed::ChainNode
9442	for vk::PhysicalDeviceExclusiveScissorFeaturesNV<'a>
9443{
9444	const S_TYPE: vk::StructureType =
9445		vk::StructureType::PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV;
9446
9447	fn s_type(&self) -> vk::StructureType {
9448		self.s_type
9449	}
9450
9451	fn p_next(&self) -> *const std::ffi::c_void {
9452		self.p_next.cast_const()
9453	}
9454
9455	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9456		self.p_next = p_next;
9457	}
9458
9459	fn address(&mut self) -> *mut std::ffi::c_void {
9460		std::ptr::from_mut(self).cast()
9461	}
9462}
9463
9464impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
9465	for vk::PhysicalDeviceExclusiveScissorFeaturesNV<'a>
9466{
9467}
9468
9469impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
9470	for vk::PhysicalDeviceExclusiveScissorFeaturesNV<'a>
9471{
9472}
9473
9474impl<'a> crate::construction::sealed::ChainNode
9475	for vk::PipelineViewportExclusiveScissorStateCreateInfoNV<'a>
9476{
9477	const S_TYPE: vk::StructureType =
9478		vk::StructureType::PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV;
9479
9480	fn s_type(&self) -> vk::StructureType {
9481		self.s_type
9482	}
9483
9484	fn p_next(&self) -> *const std::ffi::c_void {
9485		self.p_next
9486	}
9487
9488	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9489		self.p_next = p_next.cast_const();
9490	}
9491
9492	fn address(&mut self) -> *mut std::ffi::c_void {
9493		std::ptr::from_mut(self).cast()
9494	}
9495}
9496
9497impl<'a, 'root> crate::Extends<vk::PipelineViewportStateCreateInfo<'root>>
9498	for vk::PipelineViewportExclusiveScissorStateCreateInfoNV<'a>
9499{
9500}
9501
9502impl<'a> crate::construction::sealed::ChainNode
9503	for vk::PhysicalDeviceCornerSampledImageFeaturesNV<'a>
9504{
9505	const S_TYPE: vk::StructureType =
9506		vk::StructureType::PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV;
9507
9508	fn s_type(&self) -> vk::StructureType {
9509		self.s_type
9510	}
9511
9512	fn p_next(&self) -> *const std::ffi::c_void {
9513		self.p_next.cast_const()
9514	}
9515
9516	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9517		self.p_next = p_next;
9518	}
9519
9520	fn address(&mut self) -> *mut std::ffi::c_void {
9521		std::ptr::from_mut(self).cast()
9522	}
9523}
9524
9525impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
9526	for vk::PhysicalDeviceCornerSampledImageFeaturesNV<'a>
9527{
9528}
9529
9530impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
9531	for vk::PhysicalDeviceCornerSampledImageFeaturesNV<'a>
9532{
9533}
9534
9535impl<'a> crate::construction::sealed::ChainNode
9536	for vk::PhysicalDeviceComputeShaderDerivativesFeaturesKHR<'a>
9537{
9538	const S_TYPE: vk::StructureType =
9539		vk::StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR;
9540
9541	fn s_type(&self) -> vk::StructureType {
9542		self.s_type
9543	}
9544
9545	fn p_next(&self) -> *const std::ffi::c_void {
9546		self.p_next.cast_const()
9547	}
9548
9549	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9550		self.p_next = p_next;
9551	}
9552
9553	fn address(&mut self) -> *mut std::ffi::c_void {
9554		std::ptr::from_mut(self).cast()
9555	}
9556}
9557
9558impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
9559	for vk::PhysicalDeviceComputeShaderDerivativesFeaturesKHR<'a>
9560{
9561}
9562
9563impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
9564	for vk::PhysicalDeviceComputeShaderDerivativesFeaturesKHR<'a>
9565{
9566}
9567
9568impl<'a> crate::construction::sealed::ChainNode
9569	for vk::PhysicalDeviceComputeShaderDerivativesPropertiesKHR<'a>
9570{
9571	const S_TYPE: vk::StructureType =
9572		vk::StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR;
9573
9574	fn s_type(&self) -> vk::StructureType {
9575		self.s_type
9576	}
9577
9578	fn p_next(&self) -> *const std::ffi::c_void {
9579		self.p_next.cast_const()
9580	}
9581
9582	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9583		self.p_next = p_next;
9584	}
9585
9586	fn address(&mut self) -> *mut std::ffi::c_void {
9587		std::ptr::from_mut(self).cast()
9588	}
9589}
9590
9591impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
9592	for vk::PhysicalDeviceComputeShaderDerivativesPropertiesKHR<'a>
9593{
9594}
9595
9596impl<'a> crate::construction::sealed::ChainNode
9597	for vk::PhysicalDeviceShaderImageFootprintFeaturesNV<'a>
9598{
9599	const S_TYPE: vk::StructureType =
9600		vk::StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV;
9601
9602	fn s_type(&self) -> vk::StructureType {
9603		self.s_type
9604	}
9605
9606	fn p_next(&self) -> *const std::ffi::c_void {
9607		self.p_next.cast_const()
9608	}
9609
9610	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9611		self.p_next = p_next;
9612	}
9613
9614	fn address(&mut self) -> *mut std::ffi::c_void {
9615		std::ptr::from_mut(self).cast()
9616	}
9617}
9618
9619impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
9620	for vk::PhysicalDeviceShaderImageFootprintFeaturesNV<'a>
9621{
9622}
9623
9624impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
9625	for vk::PhysicalDeviceShaderImageFootprintFeaturesNV<'a>
9626{
9627}
9628
9629impl<'a> crate::construction::sealed::ChainNode
9630	for vk::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV<'a>
9631{
9632	const S_TYPE: vk::StructureType =
9633		vk::StructureType::PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV;
9634
9635	fn s_type(&self) -> vk::StructureType {
9636		self.s_type
9637	}
9638
9639	fn p_next(&self) -> *const std::ffi::c_void {
9640		self.p_next.cast_const()
9641	}
9642
9643	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9644		self.p_next = p_next;
9645	}
9646
9647	fn address(&mut self) -> *mut std::ffi::c_void {
9648		std::ptr::from_mut(self).cast()
9649	}
9650}
9651
9652impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
9653	for vk::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV<'a>
9654{
9655}
9656
9657impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
9658	for vk::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV<'a>
9659{
9660}
9661
9662impl<'a> crate::construction::sealed::ChainNode
9663	for vk::PhysicalDeviceCopyMemoryIndirectFeaturesKHR<'a>
9664{
9665	const S_TYPE: vk::StructureType =
9666		vk::StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR;
9667
9668	fn s_type(&self) -> vk::StructureType {
9669		self.s_type
9670	}
9671
9672	fn p_next(&self) -> *const std::ffi::c_void {
9673		self.p_next.cast_const()
9674	}
9675
9676	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9677		self.p_next = p_next;
9678	}
9679
9680	fn address(&mut self) -> *mut std::ffi::c_void {
9681		std::ptr::from_mut(self).cast()
9682	}
9683}
9684
9685impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
9686	for vk::PhysicalDeviceCopyMemoryIndirectFeaturesKHR<'a>
9687{
9688}
9689
9690impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
9691	for vk::PhysicalDeviceCopyMemoryIndirectFeaturesKHR<'a>
9692{
9693}
9694
9695impl<'a> crate::construction::sealed::ChainNode
9696	for vk::PhysicalDeviceCopyMemoryIndirectFeaturesNV<'a>
9697{
9698	const S_TYPE: vk::StructureType =
9699		vk::StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV;
9700
9701	fn s_type(&self) -> vk::StructureType {
9702		self.s_type
9703	}
9704
9705	fn p_next(&self) -> *const std::ffi::c_void {
9706		self.p_next.cast_const()
9707	}
9708
9709	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9710		self.p_next = p_next;
9711	}
9712
9713	fn address(&mut self) -> *mut std::ffi::c_void {
9714		std::ptr::from_mut(self).cast()
9715	}
9716}
9717
9718impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
9719	for vk::PhysicalDeviceCopyMemoryIndirectFeaturesNV<'a>
9720{
9721}
9722
9723impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
9724	for vk::PhysicalDeviceCopyMemoryIndirectFeaturesNV<'a>
9725{
9726}
9727
9728impl<'a> crate::construction::sealed::ChainNode
9729	for vk::PhysicalDeviceCopyMemoryIndirectPropertiesKHR<'a>
9730{
9731	const S_TYPE: vk::StructureType =
9732		vk::StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR;
9733
9734	fn s_type(&self) -> vk::StructureType {
9735		self.s_type
9736	}
9737
9738	fn p_next(&self) -> *const std::ffi::c_void {
9739		self.p_next.cast_const()
9740	}
9741
9742	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9743		self.p_next = p_next;
9744	}
9745
9746	fn address(&mut self) -> *mut std::ffi::c_void {
9747		std::ptr::from_mut(self).cast()
9748	}
9749}
9750
9751impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
9752	for vk::PhysicalDeviceCopyMemoryIndirectPropertiesKHR<'a>
9753{
9754}
9755
9756impl<'a> crate::construction::sealed::ChainNode
9757	for vk::PhysicalDeviceMemoryDecompressionFeaturesEXT<'a>
9758{
9759	const S_TYPE: vk::StructureType =
9760		vk::StructureType::PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT;
9761
9762	fn s_type(&self) -> vk::StructureType {
9763		self.s_type
9764	}
9765
9766	fn p_next(&self) -> *const std::ffi::c_void {
9767		self.p_next.cast_const()
9768	}
9769
9770	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9771		self.p_next = p_next;
9772	}
9773
9774	fn address(&mut self) -> *mut std::ffi::c_void {
9775		std::ptr::from_mut(self).cast()
9776	}
9777}
9778
9779impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
9780	for vk::PhysicalDeviceMemoryDecompressionFeaturesEXT<'a>
9781{
9782}
9783
9784impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
9785	for vk::PhysicalDeviceMemoryDecompressionFeaturesEXT<'a>
9786{
9787}
9788
9789impl<'a> crate::construction::sealed::ChainNode
9790	for vk::PhysicalDeviceMemoryDecompressionPropertiesEXT<'a>
9791{
9792	const S_TYPE: vk::StructureType =
9793		vk::StructureType::PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT;
9794
9795	fn s_type(&self) -> vk::StructureType {
9796		self.s_type
9797	}
9798
9799	fn p_next(&self) -> *const std::ffi::c_void {
9800		self.p_next.cast_const()
9801	}
9802
9803	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9804		self.p_next = p_next;
9805	}
9806
9807	fn address(&mut self) -> *mut std::ffi::c_void {
9808		std::ptr::from_mut(self).cast()
9809	}
9810}
9811
9812impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
9813	for vk::PhysicalDeviceMemoryDecompressionPropertiesEXT<'a>
9814{
9815}
9816
9817impl<'a> crate::construction::sealed::ChainNode
9818	for vk::PipelineViewportShadingRateImageStateCreateInfoNV<'a>
9819{
9820	const S_TYPE: vk::StructureType =
9821		vk::StructureType::PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV;
9822
9823	fn s_type(&self) -> vk::StructureType {
9824		self.s_type
9825	}
9826
9827	fn p_next(&self) -> *const std::ffi::c_void {
9828		self.p_next
9829	}
9830
9831	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9832		self.p_next = p_next.cast_const();
9833	}
9834
9835	fn address(&mut self) -> *mut std::ffi::c_void {
9836		std::ptr::from_mut(self).cast()
9837	}
9838}
9839
9840impl<'a, 'root> crate::Extends<vk::PipelineViewportStateCreateInfo<'root>>
9841	for vk::PipelineViewportShadingRateImageStateCreateInfoNV<'a>
9842{
9843}
9844
9845impl<'a> crate::construction::sealed::ChainNode
9846	for vk::PhysicalDeviceShadingRateImageFeaturesNV<'a>
9847{
9848	const S_TYPE: vk::StructureType =
9849		vk::StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV;
9850
9851	fn s_type(&self) -> vk::StructureType {
9852		self.s_type
9853	}
9854
9855	fn p_next(&self) -> *const std::ffi::c_void {
9856		self.p_next.cast_const()
9857	}
9858
9859	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9860		self.p_next = p_next;
9861	}
9862
9863	fn address(&mut self) -> *mut std::ffi::c_void {
9864		std::ptr::from_mut(self).cast()
9865	}
9866}
9867
9868impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
9869	for vk::PhysicalDeviceShadingRateImageFeaturesNV<'a>
9870{
9871}
9872
9873impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
9874	for vk::PhysicalDeviceShadingRateImageFeaturesNV<'a>
9875{
9876}
9877
9878impl<'a> crate::construction::sealed::ChainNode
9879	for vk::PhysicalDeviceShadingRateImagePropertiesNV<'a>
9880{
9881	const S_TYPE: vk::StructureType =
9882		vk::StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV;
9883
9884	fn s_type(&self) -> vk::StructureType {
9885		self.s_type
9886	}
9887
9888	fn p_next(&self) -> *const std::ffi::c_void {
9889		self.p_next.cast_const()
9890	}
9891
9892	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9893		self.p_next = p_next;
9894	}
9895
9896	fn address(&mut self) -> *mut std::ffi::c_void {
9897		std::ptr::from_mut(self).cast()
9898	}
9899}
9900
9901impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
9902	for vk::PhysicalDeviceShadingRateImagePropertiesNV<'a>
9903{
9904}
9905
9906impl<'a> crate::construction::sealed::ChainNode
9907	for vk::PhysicalDeviceInvocationMaskFeaturesHUAWEI<'a>
9908{
9909	const S_TYPE: vk::StructureType =
9910		vk::StructureType::PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI;
9911
9912	fn s_type(&self) -> vk::StructureType {
9913		self.s_type
9914	}
9915
9916	fn p_next(&self) -> *const std::ffi::c_void {
9917		self.p_next.cast_const()
9918	}
9919
9920	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9921		self.p_next = p_next;
9922	}
9923
9924	fn address(&mut self) -> *mut std::ffi::c_void {
9925		std::ptr::from_mut(self).cast()
9926	}
9927}
9928
9929impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
9930	for vk::PhysicalDeviceInvocationMaskFeaturesHUAWEI<'a>
9931{
9932}
9933
9934impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
9935	for vk::PhysicalDeviceInvocationMaskFeaturesHUAWEI<'a>
9936{
9937}
9938
9939impl<'a> crate::construction::sealed::ChainNode
9940	for vk::PipelineViewportCoarseSampleOrderStateCreateInfoNV<'a>
9941{
9942	const S_TYPE: vk::StructureType =
9943		vk::StructureType::PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV;
9944
9945	fn s_type(&self) -> vk::StructureType {
9946		self.s_type
9947	}
9948
9949	fn p_next(&self) -> *const std::ffi::c_void {
9950		self.p_next
9951	}
9952
9953	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9954		self.p_next = p_next.cast_const();
9955	}
9956
9957	fn address(&mut self) -> *mut std::ffi::c_void {
9958		std::ptr::from_mut(self).cast()
9959	}
9960}
9961
9962impl<'a, 'root> crate::Extends<vk::PipelineViewportStateCreateInfo<'root>>
9963	for vk::PipelineViewportCoarseSampleOrderStateCreateInfoNV<'a>
9964{
9965}
9966
9967impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceMeshShaderFeaturesNV<'a> {
9968	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV;
9969
9970	fn s_type(&self) -> vk::StructureType {
9971		self.s_type
9972	}
9973
9974	fn p_next(&self) -> *const std::ffi::c_void {
9975		self.p_next.cast_const()
9976	}
9977
9978	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
9979		self.p_next = p_next;
9980	}
9981
9982	fn address(&mut self) -> *mut std::ffi::c_void {
9983		std::ptr::from_mut(self).cast()
9984	}
9985}
9986
9987impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
9988	for vk::PhysicalDeviceMeshShaderFeaturesNV<'a>
9989{
9990}
9991
9992impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
9993	for vk::PhysicalDeviceMeshShaderFeaturesNV<'a>
9994{
9995}
9996
9997impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceMeshShaderPropertiesNV<'a> {
9998	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV;
9999
10000	fn s_type(&self) -> vk::StructureType {
10001		self.s_type
10002	}
10003
10004	fn p_next(&self) -> *const std::ffi::c_void {
10005		self.p_next.cast_const()
10006	}
10007
10008	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10009		self.p_next = p_next;
10010	}
10011
10012	fn address(&mut self) -> *mut std::ffi::c_void {
10013		std::ptr::from_mut(self).cast()
10014	}
10015}
10016
10017impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
10018	for vk::PhysicalDeviceMeshShaderPropertiesNV<'a>
10019{
10020}
10021
10022impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceMeshShaderFeaturesEXT<'a> {
10023	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT;
10024
10025	fn s_type(&self) -> vk::StructureType {
10026		self.s_type
10027	}
10028
10029	fn p_next(&self) -> *const std::ffi::c_void {
10030		self.p_next.cast_const()
10031	}
10032
10033	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10034		self.p_next = p_next;
10035	}
10036
10037	fn address(&mut self) -> *mut std::ffi::c_void {
10038		std::ptr::from_mut(self).cast()
10039	}
10040}
10041
10042impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
10043	for vk::PhysicalDeviceMeshShaderFeaturesEXT<'a>
10044{
10045}
10046
10047impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
10048	for vk::PhysicalDeviceMeshShaderFeaturesEXT<'a>
10049{
10050}
10051
10052impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceMeshShaderPropertiesEXT<'a> {
10053	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT;
10054
10055	fn s_type(&self) -> vk::StructureType {
10056		self.s_type
10057	}
10058
10059	fn p_next(&self) -> *const std::ffi::c_void {
10060		self.p_next.cast_const()
10061	}
10062
10063	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10064		self.p_next = p_next;
10065	}
10066
10067	fn address(&mut self) -> *mut std::ffi::c_void {
10068		std::ptr::from_mut(self).cast()
10069	}
10070}
10071
10072impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
10073	for vk::PhysicalDeviceMeshShaderPropertiesEXT<'a>
10074{
10075}
10076
10077impl<'a> crate::construction::sealed::ChainNode for vk::RayTracingShaderGroupCreateInfoNV<'a> {
10078	const S_TYPE: vk::StructureType = vk::StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV;
10079
10080	fn s_type(&self) -> vk::StructureType {
10081		self.s_type
10082	}
10083
10084	fn p_next(&self) -> *const std::ffi::c_void {
10085		self.p_next
10086	}
10087
10088	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10089		self.p_next = p_next.cast_const();
10090	}
10091
10092	fn address(&mut self) -> *mut std::ffi::c_void {
10093		std::ptr::from_mut(self).cast()
10094	}
10095}
10096
10097impl<'a> crate::construction::sealed::ChainNode for vk::RayTracingShaderGroupCreateInfoKHR<'a> {
10098	const S_TYPE: vk::StructureType = vk::StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR;
10099
10100	fn s_type(&self) -> vk::StructureType {
10101		self.s_type
10102	}
10103
10104	fn p_next(&self) -> *const std::ffi::c_void {
10105		self.p_next
10106	}
10107
10108	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10109		self.p_next = p_next.cast_const();
10110	}
10111
10112	fn address(&mut self) -> *mut std::ffi::c_void {
10113		std::ptr::from_mut(self).cast()
10114	}
10115}
10116
10117impl<'a> crate::construction::sealed::ChainNode for vk::RayTracingPipelineCreateInfoNV<'a> {
10118	const S_TYPE: vk::StructureType = vk::StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_NV;
10119
10120	fn s_type(&self) -> vk::StructureType {
10121		self.s_type
10122	}
10123
10124	fn p_next(&self) -> *const std::ffi::c_void {
10125		self.p_next
10126	}
10127
10128	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10129		self.p_next = p_next.cast_const();
10130	}
10131
10132	fn address(&mut self) -> *mut std::ffi::c_void {
10133		std::ptr::from_mut(self).cast()
10134	}
10135}
10136
10137impl<'a> crate::construction::sealed::ChainNode for vk::RayTracingPipelineCreateInfoKHR<'a> {
10138	const S_TYPE: vk::StructureType = vk::StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_KHR;
10139
10140	fn s_type(&self) -> vk::StructureType {
10141		self.s_type
10142	}
10143
10144	fn p_next(&self) -> *const std::ffi::c_void {
10145		self.p_next
10146	}
10147
10148	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10149		self.p_next = p_next.cast_const();
10150	}
10151
10152	fn address(&mut self) -> *mut std::ffi::c_void {
10153		std::ptr::from_mut(self).cast()
10154	}
10155}
10156
10157impl<'a, 'root> crate::Extends<vk::PipelineCreateInfoKHR<'root>>
10158	for vk::RayTracingPipelineCreateInfoKHR<'a>
10159{
10160}
10161
10162impl<'a> crate::construction::sealed::ChainNode for vk::GeometryTrianglesNV<'a> {
10163	const S_TYPE: vk::StructureType = vk::StructureType::GEOMETRY_TRIANGLES_NV;
10164
10165	fn s_type(&self) -> vk::StructureType {
10166		self.s_type
10167	}
10168
10169	fn p_next(&self) -> *const std::ffi::c_void {
10170		self.p_next
10171	}
10172
10173	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10174		self.p_next = p_next.cast_const();
10175	}
10176
10177	fn address(&mut self) -> *mut std::ffi::c_void {
10178		std::ptr::from_mut(self).cast()
10179	}
10180}
10181
10182impl<'a> crate::construction::sealed::ChainNode for vk::GeometryAABBNV<'a> {
10183	const S_TYPE: vk::StructureType = vk::StructureType::GEOMETRY_AABB_NV;
10184
10185	fn s_type(&self) -> vk::StructureType {
10186		self.s_type
10187	}
10188
10189	fn p_next(&self) -> *const std::ffi::c_void {
10190		self.p_next
10191	}
10192
10193	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10194		self.p_next = p_next.cast_const();
10195	}
10196
10197	fn address(&mut self) -> *mut std::ffi::c_void {
10198		std::ptr::from_mut(self).cast()
10199	}
10200}
10201
10202impl<'a> crate::construction::sealed::ChainNode for vk::GeometryNV<'a> {
10203	const S_TYPE: vk::StructureType = vk::StructureType::GEOMETRY_NV;
10204
10205	fn s_type(&self) -> vk::StructureType {
10206		self.s_type
10207	}
10208
10209	fn p_next(&self) -> *const std::ffi::c_void {
10210		self.p_next
10211	}
10212
10213	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10214		self.p_next = p_next.cast_const();
10215	}
10216
10217	fn address(&mut self) -> *mut std::ffi::c_void {
10218		std::ptr::from_mut(self).cast()
10219	}
10220}
10221
10222impl<'a> crate::construction::sealed::ChainNode for vk::AccelerationStructureInfoNV<'a> {
10223	const S_TYPE: vk::StructureType = vk::StructureType::ACCELERATION_STRUCTURE_INFO_NV;
10224
10225	fn s_type(&self) -> vk::StructureType {
10226		self.s_type
10227	}
10228
10229	fn p_next(&self) -> *const std::ffi::c_void {
10230		self.p_next
10231	}
10232
10233	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10234		self.p_next = p_next.cast_const();
10235	}
10236
10237	fn address(&mut self) -> *mut std::ffi::c_void {
10238		std::ptr::from_mut(self).cast()
10239	}
10240}
10241
10242impl<'a> crate::construction::sealed::ChainNode for vk::AccelerationStructureCreateInfoNV<'a> {
10243	const S_TYPE: vk::StructureType = vk::StructureType::ACCELERATION_STRUCTURE_CREATE_INFO_NV;
10244
10245	fn s_type(&self) -> vk::StructureType {
10246		self.s_type
10247	}
10248
10249	fn p_next(&self) -> *const std::ffi::c_void {
10250		self.p_next
10251	}
10252
10253	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10254		self.p_next = p_next.cast_const();
10255	}
10256
10257	fn address(&mut self) -> *mut std::ffi::c_void {
10258		std::ptr::from_mut(self).cast()
10259	}
10260}
10261
10262impl<'a> crate::construction::sealed::ChainNode for vk::BindAccelerationStructureMemoryInfoNV<'a> {
10263	const S_TYPE: vk::StructureType = vk::StructureType::BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV;
10264
10265	fn s_type(&self) -> vk::StructureType {
10266		self.s_type
10267	}
10268
10269	fn p_next(&self) -> *const std::ffi::c_void {
10270		self.p_next
10271	}
10272
10273	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10274		self.p_next = p_next.cast_const();
10275	}
10276
10277	fn address(&mut self) -> *mut std::ffi::c_void {
10278		std::ptr::from_mut(self).cast()
10279	}
10280}
10281
10282impl<'a> crate::construction::sealed::ChainNode
10283	for vk::WriteDescriptorSetAccelerationStructureKHR<'a>
10284{
10285	const S_TYPE: vk::StructureType =
10286		vk::StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR;
10287
10288	fn s_type(&self) -> vk::StructureType {
10289		self.s_type
10290	}
10291
10292	fn p_next(&self) -> *const std::ffi::c_void {
10293		self.p_next
10294	}
10295
10296	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10297		self.p_next = p_next.cast_const();
10298	}
10299
10300	fn address(&mut self) -> *mut std::ffi::c_void {
10301		std::ptr::from_mut(self).cast()
10302	}
10303}
10304
10305impl<'a, 'root> crate::Extends<vk::WriteDescriptorSet<'root>>
10306	for vk::WriteDescriptorSetAccelerationStructureKHR<'a>
10307{
10308}
10309
10310impl<'a> crate::construction::sealed::ChainNode
10311	for vk::WriteDescriptorSetAccelerationStructureNV<'a>
10312{
10313	const S_TYPE: vk::StructureType =
10314		vk::StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV;
10315
10316	fn s_type(&self) -> vk::StructureType {
10317		self.s_type
10318	}
10319
10320	fn p_next(&self) -> *const std::ffi::c_void {
10321		self.p_next
10322	}
10323
10324	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10325		self.p_next = p_next.cast_const();
10326	}
10327
10328	fn address(&mut self) -> *mut std::ffi::c_void {
10329		std::ptr::from_mut(self).cast()
10330	}
10331}
10332
10333impl<'a, 'root> crate::Extends<vk::WriteDescriptorSet<'root>>
10334	for vk::WriteDescriptorSetAccelerationStructureNV<'a>
10335{
10336}
10337
10338impl<'a> crate::construction::sealed::ChainNode
10339	for vk::AccelerationStructureMemoryRequirementsInfoNV<'a>
10340{
10341	const S_TYPE: vk::StructureType =
10342		vk::StructureType::ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV;
10343
10344	fn s_type(&self) -> vk::StructureType {
10345		self.s_type
10346	}
10347
10348	fn p_next(&self) -> *const std::ffi::c_void {
10349		self.p_next
10350	}
10351
10352	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10353		self.p_next = p_next.cast_const();
10354	}
10355
10356	fn address(&mut self) -> *mut std::ffi::c_void {
10357		std::ptr::from_mut(self).cast()
10358	}
10359}
10360
10361impl<'a> crate::construction::sealed::ChainNode
10362	for vk::PhysicalDeviceAccelerationStructureFeaturesKHR<'a>
10363{
10364	const S_TYPE: vk::StructureType =
10365		vk::StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR;
10366
10367	fn s_type(&self) -> vk::StructureType {
10368		self.s_type
10369	}
10370
10371	fn p_next(&self) -> *const std::ffi::c_void {
10372		self.p_next.cast_const()
10373	}
10374
10375	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10376		self.p_next = p_next;
10377	}
10378
10379	fn address(&mut self) -> *mut std::ffi::c_void {
10380		std::ptr::from_mut(self).cast()
10381	}
10382}
10383
10384impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
10385	for vk::PhysicalDeviceAccelerationStructureFeaturesKHR<'a>
10386{
10387}
10388
10389impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
10390	for vk::PhysicalDeviceAccelerationStructureFeaturesKHR<'a>
10391{
10392}
10393
10394impl<'a> crate::construction::sealed::ChainNode
10395	for vk::PhysicalDeviceRayTracingPipelineFeaturesKHR<'a>
10396{
10397	const S_TYPE: vk::StructureType =
10398		vk::StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR;
10399
10400	fn s_type(&self) -> vk::StructureType {
10401		self.s_type
10402	}
10403
10404	fn p_next(&self) -> *const std::ffi::c_void {
10405		self.p_next.cast_const()
10406	}
10407
10408	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10409		self.p_next = p_next;
10410	}
10411
10412	fn address(&mut self) -> *mut std::ffi::c_void {
10413		std::ptr::from_mut(self).cast()
10414	}
10415}
10416
10417impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
10418	for vk::PhysicalDeviceRayTracingPipelineFeaturesKHR<'a>
10419{
10420}
10421
10422impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
10423	for vk::PhysicalDeviceRayTracingPipelineFeaturesKHR<'a>
10424{
10425}
10426
10427impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceRayQueryFeaturesKHR<'a> {
10428	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR;
10429
10430	fn s_type(&self) -> vk::StructureType {
10431		self.s_type
10432	}
10433
10434	fn p_next(&self) -> *const std::ffi::c_void {
10435		self.p_next.cast_const()
10436	}
10437
10438	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10439		self.p_next = p_next;
10440	}
10441
10442	fn address(&mut self) -> *mut std::ffi::c_void {
10443		std::ptr::from_mut(self).cast()
10444	}
10445}
10446
10447impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
10448	for vk::PhysicalDeviceRayQueryFeaturesKHR<'a>
10449{
10450}
10451
10452impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
10453	for vk::PhysicalDeviceRayQueryFeaturesKHR<'a>
10454{
10455}
10456
10457impl<'a> crate::construction::sealed::ChainNode
10458	for vk::PhysicalDeviceAccelerationStructurePropertiesKHR<'a>
10459{
10460	const S_TYPE: vk::StructureType =
10461		vk::StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR;
10462
10463	fn s_type(&self) -> vk::StructureType {
10464		self.s_type
10465	}
10466
10467	fn p_next(&self) -> *const std::ffi::c_void {
10468		self.p_next.cast_const()
10469	}
10470
10471	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10472		self.p_next = p_next;
10473	}
10474
10475	fn address(&mut self) -> *mut std::ffi::c_void {
10476		std::ptr::from_mut(self).cast()
10477	}
10478}
10479
10480impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
10481	for vk::PhysicalDeviceAccelerationStructurePropertiesKHR<'a>
10482{
10483}
10484
10485impl<'a> crate::construction::sealed::ChainNode
10486	for vk::PhysicalDeviceRayTracingPipelinePropertiesKHR<'a>
10487{
10488	const S_TYPE: vk::StructureType =
10489		vk::StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR;
10490
10491	fn s_type(&self) -> vk::StructureType {
10492		self.s_type
10493	}
10494
10495	fn p_next(&self) -> *const std::ffi::c_void {
10496		self.p_next.cast_const()
10497	}
10498
10499	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10500		self.p_next = p_next;
10501	}
10502
10503	fn address(&mut self) -> *mut std::ffi::c_void {
10504		std::ptr::from_mut(self).cast()
10505	}
10506}
10507
10508impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
10509	for vk::PhysicalDeviceRayTracingPipelinePropertiesKHR<'a>
10510{
10511}
10512
10513impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceRayTracingPropertiesNV<'a> {
10514	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV;
10515
10516	fn s_type(&self) -> vk::StructureType {
10517		self.s_type
10518	}
10519
10520	fn p_next(&self) -> *const std::ffi::c_void {
10521		self.p_next.cast_const()
10522	}
10523
10524	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10525		self.p_next = p_next;
10526	}
10527
10528	fn address(&mut self) -> *mut std::ffi::c_void {
10529		std::ptr::from_mut(self).cast()
10530	}
10531}
10532
10533impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
10534	for vk::PhysicalDeviceRayTracingPropertiesNV<'a>
10535{
10536}
10537
10538impl<'a> crate::construction::sealed::ChainNode
10539	for vk::PhysicalDeviceRayTracingMaintenance1FeaturesKHR<'a>
10540{
10541	const S_TYPE: vk::StructureType =
10542		vk::StructureType::PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR;
10543
10544	fn s_type(&self) -> vk::StructureType {
10545		self.s_type
10546	}
10547
10548	fn p_next(&self) -> *const std::ffi::c_void {
10549		self.p_next.cast_const()
10550	}
10551
10552	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10553		self.p_next = p_next;
10554	}
10555
10556	fn address(&mut self) -> *mut std::ffi::c_void {
10557		std::ptr::from_mut(self).cast()
10558	}
10559}
10560
10561impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
10562	for vk::PhysicalDeviceRayTracingMaintenance1FeaturesKHR<'a>
10563{
10564}
10565
10566impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
10567	for vk::PhysicalDeviceRayTracingMaintenance1FeaturesKHR<'a>
10568{
10569}
10570
10571impl<'a> crate::construction::sealed::ChainNode for vk::DrmFormatModifierPropertiesListEXT<'a> {
10572	const S_TYPE: vk::StructureType = vk::StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT;
10573
10574	fn s_type(&self) -> vk::StructureType {
10575		self.s_type
10576	}
10577
10578	fn p_next(&self) -> *const std::ffi::c_void {
10579		self.p_next.cast_const()
10580	}
10581
10582	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10583		self.p_next = p_next;
10584	}
10585
10586	fn address(&mut self) -> *mut std::ffi::c_void {
10587		std::ptr::from_mut(self).cast()
10588	}
10589}
10590
10591impl<'a, 'root> crate::Extends<vk::FormatProperties2<'root>>
10592	for vk::DrmFormatModifierPropertiesListEXT<'a>
10593{
10594}
10595
10596impl<'a> crate::construction::sealed::ChainNode
10597	for vk::PhysicalDeviceImageDrmFormatModifierInfoEXT<'a>
10598{
10599	const S_TYPE: vk::StructureType =
10600		vk::StructureType::PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT;
10601
10602	fn s_type(&self) -> vk::StructureType {
10603		self.s_type
10604	}
10605
10606	fn p_next(&self) -> *const std::ffi::c_void {
10607		self.p_next
10608	}
10609
10610	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10611		self.p_next = p_next.cast_const();
10612	}
10613
10614	fn address(&mut self) -> *mut std::ffi::c_void {
10615		std::ptr::from_mut(self).cast()
10616	}
10617}
10618
10619impl<'a, 'root> crate::Extends<vk::PhysicalDeviceImageFormatInfo2<'root>>
10620	for vk::PhysicalDeviceImageDrmFormatModifierInfoEXT<'a>
10621{
10622}
10623
10624impl<'a> crate::construction::sealed::ChainNode
10625	for vk::ImageDrmFormatModifierListCreateInfoEXT<'a>
10626{
10627	const S_TYPE: vk::StructureType =
10628		vk::StructureType::IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT;
10629
10630	fn s_type(&self) -> vk::StructureType {
10631		self.s_type
10632	}
10633
10634	fn p_next(&self) -> *const std::ffi::c_void {
10635		self.p_next
10636	}
10637
10638	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10639		self.p_next = p_next.cast_const();
10640	}
10641
10642	fn address(&mut self) -> *mut std::ffi::c_void {
10643		std::ptr::from_mut(self).cast()
10644	}
10645}
10646
10647impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>>
10648	for vk::ImageDrmFormatModifierListCreateInfoEXT<'a>
10649{
10650}
10651
10652impl<'a> crate::construction::sealed::ChainNode
10653	for vk::ImageDrmFormatModifierExplicitCreateInfoEXT<'a>
10654{
10655	const S_TYPE: vk::StructureType =
10656		vk::StructureType::IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT;
10657
10658	fn s_type(&self) -> vk::StructureType {
10659		self.s_type
10660	}
10661
10662	fn p_next(&self) -> *const std::ffi::c_void {
10663		self.p_next
10664	}
10665
10666	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10667		self.p_next = p_next.cast_const();
10668	}
10669
10670	fn address(&mut self) -> *mut std::ffi::c_void {
10671		std::ptr::from_mut(self).cast()
10672	}
10673}
10674
10675impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>>
10676	for vk::ImageDrmFormatModifierExplicitCreateInfoEXT<'a>
10677{
10678}
10679
10680impl<'a> crate::construction::sealed::ChainNode for vk::ImageDrmFormatModifierPropertiesEXT<'a> {
10681	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT;
10682
10683	fn s_type(&self) -> vk::StructureType {
10684		self.s_type
10685	}
10686
10687	fn p_next(&self) -> *const std::ffi::c_void {
10688		self.p_next.cast_const()
10689	}
10690
10691	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10692		self.p_next = p_next;
10693	}
10694
10695	fn address(&mut self) -> *mut std::ffi::c_void {
10696		std::ptr::from_mut(self).cast()
10697	}
10698}
10699
10700impl<'a> crate::construction::sealed::ChainNode for vk::ImageStencilUsageCreateInfo<'a> {
10701	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_STENCIL_USAGE_CREATE_INFO;
10702
10703	fn s_type(&self) -> vk::StructureType {
10704		self.s_type
10705	}
10706
10707	fn p_next(&self) -> *const std::ffi::c_void {
10708		self.p_next
10709	}
10710
10711	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10712		self.p_next = p_next.cast_const();
10713	}
10714
10715	fn address(&mut self) -> *mut std::ffi::c_void {
10716		std::ptr::from_mut(self).cast()
10717	}
10718}
10719
10720impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>> for vk::ImageStencilUsageCreateInfo<'a> {}
10721
10722impl<'a, 'root> crate::Extends<vk::PhysicalDeviceImageFormatInfo2<'root>>
10723	for vk::ImageStencilUsageCreateInfo<'a>
10724{
10725}
10726
10727impl<'a> crate::construction::sealed::ChainNode for vk::ImageStencilUsage2CreateInfoKHR<'a> {
10728	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_STENCIL_USAGE_2_CREATE_INFO_KHR;
10729
10730	fn s_type(&self) -> vk::StructureType {
10731		self.s_type
10732	}
10733
10734	fn p_next(&self) -> *const std::ffi::c_void {
10735		self.p_next.cast_const()
10736	}
10737
10738	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10739		self.p_next = p_next;
10740	}
10741
10742	fn address(&mut self) -> *mut std::ffi::c_void {
10743		std::ptr::from_mut(self).cast()
10744	}
10745}
10746
10747impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>>
10748	for vk::ImageStencilUsage2CreateInfoKHR<'a>
10749{
10750}
10751
10752impl<'a, 'root> crate::Extends<vk::PhysicalDeviceImageFormatInfo2<'root>>
10753	for vk::ImageStencilUsage2CreateInfoKHR<'a>
10754{
10755}
10756
10757impl<'a> crate::construction::sealed::ChainNode
10758	for vk::DeviceMemoryOverallocationCreateInfoAMD<'a>
10759{
10760	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD;
10761
10762	fn s_type(&self) -> vk::StructureType {
10763		self.s_type
10764	}
10765
10766	fn p_next(&self) -> *const std::ffi::c_void {
10767		self.p_next
10768	}
10769
10770	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10771		self.p_next = p_next.cast_const();
10772	}
10773
10774	fn address(&mut self) -> *mut std::ffi::c_void {
10775		std::ptr::from_mut(self).cast()
10776	}
10777}
10778
10779impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
10780	for vk::DeviceMemoryOverallocationCreateInfoAMD<'a>
10781{
10782}
10783
10784impl<'a> crate::construction::sealed::ChainNode
10785	for vk::PhysicalDeviceFragmentDensityMapFeaturesEXT<'a>
10786{
10787	const S_TYPE: vk::StructureType =
10788		vk::StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT;
10789
10790	fn s_type(&self) -> vk::StructureType {
10791		self.s_type
10792	}
10793
10794	fn p_next(&self) -> *const std::ffi::c_void {
10795		self.p_next.cast_const()
10796	}
10797
10798	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10799		self.p_next = p_next;
10800	}
10801
10802	fn address(&mut self) -> *mut std::ffi::c_void {
10803		std::ptr::from_mut(self).cast()
10804	}
10805}
10806
10807impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
10808	for vk::PhysicalDeviceFragmentDensityMapFeaturesEXT<'a>
10809{
10810}
10811
10812impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
10813	for vk::PhysicalDeviceFragmentDensityMapFeaturesEXT<'a>
10814{
10815}
10816
10817impl<'a> crate::construction::sealed::ChainNode
10818	for vk::PhysicalDeviceFragmentDensityMap2FeaturesEXT<'a>
10819{
10820	const S_TYPE: vk::StructureType =
10821		vk::StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT;
10822
10823	fn s_type(&self) -> vk::StructureType {
10824		self.s_type
10825	}
10826
10827	fn p_next(&self) -> *const std::ffi::c_void {
10828		self.p_next.cast_const()
10829	}
10830
10831	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10832		self.p_next = p_next;
10833	}
10834
10835	fn address(&mut self) -> *mut std::ffi::c_void {
10836		std::ptr::from_mut(self).cast()
10837	}
10838}
10839
10840impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
10841	for vk::PhysicalDeviceFragmentDensityMap2FeaturesEXT<'a>
10842{
10843}
10844
10845impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
10846	for vk::PhysicalDeviceFragmentDensityMap2FeaturesEXT<'a>
10847{
10848}
10849
10850impl<'a> crate::construction::sealed::ChainNode
10851	for vk::PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT<'a>
10852{
10853	const S_TYPE: vk::StructureType =
10854		vk::StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT;
10855
10856	fn s_type(&self) -> vk::StructureType {
10857		self.s_type
10858	}
10859
10860	fn p_next(&self) -> *const std::ffi::c_void {
10861		self.p_next.cast_const()
10862	}
10863
10864	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10865		self.p_next = p_next;
10866	}
10867
10868	fn address(&mut self) -> *mut std::ffi::c_void {
10869		std::ptr::from_mut(self).cast()
10870	}
10871}
10872
10873impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
10874	for vk::PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT<'a>
10875{
10876}
10877
10878impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
10879	for vk::PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT<'a>
10880{
10881}
10882
10883impl<'a> crate::construction::sealed::ChainNode
10884	for vk::PhysicalDeviceFragmentDensityMapPropertiesEXT<'a>
10885{
10886	const S_TYPE: vk::StructureType =
10887		vk::StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT;
10888
10889	fn s_type(&self) -> vk::StructureType {
10890		self.s_type
10891	}
10892
10893	fn p_next(&self) -> *const std::ffi::c_void {
10894		self.p_next.cast_const()
10895	}
10896
10897	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10898		self.p_next = p_next;
10899	}
10900
10901	fn address(&mut self) -> *mut std::ffi::c_void {
10902		std::ptr::from_mut(self).cast()
10903	}
10904}
10905
10906impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
10907	for vk::PhysicalDeviceFragmentDensityMapPropertiesEXT<'a>
10908{
10909}
10910
10911impl<'a> crate::construction::sealed::ChainNode
10912	for vk::PhysicalDeviceFragmentDensityMap2PropertiesEXT<'a>
10913{
10914	const S_TYPE: vk::StructureType =
10915		vk::StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT;
10916
10917	fn s_type(&self) -> vk::StructureType {
10918		self.s_type
10919	}
10920
10921	fn p_next(&self) -> *const std::ffi::c_void {
10922		self.p_next.cast_const()
10923	}
10924
10925	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10926		self.p_next = p_next;
10927	}
10928
10929	fn address(&mut self) -> *mut std::ffi::c_void {
10930		std::ptr::from_mut(self).cast()
10931	}
10932}
10933
10934impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
10935	for vk::PhysicalDeviceFragmentDensityMap2PropertiesEXT<'a>
10936{
10937}
10938
10939impl<'a> crate::construction::sealed::ChainNode
10940	for vk::PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT<'a>
10941{
10942	const S_TYPE: vk::StructureType =
10943		vk::StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT;
10944
10945	fn s_type(&self) -> vk::StructureType {
10946		self.s_type
10947	}
10948
10949	fn p_next(&self) -> *const std::ffi::c_void {
10950		self.p_next.cast_const()
10951	}
10952
10953	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10954		self.p_next = p_next;
10955	}
10956
10957	fn address(&mut self) -> *mut std::ffi::c_void {
10958		std::ptr::from_mut(self).cast()
10959	}
10960}
10961
10962impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
10963	for vk::PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT<'a>
10964{
10965}
10966
10967impl<'a> crate::construction::sealed::ChainNode
10968	for vk::RenderPassFragmentDensityMapCreateInfoEXT<'a>
10969{
10970	const S_TYPE: vk::StructureType =
10971		vk::StructureType::RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT;
10972
10973	fn s_type(&self) -> vk::StructureType {
10974		self.s_type
10975	}
10976
10977	fn p_next(&self) -> *const std::ffi::c_void {
10978		self.p_next
10979	}
10980
10981	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
10982		self.p_next = p_next.cast_const();
10983	}
10984
10985	fn address(&mut self) -> *mut std::ffi::c_void {
10986		std::ptr::from_mut(self).cast()
10987	}
10988}
10989
10990impl<'a, 'root> crate::Extends<vk::RenderPassCreateInfo<'root>>
10991	for vk::RenderPassFragmentDensityMapCreateInfoEXT<'a>
10992{
10993}
10994
10995impl<'a, 'root> crate::Extends<vk::RenderPassCreateInfo2<'root>>
10996	for vk::RenderPassFragmentDensityMapCreateInfoEXT<'a>
10997{
10998}
10999
11000impl<'a> crate::construction::sealed::ChainNode
11001	for vk::RenderPassFragmentDensityMapOffsetEndInfoEXT<'a>
11002{
11003	const S_TYPE: vk::StructureType =
11004		vk::StructureType::RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT;
11005
11006	fn s_type(&self) -> vk::StructureType {
11007		self.s_type
11008	}
11009
11010	fn p_next(&self) -> *const std::ffi::c_void {
11011		self.p_next
11012	}
11013
11014	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11015		self.p_next = p_next.cast_const();
11016	}
11017
11018	fn address(&mut self) -> *mut std::ffi::c_void {
11019		std::ptr::from_mut(self).cast()
11020	}
11021}
11022
11023impl<'a, 'root> crate::Extends<vk::SubpassEndInfo<'root>>
11024	for vk::RenderPassFragmentDensityMapOffsetEndInfoEXT<'a>
11025{
11026}
11027
11028impl<'a, 'root> crate::Extends<vk::RenderingEndInfoKHR<'root>>
11029	for vk::RenderPassFragmentDensityMapOffsetEndInfoEXT<'a>
11030{
11031}
11032
11033impl<'a> crate::construction::sealed::ChainNode
11034	for vk::PhysicalDeviceScalarBlockLayoutFeatures<'a>
11035{
11036	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES;
11037
11038	fn s_type(&self) -> vk::StructureType {
11039		self.s_type
11040	}
11041
11042	fn p_next(&self) -> *const std::ffi::c_void {
11043		self.p_next.cast_const()
11044	}
11045
11046	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11047		self.p_next = p_next;
11048	}
11049
11050	fn address(&mut self) -> *mut std::ffi::c_void {
11051		std::ptr::from_mut(self).cast()
11052	}
11053}
11054
11055impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
11056	for vk::PhysicalDeviceScalarBlockLayoutFeatures<'a>
11057{
11058}
11059
11060impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
11061	for vk::PhysicalDeviceScalarBlockLayoutFeatures<'a>
11062{
11063}
11064
11065impl<'a> crate::construction::sealed::ChainNode for vk::SurfaceProtectedCapabilitiesKHR<'a> {
11066	const S_TYPE: vk::StructureType = vk::StructureType::SURFACE_PROTECTED_CAPABILITIES_KHR;
11067
11068	fn s_type(&self) -> vk::StructureType {
11069		self.s_type
11070	}
11071
11072	fn p_next(&self) -> *const std::ffi::c_void {
11073		self.p_next.cast_const()
11074	}
11075
11076	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11077		self.p_next = p_next;
11078	}
11079
11080	fn address(&mut self) -> *mut std::ffi::c_void {
11081		std::ptr::from_mut(self).cast()
11082	}
11083}
11084
11085impl<'a, 'root> crate::Extends<vk::SurfaceCapabilities2KHR<'root>>
11086	for vk::SurfaceProtectedCapabilitiesKHR<'a>
11087{
11088}
11089
11090impl<'a> crate::construction::sealed::ChainNode
11091	for vk::PhysicalDeviceUniformBufferStandardLayoutFeatures<'a>
11092{
11093	const S_TYPE: vk::StructureType =
11094		vk::StructureType::PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES;
11095
11096	fn s_type(&self) -> vk::StructureType {
11097		self.s_type
11098	}
11099
11100	fn p_next(&self) -> *const std::ffi::c_void {
11101		self.p_next.cast_const()
11102	}
11103
11104	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11105		self.p_next = p_next;
11106	}
11107
11108	fn address(&mut self) -> *mut std::ffi::c_void {
11109		std::ptr::from_mut(self).cast()
11110	}
11111}
11112
11113impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
11114	for vk::PhysicalDeviceUniformBufferStandardLayoutFeatures<'a>
11115{
11116}
11117
11118impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
11119	for vk::PhysicalDeviceUniformBufferStandardLayoutFeatures<'a>
11120{
11121}
11122
11123impl<'a> crate::construction::sealed::ChainNode
11124	for vk::PhysicalDeviceDepthClipEnableFeaturesEXT<'a>
11125{
11126	const S_TYPE: vk::StructureType =
11127		vk::StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT;
11128
11129	fn s_type(&self) -> vk::StructureType {
11130		self.s_type
11131	}
11132
11133	fn p_next(&self) -> *const std::ffi::c_void {
11134		self.p_next.cast_const()
11135	}
11136
11137	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11138		self.p_next = p_next;
11139	}
11140
11141	fn address(&mut self) -> *mut std::ffi::c_void {
11142		std::ptr::from_mut(self).cast()
11143	}
11144}
11145
11146impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
11147	for vk::PhysicalDeviceDepthClipEnableFeaturesEXT<'a>
11148{
11149}
11150
11151impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
11152	for vk::PhysicalDeviceDepthClipEnableFeaturesEXT<'a>
11153{
11154}
11155
11156impl<'a> crate::construction::sealed::ChainNode
11157	for vk::PipelineRasterizationDepthClipStateCreateInfoEXT<'a>
11158{
11159	const S_TYPE: vk::StructureType =
11160		vk::StructureType::PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT;
11161
11162	fn s_type(&self) -> vk::StructureType {
11163		self.s_type
11164	}
11165
11166	fn p_next(&self) -> *const std::ffi::c_void {
11167		self.p_next
11168	}
11169
11170	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11171		self.p_next = p_next.cast_const();
11172	}
11173
11174	fn address(&mut self) -> *mut std::ffi::c_void {
11175		std::ptr::from_mut(self).cast()
11176	}
11177}
11178
11179impl<'a, 'root> crate::Extends<vk::PipelineRasterizationStateCreateInfo<'root>>
11180	for vk::PipelineRasterizationDepthClipStateCreateInfoEXT<'a>
11181{
11182}
11183
11184impl<'a> crate::construction::sealed::ChainNode
11185	for vk::PhysicalDeviceMemoryBudgetPropertiesEXT<'a>
11186{
11187	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT;
11188
11189	fn s_type(&self) -> vk::StructureType {
11190		self.s_type
11191	}
11192
11193	fn p_next(&self) -> *const std::ffi::c_void {
11194		self.p_next.cast_const()
11195	}
11196
11197	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11198		self.p_next = p_next;
11199	}
11200
11201	fn address(&mut self) -> *mut std::ffi::c_void {
11202		std::ptr::from_mut(self).cast()
11203	}
11204}
11205
11206impl<'a, 'root> crate::Extends<vk::PhysicalDeviceMemoryProperties2<'root>>
11207	for vk::PhysicalDeviceMemoryBudgetPropertiesEXT<'a>
11208{
11209}
11210
11211impl<'a> crate::construction::sealed::ChainNode
11212	for vk::PhysicalDeviceMemoryPriorityFeaturesEXT<'a>
11213{
11214	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT;
11215
11216	fn s_type(&self) -> vk::StructureType {
11217		self.s_type
11218	}
11219
11220	fn p_next(&self) -> *const std::ffi::c_void {
11221		self.p_next.cast_const()
11222	}
11223
11224	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11225		self.p_next = p_next;
11226	}
11227
11228	fn address(&mut self) -> *mut std::ffi::c_void {
11229		std::ptr::from_mut(self).cast()
11230	}
11231}
11232
11233impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
11234	for vk::PhysicalDeviceMemoryPriorityFeaturesEXT<'a>
11235{
11236}
11237
11238impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
11239	for vk::PhysicalDeviceMemoryPriorityFeaturesEXT<'a>
11240{
11241}
11242
11243impl<'a> crate::construction::sealed::ChainNode for vk::MemoryPriorityAllocateInfoEXT<'a> {
11244	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_PRIORITY_ALLOCATE_INFO_EXT;
11245
11246	fn s_type(&self) -> vk::StructureType {
11247		self.s_type
11248	}
11249
11250	fn p_next(&self) -> *const std::ffi::c_void {
11251		self.p_next
11252	}
11253
11254	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11255		self.p_next = p_next.cast_const();
11256	}
11257
11258	fn address(&mut self) -> *mut std::ffi::c_void {
11259		std::ptr::from_mut(self).cast()
11260	}
11261}
11262
11263impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>>
11264	for vk::MemoryPriorityAllocateInfoEXT<'a>
11265{
11266}
11267
11268impl<'a> crate::construction::sealed::ChainNode
11269	for vk::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT<'a>
11270{
11271	const S_TYPE: vk::StructureType =
11272		vk::StructureType::PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT;
11273
11274	fn s_type(&self) -> vk::StructureType {
11275		self.s_type
11276	}
11277
11278	fn p_next(&self) -> *const std::ffi::c_void {
11279		self.p_next.cast_const()
11280	}
11281
11282	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11283		self.p_next = p_next;
11284	}
11285
11286	fn address(&mut self) -> *mut std::ffi::c_void {
11287		std::ptr::from_mut(self).cast()
11288	}
11289}
11290
11291impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
11292	for vk::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT<'a>
11293{
11294}
11295
11296impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
11297	for vk::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT<'a>
11298{
11299}
11300
11301impl<'a> crate::construction::sealed::ChainNode
11302	for vk::PhysicalDeviceBufferDeviceAddressFeatures<'a>
11303{
11304	const S_TYPE: vk::StructureType =
11305		vk::StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES;
11306
11307	fn s_type(&self) -> vk::StructureType {
11308		self.s_type
11309	}
11310
11311	fn p_next(&self) -> *const std::ffi::c_void {
11312		self.p_next.cast_const()
11313	}
11314
11315	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11316		self.p_next = p_next;
11317	}
11318
11319	fn address(&mut self) -> *mut std::ffi::c_void {
11320		std::ptr::from_mut(self).cast()
11321	}
11322}
11323
11324impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
11325	for vk::PhysicalDeviceBufferDeviceAddressFeatures<'a>
11326{
11327}
11328
11329impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
11330	for vk::PhysicalDeviceBufferDeviceAddressFeatures<'a>
11331{
11332}
11333
11334impl<'a> crate::construction::sealed::ChainNode
11335	for vk::PhysicalDeviceBufferDeviceAddressFeaturesEXT<'a>
11336{
11337	const S_TYPE: vk::StructureType =
11338		vk::StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT;
11339
11340	fn s_type(&self) -> vk::StructureType {
11341		self.s_type
11342	}
11343
11344	fn p_next(&self) -> *const std::ffi::c_void {
11345		self.p_next.cast_const()
11346	}
11347
11348	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11349		self.p_next = p_next;
11350	}
11351
11352	fn address(&mut self) -> *mut std::ffi::c_void {
11353		std::ptr::from_mut(self).cast()
11354	}
11355}
11356
11357impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
11358	for vk::PhysicalDeviceBufferDeviceAddressFeaturesEXT<'a>
11359{
11360}
11361
11362impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
11363	for vk::PhysicalDeviceBufferDeviceAddressFeaturesEXT<'a>
11364{
11365}
11366
11367impl<'a> crate::construction::sealed::ChainNode for vk::BufferDeviceAddressInfo<'a> {
11368	const S_TYPE: vk::StructureType = vk::StructureType::BUFFER_DEVICE_ADDRESS_INFO;
11369
11370	fn s_type(&self) -> vk::StructureType {
11371		self.s_type
11372	}
11373
11374	fn p_next(&self) -> *const std::ffi::c_void {
11375		self.p_next
11376	}
11377
11378	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11379		self.p_next = p_next.cast_const();
11380	}
11381
11382	fn address(&mut self) -> *mut std::ffi::c_void {
11383		std::ptr::from_mut(self).cast()
11384	}
11385}
11386
11387impl<'a> crate::construction::sealed::ChainNode for vk::BufferOpaqueCaptureAddressCreateInfo<'a> {
11388	const S_TYPE: vk::StructureType = vk::StructureType::BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO;
11389
11390	fn s_type(&self) -> vk::StructureType {
11391		self.s_type
11392	}
11393
11394	fn p_next(&self) -> *const std::ffi::c_void {
11395		self.p_next
11396	}
11397
11398	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11399		self.p_next = p_next.cast_const();
11400	}
11401
11402	fn address(&mut self) -> *mut std::ffi::c_void {
11403		std::ptr::from_mut(self).cast()
11404	}
11405}
11406
11407impl<'a, 'root> crate::Extends<vk::BufferCreateInfo<'root>>
11408	for vk::BufferOpaqueCaptureAddressCreateInfo<'a>
11409{
11410}
11411
11412impl<'a> crate::construction::sealed::ChainNode for vk::BufferDeviceAddressCreateInfoEXT<'a> {
11413	const S_TYPE: vk::StructureType = vk::StructureType::BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT;
11414
11415	fn s_type(&self) -> vk::StructureType {
11416		self.s_type
11417	}
11418
11419	fn p_next(&self) -> *const std::ffi::c_void {
11420		self.p_next
11421	}
11422
11423	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11424		self.p_next = p_next.cast_const();
11425	}
11426
11427	fn address(&mut self) -> *mut std::ffi::c_void {
11428		std::ptr::from_mut(self).cast()
11429	}
11430}
11431
11432impl<'a, 'root> crate::Extends<vk::BufferCreateInfo<'root>>
11433	for vk::BufferDeviceAddressCreateInfoEXT<'a>
11434{
11435}
11436
11437impl<'a> crate::construction::sealed::ChainNode
11438	for vk::PhysicalDeviceImageViewImageFormatInfoEXT<'a>
11439{
11440	const S_TYPE: vk::StructureType =
11441		vk::StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT;
11442
11443	fn s_type(&self) -> vk::StructureType {
11444		self.s_type
11445	}
11446
11447	fn p_next(&self) -> *const std::ffi::c_void {
11448		self.p_next.cast_const()
11449	}
11450
11451	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11452		self.p_next = p_next;
11453	}
11454
11455	fn address(&mut self) -> *mut std::ffi::c_void {
11456		std::ptr::from_mut(self).cast()
11457	}
11458}
11459
11460impl<'a, 'root> crate::Extends<vk::PhysicalDeviceImageFormatInfo2<'root>>
11461	for vk::PhysicalDeviceImageViewImageFormatInfoEXT<'a>
11462{
11463}
11464
11465impl<'a> crate::construction::sealed::ChainNode
11466	for vk::FilterCubicImageViewImageFormatPropertiesEXT<'a>
11467{
11468	const S_TYPE: vk::StructureType =
11469		vk::StructureType::FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT;
11470
11471	fn s_type(&self) -> vk::StructureType {
11472		self.s_type
11473	}
11474
11475	fn p_next(&self) -> *const std::ffi::c_void {
11476		self.p_next.cast_const()
11477	}
11478
11479	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11480		self.p_next = p_next;
11481	}
11482
11483	fn address(&mut self) -> *mut std::ffi::c_void {
11484		std::ptr::from_mut(self).cast()
11485	}
11486}
11487
11488impl<'a, 'root> crate::Extends<vk::ImageFormatProperties2<'root>>
11489	for vk::FilterCubicImageViewImageFormatPropertiesEXT<'a>
11490{
11491}
11492
11493impl<'a> crate::construction::sealed::ChainNode
11494	for vk::PhysicalDeviceImagelessFramebufferFeatures<'a>
11495{
11496	const S_TYPE: vk::StructureType =
11497		vk::StructureType::PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES;
11498
11499	fn s_type(&self) -> vk::StructureType {
11500		self.s_type
11501	}
11502
11503	fn p_next(&self) -> *const std::ffi::c_void {
11504		self.p_next.cast_const()
11505	}
11506
11507	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11508		self.p_next = p_next;
11509	}
11510
11511	fn address(&mut self) -> *mut std::ffi::c_void {
11512		std::ptr::from_mut(self).cast()
11513	}
11514}
11515
11516impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
11517	for vk::PhysicalDeviceImagelessFramebufferFeatures<'a>
11518{
11519}
11520
11521impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
11522	for vk::PhysicalDeviceImagelessFramebufferFeatures<'a>
11523{
11524}
11525
11526impl<'a> crate::construction::sealed::ChainNode for vk::FramebufferAttachmentsCreateInfo<'a> {
11527	const S_TYPE: vk::StructureType = vk::StructureType::FRAMEBUFFER_ATTACHMENTS_CREATE_INFO;
11528
11529	fn s_type(&self) -> vk::StructureType {
11530		self.s_type
11531	}
11532
11533	fn p_next(&self) -> *const std::ffi::c_void {
11534		self.p_next
11535	}
11536
11537	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11538		self.p_next = p_next.cast_const();
11539	}
11540
11541	fn address(&mut self) -> *mut std::ffi::c_void {
11542		std::ptr::from_mut(self).cast()
11543	}
11544}
11545
11546impl<'a, 'root> crate::Extends<vk::FramebufferCreateInfo<'root>>
11547	for vk::FramebufferAttachmentsCreateInfo<'a>
11548{
11549}
11550
11551impl<'a> crate::construction::sealed::ChainNode for vk::FramebufferAttachmentImageInfo<'a> {
11552	const S_TYPE: vk::StructureType = vk::StructureType::FRAMEBUFFER_ATTACHMENT_IMAGE_INFO;
11553
11554	fn s_type(&self) -> vk::StructureType {
11555		self.s_type
11556	}
11557
11558	fn p_next(&self) -> *const std::ffi::c_void {
11559		self.p_next
11560	}
11561
11562	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11563		self.p_next = p_next.cast_const();
11564	}
11565
11566	fn address(&mut self) -> *mut std::ffi::c_void {
11567		std::ptr::from_mut(self).cast()
11568	}
11569}
11570
11571impl<'a> crate::construction::sealed::ChainNode for vk::RenderPassAttachmentBeginInfo<'a> {
11572	const S_TYPE: vk::StructureType = vk::StructureType::RENDER_PASS_ATTACHMENT_BEGIN_INFO;
11573
11574	fn s_type(&self) -> vk::StructureType {
11575		self.s_type
11576	}
11577
11578	fn p_next(&self) -> *const std::ffi::c_void {
11579		self.p_next
11580	}
11581
11582	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11583		self.p_next = p_next.cast_const();
11584	}
11585
11586	fn address(&mut self) -> *mut std::ffi::c_void {
11587		std::ptr::from_mut(self).cast()
11588	}
11589}
11590
11591impl<'a, 'root> crate::Extends<vk::RenderPassBeginInfo<'root>>
11592	for vk::RenderPassAttachmentBeginInfo<'a>
11593{
11594}
11595
11596impl<'a> crate::construction::sealed::ChainNode
11597	for vk::PhysicalDeviceTextureCompressionASTCHDRFeatures<'a>
11598{
11599	const S_TYPE: vk::StructureType =
11600		vk::StructureType::PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES;
11601
11602	fn s_type(&self) -> vk::StructureType {
11603		self.s_type
11604	}
11605
11606	fn p_next(&self) -> *const std::ffi::c_void {
11607		self.p_next.cast_const()
11608	}
11609
11610	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11611		self.p_next = p_next;
11612	}
11613
11614	fn address(&mut self) -> *mut std::ffi::c_void {
11615		std::ptr::from_mut(self).cast()
11616	}
11617}
11618
11619impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
11620	for vk::PhysicalDeviceTextureCompressionASTCHDRFeatures<'a>
11621{
11622}
11623
11624impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
11625	for vk::PhysicalDeviceTextureCompressionASTCHDRFeatures<'a>
11626{
11627}
11628
11629impl<'a> crate::construction::sealed::ChainNode
11630	for vk::PhysicalDeviceCooperativeMatrixFeaturesNV<'a>
11631{
11632	const S_TYPE: vk::StructureType =
11633		vk::StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV;
11634
11635	fn s_type(&self) -> vk::StructureType {
11636		self.s_type
11637	}
11638
11639	fn p_next(&self) -> *const std::ffi::c_void {
11640		self.p_next.cast_const()
11641	}
11642
11643	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11644		self.p_next = p_next;
11645	}
11646
11647	fn address(&mut self) -> *mut std::ffi::c_void {
11648		std::ptr::from_mut(self).cast()
11649	}
11650}
11651
11652impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
11653	for vk::PhysicalDeviceCooperativeMatrixFeaturesNV<'a>
11654{
11655}
11656
11657impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
11658	for vk::PhysicalDeviceCooperativeMatrixFeaturesNV<'a>
11659{
11660}
11661
11662impl<'a> crate::construction::sealed::ChainNode
11663	for vk::PhysicalDeviceCooperativeMatrixPropertiesNV<'a>
11664{
11665	const S_TYPE: vk::StructureType =
11666		vk::StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV;
11667
11668	fn s_type(&self) -> vk::StructureType {
11669		self.s_type
11670	}
11671
11672	fn p_next(&self) -> *const std::ffi::c_void {
11673		self.p_next.cast_const()
11674	}
11675
11676	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11677		self.p_next = p_next;
11678	}
11679
11680	fn address(&mut self) -> *mut std::ffi::c_void {
11681		std::ptr::from_mut(self).cast()
11682	}
11683}
11684
11685impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
11686	for vk::PhysicalDeviceCooperativeMatrixPropertiesNV<'a>
11687{
11688}
11689
11690impl<'a> crate::construction::sealed::ChainNode for vk::CooperativeMatrixPropertiesNV<'a> {
11691	const S_TYPE: vk::StructureType = vk::StructureType::COOPERATIVE_MATRIX_PROPERTIES_NV;
11692
11693	fn s_type(&self) -> vk::StructureType {
11694		self.s_type
11695	}
11696
11697	fn p_next(&self) -> *const std::ffi::c_void {
11698		self.p_next.cast_const()
11699	}
11700
11701	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11702		self.p_next = p_next;
11703	}
11704
11705	fn address(&mut self) -> *mut std::ffi::c_void {
11706		std::ptr::from_mut(self).cast()
11707	}
11708}
11709
11710impl<'a> crate::construction::sealed::ChainNode
11711	for vk::PhysicalDeviceYcbcrImageArraysFeaturesEXT<'a>
11712{
11713	const S_TYPE: vk::StructureType =
11714		vk::StructureType::PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT;
11715
11716	fn s_type(&self) -> vk::StructureType {
11717		self.s_type
11718	}
11719
11720	fn p_next(&self) -> *const std::ffi::c_void {
11721		self.p_next.cast_const()
11722	}
11723
11724	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11725		self.p_next = p_next;
11726	}
11727
11728	fn address(&mut self) -> *mut std::ffi::c_void {
11729		std::ptr::from_mut(self).cast()
11730	}
11731}
11732
11733impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
11734	for vk::PhysicalDeviceYcbcrImageArraysFeaturesEXT<'a>
11735{
11736}
11737
11738impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
11739	for vk::PhysicalDeviceYcbcrImageArraysFeaturesEXT<'a>
11740{
11741}
11742
11743impl<'a> crate::construction::sealed::ChainNode for vk::ImageViewHandleInfoNVX<'a> {
11744	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_VIEW_HANDLE_INFO_NVX;
11745
11746	fn s_type(&self) -> vk::StructureType {
11747		self.s_type
11748	}
11749
11750	fn p_next(&self) -> *const std::ffi::c_void {
11751		self.p_next
11752	}
11753
11754	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11755		self.p_next = p_next.cast_const();
11756	}
11757
11758	fn address(&mut self) -> *mut std::ffi::c_void {
11759		std::ptr::from_mut(self).cast()
11760	}
11761}
11762
11763impl<'a> crate::construction::sealed::ChainNode for vk::ImageViewAddressPropertiesNVX<'a> {
11764	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_VIEW_ADDRESS_PROPERTIES_NVX;
11765
11766	fn s_type(&self) -> vk::StructureType {
11767		self.s_type
11768	}
11769
11770	fn p_next(&self) -> *const std::ffi::c_void {
11771		self.p_next.cast_const()
11772	}
11773
11774	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11775		self.p_next = p_next;
11776	}
11777
11778	fn address(&mut self) -> *mut std::ffi::c_void {
11779		std::ptr::from_mut(self).cast()
11780	}
11781}
11782
11783#[cfg(feature = "platform-ggp")]
11784impl<'a> crate::construction::sealed::ChainNode for vk::PresentFrameTokenGGP<'a> {
11785	const S_TYPE: vk::StructureType = vk::StructureType::PRESENT_FRAME_TOKEN_GGP;
11786
11787	fn s_type(&self) -> vk::StructureType {
11788		self.s_type
11789	}
11790
11791	fn p_next(&self) -> *const std::ffi::c_void {
11792		self.p_next
11793	}
11794
11795	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11796		self.p_next = p_next.cast_const();
11797	}
11798
11799	fn address(&mut self) -> *mut std::ffi::c_void {
11800		std::ptr::from_mut(self).cast()
11801	}
11802}
11803
11804#[cfg(feature = "platform-ggp")]
11805impl<'a, 'root> crate::Extends<vk::PresentInfoKHR<'root>> for vk::PresentFrameTokenGGP<'a> {}
11806
11807impl<'a> crate::construction::sealed::ChainNode for vk::PipelineCreationFeedbackCreateInfo<'a> {
11808	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_CREATION_FEEDBACK_CREATE_INFO;
11809
11810	fn s_type(&self) -> vk::StructureType {
11811		self.s_type
11812	}
11813
11814	fn p_next(&self) -> *const std::ffi::c_void {
11815		self.p_next
11816	}
11817
11818	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11819		self.p_next = p_next.cast_const();
11820	}
11821
11822	fn address(&mut self) -> *mut std::ffi::c_void {
11823		std::ptr::from_mut(self).cast()
11824	}
11825}
11826
11827impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
11828	for vk::PipelineCreationFeedbackCreateInfo<'a>
11829{
11830}
11831
11832impl<'a, 'root> crate::Extends<vk::ComputePipelineCreateInfo<'root>>
11833	for vk::PipelineCreationFeedbackCreateInfo<'a>
11834{
11835}
11836
11837impl<'a, 'root> crate::Extends<vk::RayTracingPipelineCreateInfoNV<'root>>
11838	for vk::PipelineCreationFeedbackCreateInfo<'a>
11839{
11840}
11841
11842impl<'a, 'root> crate::Extends<vk::RayTracingPipelineCreateInfoKHR<'root>>
11843	for vk::PipelineCreationFeedbackCreateInfo<'a>
11844{
11845}
11846
11847#[cfg(feature = "provisional")]
11848impl<'a, 'root> crate::Extends<vk::ExecutionGraphPipelineCreateInfoAMDX<'root>>
11849	for vk::PipelineCreationFeedbackCreateInfo<'a>
11850{
11851}
11852
11853impl<'a, 'root> crate::Extends<vk::DataGraphPipelineCreateInfoARM<'root>>
11854	for vk::PipelineCreationFeedbackCreateInfo<'a>
11855{
11856}
11857
11858#[cfg(feature = "platform-win32")]
11859impl<'a> crate::construction::sealed::ChainNode for vk::SurfaceFullScreenExclusiveInfoEXT<'a> {
11860	const S_TYPE: vk::StructureType = vk::StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT;
11861
11862	fn s_type(&self) -> vk::StructureType {
11863		self.s_type
11864	}
11865
11866	fn p_next(&self) -> *const std::ffi::c_void {
11867		self.p_next.cast_const()
11868	}
11869
11870	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11871		self.p_next = p_next;
11872	}
11873
11874	fn address(&mut self) -> *mut std::ffi::c_void {
11875		std::ptr::from_mut(self).cast()
11876	}
11877}
11878
11879#[cfg(feature = "platform-win32")]
11880impl<'a, 'root> crate::Extends<vk::PhysicalDeviceSurfaceInfo2KHR<'root>>
11881	for vk::SurfaceFullScreenExclusiveInfoEXT<'a>
11882{
11883}
11884
11885#[cfg(feature = "platform-win32")]
11886impl<'a, 'root> crate::Extends<vk::SwapchainCreateInfoKHR<'root>>
11887	for vk::SurfaceFullScreenExclusiveInfoEXT<'a>
11888{
11889}
11890
11891#[cfg(feature = "platform-win32")]
11892impl<'a> crate::construction::sealed::ChainNode for vk::SurfaceFullScreenExclusiveWin32InfoEXT<'a> {
11893	const S_TYPE: vk::StructureType = vk::StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT;
11894
11895	fn s_type(&self) -> vk::StructureType {
11896		self.s_type
11897	}
11898
11899	fn p_next(&self) -> *const std::ffi::c_void {
11900		self.p_next
11901	}
11902
11903	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11904		self.p_next = p_next.cast_const();
11905	}
11906
11907	fn address(&mut self) -> *mut std::ffi::c_void {
11908		std::ptr::from_mut(self).cast()
11909	}
11910}
11911
11912#[cfg(feature = "platform-win32")]
11913impl<'a, 'root> crate::Extends<vk::PhysicalDeviceSurfaceInfo2KHR<'root>>
11914	for vk::SurfaceFullScreenExclusiveWin32InfoEXT<'a>
11915{
11916}
11917
11918#[cfg(feature = "platform-win32")]
11919impl<'a, 'root> crate::Extends<vk::SwapchainCreateInfoKHR<'root>>
11920	for vk::SurfaceFullScreenExclusiveWin32InfoEXT<'a>
11921{
11922}
11923
11924#[cfg(feature = "platform-win32")]
11925impl<'a> crate::construction::sealed::ChainNode
11926	for vk::SurfaceCapabilitiesFullScreenExclusiveEXT<'a>
11927{
11928	const S_TYPE: vk::StructureType =
11929		vk::StructureType::SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT;
11930
11931	fn s_type(&self) -> vk::StructureType {
11932		self.s_type
11933	}
11934
11935	fn p_next(&self) -> *const std::ffi::c_void {
11936		self.p_next.cast_const()
11937	}
11938
11939	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11940		self.p_next = p_next;
11941	}
11942
11943	fn address(&mut self) -> *mut std::ffi::c_void {
11944		std::ptr::from_mut(self).cast()
11945	}
11946}
11947
11948#[cfg(feature = "platform-win32")]
11949impl<'a, 'root> crate::Extends<vk::SurfaceCapabilities2KHR<'root>>
11950	for vk::SurfaceCapabilitiesFullScreenExclusiveEXT<'a>
11951{
11952}
11953
11954impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDevicePresentBarrierFeaturesNV<'a> {
11955	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV;
11956
11957	fn s_type(&self) -> vk::StructureType {
11958		self.s_type
11959	}
11960
11961	fn p_next(&self) -> *const std::ffi::c_void {
11962		self.p_next.cast_const()
11963	}
11964
11965	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11966		self.p_next = p_next;
11967	}
11968
11969	fn address(&mut self) -> *mut std::ffi::c_void {
11970		std::ptr::from_mut(self).cast()
11971	}
11972}
11973
11974impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
11975	for vk::PhysicalDevicePresentBarrierFeaturesNV<'a>
11976{
11977}
11978
11979impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
11980	for vk::PhysicalDevicePresentBarrierFeaturesNV<'a>
11981{
11982}
11983
11984impl<'a> crate::construction::sealed::ChainNode for vk::SurfaceCapabilitiesPresentBarrierNV<'a> {
11985	const S_TYPE: vk::StructureType = vk::StructureType::SURFACE_CAPABILITIES_PRESENT_BARRIER_NV;
11986
11987	fn s_type(&self) -> vk::StructureType {
11988		self.s_type
11989	}
11990
11991	fn p_next(&self) -> *const std::ffi::c_void {
11992		self.p_next.cast_const()
11993	}
11994
11995	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
11996		self.p_next = p_next;
11997	}
11998
11999	fn address(&mut self) -> *mut std::ffi::c_void {
12000		std::ptr::from_mut(self).cast()
12001	}
12002}
12003
12004impl<'a, 'root> crate::Extends<vk::SurfaceCapabilities2KHR<'root>>
12005	for vk::SurfaceCapabilitiesPresentBarrierNV<'a>
12006{
12007}
12008
12009impl<'a> crate::construction::sealed::ChainNode for vk::SwapchainPresentBarrierCreateInfoNV<'a> {
12010	const S_TYPE: vk::StructureType = vk::StructureType::SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV;
12011
12012	fn s_type(&self) -> vk::StructureType {
12013		self.s_type
12014	}
12015
12016	fn p_next(&self) -> *const std::ffi::c_void {
12017		self.p_next.cast_const()
12018	}
12019
12020	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12021		self.p_next = p_next;
12022	}
12023
12024	fn address(&mut self) -> *mut std::ffi::c_void {
12025		std::ptr::from_mut(self).cast()
12026	}
12027}
12028
12029impl<'a, 'root> crate::Extends<vk::SwapchainCreateInfoKHR<'root>>
12030	for vk::SwapchainPresentBarrierCreateInfoNV<'a>
12031{
12032}
12033
12034impl<'a> crate::construction::sealed::ChainNode
12035	for vk::PhysicalDevicePerformanceQueryFeaturesKHR<'a>
12036{
12037	const S_TYPE: vk::StructureType =
12038		vk::StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR;
12039
12040	fn s_type(&self) -> vk::StructureType {
12041		self.s_type
12042	}
12043
12044	fn p_next(&self) -> *const std::ffi::c_void {
12045		self.p_next.cast_const()
12046	}
12047
12048	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12049		self.p_next = p_next;
12050	}
12051
12052	fn address(&mut self) -> *mut std::ffi::c_void {
12053		std::ptr::from_mut(self).cast()
12054	}
12055}
12056
12057impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
12058	for vk::PhysicalDevicePerformanceQueryFeaturesKHR<'a>
12059{
12060}
12061
12062impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
12063	for vk::PhysicalDevicePerformanceQueryFeaturesKHR<'a>
12064{
12065}
12066
12067impl<'a> crate::construction::sealed::ChainNode
12068	for vk::PhysicalDevicePerformanceQueryPropertiesKHR<'a>
12069{
12070	const S_TYPE: vk::StructureType =
12071		vk::StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR;
12072
12073	fn s_type(&self) -> vk::StructureType {
12074		self.s_type
12075	}
12076
12077	fn p_next(&self) -> *const std::ffi::c_void {
12078		self.p_next.cast_const()
12079	}
12080
12081	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12082		self.p_next = p_next;
12083	}
12084
12085	fn address(&mut self) -> *mut std::ffi::c_void {
12086		std::ptr::from_mut(self).cast()
12087	}
12088}
12089
12090impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
12091	for vk::PhysicalDevicePerformanceQueryPropertiesKHR<'a>
12092{
12093}
12094
12095impl<'a> crate::construction::sealed::ChainNode for vk::PerformanceCounterKHR<'a> {
12096	const S_TYPE: vk::StructureType = vk::StructureType::PERFORMANCE_COUNTER_KHR;
12097
12098	fn s_type(&self) -> vk::StructureType {
12099		self.s_type
12100	}
12101
12102	fn p_next(&self) -> *const std::ffi::c_void {
12103		self.p_next.cast_const()
12104	}
12105
12106	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12107		self.p_next = p_next;
12108	}
12109
12110	fn address(&mut self) -> *mut std::ffi::c_void {
12111		std::ptr::from_mut(self).cast()
12112	}
12113}
12114
12115impl<'a> crate::construction::sealed::ChainNode for vk::PerformanceCounterDescriptionKHR<'a> {
12116	const S_TYPE: vk::StructureType = vk::StructureType::PERFORMANCE_COUNTER_DESCRIPTION_KHR;
12117
12118	fn s_type(&self) -> vk::StructureType {
12119		self.s_type
12120	}
12121
12122	fn p_next(&self) -> *const std::ffi::c_void {
12123		self.p_next.cast_const()
12124	}
12125
12126	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12127		self.p_next = p_next;
12128	}
12129
12130	fn address(&mut self) -> *mut std::ffi::c_void {
12131		std::ptr::from_mut(self).cast()
12132	}
12133}
12134
12135impl<'a> crate::construction::sealed::ChainNode for vk::QueryPoolPerformanceCreateInfoKHR<'a> {
12136	const S_TYPE: vk::StructureType = vk::StructureType::QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR;
12137
12138	fn s_type(&self) -> vk::StructureType {
12139		self.s_type
12140	}
12141
12142	fn p_next(&self) -> *const std::ffi::c_void {
12143		self.p_next
12144	}
12145
12146	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12147		self.p_next = p_next.cast_const();
12148	}
12149
12150	fn address(&mut self) -> *mut std::ffi::c_void {
12151		std::ptr::from_mut(self).cast()
12152	}
12153}
12154
12155impl<'a, 'root> crate::Extends<vk::QueryPoolCreateInfo<'root>>
12156	for vk::QueryPoolPerformanceCreateInfoKHR<'a>
12157{
12158}
12159
12160impl<'a> crate::construction::sealed::ChainNode for vk::AcquireProfilingLockInfoKHR<'a> {
12161	const S_TYPE: vk::StructureType = vk::StructureType::ACQUIRE_PROFILING_LOCK_INFO_KHR;
12162
12163	fn s_type(&self) -> vk::StructureType {
12164		self.s_type
12165	}
12166
12167	fn p_next(&self) -> *const std::ffi::c_void {
12168		self.p_next
12169	}
12170
12171	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12172		self.p_next = p_next.cast_const();
12173	}
12174
12175	fn address(&mut self) -> *mut std::ffi::c_void {
12176		std::ptr::from_mut(self).cast()
12177	}
12178}
12179
12180impl<'a> crate::construction::sealed::ChainNode for vk::PerformanceQuerySubmitInfoKHR<'a> {
12181	const S_TYPE: vk::StructureType = vk::StructureType::PERFORMANCE_QUERY_SUBMIT_INFO_KHR;
12182
12183	fn s_type(&self) -> vk::StructureType {
12184		self.s_type
12185	}
12186
12187	fn p_next(&self) -> *const std::ffi::c_void {
12188		self.p_next
12189	}
12190
12191	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12192		self.p_next = p_next.cast_const();
12193	}
12194
12195	fn address(&mut self) -> *mut std::ffi::c_void {
12196		std::ptr::from_mut(self).cast()
12197	}
12198}
12199
12200impl<'a, 'root> crate::Extends<vk::SubmitInfo<'root>> for vk::PerformanceQuerySubmitInfoKHR<'a> {}
12201
12202impl<'a, 'root> crate::Extends<vk::SubmitInfo2<'root>> for vk::PerformanceQuerySubmitInfoKHR<'a> {}
12203
12204impl<'a> crate::construction::sealed::ChainNode for vk::HeadlessSurfaceCreateInfoEXT<'a> {
12205	const S_TYPE: vk::StructureType = vk::StructureType::HEADLESS_SURFACE_CREATE_INFO_EXT;
12206
12207	fn s_type(&self) -> vk::StructureType {
12208		self.s_type
12209	}
12210
12211	fn p_next(&self) -> *const std::ffi::c_void {
12212		self.p_next
12213	}
12214
12215	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12216		self.p_next = p_next.cast_const();
12217	}
12218
12219	fn address(&mut self) -> *mut std::ffi::c_void {
12220		std::ptr::from_mut(self).cast()
12221	}
12222}
12223
12224impl<'a> crate::construction::sealed::ChainNode
12225	for vk::PhysicalDeviceCoverageReductionModeFeaturesNV<'a>
12226{
12227	const S_TYPE: vk::StructureType =
12228		vk::StructureType::PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV;
12229
12230	fn s_type(&self) -> vk::StructureType {
12231		self.s_type
12232	}
12233
12234	fn p_next(&self) -> *const std::ffi::c_void {
12235		self.p_next.cast_const()
12236	}
12237
12238	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12239		self.p_next = p_next;
12240	}
12241
12242	fn address(&mut self) -> *mut std::ffi::c_void {
12243		std::ptr::from_mut(self).cast()
12244	}
12245}
12246
12247impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
12248	for vk::PhysicalDeviceCoverageReductionModeFeaturesNV<'a>
12249{
12250}
12251
12252impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
12253	for vk::PhysicalDeviceCoverageReductionModeFeaturesNV<'a>
12254{
12255}
12256
12257impl<'a> crate::construction::sealed::ChainNode
12258	for vk::PipelineCoverageReductionStateCreateInfoNV<'a>
12259{
12260	const S_TYPE: vk::StructureType =
12261		vk::StructureType::PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV;
12262
12263	fn s_type(&self) -> vk::StructureType {
12264		self.s_type
12265	}
12266
12267	fn p_next(&self) -> *const std::ffi::c_void {
12268		self.p_next
12269	}
12270
12271	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12272		self.p_next = p_next.cast_const();
12273	}
12274
12275	fn address(&mut self) -> *mut std::ffi::c_void {
12276		std::ptr::from_mut(self).cast()
12277	}
12278}
12279
12280impl<'a, 'root> crate::Extends<vk::PipelineMultisampleStateCreateInfo<'root>>
12281	for vk::PipelineCoverageReductionStateCreateInfoNV<'a>
12282{
12283}
12284
12285impl<'a> crate::construction::sealed::ChainNode for vk::FramebufferMixedSamplesCombinationNV<'a> {
12286	const S_TYPE: vk::StructureType = vk::StructureType::FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV;
12287
12288	fn s_type(&self) -> vk::StructureType {
12289		self.s_type
12290	}
12291
12292	fn p_next(&self) -> *const std::ffi::c_void {
12293		self.p_next.cast_const()
12294	}
12295
12296	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12297		self.p_next = p_next;
12298	}
12299
12300	fn address(&mut self) -> *mut std::ffi::c_void {
12301		std::ptr::from_mut(self).cast()
12302	}
12303}
12304
12305impl<'a> crate::construction::sealed::ChainNode
12306	for vk::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL<'a>
12307{
12308	const S_TYPE: vk::StructureType =
12309		vk::StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL;
12310
12311	fn s_type(&self) -> vk::StructureType {
12312		self.s_type
12313	}
12314
12315	fn p_next(&self) -> *const std::ffi::c_void {
12316		self.p_next.cast_const()
12317	}
12318
12319	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12320		self.p_next = p_next;
12321	}
12322
12323	fn address(&mut self) -> *mut std::ffi::c_void {
12324		std::ptr::from_mut(self).cast()
12325	}
12326}
12327
12328impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
12329	for vk::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL<'a>
12330{
12331}
12332
12333impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
12334	for vk::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL<'a>
12335{
12336}
12337
12338impl<'a> crate::construction::sealed::ChainNode for vk::InitializePerformanceApiInfoINTEL<'a> {
12339	const S_TYPE: vk::StructureType = vk::StructureType::INITIALIZE_PERFORMANCE_API_INFO_INTEL;
12340
12341	fn s_type(&self) -> vk::StructureType {
12342		self.s_type
12343	}
12344
12345	fn p_next(&self) -> *const std::ffi::c_void {
12346		self.p_next
12347	}
12348
12349	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12350		self.p_next = p_next.cast_const();
12351	}
12352
12353	fn address(&mut self) -> *mut std::ffi::c_void {
12354		std::ptr::from_mut(self).cast()
12355	}
12356}
12357
12358impl<'a> crate::construction::sealed::ChainNode
12359	for vk::QueryPoolPerformanceQueryCreateInfoINTEL<'a>
12360{
12361	const S_TYPE: vk::StructureType =
12362		vk::StructureType::QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL;
12363
12364	fn s_type(&self) -> vk::StructureType {
12365		self.s_type
12366	}
12367
12368	fn p_next(&self) -> *const std::ffi::c_void {
12369		self.p_next
12370	}
12371
12372	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12373		self.p_next = p_next.cast_const();
12374	}
12375
12376	fn address(&mut self) -> *mut std::ffi::c_void {
12377		std::ptr::from_mut(self).cast()
12378	}
12379}
12380
12381impl<'a, 'root> crate::Extends<vk::QueryPoolCreateInfo<'root>>
12382	for vk::QueryPoolPerformanceQueryCreateInfoINTEL<'a>
12383{
12384}
12385
12386impl<'a> crate::construction::sealed::ChainNode for vk::PerformanceMarkerInfoINTEL<'a> {
12387	const S_TYPE: vk::StructureType = vk::StructureType::PERFORMANCE_MARKER_INFO_INTEL;
12388
12389	fn s_type(&self) -> vk::StructureType {
12390		self.s_type
12391	}
12392
12393	fn p_next(&self) -> *const std::ffi::c_void {
12394		self.p_next
12395	}
12396
12397	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12398		self.p_next = p_next.cast_const();
12399	}
12400
12401	fn address(&mut self) -> *mut std::ffi::c_void {
12402		std::ptr::from_mut(self).cast()
12403	}
12404}
12405
12406impl<'a> crate::construction::sealed::ChainNode for vk::PerformanceStreamMarkerInfoINTEL<'a> {
12407	const S_TYPE: vk::StructureType = vk::StructureType::PERFORMANCE_STREAM_MARKER_INFO_INTEL;
12408
12409	fn s_type(&self) -> vk::StructureType {
12410		self.s_type
12411	}
12412
12413	fn p_next(&self) -> *const std::ffi::c_void {
12414		self.p_next
12415	}
12416
12417	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12418		self.p_next = p_next.cast_const();
12419	}
12420
12421	fn address(&mut self) -> *mut std::ffi::c_void {
12422		std::ptr::from_mut(self).cast()
12423	}
12424}
12425
12426impl<'a> crate::construction::sealed::ChainNode for vk::PerformanceOverrideInfoINTEL<'a> {
12427	const S_TYPE: vk::StructureType = vk::StructureType::PERFORMANCE_OVERRIDE_INFO_INTEL;
12428
12429	fn s_type(&self) -> vk::StructureType {
12430		self.s_type
12431	}
12432
12433	fn p_next(&self) -> *const std::ffi::c_void {
12434		self.p_next
12435	}
12436
12437	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12438		self.p_next = p_next.cast_const();
12439	}
12440
12441	fn address(&mut self) -> *mut std::ffi::c_void {
12442		std::ptr::from_mut(self).cast()
12443	}
12444}
12445
12446impl<'a> crate::construction::sealed::ChainNode
12447	for vk::PerformanceConfigurationAcquireInfoINTEL<'a>
12448{
12449	const S_TYPE: vk::StructureType = vk::StructureType::PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL;
12450
12451	fn s_type(&self) -> vk::StructureType {
12452		self.s_type
12453	}
12454
12455	fn p_next(&self) -> *const std::ffi::c_void {
12456		self.p_next
12457	}
12458
12459	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12460		self.p_next = p_next.cast_const();
12461	}
12462
12463	fn address(&mut self) -> *mut std::ffi::c_void {
12464		std::ptr::from_mut(self).cast()
12465	}
12466}
12467
12468impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceShaderClockFeaturesKHR<'a> {
12469	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR;
12470
12471	fn s_type(&self) -> vk::StructureType {
12472		self.s_type
12473	}
12474
12475	fn p_next(&self) -> *const std::ffi::c_void {
12476		self.p_next.cast_const()
12477	}
12478
12479	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12480		self.p_next = p_next;
12481	}
12482
12483	fn address(&mut self) -> *mut std::ffi::c_void {
12484		std::ptr::from_mut(self).cast()
12485	}
12486}
12487
12488impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
12489	for vk::PhysicalDeviceShaderClockFeaturesKHR<'a>
12490{
12491}
12492
12493impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
12494	for vk::PhysicalDeviceShaderClockFeaturesKHR<'a>
12495{
12496}
12497
12498impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceIndexTypeUint8Features<'a> {
12499	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES;
12500
12501	fn s_type(&self) -> vk::StructureType {
12502		self.s_type
12503	}
12504
12505	fn p_next(&self) -> *const std::ffi::c_void {
12506		self.p_next.cast_const()
12507	}
12508
12509	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12510		self.p_next = p_next;
12511	}
12512
12513	fn address(&mut self) -> *mut std::ffi::c_void {
12514		std::ptr::from_mut(self).cast()
12515	}
12516}
12517
12518impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
12519	for vk::PhysicalDeviceIndexTypeUint8Features<'a>
12520{
12521}
12522
12523impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
12524	for vk::PhysicalDeviceIndexTypeUint8Features<'a>
12525{
12526}
12527
12528impl<'a> crate::construction::sealed::ChainNode
12529	for vk::PhysicalDeviceShaderSMBuiltinsPropertiesNV<'a>
12530{
12531	const S_TYPE: vk::StructureType =
12532		vk::StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV;
12533
12534	fn s_type(&self) -> vk::StructureType {
12535		self.s_type
12536	}
12537
12538	fn p_next(&self) -> *const std::ffi::c_void {
12539		self.p_next.cast_const()
12540	}
12541
12542	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12543		self.p_next = p_next;
12544	}
12545
12546	fn address(&mut self) -> *mut std::ffi::c_void {
12547		std::ptr::from_mut(self).cast()
12548	}
12549}
12550
12551impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
12552	for vk::PhysicalDeviceShaderSMBuiltinsPropertiesNV<'a>
12553{
12554}
12555
12556impl<'a> crate::construction::sealed::ChainNode
12557	for vk::PhysicalDeviceShaderSMBuiltinsFeaturesNV<'a>
12558{
12559	const S_TYPE: vk::StructureType =
12560		vk::StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV;
12561
12562	fn s_type(&self) -> vk::StructureType {
12563		self.s_type
12564	}
12565
12566	fn p_next(&self) -> *const std::ffi::c_void {
12567		self.p_next.cast_const()
12568	}
12569
12570	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12571		self.p_next = p_next;
12572	}
12573
12574	fn address(&mut self) -> *mut std::ffi::c_void {
12575		std::ptr::from_mut(self).cast()
12576	}
12577}
12578
12579impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
12580	for vk::PhysicalDeviceShaderSMBuiltinsFeaturesNV<'a>
12581{
12582}
12583
12584impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
12585	for vk::PhysicalDeviceShaderSMBuiltinsFeaturesNV<'a>
12586{
12587}
12588
12589impl<'a> crate::construction::sealed::ChainNode
12590	for vk::PhysicalDeviceFragmentShaderInterlockFeaturesEXT<'a>
12591{
12592	const S_TYPE: vk::StructureType =
12593		vk::StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT;
12594
12595	fn s_type(&self) -> vk::StructureType {
12596		self.s_type
12597	}
12598
12599	fn p_next(&self) -> *const std::ffi::c_void {
12600		self.p_next.cast_const()
12601	}
12602
12603	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12604		self.p_next = p_next;
12605	}
12606
12607	fn address(&mut self) -> *mut std::ffi::c_void {
12608		std::ptr::from_mut(self).cast()
12609	}
12610}
12611
12612impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
12613	for vk::PhysicalDeviceFragmentShaderInterlockFeaturesEXT<'a>
12614{
12615}
12616
12617impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
12618	for vk::PhysicalDeviceFragmentShaderInterlockFeaturesEXT<'a>
12619{
12620}
12621
12622impl<'a> crate::construction::sealed::ChainNode
12623	for vk::PhysicalDeviceSeparateDepthStencilLayoutsFeatures<'a>
12624{
12625	const S_TYPE: vk::StructureType =
12626		vk::StructureType::PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES;
12627
12628	fn s_type(&self) -> vk::StructureType {
12629		self.s_type
12630	}
12631
12632	fn p_next(&self) -> *const std::ffi::c_void {
12633		self.p_next.cast_const()
12634	}
12635
12636	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12637		self.p_next = p_next;
12638	}
12639
12640	fn address(&mut self) -> *mut std::ffi::c_void {
12641		std::ptr::from_mut(self).cast()
12642	}
12643}
12644
12645impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
12646	for vk::PhysicalDeviceSeparateDepthStencilLayoutsFeatures<'a>
12647{
12648}
12649
12650impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
12651	for vk::PhysicalDeviceSeparateDepthStencilLayoutsFeatures<'a>
12652{
12653}
12654
12655impl<'a> crate::construction::sealed::ChainNode for vk::AttachmentReferenceStencilLayout<'a> {
12656	const S_TYPE: vk::StructureType = vk::StructureType::ATTACHMENT_REFERENCE_STENCIL_LAYOUT;
12657
12658	fn s_type(&self) -> vk::StructureType {
12659		self.s_type
12660	}
12661
12662	fn p_next(&self) -> *const std::ffi::c_void {
12663		self.p_next.cast_const()
12664	}
12665
12666	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12667		self.p_next = p_next;
12668	}
12669
12670	fn address(&mut self) -> *mut std::ffi::c_void {
12671		std::ptr::from_mut(self).cast()
12672	}
12673}
12674
12675impl<'a, 'root> crate::Extends<vk::AttachmentReference2<'root>>
12676	for vk::AttachmentReferenceStencilLayout<'a>
12677{
12678}
12679
12680impl<'a> crate::construction::sealed::ChainNode
12681	for vk::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT<'a>
12682{
12683	const S_TYPE: vk::StructureType =
12684		vk::StructureType::PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT;
12685
12686	fn s_type(&self) -> vk::StructureType {
12687		self.s_type
12688	}
12689
12690	fn p_next(&self) -> *const std::ffi::c_void {
12691		self.p_next.cast_const()
12692	}
12693
12694	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12695		self.p_next = p_next;
12696	}
12697
12698	fn address(&mut self) -> *mut std::ffi::c_void {
12699		std::ptr::from_mut(self).cast()
12700	}
12701}
12702
12703impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
12704	for vk::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT<'a>
12705{
12706}
12707
12708impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
12709	for vk::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT<'a>
12710{
12711}
12712
12713impl<'a> crate::construction::sealed::ChainNode for vk::AttachmentDescriptionStencilLayout<'a> {
12714	const S_TYPE: vk::StructureType = vk::StructureType::ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT;
12715
12716	fn s_type(&self) -> vk::StructureType {
12717		self.s_type
12718	}
12719
12720	fn p_next(&self) -> *const std::ffi::c_void {
12721		self.p_next.cast_const()
12722	}
12723
12724	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12725		self.p_next = p_next;
12726	}
12727
12728	fn address(&mut self) -> *mut std::ffi::c_void {
12729		std::ptr::from_mut(self).cast()
12730	}
12731}
12732
12733impl<'a, 'root> crate::Extends<vk::AttachmentDescription2<'root>>
12734	for vk::AttachmentDescriptionStencilLayout<'a>
12735{
12736}
12737
12738impl<'a> crate::construction::sealed::ChainNode
12739	for vk::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR<'a>
12740{
12741	const S_TYPE: vk::StructureType =
12742		vk::StructureType::PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR;
12743
12744	fn s_type(&self) -> vk::StructureType {
12745		self.s_type
12746	}
12747
12748	fn p_next(&self) -> *const std::ffi::c_void {
12749		self.p_next.cast_const()
12750	}
12751
12752	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12753		self.p_next = p_next;
12754	}
12755
12756	fn address(&mut self) -> *mut std::ffi::c_void {
12757		std::ptr::from_mut(self).cast()
12758	}
12759}
12760
12761impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
12762	for vk::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR<'a>
12763{
12764}
12765
12766impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
12767	for vk::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR<'a>
12768{
12769}
12770
12771impl<'a> crate::construction::sealed::ChainNode for vk::PipelineInfoKHR<'a> {
12772	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_INFO_KHR;
12773
12774	fn s_type(&self) -> vk::StructureType {
12775		self.s_type
12776	}
12777
12778	fn p_next(&self) -> *const std::ffi::c_void {
12779		self.p_next
12780	}
12781
12782	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12783		self.p_next = p_next.cast_const();
12784	}
12785
12786	fn address(&mut self) -> *mut std::ffi::c_void {
12787		std::ptr::from_mut(self).cast()
12788	}
12789}
12790
12791impl<'a> crate::construction::sealed::ChainNode for vk::PipelineExecutablePropertiesKHR<'a> {
12792	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_EXECUTABLE_PROPERTIES_KHR;
12793
12794	fn s_type(&self) -> vk::StructureType {
12795		self.s_type
12796	}
12797
12798	fn p_next(&self) -> *const std::ffi::c_void {
12799		self.p_next.cast_const()
12800	}
12801
12802	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12803		self.p_next = p_next;
12804	}
12805
12806	fn address(&mut self) -> *mut std::ffi::c_void {
12807		std::ptr::from_mut(self).cast()
12808	}
12809}
12810
12811impl<'a> crate::construction::sealed::ChainNode for vk::PipelineExecutableInfoKHR<'a> {
12812	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_EXECUTABLE_INFO_KHR;
12813
12814	fn s_type(&self) -> vk::StructureType {
12815		self.s_type
12816	}
12817
12818	fn p_next(&self) -> *const std::ffi::c_void {
12819		self.p_next
12820	}
12821
12822	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12823		self.p_next = p_next.cast_const();
12824	}
12825
12826	fn address(&mut self) -> *mut std::ffi::c_void {
12827		std::ptr::from_mut(self).cast()
12828	}
12829}
12830
12831impl<'a> crate::construction::sealed::ChainNode for vk::PipelineExecutableStatisticKHR<'a> {
12832	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_EXECUTABLE_STATISTIC_KHR;
12833
12834	fn s_type(&self) -> vk::StructureType {
12835		self.s_type
12836	}
12837
12838	fn p_next(&self) -> *const std::ffi::c_void {
12839		self.p_next.cast_const()
12840	}
12841
12842	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12843		self.p_next = p_next;
12844	}
12845
12846	fn address(&mut self) -> *mut std::ffi::c_void {
12847		std::ptr::from_mut(self).cast()
12848	}
12849}
12850
12851impl<'a> crate::construction::sealed::ChainNode
12852	for vk::PipelineExecutableInternalRepresentationKHR<'a>
12853{
12854	const S_TYPE: vk::StructureType =
12855		vk::StructureType::PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR;
12856
12857	fn s_type(&self) -> vk::StructureType {
12858		self.s_type
12859	}
12860
12861	fn p_next(&self) -> *const std::ffi::c_void {
12862		self.p_next.cast_const()
12863	}
12864
12865	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12866		self.p_next = p_next;
12867	}
12868
12869	fn address(&mut self) -> *mut std::ffi::c_void {
12870		std::ptr::from_mut(self).cast()
12871	}
12872}
12873
12874impl<'a> crate::construction::sealed::ChainNode
12875	for vk::PhysicalDeviceShaderDemoteToHelperInvocationFeatures<'a>
12876{
12877	const S_TYPE: vk::StructureType =
12878		vk::StructureType::PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES;
12879
12880	fn s_type(&self) -> vk::StructureType {
12881		self.s_type
12882	}
12883
12884	fn p_next(&self) -> *const std::ffi::c_void {
12885		self.p_next.cast_const()
12886	}
12887
12888	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12889		self.p_next = p_next;
12890	}
12891
12892	fn address(&mut self) -> *mut std::ffi::c_void {
12893		std::ptr::from_mut(self).cast()
12894	}
12895}
12896
12897impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
12898	for vk::PhysicalDeviceShaderDemoteToHelperInvocationFeatures<'a>
12899{
12900}
12901
12902impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
12903	for vk::PhysicalDeviceShaderDemoteToHelperInvocationFeatures<'a>
12904{
12905}
12906
12907impl<'a> crate::construction::sealed::ChainNode
12908	for vk::PhysicalDeviceTexelBufferAlignmentFeaturesEXT<'a>
12909{
12910	const S_TYPE: vk::StructureType =
12911		vk::StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT;
12912
12913	fn s_type(&self) -> vk::StructureType {
12914		self.s_type
12915	}
12916
12917	fn p_next(&self) -> *const std::ffi::c_void {
12918		self.p_next.cast_const()
12919	}
12920
12921	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12922		self.p_next = p_next;
12923	}
12924
12925	fn address(&mut self) -> *mut std::ffi::c_void {
12926		std::ptr::from_mut(self).cast()
12927	}
12928}
12929
12930impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
12931	for vk::PhysicalDeviceTexelBufferAlignmentFeaturesEXT<'a>
12932{
12933}
12934
12935impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
12936	for vk::PhysicalDeviceTexelBufferAlignmentFeaturesEXT<'a>
12937{
12938}
12939
12940impl<'a> crate::construction::sealed::ChainNode
12941	for vk::PhysicalDeviceTexelBufferAlignmentProperties<'a>
12942{
12943	const S_TYPE: vk::StructureType =
12944		vk::StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES;
12945
12946	fn s_type(&self) -> vk::StructureType {
12947		self.s_type
12948	}
12949
12950	fn p_next(&self) -> *const std::ffi::c_void {
12951		self.p_next.cast_const()
12952	}
12953
12954	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12955		self.p_next = p_next;
12956	}
12957
12958	fn address(&mut self) -> *mut std::ffi::c_void {
12959		std::ptr::from_mut(self).cast()
12960	}
12961}
12962
12963impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
12964	for vk::PhysicalDeviceTexelBufferAlignmentProperties<'a>
12965{
12966}
12967
12968impl<'a> crate::construction::sealed::ChainNode
12969	for vk::PhysicalDeviceSubgroupSizeControlFeatures<'a>
12970{
12971	const S_TYPE: vk::StructureType =
12972		vk::StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES;
12973
12974	fn s_type(&self) -> vk::StructureType {
12975		self.s_type
12976	}
12977
12978	fn p_next(&self) -> *const std::ffi::c_void {
12979		self.p_next.cast_const()
12980	}
12981
12982	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
12983		self.p_next = p_next;
12984	}
12985
12986	fn address(&mut self) -> *mut std::ffi::c_void {
12987		std::ptr::from_mut(self).cast()
12988	}
12989}
12990
12991impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
12992	for vk::PhysicalDeviceSubgroupSizeControlFeatures<'a>
12993{
12994}
12995
12996impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
12997	for vk::PhysicalDeviceSubgroupSizeControlFeatures<'a>
12998{
12999}
13000
13001impl<'a> crate::construction::sealed::ChainNode
13002	for vk::PhysicalDeviceSubgroupSizeControlProperties<'a>
13003{
13004	const S_TYPE: vk::StructureType =
13005		vk::StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES;
13006
13007	fn s_type(&self) -> vk::StructureType {
13008		self.s_type
13009	}
13010
13011	fn p_next(&self) -> *const std::ffi::c_void {
13012		self.p_next.cast_const()
13013	}
13014
13015	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13016		self.p_next = p_next;
13017	}
13018
13019	fn address(&mut self) -> *mut std::ffi::c_void {
13020		std::ptr::from_mut(self).cast()
13021	}
13022}
13023
13024impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
13025	for vk::PhysicalDeviceSubgroupSizeControlProperties<'a>
13026{
13027}
13028
13029impl<'a> crate::construction::sealed::ChainNode
13030	for vk::PipelineShaderStageRequiredSubgroupSizeCreateInfo<'a>
13031{
13032	const S_TYPE: vk::StructureType =
13033		vk::StructureType::PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO;
13034
13035	fn s_type(&self) -> vk::StructureType {
13036		self.s_type
13037	}
13038
13039	fn p_next(&self) -> *const std::ffi::c_void {
13040		self.p_next
13041	}
13042
13043	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13044		self.p_next = p_next.cast_const();
13045	}
13046
13047	fn address(&mut self) -> *mut std::ffi::c_void {
13048		std::ptr::from_mut(self).cast()
13049	}
13050}
13051
13052impl<'a, 'root> crate::Extends<vk::PipelineShaderStageCreateInfo<'root>>
13053	for vk::PipelineShaderStageRequiredSubgroupSizeCreateInfo<'a>
13054{
13055}
13056
13057impl<'a, 'root> crate::Extends<vk::ShaderCreateInfoEXT<'root>>
13058	for vk::PipelineShaderStageRequiredSubgroupSizeCreateInfo<'a>
13059{
13060}
13061
13062impl<'a> crate::construction::sealed::ChainNode for vk::SubpassShadingPipelineCreateInfoHUAWEI<'a> {
13063	const S_TYPE: vk::StructureType = vk::StructureType::SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI;
13064
13065	fn s_type(&self) -> vk::StructureType {
13066		self.s_type
13067	}
13068
13069	fn p_next(&self) -> *const std::ffi::c_void {
13070		self.p_next.cast_const()
13071	}
13072
13073	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13074		self.p_next = p_next;
13075	}
13076
13077	fn address(&mut self) -> *mut std::ffi::c_void {
13078		std::ptr::from_mut(self).cast()
13079	}
13080}
13081
13082impl<'a, 'root> crate::Extends<vk::ComputePipelineCreateInfo<'root>>
13083	for vk::SubpassShadingPipelineCreateInfoHUAWEI<'a>
13084{
13085}
13086
13087impl<'a> crate::construction::sealed::ChainNode
13088	for vk::PhysicalDeviceSubpassShadingPropertiesHUAWEI<'a>
13089{
13090	const S_TYPE: vk::StructureType =
13091		vk::StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI;
13092
13093	fn s_type(&self) -> vk::StructureType {
13094		self.s_type
13095	}
13096
13097	fn p_next(&self) -> *const std::ffi::c_void {
13098		self.p_next.cast_const()
13099	}
13100
13101	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13102		self.p_next = p_next;
13103	}
13104
13105	fn address(&mut self) -> *mut std::ffi::c_void {
13106		std::ptr::from_mut(self).cast()
13107	}
13108}
13109
13110impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
13111	for vk::PhysicalDeviceSubpassShadingPropertiesHUAWEI<'a>
13112{
13113}
13114
13115impl<'a> crate::construction::sealed::ChainNode
13116	for vk::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI<'a>
13117{
13118	const S_TYPE: vk::StructureType =
13119		vk::StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI;
13120
13121	fn s_type(&self) -> vk::StructureType {
13122		self.s_type
13123	}
13124
13125	fn p_next(&self) -> *const std::ffi::c_void {
13126		self.p_next.cast_const()
13127	}
13128
13129	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13130		self.p_next = p_next;
13131	}
13132
13133	fn address(&mut self) -> *mut std::ffi::c_void {
13134		std::ptr::from_mut(self).cast()
13135	}
13136}
13137
13138impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
13139	for vk::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI<'a>
13140{
13141}
13142
13143impl<'a> crate::construction::sealed::ChainNode for vk::MemoryOpaqueCaptureAddressAllocateInfo<'a> {
13144	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO;
13145
13146	fn s_type(&self) -> vk::StructureType {
13147		self.s_type
13148	}
13149
13150	fn p_next(&self) -> *const std::ffi::c_void {
13151		self.p_next
13152	}
13153
13154	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13155		self.p_next = p_next.cast_const();
13156	}
13157
13158	fn address(&mut self) -> *mut std::ffi::c_void {
13159		std::ptr::from_mut(self).cast()
13160	}
13161}
13162
13163impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>>
13164	for vk::MemoryOpaqueCaptureAddressAllocateInfo<'a>
13165{
13166}
13167
13168impl<'a> crate::construction::sealed::ChainNode for vk::DeviceMemoryOpaqueCaptureAddressInfo<'a> {
13169	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO;
13170
13171	fn s_type(&self) -> vk::StructureType {
13172		self.s_type
13173	}
13174
13175	fn p_next(&self) -> *const std::ffi::c_void {
13176		self.p_next
13177	}
13178
13179	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13180		self.p_next = p_next.cast_const();
13181	}
13182
13183	fn address(&mut self) -> *mut std::ffi::c_void {
13184		std::ptr::from_mut(self).cast()
13185	}
13186}
13187
13188impl<'a> crate::construction::sealed::ChainNode
13189	for vk::PhysicalDeviceLineRasterizationFeatures<'a>
13190{
13191	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES;
13192
13193	fn s_type(&self) -> vk::StructureType {
13194		self.s_type
13195	}
13196
13197	fn p_next(&self) -> *const std::ffi::c_void {
13198		self.p_next.cast_const()
13199	}
13200
13201	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13202		self.p_next = p_next;
13203	}
13204
13205	fn address(&mut self) -> *mut std::ffi::c_void {
13206		std::ptr::from_mut(self).cast()
13207	}
13208}
13209
13210impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
13211	for vk::PhysicalDeviceLineRasterizationFeatures<'a>
13212{
13213}
13214
13215impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
13216	for vk::PhysicalDeviceLineRasterizationFeatures<'a>
13217{
13218}
13219
13220impl<'a> crate::construction::sealed::ChainNode
13221	for vk::PhysicalDeviceLineRasterizationProperties<'a>
13222{
13223	const S_TYPE: vk::StructureType =
13224		vk::StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES;
13225
13226	fn s_type(&self) -> vk::StructureType {
13227		self.s_type
13228	}
13229
13230	fn p_next(&self) -> *const std::ffi::c_void {
13231		self.p_next.cast_const()
13232	}
13233
13234	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13235		self.p_next = p_next;
13236	}
13237
13238	fn address(&mut self) -> *mut std::ffi::c_void {
13239		std::ptr::from_mut(self).cast()
13240	}
13241}
13242
13243impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
13244	for vk::PhysicalDeviceLineRasterizationProperties<'a>
13245{
13246}
13247
13248impl<'a> crate::construction::sealed::ChainNode
13249	for vk::PipelineRasterizationLineStateCreateInfo<'a>
13250{
13251	const S_TYPE: vk::StructureType =
13252		vk::StructureType::PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO;
13253
13254	fn s_type(&self) -> vk::StructureType {
13255		self.s_type
13256	}
13257
13258	fn p_next(&self) -> *const std::ffi::c_void {
13259		self.p_next
13260	}
13261
13262	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13263		self.p_next = p_next.cast_const();
13264	}
13265
13266	fn address(&mut self) -> *mut std::ffi::c_void {
13267		std::ptr::from_mut(self).cast()
13268	}
13269}
13270
13271impl<'a, 'root> crate::Extends<vk::PipelineRasterizationStateCreateInfo<'root>>
13272	for vk::PipelineRasterizationLineStateCreateInfo<'a>
13273{
13274}
13275
13276impl<'a> crate::construction::sealed::ChainNode
13277	for vk::PhysicalDevicePipelineCreationCacheControlFeatures<'a>
13278{
13279	const S_TYPE: vk::StructureType =
13280		vk::StructureType::PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES;
13281
13282	fn s_type(&self) -> vk::StructureType {
13283		self.s_type
13284	}
13285
13286	fn p_next(&self) -> *const std::ffi::c_void {
13287		self.p_next.cast_const()
13288	}
13289
13290	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13291		self.p_next = p_next;
13292	}
13293
13294	fn address(&mut self) -> *mut std::ffi::c_void {
13295		std::ptr::from_mut(self).cast()
13296	}
13297}
13298
13299impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
13300	for vk::PhysicalDevicePipelineCreationCacheControlFeatures<'a>
13301{
13302}
13303
13304impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
13305	for vk::PhysicalDevicePipelineCreationCacheControlFeatures<'a>
13306{
13307}
13308
13309impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceVulkan11Features<'a> {
13310	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_VULKAN_1_1_FEATURES;
13311
13312	fn s_type(&self) -> vk::StructureType {
13313		self.s_type
13314	}
13315
13316	fn p_next(&self) -> *const std::ffi::c_void {
13317		self.p_next.cast_const()
13318	}
13319
13320	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13321		self.p_next = p_next;
13322	}
13323
13324	fn address(&mut self) -> *mut std::ffi::c_void {
13325		std::ptr::from_mut(self).cast()
13326	}
13327}
13328
13329impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
13330	for vk::PhysicalDeviceVulkan11Features<'a>
13331{
13332}
13333
13334impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
13335	for vk::PhysicalDeviceVulkan11Features<'a>
13336{
13337}
13338
13339impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceVulkan11Properties<'a> {
13340	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES;
13341
13342	fn s_type(&self) -> vk::StructureType {
13343		self.s_type
13344	}
13345
13346	fn p_next(&self) -> *const std::ffi::c_void {
13347		self.p_next.cast_const()
13348	}
13349
13350	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13351		self.p_next = p_next;
13352	}
13353
13354	fn address(&mut self) -> *mut std::ffi::c_void {
13355		std::ptr::from_mut(self).cast()
13356	}
13357}
13358
13359impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
13360	for vk::PhysicalDeviceVulkan11Properties<'a>
13361{
13362}
13363
13364impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceVulkan12Features<'a> {
13365	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_VULKAN_1_2_FEATURES;
13366
13367	fn s_type(&self) -> vk::StructureType {
13368		self.s_type
13369	}
13370
13371	fn p_next(&self) -> *const std::ffi::c_void {
13372		self.p_next.cast_const()
13373	}
13374
13375	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13376		self.p_next = p_next;
13377	}
13378
13379	fn address(&mut self) -> *mut std::ffi::c_void {
13380		std::ptr::from_mut(self).cast()
13381	}
13382}
13383
13384impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
13385	for vk::PhysicalDeviceVulkan12Features<'a>
13386{
13387}
13388
13389impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
13390	for vk::PhysicalDeviceVulkan12Features<'a>
13391{
13392}
13393
13394impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceVulkan12Properties<'a> {
13395	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES;
13396
13397	fn s_type(&self) -> vk::StructureType {
13398		self.s_type
13399	}
13400
13401	fn p_next(&self) -> *const std::ffi::c_void {
13402		self.p_next.cast_const()
13403	}
13404
13405	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13406		self.p_next = p_next;
13407	}
13408
13409	fn address(&mut self) -> *mut std::ffi::c_void {
13410		std::ptr::from_mut(self).cast()
13411	}
13412}
13413
13414impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
13415	for vk::PhysicalDeviceVulkan12Properties<'a>
13416{
13417}
13418
13419impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceVulkan13Features<'a> {
13420	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_VULKAN_1_3_FEATURES;
13421
13422	fn s_type(&self) -> vk::StructureType {
13423		self.s_type
13424	}
13425
13426	fn p_next(&self) -> *const std::ffi::c_void {
13427		self.p_next.cast_const()
13428	}
13429
13430	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13431		self.p_next = p_next;
13432	}
13433
13434	fn address(&mut self) -> *mut std::ffi::c_void {
13435		std::ptr::from_mut(self).cast()
13436	}
13437}
13438
13439impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
13440	for vk::PhysicalDeviceVulkan13Features<'a>
13441{
13442}
13443
13444impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
13445	for vk::PhysicalDeviceVulkan13Features<'a>
13446{
13447}
13448
13449impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceVulkan13Properties<'a> {
13450	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES;
13451
13452	fn s_type(&self) -> vk::StructureType {
13453		self.s_type
13454	}
13455
13456	fn p_next(&self) -> *const std::ffi::c_void {
13457		self.p_next.cast_const()
13458	}
13459
13460	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13461		self.p_next = p_next;
13462	}
13463
13464	fn address(&mut self) -> *mut std::ffi::c_void {
13465		std::ptr::from_mut(self).cast()
13466	}
13467}
13468
13469impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
13470	for vk::PhysicalDeviceVulkan13Properties<'a>
13471{
13472}
13473
13474impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceVulkan14Features<'a> {
13475	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_VULKAN_1_4_FEATURES;
13476
13477	fn s_type(&self) -> vk::StructureType {
13478		self.s_type
13479	}
13480
13481	fn p_next(&self) -> *const std::ffi::c_void {
13482		self.p_next.cast_const()
13483	}
13484
13485	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13486		self.p_next = p_next;
13487	}
13488
13489	fn address(&mut self) -> *mut std::ffi::c_void {
13490		std::ptr::from_mut(self).cast()
13491	}
13492}
13493
13494impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
13495	for vk::PhysicalDeviceVulkan14Features<'a>
13496{
13497}
13498
13499impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
13500	for vk::PhysicalDeviceVulkan14Features<'a>
13501{
13502}
13503
13504impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceVulkan14Properties<'a> {
13505	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES;
13506
13507	fn s_type(&self) -> vk::StructureType {
13508		self.s_type
13509	}
13510
13511	fn p_next(&self) -> *const std::ffi::c_void {
13512		self.p_next.cast_const()
13513	}
13514
13515	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13516		self.p_next = p_next;
13517	}
13518
13519	fn address(&mut self) -> *mut std::ffi::c_void {
13520		std::ptr::from_mut(self).cast()
13521	}
13522}
13523
13524impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
13525	for vk::PhysicalDeviceVulkan14Properties<'a>
13526{
13527}
13528
13529impl<'a> crate::construction::sealed::ChainNode for vk::PipelineCompilerControlCreateInfoAMD<'a> {
13530	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD;
13531
13532	fn s_type(&self) -> vk::StructureType {
13533		self.s_type
13534	}
13535
13536	fn p_next(&self) -> *const std::ffi::c_void {
13537		self.p_next
13538	}
13539
13540	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13541		self.p_next = p_next.cast_const();
13542	}
13543
13544	fn address(&mut self) -> *mut std::ffi::c_void {
13545		std::ptr::from_mut(self).cast()
13546	}
13547}
13548
13549impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
13550	for vk::PipelineCompilerControlCreateInfoAMD<'a>
13551{
13552}
13553
13554impl<'a, 'root> crate::Extends<vk::ComputePipelineCreateInfo<'root>>
13555	for vk::PipelineCompilerControlCreateInfoAMD<'a>
13556{
13557}
13558
13559#[cfg(feature = "provisional")]
13560impl<'a, 'root> crate::Extends<vk::ExecutionGraphPipelineCreateInfoAMDX<'root>>
13561	for vk::PipelineCompilerControlCreateInfoAMD<'a>
13562{
13563}
13564
13565impl<'a> crate::construction::sealed::ChainNode
13566	for vk::PhysicalDeviceCoherentMemoryFeaturesAMD<'a>
13567{
13568	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD;
13569
13570	fn s_type(&self) -> vk::StructureType {
13571		self.s_type
13572	}
13573
13574	fn p_next(&self) -> *const std::ffi::c_void {
13575		self.p_next.cast_const()
13576	}
13577
13578	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13579		self.p_next = p_next;
13580	}
13581
13582	fn address(&mut self) -> *mut std::ffi::c_void {
13583		std::ptr::from_mut(self).cast()
13584	}
13585}
13586
13587impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
13588	for vk::PhysicalDeviceCoherentMemoryFeaturesAMD<'a>
13589{
13590}
13591
13592impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
13593	for vk::PhysicalDeviceCoherentMemoryFeaturesAMD<'a>
13594{
13595}
13596
13597impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceGpaFeaturesAMD<'a> {
13598	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_GPA_FEATURES_AMD;
13599
13600	fn s_type(&self) -> vk::StructureType {
13601		self.s_type
13602	}
13603
13604	fn p_next(&self) -> *const std::ffi::c_void {
13605		self.p_next.cast_const()
13606	}
13607
13608	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13609		self.p_next = p_next;
13610	}
13611
13612	fn address(&mut self) -> *mut std::ffi::c_void {
13613		std::ptr::from_mut(self).cast()
13614	}
13615}
13616
13617impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
13618	for vk::PhysicalDeviceGpaFeaturesAMD<'a>
13619{
13620}
13621
13622impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
13623	for vk::PhysicalDeviceGpaFeaturesAMD<'a>
13624{
13625}
13626
13627impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceGpaPropertiesAMD<'a> {
13628	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_GPA_PROPERTIES_AMD;
13629
13630	fn s_type(&self) -> vk::StructureType {
13631		self.s_type
13632	}
13633
13634	fn p_next(&self) -> *const std::ffi::c_void {
13635		self.p_next.cast_const()
13636	}
13637
13638	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13639		self.p_next = p_next;
13640	}
13641
13642	fn address(&mut self) -> *mut std::ffi::c_void {
13643		std::ptr::from_mut(self).cast()
13644	}
13645}
13646
13647impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
13648	for vk::PhysicalDeviceGpaPropertiesAMD<'a>
13649{
13650}
13651
13652impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceGpaProperties2AMD<'a> {
13653	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_GPA_PROPERTIES_2_AMD;
13654
13655	fn s_type(&self) -> vk::StructureType {
13656		self.s_type
13657	}
13658
13659	fn p_next(&self) -> *const std::ffi::c_void {
13660		self.p_next.cast_const()
13661	}
13662
13663	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13664		self.p_next = p_next;
13665	}
13666
13667	fn address(&mut self) -> *mut std::ffi::c_void {
13668		std::ptr::from_mut(self).cast()
13669	}
13670}
13671
13672impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
13673	for vk::PhysicalDeviceGpaProperties2AMD<'a>
13674{
13675}
13676
13677impl<'a> crate::construction::sealed::ChainNode for vk::GpaSampleBeginInfoAMD<'a> {
13678	const S_TYPE: vk::StructureType = vk::StructureType::GPA_SAMPLE_BEGIN_INFO_AMD;
13679
13680	fn s_type(&self) -> vk::StructureType {
13681		self.s_type
13682	}
13683
13684	fn p_next(&self) -> *const std::ffi::c_void {
13685		self.p_next
13686	}
13687
13688	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13689		self.p_next = p_next.cast_const();
13690	}
13691
13692	fn address(&mut self) -> *mut std::ffi::c_void {
13693		std::ptr::from_mut(self).cast()
13694	}
13695}
13696
13697impl<'a> crate::construction::sealed::ChainNode for vk::GpaDeviceClockModeInfoAMD<'a> {
13698	const S_TYPE: vk::StructureType = vk::StructureType::GPA_DEVICE_CLOCK_MODE_INFO_AMD;
13699
13700	fn s_type(&self) -> vk::StructureType {
13701		self.s_type
13702	}
13703
13704	fn p_next(&self) -> *const std::ffi::c_void {
13705		self.p_next
13706	}
13707
13708	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13709		self.p_next = p_next.cast_const();
13710	}
13711
13712	fn address(&mut self) -> *mut std::ffi::c_void {
13713		std::ptr::from_mut(self).cast()
13714	}
13715}
13716
13717impl<'a> crate::construction::sealed::ChainNode for vk::GpaDeviceGetClockInfoAMD<'a> {
13718	const S_TYPE: vk::StructureType = vk::StructureType::GPA_DEVICE_GET_CLOCK_INFO_AMD;
13719
13720	fn s_type(&self) -> vk::StructureType {
13721		self.s_type
13722	}
13723
13724	fn p_next(&self) -> *const std::ffi::c_void {
13725		self.p_next.cast_const()
13726	}
13727
13728	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13729		self.p_next = p_next;
13730	}
13731
13732	fn address(&mut self) -> *mut std::ffi::c_void {
13733		std::ptr::from_mut(self).cast()
13734	}
13735}
13736
13737impl<'a> crate::construction::sealed::ChainNode for vk::GpaSessionCreateInfoAMD<'a> {
13738	const S_TYPE: vk::StructureType = vk::StructureType::GPA_SESSION_CREATE_INFO_AMD;
13739
13740	fn s_type(&self) -> vk::StructureType {
13741		self.s_type
13742	}
13743
13744	fn p_next(&self) -> *const std::ffi::c_void {
13745		self.p_next
13746	}
13747
13748	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13749		self.p_next = p_next.cast_const();
13750	}
13751
13752	fn address(&mut self) -> *mut std::ffi::c_void {
13753		std::ptr::from_mut(self).cast()
13754	}
13755}
13756
13757impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceToolProperties<'a> {
13758	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_TOOL_PROPERTIES;
13759
13760	fn s_type(&self) -> vk::StructureType {
13761		self.s_type
13762	}
13763
13764	fn p_next(&self) -> *const std::ffi::c_void {
13765		self.p_next.cast_const()
13766	}
13767
13768	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13769		self.p_next = p_next;
13770	}
13771
13772	fn address(&mut self) -> *mut std::ffi::c_void {
13773		std::ptr::from_mut(self).cast()
13774	}
13775}
13776
13777impl<'a> crate::construction::sealed::ChainNode for vk::SamplerCustomBorderColorCreateInfoEXT<'a> {
13778	const S_TYPE: vk::StructureType = vk::StructureType::SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT;
13779
13780	fn s_type(&self) -> vk::StructureType {
13781		self.s_type
13782	}
13783
13784	fn p_next(&self) -> *const std::ffi::c_void {
13785		self.p_next
13786	}
13787
13788	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13789		self.p_next = p_next.cast_const();
13790	}
13791
13792	fn address(&mut self) -> *mut std::ffi::c_void {
13793		std::ptr::from_mut(self).cast()
13794	}
13795}
13796
13797impl<'a, 'root> crate::Extends<vk::SamplerCreateInfo<'root>>
13798	for vk::SamplerCustomBorderColorCreateInfoEXT<'a>
13799{
13800}
13801
13802impl<'a> crate::construction::sealed::ChainNode
13803	for vk::PhysicalDeviceCustomBorderColorPropertiesEXT<'a>
13804{
13805	const S_TYPE: vk::StructureType =
13806		vk::StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT;
13807
13808	fn s_type(&self) -> vk::StructureType {
13809		self.s_type
13810	}
13811
13812	fn p_next(&self) -> *const std::ffi::c_void {
13813		self.p_next.cast_const()
13814	}
13815
13816	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13817		self.p_next = p_next;
13818	}
13819
13820	fn address(&mut self) -> *mut std::ffi::c_void {
13821		std::ptr::from_mut(self).cast()
13822	}
13823}
13824
13825impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
13826	for vk::PhysicalDeviceCustomBorderColorPropertiesEXT<'a>
13827{
13828}
13829
13830impl<'a> crate::construction::sealed::ChainNode
13831	for vk::PhysicalDeviceCustomBorderColorFeaturesEXT<'a>
13832{
13833	const S_TYPE: vk::StructureType =
13834		vk::StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT;
13835
13836	fn s_type(&self) -> vk::StructureType {
13837		self.s_type
13838	}
13839
13840	fn p_next(&self) -> *const std::ffi::c_void {
13841		self.p_next.cast_const()
13842	}
13843
13844	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13845		self.p_next = p_next;
13846	}
13847
13848	fn address(&mut self) -> *mut std::ffi::c_void {
13849		std::ptr::from_mut(self).cast()
13850	}
13851}
13852
13853impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
13854	for vk::PhysicalDeviceCustomBorderColorFeaturesEXT<'a>
13855{
13856}
13857
13858impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
13859	for vk::PhysicalDeviceCustomBorderColorFeaturesEXT<'a>
13860{
13861}
13862
13863impl<'a> crate::construction::sealed::ChainNode
13864	for vk::SamplerBorderColorComponentMappingCreateInfoEXT<'a>
13865{
13866	const S_TYPE: vk::StructureType =
13867		vk::StructureType::SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT;
13868
13869	fn s_type(&self) -> vk::StructureType {
13870		self.s_type
13871	}
13872
13873	fn p_next(&self) -> *const std::ffi::c_void {
13874		self.p_next
13875	}
13876
13877	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13878		self.p_next = p_next.cast_const();
13879	}
13880
13881	fn address(&mut self) -> *mut std::ffi::c_void {
13882		std::ptr::from_mut(self).cast()
13883	}
13884}
13885
13886impl<'a, 'root> crate::Extends<vk::SamplerCreateInfo<'root>>
13887	for vk::SamplerBorderColorComponentMappingCreateInfoEXT<'a>
13888{
13889}
13890
13891impl<'a> crate::construction::sealed::ChainNode
13892	for vk::PhysicalDeviceBorderColorSwizzleFeaturesEXT<'a>
13893{
13894	const S_TYPE: vk::StructureType =
13895		vk::StructureType::PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT;
13896
13897	fn s_type(&self) -> vk::StructureType {
13898		self.s_type
13899	}
13900
13901	fn p_next(&self) -> *const std::ffi::c_void {
13902		self.p_next.cast_const()
13903	}
13904
13905	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13906		self.p_next = p_next;
13907	}
13908
13909	fn address(&mut self) -> *mut std::ffi::c_void {
13910		std::ptr::from_mut(self).cast()
13911	}
13912}
13913
13914impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
13915	for vk::PhysicalDeviceBorderColorSwizzleFeaturesEXT<'a>
13916{
13917}
13918
13919impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
13920	for vk::PhysicalDeviceBorderColorSwizzleFeaturesEXT<'a>
13921{
13922}
13923
13924impl<'a> crate::construction::sealed::ChainNode
13925	for vk::AccelerationStructureGeometryTrianglesDataKHR<'a>
13926{
13927	const S_TYPE: vk::StructureType =
13928		vk::StructureType::ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR;
13929
13930	fn s_type(&self) -> vk::StructureType {
13931		self.s_type
13932	}
13933
13934	fn p_next(&self) -> *const std::ffi::c_void {
13935		self.p_next
13936	}
13937
13938	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13939		self.p_next = p_next.cast_const();
13940	}
13941
13942	fn address(&mut self) -> *mut std::ffi::c_void {
13943		std::ptr::from_mut(self).cast()
13944	}
13945}
13946
13947impl<'a> crate::construction::sealed::ChainNode
13948	for vk::AccelerationStructureGeometryAabbsDataKHR<'a>
13949{
13950	const S_TYPE: vk::StructureType =
13951		vk::StructureType::ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR;
13952
13953	fn s_type(&self) -> vk::StructureType {
13954		self.s_type
13955	}
13956
13957	fn p_next(&self) -> *const std::ffi::c_void {
13958		self.p_next
13959	}
13960
13961	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13962		self.p_next = p_next.cast_const();
13963	}
13964
13965	fn address(&mut self) -> *mut std::ffi::c_void {
13966		std::ptr::from_mut(self).cast()
13967	}
13968}
13969
13970impl<'a> crate::construction::sealed::ChainNode
13971	for vk::AccelerationStructureGeometryInstancesDataKHR<'a>
13972{
13973	const S_TYPE: vk::StructureType =
13974		vk::StructureType::ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR;
13975
13976	fn s_type(&self) -> vk::StructureType {
13977		self.s_type
13978	}
13979
13980	fn p_next(&self) -> *const std::ffi::c_void {
13981		self.p_next
13982	}
13983
13984	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
13985		self.p_next = p_next.cast_const();
13986	}
13987
13988	fn address(&mut self) -> *mut std::ffi::c_void {
13989		std::ptr::from_mut(self).cast()
13990	}
13991}
13992
13993impl<'a> crate::construction::sealed::ChainNode
13994	for vk::AccelerationStructureGeometryLinearSweptSpheresDataNV<'a>
13995{
13996	const S_TYPE: vk::StructureType =
13997		vk::StructureType::ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV;
13998
13999	fn s_type(&self) -> vk::StructureType {
14000		self.s_type
14001	}
14002
14003	fn p_next(&self) -> *const std::ffi::c_void {
14004		self.p_next
14005	}
14006
14007	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14008		self.p_next = p_next.cast_const();
14009	}
14010
14011	fn address(&mut self) -> *mut std::ffi::c_void {
14012		std::ptr::from_mut(self).cast()
14013	}
14014}
14015
14016impl<'a, 'root> crate::Extends<vk::AccelerationStructureGeometryKHR<'root>>
14017	for vk::AccelerationStructureGeometryLinearSweptSpheresDataNV<'a>
14018{
14019}
14020
14021impl<'a> crate::construction::sealed::ChainNode
14022	for vk::AccelerationStructureGeometrySpheresDataNV<'a>
14023{
14024	const S_TYPE: vk::StructureType =
14025		vk::StructureType::ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV;
14026
14027	fn s_type(&self) -> vk::StructureType {
14028		self.s_type
14029	}
14030
14031	fn p_next(&self) -> *const std::ffi::c_void {
14032		self.p_next
14033	}
14034
14035	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14036		self.p_next = p_next.cast_const();
14037	}
14038
14039	fn address(&mut self) -> *mut std::ffi::c_void {
14040		std::ptr::from_mut(self).cast()
14041	}
14042}
14043
14044impl<'a, 'root> crate::Extends<vk::AccelerationStructureGeometryKHR<'root>>
14045	for vk::AccelerationStructureGeometrySpheresDataNV<'a>
14046{
14047}
14048
14049impl<'a> crate::construction::sealed::ChainNode for vk::AccelerationStructureGeometryKHR<'a> {
14050	const S_TYPE: vk::StructureType = vk::StructureType::ACCELERATION_STRUCTURE_GEOMETRY_KHR;
14051
14052	fn s_type(&self) -> vk::StructureType {
14053		self.s_type
14054	}
14055
14056	fn p_next(&self) -> *const std::ffi::c_void {
14057		self.p_next
14058	}
14059
14060	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14061		self.p_next = p_next.cast_const();
14062	}
14063
14064	fn address(&mut self) -> *mut std::ffi::c_void {
14065		std::ptr::from_mut(self).cast()
14066	}
14067}
14068
14069impl<'a> crate::construction::sealed::ChainNode
14070	for vk::AccelerationStructureBuildGeometryInfoKHR<'a>
14071{
14072	const S_TYPE: vk::StructureType =
14073		vk::StructureType::ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR;
14074
14075	fn s_type(&self) -> vk::StructureType {
14076		self.s_type
14077	}
14078
14079	fn p_next(&self) -> *const std::ffi::c_void {
14080		self.p_next
14081	}
14082
14083	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14084		self.p_next = p_next.cast_const();
14085	}
14086
14087	fn address(&mut self) -> *mut std::ffi::c_void {
14088		std::ptr::from_mut(self).cast()
14089	}
14090}
14091
14092impl<'a> crate::construction::sealed::ChainNode for vk::AccelerationStructureCreateInfoKHR<'a> {
14093	const S_TYPE: vk::StructureType = vk::StructureType::ACCELERATION_STRUCTURE_CREATE_INFO_KHR;
14094
14095	fn s_type(&self) -> vk::StructureType {
14096		self.s_type
14097	}
14098
14099	fn p_next(&self) -> *const std::ffi::c_void {
14100		self.p_next
14101	}
14102
14103	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14104		self.p_next = p_next.cast_const();
14105	}
14106
14107	fn address(&mut self) -> *mut std::ffi::c_void {
14108		std::ptr::from_mut(self).cast()
14109	}
14110}
14111
14112impl<'a> crate::construction::sealed::ChainNode
14113	for vk::AccelerationStructureDeviceAddressInfoKHR<'a>
14114{
14115	const S_TYPE: vk::StructureType =
14116		vk::StructureType::ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR;
14117
14118	fn s_type(&self) -> vk::StructureType {
14119		self.s_type
14120	}
14121
14122	fn p_next(&self) -> *const std::ffi::c_void {
14123		self.p_next
14124	}
14125
14126	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14127		self.p_next = p_next.cast_const();
14128	}
14129
14130	fn address(&mut self) -> *mut std::ffi::c_void {
14131		std::ptr::from_mut(self).cast()
14132	}
14133}
14134
14135impl<'a> crate::construction::sealed::ChainNode for vk::AccelerationStructureVersionInfoKHR<'a> {
14136	const S_TYPE: vk::StructureType = vk::StructureType::ACCELERATION_STRUCTURE_VERSION_INFO_KHR;
14137
14138	fn s_type(&self) -> vk::StructureType {
14139		self.s_type
14140	}
14141
14142	fn p_next(&self) -> *const std::ffi::c_void {
14143		self.p_next
14144	}
14145
14146	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14147		self.p_next = p_next.cast_const();
14148	}
14149
14150	fn address(&mut self) -> *mut std::ffi::c_void {
14151		std::ptr::from_mut(self).cast()
14152	}
14153}
14154
14155impl<'a> crate::construction::sealed::ChainNode for vk::CopyAccelerationStructureInfoKHR<'a> {
14156	const S_TYPE: vk::StructureType = vk::StructureType::COPY_ACCELERATION_STRUCTURE_INFO_KHR;
14157
14158	fn s_type(&self) -> vk::StructureType {
14159		self.s_type
14160	}
14161
14162	fn p_next(&self) -> *const std::ffi::c_void {
14163		self.p_next
14164	}
14165
14166	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14167		self.p_next = p_next.cast_const();
14168	}
14169
14170	fn address(&mut self) -> *mut std::ffi::c_void {
14171		std::ptr::from_mut(self).cast()
14172	}
14173}
14174
14175impl<'a> crate::construction::sealed::ChainNode
14176	for vk::CopyAccelerationStructureToMemoryInfoKHR<'a>
14177{
14178	const S_TYPE: vk::StructureType =
14179		vk::StructureType::COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR;
14180
14181	fn s_type(&self) -> vk::StructureType {
14182		self.s_type
14183	}
14184
14185	fn p_next(&self) -> *const std::ffi::c_void {
14186		self.p_next
14187	}
14188
14189	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14190		self.p_next = p_next.cast_const();
14191	}
14192
14193	fn address(&mut self) -> *mut std::ffi::c_void {
14194		std::ptr::from_mut(self).cast()
14195	}
14196}
14197
14198impl<'a> crate::construction::sealed::ChainNode
14199	for vk::CopyMemoryToAccelerationStructureInfoKHR<'a>
14200{
14201	const S_TYPE: vk::StructureType =
14202		vk::StructureType::COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR;
14203
14204	fn s_type(&self) -> vk::StructureType {
14205		self.s_type
14206	}
14207
14208	fn p_next(&self) -> *const std::ffi::c_void {
14209		self.p_next
14210	}
14211
14212	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14213		self.p_next = p_next.cast_const();
14214	}
14215
14216	fn address(&mut self) -> *mut std::ffi::c_void {
14217		std::ptr::from_mut(self).cast()
14218	}
14219}
14220
14221impl<'a> crate::construction::sealed::ChainNode
14222	for vk::RayTracingPipelineInterfaceCreateInfoKHR<'a>
14223{
14224	const S_TYPE: vk::StructureType =
14225		vk::StructureType::RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR;
14226
14227	fn s_type(&self) -> vk::StructureType {
14228		self.s_type
14229	}
14230
14231	fn p_next(&self) -> *const std::ffi::c_void {
14232		self.p_next
14233	}
14234
14235	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14236		self.p_next = p_next.cast_const();
14237	}
14238
14239	fn address(&mut self) -> *mut std::ffi::c_void {
14240		std::ptr::from_mut(self).cast()
14241	}
14242}
14243
14244impl<'a> crate::construction::sealed::ChainNode for vk::PipelineLibraryCreateInfoKHR<'a> {
14245	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_LIBRARY_CREATE_INFO_KHR;
14246
14247	fn s_type(&self) -> vk::StructureType {
14248		self.s_type
14249	}
14250
14251	fn p_next(&self) -> *const std::ffi::c_void {
14252		self.p_next
14253	}
14254
14255	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14256		self.p_next = p_next.cast_const();
14257	}
14258
14259	fn address(&mut self) -> *mut std::ffi::c_void {
14260		std::ptr::from_mut(self).cast()
14261	}
14262}
14263
14264impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
14265	for vk::PipelineLibraryCreateInfoKHR<'a>
14266{
14267}
14268
14269impl<'a> crate::construction::sealed::ChainNode
14270	for vk::PhysicalDeviceExtendedDynamicStateFeaturesEXT<'a>
14271{
14272	const S_TYPE: vk::StructureType =
14273		vk::StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT;
14274
14275	fn s_type(&self) -> vk::StructureType {
14276		self.s_type
14277	}
14278
14279	fn p_next(&self) -> *const std::ffi::c_void {
14280		self.p_next.cast_const()
14281	}
14282
14283	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14284		self.p_next = p_next;
14285	}
14286
14287	fn address(&mut self) -> *mut std::ffi::c_void {
14288		std::ptr::from_mut(self).cast()
14289	}
14290}
14291
14292impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
14293	for vk::PhysicalDeviceExtendedDynamicStateFeaturesEXT<'a>
14294{
14295}
14296
14297impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
14298	for vk::PhysicalDeviceExtendedDynamicStateFeaturesEXT<'a>
14299{
14300}
14301
14302impl<'a> crate::construction::sealed::ChainNode
14303	for vk::PhysicalDeviceExtendedDynamicState2FeaturesEXT<'a>
14304{
14305	const S_TYPE: vk::StructureType =
14306		vk::StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT;
14307
14308	fn s_type(&self) -> vk::StructureType {
14309		self.s_type
14310	}
14311
14312	fn p_next(&self) -> *const std::ffi::c_void {
14313		self.p_next.cast_const()
14314	}
14315
14316	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14317		self.p_next = p_next;
14318	}
14319
14320	fn address(&mut self) -> *mut std::ffi::c_void {
14321		std::ptr::from_mut(self).cast()
14322	}
14323}
14324
14325impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
14326	for vk::PhysicalDeviceExtendedDynamicState2FeaturesEXT<'a>
14327{
14328}
14329
14330impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
14331	for vk::PhysicalDeviceExtendedDynamicState2FeaturesEXT<'a>
14332{
14333}
14334
14335impl<'a> crate::construction::sealed::ChainNode
14336	for vk::PhysicalDeviceExtendedDynamicState3FeaturesEXT<'a>
14337{
14338	const S_TYPE: vk::StructureType =
14339		vk::StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT;
14340
14341	fn s_type(&self) -> vk::StructureType {
14342		self.s_type
14343	}
14344
14345	fn p_next(&self) -> *const std::ffi::c_void {
14346		self.p_next.cast_const()
14347	}
14348
14349	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14350		self.p_next = p_next;
14351	}
14352
14353	fn address(&mut self) -> *mut std::ffi::c_void {
14354		std::ptr::from_mut(self).cast()
14355	}
14356}
14357
14358impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
14359	for vk::PhysicalDeviceExtendedDynamicState3FeaturesEXT<'a>
14360{
14361}
14362
14363impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
14364	for vk::PhysicalDeviceExtendedDynamicState3FeaturesEXT<'a>
14365{
14366}
14367
14368impl<'a> crate::construction::sealed::ChainNode
14369	for vk::PhysicalDeviceExtendedDynamicState3PropertiesEXT<'a>
14370{
14371	const S_TYPE: vk::StructureType =
14372		vk::StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT;
14373
14374	fn s_type(&self) -> vk::StructureType {
14375		self.s_type
14376	}
14377
14378	fn p_next(&self) -> *const std::ffi::c_void {
14379		self.p_next.cast_const()
14380	}
14381
14382	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14383		self.p_next = p_next;
14384	}
14385
14386	fn address(&mut self) -> *mut std::ffi::c_void {
14387		std::ptr::from_mut(self).cast()
14388	}
14389}
14390
14391impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
14392	for vk::PhysicalDeviceExtendedDynamicState3PropertiesEXT<'a>
14393{
14394}
14395
14396impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceExtendedFlagsFeaturesKHR<'a> {
14397	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_EXTENDED_FLAGS_FEATURES_KHR;
14398
14399	fn s_type(&self) -> vk::StructureType {
14400		self.s_type
14401	}
14402
14403	fn p_next(&self) -> *const std::ffi::c_void {
14404		self.p_next.cast_const()
14405	}
14406
14407	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14408		self.p_next = p_next;
14409	}
14410
14411	fn address(&mut self) -> *mut std::ffi::c_void {
14412		std::ptr::from_mut(self).cast()
14413	}
14414}
14415
14416impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
14417	for vk::PhysicalDeviceExtendedFlagsFeaturesKHR<'a>
14418{
14419}
14420
14421impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
14422	for vk::PhysicalDeviceExtendedFlagsFeaturesKHR<'a>
14423{
14424}
14425
14426impl<'a> crate::construction::sealed::ChainNode for vk::RenderPassTransformBeginInfoQCOM<'a> {
14427	const S_TYPE: vk::StructureType = vk::StructureType::RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM;
14428
14429	fn s_type(&self) -> vk::StructureType {
14430		self.s_type
14431	}
14432
14433	fn p_next(&self) -> *const std::ffi::c_void {
14434		self.p_next
14435	}
14436
14437	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14438		self.p_next = p_next.cast_const();
14439	}
14440
14441	fn address(&mut self) -> *mut std::ffi::c_void {
14442		std::ptr::from_mut(self).cast()
14443	}
14444}
14445
14446impl<'a, 'root> crate::Extends<vk::RenderPassBeginInfo<'root>>
14447	for vk::RenderPassTransformBeginInfoQCOM<'a>
14448{
14449}
14450
14451impl<'a> crate::construction::sealed::ChainNode for vk::CopyCommandTransformInfoQCOM<'a> {
14452	const S_TYPE: vk::StructureType = vk::StructureType::COPY_COMMAND_TRANSFORM_INFO_QCOM;
14453
14454	fn s_type(&self) -> vk::StructureType {
14455		self.s_type
14456	}
14457
14458	fn p_next(&self) -> *const std::ffi::c_void {
14459		self.p_next
14460	}
14461
14462	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14463		self.p_next = p_next.cast_const();
14464	}
14465
14466	fn address(&mut self) -> *mut std::ffi::c_void {
14467		std::ptr::from_mut(self).cast()
14468	}
14469}
14470
14471impl<'a, 'root> crate::Extends<vk::BufferImageCopy2<'root>>
14472	for vk::CopyCommandTransformInfoQCOM<'a>
14473{
14474}
14475
14476impl<'a, 'root> crate::Extends<vk::ImageBlit2<'root>> for vk::CopyCommandTransformInfoQCOM<'a> {}
14477
14478impl<'a, 'root> crate::Extends<vk::DeviceMemoryImageCopyKHR<'root>>
14479	for vk::CopyCommandTransformInfoQCOM<'a>
14480{
14481}
14482
14483impl<'a> crate::construction::sealed::ChainNode
14484	for vk::CommandBufferInheritanceRenderPassTransformInfoQCOM<'a>
14485{
14486	const S_TYPE: vk::StructureType =
14487		vk::StructureType::COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM;
14488
14489	fn s_type(&self) -> vk::StructureType {
14490		self.s_type
14491	}
14492
14493	fn p_next(&self) -> *const std::ffi::c_void {
14494		self.p_next
14495	}
14496
14497	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14498		self.p_next = p_next.cast_const();
14499	}
14500
14501	fn address(&mut self) -> *mut std::ffi::c_void {
14502		std::ptr::from_mut(self).cast()
14503	}
14504}
14505
14506impl<'a, 'root> crate::Extends<vk::CommandBufferInheritanceInfo<'root>>
14507	for vk::CommandBufferInheritanceRenderPassTransformInfoQCOM<'a>
14508{
14509}
14510
14511impl<'a> crate::construction::sealed::ChainNode
14512	for vk::PhysicalDevicePartitionedAccelerationStructureFeaturesNV<'a>
14513{
14514	const S_TYPE: vk::StructureType =
14515		vk::StructureType::PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV;
14516
14517	fn s_type(&self) -> vk::StructureType {
14518		self.s_type
14519	}
14520
14521	fn p_next(&self) -> *const std::ffi::c_void {
14522		self.p_next.cast_const()
14523	}
14524
14525	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14526		self.p_next = p_next;
14527	}
14528
14529	fn address(&mut self) -> *mut std::ffi::c_void {
14530		std::ptr::from_mut(self).cast()
14531	}
14532}
14533
14534impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
14535	for vk::PhysicalDevicePartitionedAccelerationStructureFeaturesNV<'a>
14536{
14537}
14538
14539impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
14540	for vk::PhysicalDevicePartitionedAccelerationStructureFeaturesNV<'a>
14541{
14542}
14543
14544impl<'a> crate::construction::sealed::ChainNode
14545	for vk::PhysicalDevicePartitionedAccelerationStructurePropertiesNV<'a>
14546{
14547	const S_TYPE: vk::StructureType =
14548		vk::StructureType::PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV;
14549
14550	fn s_type(&self) -> vk::StructureType {
14551		self.s_type
14552	}
14553
14554	fn p_next(&self) -> *const std::ffi::c_void {
14555		self.p_next.cast_const()
14556	}
14557
14558	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14559		self.p_next = p_next;
14560	}
14561
14562	fn address(&mut self) -> *mut std::ffi::c_void {
14563		std::ptr::from_mut(self).cast()
14564	}
14565}
14566
14567impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
14568	for vk::PhysicalDevicePartitionedAccelerationStructurePropertiesNV<'a>
14569{
14570}
14571
14572impl<'a> crate::construction::sealed::ChainNode
14573	for vk::PartitionedAccelerationStructureFlagsNV<'a>
14574{
14575	const S_TYPE: vk::StructureType = vk::StructureType::PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV;
14576
14577	fn s_type(&self) -> vk::StructureType {
14578		self.s_type
14579	}
14580
14581	fn p_next(&self) -> *const std::ffi::c_void {
14582		self.p_next.cast_const()
14583	}
14584
14585	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14586		self.p_next = p_next;
14587	}
14588
14589	fn address(&mut self) -> *mut std::ffi::c_void {
14590		std::ptr::from_mut(self).cast()
14591	}
14592}
14593
14594impl<'a, 'root> crate::Extends<vk::PartitionedAccelerationStructureInstancesInputNV<'root>>
14595	for vk::PartitionedAccelerationStructureFlagsNV<'a>
14596{
14597}
14598
14599impl<'a> crate::construction::sealed::ChainNode
14600	for vk::WriteDescriptorSetPartitionedAccelerationStructureNV<'a>
14601{
14602	const S_TYPE: vk::StructureType =
14603		vk::StructureType::WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV;
14604
14605	fn s_type(&self) -> vk::StructureType {
14606		self.s_type
14607	}
14608
14609	fn p_next(&self) -> *const std::ffi::c_void {
14610		self.p_next.cast_const()
14611	}
14612
14613	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14614		self.p_next = p_next;
14615	}
14616
14617	fn address(&mut self) -> *mut std::ffi::c_void {
14618		std::ptr::from_mut(self).cast()
14619	}
14620}
14621
14622impl<'a, 'root> crate::Extends<vk::WriteDescriptorSet<'root>>
14623	for vk::WriteDescriptorSetPartitionedAccelerationStructureNV<'a>
14624{
14625}
14626
14627impl<'a> crate::construction::sealed::ChainNode
14628	for vk::PartitionedAccelerationStructureInstancesInputNV<'a>
14629{
14630	const S_TYPE: vk::StructureType =
14631		vk::StructureType::PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV;
14632
14633	fn s_type(&self) -> vk::StructureType {
14634		self.s_type
14635	}
14636
14637	fn p_next(&self) -> *const std::ffi::c_void {
14638		self.p_next.cast_const()
14639	}
14640
14641	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14642		self.p_next = p_next;
14643	}
14644
14645	fn address(&mut self) -> *mut std::ffi::c_void {
14646		std::ptr::from_mut(self).cast()
14647	}
14648}
14649
14650impl<'a> crate::construction::sealed::ChainNode
14651	for vk::BuildPartitionedAccelerationStructureInfoNV<'a>
14652{
14653	const S_TYPE: vk::StructureType =
14654		vk::StructureType::BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV;
14655
14656	fn s_type(&self) -> vk::StructureType {
14657		self.s_type
14658	}
14659
14660	fn p_next(&self) -> *const std::ffi::c_void {
14661		self.p_next.cast_const()
14662	}
14663
14664	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14665		self.p_next = p_next;
14666	}
14667
14668	fn address(&mut self) -> *mut std::ffi::c_void {
14669		std::ptr::from_mut(self).cast()
14670	}
14671}
14672
14673impl<'a> crate::construction::sealed::ChainNode
14674	for vk::PhysicalDeviceDiagnosticsConfigFeaturesNV<'a>
14675{
14676	const S_TYPE: vk::StructureType =
14677		vk::StructureType::PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV;
14678
14679	fn s_type(&self) -> vk::StructureType {
14680		self.s_type
14681	}
14682
14683	fn p_next(&self) -> *const std::ffi::c_void {
14684		self.p_next.cast_const()
14685	}
14686
14687	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14688		self.p_next = p_next;
14689	}
14690
14691	fn address(&mut self) -> *mut std::ffi::c_void {
14692		std::ptr::from_mut(self).cast()
14693	}
14694}
14695
14696impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
14697	for vk::PhysicalDeviceDiagnosticsConfigFeaturesNV<'a>
14698{
14699}
14700
14701impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
14702	for vk::PhysicalDeviceDiagnosticsConfigFeaturesNV<'a>
14703{
14704}
14705
14706impl<'a> crate::construction::sealed::ChainNode for vk::DeviceDiagnosticsConfigCreateInfoNV<'a> {
14707	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV;
14708
14709	fn s_type(&self) -> vk::StructureType {
14710		self.s_type
14711	}
14712
14713	fn p_next(&self) -> *const std::ffi::c_void {
14714		self.p_next
14715	}
14716
14717	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14718		self.p_next = p_next.cast_const();
14719	}
14720
14721	fn address(&mut self) -> *mut std::ffi::c_void {
14722		std::ptr::from_mut(self).cast()
14723	}
14724}
14725
14726impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
14727	for vk::DeviceDiagnosticsConfigCreateInfoNV<'a>
14728{
14729}
14730
14731impl<'a> crate::construction::sealed::ChainNode
14732	for vk::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures<'a>
14733{
14734	const S_TYPE: vk::StructureType =
14735		vk::StructureType::PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES;
14736
14737	fn s_type(&self) -> vk::StructureType {
14738		self.s_type
14739	}
14740
14741	fn p_next(&self) -> *const std::ffi::c_void {
14742		self.p_next.cast_const()
14743	}
14744
14745	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14746		self.p_next = p_next;
14747	}
14748
14749	fn address(&mut self) -> *mut std::ffi::c_void {
14750		std::ptr::from_mut(self).cast()
14751	}
14752}
14753
14754impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
14755	for vk::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures<'a>
14756{
14757}
14758
14759impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
14760	for vk::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures<'a>
14761{
14762}
14763
14764impl<'a> crate::construction::sealed::ChainNode
14765	for vk::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR<'a>
14766{
14767	const S_TYPE: vk::StructureType =
14768		vk::StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR;
14769
14770	fn s_type(&self) -> vk::StructureType {
14771		self.s_type
14772	}
14773
14774	fn p_next(&self) -> *const std::ffi::c_void {
14775		self.p_next.cast_const()
14776	}
14777
14778	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14779		self.p_next = p_next;
14780	}
14781
14782	fn address(&mut self) -> *mut std::ffi::c_void {
14783		std::ptr::from_mut(self).cast()
14784	}
14785}
14786
14787impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
14788	for vk::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR<'a>
14789{
14790}
14791
14792impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
14793	for vk::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR<'a>
14794{
14795}
14796
14797impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceRobustness2FeaturesKHR<'a> {
14798	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR;
14799
14800	fn s_type(&self) -> vk::StructureType {
14801		self.s_type
14802	}
14803
14804	fn p_next(&self) -> *const std::ffi::c_void {
14805		self.p_next.cast_const()
14806	}
14807
14808	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14809		self.p_next = p_next;
14810	}
14811
14812	fn address(&mut self) -> *mut std::ffi::c_void {
14813		std::ptr::from_mut(self).cast()
14814	}
14815}
14816
14817impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
14818	for vk::PhysicalDeviceRobustness2FeaturesKHR<'a>
14819{
14820}
14821
14822impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
14823	for vk::PhysicalDeviceRobustness2FeaturesKHR<'a>
14824{
14825}
14826
14827impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceRobustness2PropertiesKHR<'a> {
14828	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR;
14829
14830	fn s_type(&self) -> vk::StructureType {
14831		self.s_type
14832	}
14833
14834	fn p_next(&self) -> *const std::ffi::c_void {
14835		self.p_next.cast_const()
14836	}
14837
14838	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14839		self.p_next = p_next;
14840	}
14841
14842	fn address(&mut self) -> *mut std::ffi::c_void {
14843		std::ptr::from_mut(self).cast()
14844	}
14845}
14846
14847impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
14848	for vk::PhysicalDeviceRobustness2PropertiesKHR<'a>
14849{
14850}
14851
14852impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceImageRobustnessFeatures<'a> {
14853	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES;
14854
14855	fn s_type(&self) -> vk::StructureType {
14856		self.s_type
14857	}
14858
14859	fn p_next(&self) -> *const std::ffi::c_void {
14860		self.p_next.cast_const()
14861	}
14862
14863	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14864		self.p_next = p_next;
14865	}
14866
14867	fn address(&mut self) -> *mut std::ffi::c_void {
14868		std::ptr::from_mut(self).cast()
14869	}
14870}
14871
14872impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
14873	for vk::PhysicalDeviceImageRobustnessFeatures<'a>
14874{
14875}
14876
14877impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
14878	for vk::PhysicalDeviceImageRobustnessFeatures<'a>
14879{
14880}
14881
14882impl<'a> crate::construction::sealed::ChainNode
14883	for vk::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR<'a>
14884{
14885	const S_TYPE: vk::StructureType =
14886		vk::StructureType::PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR;
14887
14888	fn s_type(&self) -> vk::StructureType {
14889		self.s_type
14890	}
14891
14892	fn p_next(&self) -> *const std::ffi::c_void {
14893		self.p_next.cast_const()
14894	}
14895
14896	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14897		self.p_next = p_next;
14898	}
14899
14900	fn address(&mut self) -> *mut std::ffi::c_void {
14901		std::ptr::from_mut(self).cast()
14902	}
14903}
14904
14905impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
14906	for vk::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR<'a>
14907{
14908}
14909
14910impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
14911	for vk::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR<'a>
14912{
14913}
14914
14915#[cfg(feature = "provisional")]
14916impl<'a> crate::construction::sealed::ChainNode
14917	for vk::PhysicalDevicePortabilitySubsetFeaturesKHR<'a>
14918{
14919	const S_TYPE: vk::StructureType =
14920		vk::StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR;
14921
14922	fn s_type(&self) -> vk::StructureType {
14923		self.s_type
14924	}
14925
14926	fn p_next(&self) -> *const std::ffi::c_void {
14927		self.p_next.cast_const()
14928	}
14929
14930	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14931		self.p_next = p_next;
14932	}
14933
14934	fn address(&mut self) -> *mut std::ffi::c_void {
14935		std::ptr::from_mut(self).cast()
14936	}
14937}
14938
14939#[cfg(feature = "provisional")]
14940impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
14941	for vk::PhysicalDevicePortabilitySubsetFeaturesKHR<'a>
14942{
14943}
14944
14945#[cfg(feature = "provisional")]
14946impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
14947	for vk::PhysicalDevicePortabilitySubsetFeaturesKHR<'a>
14948{
14949}
14950
14951#[cfg(feature = "provisional")]
14952impl<'a> crate::construction::sealed::ChainNode
14953	for vk::PhysicalDevicePortabilitySubsetPropertiesKHR<'a>
14954{
14955	const S_TYPE: vk::StructureType =
14956		vk::StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR;
14957
14958	fn s_type(&self) -> vk::StructureType {
14959		self.s_type
14960	}
14961
14962	fn p_next(&self) -> *const std::ffi::c_void {
14963		self.p_next.cast_const()
14964	}
14965
14966	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14967		self.p_next = p_next;
14968	}
14969
14970	fn address(&mut self) -> *mut std::ffi::c_void {
14971		std::ptr::from_mut(self).cast()
14972	}
14973}
14974
14975#[cfg(feature = "provisional")]
14976impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
14977	for vk::PhysicalDevicePortabilitySubsetPropertiesKHR<'a>
14978{
14979}
14980
14981impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDevice4444FormatsFeaturesEXT<'a> {
14982	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT;
14983
14984	fn s_type(&self) -> vk::StructureType {
14985		self.s_type
14986	}
14987
14988	fn p_next(&self) -> *const std::ffi::c_void {
14989		self.p_next.cast_const()
14990	}
14991
14992	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
14993		self.p_next = p_next;
14994	}
14995
14996	fn address(&mut self) -> *mut std::ffi::c_void {
14997		std::ptr::from_mut(self).cast()
14998	}
14999}
15000
15001impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
15002	for vk::PhysicalDevice4444FormatsFeaturesEXT<'a>
15003{
15004}
15005
15006impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
15007	for vk::PhysicalDevice4444FormatsFeaturesEXT<'a>
15008{
15009}
15010
15011impl<'a> crate::construction::sealed::ChainNode
15012	for vk::PhysicalDeviceSubpassShadingFeaturesHUAWEI<'a>
15013{
15014	const S_TYPE: vk::StructureType =
15015		vk::StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI;
15016
15017	fn s_type(&self) -> vk::StructureType {
15018		self.s_type
15019	}
15020
15021	fn p_next(&self) -> *const std::ffi::c_void {
15022		self.p_next.cast_const()
15023	}
15024
15025	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15026		self.p_next = p_next;
15027	}
15028
15029	fn address(&mut self) -> *mut std::ffi::c_void {
15030		std::ptr::from_mut(self).cast()
15031	}
15032}
15033
15034impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
15035	for vk::PhysicalDeviceSubpassShadingFeaturesHUAWEI<'a>
15036{
15037}
15038
15039impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
15040	for vk::PhysicalDeviceSubpassShadingFeaturesHUAWEI<'a>
15041{
15042}
15043
15044impl<'a> crate::construction::sealed::ChainNode
15045	for vk::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI<'a>
15046{
15047	const S_TYPE: vk::StructureType =
15048		vk::StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI;
15049
15050	fn s_type(&self) -> vk::StructureType {
15051		self.s_type
15052	}
15053
15054	fn p_next(&self) -> *const std::ffi::c_void {
15055		self.p_next.cast_const()
15056	}
15057
15058	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15059		self.p_next = p_next;
15060	}
15061
15062	fn address(&mut self) -> *mut std::ffi::c_void {
15063		std::ptr::from_mut(self).cast()
15064	}
15065}
15066
15067impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
15068	for vk::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI<'a>
15069{
15070}
15071
15072impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
15073	for vk::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI<'a>
15074{
15075}
15076
15077impl<'a> crate::construction::sealed::ChainNode
15078	for vk::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI<'a>
15079{
15080	const S_TYPE: vk::StructureType =
15081		vk::StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI;
15082
15083	fn s_type(&self) -> vk::StructureType {
15084		self.s_type
15085	}
15086
15087	fn p_next(&self) -> *const std::ffi::c_void {
15088		self.p_next.cast_const()
15089	}
15090
15091	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15092		self.p_next = p_next;
15093	}
15094
15095	fn address(&mut self) -> *mut std::ffi::c_void {
15096		std::ptr::from_mut(self).cast()
15097	}
15098}
15099
15100impl<'a, 'root> crate::Extends<vk::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI<'root>>
15101	for vk::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI<'a>
15102{
15103}
15104
15105impl<'a> crate::construction::sealed::ChainNode for vk::BufferCopy2<'a> {
15106	const S_TYPE: vk::StructureType = vk::StructureType::BUFFER_COPY_2;
15107
15108	fn s_type(&self) -> vk::StructureType {
15109		self.s_type
15110	}
15111
15112	fn p_next(&self) -> *const std::ffi::c_void {
15113		self.p_next
15114	}
15115
15116	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15117		self.p_next = p_next.cast_const();
15118	}
15119
15120	fn address(&mut self) -> *mut std::ffi::c_void {
15121		std::ptr::from_mut(self).cast()
15122	}
15123}
15124
15125impl<'a> crate::construction::sealed::ChainNode for vk::ImageCopy2<'a> {
15126	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_COPY_2;
15127
15128	fn s_type(&self) -> vk::StructureType {
15129		self.s_type
15130	}
15131
15132	fn p_next(&self) -> *const std::ffi::c_void {
15133		self.p_next
15134	}
15135
15136	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15137		self.p_next = p_next.cast_const();
15138	}
15139
15140	fn address(&mut self) -> *mut std::ffi::c_void {
15141		std::ptr::from_mut(self).cast()
15142	}
15143}
15144
15145impl<'a> crate::construction::sealed::ChainNode for vk::ImageBlit2<'a> {
15146	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_BLIT_2;
15147
15148	fn s_type(&self) -> vk::StructureType {
15149		self.s_type
15150	}
15151
15152	fn p_next(&self) -> *const std::ffi::c_void {
15153		self.p_next
15154	}
15155
15156	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15157		self.p_next = p_next.cast_const();
15158	}
15159
15160	fn address(&mut self) -> *mut std::ffi::c_void {
15161		std::ptr::from_mut(self).cast()
15162	}
15163}
15164
15165impl<'a> crate::construction::sealed::ChainNode for vk::BufferImageCopy2<'a> {
15166	const S_TYPE: vk::StructureType = vk::StructureType::BUFFER_IMAGE_COPY_2;
15167
15168	fn s_type(&self) -> vk::StructureType {
15169		self.s_type
15170	}
15171
15172	fn p_next(&self) -> *const std::ffi::c_void {
15173		self.p_next
15174	}
15175
15176	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15177		self.p_next = p_next.cast_const();
15178	}
15179
15180	fn address(&mut self) -> *mut std::ffi::c_void {
15181		std::ptr::from_mut(self).cast()
15182	}
15183}
15184
15185impl<'a> crate::construction::sealed::ChainNode for vk::ImageResolve2<'a> {
15186	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_RESOLVE_2;
15187
15188	fn s_type(&self) -> vk::StructureType {
15189		self.s_type
15190	}
15191
15192	fn p_next(&self) -> *const std::ffi::c_void {
15193		self.p_next
15194	}
15195
15196	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15197		self.p_next = p_next.cast_const();
15198	}
15199
15200	fn address(&mut self) -> *mut std::ffi::c_void {
15201		std::ptr::from_mut(self).cast()
15202	}
15203}
15204
15205impl<'a> crate::construction::sealed::ChainNode for vk::CopyBufferInfo2<'a> {
15206	const S_TYPE: vk::StructureType = vk::StructureType::COPY_BUFFER_INFO_2;
15207
15208	fn s_type(&self) -> vk::StructureType {
15209		self.s_type
15210	}
15211
15212	fn p_next(&self) -> *const std::ffi::c_void {
15213		self.p_next
15214	}
15215
15216	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15217		self.p_next = p_next.cast_const();
15218	}
15219
15220	fn address(&mut self) -> *mut std::ffi::c_void {
15221		std::ptr::from_mut(self).cast()
15222	}
15223}
15224
15225impl<'a> crate::construction::sealed::ChainNode for vk::CopyImageInfo2<'a> {
15226	const S_TYPE: vk::StructureType = vk::StructureType::COPY_IMAGE_INFO_2;
15227
15228	fn s_type(&self) -> vk::StructureType {
15229		self.s_type
15230	}
15231
15232	fn p_next(&self) -> *const std::ffi::c_void {
15233		self.p_next
15234	}
15235
15236	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15237		self.p_next = p_next.cast_const();
15238	}
15239
15240	fn address(&mut self) -> *mut std::ffi::c_void {
15241		std::ptr::from_mut(self).cast()
15242	}
15243}
15244
15245impl<'a> crate::construction::sealed::ChainNode for vk::BlitImageInfo2<'a> {
15246	const S_TYPE: vk::StructureType = vk::StructureType::BLIT_IMAGE_INFO_2;
15247
15248	fn s_type(&self) -> vk::StructureType {
15249		self.s_type
15250	}
15251
15252	fn p_next(&self) -> *const std::ffi::c_void {
15253		self.p_next
15254	}
15255
15256	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15257		self.p_next = p_next.cast_const();
15258	}
15259
15260	fn address(&mut self) -> *mut std::ffi::c_void {
15261		std::ptr::from_mut(self).cast()
15262	}
15263}
15264
15265impl<'a> crate::construction::sealed::ChainNode for vk::CopyBufferToImageInfo2<'a> {
15266	const S_TYPE: vk::StructureType = vk::StructureType::COPY_BUFFER_TO_IMAGE_INFO_2;
15267
15268	fn s_type(&self) -> vk::StructureType {
15269		self.s_type
15270	}
15271
15272	fn p_next(&self) -> *const std::ffi::c_void {
15273		self.p_next
15274	}
15275
15276	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15277		self.p_next = p_next.cast_const();
15278	}
15279
15280	fn address(&mut self) -> *mut std::ffi::c_void {
15281		std::ptr::from_mut(self).cast()
15282	}
15283}
15284
15285impl<'a> crate::construction::sealed::ChainNode for vk::CopyImageToBufferInfo2<'a> {
15286	const S_TYPE: vk::StructureType = vk::StructureType::COPY_IMAGE_TO_BUFFER_INFO_2;
15287
15288	fn s_type(&self) -> vk::StructureType {
15289		self.s_type
15290	}
15291
15292	fn p_next(&self) -> *const std::ffi::c_void {
15293		self.p_next
15294	}
15295
15296	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15297		self.p_next = p_next.cast_const();
15298	}
15299
15300	fn address(&mut self) -> *mut std::ffi::c_void {
15301		std::ptr::from_mut(self).cast()
15302	}
15303}
15304
15305impl<'a> crate::construction::sealed::ChainNode for vk::ResolveImageInfo2<'a> {
15306	const S_TYPE: vk::StructureType = vk::StructureType::RESOLVE_IMAGE_INFO_2;
15307
15308	fn s_type(&self) -> vk::StructureType {
15309		self.s_type
15310	}
15311
15312	fn p_next(&self) -> *const std::ffi::c_void {
15313		self.p_next
15314	}
15315
15316	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15317		self.p_next = p_next.cast_const();
15318	}
15319
15320	fn address(&mut self) -> *mut std::ffi::c_void {
15321		std::ptr::from_mut(self).cast()
15322	}
15323}
15324
15325impl<'a> crate::construction::sealed::ChainNode
15326	for vk::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT<'a>
15327{
15328	const S_TYPE: vk::StructureType =
15329		vk::StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT;
15330
15331	fn s_type(&self) -> vk::StructureType {
15332		self.s_type
15333	}
15334
15335	fn p_next(&self) -> *const std::ffi::c_void {
15336		self.p_next.cast_const()
15337	}
15338
15339	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15340		self.p_next = p_next;
15341	}
15342
15343	fn address(&mut self) -> *mut std::ffi::c_void {
15344		std::ptr::from_mut(self).cast()
15345	}
15346}
15347
15348impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
15349	for vk::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT<'a>
15350{
15351}
15352
15353impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
15354	for vk::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT<'a>
15355{
15356}
15357
15358impl<'a> crate::construction::sealed::ChainNode for vk::FragmentShadingRateAttachmentInfoKHR<'a> {
15359	const S_TYPE: vk::StructureType = vk::StructureType::FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR;
15360
15361	fn s_type(&self) -> vk::StructureType {
15362		self.s_type
15363	}
15364
15365	fn p_next(&self) -> *const std::ffi::c_void {
15366		self.p_next
15367	}
15368
15369	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15370		self.p_next = p_next.cast_const();
15371	}
15372
15373	fn address(&mut self) -> *mut std::ffi::c_void {
15374		std::ptr::from_mut(self).cast()
15375	}
15376}
15377
15378impl<'a, 'root> crate::Extends<vk::SubpassDescription2<'root>>
15379	for vk::FragmentShadingRateAttachmentInfoKHR<'a>
15380{
15381}
15382
15383impl<'a> crate::construction::sealed::ChainNode
15384	for vk::PipelineFragmentShadingRateStateCreateInfoKHR<'a>
15385{
15386	const S_TYPE: vk::StructureType =
15387		vk::StructureType::PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR;
15388
15389	fn s_type(&self) -> vk::StructureType {
15390		self.s_type
15391	}
15392
15393	fn p_next(&self) -> *const std::ffi::c_void {
15394		self.p_next
15395	}
15396
15397	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15398		self.p_next = p_next.cast_const();
15399	}
15400
15401	fn address(&mut self) -> *mut std::ffi::c_void {
15402		std::ptr::from_mut(self).cast()
15403	}
15404}
15405
15406impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
15407	for vk::PipelineFragmentShadingRateStateCreateInfoKHR<'a>
15408{
15409}
15410
15411impl<'a> crate::construction::sealed::ChainNode
15412	for vk::PhysicalDeviceFragmentShadingRateFeaturesKHR<'a>
15413{
15414	const S_TYPE: vk::StructureType =
15415		vk::StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR;
15416
15417	fn s_type(&self) -> vk::StructureType {
15418		self.s_type
15419	}
15420
15421	fn p_next(&self) -> *const std::ffi::c_void {
15422		self.p_next.cast_const()
15423	}
15424
15425	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15426		self.p_next = p_next;
15427	}
15428
15429	fn address(&mut self) -> *mut std::ffi::c_void {
15430		std::ptr::from_mut(self).cast()
15431	}
15432}
15433
15434impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
15435	for vk::PhysicalDeviceFragmentShadingRateFeaturesKHR<'a>
15436{
15437}
15438
15439impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
15440	for vk::PhysicalDeviceFragmentShadingRateFeaturesKHR<'a>
15441{
15442}
15443
15444impl<'a> crate::construction::sealed::ChainNode
15445	for vk::PhysicalDeviceFragmentShadingRatePropertiesKHR<'a>
15446{
15447	const S_TYPE: vk::StructureType =
15448		vk::StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR;
15449
15450	fn s_type(&self) -> vk::StructureType {
15451		self.s_type
15452	}
15453
15454	fn p_next(&self) -> *const std::ffi::c_void {
15455		self.p_next.cast_const()
15456	}
15457
15458	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15459		self.p_next = p_next;
15460	}
15461
15462	fn address(&mut self) -> *mut std::ffi::c_void {
15463		std::ptr::from_mut(self).cast()
15464	}
15465}
15466
15467impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
15468	for vk::PhysicalDeviceFragmentShadingRatePropertiesKHR<'a>
15469{
15470}
15471
15472impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceFragmentShadingRateKHR<'a> {
15473	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR;
15474
15475	fn s_type(&self) -> vk::StructureType {
15476		self.s_type
15477	}
15478
15479	fn p_next(&self) -> *const std::ffi::c_void {
15480		self.p_next.cast_const()
15481	}
15482
15483	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15484		self.p_next = p_next;
15485	}
15486
15487	fn address(&mut self) -> *mut std::ffi::c_void {
15488		std::ptr::from_mut(self).cast()
15489	}
15490}
15491
15492impl<'a> crate::construction::sealed::ChainNode
15493	for vk::PhysicalDeviceShaderTerminateInvocationFeatures<'a>
15494{
15495	const S_TYPE: vk::StructureType =
15496		vk::StructureType::PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES;
15497
15498	fn s_type(&self) -> vk::StructureType {
15499		self.s_type
15500	}
15501
15502	fn p_next(&self) -> *const std::ffi::c_void {
15503		self.p_next.cast_const()
15504	}
15505
15506	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15507		self.p_next = p_next;
15508	}
15509
15510	fn address(&mut self) -> *mut std::ffi::c_void {
15511		std::ptr::from_mut(self).cast()
15512	}
15513}
15514
15515impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
15516	for vk::PhysicalDeviceShaderTerminateInvocationFeatures<'a>
15517{
15518}
15519
15520impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
15521	for vk::PhysicalDeviceShaderTerminateInvocationFeatures<'a>
15522{
15523}
15524
15525impl<'a> crate::construction::sealed::ChainNode
15526	for vk::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV<'a>
15527{
15528	const S_TYPE: vk::StructureType =
15529		vk::StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV;
15530
15531	fn s_type(&self) -> vk::StructureType {
15532		self.s_type
15533	}
15534
15535	fn p_next(&self) -> *const std::ffi::c_void {
15536		self.p_next.cast_const()
15537	}
15538
15539	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15540		self.p_next = p_next;
15541	}
15542
15543	fn address(&mut self) -> *mut std::ffi::c_void {
15544		std::ptr::from_mut(self).cast()
15545	}
15546}
15547
15548impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
15549	for vk::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV<'a>
15550{
15551}
15552
15553impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
15554	for vk::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV<'a>
15555{
15556}
15557
15558impl<'a> crate::construction::sealed::ChainNode
15559	for vk::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV<'a>
15560{
15561	const S_TYPE: vk::StructureType =
15562		vk::StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV;
15563
15564	fn s_type(&self) -> vk::StructureType {
15565		self.s_type
15566	}
15567
15568	fn p_next(&self) -> *const std::ffi::c_void {
15569		self.p_next.cast_const()
15570	}
15571
15572	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15573		self.p_next = p_next;
15574	}
15575
15576	fn address(&mut self) -> *mut std::ffi::c_void {
15577		std::ptr::from_mut(self).cast()
15578	}
15579}
15580
15581impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
15582	for vk::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV<'a>
15583{
15584}
15585
15586impl<'a> crate::construction::sealed::ChainNode
15587	for vk::PipelineFragmentShadingRateEnumStateCreateInfoNV<'a>
15588{
15589	const S_TYPE: vk::StructureType =
15590		vk::StructureType::PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV;
15591
15592	fn s_type(&self) -> vk::StructureType {
15593		self.s_type
15594	}
15595
15596	fn p_next(&self) -> *const std::ffi::c_void {
15597		self.p_next
15598	}
15599
15600	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15601		self.p_next = p_next.cast_const();
15602	}
15603
15604	fn address(&mut self) -> *mut std::ffi::c_void {
15605		std::ptr::from_mut(self).cast()
15606	}
15607}
15608
15609impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
15610	for vk::PipelineFragmentShadingRateEnumStateCreateInfoNV<'a>
15611{
15612}
15613
15614impl<'a> crate::construction::sealed::ChainNode for vk::AccelerationStructureBuildSizesInfoKHR<'a> {
15615	const S_TYPE: vk::StructureType = vk::StructureType::ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR;
15616
15617	fn s_type(&self) -> vk::StructureType {
15618		self.s_type
15619	}
15620
15621	fn p_next(&self) -> *const std::ffi::c_void {
15622		self.p_next.cast_const()
15623	}
15624
15625	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15626		self.p_next = p_next;
15627	}
15628
15629	fn address(&mut self) -> *mut std::ffi::c_void {
15630		std::ptr::from_mut(self).cast()
15631	}
15632}
15633
15634impl<'a> crate::construction::sealed::ChainNode
15635	for vk::PhysicalDeviceImage2DViewOf3DFeaturesEXT<'a>
15636{
15637	const S_TYPE: vk::StructureType =
15638		vk::StructureType::PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT;
15639
15640	fn s_type(&self) -> vk::StructureType {
15641		self.s_type
15642	}
15643
15644	fn p_next(&self) -> *const std::ffi::c_void {
15645		self.p_next.cast_const()
15646	}
15647
15648	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15649		self.p_next = p_next;
15650	}
15651
15652	fn address(&mut self) -> *mut std::ffi::c_void {
15653		std::ptr::from_mut(self).cast()
15654	}
15655}
15656
15657impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
15658	for vk::PhysicalDeviceImage2DViewOf3DFeaturesEXT<'a>
15659{
15660}
15661
15662impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
15663	for vk::PhysicalDeviceImage2DViewOf3DFeaturesEXT<'a>
15664{
15665}
15666
15667impl<'a> crate::construction::sealed::ChainNode
15668	for vk::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT<'a>
15669{
15670	const S_TYPE: vk::StructureType =
15671		vk::StructureType::PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT;
15672
15673	fn s_type(&self) -> vk::StructureType {
15674		self.s_type
15675	}
15676
15677	fn p_next(&self) -> *const std::ffi::c_void {
15678		self.p_next.cast_const()
15679	}
15680
15681	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15682		self.p_next = p_next;
15683	}
15684
15685	fn address(&mut self) -> *mut std::ffi::c_void {
15686		std::ptr::from_mut(self).cast()
15687	}
15688}
15689
15690impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
15691	for vk::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT<'a>
15692{
15693}
15694
15695impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
15696	for vk::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT<'a>
15697{
15698}
15699
15700impl<'a> crate::construction::sealed::ChainNode
15701	for vk::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT<'a>
15702{
15703	const S_TYPE: vk::StructureType =
15704		vk::StructureType::PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT;
15705
15706	fn s_type(&self) -> vk::StructureType {
15707		self.s_type
15708	}
15709
15710	fn p_next(&self) -> *const std::ffi::c_void {
15711		self.p_next.cast_const()
15712	}
15713
15714	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15715		self.p_next = p_next;
15716	}
15717
15718	fn address(&mut self) -> *mut std::ffi::c_void {
15719		std::ptr::from_mut(self).cast()
15720	}
15721}
15722
15723impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
15724	for vk::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT<'a>
15725{
15726}
15727
15728impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
15729	for vk::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT<'a>
15730{
15731}
15732
15733impl<'a> crate::construction::sealed::ChainNode
15734	for vk::PhysicalDeviceLegacyVertexAttributesFeaturesEXT<'a>
15735{
15736	const S_TYPE: vk::StructureType =
15737		vk::StructureType::PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT;
15738
15739	fn s_type(&self) -> vk::StructureType {
15740		self.s_type
15741	}
15742
15743	fn p_next(&self) -> *const std::ffi::c_void {
15744		self.p_next.cast_const()
15745	}
15746
15747	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15748		self.p_next = p_next;
15749	}
15750
15751	fn address(&mut self) -> *mut std::ffi::c_void {
15752		std::ptr::from_mut(self).cast()
15753	}
15754}
15755
15756impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
15757	for vk::PhysicalDeviceLegacyVertexAttributesFeaturesEXT<'a>
15758{
15759}
15760
15761impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
15762	for vk::PhysicalDeviceLegacyVertexAttributesFeaturesEXT<'a>
15763{
15764}
15765
15766impl<'a> crate::construction::sealed::ChainNode
15767	for vk::PhysicalDeviceLegacyVertexAttributesPropertiesEXT<'a>
15768{
15769	const S_TYPE: vk::StructureType =
15770		vk::StructureType::PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT;
15771
15772	fn s_type(&self) -> vk::StructureType {
15773		self.s_type
15774	}
15775
15776	fn p_next(&self) -> *const std::ffi::c_void {
15777		self.p_next.cast_const()
15778	}
15779
15780	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15781		self.p_next = p_next;
15782	}
15783
15784	fn address(&mut self) -> *mut std::ffi::c_void {
15785		std::ptr::from_mut(self).cast()
15786	}
15787}
15788
15789impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
15790	for vk::PhysicalDeviceLegacyVertexAttributesPropertiesEXT<'a>
15791{
15792}
15793
15794impl<'a> crate::construction::sealed::ChainNode
15795	for vk::PhysicalDeviceMutableDescriptorTypeFeaturesEXT<'a>
15796{
15797	const S_TYPE: vk::StructureType =
15798		vk::StructureType::PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT;
15799
15800	fn s_type(&self) -> vk::StructureType {
15801		self.s_type
15802	}
15803
15804	fn p_next(&self) -> *const std::ffi::c_void {
15805		self.p_next.cast_const()
15806	}
15807
15808	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15809		self.p_next = p_next;
15810	}
15811
15812	fn address(&mut self) -> *mut std::ffi::c_void {
15813		std::ptr::from_mut(self).cast()
15814	}
15815}
15816
15817impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
15818	for vk::PhysicalDeviceMutableDescriptorTypeFeaturesEXT<'a>
15819{
15820}
15821
15822impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
15823	for vk::PhysicalDeviceMutableDescriptorTypeFeaturesEXT<'a>
15824{
15825}
15826
15827impl<'a> crate::construction::sealed::ChainNode for vk::MutableDescriptorTypeCreateInfoEXT<'a> {
15828	const S_TYPE: vk::StructureType = vk::StructureType::MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT;
15829
15830	fn s_type(&self) -> vk::StructureType {
15831		self.s_type
15832	}
15833
15834	fn p_next(&self) -> *const std::ffi::c_void {
15835		self.p_next
15836	}
15837
15838	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15839		self.p_next = p_next.cast_const();
15840	}
15841
15842	fn address(&mut self) -> *mut std::ffi::c_void {
15843		std::ptr::from_mut(self).cast()
15844	}
15845}
15846
15847impl<'a, 'root> crate::Extends<vk::DescriptorSetLayoutCreateInfo<'root>>
15848	for vk::MutableDescriptorTypeCreateInfoEXT<'a>
15849{
15850}
15851
15852impl<'a, 'root> crate::Extends<vk::DescriptorPoolCreateInfo<'root>>
15853	for vk::MutableDescriptorTypeCreateInfoEXT<'a>
15854{
15855}
15856
15857impl<'a> crate::construction::sealed::ChainNode
15858	for vk::PhysicalDeviceDepthClipControlFeaturesEXT<'a>
15859{
15860	const S_TYPE: vk::StructureType =
15861		vk::StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT;
15862
15863	fn s_type(&self) -> vk::StructureType {
15864		self.s_type
15865	}
15866
15867	fn p_next(&self) -> *const std::ffi::c_void {
15868		self.p_next.cast_const()
15869	}
15870
15871	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15872		self.p_next = p_next;
15873	}
15874
15875	fn address(&mut self) -> *mut std::ffi::c_void {
15876		std::ptr::from_mut(self).cast()
15877	}
15878}
15879
15880impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
15881	for vk::PhysicalDeviceDepthClipControlFeaturesEXT<'a>
15882{
15883}
15884
15885impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
15886	for vk::PhysicalDeviceDepthClipControlFeaturesEXT<'a>
15887{
15888}
15889
15890impl<'a> crate::construction::sealed::ChainNode
15891	for vk::PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT<'a>
15892{
15893	const S_TYPE: vk::StructureType =
15894		vk::StructureType::PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT;
15895
15896	fn s_type(&self) -> vk::StructureType {
15897		self.s_type
15898	}
15899
15900	fn p_next(&self) -> *const std::ffi::c_void {
15901		self.p_next.cast_const()
15902	}
15903
15904	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15905		self.p_next = p_next;
15906	}
15907
15908	fn address(&mut self) -> *mut std::ffi::c_void {
15909		std::ptr::from_mut(self).cast()
15910	}
15911}
15912
15913impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
15914	for vk::PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT<'a>
15915{
15916}
15917
15918impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
15919	for vk::PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT<'a>
15920{
15921}
15922
15923impl<'a> crate::construction::sealed::ChainNode for vk::BeginCustomResolveInfoEXT<'a> {
15924	const S_TYPE: vk::StructureType = vk::StructureType::BEGIN_CUSTOM_RESOLVE_INFO_EXT;
15925
15926	fn s_type(&self) -> vk::StructureType {
15927		self.s_type
15928	}
15929
15930	fn p_next(&self) -> *const std::ffi::c_void {
15931		self.p_next.cast_const()
15932	}
15933
15934	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15935		self.p_next = p_next;
15936	}
15937
15938	fn address(&mut self) -> *mut std::ffi::c_void {
15939		std::ptr::from_mut(self).cast()
15940	}
15941}
15942
15943impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceCustomResolveFeaturesEXT<'a> {
15944	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT;
15945
15946	fn s_type(&self) -> vk::StructureType {
15947		self.s_type
15948	}
15949
15950	fn p_next(&self) -> *const std::ffi::c_void {
15951		self.p_next.cast_const()
15952	}
15953
15954	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15955		self.p_next = p_next;
15956	}
15957
15958	fn address(&mut self) -> *mut std::ffi::c_void {
15959		std::ptr::from_mut(self).cast()
15960	}
15961}
15962
15963impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
15964	for vk::PhysicalDeviceCustomResolveFeaturesEXT<'a>
15965{
15966}
15967
15968impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
15969	for vk::PhysicalDeviceCustomResolveFeaturesEXT<'a>
15970{
15971}
15972
15973impl<'a> crate::construction::sealed::ChainNode for vk::CustomResolveCreateInfoEXT<'a> {
15974	const S_TYPE: vk::StructureType = vk::StructureType::CUSTOM_RESOLVE_CREATE_INFO_EXT;
15975
15976	fn s_type(&self) -> vk::StructureType {
15977		self.s_type
15978	}
15979
15980	fn p_next(&self) -> *const std::ffi::c_void {
15981		self.p_next
15982	}
15983
15984	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
15985		self.p_next = p_next.cast_const();
15986	}
15987
15988	fn address(&mut self) -> *mut std::ffi::c_void {
15989		std::ptr::from_mut(self).cast()
15990	}
15991}
15992
15993impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
15994	for vk::CustomResolveCreateInfoEXT<'a>
15995{
15996}
15997
15998impl<'a, 'root> crate::Extends<vk::CommandBufferInheritanceInfo<'root>>
15999	for vk::CustomResolveCreateInfoEXT<'a>
16000{
16001}
16002
16003impl<'a, 'root> crate::Extends<vk::ShaderCreateInfoEXT<'root>>
16004	for vk::CustomResolveCreateInfoEXT<'a>
16005{
16006}
16007
16008impl<'a> crate::construction::sealed::ChainNode
16009	for vk::PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT<'a>
16010{
16011	const S_TYPE: vk::StructureType =
16012		vk::StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT;
16013
16014	fn s_type(&self) -> vk::StructureType {
16015		self.s_type
16016	}
16017
16018	fn p_next(&self) -> *const std::ffi::c_void {
16019		self.p_next.cast_const()
16020	}
16021
16022	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16023		self.p_next = p_next;
16024	}
16025
16026	fn address(&mut self) -> *mut std::ffi::c_void {
16027		std::ptr::from_mut(self).cast()
16028	}
16029}
16030
16031impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
16032	for vk::PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT<'a>
16033{
16034}
16035
16036impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
16037	for vk::PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT<'a>
16038{
16039}
16040
16041impl<'a> crate::construction::sealed::ChainNode
16042	for vk::PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT<'a>
16043{
16044	const S_TYPE: vk::StructureType =
16045		vk::StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT;
16046
16047	fn s_type(&self) -> vk::StructureType {
16048		self.s_type
16049	}
16050
16051	fn p_next(&self) -> *const std::ffi::c_void {
16052		self.p_next.cast_const()
16053	}
16054
16055	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16056		self.p_next = p_next;
16057	}
16058
16059	fn address(&mut self) -> *mut std::ffi::c_void {
16060		std::ptr::from_mut(self).cast()
16061	}
16062}
16063
16064impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
16065	for vk::PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT<'a>
16066{
16067}
16068
16069impl<'a> crate::construction::sealed::ChainNode for vk::GeneratedCommandsPipelineInfoEXT<'a> {
16070	const S_TYPE: vk::StructureType = vk::StructureType::GENERATED_COMMANDS_PIPELINE_INFO_EXT;
16071
16072	fn s_type(&self) -> vk::StructureType {
16073		self.s_type
16074	}
16075
16076	fn p_next(&self) -> *const std::ffi::c_void {
16077		self.p_next.cast_const()
16078	}
16079
16080	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16081		self.p_next = p_next;
16082	}
16083
16084	fn address(&mut self) -> *mut std::ffi::c_void {
16085		std::ptr::from_mut(self).cast()
16086	}
16087}
16088
16089impl<'a, 'root> crate::Extends<vk::GeneratedCommandsInfoEXT<'root>>
16090	for vk::GeneratedCommandsPipelineInfoEXT<'a>
16091{
16092}
16093
16094impl<'a, 'root> crate::Extends<vk::GeneratedCommandsMemoryRequirementsInfoEXT<'root>>
16095	for vk::GeneratedCommandsPipelineInfoEXT<'a>
16096{
16097}
16098
16099impl<'a> crate::construction::sealed::ChainNode for vk::GeneratedCommandsShaderInfoEXT<'a> {
16100	const S_TYPE: vk::StructureType = vk::StructureType::GENERATED_COMMANDS_SHADER_INFO_EXT;
16101
16102	fn s_type(&self) -> vk::StructureType {
16103		self.s_type
16104	}
16105
16106	fn p_next(&self) -> *const std::ffi::c_void {
16107		self.p_next.cast_const()
16108	}
16109
16110	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16111		self.p_next = p_next;
16112	}
16113
16114	fn address(&mut self) -> *mut std::ffi::c_void {
16115		std::ptr::from_mut(self).cast()
16116	}
16117}
16118
16119impl<'a, 'root> crate::Extends<vk::GeneratedCommandsInfoEXT<'root>>
16120	for vk::GeneratedCommandsShaderInfoEXT<'a>
16121{
16122}
16123
16124impl<'a, 'root> crate::Extends<vk::GeneratedCommandsMemoryRequirementsInfoEXT<'root>>
16125	for vk::GeneratedCommandsShaderInfoEXT<'a>
16126{
16127}
16128
16129impl<'a> crate::construction::sealed::ChainNode
16130	for vk::GeneratedCommandsMemoryRequirementsInfoEXT<'a>
16131{
16132	const S_TYPE: vk::StructureType =
16133		vk::StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT;
16134
16135	fn s_type(&self) -> vk::StructureType {
16136		self.s_type
16137	}
16138
16139	fn p_next(&self) -> *const std::ffi::c_void {
16140		self.p_next
16141	}
16142
16143	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16144		self.p_next = p_next.cast_const();
16145	}
16146
16147	fn address(&mut self) -> *mut std::ffi::c_void {
16148		std::ptr::from_mut(self).cast()
16149	}
16150}
16151
16152impl<'a> crate::construction::sealed::ChainNode for vk::IndirectExecutionSetPipelineInfoEXT<'a> {
16153	const S_TYPE: vk::StructureType = vk::StructureType::INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT;
16154
16155	fn s_type(&self) -> vk::StructureType {
16156		self.s_type
16157	}
16158
16159	fn p_next(&self) -> *const std::ffi::c_void {
16160		self.p_next
16161	}
16162
16163	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16164		self.p_next = p_next.cast_const();
16165	}
16166
16167	fn address(&mut self) -> *mut std::ffi::c_void {
16168		std::ptr::from_mut(self).cast()
16169	}
16170}
16171
16172impl<'a> crate::construction::sealed::ChainNode
16173	for vk::IndirectExecutionSetShaderLayoutInfoEXT<'a>
16174{
16175	const S_TYPE: vk::StructureType =
16176		vk::StructureType::INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT;
16177
16178	fn s_type(&self) -> vk::StructureType {
16179		self.s_type
16180	}
16181
16182	fn p_next(&self) -> *const std::ffi::c_void {
16183		self.p_next
16184	}
16185
16186	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16187		self.p_next = p_next.cast_const();
16188	}
16189
16190	fn address(&mut self) -> *mut std::ffi::c_void {
16191		std::ptr::from_mut(self).cast()
16192	}
16193}
16194
16195impl<'a> crate::construction::sealed::ChainNode for vk::IndirectExecutionSetShaderInfoEXT<'a> {
16196	const S_TYPE: vk::StructureType = vk::StructureType::INDIRECT_EXECUTION_SET_SHADER_INFO_EXT;
16197
16198	fn s_type(&self) -> vk::StructureType {
16199		self.s_type
16200	}
16201
16202	fn p_next(&self) -> *const std::ffi::c_void {
16203		self.p_next
16204	}
16205
16206	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16207		self.p_next = p_next.cast_const();
16208	}
16209
16210	fn address(&mut self) -> *mut std::ffi::c_void {
16211		std::ptr::from_mut(self).cast()
16212	}
16213}
16214
16215impl<'a> crate::construction::sealed::ChainNode for vk::IndirectExecutionSetCreateInfoEXT<'a> {
16216	const S_TYPE: vk::StructureType = vk::StructureType::INDIRECT_EXECUTION_SET_CREATE_INFO_EXT;
16217
16218	fn s_type(&self) -> vk::StructureType {
16219		self.s_type
16220	}
16221
16222	fn p_next(&self) -> *const std::ffi::c_void {
16223		self.p_next
16224	}
16225
16226	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16227		self.p_next = p_next.cast_const();
16228	}
16229
16230	fn address(&mut self) -> *mut std::ffi::c_void {
16231		std::ptr::from_mut(self).cast()
16232	}
16233}
16234
16235impl<'a> crate::construction::sealed::ChainNode for vk::GeneratedCommandsInfoEXT<'a> {
16236	const S_TYPE: vk::StructureType = vk::StructureType::GENERATED_COMMANDS_INFO_EXT;
16237
16238	fn s_type(&self) -> vk::StructureType {
16239		self.s_type
16240	}
16241
16242	fn p_next(&self) -> *const std::ffi::c_void {
16243		self.p_next
16244	}
16245
16246	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16247		self.p_next = p_next.cast_const();
16248	}
16249
16250	fn address(&mut self) -> *mut std::ffi::c_void {
16251		std::ptr::from_mut(self).cast()
16252	}
16253}
16254
16255impl<'a> crate::construction::sealed::ChainNode for vk::WriteIndirectExecutionSetPipelineEXT<'a> {
16256	const S_TYPE: vk::StructureType = vk::StructureType::WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT;
16257
16258	fn s_type(&self) -> vk::StructureType {
16259		self.s_type
16260	}
16261
16262	fn p_next(&self) -> *const std::ffi::c_void {
16263		self.p_next
16264	}
16265
16266	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16267		self.p_next = p_next.cast_const();
16268	}
16269
16270	fn address(&mut self) -> *mut std::ffi::c_void {
16271		std::ptr::from_mut(self).cast()
16272	}
16273}
16274
16275impl<'a> crate::construction::sealed::ChainNode for vk::WriteIndirectExecutionSetShaderEXT<'a> {
16276	const S_TYPE: vk::StructureType = vk::StructureType::WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT;
16277
16278	fn s_type(&self) -> vk::StructureType {
16279		self.s_type
16280	}
16281
16282	fn p_next(&self) -> *const std::ffi::c_void {
16283		self.p_next
16284	}
16285
16286	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16287		self.p_next = p_next.cast_const();
16288	}
16289
16290	fn address(&mut self) -> *mut std::ffi::c_void {
16291		std::ptr::from_mut(self).cast()
16292	}
16293}
16294
16295impl<'a> crate::construction::sealed::ChainNode for vk::IndirectCommandsLayoutCreateInfoEXT<'a> {
16296	const S_TYPE: vk::StructureType = vk::StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT;
16297
16298	fn s_type(&self) -> vk::StructureType {
16299		self.s_type
16300	}
16301
16302	fn p_next(&self) -> *const std::ffi::c_void {
16303		self.p_next
16304	}
16305
16306	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16307		self.p_next = p_next.cast_const();
16308	}
16309
16310	fn address(&mut self) -> *mut std::ffi::c_void {
16311		std::ptr::from_mut(self).cast()
16312	}
16313}
16314
16315impl<'a> crate::construction::sealed::ChainNode for vk::IndirectCommandsLayoutTokenEXT<'a> {
16316	const S_TYPE: vk::StructureType = vk::StructureType::INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT;
16317
16318	fn s_type(&self) -> vk::StructureType {
16319		self.s_type
16320	}
16321
16322	fn p_next(&self) -> *const std::ffi::c_void {
16323		self.p_next
16324	}
16325
16326	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16327		self.p_next = p_next.cast_const();
16328	}
16329
16330	fn address(&mut self) -> *mut std::ffi::c_void {
16331		std::ptr::from_mut(self).cast()
16332	}
16333}
16334
16335impl<'a> crate::construction::sealed::ChainNode
16336	for vk::PipelineViewportDepthClipControlCreateInfoEXT<'a>
16337{
16338	const S_TYPE: vk::StructureType =
16339		vk::StructureType::PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT;
16340
16341	fn s_type(&self) -> vk::StructureType {
16342		self.s_type
16343	}
16344
16345	fn p_next(&self) -> *const std::ffi::c_void {
16346		self.p_next
16347	}
16348
16349	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16350		self.p_next = p_next.cast_const();
16351	}
16352
16353	fn address(&mut self) -> *mut std::ffi::c_void {
16354		std::ptr::from_mut(self).cast()
16355	}
16356}
16357
16358impl<'a, 'root> crate::Extends<vk::PipelineViewportStateCreateInfo<'root>>
16359	for vk::PipelineViewportDepthClipControlCreateInfoEXT<'a>
16360{
16361}
16362
16363impl<'a> crate::construction::sealed::ChainNode
16364	for vk::PhysicalDeviceDepthClampControlFeaturesEXT<'a>
16365{
16366	const S_TYPE: vk::StructureType =
16367		vk::StructureType::PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT;
16368
16369	fn s_type(&self) -> vk::StructureType {
16370		self.s_type
16371	}
16372
16373	fn p_next(&self) -> *const std::ffi::c_void {
16374		self.p_next.cast_const()
16375	}
16376
16377	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16378		self.p_next = p_next;
16379	}
16380
16381	fn address(&mut self) -> *mut std::ffi::c_void {
16382		std::ptr::from_mut(self).cast()
16383	}
16384}
16385
16386impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
16387	for vk::PhysicalDeviceDepthClampControlFeaturesEXT<'a>
16388{
16389}
16390
16391impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
16392	for vk::PhysicalDeviceDepthClampControlFeaturesEXT<'a>
16393{
16394}
16395
16396impl<'a> crate::construction::sealed::ChainNode
16397	for vk::PipelineViewportDepthClampControlCreateInfoEXT<'a>
16398{
16399	const S_TYPE: vk::StructureType =
16400		vk::StructureType::PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT;
16401
16402	fn s_type(&self) -> vk::StructureType {
16403		self.s_type
16404	}
16405
16406	fn p_next(&self) -> *const std::ffi::c_void {
16407		self.p_next
16408	}
16409
16410	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16411		self.p_next = p_next.cast_const();
16412	}
16413
16414	fn address(&mut self) -> *mut std::ffi::c_void {
16415		std::ptr::from_mut(self).cast()
16416	}
16417}
16418
16419impl<'a, 'root> crate::Extends<vk::PipelineViewportStateCreateInfo<'root>>
16420	for vk::PipelineViewportDepthClampControlCreateInfoEXT<'a>
16421{
16422}
16423
16424impl<'a> crate::construction::sealed::ChainNode
16425	for vk::PhysicalDeviceVertexInputDynamicStateFeaturesEXT<'a>
16426{
16427	const S_TYPE: vk::StructureType =
16428		vk::StructureType::PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT;
16429
16430	fn s_type(&self) -> vk::StructureType {
16431		self.s_type
16432	}
16433
16434	fn p_next(&self) -> *const std::ffi::c_void {
16435		self.p_next.cast_const()
16436	}
16437
16438	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16439		self.p_next = p_next;
16440	}
16441
16442	fn address(&mut self) -> *mut std::ffi::c_void {
16443		std::ptr::from_mut(self).cast()
16444	}
16445}
16446
16447impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
16448	for vk::PhysicalDeviceVertexInputDynamicStateFeaturesEXT<'a>
16449{
16450}
16451
16452impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
16453	for vk::PhysicalDeviceVertexInputDynamicStateFeaturesEXT<'a>
16454{
16455}
16456
16457impl<'a> crate::construction::sealed::ChainNode
16458	for vk::PhysicalDeviceExternalMemoryRDMAFeaturesNV<'a>
16459{
16460	const S_TYPE: vk::StructureType =
16461		vk::StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV;
16462
16463	fn s_type(&self) -> vk::StructureType {
16464		self.s_type
16465	}
16466
16467	fn p_next(&self) -> *const std::ffi::c_void {
16468		self.p_next.cast_const()
16469	}
16470
16471	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16472		self.p_next = p_next;
16473	}
16474
16475	fn address(&mut self) -> *mut std::ffi::c_void {
16476		std::ptr::from_mut(self).cast()
16477	}
16478}
16479
16480impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
16481	for vk::PhysicalDeviceExternalMemoryRDMAFeaturesNV<'a>
16482{
16483}
16484
16485impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
16486	for vk::PhysicalDeviceExternalMemoryRDMAFeaturesNV<'a>
16487{
16488}
16489
16490impl<'a> crate::construction::sealed::ChainNode
16491	for vk::PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR<'a>
16492{
16493	const S_TYPE: vk::StructureType =
16494		vk::StructureType::PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR;
16495
16496	fn s_type(&self) -> vk::StructureType {
16497		self.s_type
16498	}
16499
16500	fn p_next(&self) -> *const std::ffi::c_void {
16501		self.p_next.cast_const()
16502	}
16503
16504	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16505		self.p_next = p_next;
16506	}
16507
16508	fn address(&mut self) -> *mut std::ffi::c_void {
16509		std::ptr::from_mut(self).cast()
16510	}
16511}
16512
16513impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
16514	for vk::PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR<'a>
16515{
16516}
16517
16518impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
16519	for vk::PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR<'a>
16520{
16521}
16522
16523impl<'a> crate::construction::sealed::ChainNode for vk::VertexInputBindingDescription2EXT<'a> {
16524	const S_TYPE: vk::StructureType = vk::StructureType::VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT;
16525
16526	fn s_type(&self) -> vk::StructureType {
16527		self.s_type
16528	}
16529
16530	fn p_next(&self) -> *const std::ffi::c_void {
16531		self.p_next.cast_const()
16532	}
16533
16534	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16535		self.p_next = p_next;
16536	}
16537
16538	fn address(&mut self) -> *mut std::ffi::c_void {
16539		std::ptr::from_mut(self).cast()
16540	}
16541}
16542
16543impl<'a> crate::construction::sealed::ChainNode for vk::VertexInputAttributeDescription2EXT<'a> {
16544	const S_TYPE: vk::StructureType = vk::StructureType::VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT;
16545
16546	fn s_type(&self) -> vk::StructureType {
16547		self.s_type
16548	}
16549
16550	fn p_next(&self) -> *const std::ffi::c_void {
16551		self.p_next.cast_const()
16552	}
16553
16554	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16555		self.p_next = p_next;
16556	}
16557
16558	fn address(&mut self) -> *mut std::ffi::c_void {
16559		std::ptr::from_mut(self).cast()
16560	}
16561}
16562
16563impl<'a> crate::construction::sealed::ChainNode
16564	for vk::PhysicalDeviceColorWriteEnableFeaturesEXT<'a>
16565{
16566	const S_TYPE: vk::StructureType =
16567		vk::StructureType::PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT;
16568
16569	fn s_type(&self) -> vk::StructureType {
16570		self.s_type
16571	}
16572
16573	fn p_next(&self) -> *const std::ffi::c_void {
16574		self.p_next.cast_const()
16575	}
16576
16577	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16578		self.p_next = p_next;
16579	}
16580
16581	fn address(&mut self) -> *mut std::ffi::c_void {
16582		std::ptr::from_mut(self).cast()
16583	}
16584}
16585
16586impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
16587	for vk::PhysicalDeviceColorWriteEnableFeaturesEXT<'a>
16588{
16589}
16590
16591impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
16592	for vk::PhysicalDeviceColorWriteEnableFeaturesEXT<'a>
16593{
16594}
16595
16596impl<'a> crate::construction::sealed::ChainNode for vk::PipelineColorWriteCreateInfoEXT<'a> {
16597	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_COLOR_WRITE_CREATE_INFO_EXT;
16598
16599	fn s_type(&self) -> vk::StructureType {
16600		self.s_type
16601	}
16602
16603	fn p_next(&self) -> *const std::ffi::c_void {
16604		self.p_next
16605	}
16606
16607	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16608		self.p_next = p_next.cast_const();
16609	}
16610
16611	fn address(&mut self) -> *mut std::ffi::c_void {
16612		std::ptr::from_mut(self).cast()
16613	}
16614}
16615
16616impl<'a, 'root> crate::Extends<vk::PipelineColorBlendStateCreateInfo<'root>>
16617	for vk::PipelineColorWriteCreateInfoEXT<'a>
16618{
16619}
16620
16621impl<'a> crate::construction::sealed::ChainNode for vk::MemoryBarrier2<'a> {
16622	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_BARRIER_2;
16623
16624	fn s_type(&self) -> vk::StructureType {
16625		self.s_type
16626	}
16627
16628	fn p_next(&self) -> *const std::ffi::c_void {
16629		self.p_next
16630	}
16631
16632	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16633		self.p_next = p_next.cast_const();
16634	}
16635
16636	fn address(&mut self) -> *mut std::ffi::c_void {
16637		std::ptr::from_mut(self).cast()
16638	}
16639}
16640
16641impl<'a, 'root> crate::Extends<vk::SubpassDependency2<'root>> for vk::MemoryBarrier2<'a> {}
16642
16643impl<'a> crate::construction::sealed::ChainNode for vk::ImageMemoryBarrier2<'a> {
16644	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_MEMORY_BARRIER_2;
16645
16646	fn s_type(&self) -> vk::StructureType {
16647		self.s_type
16648	}
16649
16650	fn p_next(&self) -> *const std::ffi::c_void {
16651		self.p_next
16652	}
16653
16654	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16655		self.p_next = p_next.cast_const();
16656	}
16657
16658	fn address(&mut self) -> *mut std::ffi::c_void {
16659		std::ptr::from_mut(self).cast()
16660	}
16661}
16662
16663impl<'a> crate::construction::sealed::ChainNode for vk::BufferMemoryBarrier2<'a> {
16664	const S_TYPE: vk::StructureType = vk::StructureType::BUFFER_MEMORY_BARRIER_2;
16665
16666	fn s_type(&self) -> vk::StructureType {
16667		self.s_type
16668	}
16669
16670	fn p_next(&self) -> *const std::ffi::c_void {
16671		self.p_next
16672	}
16673
16674	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16675		self.p_next = p_next.cast_const();
16676	}
16677
16678	fn address(&mut self) -> *mut std::ffi::c_void {
16679		std::ptr::from_mut(self).cast()
16680	}
16681}
16682
16683impl<'a> crate::construction::sealed::ChainNode for vk::MemoryBarrierAccessFlags3KHR<'a> {
16684	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_BARRIER_ACCESS_FLAGS_3_KHR;
16685
16686	fn s_type(&self) -> vk::StructureType {
16687		self.s_type
16688	}
16689
16690	fn p_next(&self) -> *const std::ffi::c_void {
16691		self.p_next
16692	}
16693
16694	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16695		self.p_next = p_next.cast_const();
16696	}
16697
16698	fn address(&mut self) -> *mut std::ffi::c_void {
16699		std::ptr::from_mut(self).cast()
16700	}
16701}
16702
16703impl<'a, 'root> crate::Extends<vk::SubpassDependency2<'root>>
16704	for vk::MemoryBarrierAccessFlags3KHR<'a>
16705{
16706}
16707
16708impl<'a, 'root> crate::Extends<vk::BufferMemoryBarrier2<'root>>
16709	for vk::MemoryBarrierAccessFlags3KHR<'a>
16710{
16711}
16712
16713impl<'a, 'root> crate::Extends<vk::ImageMemoryBarrier2<'root>>
16714	for vk::MemoryBarrierAccessFlags3KHR<'a>
16715{
16716}
16717
16718impl<'a, 'root> crate::Extends<vk::MemoryBarrier2<'root>> for vk::MemoryBarrierAccessFlags3KHR<'a> {}
16719
16720impl<'a, 'root> crate::Extends<vk::MemoryRangeBarrierKHR<'root>>
16721	for vk::MemoryBarrierAccessFlags3KHR<'a>
16722{
16723}
16724
16725impl<'a> crate::construction::sealed::ChainNode for vk::DependencyInfo<'a> {
16726	const S_TYPE: vk::StructureType = vk::StructureType::DEPENDENCY_INFO;
16727
16728	fn s_type(&self) -> vk::StructureType {
16729		self.s_type
16730	}
16731
16732	fn p_next(&self) -> *const std::ffi::c_void {
16733		self.p_next
16734	}
16735
16736	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16737		self.p_next = p_next.cast_const();
16738	}
16739
16740	fn address(&mut self) -> *mut std::ffi::c_void {
16741		std::ptr::from_mut(self).cast()
16742	}
16743}
16744
16745impl<'a> crate::construction::sealed::ChainNode for vk::SemaphoreSubmitInfo<'a> {
16746	const S_TYPE: vk::StructureType = vk::StructureType::SEMAPHORE_SUBMIT_INFO;
16747
16748	fn s_type(&self) -> vk::StructureType {
16749		self.s_type
16750	}
16751
16752	fn p_next(&self) -> *const std::ffi::c_void {
16753		self.p_next
16754	}
16755
16756	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16757		self.p_next = p_next.cast_const();
16758	}
16759
16760	fn address(&mut self) -> *mut std::ffi::c_void {
16761		std::ptr::from_mut(self).cast()
16762	}
16763}
16764
16765impl<'a> crate::construction::sealed::ChainNode for vk::CommandBufferSubmitInfo<'a> {
16766	const S_TYPE: vk::StructureType = vk::StructureType::COMMAND_BUFFER_SUBMIT_INFO;
16767
16768	fn s_type(&self) -> vk::StructureType {
16769		self.s_type
16770	}
16771
16772	fn p_next(&self) -> *const std::ffi::c_void {
16773		self.p_next
16774	}
16775
16776	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16777		self.p_next = p_next.cast_const();
16778	}
16779
16780	fn address(&mut self) -> *mut std::ffi::c_void {
16781		std::ptr::from_mut(self).cast()
16782	}
16783}
16784
16785impl<'a> crate::construction::sealed::ChainNode for vk::SubmitInfo2<'a> {
16786	const S_TYPE: vk::StructureType = vk::StructureType::SUBMIT_INFO_2;
16787
16788	fn s_type(&self) -> vk::StructureType {
16789		self.s_type
16790	}
16791
16792	fn p_next(&self) -> *const std::ffi::c_void {
16793		self.p_next
16794	}
16795
16796	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16797		self.p_next = p_next.cast_const();
16798	}
16799
16800	fn address(&mut self) -> *mut std::ffi::c_void {
16801		std::ptr::from_mut(self).cast()
16802	}
16803}
16804
16805impl<'a> crate::construction::sealed::ChainNode for vk::QueueFamilyCheckpointProperties2NV<'a> {
16806	const S_TYPE: vk::StructureType = vk::StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV;
16807
16808	fn s_type(&self) -> vk::StructureType {
16809		self.s_type
16810	}
16811
16812	fn p_next(&self) -> *const std::ffi::c_void {
16813		self.p_next.cast_const()
16814	}
16815
16816	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16817		self.p_next = p_next;
16818	}
16819
16820	fn address(&mut self) -> *mut std::ffi::c_void {
16821		std::ptr::from_mut(self).cast()
16822	}
16823}
16824
16825impl<'a, 'root> crate::Extends<vk::QueueFamilyProperties2<'root>>
16826	for vk::QueueFamilyCheckpointProperties2NV<'a>
16827{
16828}
16829
16830impl<'a> crate::construction::sealed::ChainNode for vk::CheckpointData2NV<'a> {
16831	const S_TYPE: vk::StructureType = vk::StructureType::CHECKPOINT_DATA_2_NV;
16832
16833	fn s_type(&self) -> vk::StructureType {
16834		self.s_type
16835	}
16836
16837	fn p_next(&self) -> *const std::ffi::c_void {
16838		self.p_next.cast_const()
16839	}
16840
16841	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16842		self.p_next = p_next;
16843	}
16844
16845	fn address(&mut self) -> *mut std::ffi::c_void {
16846		std::ptr::from_mut(self).cast()
16847	}
16848}
16849
16850impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceSynchronization2Features<'a> {
16851	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES;
16852
16853	fn s_type(&self) -> vk::StructureType {
16854		self.s_type
16855	}
16856
16857	fn p_next(&self) -> *const std::ffi::c_void {
16858		self.p_next.cast_const()
16859	}
16860
16861	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16862		self.p_next = p_next;
16863	}
16864
16865	fn address(&mut self) -> *mut std::ffi::c_void {
16866		std::ptr::from_mut(self).cast()
16867	}
16868}
16869
16870impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
16871	for vk::PhysicalDeviceSynchronization2Features<'a>
16872{
16873}
16874
16875impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
16876	for vk::PhysicalDeviceSynchronization2Features<'a>
16877{
16878}
16879
16880impl<'a> crate::construction::sealed::ChainNode
16881	for vk::PhysicalDeviceUnifiedImageLayoutsFeaturesKHR<'a>
16882{
16883	const S_TYPE: vk::StructureType =
16884		vk::StructureType::PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR;
16885
16886	fn s_type(&self) -> vk::StructureType {
16887		self.s_type
16888	}
16889
16890	fn p_next(&self) -> *const std::ffi::c_void {
16891		self.p_next.cast_const()
16892	}
16893
16894	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16895		self.p_next = p_next;
16896	}
16897
16898	fn address(&mut self) -> *mut std::ffi::c_void {
16899		std::ptr::from_mut(self).cast()
16900	}
16901}
16902
16903impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
16904	for vk::PhysicalDeviceUnifiedImageLayoutsFeaturesKHR<'a>
16905{
16906}
16907
16908impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
16909	for vk::PhysicalDeviceUnifiedImageLayoutsFeaturesKHR<'a>
16910{
16911}
16912
16913impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceHostImageCopyFeatures<'a> {
16914	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES;
16915
16916	fn s_type(&self) -> vk::StructureType {
16917		self.s_type
16918	}
16919
16920	fn p_next(&self) -> *const std::ffi::c_void {
16921		self.p_next.cast_const()
16922	}
16923
16924	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16925		self.p_next = p_next;
16926	}
16927
16928	fn address(&mut self) -> *mut std::ffi::c_void {
16929		std::ptr::from_mut(self).cast()
16930	}
16931}
16932
16933impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
16934	for vk::PhysicalDeviceHostImageCopyFeatures<'a>
16935{
16936}
16937
16938impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
16939	for vk::PhysicalDeviceHostImageCopyFeatures<'a>
16940{
16941}
16942
16943impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceHostImageCopyProperties<'a> {
16944	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES;
16945
16946	fn s_type(&self) -> vk::StructureType {
16947		self.s_type
16948	}
16949
16950	fn p_next(&self) -> *const std::ffi::c_void {
16951		self.p_next.cast_const()
16952	}
16953
16954	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16955		self.p_next = p_next;
16956	}
16957
16958	fn address(&mut self) -> *mut std::ffi::c_void {
16959		std::ptr::from_mut(self).cast()
16960	}
16961}
16962
16963impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
16964	for vk::PhysicalDeviceHostImageCopyProperties<'a>
16965{
16966}
16967
16968impl<'a> crate::construction::sealed::ChainNode for vk::MemoryToImageCopy<'a> {
16969	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_TO_IMAGE_COPY;
16970
16971	fn s_type(&self) -> vk::StructureType {
16972		self.s_type
16973	}
16974
16975	fn p_next(&self) -> *const std::ffi::c_void {
16976		self.p_next
16977	}
16978
16979	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
16980		self.p_next = p_next.cast_const();
16981	}
16982
16983	fn address(&mut self) -> *mut std::ffi::c_void {
16984		std::ptr::from_mut(self).cast()
16985	}
16986}
16987
16988impl<'a> crate::construction::sealed::ChainNode for vk::ImageToMemoryCopy<'a> {
16989	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_TO_MEMORY_COPY;
16990
16991	fn s_type(&self) -> vk::StructureType {
16992		self.s_type
16993	}
16994
16995	fn p_next(&self) -> *const std::ffi::c_void {
16996		self.p_next
16997	}
16998
16999	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17000		self.p_next = p_next.cast_const();
17001	}
17002
17003	fn address(&mut self) -> *mut std::ffi::c_void {
17004		std::ptr::from_mut(self).cast()
17005	}
17006}
17007
17008impl<'a> crate::construction::sealed::ChainNode for vk::CopyMemoryToImageInfo<'a> {
17009	const S_TYPE: vk::StructureType = vk::StructureType::COPY_MEMORY_TO_IMAGE_INFO;
17010
17011	fn s_type(&self) -> vk::StructureType {
17012		self.s_type
17013	}
17014
17015	fn p_next(&self) -> *const std::ffi::c_void {
17016		self.p_next
17017	}
17018
17019	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17020		self.p_next = p_next.cast_const();
17021	}
17022
17023	fn address(&mut self) -> *mut std::ffi::c_void {
17024		std::ptr::from_mut(self).cast()
17025	}
17026}
17027
17028impl<'a> crate::construction::sealed::ChainNode for vk::CopyImageToMemoryInfo<'a> {
17029	const S_TYPE: vk::StructureType = vk::StructureType::COPY_IMAGE_TO_MEMORY_INFO;
17030
17031	fn s_type(&self) -> vk::StructureType {
17032		self.s_type
17033	}
17034
17035	fn p_next(&self) -> *const std::ffi::c_void {
17036		self.p_next
17037	}
17038
17039	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17040		self.p_next = p_next.cast_const();
17041	}
17042
17043	fn address(&mut self) -> *mut std::ffi::c_void {
17044		std::ptr::from_mut(self).cast()
17045	}
17046}
17047
17048impl<'a> crate::construction::sealed::ChainNode for vk::CopyImageToImageInfo<'a> {
17049	const S_TYPE: vk::StructureType = vk::StructureType::COPY_IMAGE_TO_IMAGE_INFO;
17050
17051	fn s_type(&self) -> vk::StructureType {
17052		self.s_type
17053	}
17054
17055	fn p_next(&self) -> *const std::ffi::c_void {
17056		self.p_next
17057	}
17058
17059	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17060		self.p_next = p_next.cast_const();
17061	}
17062
17063	fn address(&mut self) -> *mut std::ffi::c_void {
17064		std::ptr::from_mut(self).cast()
17065	}
17066}
17067
17068impl<'a> crate::construction::sealed::ChainNode for vk::HostImageLayoutTransitionInfo<'a> {
17069	const S_TYPE: vk::StructureType = vk::StructureType::HOST_IMAGE_LAYOUT_TRANSITION_INFO;
17070
17071	fn s_type(&self) -> vk::StructureType {
17072		self.s_type
17073	}
17074
17075	fn p_next(&self) -> *const std::ffi::c_void {
17076		self.p_next
17077	}
17078
17079	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17080		self.p_next = p_next.cast_const();
17081	}
17082
17083	fn address(&mut self) -> *mut std::ffi::c_void {
17084		std::ptr::from_mut(self).cast()
17085	}
17086}
17087
17088impl<'a> crate::construction::sealed::ChainNode for vk::SubresourceHostMemcpySize<'a> {
17089	const S_TYPE: vk::StructureType = vk::StructureType::SUBRESOURCE_HOST_MEMCPY_SIZE;
17090
17091	fn s_type(&self) -> vk::StructureType {
17092		self.s_type
17093	}
17094
17095	fn p_next(&self) -> *const std::ffi::c_void {
17096		self.p_next.cast_const()
17097	}
17098
17099	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17100		self.p_next = p_next;
17101	}
17102
17103	fn address(&mut self) -> *mut std::ffi::c_void {
17104		std::ptr::from_mut(self).cast()
17105	}
17106}
17107
17108impl<'a, 'root> crate::Extends<vk::SubresourceLayout2<'root>>
17109	for vk::SubresourceHostMemcpySize<'a>
17110{
17111}
17112
17113impl<'a> crate::construction::sealed::ChainNode for vk::HostImageCopyDevicePerformanceQuery<'a> {
17114	const S_TYPE: vk::StructureType = vk::StructureType::HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY;
17115
17116	fn s_type(&self) -> vk::StructureType {
17117		self.s_type
17118	}
17119
17120	fn p_next(&self) -> *const std::ffi::c_void {
17121		self.p_next.cast_const()
17122	}
17123
17124	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17125		self.p_next = p_next;
17126	}
17127
17128	fn address(&mut self) -> *mut std::ffi::c_void {
17129		std::ptr::from_mut(self).cast()
17130	}
17131}
17132
17133impl<'a, 'root> crate::Extends<vk::ImageFormatProperties2<'root>>
17134	for vk::HostImageCopyDevicePerformanceQuery<'a>
17135{
17136}
17137
17138impl<'a> crate::construction::sealed::ChainNode
17139	for vk::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT<'a>
17140{
17141	const S_TYPE: vk::StructureType =
17142		vk::StructureType::PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT;
17143
17144	fn s_type(&self) -> vk::StructureType {
17145		self.s_type
17146	}
17147
17148	fn p_next(&self) -> *const std::ffi::c_void {
17149		self.p_next.cast_const()
17150	}
17151
17152	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17153		self.p_next = p_next;
17154	}
17155
17156	fn address(&mut self) -> *mut std::ffi::c_void {
17157		std::ptr::from_mut(self).cast()
17158	}
17159}
17160
17161impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
17162	for vk::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT<'a>
17163{
17164}
17165
17166impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
17167	for vk::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT<'a>
17168{
17169}
17170
17171impl<'a> crate::construction::sealed::ChainNode
17172	for vk::PhysicalDeviceLegacyDitheringFeaturesEXT<'a>
17173{
17174	const S_TYPE: vk::StructureType =
17175		vk::StructureType::PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT;
17176
17177	fn s_type(&self) -> vk::StructureType {
17178		self.s_type
17179	}
17180
17181	fn p_next(&self) -> *const std::ffi::c_void {
17182		self.p_next.cast_const()
17183	}
17184
17185	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17186		self.p_next = p_next;
17187	}
17188
17189	fn address(&mut self) -> *mut std::ffi::c_void {
17190		std::ptr::from_mut(self).cast()
17191	}
17192}
17193
17194impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
17195	for vk::PhysicalDeviceLegacyDitheringFeaturesEXT<'a>
17196{
17197}
17198
17199impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
17200	for vk::PhysicalDeviceLegacyDitheringFeaturesEXT<'a>
17201{
17202}
17203
17204impl<'a> crate::construction::sealed::ChainNode
17205	for vk::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT<'a>
17206{
17207	const S_TYPE: vk::StructureType =
17208		vk::StructureType::PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT;
17209
17210	fn s_type(&self) -> vk::StructureType {
17211		self.s_type
17212	}
17213
17214	fn p_next(&self) -> *const std::ffi::c_void {
17215		self.p_next.cast_const()
17216	}
17217
17218	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17219		self.p_next = p_next;
17220	}
17221
17222	fn address(&mut self) -> *mut std::ffi::c_void {
17223		std::ptr::from_mut(self).cast()
17224	}
17225}
17226
17227impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
17228	for vk::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT<'a>
17229{
17230}
17231
17232impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
17233	for vk::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT<'a>
17234{
17235}
17236
17237impl<'a> crate::construction::sealed::ChainNode for vk::SurfaceCapabilitiesPresentId2KHR<'a> {
17238	const S_TYPE: vk::StructureType = vk::StructureType::SURFACE_CAPABILITIES_PRESENT_ID_2_KHR;
17239
17240	fn s_type(&self) -> vk::StructureType {
17241		self.s_type
17242	}
17243
17244	fn p_next(&self) -> *const std::ffi::c_void {
17245		self.p_next.cast_const()
17246	}
17247
17248	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17249		self.p_next = p_next;
17250	}
17251
17252	fn address(&mut self) -> *mut std::ffi::c_void {
17253		std::ptr::from_mut(self).cast()
17254	}
17255}
17256
17257impl<'a, 'root> crate::Extends<vk::SurfaceCapabilities2KHR<'root>>
17258	for vk::SurfaceCapabilitiesPresentId2KHR<'a>
17259{
17260}
17261
17262impl<'a> crate::construction::sealed::ChainNode for vk::SurfaceCapabilitiesPresentWait2KHR<'a> {
17263	const S_TYPE: vk::StructureType = vk::StructureType::SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR;
17264
17265	fn s_type(&self) -> vk::StructureType {
17266		self.s_type
17267	}
17268
17269	fn p_next(&self) -> *const std::ffi::c_void {
17270		self.p_next.cast_const()
17271	}
17272
17273	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17274		self.p_next = p_next;
17275	}
17276
17277	fn address(&mut self) -> *mut std::ffi::c_void {
17278		std::ptr::from_mut(self).cast()
17279	}
17280}
17281
17282impl<'a, 'root> crate::Extends<vk::SurfaceCapabilities2KHR<'root>>
17283	for vk::SurfaceCapabilitiesPresentWait2KHR<'a>
17284{
17285}
17286
17287impl<'a> crate::construction::sealed::ChainNode for vk::SubpassResolvePerformanceQueryEXT<'a> {
17288	const S_TYPE: vk::StructureType = vk::StructureType::SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT;
17289
17290	fn s_type(&self) -> vk::StructureType {
17291		self.s_type
17292	}
17293
17294	fn p_next(&self) -> *const std::ffi::c_void {
17295		self.p_next.cast_const()
17296	}
17297
17298	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17299		self.p_next = p_next;
17300	}
17301
17302	fn address(&mut self) -> *mut std::ffi::c_void {
17303		std::ptr::from_mut(self).cast()
17304	}
17305}
17306
17307impl<'a, 'root> crate::Extends<vk::FormatProperties2<'root>>
17308	for vk::SubpassResolvePerformanceQueryEXT<'a>
17309{
17310}
17311
17312impl<'a> crate::construction::sealed::ChainNode
17313	for vk::MultisampledRenderToSingleSampledInfoEXT<'a>
17314{
17315	const S_TYPE: vk::StructureType =
17316		vk::StructureType::MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT;
17317
17318	fn s_type(&self) -> vk::StructureType {
17319		self.s_type
17320	}
17321
17322	fn p_next(&self) -> *const std::ffi::c_void {
17323		self.p_next
17324	}
17325
17326	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17327		self.p_next = p_next.cast_const();
17328	}
17329
17330	fn address(&mut self) -> *mut std::ffi::c_void {
17331		std::ptr::from_mut(self).cast()
17332	}
17333}
17334
17335impl<'a, 'root> crate::Extends<vk::SubpassDescription2<'root>>
17336	for vk::MultisampledRenderToSingleSampledInfoEXT<'a>
17337{
17338}
17339
17340impl<'a, 'root> crate::Extends<vk::RenderingInfo<'root>>
17341	for vk::MultisampledRenderToSingleSampledInfoEXT<'a>
17342{
17343}
17344
17345impl<'a> crate::construction::sealed::ChainNode
17346	for vk::PhysicalDeviceMultisampledRenderToSwapchainFeaturesEXT<'a>
17347{
17348	const S_TYPE: vk::StructureType =
17349		vk::StructureType::PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SWAPCHAIN_FEATURES_EXT;
17350
17351	fn s_type(&self) -> vk::StructureType {
17352		self.s_type
17353	}
17354
17355	fn p_next(&self) -> *const std::ffi::c_void {
17356		self.p_next.cast_const()
17357	}
17358
17359	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17360		self.p_next = p_next;
17361	}
17362
17363	fn address(&mut self) -> *mut std::ffi::c_void {
17364		std::ptr::from_mut(self).cast()
17365	}
17366}
17367
17368impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
17369	for vk::PhysicalDeviceMultisampledRenderToSwapchainFeaturesEXT<'a>
17370{
17371}
17372
17373impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
17374	for vk::PhysicalDeviceMultisampledRenderToSwapchainFeaturesEXT<'a>
17375{
17376}
17377
17378impl<'a> crate::construction::sealed::ChainNode
17379	for vk::PhysicalDevicePipelineProtectedAccessFeatures<'a>
17380{
17381	const S_TYPE: vk::StructureType =
17382		vk::StructureType::PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES;
17383
17384	fn s_type(&self) -> vk::StructureType {
17385		self.s_type
17386	}
17387
17388	fn p_next(&self) -> *const std::ffi::c_void {
17389		self.p_next.cast_const()
17390	}
17391
17392	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17393		self.p_next = p_next;
17394	}
17395
17396	fn address(&mut self) -> *mut std::ffi::c_void {
17397		std::ptr::from_mut(self).cast()
17398	}
17399}
17400
17401impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
17402	for vk::PhysicalDevicePipelineProtectedAccessFeatures<'a>
17403{
17404}
17405
17406impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
17407	for vk::PhysicalDevicePipelineProtectedAccessFeatures<'a>
17408{
17409}
17410
17411impl<'a> crate::construction::sealed::ChainNode for vk::QueueFamilyVideoPropertiesKHR<'a> {
17412	const S_TYPE: vk::StructureType = vk::StructureType::QUEUE_FAMILY_VIDEO_PROPERTIES_KHR;
17413
17414	fn s_type(&self) -> vk::StructureType {
17415		self.s_type
17416	}
17417
17418	fn p_next(&self) -> *const std::ffi::c_void {
17419		self.p_next.cast_const()
17420	}
17421
17422	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17423		self.p_next = p_next;
17424	}
17425
17426	fn address(&mut self) -> *mut std::ffi::c_void {
17427		std::ptr::from_mut(self).cast()
17428	}
17429}
17430
17431impl<'a, 'root> crate::Extends<vk::QueueFamilyProperties2<'root>>
17432	for vk::QueueFamilyVideoPropertiesKHR<'a>
17433{
17434}
17435
17436impl<'a> crate::construction::sealed::ChainNode
17437	for vk::QueueFamilyQueryResultStatusPropertiesKHR<'a>
17438{
17439	const S_TYPE: vk::StructureType =
17440		vk::StructureType::QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR;
17441
17442	fn s_type(&self) -> vk::StructureType {
17443		self.s_type
17444	}
17445
17446	fn p_next(&self) -> *const std::ffi::c_void {
17447		self.p_next.cast_const()
17448	}
17449
17450	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17451		self.p_next = p_next;
17452	}
17453
17454	fn address(&mut self) -> *mut std::ffi::c_void {
17455		std::ptr::from_mut(self).cast()
17456	}
17457}
17458
17459impl<'a, 'root> crate::Extends<vk::QueueFamilyProperties2<'root>>
17460	for vk::QueueFamilyQueryResultStatusPropertiesKHR<'a>
17461{
17462}
17463
17464impl<'a> crate::construction::sealed::ChainNode for vk::VideoProfileListInfoKHR<'a> {
17465	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_PROFILE_LIST_INFO_KHR;
17466
17467	fn s_type(&self) -> vk::StructureType {
17468		self.s_type
17469	}
17470
17471	fn p_next(&self) -> *const std::ffi::c_void {
17472		self.p_next
17473	}
17474
17475	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17476		self.p_next = p_next.cast_const();
17477	}
17478
17479	fn address(&mut self) -> *mut std::ffi::c_void {
17480		std::ptr::from_mut(self).cast()
17481	}
17482}
17483
17484impl<'a, 'root> crate::Extends<vk::PhysicalDeviceImageFormatInfo2<'root>>
17485	for vk::VideoProfileListInfoKHR<'a>
17486{
17487}
17488
17489impl<'a, 'root> crate::Extends<vk::PhysicalDeviceVideoFormatInfoKHR<'root>>
17490	for vk::VideoProfileListInfoKHR<'a>
17491{
17492}
17493
17494impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>> for vk::VideoProfileListInfoKHR<'a> {}
17495
17496impl<'a, 'root> crate::Extends<vk::BufferCreateInfo<'root>> for vk::VideoProfileListInfoKHR<'a> {}
17497
17498impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceVideoFormatInfoKHR<'a> {
17499	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR;
17500
17501	fn s_type(&self) -> vk::StructureType {
17502		self.s_type
17503	}
17504
17505	fn p_next(&self) -> *const std::ffi::c_void {
17506		self.p_next
17507	}
17508
17509	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17510		self.p_next = p_next.cast_const();
17511	}
17512
17513	fn address(&mut self) -> *mut std::ffi::c_void {
17514		std::ptr::from_mut(self).cast()
17515	}
17516}
17517
17518impl<'a> crate::construction::sealed::ChainNode for vk::VideoFormatPropertiesKHR<'a> {
17519	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_FORMAT_PROPERTIES_KHR;
17520
17521	fn s_type(&self) -> vk::StructureType {
17522		self.s_type
17523	}
17524
17525	fn p_next(&self) -> *const std::ffi::c_void {
17526		self.p_next.cast_const()
17527	}
17528
17529	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17530		self.p_next = p_next;
17531	}
17532
17533	fn address(&mut self) -> *mut std::ffi::c_void {
17534		std::ptr::from_mut(self).cast()
17535	}
17536}
17537
17538impl<'a> crate::construction::sealed::ChainNode
17539	for vk::VideoEncodeQuantizationMapCapabilitiesKHR<'a>
17540{
17541	const S_TYPE: vk::StructureType =
17542		vk::StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR;
17543
17544	fn s_type(&self) -> vk::StructureType {
17545		self.s_type
17546	}
17547
17548	fn p_next(&self) -> *const std::ffi::c_void {
17549		self.p_next.cast_const()
17550	}
17551
17552	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17553		self.p_next = p_next;
17554	}
17555
17556	fn address(&mut self) -> *mut std::ffi::c_void {
17557		std::ptr::from_mut(self).cast()
17558	}
17559}
17560
17561impl<'a, 'root> crate::Extends<vk::VideoCapabilitiesKHR<'root>>
17562	for vk::VideoEncodeQuantizationMapCapabilitiesKHR<'a>
17563{
17564}
17565
17566impl<'a> crate::construction::sealed::ChainNode
17567	for vk::VideoEncodeH264QuantizationMapCapabilitiesKHR<'a>
17568{
17569	const S_TYPE: vk::StructureType =
17570		vk::StructureType::VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR;
17571
17572	fn s_type(&self) -> vk::StructureType {
17573		self.s_type
17574	}
17575
17576	fn p_next(&self) -> *const std::ffi::c_void {
17577		self.p_next.cast_const()
17578	}
17579
17580	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17581		self.p_next = p_next;
17582	}
17583
17584	fn address(&mut self) -> *mut std::ffi::c_void {
17585		std::ptr::from_mut(self).cast()
17586	}
17587}
17588
17589impl<'a, 'root> crate::Extends<vk::VideoCapabilitiesKHR<'root>>
17590	for vk::VideoEncodeH264QuantizationMapCapabilitiesKHR<'a>
17591{
17592}
17593
17594impl<'a> crate::construction::sealed::ChainNode
17595	for vk::VideoEncodeH265QuantizationMapCapabilitiesKHR<'a>
17596{
17597	const S_TYPE: vk::StructureType =
17598		vk::StructureType::VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR;
17599
17600	fn s_type(&self) -> vk::StructureType {
17601		self.s_type
17602	}
17603
17604	fn p_next(&self) -> *const std::ffi::c_void {
17605		self.p_next.cast_const()
17606	}
17607
17608	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17609		self.p_next = p_next;
17610	}
17611
17612	fn address(&mut self) -> *mut std::ffi::c_void {
17613		std::ptr::from_mut(self).cast()
17614	}
17615}
17616
17617impl<'a, 'root> crate::Extends<vk::VideoCapabilitiesKHR<'root>>
17618	for vk::VideoEncodeH265QuantizationMapCapabilitiesKHR<'a>
17619{
17620}
17621
17622impl<'a> crate::construction::sealed::ChainNode
17623	for vk::VideoEncodeAV1QuantizationMapCapabilitiesKHR<'a>
17624{
17625	const S_TYPE: vk::StructureType =
17626		vk::StructureType::VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR;
17627
17628	fn s_type(&self) -> vk::StructureType {
17629		self.s_type
17630	}
17631
17632	fn p_next(&self) -> *const std::ffi::c_void {
17633		self.p_next.cast_const()
17634	}
17635
17636	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17637		self.p_next = p_next;
17638	}
17639
17640	fn address(&mut self) -> *mut std::ffi::c_void {
17641		std::ptr::from_mut(self).cast()
17642	}
17643}
17644
17645impl<'a, 'root> crate::Extends<vk::VideoCapabilitiesKHR<'root>>
17646	for vk::VideoEncodeAV1QuantizationMapCapabilitiesKHR<'a>
17647{
17648}
17649
17650impl<'a> crate::construction::sealed::ChainNode
17651	for vk::VideoFormatQuantizationMapPropertiesKHR<'a>
17652{
17653	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR;
17654
17655	fn s_type(&self) -> vk::StructureType {
17656		self.s_type
17657	}
17658
17659	fn p_next(&self) -> *const std::ffi::c_void {
17660		self.p_next.cast_const()
17661	}
17662
17663	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17664		self.p_next = p_next;
17665	}
17666
17667	fn address(&mut self) -> *mut std::ffi::c_void {
17668		std::ptr::from_mut(self).cast()
17669	}
17670}
17671
17672impl<'a, 'root> crate::Extends<vk::VideoFormatPropertiesKHR<'root>>
17673	for vk::VideoFormatQuantizationMapPropertiesKHR<'a>
17674{
17675}
17676
17677impl<'a> crate::construction::sealed::ChainNode
17678	for vk::VideoFormatH265QuantizationMapPropertiesKHR<'a>
17679{
17680	const S_TYPE: vk::StructureType =
17681		vk::StructureType::VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR;
17682
17683	fn s_type(&self) -> vk::StructureType {
17684		self.s_type
17685	}
17686
17687	fn p_next(&self) -> *const std::ffi::c_void {
17688		self.p_next.cast_const()
17689	}
17690
17691	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17692		self.p_next = p_next;
17693	}
17694
17695	fn address(&mut self) -> *mut std::ffi::c_void {
17696		std::ptr::from_mut(self).cast()
17697	}
17698}
17699
17700impl<'a, 'root> crate::Extends<vk::VideoFormatPropertiesKHR<'root>>
17701	for vk::VideoFormatH265QuantizationMapPropertiesKHR<'a>
17702{
17703}
17704
17705impl<'a> crate::construction::sealed::ChainNode
17706	for vk::VideoFormatAV1QuantizationMapPropertiesKHR<'a>
17707{
17708	const S_TYPE: vk::StructureType =
17709		vk::StructureType::VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR;
17710
17711	fn s_type(&self) -> vk::StructureType {
17712		self.s_type
17713	}
17714
17715	fn p_next(&self) -> *const std::ffi::c_void {
17716		self.p_next.cast_const()
17717	}
17718
17719	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17720		self.p_next = p_next;
17721	}
17722
17723	fn address(&mut self) -> *mut std::ffi::c_void {
17724		std::ptr::from_mut(self).cast()
17725	}
17726}
17727
17728impl<'a, 'root> crate::Extends<vk::VideoFormatPropertiesKHR<'root>>
17729	for vk::VideoFormatAV1QuantizationMapPropertiesKHR<'a>
17730{
17731}
17732
17733impl<'a> crate::construction::sealed::ChainNode for vk::VideoProfileInfoKHR<'a> {
17734	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_PROFILE_INFO_KHR;
17735
17736	fn s_type(&self) -> vk::StructureType {
17737		self.s_type
17738	}
17739
17740	fn p_next(&self) -> *const std::ffi::c_void {
17741		self.p_next
17742	}
17743
17744	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17745		self.p_next = p_next.cast_const();
17746	}
17747
17748	fn address(&mut self) -> *mut std::ffi::c_void {
17749		std::ptr::from_mut(self).cast()
17750	}
17751}
17752
17753impl<'a, 'root> crate::Extends<vk::QueryPoolCreateInfo<'root>> for vk::VideoProfileInfoKHR<'a> {}
17754
17755impl<'a> crate::construction::sealed::ChainNode for vk::VideoCapabilitiesKHR<'a> {
17756	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_CAPABILITIES_KHR;
17757
17758	fn s_type(&self) -> vk::StructureType {
17759		self.s_type
17760	}
17761
17762	fn p_next(&self) -> *const std::ffi::c_void {
17763		self.p_next.cast_const()
17764	}
17765
17766	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17767		self.p_next = p_next;
17768	}
17769
17770	fn address(&mut self) -> *mut std::ffi::c_void {
17771		std::ptr::from_mut(self).cast()
17772	}
17773}
17774
17775impl<'a> crate::construction::sealed::ChainNode for vk::VideoSessionMemoryRequirementsKHR<'a> {
17776	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR;
17777
17778	fn s_type(&self) -> vk::StructureType {
17779		self.s_type
17780	}
17781
17782	fn p_next(&self) -> *const std::ffi::c_void {
17783		self.p_next.cast_const()
17784	}
17785
17786	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17787		self.p_next = p_next;
17788	}
17789
17790	fn address(&mut self) -> *mut std::ffi::c_void {
17791		std::ptr::from_mut(self).cast()
17792	}
17793}
17794
17795impl<'a> crate::construction::sealed::ChainNode for vk::BindVideoSessionMemoryInfoKHR<'a> {
17796	const S_TYPE: vk::StructureType = vk::StructureType::BIND_VIDEO_SESSION_MEMORY_INFO_KHR;
17797
17798	fn s_type(&self) -> vk::StructureType {
17799		self.s_type
17800	}
17801
17802	fn p_next(&self) -> *const std::ffi::c_void {
17803		self.p_next
17804	}
17805
17806	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17807		self.p_next = p_next.cast_const();
17808	}
17809
17810	fn address(&mut self) -> *mut std::ffi::c_void {
17811		std::ptr::from_mut(self).cast()
17812	}
17813}
17814
17815impl<'a> crate::construction::sealed::ChainNode for vk::VideoPictureResourceInfoKHR<'a> {
17816	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_PICTURE_RESOURCE_INFO_KHR;
17817
17818	fn s_type(&self) -> vk::StructureType {
17819		self.s_type
17820	}
17821
17822	fn p_next(&self) -> *const std::ffi::c_void {
17823		self.p_next
17824	}
17825
17826	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17827		self.p_next = p_next.cast_const();
17828	}
17829
17830	fn address(&mut self) -> *mut std::ffi::c_void {
17831		std::ptr::from_mut(self).cast()
17832	}
17833}
17834
17835impl<'a> crate::construction::sealed::ChainNode for vk::VideoReferenceSlotInfoKHR<'a> {
17836	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_REFERENCE_SLOT_INFO_KHR;
17837
17838	fn s_type(&self) -> vk::StructureType {
17839		self.s_type
17840	}
17841
17842	fn p_next(&self) -> *const std::ffi::c_void {
17843		self.p_next
17844	}
17845
17846	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17847		self.p_next = p_next.cast_const();
17848	}
17849
17850	fn address(&mut self) -> *mut std::ffi::c_void {
17851		std::ptr::from_mut(self).cast()
17852	}
17853}
17854
17855impl<'a> crate::construction::sealed::ChainNode for vk::VideoDecodeCapabilitiesKHR<'a> {
17856	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_DECODE_CAPABILITIES_KHR;
17857
17858	fn s_type(&self) -> vk::StructureType {
17859		self.s_type
17860	}
17861
17862	fn p_next(&self) -> *const std::ffi::c_void {
17863		self.p_next.cast_const()
17864	}
17865
17866	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17867		self.p_next = p_next;
17868	}
17869
17870	fn address(&mut self) -> *mut std::ffi::c_void {
17871		std::ptr::from_mut(self).cast()
17872	}
17873}
17874
17875impl<'a, 'root> crate::Extends<vk::VideoCapabilitiesKHR<'root>>
17876	for vk::VideoDecodeCapabilitiesKHR<'a>
17877{
17878}
17879
17880impl<'a> crate::construction::sealed::ChainNode for vk::VideoDecodeUsageInfoKHR<'a> {
17881	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_DECODE_USAGE_INFO_KHR;
17882
17883	fn s_type(&self) -> vk::StructureType {
17884		self.s_type
17885	}
17886
17887	fn p_next(&self) -> *const std::ffi::c_void {
17888		self.p_next
17889	}
17890
17891	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17892		self.p_next = p_next.cast_const();
17893	}
17894
17895	fn address(&mut self) -> *mut std::ffi::c_void {
17896		std::ptr::from_mut(self).cast()
17897	}
17898}
17899
17900impl<'a, 'root> crate::Extends<vk::VideoProfileInfoKHR<'root>> for vk::VideoDecodeUsageInfoKHR<'a> {}
17901
17902impl<'a, 'root> crate::Extends<vk::QueryPoolCreateInfo<'root>> for vk::VideoDecodeUsageInfoKHR<'a> {}
17903
17904impl<'a> crate::construction::sealed::ChainNode for vk::VideoDecodeInfoKHR<'a> {
17905	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_DECODE_INFO_KHR;
17906
17907	fn s_type(&self) -> vk::StructureType {
17908		self.s_type
17909	}
17910
17911	fn p_next(&self) -> *const std::ffi::c_void {
17912		self.p_next
17913	}
17914
17915	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17916		self.p_next = p_next.cast_const();
17917	}
17918
17919	fn address(&mut self) -> *mut std::ffi::c_void {
17920		std::ptr::from_mut(self).cast()
17921	}
17922}
17923
17924impl<'a> crate::construction::sealed::ChainNode
17925	for vk::PhysicalDeviceVideoMaintenance1FeaturesKHR<'a>
17926{
17927	const S_TYPE: vk::StructureType =
17928		vk::StructureType::PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR;
17929
17930	fn s_type(&self) -> vk::StructureType {
17931		self.s_type
17932	}
17933
17934	fn p_next(&self) -> *const std::ffi::c_void {
17935		self.p_next.cast_const()
17936	}
17937
17938	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17939		self.p_next = p_next;
17940	}
17941
17942	fn address(&mut self) -> *mut std::ffi::c_void {
17943		std::ptr::from_mut(self).cast()
17944	}
17945}
17946
17947impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
17948	for vk::PhysicalDeviceVideoMaintenance1FeaturesKHR<'a>
17949{
17950}
17951
17952impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
17953	for vk::PhysicalDeviceVideoMaintenance1FeaturesKHR<'a>
17954{
17955}
17956
17957impl<'a> crate::construction::sealed::ChainNode
17958	for vk::PhysicalDeviceVideoMaintenance2FeaturesKHR<'a>
17959{
17960	const S_TYPE: vk::StructureType =
17961		vk::StructureType::PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR;
17962
17963	fn s_type(&self) -> vk::StructureType {
17964		self.s_type
17965	}
17966
17967	fn p_next(&self) -> *const std::ffi::c_void {
17968		self.p_next.cast_const()
17969	}
17970
17971	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
17972		self.p_next = p_next;
17973	}
17974
17975	fn address(&mut self) -> *mut std::ffi::c_void {
17976		std::ptr::from_mut(self).cast()
17977	}
17978}
17979
17980impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
17981	for vk::PhysicalDeviceVideoMaintenance2FeaturesKHR<'a>
17982{
17983}
17984
17985impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
17986	for vk::PhysicalDeviceVideoMaintenance2FeaturesKHR<'a>
17987{
17988}
17989
17990impl<'a> crate::construction::sealed::ChainNode for vk::VideoInlineQueryInfoKHR<'a> {
17991	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_INLINE_QUERY_INFO_KHR;
17992
17993	fn s_type(&self) -> vk::StructureType {
17994		self.s_type
17995	}
17996
17997	fn p_next(&self) -> *const std::ffi::c_void {
17998		self.p_next
17999	}
18000
18001	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18002		self.p_next = p_next.cast_const();
18003	}
18004
18005	fn address(&mut self) -> *mut std::ffi::c_void {
18006		std::ptr::from_mut(self).cast()
18007	}
18008}
18009
18010impl<'a, 'root> crate::Extends<vk::VideoDecodeInfoKHR<'root>> for vk::VideoInlineQueryInfoKHR<'a> {}
18011
18012impl<'a, 'root> crate::Extends<vk::VideoEncodeInfoKHR<'root>> for vk::VideoInlineQueryInfoKHR<'a> {}
18013
18014impl<'a> crate::construction::sealed::ChainNode for vk::VideoDecodeH264ProfileInfoKHR<'a> {
18015	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_DECODE_H264_PROFILE_INFO_KHR;
18016
18017	fn s_type(&self) -> vk::StructureType {
18018		self.s_type
18019	}
18020
18021	fn p_next(&self) -> *const std::ffi::c_void {
18022		self.p_next
18023	}
18024
18025	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18026		self.p_next = p_next.cast_const();
18027	}
18028
18029	fn address(&mut self) -> *mut std::ffi::c_void {
18030		std::ptr::from_mut(self).cast()
18031	}
18032}
18033
18034impl<'a, 'root> crate::Extends<vk::VideoProfileInfoKHR<'root>>
18035	for vk::VideoDecodeH264ProfileInfoKHR<'a>
18036{
18037}
18038
18039impl<'a, 'root> crate::Extends<vk::QueryPoolCreateInfo<'root>>
18040	for vk::VideoDecodeH264ProfileInfoKHR<'a>
18041{
18042}
18043
18044impl<'a> crate::construction::sealed::ChainNode for vk::VideoDecodeH264CapabilitiesKHR<'a> {
18045	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_DECODE_H264_CAPABILITIES_KHR;
18046
18047	fn s_type(&self) -> vk::StructureType {
18048		self.s_type
18049	}
18050
18051	fn p_next(&self) -> *const std::ffi::c_void {
18052		self.p_next.cast_const()
18053	}
18054
18055	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18056		self.p_next = p_next;
18057	}
18058
18059	fn address(&mut self) -> *mut std::ffi::c_void {
18060		std::ptr::from_mut(self).cast()
18061	}
18062}
18063
18064impl<'a, 'root> crate::Extends<vk::VideoCapabilitiesKHR<'root>>
18065	for vk::VideoDecodeH264CapabilitiesKHR<'a>
18066{
18067}
18068
18069impl<'a> crate::construction::sealed::ChainNode
18070	for vk::VideoDecodeH264SessionParametersAddInfoKHR<'a>
18071{
18072	const S_TYPE: vk::StructureType =
18073		vk::StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR;
18074
18075	fn s_type(&self) -> vk::StructureType {
18076		self.s_type
18077	}
18078
18079	fn p_next(&self) -> *const std::ffi::c_void {
18080		self.p_next
18081	}
18082
18083	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18084		self.p_next = p_next.cast_const();
18085	}
18086
18087	fn address(&mut self) -> *mut std::ffi::c_void {
18088		std::ptr::from_mut(self).cast()
18089	}
18090}
18091
18092impl<'a, 'root> crate::Extends<vk::VideoSessionParametersUpdateInfoKHR<'root>>
18093	for vk::VideoDecodeH264SessionParametersAddInfoKHR<'a>
18094{
18095}
18096
18097impl<'a> crate::construction::sealed::ChainNode
18098	for vk::VideoDecodeH264SessionParametersCreateInfoKHR<'a>
18099{
18100	const S_TYPE: vk::StructureType =
18101		vk::StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR;
18102
18103	fn s_type(&self) -> vk::StructureType {
18104		self.s_type
18105	}
18106
18107	fn p_next(&self) -> *const std::ffi::c_void {
18108		self.p_next
18109	}
18110
18111	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18112		self.p_next = p_next.cast_const();
18113	}
18114
18115	fn address(&mut self) -> *mut std::ffi::c_void {
18116		std::ptr::from_mut(self).cast()
18117	}
18118}
18119
18120impl<'a, 'root> crate::Extends<vk::VideoSessionParametersCreateInfoKHR<'root>>
18121	for vk::VideoDecodeH264SessionParametersCreateInfoKHR<'a>
18122{
18123}
18124
18125impl<'a> crate::construction::sealed::ChainNode
18126	for vk::VideoDecodeH264InlineSessionParametersInfoKHR<'a>
18127{
18128	const S_TYPE: vk::StructureType =
18129		vk::StructureType::VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR;
18130
18131	fn s_type(&self) -> vk::StructureType {
18132		self.s_type
18133	}
18134
18135	fn p_next(&self) -> *const std::ffi::c_void {
18136		self.p_next
18137	}
18138
18139	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18140		self.p_next = p_next.cast_const();
18141	}
18142
18143	fn address(&mut self) -> *mut std::ffi::c_void {
18144		std::ptr::from_mut(self).cast()
18145	}
18146}
18147
18148impl<'a, 'root> crate::Extends<vk::VideoDecodeInfoKHR<'root>>
18149	for vk::VideoDecodeH264InlineSessionParametersInfoKHR<'a>
18150{
18151}
18152
18153impl<'a> crate::construction::sealed::ChainNode for vk::VideoDecodeH264PictureInfoKHR<'a> {
18154	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_DECODE_H264_PICTURE_INFO_KHR;
18155
18156	fn s_type(&self) -> vk::StructureType {
18157		self.s_type
18158	}
18159
18160	fn p_next(&self) -> *const std::ffi::c_void {
18161		self.p_next
18162	}
18163
18164	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18165		self.p_next = p_next.cast_const();
18166	}
18167
18168	fn address(&mut self) -> *mut std::ffi::c_void {
18169		std::ptr::from_mut(self).cast()
18170	}
18171}
18172
18173impl<'a, 'root> crate::Extends<vk::VideoDecodeInfoKHR<'root>>
18174	for vk::VideoDecodeH264PictureInfoKHR<'a>
18175{
18176}
18177
18178impl<'a> crate::construction::sealed::ChainNode for vk::VideoDecodeH264DpbSlotInfoKHR<'a> {
18179	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR;
18180
18181	fn s_type(&self) -> vk::StructureType {
18182		self.s_type
18183	}
18184
18185	fn p_next(&self) -> *const std::ffi::c_void {
18186		self.p_next
18187	}
18188
18189	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18190		self.p_next = p_next.cast_const();
18191	}
18192
18193	fn address(&mut self) -> *mut std::ffi::c_void {
18194		std::ptr::from_mut(self).cast()
18195	}
18196}
18197
18198impl<'a, 'root> crate::Extends<vk::VideoReferenceSlotInfoKHR<'root>>
18199	for vk::VideoDecodeH264DpbSlotInfoKHR<'a>
18200{
18201}
18202
18203impl<'a> crate::construction::sealed::ChainNode for vk::VideoDecodeH265ProfileInfoKHR<'a> {
18204	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_DECODE_H265_PROFILE_INFO_KHR;
18205
18206	fn s_type(&self) -> vk::StructureType {
18207		self.s_type
18208	}
18209
18210	fn p_next(&self) -> *const std::ffi::c_void {
18211		self.p_next
18212	}
18213
18214	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18215		self.p_next = p_next.cast_const();
18216	}
18217
18218	fn address(&mut self) -> *mut std::ffi::c_void {
18219		std::ptr::from_mut(self).cast()
18220	}
18221}
18222
18223impl<'a, 'root> crate::Extends<vk::VideoProfileInfoKHR<'root>>
18224	for vk::VideoDecodeH265ProfileInfoKHR<'a>
18225{
18226}
18227
18228impl<'a, 'root> crate::Extends<vk::QueryPoolCreateInfo<'root>>
18229	for vk::VideoDecodeH265ProfileInfoKHR<'a>
18230{
18231}
18232
18233impl<'a> crate::construction::sealed::ChainNode for vk::VideoDecodeH265CapabilitiesKHR<'a> {
18234	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_DECODE_H265_CAPABILITIES_KHR;
18235
18236	fn s_type(&self) -> vk::StructureType {
18237		self.s_type
18238	}
18239
18240	fn p_next(&self) -> *const std::ffi::c_void {
18241		self.p_next.cast_const()
18242	}
18243
18244	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18245		self.p_next = p_next;
18246	}
18247
18248	fn address(&mut self) -> *mut std::ffi::c_void {
18249		std::ptr::from_mut(self).cast()
18250	}
18251}
18252
18253impl<'a, 'root> crate::Extends<vk::VideoCapabilitiesKHR<'root>>
18254	for vk::VideoDecodeH265CapabilitiesKHR<'a>
18255{
18256}
18257
18258impl<'a> crate::construction::sealed::ChainNode
18259	for vk::VideoDecodeH265SessionParametersAddInfoKHR<'a>
18260{
18261	const S_TYPE: vk::StructureType =
18262		vk::StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR;
18263
18264	fn s_type(&self) -> vk::StructureType {
18265		self.s_type
18266	}
18267
18268	fn p_next(&self) -> *const std::ffi::c_void {
18269		self.p_next
18270	}
18271
18272	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18273		self.p_next = p_next.cast_const();
18274	}
18275
18276	fn address(&mut self) -> *mut std::ffi::c_void {
18277		std::ptr::from_mut(self).cast()
18278	}
18279}
18280
18281impl<'a, 'root> crate::Extends<vk::VideoSessionParametersUpdateInfoKHR<'root>>
18282	for vk::VideoDecodeH265SessionParametersAddInfoKHR<'a>
18283{
18284}
18285
18286impl<'a> crate::construction::sealed::ChainNode
18287	for vk::VideoDecodeH265SessionParametersCreateInfoKHR<'a>
18288{
18289	const S_TYPE: vk::StructureType =
18290		vk::StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR;
18291
18292	fn s_type(&self) -> vk::StructureType {
18293		self.s_type
18294	}
18295
18296	fn p_next(&self) -> *const std::ffi::c_void {
18297		self.p_next
18298	}
18299
18300	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18301		self.p_next = p_next.cast_const();
18302	}
18303
18304	fn address(&mut self) -> *mut std::ffi::c_void {
18305		std::ptr::from_mut(self).cast()
18306	}
18307}
18308
18309impl<'a, 'root> crate::Extends<vk::VideoSessionParametersCreateInfoKHR<'root>>
18310	for vk::VideoDecodeH265SessionParametersCreateInfoKHR<'a>
18311{
18312}
18313
18314impl<'a> crate::construction::sealed::ChainNode
18315	for vk::VideoDecodeH265InlineSessionParametersInfoKHR<'a>
18316{
18317	const S_TYPE: vk::StructureType =
18318		vk::StructureType::VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR;
18319
18320	fn s_type(&self) -> vk::StructureType {
18321		self.s_type
18322	}
18323
18324	fn p_next(&self) -> *const std::ffi::c_void {
18325		self.p_next
18326	}
18327
18328	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18329		self.p_next = p_next.cast_const();
18330	}
18331
18332	fn address(&mut self) -> *mut std::ffi::c_void {
18333		std::ptr::from_mut(self).cast()
18334	}
18335}
18336
18337impl<'a, 'root> crate::Extends<vk::VideoDecodeInfoKHR<'root>>
18338	for vk::VideoDecodeH265InlineSessionParametersInfoKHR<'a>
18339{
18340}
18341
18342impl<'a> crate::construction::sealed::ChainNode for vk::VideoDecodeH265PictureInfoKHR<'a> {
18343	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_DECODE_H265_PICTURE_INFO_KHR;
18344
18345	fn s_type(&self) -> vk::StructureType {
18346		self.s_type
18347	}
18348
18349	fn p_next(&self) -> *const std::ffi::c_void {
18350		self.p_next
18351	}
18352
18353	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18354		self.p_next = p_next.cast_const();
18355	}
18356
18357	fn address(&mut self) -> *mut std::ffi::c_void {
18358		std::ptr::from_mut(self).cast()
18359	}
18360}
18361
18362impl<'a, 'root> crate::Extends<vk::VideoDecodeInfoKHR<'root>>
18363	for vk::VideoDecodeH265PictureInfoKHR<'a>
18364{
18365}
18366
18367impl<'a> crate::construction::sealed::ChainNode for vk::VideoDecodeH265DpbSlotInfoKHR<'a> {
18368	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR;
18369
18370	fn s_type(&self) -> vk::StructureType {
18371		self.s_type
18372	}
18373
18374	fn p_next(&self) -> *const std::ffi::c_void {
18375		self.p_next
18376	}
18377
18378	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18379		self.p_next = p_next.cast_const();
18380	}
18381
18382	fn address(&mut self) -> *mut std::ffi::c_void {
18383		std::ptr::from_mut(self).cast()
18384	}
18385}
18386
18387impl<'a, 'root> crate::Extends<vk::VideoReferenceSlotInfoKHR<'root>>
18388	for vk::VideoDecodeH265DpbSlotInfoKHR<'a>
18389{
18390}
18391
18392impl<'a> crate::construction::sealed::ChainNode
18393	for vk::PhysicalDeviceVideoDecodeVP9FeaturesKHR<'a>
18394{
18395	const S_TYPE: vk::StructureType =
18396		vk::StructureType::PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR;
18397
18398	fn s_type(&self) -> vk::StructureType {
18399		self.s_type
18400	}
18401
18402	fn p_next(&self) -> *const std::ffi::c_void {
18403		self.p_next.cast_const()
18404	}
18405
18406	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18407		self.p_next = p_next;
18408	}
18409
18410	fn address(&mut self) -> *mut std::ffi::c_void {
18411		std::ptr::from_mut(self).cast()
18412	}
18413}
18414
18415impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
18416	for vk::PhysicalDeviceVideoDecodeVP9FeaturesKHR<'a>
18417{
18418}
18419
18420impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
18421	for vk::PhysicalDeviceVideoDecodeVP9FeaturesKHR<'a>
18422{
18423}
18424
18425impl<'a> crate::construction::sealed::ChainNode for vk::VideoDecodeVP9ProfileInfoKHR<'a> {
18426	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_DECODE_VP9_PROFILE_INFO_KHR;
18427
18428	fn s_type(&self) -> vk::StructureType {
18429		self.s_type
18430	}
18431
18432	fn p_next(&self) -> *const std::ffi::c_void {
18433		self.p_next
18434	}
18435
18436	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18437		self.p_next = p_next.cast_const();
18438	}
18439
18440	fn address(&mut self) -> *mut std::ffi::c_void {
18441		std::ptr::from_mut(self).cast()
18442	}
18443}
18444
18445impl<'a, 'root> crate::Extends<vk::VideoProfileInfoKHR<'root>>
18446	for vk::VideoDecodeVP9ProfileInfoKHR<'a>
18447{
18448}
18449
18450impl<'a, 'root> crate::Extends<vk::QueryPoolCreateInfo<'root>>
18451	for vk::VideoDecodeVP9ProfileInfoKHR<'a>
18452{
18453}
18454
18455impl<'a> crate::construction::sealed::ChainNode for vk::VideoDecodeVP9CapabilitiesKHR<'a> {
18456	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_DECODE_VP9_CAPABILITIES_KHR;
18457
18458	fn s_type(&self) -> vk::StructureType {
18459		self.s_type
18460	}
18461
18462	fn p_next(&self) -> *const std::ffi::c_void {
18463		self.p_next.cast_const()
18464	}
18465
18466	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18467		self.p_next = p_next;
18468	}
18469
18470	fn address(&mut self) -> *mut std::ffi::c_void {
18471		std::ptr::from_mut(self).cast()
18472	}
18473}
18474
18475impl<'a, 'root> crate::Extends<vk::VideoCapabilitiesKHR<'root>>
18476	for vk::VideoDecodeVP9CapabilitiesKHR<'a>
18477{
18478}
18479
18480impl<'a> crate::construction::sealed::ChainNode for vk::VideoDecodeVP9PictureInfoKHR<'a> {
18481	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_DECODE_VP9_PICTURE_INFO_KHR;
18482
18483	fn s_type(&self) -> vk::StructureType {
18484		self.s_type
18485	}
18486
18487	fn p_next(&self) -> *const std::ffi::c_void {
18488		self.p_next
18489	}
18490
18491	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18492		self.p_next = p_next.cast_const();
18493	}
18494
18495	fn address(&mut self) -> *mut std::ffi::c_void {
18496		std::ptr::from_mut(self).cast()
18497	}
18498}
18499
18500impl<'a, 'root> crate::Extends<vk::VideoDecodeInfoKHR<'root>>
18501	for vk::VideoDecodeVP9PictureInfoKHR<'a>
18502{
18503}
18504
18505impl<'a> crate::construction::sealed::ChainNode for vk::VideoDecodeAV1ProfileInfoKHR<'a> {
18506	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_DECODE_AV1_PROFILE_INFO_KHR;
18507
18508	fn s_type(&self) -> vk::StructureType {
18509		self.s_type
18510	}
18511
18512	fn p_next(&self) -> *const std::ffi::c_void {
18513		self.p_next
18514	}
18515
18516	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18517		self.p_next = p_next.cast_const();
18518	}
18519
18520	fn address(&mut self) -> *mut std::ffi::c_void {
18521		std::ptr::from_mut(self).cast()
18522	}
18523}
18524
18525impl<'a, 'root> crate::Extends<vk::VideoProfileInfoKHR<'root>>
18526	for vk::VideoDecodeAV1ProfileInfoKHR<'a>
18527{
18528}
18529
18530impl<'a, 'root> crate::Extends<vk::QueryPoolCreateInfo<'root>>
18531	for vk::VideoDecodeAV1ProfileInfoKHR<'a>
18532{
18533}
18534
18535impl<'a> crate::construction::sealed::ChainNode for vk::VideoDecodeAV1CapabilitiesKHR<'a> {
18536	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_DECODE_AV1_CAPABILITIES_KHR;
18537
18538	fn s_type(&self) -> vk::StructureType {
18539		self.s_type
18540	}
18541
18542	fn p_next(&self) -> *const std::ffi::c_void {
18543		self.p_next.cast_const()
18544	}
18545
18546	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18547		self.p_next = p_next;
18548	}
18549
18550	fn address(&mut self) -> *mut std::ffi::c_void {
18551		std::ptr::from_mut(self).cast()
18552	}
18553}
18554
18555impl<'a, 'root> crate::Extends<vk::VideoCapabilitiesKHR<'root>>
18556	for vk::VideoDecodeAV1CapabilitiesKHR<'a>
18557{
18558}
18559
18560impl<'a> crate::construction::sealed::ChainNode
18561	for vk::VideoDecodeAV1SessionParametersCreateInfoKHR<'a>
18562{
18563	const S_TYPE: vk::StructureType =
18564		vk::StructureType::VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR;
18565
18566	fn s_type(&self) -> vk::StructureType {
18567		self.s_type
18568	}
18569
18570	fn p_next(&self) -> *const std::ffi::c_void {
18571		self.p_next
18572	}
18573
18574	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18575		self.p_next = p_next.cast_const();
18576	}
18577
18578	fn address(&mut self) -> *mut std::ffi::c_void {
18579		std::ptr::from_mut(self).cast()
18580	}
18581}
18582
18583impl<'a, 'root> crate::Extends<vk::VideoSessionParametersCreateInfoKHR<'root>>
18584	for vk::VideoDecodeAV1SessionParametersCreateInfoKHR<'a>
18585{
18586}
18587
18588impl<'a> crate::construction::sealed::ChainNode
18589	for vk::VideoDecodeAV1InlineSessionParametersInfoKHR<'a>
18590{
18591	const S_TYPE: vk::StructureType =
18592		vk::StructureType::VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR;
18593
18594	fn s_type(&self) -> vk::StructureType {
18595		self.s_type
18596	}
18597
18598	fn p_next(&self) -> *const std::ffi::c_void {
18599		self.p_next
18600	}
18601
18602	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18603		self.p_next = p_next.cast_const();
18604	}
18605
18606	fn address(&mut self) -> *mut std::ffi::c_void {
18607		std::ptr::from_mut(self).cast()
18608	}
18609}
18610
18611impl<'a, 'root> crate::Extends<vk::VideoDecodeInfoKHR<'root>>
18612	for vk::VideoDecodeAV1InlineSessionParametersInfoKHR<'a>
18613{
18614}
18615
18616impl<'a> crate::construction::sealed::ChainNode for vk::VideoDecodeAV1PictureInfoKHR<'a> {
18617	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_DECODE_AV1_PICTURE_INFO_KHR;
18618
18619	fn s_type(&self) -> vk::StructureType {
18620		self.s_type
18621	}
18622
18623	fn p_next(&self) -> *const std::ffi::c_void {
18624		self.p_next
18625	}
18626
18627	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18628		self.p_next = p_next.cast_const();
18629	}
18630
18631	fn address(&mut self) -> *mut std::ffi::c_void {
18632		std::ptr::from_mut(self).cast()
18633	}
18634}
18635
18636impl<'a, 'root> crate::Extends<vk::VideoDecodeInfoKHR<'root>>
18637	for vk::VideoDecodeAV1PictureInfoKHR<'a>
18638{
18639}
18640
18641impl<'a> crate::construction::sealed::ChainNode for vk::VideoDecodeAV1DpbSlotInfoKHR<'a> {
18642	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR;
18643
18644	fn s_type(&self) -> vk::StructureType {
18645		self.s_type
18646	}
18647
18648	fn p_next(&self) -> *const std::ffi::c_void {
18649		self.p_next
18650	}
18651
18652	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18653		self.p_next = p_next.cast_const();
18654	}
18655
18656	fn address(&mut self) -> *mut std::ffi::c_void {
18657		std::ptr::from_mut(self).cast()
18658	}
18659}
18660
18661impl<'a, 'root> crate::Extends<vk::VideoReferenceSlotInfoKHR<'root>>
18662	for vk::VideoDecodeAV1DpbSlotInfoKHR<'a>
18663{
18664}
18665
18666impl<'a> crate::construction::sealed::ChainNode for vk::VideoSessionCreateInfoKHR<'a> {
18667	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_SESSION_CREATE_INFO_KHR;
18668
18669	fn s_type(&self) -> vk::StructureType {
18670		self.s_type
18671	}
18672
18673	fn p_next(&self) -> *const std::ffi::c_void {
18674		self.p_next
18675	}
18676
18677	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18678		self.p_next = p_next.cast_const();
18679	}
18680
18681	fn address(&mut self) -> *mut std::ffi::c_void {
18682		std::ptr::from_mut(self).cast()
18683	}
18684}
18685
18686impl<'a> crate::construction::sealed::ChainNode for vk::VideoSessionParametersCreateInfoKHR<'a> {
18687	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR;
18688
18689	fn s_type(&self) -> vk::StructureType {
18690		self.s_type
18691	}
18692
18693	fn p_next(&self) -> *const std::ffi::c_void {
18694		self.p_next
18695	}
18696
18697	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18698		self.p_next = p_next.cast_const();
18699	}
18700
18701	fn address(&mut self) -> *mut std::ffi::c_void {
18702		std::ptr::from_mut(self).cast()
18703	}
18704}
18705
18706impl<'a> crate::construction::sealed::ChainNode for vk::VideoSessionParametersUpdateInfoKHR<'a> {
18707	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR;
18708
18709	fn s_type(&self) -> vk::StructureType {
18710		self.s_type
18711	}
18712
18713	fn p_next(&self) -> *const std::ffi::c_void {
18714		self.p_next
18715	}
18716
18717	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18718		self.p_next = p_next.cast_const();
18719	}
18720
18721	fn address(&mut self) -> *mut std::ffi::c_void {
18722		std::ptr::from_mut(self).cast()
18723	}
18724}
18725
18726impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeSessionParametersGetInfoKHR<'a> {
18727	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR;
18728
18729	fn s_type(&self) -> vk::StructureType {
18730		self.s_type
18731	}
18732
18733	fn p_next(&self) -> *const std::ffi::c_void {
18734		self.p_next
18735	}
18736
18737	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18738		self.p_next = p_next.cast_const();
18739	}
18740
18741	fn address(&mut self) -> *mut std::ffi::c_void {
18742		std::ptr::from_mut(self).cast()
18743	}
18744}
18745
18746impl<'a> crate::construction::sealed::ChainNode
18747	for vk::VideoEncodeSessionParametersFeedbackInfoKHR<'a>
18748{
18749	const S_TYPE: vk::StructureType =
18750		vk::StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR;
18751
18752	fn s_type(&self) -> vk::StructureType {
18753		self.s_type
18754	}
18755
18756	fn p_next(&self) -> *const std::ffi::c_void {
18757		self.p_next.cast_const()
18758	}
18759
18760	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18761		self.p_next = p_next;
18762	}
18763
18764	fn address(&mut self) -> *mut std::ffi::c_void {
18765		std::ptr::from_mut(self).cast()
18766	}
18767}
18768
18769impl<'a> crate::construction::sealed::ChainNode for vk::VideoBeginCodingInfoKHR<'a> {
18770	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_BEGIN_CODING_INFO_KHR;
18771
18772	fn s_type(&self) -> vk::StructureType {
18773		self.s_type
18774	}
18775
18776	fn p_next(&self) -> *const std::ffi::c_void {
18777		self.p_next
18778	}
18779
18780	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18781		self.p_next = p_next.cast_const();
18782	}
18783
18784	fn address(&mut self) -> *mut std::ffi::c_void {
18785		std::ptr::from_mut(self).cast()
18786	}
18787}
18788
18789impl<'a> crate::construction::sealed::ChainNode for vk::VideoEndCodingInfoKHR<'a> {
18790	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_END_CODING_INFO_KHR;
18791
18792	fn s_type(&self) -> vk::StructureType {
18793		self.s_type
18794	}
18795
18796	fn p_next(&self) -> *const std::ffi::c_void {
18797		self.p_next
18798	}
18799
18800	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18801		self.p_next = p_next.cast_const();
18802	}
18803
18804	fn address(&mut self) -> *mut std::ffi::c_void {
18805		std::ptr::from_mut(self).cast()
18806	}
18807}
18808
18809impl<'a> crate::construction::sealed::ChainNode for vk::VideoCodingControlInfoKHR<'a> {
18810	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_CODING_CONTROL_INFO_KHR;
18811
18812	fn s_type(&self) -> vk::StructureType {
18813		self.s_type
18814	}
18815
18816	fn p_next(&self) -> *const std::ffi::c_void {
18817		self.p_next
18818	}
18819
18820	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18821		self.p_next = p_next.cast_const();
18822	}
18823
18824	fn address(&mut self) -> *mut std::ffi::c_void {
18825		std::ptr::from_mut(self).cast()
18826	}
18827}
18828
18829impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeUsageInfoKHR<'a> {
18830	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_USAGE_INFO_KHR;
18831
18832	fn s_type(&self) -> vk::StructureType {
18833		self.s_type
18834	}
18835
18836	fn p_next(&self) -> *const std::ffi::c_void {
18837		self.p_next
18838	}
18839
18840	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18841		self.p_next = p_next.cast_const();
18842	}
18843
18844	fn address(&mut self) -> *mut std::ffi::c_void {
18845		std::ptr::from_mut(self).cast()
18846	}
18847}
18848
18849impl<'a, 'root> crate::Extends<vk::VideoProfileInfoKHR<'root>> for vk::VideoEncodeUsageInfoKHR<'a> {}
18850
18851impl<'a, 'root> crate::Extends<vk::QueryPoolCreateInfo<'root>> for vk::VideoEncodeUsageInfoKHR<'a> {}
18852
18853impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeInfoKHR<'a> {
18854	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_INFO_KHR;
18855
18856	fn s_type(&self) -> vk::StructureType {
18857		self.s_type
18858	}
18859
18860	fn p_next(&self) -> *const std::ffi::c_void {
18861		self.p_next
18862	}
18863
18864	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18865		self.p_next = p_next.cast_const();
18866	}
18867
18868	fn address(&mut self) -> *mut std::ffi::c_void {
18869		std::ptr::from_mut(self).cast()
18870	}
18871}
18872
18873impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeQuantizationMapInfoKHR<'a> {
18874	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR;
18875
18876	fn s_type(&self) -> vk::StructureType {
18877		self.s_type
18878	}
18879
18880	fn p_next(&self) -> *const std::ffi::c_void {
18881		self.p_next
18882	}
18883
18884	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18885		self.p_next = p_next.cast_const();
18886	}
18887
18888	fn address(&mut self) -> *mut std::ffi::c_void {
18889		std::ptr::from_mut(self).cast()
18890	}
18891}
18892
18893impl<'a, 'root> crate::Extends<vk::VideoEncodeInfoKHR<'root>>
18894	for vk::VideoEncodeQuantizationMapInfoKHR<'a>
18895{
18896}
18897
18898impl<'a> crate::construction::sealed::ChainNode
18899	for vk::VideoEncodeQuantizationMapSessionParametersCreateInfoKHR<'a>
18900{
18901	const S_TYPE: vk::StructureType =
18902		vk::StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR;
18903
18904	fn s_type(&self) -> vk::StructureType {
18905		self.s_type
18906	}
18907
18908	fn p_next(&self) -> *const std::ffi::c_void {
18909		self.p_next
18910	}
18911
18912	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18913		self.p_next = p_next.cast_const();
18914	}
18915
18916	fn address(&mut self) -> *mut std::ffi::c_void {
18917		std::ptr::from_mut(self).cast()
18918	}
18919}
18920
18921impl<'a, 'root> crate::Extends<vk::VideoSessionParametersCreateInfoKHR<'root>>
18922	for vk::VideoEncodeQuantizationMapSessionParametersCreateInfoKHR<'a>
18923{
18924}
18925
18926impl<'a> crate::construction::sealed::ChainNode
18927	for vk::PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR<'a>
18928{
18929	const S_TYPE: vk::StructureType =
18930		vk::StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR;
18931
18932	fn s_type(&self) -> vk::StructureType {
18933		self.s_type
18934	}
18935
18936	fn p_next(&self) -> *const std::ffi::c_void {
18937		self.p_next.cast_const()
18938	}
18939
18940	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18941		self.p_next = p_next;
18942	}
18943
18944	fn address(&mut self) -> *mut std::ffi::c_void {
18945		std::ptr::from_mut(self).cast()
18946	}
18947}
18948
18949impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
18950	for vk::PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR<'a>
18951{
18952}
18953
18954impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
18955	for vk::PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR<'a>
18956{
18957}
18958
18959impl<'a> crate::construction::sealed::ChainNode
18960	for vk::QueryPoolVideoEncodeFeedbackCreateInfoKHR<'a>
18961{
18962	const S_TYPE: vk::StructureType =
18963		vk::StructureType::QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR;
18964
18965	fn s_type(&self) -> vk::StructureType {
18966		self.s_type
18967	}
18968
18969	fn p_next(&self) -> *const std::ffi::c_void {
18970		self.p_next
18971	}
18972
18973	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18974		self.p_next = p_next.cast_const();
18975	}
18976
18977	fn address(&mut self) -> *mut std::ffi::c_void {
18978		std::ptr::from_mut(self).cast()
18979	}
18980}
18981
18982impl<'a, 'root> crate::Extends<vk::QueryPoolCreateInfo<'root>>
18983	for vk::QueryPoolVideoEncodeFeedbackCreateInfoKHR<'a>
18984{
18985}
18986
18987impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeQualityLevelInfoKHR<'a> {
18988	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR;
18989
18990	fn s_type(&self) -> vk::StructureType {
18991		self.s_type
18992	}
18993
18994	fn p_next(&self) -> *const std::ffi::c_void {
18995		self.p_next
18996	}
18997
18998	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
18999		self.p_next = p_next.cast_const();
19000	}
19001
19002	fn address(&mut self) -> *mut std::ffi::c_void {
19003		std::ptr::from_mut(self).cast()
19004	}
19005}
19006
19007impl<'a, 'root> crate::Extends<vk::VideoCodingControlInfoKHR<'root>>
19008	for vk::VideoEncodeQualityLevelInfoKHR<'a>
19009{
19010}
19011
19012impl<'a, 'root> crate::Extends<vk::VideoSessionParametersCreateInfoKHR<'root>>
19013	for vk::VideoEncodeQualityLevelInfoKHR<'a>
19014{
19015}
19016
19017impl<'a> crate::construction::sealed::ChainNode
19018	for vk::PhysicalDeviceVideoEncodeQualityLevelInfoKHR<'a>
19019{
19020	const S_TYPE: vk::StructureType =
19021		vk::StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR;
19022
19023	fn s_type(&self) -> vk::StructureType {
19024		self.s_type
19025	}
19026
19027	fn p_next(&self) -> *const std::ffi::c_void {
19028		self.p_next
19029	}
19030
19031	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19032		self.p_next = p_next.cast_const();
19033	}
19034
19035	fn address(&mut self) -> *mut std::ffi::c_void {
19036		std::ptr::from_mut(self).cast()
19037	}
19038}
19039
19040impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeQualityLevelPropertiesKHR<'a> {
19041	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR;
19042
19043	fn s_type(&self) -> vk::StructureType {
19044		self.s_type
19045	}
19046
19047	fn p_next(&self) -> *const std::ffi::c_void {
19048		self.p_next.cast_const()
19049	}
19050
19051	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19052		self.p_next = p_next;
19053	}
19054
19055	fn address(&mut self) -> *mut std::ffi::c_void {
19056		std::ptr::from_mut(self).cast()
19057	}
19058}
19059
19060impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeRateControlInfoKHR<'a> {
19061	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_RATE_CONTROL_INFO_KHR;
19062
19063	fn s_type(&self) -> vk::StructureType {
19064		self.s_type
19065	}
19066
19067	fn p_next(&self) -> *const std::ffi::c_void {
19068		self.p_next
19069	}
19070
19071	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19072		self.p_next = p_next.cast_const();
19073	}
19074
19075	fn address(&mut self) -> *mut std::ffi::c_void {
19076		std::ptr::from_mut(self).cast()
19077	}
19078}
19079
19080impl<'a, 'root> crate::Extends<vk::VideoCodingControlInfoKHR<'root>>
19081	for vk::VideoEncodeRateControlInfoKHR<'a>
19082{
19083}
19084
19085impl<'a, 'root> crate::Extends<vk::VideoBeginCodingInfoKHR<'root>>
19086	for vk::VideoEncodeRateControlInfoKHR<'a>
19087{
19088}
19089
19090impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeRateControlLayerInfoKHR<'a> {
19091	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR;
19092
19093	fn s_type(&self) -> vk::StructureType {
19094		self.s_type
19095	}
19096
19097	fn p_next(&self) -> *const std::ffi::c_void {
19098		self.p_next
19099	}
19100
19101	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19102		self.p_next = p_next.cast_const();
19103	}
19104
19105	fn address(&mut self) -> *mut std::ffi::c_void {
19106		std::ptr::from_mut(self).cast()
19107	}
19108}
19109
19110impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeCapabilitiesKHR<'a> {
19111	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_CAPABILITIES_KHR;
19112
19113	fn s_type(&self) -> vk::StructureType {
19114		self.s_type
19115	}
19116
19117	fn p_next(&self) -> *const std::ffi::c_void {
19118		self.p_next.cast_const()
19119	}
19120
19121	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19122		self.p_next = p_next;
19123	}
19124
19125	fn address(&mut self) -> *mut std::ffi::c_void {
19126		std::ptr::from_mut(self).cast()
19127	}
19128}
19129
19130impl<'a, 'root> crate::Extends<vk::VideoCapabilitiesKHR<'root>>
19131	for vk::VideoEncodeCapabilitiesKHR<'a>
19132{
19133}
19134
19135impl<'a> crate::construction::sealed::ChainNode
19136	for vk::PhysicalDeviceVideoEncodeFeedback2FeaturesKHR<'a>
19137{
19138	const S_TYPE: vk::StructureType =
19139		vk::StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_FEEDBACK_2_FEATURES_KHR;
19140
19141	fn s_type(&self) -> vk::StructureType {
19142		self.s_type
19143	}
19144
19145	fn p_next(&self) -> *const std::ffi::c_void {
19146		self.p_next.cast_const()
19147	}
19148
19149	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19150		self.p_next = p_next;
19151	}
19152
19153	fn address(&mut self) -> *mut std::ffi::c_void {
19154		std::ptr::from_mut(self).cast()
19155	}
19156}
19157
19158impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
19159	for vk::PhysicalDeviceVideoEncodeFeedback2FeaturesKHR<'a>
19160{
19161}
19162
19163impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
19164	for vk::PhysicalDeviceVideoEncodeFeedback2FeaturesKHR<'a>
19165{
19166}
19167
19168impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeFeedback2CapabilitiesKHR<'a> {
19169	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_FEEDBACK_2_CAPABILITIES_KHR;
19170
19171	fn s_type(&self) -> vk::StructureType {
19172		self.s_type
19173	}
19174
19175	fn p_next(&self) -> *const std::ffi::c_void {
19176		self.p_next.cast_const()
19177	}
19178
19179	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19180		self.p_next = p_next;
19181	}
19182
19183	fn address(&mut self) -> *mut std::ffi::c_void {
19184		std::ptr::from_mut(self).cast()
19185	}
19186}
19187
19188impl<'a, 'root> crate::Extends<vk::VideoCapabilitiesKHR<'root>>
19189	for vk::VideoEncodeFeedback2CapabilitiesKHR<'a>
19190{
19191}
19192
19193impl<'a> crate::construction::sealed::ChainNode
19194	for vk::QueryPoolVideoEncodePerPartitionFeedbackCreateInfoKHR<'a>
19195{
19196	const S_TYPE: vk::StructureType =
19197		vk::StructureType::QUERY_POOL_VIDEO_ENCODE_PER_PARTITION_FEEDBACK_CREATE_INFO_KHR;
19198
19199	fn s_type(&self) -> vk::StructureType {
19200		self.s_type
19201	}
19202
19203	fn p_next(&self) -> *const std::ffi::c_void {
19204		self.p_next
19205	}
19206
19207	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19208		self.p_next = p_next.cast_const();
19209	}
19210
19211	fn address(&mut self) -> *mut std::ffi::c_void {
19212		std::ptr::from_mut(self).cast()
19213	}
19214}
19215
19216impl<'a, 'root> crate::Extends<vk::QueryPoolCreateInfo<'root>>
19217	for vk::QueryPoolVideoEncodePerPartitionFeedbackCreateInfoKHR<'a>
19218{
19219}
19220
19221impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeH264CapabilitiesKHR<'a> {
19222	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_H264_CAPABILITIES_KHR;
19223
19224	fn s_type(&self) -> vk::StructureType {
19225		self.s_type
19226	}
19227
19228	fn p_next(&self) -> *const std::ffi::c_void {
19229		self.p_next.cast_const()
19230	}
19231
19232	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19233		self.p_next = p_next;
19234	}
19235
19236	fn address(&mut self) -> *mut std::ffi::c_void {
19237		std::ptr::from_mut(self).cast()
19238	}
19239}
19240
19241impl<'a, 'root> crate::Extends<vk::VideoCapabilitiesKHR<'root>>
19242	for vk::VideoEncodeH264CapabilitiesKHR<'a>
19243{
19244}
19245
19246impl<'a> crate::construction::sealed::ChainNode
19247	for vk::VideoEncodeH264QualityLevelPropertiesKHR<'a>
19248{
19249	const S_TYPE: vk::StructureType =
19250		vk::StructureType::VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR;
19251
19252	fn s_type(&self) -> vk::StructureType {
19253		self.s_type
19254	}
19255
19256	fn p_next(&self) -> *const std::ffi::c_void {
19257		self.p_next.cast_const()
19258	}
19259
19260	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19261		self.p_next = p_next;
19262	}
19263
19264	fn address(&mut self) -> *mut std::ffi::c_void {
19265		std::ptr::from_mut(self).cast()
19266	}
19267}
19268
19269impl<'a, 'root> crate::Extends<vk::VideoEncodeQualityLevelPropertiesKHR<'root>>
19270	for vk::VideoEncodeH264QualityLevelPropertiesKHR<'a>
19271{
19272}
19273
19274impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeH264SessionCreateInfoKHR<'a> {
19275	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR;
19276
19277	fn s_type(&self) -> vk::StructureType {
19278		self.s_type
19279	}
19280
19281	fn p_next(&self) -> *const std::ffi::c_void {
19282		self.p_next
19283	}
19284
19285	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19286		self.p_next = p_next.cast_const();
19287	}
19288
19289	fn address(&mut self) -> *mut std::ffi::c_void {
19290		std::ptr::from_mut(self).cast()
19291	}
19292}
19293
19294impl<'a, 'root> crate::Extends<vk::VideoSessionCreateInfoKHR<'root>>
19295	for vk::VideoEncodeH264SessionCreateInfoKHR<'a>
19296{
19297}
19298
19299impl<'a> crate::construction::sealed::ChainNode
19300	for vk::VideoEncodeH264SessionParametersAddInfoKHR<'a>
19301{
19302	const S_TYPE: vk::StructureType =
19303		vk::StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR;
19304
19305	fn s_type(&self) -> vk::StructureType {
19306		self.s_type
19307	}
19308
19309	fn p_next(&self) -> *const std::ffi::c_void {
19310		self.p_next
19311	}
19312
19313	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19314		self.p_next = p_next.cast_const();
19315	}
19316
19317	fn address(&mut self) -> *mut std::ffi::c_void {
19318		std::ptr::from_mut(self).cast()
19319	}
19320}
19321
19322impl<'a, 'root> crate::Extends<vk::VideoSessionParametersUpdateInfoKHR<'root>>
19323	for vk::VideoEncodeH264SessionParametersAddInfoKHR<'a>
19324{
19325}
19326
19327impl<'a> crate::construction::sealed::ChainNode
19328	for vk::VideoEncodeH264SessionParametersCreateInfoKHR<'a>
19329{
19330	const S_TYPE: vk::StructureType =
19331		vk::StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR;
19332
19333	fn s_type(&self) -> vk::StructureType {
19334		self.s_type
19335	}
19336
19337	fn p_next(&self) -> *const std::ffi::c_void {
19338		self.p_next
19339	}
19340
19341	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19342		self.p_next = p_next.cast_const();
19343	}
19344
19345	fn address(&mut self) -> *mut std::ffi::c_void {
19346		std::ptr::from_mut(self).cast()
19347	}
19348}
19349
19350impl<'a, 'root> crate::Extends<vk::VideoSessionParametersCreateInfoKHR<'root>>
19351	for vk::VideoEncodeH264SessionParametersCreateInfoKHR<'a>
19352{
19353}
19354
19355impl<'a> crate::construction::sealed::ChainNode
19356	for vk::VideoEncodeH264SessionParametersGetInfoKHR<'a>
19357{
19358	const S_TYPE: vk::StructureType =
19359		vk::StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR;
19360
19361	fn s_type(&self) -> vk::StructureType {
19362		self.s_type
19363	}
19364
19365	fn p_next(&self) -> *const std::ffi::c_void {
19366		self.p_next
19367	}
19368
19369	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19370		self.p_next = p_next.cast_const();
19371	}
19372
19373	fn address(&mut self) -> *mut std::ffi::c_void {
19374		std::ptr::from_mut(self).cast()
19375	}
19376}
19377
19378impl<'a, 'root> crate::Extends<vk::VideoEncodeSessionParametersGetInfoKHR<'root>>
19379	for vk::VideoEncodeH264SessionParametersGetInfoKHR<'a>
19380{
19381}
19382
19383impl<'a> crate::construction::sealed::ChainNode
19384	for vk::VideoEncodeH264SessionParametersFeedbackInfoKHR<'a>
19385{
19386	const S_TYPE: vk::StructureType =
19387		vk::StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR;
19388
19389	fn s_type(&self) -> vk::StructureType {
19390		self.s_type
19391	}
19392
19393	fn p_next(&self) -> *const std::ffi::c_void {
19394		self.p_next.cast_const()
19395	}
19396
19397	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19398		self.p_next = p_next;
19399	}
19400
19401	fn address(&mut self) -> *mut std::ffi::c_void {
19402		std::ptr::from_mut(self).cast()
19403	}
19404}
19405
19406impl<'a, 'root> crate::Extends<vk::VideoEncodeSessionParametersFeedbackInfoKHR<'root>>
19407	for vk::VideoEncodeH264SessionParametersFeedbackInfoKHR<'a>
19408{
19409}
19410
19411impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeH264DpbSlotInfoKHR<'a> {
19412	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR;
19413
19414	fn s_type(&self) -> vk::StructureType {
19415		self.s_type
19416	}
19417
19418	fn p_next(&self) -> *const std::ffi::c_void {
19419		self.p_next
19420	}
19421
19422	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19423		self.p_next = p_next.cast_const();
19424	}
19425
19426	fn address(&mut self) -> *mut std::ffi::c_void {
19427		std::ptr::from_mut(self).cast()
19428	}
19429}
19430
19431impl<'a, 'root> crate::Extends<vk::VideoReferenceSlotInfoKHR<'root>>
19432	for vk::VideoEncodeH264DpbSlotInfoKHR<'a>
19433{
19434}
19435
19436impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeH264PictureInfoKHR<'a> {
19437	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_H264_PICTURE_INFO_KHR;
19438
19439	fn s_type(&self) -> vk::StructureType {
19440		self.s_type
19441	}
19442
19443	fn p_next(&self) -> *const std::ffi::c_void {
19444		self.p_next
19445	}
19446
19447	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19448		self.p_next = p_next.cast_const();
19449	}
19450
19451	fn address(&mut self) -> *mut std::ffi::c_void {
19452		std::ptr::from_mut(self).cast()
19453	}
19454}
19455
19456impl<'a, 'root> crate::Extends<vk::VideoEncodeInfoKHR<'root>>
19457	for vk::VideoEncodeH264PictureInfoKHR<'a>
19458{
19459}
19460
19461impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeH264ProfileInfoKHR<'a> {
19462	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_H264_PROFILE_INFO_KHR;
19463
19464	fn s_type(&self) -> vk::StructureType {
19465		self.s_type
19466	}
19467
19468	fn p_next(&self) -> *const std::ffi::c_void {
19469		self.p_next
19470	}
19471
19472	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19473		self.p_next = p_next.cast_const();
19474	}
19475
19476	fn address(&mut self) -> *mut std::ffi::c_void {
19477		std::ptr::from_mut(self).cast()
19478	}
19479}
19480
19481impl<'a, 'root> crate::Extends<vk::VideoProfileInfoKHR<'root>>
19482	for vk::VideoEncodeH264ProfileInfoKHR<'a>
19483{
19484}
19485
19486impl<'a, 'root> crate::Extends<vk::QueryPoolCreateInfo<'root>>
19487	for vk::VideoEncodeH264ProfileInfoKHR<'a>
19488{
19489}
19490
19491impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeH264NaluSliceInfoKHR<'a> {
19492	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR;
19493
19494	fn s_type(&self) -> vk::StructureType {
19495		self.s_type
19496	}
19497
19498	fn p_next(&self) -> *const std::ffi::c_void {
19499		self.p_next
19500	}
19501
19502	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19503		self.p_next = p_next.cast_const();
19504	}
19505
19506	fn address(&mut self) -> *mut std::ffi::c_void {
19507		std::ptr::from_mut(self).cast()
19508	}
19509}
19510
19511impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeH264RateControlInfoKHR<'a> {
19512	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR;
19513
19514	fn s_type(&self) -> vk::StructureType {
19515		self.s_type
19516	}
19517
19518	fn p_next(&self) -> *const std::ffi::c_void {
19519		self.p_next
19520	}
19521
19522	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19523		self.p_next = p_next.cast_const();
19524	}
19525
19526	fn address(&mut self) -> *mut std::ffi::c_void {
19527		std::ptr::from_mut(self).cast()
19528	}
19529}
19530
19531impl<'a, 'root> crate::Extends<vk::VideoCodingControlInfoKHR<'root>>
19532	for vk::VideoEncodeH264RateControlInfoKHR<'a>
19533{
19534}
19535
19536impl<'a, 'root> crate::Extends<vk::VideoBeginCodingInfoKHR<'root>>
19537	for vk::VideoEncodeH264RateControlInfoKHR<'a>
19538{
19539}
19540
19541impl<'a> crate::construction::sealed::ChainNode
19542	for vk::VideoEncodeH264GopRemainingFrameInfoKHR<'a>
19543{
19544	const S_TYPE: vk::StructureType =
19545		vk::StructureType::VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR;
19546
19547	fn s_type(&self) -> vk::StructureType {
19548		self.s_type
19549	}
19550
19551	fn p_next(&self) -> *const std::ffi::c_void {
19552		self.p_next
19553	}
19554
19555	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19556		self.p_next = p_next.cast_const();
19557	}
19558
19559	fn address(&mut self) -> *mut std::ffi::c_void {
19560		std::ptr::from_mut(self).cast()
19561	}
19562}
19563
19564impl<'a, 'root> crate::Extends<vk::VideoBeginCodingInfoKHR<'root>>
19565	for vk::VideoEncodeH264GopRemainingFrameInfoKHR<'a>
19566{
19567}
19568
19569impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeH264RateControlLayerInfoKHR<'a> {
19570	const S_TYPE: vk::StructureType =
19571		vk::StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR;
19572
19573	fn s_type(&self) -> vk::StructureType {
19574		self.s_type
19575	}
19576
19577	fn p_next(&self) -> *const std::ffi::c_void {
19578		self.p_next
19579	}
19580
19581	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19582		self.p_next = p_next.cast_const();
19583	}
19584
19585	fn address(&mut self) -> *mut std::ffi::c_void {
19586		std::ptr::from_mut(self).cast()
19587	}
19588}
19589
19590impl<'a, 'root> crate::Extends<vk::VideoEncodeRateControlLayerInfoKHR<'root>>
19591	for vk::VideoEncodeH264RateControlLayerInfoKHR<'a>
19592{
19593}
19594
19595impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeH265CapabilitiesKHR<'a> {
19596	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_H265_CAPABILITIES_KHR;
19597
19598	fn s_type(&self) -> vk::StructureType {
19599		self.s_type
19600	}
19601
19602	fn p_next(&self) -> *const std::ffi::c_void {
19603		self.p_next.cast_const()
19604	}
19605
19606	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19607		self.p_next = p_next;
19608	}
19609
19610	fn address(&mut self) -> *mut std::ffi::c_void {
19611		std::ptr::from_mut(self).cast()
19612	}
19613}
19614
19615impl<'a, 'root> crate::Extends<vk::VideoCapabilitiesKHR<'root>>
19616	for vk::VideoEncodeH265CapabilitiesKHR<'a>
19617{
19618}
19619
19620impl<'a> crate::construction::sealed::ChainNode
19621	for vk::VideoEncodeH265QualityLevelPropertiesKHR<'a>
19622{
19623	const S_TYPE: vk::StructureType =
19624		vk::StructureType::VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR;
19625
19626	fn s_type(&self) -> vk::StructureType {
19627		self.s_type
19628	}
19629
19630	fn p_next(&self) -> *const std::ffi::c_void {
19631		self.p_next.cast_const()
19632	}
19633
19634	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19635		self.p_next = p_next;
19636	}
19637
19638	fn address(&mut self) -> *mut std::ffi::c_void {
19639		std::ptr::from_mut(self).cast()
19640	}
19641}
19642
19643impl<'a, 'root> crate::Extends<vk::VideoEncodeQualityLevelPropertiesKHR<'root>>
19644	for vk::VideoEncodeH265QualityLevelPropertiesKHR<'a>
19645{
19646}
19647
19648impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeH265SessionCreateInfoKHR<'a> {
19649	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR;
19650
19651	fn s_type(&self) -> vk::StructureType {
19652		self.s_type
19653	}
19654
19655	fn p_next(&self) -> *const std::ffi::c_void {
19656		self.p_next
19657	}
19658
19659	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19660		self.p_next = p_next.cast_const();
19661	}
19662
19663	fn address(&mut self) -> *mut std::ffi::c_void {
19664		std::ptr::from_mut(self).cast()
19665	}
19666}
19667
19668impl<'a, 'root> crate::Extends<vk::VideoSessionCreateInfoKHR<'root>>
19669	for vk::VideoEncodeH265SessionCreateInfoKHR<'a>
19670{
19671}
19672
19673impl<'a> crate::construction::sealed::ChainNode
19674	for vk::VideoEncodeH265SessionParametersAddInfoKHR<'a>
19675{
19676	const S_TYPE: vk::StructureType =
19677		vk::StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR;
19678
19679	fn s_type(&self) -> vk::StructureType {
19680		self.s_type
19681	}
19682
19683	fn p_next(&self) -> *const std::ffi::c_void {
19684		self.p_next
19685	}
19686
19687	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19688		self.p_next = p_next.cast_const();
19689	}
19690
19691	fn address(&mut self) -> *mut std::ffi::c_void {
19692		std::ptr::from_mut(self).cast()
19693	}
19694}
19695
19696impl<'a, 'root> crate::Extends<vk::VideoSessionParametersUpdateInfoKHR<'root>>
19697	for vk::VideoEncodeH265SessionParametersAddInfoKHR<'a>
19698{
19699}
19700
19701impl<'a> crate::construction::sealed::ChainNode
19702	for vk::VideoEncodeH265SessionParametersCreateInfoKHR<'a>
19703{
19704	const S_TYPE: vk::StructureType =
19705		vk::StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR;
19706
19707	fn s_type(&self) -> vk::StructureType {
19708		self.s_type
19709	}
19710
19711	fn p_next(&self) -> *const std::ffi::c_void {
19712		self.p_next
19713	}
19714
19715	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19716		self.p_next = p_next.cast_const();
19717	}
19718
19719	fn address(&mut self) -> *mut std::ffi::c_void {
19720		std::ptr::from_mut(self).cast()
19721	}
19722}
19723
19724impl<'a, 'root> crate::Extends<vk::VideoSessionParametersCreateInfoKHR<'root>>
19725	for vk::VideoEncodeH265SessionParametersCreateInfoKHR<'a>
19726{
19727}
19728
19729impl<'a> crate::construction::sealed::ChainNode
19730	for vk::VideoEncodeH265SessionParametersGetInfoKHR<'a>
19731{
19732	const S_TYPE: vk::StructureType =
19733		vk::StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR;
19734
19735	fn s_type(&self) -> vk::StructureType {
19736		self.s_type
19737	}
19738
19739	fn p_next(&self) -> *const std::ffi::c_void {
19740		self.p_next
19741	}
19742
19743	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19744		self.p_next = p_next.cast_const();
19745	}
19746
19747	fn address(&mut self) -> *mut std::ffi::c_void {
19748		std::ptr::from_mut(self).cast()
19749	}
19750}
19751
19752impl<'a, 'root> crate::Extends<vk::VideoEncodeSessionParametersGetInfoKHR<'root>>
19753	for vk::VideoEncodeH265SessionParametersGetInfoKHR<'a>
19754{
19755}
19756
19757impl<'a> crate::construction::sealed::ChainNode
19758	for vk::VideoEncodeH265SessionParametersFeedbackInfoKHR<'a>
19759{
19760	const S_TYPE: vk::StructureType =
19761		vk::StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR;
19762
19763	fn s_type(&self) -> vk::StructureType {
19764		self.s_type
19765	}
19766
19767	fn p_next(&self) -> *const std::ffi::c_void {
19768		self.p_next.cast_const()
19769	}
19770
19771	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19772		self.p_next = p_next;
19773	}
19774
19775	fn address(&mut self) -> *mut std::ffi::c_void {
19776		std::ptr::from_mut(self).cast()
19777	}
19778}
19779
19780impl<'a, 'root> crate::Extends<vk::VideoEncodeSessionParametersFeedbackInfoKHR<'root>>
19781	for vk::VideoEncodeH265SessionParametersFeedbackInfoKHR<'a>
19782{
19783}
19784
19785impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeH265PictureInfoKHR<'a> {
19786	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_H265_PICTURE_INFO_KHR;
19787
19788	fn s_type(&self) -> vk::StructureType {
19789		self.s_type
19790	}
19791
19792	fn p_next(&self) -> *const std::ffi::c_void {
19793		self.p_next
19794	}
19795
19796	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19797		self.p_next = p_next.cast_const();
19798	}
19799
19800	fn address(&mut self) -> *mut std::ffi::c_void {
19801		std::ptr::from_mut(self).cast()
19802	}
19803}
19804
19805impl<'a, 'root> crate::Extends<vk::VideoEncodeInfoKHR<'root>>
19806	for vk::VideoEncodeH265PictureInfoKHR<'a>
19807{
19808}
19809
19810impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeH265NaluSliceSegmentInfoKHR<'a> {
19811	const S_TYPE: vk::StructureType =
19812		vk::StructureType::VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR;
19813
19814	fn s_type(&self) -> vk::StructureType {
19815		self.s_type
19816	}
19817
19818	fn p_next(&self) -> *const std::ffi::c_void {
19819		self.p_next
19820	}
19821
19822	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19823		self.p_next = p_next.cast_const();
19824	}
19825
19826	fn address(&mut self) -> *mut std::ffi::c_void {
19827		std::ptr::from_mut(self).cast()
19828	}
19829}
19830
19831impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeH265RateControlInfoKHR<'a> {
19832	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR;
19833
19834	fn s_type(&self) -> vk::StructureType {
19835		self.s_type
19836	}
19837
19838	fn p_next(&self) -> *const std::ffi::c_void {
19839		self.p_next
19840	}
19841
19842	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19843		self.p_next = p_next.cast_const();
19844	}
19845
19846	fn address(&mut self) -> *mut std::ffi::c_void {
19847		std::ptr::from_mut(self).cast()
19848	}
19849}
19850
19851impl<'a, 'root> crate::Extends<vk::VideoCodingControlInfoKHR<'root>>
19852	for vk::VideoEncodeH265RateControlInfoKHR<'a>
19853{
19854}
19855
19856impl<'a, 'root> crate::Extends<vk::VideoBeginCodingInfoKHR<'root>>
19857	for vk::VideoEncodeH265RateControlInfoKHR<'a>
19858{
19859}
19860
19861impl<'a> crate::construction::sealed::ChainNode
19862	for vk::VideoEncodeH265GopRemainingFrameInfoKHR<'a>
19863{
19864	const S_TYPE: vk::StructureType =
19865		vk::StructureType::VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR;
19866
19867	fn s_type(&self) -> vk::StructureType {
19868		self.s_type
19869	}
19870
19871	fn p_next(&self) -> *const std::ffi::c_void {
19872		self.p_next
19873	}
19874
19875	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19876		self.p_next = p_next.cast_const();
19877	}
19878
19879	fn address(&mut self) -> *mut std::ffi::c_void {
19880		std::ptr::from_mut(self).cast()
19881	}
19882}
19883
19884impl<'a, 'root> crate::Extends<vk::VideoBeginCodingInfoKHR<'root>>
19885	for vk::VideoEncodeH265GopRemainingFrameInfoKHR<'a>
19886{
19887}
19888
19889impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeH265RateControlLayerInfoKHR<'a> {
19890	const S_TYPE: vk::StructureType =
19891		vk::StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR;
19892
19893	fn s_type(&self) -> vk::StructureType {
19894		self.s_type
19895	}
19896
19897	fn p_next(&self) -> *const std::ffi::c_void {
19898		self.p_next
19899	}
19900
19901	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19902		self.p_next = p_next.cast_const();
19903	}
19904
19905	fn address(&mut self) -> *mut std::ffi::c_void {
19906		std::ptr::from_mut(self).cast()
19907	}
19908}
19909
19910impl<'a, 'root> crate::Extends<vk::VideoEncodeRateControlLayerInfoKHR<'root>>
19911	for vk::VideoEncodeH265RateControlLayerInfoKHR<'a>
19912{
19913}
19914
19915impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeH265ProfileInfoKHR<'a> {
19916	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_H265_PROFILE_INFO_KHR;
19917
19918	fn s_type(&self) -> vk::StructureType {
19919		self.s_type
19920	}
19921
19922	fn p_next(&self) -> *const std::ffi::c_void {
19923		self.p_next
19924	}
19925
19926	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19927		self.p_next = p_next.cast_const();
19928	}
19929
19930	fn address(&mut self) -> *mut std::ffi::c_void {
19931		std::ptr::from_mut(self).cast()
19932	}
19933}
19934
19935impl<'a, 'root> crate::Extends<vk::VideoProfileInfoKHR<'root>>
19936	for vk::VideoEncodeH265ProfileInfoKHR<'a>
19937{
19938}
19939
19940impl<'a, 'root> crate::Extends<vk::QueryPoolCreateInfo<'root>>
19941	for vk::VideoEncodeH265ProfileInfoKHR<'a>
19942{
19943}
19944
19945impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeH265DpbSlotInfoKHR<'a> {
19946	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR;
19947
19948	fn s_type(&self) -> vk::StructureType {
19949		self.s_type
19950	}
19951
19952	fn p_next(&self) -> *const std::ffi::c_void {
19953		self.p_next
19954	}
19955
19956	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19957		self.p_next = p_next.cast_const();
19958	}
19959
19960	fn address(&mut self) -> *mut std::ffi::c_void {
19961		std::ptr::from_mut(self).cast()
19962	}
19963}
19964
19965impl<'a, 'root> crate::Extends<vk::VideoReferenceSlotInfoKHR<'root>>
19966	for vk::VideoEncodeH265DpbSlotInfoKHR<'a>
19967{
19968}
19969
19970impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeAV1CapabilitiesKHR<'a> {
19971	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_AV1_CAPABILITIES_KHR;
19972
19973	fn s_type(&self) -> vk::StructureType {
19974		self.s_type
19975	}
19976
19977	fn p_next(&self) -> *const std::ffi::c_void {
19978		self.p_next.cast_const()
19979	}
19980
19981	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
19982		self.p_next = p_next;
19983	}
19984
19985	fn address(&mut self) -> *mut std::ffi::c_void {
19986		std::ptr::from_mut(self).cast()
19987	}
19988}
19989
19990impl<'a, 'root> crate::Extends<vk::VideoCapabilitiesKHR<'root>>
19991	for vk::VideoEncodeAV1CapabilitiesKHR<'a>
19992{
19993}
19994
19995impl<'a> crate::construction::sealed::ChainNode
19996	for vk::VideoEncodeAV1QualityLevelPropertiesKHR<'a>
19997{
19998	const S_TYPE: vk::StructureType =
19999		vk::StructureType::VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR;
20000
20001	fn s_type(&self) -> vk::StructureType {
20002		self.s_type
20003	}
20004
20005	fn p_next(&self) -> *const std::ffi::c_void {
20006		self.p_next.cast_const()
20007	}
20008
20009	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20010		self.p_next = p_next;
20011	}
20012
20013	fn address(&mut self) -> *mut std::ffi::c_void {
20014		std::ptr::from_mut(self).cast()
20015	}
20016}
20017
20018impl<'a, 'root> crate::Extends<vk::VideoEncodeQualityLevelPropertiesKHR<'root>>
20019	for vk::VideoEncodeAV1QualityLevelPropertiesKHR<'a>
20020{
20021}
20022
20023impl<'a> crate::construction::sealed::ChainNode
20024	for vk::PhysicalDeviceVideoEncodeAV1FeaturesKHR<'a>
20025{
20026	const S_TYPE: vk::StructureType =
20027		vk::StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR;
20028
20029	fn s_type(&self) -> vk::StructureType {
20030		self.s_type
20031	}
20032
20033	fn p_next(&self) -> *const std::ffi::c_void {
20034		self.p_next.cast_const()
20035	}
20036
20037	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20038		self.p_next = p_next;
20039	}
20040
20041	fn address(&mut self) -> *mut std::ffi::c_void {
20042		std::ptr::from_mut(self).cast()
20043	}
20044}
20045
20046impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
20047	for vk::PhysicalDeviceVideoEncodeAV1FeaturesKHR<'a>
20048{
20049}
20050
20051impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
20052	for vk::PhysicalDeviceVideoEncodeAV1FeaturesKHR<'a>
20053{
20054}
20055
20056impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeAV1SessionCreateInfoKHR<'a> {
20057	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR;
20058
20059	fn s_type(&self) -> vk::StructureType {
20060		self.s_type
20061	}
20062
20063	fn p_next(&self) -> *const std::ffi::c_void {
20064		self.p_next
20065	}
20066
20067	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20068		self.p_next = p_next.cast_const();
20069	}
20070
20071	fn address(&mut self) -> *mut std::ffi::c_void {
20072		std::ptr::from_mut(self).cast()
20073	}
20074}
20075
20076impl<'a, 'root> crate::Extends<vk::VideoSessionCreateInfoKHR<'root>>
20077	for vk::VideoEncodeAV1SessionCreateInfoKHR<'a>
20078{
20079}
20080
20081impl<'a> crate::construction::sealed::ChainNode
20082	for vk::VideoEncodeAV1SessionParametersCreateInfoKHR<'a>
20083{
20084	const S_TYPE: vk::StructureType =
20085		vk::StructureType::VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR;
20086
20087	fn s_type(&self) -> vk::StructureType {
20088		self.s_type
20089	}
20090
20091	fn p_next(&self) -> *const std::ffi::c_void {
20092		self.p_next
20093	}
20094
20095	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20096		self.p_next = p_next.cast_const();
20097	}
20098
20099	fn address(&mut self) -> *mut std::ffi::c_void {
20100		std::ptr::from_mut(self).cast()
20101	}
20102}
20103
20104impl<'a, 'root> crate::Extends<vk::VideoSessionParametersCreateInfoKHR<'root>>
20105	for vk::VideoEncodeAV1SessionParametersCreateInfoKHR<'a>
20106{
20107}
20108
20109impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeAV1DpbSlotInfoKHR<'a> {
20110	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR;
20111
20112	fn s_type(&self) -> vk::StructureType {
20113		self.s_type
20114	}
20115
20116	fn p_next(&self) -> *const std::ffi::c_void {
20117		self.p_next
20118	}
20119
20120	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20121		self.p_next = p_next.cast_const();
20122	}
20123
20124	fn address(&mut self) -> *mut std::ffi::c_void {
20125		std::ptr::from_mut(self).cast()
20126	}
20127}
20128
20129impl<'a, 'root> crate::Extends<vk::VideoReferenceSlotInfoKHR<'root>>
20130	for vk::VideoEncodeAV1DpbSlotInfoKHR<'a>
20131{
20132}
20133
20134impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeAV1PictureInfoKHR<'a> {
20135	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_AV1_PICTURE_INFO_KHR;
20136
20137	fn s_type(&self) -> vk::StructureType {
20138		self.s_type
20139	}
20140
20141	fn p_next(&self) -> *const std::ffi::c_void {
20142		self.p_next
20143	}
20144
20145	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20146		self.p_next = p_next.cast_const();
20147	}
20148
20149	fn address(&mut self) -> *mut std::ffi::c_void {
20150		std::ptr::from_mut(self).cast()
20151	}
20152}
20153
20154impl<'a, 'root> crate::Extends<vk::VideoEncodeInfoKHR<'root>>
20155	for vk::VideoEncodeAV1PictureInfoKHR<'a>
20156{
20157}
20158
20159impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeAV1ProfileInfoKHR<'a> {
20160	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_AV1_PROFILE_INFO_KHR;
20161
20162	fn s_type(&self) -> vk::StructureType {
20163		self.s_type
20164	}
20165
20166	fn p_next(&self) -> *const std::ffi::c_void {
20167		self.p_next
20168	}
20169
20170	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20171		self.p_next = p_next.cast_const();
20172	}
20173
20174	fn address(&mut self) -> *mut std::ffi::c_void {
20175		std::ptr::from_mut(self).cast()
20176	}
20177}
20178
20179impl<'a, 'root> crate::Extends<vk::VideoProfileInfoKHR<'root>>
20180	for vk::VideoEncodeAV1ProfileInfoKHR<'a>
20181{
20182}
20183
20184impl<'a, 'root> crate::Extends<vk::QueryPoolCreateInfo<'root>>
20185	for vk::VideoEncodeAV1ProfileInfoKHR<'a>
20186{
20187}
20188
20189impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeAV1RateControlInfoKHR<'a> {
20190	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR;
20191
20192	fn s_type(&self) -> vk::StructureType {
20193		self.s_type
20194	}
20195
20196	fn p_next(&self) -> *const std::ffi::c_void {
20197		self.p_next
20198	}
20199
20200	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20201		self.p_next = p_next.cast_const();
20202	}
20203
20204	fn address(&mut self) -> *mut std::ffi::c_void {
20205		std::ptr::from_mut(self).cast()
20206	}
20207}
20208
20209impl<'a, 'root> crate::Extends<vk::VideoCodingControlInfoKHR<'root>>
20210	for vk::VideoEncodeAV1RateControlInfoKHR<'a>
20211{
20212}
20213
20214impl<'a, 'root> crate::Extends<vk::VideoBeginCodingInfoKHR<'root>>
20215	for vk::VideoEncodeAV1RateControlInfoKHR<'a>
20216{
20217}
20218
20219impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeAV1GopRemainingFrameInfoKHR<'a> {
20220	const S_TYPE: vk::StructureType =
20221		vk::StructureType::VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR;
20222
20223	fn s_type(&self) -> vk::StructureType {
20224		self.s_type
20225	}
20226
20227	fn p_next(&self) -> *const std::ffi::c_void {
20228		self.p_next
20229	}
20230
20231	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20232		self.p_next = p_next.cast_const();
20233	}
20234
20235	fn address(&mut self) -> *mut std::ffi::c_void {
20236		std::ptr::from_mut(self).cast()
20237	}
20238}
20239
20240impl<'a, 'root> crate::Extends<vk::VideoBeginCodingInfoKHR<'root>>
20241	for vk::VideoEncodeAV1GopRemainingFrameInfoKHR<'a>
20242{
20243}
20244
20245impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeAV1RateControlLayerInfoKHR<'a> {
20246	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR;
20247
20248	fn s_type(&self) -> vk::StructureType {
20249		self.s_type
20250	}
20251
20252	fn p_next(&self) -> *const std::ffi::c_void {
20253		self.p_next
20254	}
20255
20256	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20257		self.p_next = p_next.cast_const();
20258	}
20259
20260	fn address(&mut self) -> *mut std::ffi::c_void {
20261		std::ptr::from_mut(self).cast()
20262	}
20263}
20264
20265impl<'a, 'root> crate::Extends<vk::VideoEncodeRateControlLayerInfoKHR<'root>>
20266	for vk::VideoEncodeAV1RateControlLayerInfoKHR<'a>
20267{
20268}
20269
20270impl<'a> crate::construction::sealed::ChainNode
20271	for vk::PhysicalDeviceInheritedViewportScissorFeaturesNV<'a>
20272{
20273	const S_TYPE: vk::StructureType =
20274		vk::StructureType::PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV;
20275
20276	fn s_type(&self) -> vk::StructureType {
20277		self.s_type
20278	}
20279
20280	fn p_next(&self) -> *const std::ffi::c_void {
20281		self.p_next.cast_const()
20282	}
20283
20284	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20285		self.p_next = p_next;
20286	}
20287
20288	fn address(&mut self) -> *mut std::ffi::c_void {
20289		std::ptr::from_mut(self).cast()
20290	}
20291}
20292
20293impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
20294	for vk::PhysicalDeviceInheritedViewportScissorFeaturesNV<'a>
20295{
20296}
20297
20298impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
20299	for vk::PhysicalDeviceInheritedViewportScissorFeaturesNV<'a>
20300{
20301}
20302
20303impl<'a> crate::construction::sealed::ChainNode
20304	for vk::CommandBufferInheritanceViewportScissorInfoNV<'a>
20305{
20306	const S_TYPE: vk::StructureType =
20307		vk::StructureType::COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV;
20308
20309	fn s_type(&self) -> vk::StructureType {
20310		self.s_type
20311	}
20312
20313	fn p_next(&self) -> *const std::ffi::c_void {
20314		self.p_next
20315	}
20316
20317	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20318		self.p_next = p_next.cast_const();
20319	}
20320
20321	fn address(&mut self) -> *mut std::ffi::c_void {
20322		std::ptr::from_mut(self).cast()
20323	}
20324}
20325
20326impl<'a, 'root> crate::Extends<vk::CommandBufferInheritanceInfo<'root>>
20327	for vk::CommandBufferInheritanceViewportScissorInfoNV<'a>
20328{
20329}
20330
20331impl<'a> crate::construction::sealed::ChainNode
20332	for vk::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT<'a>
20333{
20334	const S_TYPE: vk::StructureType =
20335		vk::StructureType::PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT;
20336
20337	fn s_type(&self) -> vk::StructureType {
20338		self.s_type
20339	}
20340
20341	fn p_next(&self) -> *const std::ffi::c_void {
20342		self.p_next.cast_const()
20343	}
20344
20345	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20346		self.p_next = p_next;
20347	}
20348
20349	fn address(&mut self) -> *mut std::ffi::c_void {
20350		std::ptr::from_mut(self).cast()
20351	}
20352}
20353
20354impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
20355	for vk::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT<'a>
20356{
20357}
20358
20359impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
20360	for vk::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT<'a>
20361{
20362}
20363
20364impl<'a> crate::construction::sealed::ChainNode
20365	for vk::PhysicalDeviceProvokingVertexFeaturesEXT<'a>
20366{
20367	const S_TYPE: vk::StructureType =
20368		vk::StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT;
20369
20370	fn s_type(&self) -> vk::StructureType {
20371		self.s_type
20372	}
20373
20374	fn p_next(&self) -> *const std::ffi::c_void {
20375		self.p_next.cast_const()
20376	}
20377
20378	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20379		self.p_next = p_next;
20380	}
20381
20382	fn address(&mut self) -> *mut std::ffi::c_void {
20383		std::ptr::from_mut(self).cast()
20384	}
20385}
20386
20387impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
20388	for vk::PhysicalDeviceProvokingVertexFeaturesEXT<'a>
20389{
20390}
20391
20392impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
20393	for vk::PhysicalDeviceProvokingVertexFeaturesEXT<'a>
20394{
20395}
20396
20397impl<'a> crate::construction::sealed::ChainNode
20398	for vk::PhysicalDeviceProvokingVertexPropertiesEXT<'a>
20399{
20400	const S_TYPE: vk::StructureType =
20401		vk::StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT;
20402
20403	fn s_type(&self) -> vk::StructureType {
20404		self.s_type
20405	}
20406
20407	fn p_next(&self) -> *const std::ffi::c_void {
20408		self.p_next.cast_const()
20409	}
20410
20411	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20412		self.p_next = p_next;
20413	}
20414
20415	fn address(&mut self) -> *mut std::ffi::c_void {
20416		std::ptr::from_mut(self).cast()
20417	}
20418}
20419
20420impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
20421	for vk::PhysicalDeviceProvokingVertexPropertiesEXT<'a>
20422{
20423}
20424
20425impl<'a> crate::construction::sealed::ChainNode
20426	for vk::PipelineRasterizationProvokingVertexStateCreateInfoEXT<'a>
20427{
20428	const S_TYPE: vk::StructureType =
20429		vk::StructureType::PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT;
20430
20431	fn s_type(&self) -> vk::StructureType {
20432		self.s_type
20433	}
20434
20435	fn p_next(&self) -> *const std::ffi::c_void {
20436		self.p_next
20437	}
20438
20439	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20440		self.p_next = p_next.cast_const();
20441	}
20442
20443	fn address(&mut self) -> *mut std::ffi::c_void {
20444		std::ptr::from_mut(self).cast()
20445	}
20446}
20447
20448impl<'a, 'root> crate::Extends<vk::PipelineRasterizationStateCreateInfo<'root>>
20449	for vk::PipelineRasterizationProvokingVertexStateCreateInfoEXT<'a>
20450{
20451}
20452
20453impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeIntraRefreshCapabilitiesKHR<'a> {
20454	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR;
20455
20456	fn s_type(&self) -> vk::StructureType {
20457		self.s_type
20458	}
20459
20460	fn p_next(&self) -> *const std::ffi::c_void {
20461		self.p_next.cast_const()
20462	}
20463
20464	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20465		self.p_next = p_next;
20466	}
20467
20468	fn address(&mut self) -> *mut std::ffi::c_void {
20469		std::ptr::from_mut(self).cast()
20470	}
20471}
20472
20473impl<'a, 'root> crate::Extends<vk::VideoCapabilitiesKHR<'root>>
20474	for vk::VideoEncodeIntraRefreshCapabilitiesKHR<'a>
20475{
20476}
20477
20478impl<'a> crate::construction::sealed::ChainNode
20479	for vk::VideoEncodeSessionIntraRefreshCreateInfoKHR<'a>
20480{
20481	const S_TYPE: vk::StructureType =
20482		vk::StructureType::VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR;
20483
20484	fn s_type(&self) -> vk::StructureType {
20485		self.s_type
20486	}
20487
20488	fn p_next(&self) -> *const std::ffi::c_void {
20489		self.p_next
20490	}
20491
20492	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20493		self.p_next = p_next.cast_const();
20494	}
20495
20496	fn address(&mut self) -> *mut std::ffi::c_void {
20497		std::ptr::from_mut(self).cast()
20498	}
20499}
20500
20501impl<'a, 'root> crate::Extends<vk::VideoSessionCreateInfoKHR<'root>>
20502	for vk::VideoEncodeSessionIntraRefreshCreateInfoKHR<'a>
20503{
20504}
20505
20506impl<'a> crate::construction::sealed::ChainNode for vk::VideoEncodeIntraRefreshInfoKHR<'a> {
20507	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR;
20508
20509	fn s_type(&self) -> vk::StructureType {
20510		self.s_type
20511	}
20512
20513	fn p_next(&self) -> *const std::ffi::c_void {
20514		self.p_next
20515	}
20516
20517	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20518		self.p_next = p_next.cast_const();
20519	}
20520
20521	fn address(&mut self) -> *mut std::ffi::c_void {
20522		std::ptr::from_mut(self).cast()
20523	}
20524}
20525
20526impl<'a, 'root> crate::Extends<vk::VideoEncodeInfoKHR<'root>>
20527	for vk::VideoEncodeIntraRefreshInfoKHR<'a>
20528{
20529}
20530
20531impl<'a> crate::construction::sealed::ChainNode for vk::VideoReferenceIntraRefreshInfoKHR<'a> {
20532	const S_TYPE: vk::StructureType = vk::StructureType::VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR;
20533
20534	fn s_type(&self) -> vk::StructureType {
20535		self.s_type
20536	}
20537
20538	fn p_next(&self) -> *const std::ffi::c_void {
20539		self.p_next
20540	}
20541
20542	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20543		self.p_next = p_next.cast_const();
20544	}
20545
20546	fn address(&mut self) -> *mut std::ffi::c_void {
20547		std::ptr::from_mut(self).cast()
20548	}
20549}
20550
20551impl<'a, 'root> crate::Extends<vk::VideoReferenceSlotInfoKHR<'root>>
20552	for vk::VideoReferenceIntraRefreshInfoKHR<'a>
20553{
20554}
20555
20556impl<'a> crate::construction::sealed::ChainNode
20557	for vk::PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR<'a>
20558{
20559	const S_TYPE: vk::StructureType =
20560		vk::StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR;
20561
20562	fn s_type(&self) -> vk::StructureType {
20563		self.s_type
20564	}
20565
20566	fn p_next(&self) -> *const std::ffi::c_void {
20567		self.p_next.cast_const()
20568	}
20569
20570	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20571		self.p_next = p_next;
20572	}
20573
20574	fn address(&mut self) -> *mut std::ffi::c_void {
20575		std::ptr::from_mut(self).cast()
20576	}
20577}
20578
20579impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
20580	for vk::PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR<'a>
20581{
20582}
20583
20584impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
20585	for vk::PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR<'a>
20586{
20587}
20588
20589impl<'a> crate::construction::sealed::ChainNode for vk::CuModuleCreateInfoNVX<'a> {
20590	const S_TYPE: vk::StructureType = vk::StructureType::CU_MODULE_CREATE_INFO_NVX;
20591
20592	fn s_type(&self) -> vk::StructureType {
20593		self.s_type
20594	}
20595
20596	fn p_next(&self) -> *const std::ffi::c_void {
20597		self.p_next
20598	}
20599
20600	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20601		self.p_next = p_next.cast_const();
20602	}
20603
20604	fn address(&mut self) -> *mut std::ffi::c_void {
20605		std::ptr::from_mut(self).cast()
20606	}
20607}
20608
20609impl<'a> crate::construction::sealed::ChainNode for vk::CuModuleTexturingModeCreateInfoNVX<'a> {
20610	const S_TYPE: vk::StructureType = vk::StructureType::CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX;
20611
20612	fn s_type(&self) -> vk::StructureType {
20613		self.s_type
20614	}
20615
20616	fn p_next(&self) -> *const std::ffi::c_void {
20617		self.p_next
20618	}
20619
20620	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20621		self.p_next = p_next.cast_const();
20622	}
20623
20624	fn address(&mut self) -> *mut std::ffi::c_void {
20625		std::ptr::from_mut(self).cast()
20626	}
20627}
20628
20629impl<'a, 'root> crate::Extends<vk::CuModuleCreateInfoNVX<'root>>
20630	for vk::CuModuleTexturingModeCreateInfoNVX<'a>
20631{
20632}
20633
20634impl<'a> crate::construction::sealed::ChainNode for vk::CuFunctionCreateInfoNVX<'a> {
20635	const S_TYPE: vk::StructureType = vk::StructureType::CU_FUNCTION_CREATE_INFO_NVX;
20636
20637	fn s_type(&self) -> vk::StructureType {
20638		self.s_type
20639	}
20640
20641	fn p_next(&self) -> *const std::ffi::c_void {
20642		self.p_next
20643	}
20644
20645	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20646		self.p_next = p_next.cast_const();
20647	}
20648
20649	fn address(&mut self) -> *mut std::ffi::c_void {
20650		std::ptr::from_mut(self).cast()
20651	}
20652}
20653
20654impl<'a> crate::construction::sealed::ChainNode for vk::CuLaunchInfoNVX<'a> {
20655	const S_TYPE: vk::StructureType = vk::StructureType::CU_LAUNCH_INFO_NVX;
20656
20657	fn s_type(&self) -> vk::StructureType {
20658		self.s_type
20659	}
20660
20661	fn p_next(&self) -> *const std::ffi::c_void {
20662		self.p_next
20663	}
20664
20665	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20666		self.p_next = p_next.cast_const();
20667	}
20668
20669	fn address(&mut self) -> *mut std::ffi::c_void {
20670		std::ptr::from_mut(self).cast()
20671	}
20672}
20673
20674impl<'a> crate::construction::sealed::ChainNode
20675	for vk::PhysicalDeviceDescriptorBufferFeaturesEXT<'a>
20676{
20677	const S_TYPE: vk::StructureType =
20678		vk::StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT;
20679
20680	fn s_type(&self) -> vk::StructureType {
20681		self.s_type
20682	}
20683
20684	fn p_next(&self) -> *const std::ffi::c_void {
20685		self.p_next.cast_const()
20686	}
20687
20688	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20689		self.p_next = p_next;
20690	}
20691
20692	fn address(&mut self) -> *mut std::ffi::c_void {
20693		std::ptr::from_mut(self).cast()
20694	}
20695}
20696
20697impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
20698	for vk::PhysicalDeviceDescriptorBufferFeaturesEXT<'a>
20699{
20700}
20701
20702impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
20703	for vk::PhysicalDeviceDescriptorBufferFeaturesEXT<'a>
20704{
20705}
20706
20707impl<'a> crate::construction::sealed::ChainNode
20708	for vk::PhysicalDeviceDescriptorBufferPropertiesEXT<'a>
20709{
20710	const S_TYPE: vk::StructureType =
20711		vk::StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT;
20712
20713	fn s_type(&self) -> vk::StructureType {
20714		self.s_type
20715	}
20716
20717	fn p_next(&self) -> *const std::ffi::c_void {
20718		self.p_next.cast_const()
20719	}
20720
20721	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20722		self.p_next = p_next;
20723	}
20724
20725	fn address(&mut self) -> *mut std::ffi::c_void {
20726		std::ptr::from_mut(self).cast()
20727	}
20728}
20729
20730impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
20731	for vk::PhysicalDeviceDescriptorBufferPropertiesEXT<'a>
20732{
20733}
20734
20735impl<'a> crate::construction::sealed::ChainNode
20736	for vk::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT<'a>
20737{
20738	const S_TYPE: vk::StructureType =
20739		vk::StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT;
20740
20741	fn s_type(&self) -> vk::StructureType {
20742		self.s_type
20743	}
20744
20745	fn p_next(&self) -> *const std::ffi::c_void {
20746		self.p_next.cast_const()
20747	}
20748
20749	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20750		self.p_next = p_next;
20751	}
20752
20753	fn address(&mut self) -> *mut std::ffi::c_void {
20754		std::ptr::from_mut(self).cast()
20755	}
20756}
20757
20758impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
20759	for vk::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT<'a>
20760{
20761}
20762
20763impl<'a> crate::construction::sealed::ChainNode for vk::DescriptorAddressInfoEXT<'a> {
20764	const S_TYPE: vk::StructureType = vk::StructureType::DESCRIPTOR_ADDRESS_INFO_EXT;
20765
20766	fn s_type(&self) -> vk::StructureType {
20767		self.s_type
20768	}
20769
20770	fn p_next(&self) -> *const std::ffi::c_void {
20771		self.p_next.cast_const()
20772	}
20773
20774	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20775		self.p_next = p_next;
20776	}
20777
20778	fn address(&mut self) -> *mut std::ffi::c_void {
20779		std::ptr::from_mut(self).cast()
20780	}
20781}
20782
20783impl<'a> crate::construction::sealed::ChainNode for vk::DescriptorBufferBindingInfoEXT<'a> {
20784	const S_TYPE: vk::StructureType = vk::StructureType::DESCRIPTOR_BUFFER_BINDING_INFO_EXT;
20785
20786	fn s_type(&self) -> vk::StructureType {
20787		self.s_type
20788	}
20789
20790	fn p_next(&self) -> *const std::ffi::c_void {
20791		self.p_next
20792	}
20793
20794	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20795		self.p_next = p_next.cast_const();
20796	}
20797
20798	fn address(&mut self) -> *mut std::ffi::c_void {
20799		std::ptr::from_mut(self).cast()
20800	}
20801}
20802
20803impl<'a> crate::construction::sealed::ChainNode
20804	for vk::DescriptorBufferBindingPushDescriptorBufferHandleEXT<'a>
20805{
20806	const S_TYPE: vk::StructureType =
20807		vk::StructureType::DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT;
20808
20809	fn s_type(&self) -> vk::StructureType {
20810		self.s_type
20811	}
20812
20813	fn p_next(&self) -> *const std::ffi::c_void {
20814		self.p_next
20815	}
20816
20817	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20818		self.p_next = p_next.cast_const();
20819	}
20820
20821	fn address(&mut self) -> *mut std::ffi::c_void {
20822		std::ptr::from_mut(self).cast()
20823	}
20824}
20825
20826impl<'a, 'root> crate::Extends<vk::DescriptorBufferBindingInfoEXT<'root>>
20827	for vk::DescriptorBufferBindingPushDescriptorBufferHandleEXT<'a>
20828{
20829}
20830
20831impl<'a> crate::construction::sealed::ChainNode for vk::DescriptorGetInfoEXT<'a> {
20832	const S_TYPE: vk::StructureType = vk::StructureType::DESCRIPTOR_GET_INFO_EXT;
20833
20834	fn s_type(&self) -> vk::StructureType {
20835		self.s_type
20836	}
20837
20838	fn p_next(&self) -> *const std::ffi::c_void {
20839		self.p_next
20840	}
20841
20842	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20843		self.p_next = p_next.cast_const();
20844	}
20845
20846	fn address(&mut self) -> *mut std::ffi::c_void {
20847		std::ptr::from_mut(self).cast()
20848	}
20849}
20850
20851impl<'a> crate::construction::sealed::ChainNode for vk::BufferCaptureDescriptorDataInfoEXT<'a> {
20852	const S_TYPE: vk::StructureType = vk::StructureType::BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT;
20853
20854	fn s_type(&self) -> vk::StructureType {
20855		self.s_type
20856	}
20857
20858	fn p_next(&self) -> *const std::ffi::c_void {
20859		self.p_next
20860	}
20861
20862	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20863		self.p_next = p_next.cast_const();
20864	}
20865
20866	fn address(&mut self) -> *mut std::ffi::c_void {
20867		std::ptr::from_mut(self).cast()
20868	}
20869}
20870
20871impl<'a> crate::construction::sealed::ChainNode for vk::ImageCaptureDescriptorDataInfoEXT<'a> {
20872	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT;
20873
20874	fn s_type(&self) -> vk::StructureType {
20875		self.s_type
20876	}
20877
20878	fn p_next(&self) -> *const std::ffi::c_void {
20879		self.p_next
20880	}
20881
20882	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20883		self.p_next = p_next.cast_const();
20884	}
20885
20886	fn address(&mut self) -> *mut std::ffi::c_void {
20887		std::ptr::from_mut(self).cast()
20888	}
20889}
20890
20891impl<'a> crate::construction::sealed::ChainNode for vk::ImageViewCaptureDescriptorDataInfoEXT<'a> {
20892	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT;
20893
20894	fn s_type(&self) -> vk::StructureType {
20895		self.s_type
20896	}
20897
20898	fn p_next(&self) -> *const std::ffi::c_void {
20899		self.p_next
20900	}
20901
20902	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20903		self.p_next = p_next.cast_const();
20904	}
20905
20906	fn address(&mut self) -> *mut std::ffi::c_void {
20907		std::ptr::from_mut(self).cast()
20908	}
20909}
20910
20911impl<'a> crate::construction::sealed::ChainNode for vk::SamplerCaptureDescriptorDataInfoEXT<'a> {
20912	const S_TYPE: vk::StructureType = vk::StructureType::SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT;
20913
20914	fn s_type(&self) -> vk::StructureType {
20915		self.s_type
20916	}
20917
20918	fn p_next(&self) -> *const std::ffi::c_void {
20919		self.p_next
20920	}
20921
20922	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20923		self.p_next = p_next.cast_const();
20924	}
20925
20926	fn address(&mut self) -> *mut std::ffi::c_void {
20927		std::ptr::from_mut(self).cast()
20928	}
20929}
20930
20931impl<'a> crate::construction::sealed::ChainNode
20932	for vk::AccelerationStructureCaptureDescriptorDataInfoEXT<'a>
20933{
20934	const S_TYPE: vk::StructureType =
20935		vk::StructureType::ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT;
20936
20937	fn s_type(&self) -> vk::StructureType {
20938		self.s_type
20939	}
20940
20941	fn p_next(&self) -> *const std::ffi::c_void {
20942		self.p_next
20943	}
20944
20945	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20946		self.p_next = p_next.cast_const();
20947	}
20948
20949	fn address(&mut self) -> *mut std::ffi::c_void {
20950		std::ptr::from_mut(self).cast()
20951	}
20952}
20953
20954impl<'a> crate::construction::sealed::ChainNode
20955	for vk::OpaqueCaptureDescriptorDataCreateInfoEXT<'a>
20956{
20957	const S_TYPE: vk::StructureType =
20958		vk::StructureType::OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT;
20959
20960	fn s_type(&self) -> vk::StructureType {
20961		self.s_type
20962	}
20963
20964	fn p_next(&self) -> *const std::ffi::c_void {
20965		self.p_next
20966	}
20967
20968	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
20969		self.p_next = p_next.cast_const();
20970	}
20971
20972	fn address(&mut self) -> *mut std::ffi::c_void {
20973		std::ptr::from_mut(self).cast()
20974	}
20975}
20976
20977impl<'a, 'root> crate::Extends<vk::BufferCreateInfo<'root>>
20978	for vk::OpaqueCaptureDescriptorDataCreateInfoEXT<'a>
20979{
20980}
20981
20982impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>>
20983	for vk::OpaqueCaptureDescriptorDataCreateInfoEXT<'a>
20984{
20985}
20986
20987impl<'a, 'root> crate::Extends<vk::ImageViewCreateInfo<'root>>
20988	for vk::OpaqueCaptureDescriptorDataCreateInfoEXT<'a>
20989{
20990}
20991
20992impl<'a, 'root> crate::Extends<vk::SamplerCreateInfo<'root>>
20993	for vk::OpaqueCaptureDescriptorDataCreateInfoEXT<'a>
20994{
20995}
20996
20997impl<'a, 'root> crate::Extends<vk::AccelerationStructureCreateInfoKHR<'root>>
20998	for vk::OpaqueCaptureDescriptorDataCreateInfoEXT<'a>
20999{
21000}
21001
21002impl<'a, 'root> crate::Extends<vk::AccelerationStructureCreateInfoNV<'root>>
21003	for vk::OpaqueCaptureDescriptorDataCreateInfoEXT<'a>
21004{
21005}
21006
21007impl<'a, 'root> crate::Extends<vk::TensorCreateInfoARM<'root>>
21008	for vk::OpaqueCaptureDescriptorDataCreateInfoEXT<'a>
21009{
21010}
21011
21012impl<'a, 'root> crate::Extends<vk::TensorViewCreateInfoARM<'root>>
21013	for vk::OpaqueCaptureDescriptorDataCreateInfoEXT<'a>
21014{
21015}
21016
21017impl<'a, 'root> crate::Extends<vk::AccelerationStructureCreateInfo2KHR<'root>>
21018	for vk::OpaqueCaptureDescriptorDataCreateInfoEXT<'a>
21019{
21020}
21021
21022impl<'a> crate::construction::sealed::ChainNode
21023	for vk::PhysicalDeviceShaderIntegerDotProductFeatures<'a>
21024{
21025	const S_TYPE: vk::StructureType =
21026		vk::StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES;
21027
21028	fn s_type(&self) -> vk::StructureType {
21029		self.s_type
21030	}
21031
21032	fn p_next(&self) -> *const std::ffi::c_void {
21033		self.p_next.cast_const()
21034	}
21035
21036	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21037		self.p_next = p_next;
21038	}
21039
21040	fn address(&mut self) -> *mut std::ffi::c_void {
21041		std::ptr::from_mut(self).cast()
21042	}
21043}
21044
21045impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
21046	for vk::PhysicalDeviceShaderIntegerDotProductFeatures<'a>
21047{
21048}
21049
21050impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
21051	for vk::PhysicalDeviceShaderIntegerDotProductFeatures<'a>
21052{
21053}
21054
21055impl<'a> crate::construction::sealed::ChainNode
21056	for vk::PhysicalDeviceShaderIntegerDotProductProperties<'a>
21057{
21058	const S_TYPE: vk::StructureType =
21059		vk::StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES;
21060
21061	fn s_type(&self) -> vk::StructureType {
21062		self.s_type
21063	}
21064
21065	fn p_next(&self) -> *const std::ffi::c_void {
21066		self.p_next.cast_const()
21067	}
21068
21069	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21070		self.p_next = p_next;
21071	}
21072
21073	fn address(&mut self) -> *mut std::ffi::c_void {
21074		std::ptr::from_mut(self).cast()
21075	}
21076}
21077
21078impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
21079	for vk::PhysicalDeviceShaderIntegerDotProductProperties<'a>
21080{
21081}
21082
21083impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceDrmPropertiesEXT<'a> {
21084	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_DRM_PROPERTIES_EXT;
21085
21086	fn s_type(&self) -> vk::StructureType {
21087		self.s_type
21088	}
21089
21090	fn p_next(&self) -> *const std::ffi::c_void {
21091		self.p_next.cast_const()
21092	}
21093
21094	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21095		self.p_next = p_next;
21096	}
21097
21098	fn address(&mut self) -> *mut std::ffi::c_void {
21099		std::ptr::from_mut(self).cast()
21100	}
21101}
21102
21103impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
21104	for vk::PhysicalDeviceDrmPropertiesEXT<'a>
21105{
21106}
21107
21108impl<'a> crate::construction::sealed::ChainNode
21109	for vk::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR<'a>
21110{
21111	const S_TYPE: vk::StructureType =
21112		vk::StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR;
21113
21114	fn s_type(&self) -> vk::StructureType {
21115		self.s_type
21116	}
21117
21118	fn p_next(&self) -> *const std::ffi::c_void {
21119		self.p_next.cast_const()
21120	}
21121
21122	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21123		self.p_next = p_next;
21124	}
21125
21126	fn address(&mut self) -> *mut std::ffi::c_void {
21127		std::ptr::from_mut(self).cast()
21128	}
21129}
21130
21131impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
21132	for vk::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR<'a>
21133{
21134}
21135
21136impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
21137	for vk::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR<'a>
21138{
21139}
21140
21141impl<'a> crate::construction::sealed::ChainNode
21142	for vk::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR<'a>
21143{
21144	const S_TYPE: vk::StructureType =
21145		vk::StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR;
21146
21147	fn s_type(&self) -> vk::StructureType {
21148		self.s_type
21149	}
21150
21151	fn p_next(&self) -> *const std::ffi::c_void {
21152		self.p_next.cast_const()
21153	}
21154
21155	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21156		self.p_next = p_next;
21157	}
21158
21159	fn address(&mut self) -> *mut std::ffi::c_void {
21160		std::ptr::from_mut(self).cast()
21161	}
21162}
21163
21164impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
21165	for vk::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR<'a>
21166{
21167}
21168
21169impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceShaderFmaFeaturesKHR<'a> {
21170	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR;
21171
21172	fn s_type(&self) -> vk::StructureType {
21173		self.s_type
21174	}
21175
21176	fn p_next(&self) -> *const std::ffi::c_void {
21177		self.p_next.cast_const()
21178	}
21179
21180	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21181		self.p_next = p_next;
21182	}
21183
21184	fn address(&mut self) -> *mut std::ffi::c_void {
21185		std::ptr::from_mut(self).cast()
21186	}
21187}
21188
21189impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
21190	for vk::PhysicalDeviceShaderFmaFeaturesKHR<'a>
21191{
21192}
21193
21194impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
21195	for vk::PhysicalDeviceShaderFmaFeaturesKHR<'a>
21196{
21197}
21198
21199impl<'a> crate::construction::sealed::ChainNode
21200	for vk::PhysicalDeviceRayTracingMotionBlurFeaturesNV<'a>
21201{
21202	const S_TYPE: vk::StructureType =
21203		vk::StructureType::PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV;
21204
21205	fn s_type(&self) -> vk::StructureType {
21206		self.s_type
21207	}
21208
21209	fn p_next(&self) -> *const std::ffi::c_void {
21210		self.p_next.cast_const()
21211	}
21212
21213	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21214		self.p_next = p_next;
21215	}
21216
21217	fn address(&mut self) -> *mut std::ffi::c_void {
21218		std::ptr::from_mut(self).cast()
21219	}
21220}
21221
21222impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
21223	for vk::PhysicalDeviceRayTracingMotionBlurFeaturesNV<'a>
21224{
21225}
21226
21227impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
21228	for vk::PhysicalDeviceRayTracingMotionBlurFeaturesNV<'a>
21229{
21230}
21231
21232impl<'a> crate::construction::sealed::ChainNode
21233	for vk::PhysicalDeviceRayTracingValidationFeaturesNV<'a>
21234{
21235	const S_TYPE: vk::StructureType =
21236		vk::StructureType::PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV;
21237
21238	fn s_type(&self) -> vk::StructureType {
21239		self.s_type
21240	}
21241
21242	fn p_next(&self) -> *const std::ffi::c_void {
21243		self.p_next.cast_const()
21244	}
21245
21246	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21247		self.p_next = p_next;
21248	}
21249
21250	fn address(&mut self) -> *mut std::ffi::c_void {
21251		std::ptr::from_mut(self).cast()
21252	}
21253}
21254
21255impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
21256	for vk::PhysicalDeviceRayTracingValidationFeaturesNV<'a>
21257{
21258}
21259
21260impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
21261	for vk::PhysicalDeviceRayTracingValidationFeaturesNV<'a>
21262{
21263}
21264
21265impl<'a> crate::construction::sealed::ChainNode
21266	for vk::PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV<'a>
21267{
21268	const S_TYPE: vk::StructureType =
21269		vk::StructureType::PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV;
21270
21271	fn s_type(&self) -> vk::StructureType {
21272		self.s_type
21273	}
21274
21275	fn p_next(&self) -> *const std::ffi::c_void {
21276		self.p_next.cast_const()
21277	}
21278
21279	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21280		self.p_next = p_next;
21281	}
21282
21283	fn address(&mut self) -> *mut std::ffi::c_void {
21284		std::ptr::from_mut(self).cast()
21285	}
21286}
21287
21288impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
21289	for vk::PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV<'a>
21290{
21291}
21292
21293impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
21294	for vk::PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV<'a>
21295{
21296}
21297
21298impl<'a> crate::construction::sealed::ChainNode
21299	for vk::AccelerationStructureGeometryMotionTrianglesDataNV<'a>
21300{
21301	const S_TYPE: vk::StructureType =
21302		vk::StructureType::ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV;
21303
21304	fn s_type(&self) -> vk::StructureType {
21305		self.s_type
21306	}
21307
21308	fn p_next(&self) -> *const std::ffi::c_void {
21309		self.p_next
21310	}
21311
21312	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21313		self.p_next = p_next.cast_const();
21314	}
21315
21316	fn address(&mut self) -> *mut std::ffi::c_void {
21317		std::ptr::from_mut(self).cast()
21318	}
21319}
21320
21321impl<'a, 'root> crate::Extends<vk::AccelerationStructureGeometryTrianglesDataKHR<'root>>
21322	for vk::AccelerationStructureGeometryMotionTrianglesDataNV<'a>
21323{
21324}
21325
21326impl<'a> crate::construction::sealed::ChainNode for vk::AccelerationStructureMotionInfoNV<'a> {
21327	const S_TYPE: vk::StructureType = vk::StructureType::ACCELERATION_STRUCTURE_MOTION_INFO_NV;
21328
21329	fn s_type(&self) -> vk::StructureType {
21330		self.s_type
21331	}
21332
21333	fn p_next(&self) -> *const std::ffi::c_void {
21334		self.p_next
21335	}
21336
21337	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21338		self.p_next = p_next.cast_const();
21339	}
21340
21341	fn address(&mut self) -> *mut std::ffi::c_void {
21342		std::ptr::from_mut(self).cast()
21343	}
21344}
21345
21346impl<'a, 'root> crate::Extends<vk::AccelerationStructureCreateInfoKHR<'root>>
21347	for vk::AccelerationStructureMotionInfoNV<'a>
21348{
21349}
21350
21351impl<'a> crate::construction::sealed::ChainNode for vk::MemoryGetRemoteAddressInfoNV<'a> {
21352	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_GET_REMOTE_ADDRESS_INFO_NV;
21353
21354	fn s_type(&self) -> vk::StructureType {
21355		self.s_type
21356	}
21357
21358	fn p_next(&self) -> *const std::ffi::c_void {
21359		self.p_next
21360	}
21361
21362	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21363		self.p_next = p_next.cast_const();
21364	}
21365
21366	fn address(&mut self) -> *mut std::ffi::c_void {
21367		std::ptr::from_mut(self).cast()
21368	}
21369}
21370
21371#[cfg(feature = "platform-fuchsia")]
21372impl<'a> crate::construction::sealed::ChainNode for vk::ImportMemoryBufferCollectionFUCHSIA<'a> {
21373	const S_TYPE: vk::StructureType = vk::StructureType::IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA;
21374
21375	fn s_type(&self) -> vk::StructureType {
21376		self.s_type
21377	}
21378
21379	fn p_next(&self) -> *const std::ffi::c_void {
21380		self.p_next
21381	}
21382
21383	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21384		self.p_next = p_next.cast_const();
21385	}
21386
21387	fn address(&mut self) -> *mut std::ffi::c_void {
21388		std::ptr::from_mut(self).cast()
21389	}
21390}
21391
21392#[cfg(feature = "platform-fuchsia")]
21393impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>>
21394	for vk::ImportMemoryBufferCollectionFUCHSIA<'a>
21395{
21396}
21397
21398#[cfg(feature = "platform-fuchsia")]
21399impl<'a> crate::construction::sealed::ChainNode for vk::BufferCollectionImageCreateInfoFUCHSIA<'a> {
21400	const S_TYPE: vk::StructureType = vk::StructureType::BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA;
21401
21402	fn s_type(&self) -> vk::StructureType {
21403		self.s_type
21404	}
21405
21406	fn p_next(&self) -> *const std::ffi::c_void {
21407		self.p_next
21408	}
21409
21410	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21411		self.p_next = p_next.cast_const();
21412	}
21413
21414	fn address(&mut self) -> *mut std::ffi::c_void {
21415		std::ptr::from_mut(self).cast()
21416	}
21417}
21418
21419#[cfg(feature = "platform-fuchsia")]
21420impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>>
21421	for vk::BufferCollectionImageCreateInfoFUCHSIA<'a>
21422{
21423}
21424
21425#[cfg(feature = "platform-fuchsia")]
21426impl<'a> crate::construction::sealed::ChainNode
21427	for vk::BufferCollectionBufferCreateInfoFUCHSIA<'a>
21428{
21429	const S_TYPE: vk::StructureType = vk::StructureType::BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA;
21430
21431	fn s_type(&self) -> vk::StructureType {
21432		self.s_type
21433	}
21434
21435	fn p_next(&self) -> *const std::ffi::c_void {
21436		self.p_next
21437	}
21438
21439	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21440		self.p_next = p_next.cast_const();
21441	}
21442
21443	fn address(&mut self) -> *mut std::ffi::c_void {
21444		std::ptr::from_mut(self).cast()
21445	}
21446}
21447
21448#[cfg(feature = "platform-fuchsia")]
21449impl<'a, 'root> crate::Extends<vk::BufferCreateInfo<'root>>
21450	for vk::BufferCollectionBufferCreateInfoFUCHSIA<'a>
21451{
21452}
21453
21454#[cfg(feature = "platform-fuchsia")]
21455impl<'a> crate::construction::sealed::ChainNode for vk::BufferCollectionCreateInfoFUCHSIA<'a> {
21456	const S_TYPE: vk::StructureType = vk::StructureType::BUFFER_COLLECTION_CREATE_INFO_FUCHSIA;
21457
21458	fn s_type(&self) -> vk::StructureType {
21459		self.s_type
21460	}
21461
21462	fn p_next(&self) -> *const std::ffi::c_void {
21463		self.p_next
21464	}
21465
21466	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21467		self.p_next = p_next.cast_const();
21468	}
21469
21470	fn address(&mut self) -> *mut std::ffi::c_void {
21471		std::ptr::from_mut(self).cast()
21472	}
21473}
21474
21475#[cfg(feature = "platform-fuchsia")]
21476impl<'a> crate::construction::sealed::ChainNode for vk::BufferCollectionPropertiesFUCHSIA<'a> {
21477	const S_TYPE: vk::StructureType = vk::StructureType::BUFFER_COLLECTION_PROPERTIES_FUCHSIA;
21478
21479	fn s_type(&self) -> vk::StructureType {
21480		self.s_type
21481	}
21482
21483	fn p_next(&self) -> *const std::ffi::c_void {
21484		self.p_next.cast_const()
21485	}
21486
21487	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21488		self.p_next = p_next;
21489	}
21490
21491	fn address(&mut self) -> *mut std::ffi::c_void {
21492		std::ptr::from_mut(self).cast()
21493	}
21494}
21495
21496#[cfg(feature = "platform-fuchsia")]
21497impl<'a> crate::construction::sealed::ChainNode for vk::BufferConstraintsInfoFUCHSIA<'a> {
21498	const S_TYPE: vk::StructureType = vk::StructureType::BUFFER_CONSTRAINTS_INFO_FUCHSIA;
21499
21500	fn s_type(&self) -> vk::StructureType {
21501		self.s_type
21502	}
21503
21504	fn p_next(&self) -> *const std::ffi::c_void {
21505		self.p_next
21506	}
21507
21508	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21509		self.p_next = p_next.cast_const();
21510	}
21511
21512	fn address(&mut self) -> *mut std::ffi::c_void {
21513		std::ptr::from_mut(self).cast()
21514	}
21515}
21516
21517#[cfg(feature = "platform-fuchsia")]
21518impl<'a> crate::construction::sealed::ChainNode for vk::SysmemColorSpaceFUCHSIA<'a> {
21519	const S_TYPE: vk::StructureType = vk::StructureType::SYSMEM_COLOR_SPACE_FUCHSIA;
21520
21521	fn s_type(&self) -> vk::StructureType {
21522		self.s_type
21523	}
21524
21525	fn p_next(&self) -> *const std::ffi::c_void {
21526		self.p_next
21527	}
21528
21529	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21530		self.p_next = p_next.cast_const();
21531	}
21532
21533	fn address(&mut self) -> *mut std::ffi::c_void {
21534		std::ptr::from_mut(self).cast()
21535	}
21536}
21537
21538#[cfg(feature = "platform-fuchsia")]
21539impl<'a> crate::construction::sealed::ChainNode for vk::ImageFormatConstraintsInfoFUCHSIA<'a> {
21540	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA;
21541
21542	fn s_type(&self) -> vk::StructureType {
21543		self.s_type
21544	}
21545
21546	fn p_next(&self) -> *const std::ffi::c_void {
21547		self.p_next
21548	}
21549
21550	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21551		self.p_next = p_next.cast_const();
21552	}
21553
21554	fn address(&mut self) -> *mut std::ffi::c_void {
21555		std::ptr::from_mut(self).cast()
21556	}
21557}
21558
21559#[cfg(feature = "platform-fuchsia")]
21560impl<'a> crate::construction::sealed::ChainNode for vk::ImageConstraintsInfoFUCHSIA<'a> {
21561	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_CONSTRAINTS_INFO_FUCHSIA;
21562
21563	fn s_type(&self) -> vk::StructureType {
21564		self.s_type
21565	}
21566
21567	fn p_next(&self) -> *const std::ffi::c_void {
21568		self.p_next
21569	}
21570
21571	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21572		self.p_next = p_next.cast_const();
21573	}
21574
21575	fn address(&mut self) -> *mut std::ffi::c_void {
21576		std::ptr::from_mut(self).cast()
21577	}
21578}
21579
21580#[cfg(feature = "platform-fuchsia")]
21581impl<'a> crate::construction::sealed::ChainNode for vk::BufferCollectionConstraintsInfoFUCHSIA<'a> {
21582	const S_TYPE: vk::StructureType = vk::StructureType::BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA;
21583
21584	fn s_type(&self) -> vk::StructureType {
21585		self.s_type
21586	}
21587
21588	fn p_next(&self) -> *const std::ffi::c_void {
21589		self.p_next
21590	}
21591
21592	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21593		self.p_next = p_next.cast_const();
21594	}
21595
21596	fn address(&mut self) -> *mut std::ffi::c_void {
21597		std::ptr::from_mut(self).cast()
21598	}
21599}
21600
21601#[cfg(feature = "provisional")]
21602impl<'a> crate::construction::sealed::ChainNode for vk::CudaModuleCreateInfoNV<'a> {
21603	const S_TYPE: vk::StructureType = vk::StructureType::CUDA_MODULE_CREATE_INFO_NV;
21604
21605	fn s_type(&self) -> vk::StructureType {
21606		self.s_type
21607	}
21608
21609	fn p_next(&self) -> *const std::ffi::c_void {
21610		self.p_next
21611	}
21612
21613	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21614		self.p_next = p_next.cast_const();
21615	}
21616
21617	fn address(&mut self) -> *mut std::ffi::c_void {
21618		std::ptr::from_mut(self).cast()
21619	}
21620}
21621
21622#[cfg(feature = "provisional")]
21623impl<'a> crate::construction::sealed::ChainNode for vk::CudaFunctionCreateInfoNV<'a> {
21624	const S_TYPE: vk::StructureType = vk::StructureType::CUDA_FUNCTION_CREATE_INFO_NV;
21625
21626	fn s_type(&self) -> vk::StructureType {
21627		self.s_type
21628	}
21629
21630	fn p_next(&self) -> *const std::ffi::c_void {
21631		self.p_next
21632	}
21633
21634	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21635		self.p_next = p_next.cast_const();
21636	}
21637
21638	fn address(&mut self) -> *mut std::ffi::c_void {
21639		std::ptr::from_mut(self).cast()
21640	}
21641}
21642
21643#[cfg(feature = "provisional")]
21644impl<'a> crate::construction::sealed::ChainNode for vk::CudaLaunchInfoNV<'a> {
21645	const S_TYPE: vk::StructureType = vk::StructureType::CUDA_LAUNCH_INFO_NV;
21646
21647	fn s_type(&self) -> vk::StructureType {
21648		self.s_type
21649	}
21650
21651	fn p_next(&self) -> *const std::ffi::c_void {
21652		self.p_next
21653	}
21654
21655	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21656		self.p_next = p_next.cast_const();
21657	}
21658
21659	fn address(&mut self) -> *mut std::ffi::c_void {
21660		std::ptr::from_mut(self).cast()
21661	}
21662}
21663
21664impl<'a> crate::construction::sealed::ChainNode
21665	for vk::PhysicalDeviceRGBA10X6FormatsFeaturesEXT<'a>
21666{
21667	const S_TYPE: vk::StructureType =
21668		vk::StructureType::PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT;
21669
21670	fn s_type(&self) -> vk::StructureType {
21671		self.s_type
21672	}
21673
21674	fn p_next(&self) -> *const std::ffi::c_void {
21675		self.p_next.cast_const()
21676	}
21677
21678	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21679		self.p_next = p_next;
21680	}
21681
21682	fn address(&mut self) -> *mut std::ffi::c_void {
21683		std::ptr::from_mut(self).cast()
21684	}
21685}
21686
21687impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
21688	for vk::PhysicalDeviceRGBA10X6FormatsFeaturesEXT<'a>
21689{
21690}
21691
21692impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
21693	for vk::PhysicalDeviceRGBA10X6FormatsFeaturesEXT<'a>
21694{
21695}
21696
21697impl<'a> crate::construction::sealed::ChainNode for vk::FormatProperties3<'a> {
21698	const S_TYPE: vk::StructureType = vk::StructureType::FORMAT_PROPERTIES_3;
21699
21700	fn s_type(&self) -> vk::StructureType {
21701		self.s_type
21702	}
21703
21704	fn p_next(&self) -> *const std::ffi::c_void {
21705		self.p_next.cast_const()
21706	}
21707
21708	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21709		self.p_next = p_next;
21710	}
21711
21712	fn address(&mut self) -> *mut std::ffi::c_void {
21713		std::ptr::from_mut(self).cast()
21714	}
21715}
21716
21717impl<'a, 'root> crate::Extends<vk::FormatProperties2<'root>> for vk::FormatProperties3<'a> {}
21718
21719impl<'a> crate::construction::sealed::ChainNode for vk::FormatProperties4KHR<'a> {
21720	const S_TYPE: vk::StructureType = vk::StructureType::FORMAT_PROPERTIES_4_KHR;
21721
21722	fn s_type(&self) -> vk::StructureType {
21723		self.s_type
21724	}
21725
21726	fn p_next(&self) -> *const std::ffi::c_void {
21727		self.p_next.cast_const()
21728	}
21729
21730	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21731		self.p_next = p_next;
21732	}
21733
21734	fn address(&mut self) -> *mut std::ffi::c_void {
21735		std::ptr::from_mut(self).cast()
21736	}
21737}
21738
21739impl<'a, 'root> crate::Extends<vk::FormatProperties2<'root>> for vk::FormatProperties4KHR<'a> {}
21740
21741impl<'a> crate::construction::sealed::ChainNode for vk::DrmFormatModifierPropertiesList2EXT<'a> {
21742	const S_TYPE: vk::StructureType = vk::StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT;
21743
21744	fn s_type(&self) -> vk::StructureType {
21745		self.s_type
21746	}
21747
21748	fn p_next(&self) -> *const std::ffi::c_void {
21749		self.p_next.cast_const()
21750	}
21751
21752	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21753		self.p_next = p_next;
21754	}
21755
21756	fn address(&mut self) -> *mut std::ffi::c_void {
21757		std::ptr::from_mut(self).cast()
21758	}
21759}
21760
21761impl<'a, 'root> crate::Extends<vk::FormatProperties2<'root>>
21762	for vk::DrmFormatModifierPropertiesList2EXT<'a>
21763{
21764}
21765
21766#[cfg(feature = "platform-android")]
21767impl<'a> crate::construction::sealed::ChainNode
21768	for vk::AndroidHardwareBufferFormatProperties2ANDROID<'a>
21769{
21770	const S_TYPE: vk::StructureType =
21771		vk::StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID;
21772
21773	fn s_type(&self) -> vk::StructureType {
21774		self.s_type
21775	}
21776
21777	fn p_next(&self) -> *const std::ffi::c_void {
21778		self.p_next.cast_const()
21779	}
21780
21781	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21782		self.p_next = p_next;
21783	}
21784
21785	fn address(&mut self) -> *mut std::ffi::c_void {
21786		std::ptr::from_mut(self).cast()
21787	}
21788}
21789
21790#[cfg(feature = "platform-android")]
21791impl<'a, 'root> crate::Extends<vk::AndroidHardwareBufferPropertiesANDROID<'root>>
21792	for vk::AndroidHardwareBufferFormatProperties2ANDROID<'a>
21793{
21794}
21795
21796impl<'a> crate::construction::sealed::ChainNode for vk::PipelineRenderingCreateInfo<'a> {
21797	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_RENDERING_CREATE_INFO;
21798
21799	fn s_type(&self) -> vk::StructureType {
21800		self.s_type
21801	}
21802
21803	fn p_next(&self) -> *const std::ffi::c_void {
21804		self.p_next
21805	}
21806
21807	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21808		self.p_next = p_next.cast_const();
21809	}
21810
21811	fn address(&mut self) -> *mut std::ffi::c_void {
21812		std::ptr::from_mut(self).cast()
21813	}
21814}
21815
21816impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
21817	for vk::PipelineRenderingCreateInfo<'a>
21818{
21819}
21820
21821impl<'a> crate::construction::sealed::ChainNode for vk::RenderingInfo<'a> {
21822	const S_TYPE: vk::StructureType = vk::StructureType::RENDERING_INFO;
21823
21824	fn s_type(&self) -> vk::StructureType {
21825		self.s_type
21826	}
21827
21828	fn p_next(&self) -> *const std::ffi::c_void {
21829		self.p_next
21830	}
21831
21832	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21833		self.p_next = p_next.cast_const();
21834	}
21835
21836	fn address(&mut self) -> *mut std::ffi::c_void {
21837		std::ptr::from_mut(self).cast()
21838	}
21839}
21840
21841impl<'a> crate::construction::sealed::ChainNode for vk::RenderingEndInfoKHR<'a> {
21842	const S_TYPE: vk::StructureType = vk::StructureType::RENDERING_END_INFO_KHR;
21843
21844	fn s_type(&self) -> vk::StructureType {
21845		self.s_type
21846	}
21847
21848	fn p_next(&self) -> *const std::ffi::c_void {
21849		self.p_next
21850	}
21851
21852	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21853		self.p_next = p_next.cast_const();
21854	}
21855
21856	fn address(&mut self) -> *mut std::ffi::c_void {
21857		std::ptr::from_mut(self).cast()
21858	}
21859}
21860
21861impl<'a> crate::construction::sealed::ChainNode for vk::RenderingAttachmentInfo<'a> {
21862	const S_TYPE: vk::StructureType = vk::StructureType::RENDERING_ATTACHMENT_INFO;
21863
21864	fn s_type(&self) -> vk::StructureType {
21865		self.s_type
21866	}
21867
21868	fn p_next(&self) -> *const std::ffi::c_void {
21869		self.p_next
21870	}
21871
21872	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21873		self.p_next = p_next.cast_const();
21874	}
21875
21876	fn address(&mut self) -> *mut std::ffi::c_void {
21877		std::ptr::from_mut(self).cast()
21878	}
21879}
21880
21881impl<'a> crate::construction::sealed::ChainNode
21882	for vk::RenderingFragmentShadingRateAttachmentInfoKHR<'a>
21883{
21884	const S_TYPE: vk::StructureType =
21885		vk::StructureType::RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR;
21886
21887	fn s_type(&self) -> vk::StructureType {
21888		self.s_type
21889	}
21890
21891	fn p_next(&self) -> *const std::ffi::c_void {
21892		self.p_next
21893	}
21894
21895	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21896		self.p_next = p_next.cast_const();
21897	}
21898
21899	fn address(&mut self) -> *mut std::ffi::c_void {
21900		std::ptr::from_mut(self).cast()
21901	}
21902}
21903
21904impl<'a, 'root> crate::Extends<vk::RenderingInfo<'root>>
21905	for vk::RenderingFragmentShadingRateAttachmentInfoKHR<'a>
21906{
21907}
21908
21909impl<'a> crate::construction::sealed::ChainNode
21910	for vk::RenderingFragmentDensityMapAttachmentInfoEXT<'a>
21911{
21912	const S_TYPE: vk::StructureType =
21913		vk::StructureType::RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT;
21914
21915	fn s_type(&self) -> vk::StructureType {
21916		self.s_type
21917	}
21918
21919	fn p_next(&self) -> *const std::ffi::c_void {
21920		self.p_next
21921	}
21922
21923	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21924		self.p_next = p_next.cast_const();
21925	}
21926
21927	fn address(&mut self) -> *mut std::ffi::c_void {
21928		std::ptr::from_mut(self).cast()
21929	}
21930}
21931
21932impl<'a, 'root> crate::Extends<vk::RenderingInfo<'root>>
21933	for vk::RenderingFragmentDensityMapAttachmentInfoEXT<'a>
21934{
21935}
21936
21937impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceDynamicRenderingFeatures<'a> {
21938	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES;
21939
21940	fn s_type(&self) -> vk::StructureType {
21941		self.s_type
21942	}
21943
21944	fn p_next(&self) -> *const std::ffi::c_void {
21945		self.p_next.cast_const()
21946	}
21947
21948	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21949		self.p_next = p_next;
21950	}
21951
21952	fn address(&mut self) -> *mut std::ffi::c_void {
21953		std::ptr::from_mut(self).cast()
21954	}
21955}
21956
21957impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
21958	for vk::PhysicalDeviceDynamicRenderingFeatures<'a>
21959{
21960}
21961
21962impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
21963	for vk::PhysicalDeviceDynamicRenderingFeatures<'a>
21964{
21965}
21966
21967impl<'a> crate::construction::sealed::ChainNode for vk::CommandBufferInheritanceRenderingInfo<'a> {
21968	const S_TYPE: vk::StructureType = vk::StructureType::COMMAND_BUFFER_INHERITANCE_RENDERING_INFO;
21969
21970	fn s_type(&self) -> vk::StructureType {
21971		self.s_type
21972	}
21973
21974	fn p_next(&self) -> *const std::ffi::c_void {
21975		self.p_next
21976	}
21977
21978	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
21979		self.p_next = p_next.cast_const();
21980	}
21981
21982	fn address(&mut self) -> *mut std::ffi::c_void {
21983		std::ptr::from_mut(self).cast()
21984	}
21985}
21986
21987impl<'a, 'root> crate::Extends<vk::CommandBufferInheritanceInfo<'root>>
21988	for vk::CommandBufferInheritanceRenderingInfo<'a>
21989{
21990}
21991
21992impl<'a> crate::construction::sealed::ChainNode for vk::AttachmentSampleCountInfoAMD<'a> {
21993	const S_TYPE: vk::StructureType = vk::StructureType::ATTACHMENT_SAMPLE_COUNT_INFO_AMD;
21994
21995	fn s_type(&self) -> vk::StructureType {
21996		self.s_type
21997	}
21998
21999	fn p_next(&self) -> *const std::ffi::c_void {
22000		self.p_next
22001	}
22002
22003	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22004		self.p_next = p_next.cast_const();
22005	}
22006
22007	fn address(&mut self) -> *mut std::ffi::c_void {
22008		std::ptr::from_mut(self).cast()
22009	}
22010}
22011
22012impl<'a, 'root> crate::Extends<vk::CommandBufferInheritanceInfo<'root>>
22013	for vk::AttachmentSampleCountInfoAMD<'a>
22014{
22015}
22016
22017impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
22018	for vk::AttachmentSampleCountInfoAMD<'a>
22019{
22020}
22021
22022impl<'a> crate::construction::sealed::ChainNode for vk::MultiviewPerViewAttributesInfoNVX<'a> {
22023	const S_TYPE: vk::StructureType = vk::StructureType::MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX;
22024
22025	fn s_type(&self) -> vk::StructureType {
22026		self.s_type
22027	}
22028
22029	fn p_next(&self) -> *const std::ffi::c_void {
22030		self.p_next
22031	}
22032
22033	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22034		self.p_next = p_next.cast_const();
22035	}
22036
22037	fn address(&mut self) -> *mut std::ffi::c_void {
22038		std::ptr::from_mut(self).cast()
22039	}
22040}
22041
22042impl<'a, 'root> crate::Extends<vk::CommandBufferInheritanceInfo<'root>>
22043	for vk::MultiviewPerViewAttributesInfoNVX<'a>
22044{
22045}
22046
22047impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
22048	for vk::MultiviewPerViewAttributesInfoNVX<'a>
22049{
22050}
22051
22052impl<'a, 'root> crate::Extends<vk::RenderingInfo<'root>>
22053	for vk::MultiviewPerViewAttributesInfoNVX<'a>
22054{
22055}
22056
22057impl<'a> crate::construction::sealed::ChainNode
22058	for vk::PhysicalDeviceImageViewMinLodFeaturesEXT<'a>
22059{
22060	const S_TYPE: vk::StructureType =
22061		vk::StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT;
22062
22063	fn s_type(&self) -> vk::StructureType {
22064		self.s_type
22065	}
22066
22067	fn p_next(&self) -> *const std::ffi::c_void {
22068		self.p_next.cast_const()
22069	}
22070
22071	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22072		self.p_next = p_next;
22073	}
22074
22075	fn address(&mut self) -> *mut std::ffi::c_void {
22076		std::ptr::from_mut(self).cast()
22077	}
22078}
22079
22080impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
22081	for vk::PhysicalDeviceImageViewMinLodFeaturesEXT<'a>
22082{
22083}
22084
22085impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
22086	for vk::PhysicalDeviceImageViewMinLodFeaturesEXT<'a>
22087{
22088}
22089
22090impl<'a> crate::construction::sealed::ChainNode for vk::ImageViewMinLodCreateInfoEXT<'a> {
22091	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT;
22092
22093	fn s_type(&self) -> vk::StructureType {
22094		self.s_type
22095	}
22096
22097	fn p_next(&self) -> *const std::ffi::c_void {
22098		self.p_next
22099	}
22100
22101	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22102		self.p_next = p_next.cast_const();
22103	}
22104
22105	fn address(&mut self) -> *mut std::ffi::c_void {
22106		std::ptr::from_mut(self).cast()
22107	}
22108}
22109
22110impl<'a, 'root> crate::Extends<vk::ImageViewCreateInfo<'root>>
22111	for vk::ImageViewMinLodCreateInfoEXT<'a>
22112{
22113}
22114
22115impl<'a> crate::construction::sealed::ChainNode
22116	for vk::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT<'a>
22117{
22118	const S_TYPE: vk::StructureType =
22119		vk::StructureType::PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT;
22120
22121	fn s_type(&self) -> vk::StructureType {
22122		self.s_type
22123	}
22124
22125	fn p_next(&self) -> *const std::ffi::c_void {
22126		self.p_next.cast_const()
22127	}
22128
22129	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22130		self.p_next = p_next;
22131	}
22132
22133	fn address(&mut self) -> *mut std::ffi::c_void {
22134		std::ptr::from_mut(self).cast()
22135	}
22136}
22137
22138impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
22139	for vk::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT<'a>
22140{
22141}
22142
22143impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
22144	for vk::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT<'a>
22145{
22146}
22147
22148impl<'a> crate::construction::sealed::ChainNode
22149	for vk::PhysicalDeviceLinearColorAttachmentFeaturesNV<'a>
22150{
22151	const S_TYPE: vk::StructureType =
22152		vk::StructureType::PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV;
22153
22154	fn s_type(&self) -> vk::StructureType {
22155		self.s_type
22156	}
22157
22158	fn p_next(&self) -> *const std::ffi::c_void {
22159		self.p_next.cast_const()
22160	}
22161
22162	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22163		self.p_next = p_next;
22164	}
22165
22166	fn address(&mut self) -> *mut std::ffi::c_void {
22167		std::ptr::from_mut(self).cast()
22168	}
22169}
22170
22171impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
22172	for vk::PhysicalDeviceLinearColorAttachmentFeaturesNV<'a>
22173{
22174}
22175
22176impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
22177	for vk::PhysicalDeviceLinearColorAttachmentFeaturesNV<'a>
22178{
22179}
22180
22181impl<'a> crate::construction::sealed::ChainNode
22182	for vk::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT<'a>
22183{
22184	const S_TYPE: vk::StructureType =
22185		vk::StructureType::PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT;
22186
22187	fn s_type(&self) -> vk::StructureType {
22188		self.s_type
22189	}
22190
22191	fn p_next(&self) -> *const std::ffi::c_void {
22192		self.p_next.cast_const()
22193	}
22194
22195	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22196		self.p_next = p_next;
22197	}
22198
22199	fn address(&mut self) -> *mut std::ffi::c_void {
22200		std::ptr::from_mut(self).cast()
22201	}
22202}
22203
22204impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
22205	for vk::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT<'a>
22206{
22207}
22208
22209impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
22210	for vk::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT<'a>
22211{
22212}
22213
22214impl<'a> crate::construction::sealed::ChainNode
22215	for vk::PhysicalDevicePipelineBinaryFeaturesKHR<'a>
22216{
22217	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR;
22218
22219	fn s_type(&self) -> vk::StructureType {
22220		self.s_type
22221	}
22222
22223	fn p_next(&self) -> *const std::ffi::c_void {
22224		self.p_next.cast_const()
22225	}
22226
22227	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22228		self.p_next = p_next;
22229	}
22230
22231	fn address(&mut self) -> *mut std::ffi::c_void {
22232		std::ptr::from_mut(self).cast()
22233	}
22234}
22235
22236impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
22237	for vk::PhysicalDevicePipelineBinaryFeaturesKHR<'a>
22238{
22239}
22240
22241impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
22242	for vk::PhysicalDevicePipelineBinaryFeaturesKHR<'a>
22243{
22244}
22245
22246impl<'a> crate::construction::sealed::ChainNode
22247	for vk::DevicePipelineBinaryInternalCacheControlKHR<'a>
22248{
22249	const S_TYPE: vk::StructureType =
22250		vk::StructureType::DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR;
22251
22252	fn s_type(&self) -> vk::StructureType {
22253		self.s_type
22254	}
22255
22256	fn p_next(&self) -> *const std::ffi::c_void {
22257		self.p_next
22258	}
22259
22260	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22261		self.p_next = p_next.cast_const();
22262	}
22263
22264	fn address(&mut self) -> *mut std::ffi::c_void {
22265		std::ptr::from_mut(self).cast()
22266	}
22267}
22268
22269impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
22270	for vk::DevicePipelineBinaryInternalCacheControlKHR<'a>
22271{
22272}
22273
22274impl<'a> crate::construction::sealed::ChainNode
22275	for vk::PhysicalDevicePipelineBinaryPropertiesKHR<'a>
22276{
22277	const S_TYPE: vk::StructureType =
22278		vk::StructureType::PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR;
22279
22280	fn s_type(&self) -> vk::StructureType {
22281		self.s_type
22282	}
22283
22284	fn p_next(&self) -> *const std::ffi::c_void {
22285		self.p_next.cast_const()
22286	}
22287
22288	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22289		self.p_next = p_next;
22290	}
22291
22292	fn address(&mut self) -> *mut std::ffi::c_void {
22293		std::ptr::from_mut(self).cast()
22294	}
22295}
22296
22297impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
22298	for vk::PhysicalDevicePipelineBinaryPropertiesKHR<'a>
22299{
22300}
22301
22302impl<'a> crate::construction::sealed::ChainNode
22303	for vk::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT<'a>
22304{
22305	const S_TYPE: vk::StructureType =
22306		vk::StructureType::PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT;
22307
22308	fn s_type(&self) -> vk::StructureType {
22309		self.s_type
22310	}
22311
22312	fn p_next(&self) -> *const std::ffi::c_void {
22313		self.p_next.cast_const()
22314	}
22315
22316	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22317		self.p_next = p_next;
22318	}
22319
22320	fn address(&mut self) -> *mut std::ffi::c_void {
22321		std::ptr::from_mut(self).cast()
22322	}
22323}
22324
22325impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
22326	for vk::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT<'a>
22327{
22328}
22329
22330impl<'a> crate::construction::sealed::ChainNode for vk::GraphicsPipelineLibraryCreateInfoEXT<'a> {
22331	const S_TYPE: vk::StructureType = vk::StructureType::GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT;
22332
22333	fn s_type(&self) -> vk::StructureType {
22334		self.s_type
22335	}
22336
22337	fn p_next(&self) -> *const std::ffi::c_void {
22338		self.p_next
22339	}
22340
22341	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22342		self.p_next = p_next.cast_const();
22343	}
22344
22345	fn address(&mut self) -> *mut std::ffi::c_void {
22346		std::ptr::from_mut(self).cast()
22347	}
22348}
22349
22350impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
22351	for vk::GraphicsPipelineLibraryCreateInfoEXT<'a>
22352{
22353}
22354
22355impl<'a> crate::construction::sealed::ChainNode
22356	for vk::PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM<'a>
22357{
22358	const S_TYPE: vk::StructureType =
22359		vk::StructureType::PHYSICAL_DEVICE_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_FEATURES_ARM;
22360
22361	fn s_type(&self) -> vk::StructureType {
22362		self.s_type
22363	}
22364
22365	fn p_next(&self) -> *const std::ffi::c_void {
22366		self.p_next.cast_const()
22367	}
22368
22369	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22370		self.p_next = p_next;
22371	}
22372
22373	fn address(&mut self) -> *mut std::ffi::c_void {
22374		std::ptr::from_mut(self).cast()
22375	}
22376}
22377
22378impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
22379	for vk::PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM<'a>
22380{
22381}
22382
22383impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
22384	for vk::PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM<'a>
22385{
22386}
22387
22388impl<'a> crate::construction::sealed::ChainNode
22389	for vk::DataGraphPipelineNeuralStatisticsCreateInfoARM<'a>
22390{
22391	const S_TYPE: vk::StructureType =
22392		vk::StructureType::DATA_GRAPH_PIPELINE_NEURAL_STATISTICS_CREATE_INFO_ARM;
22393
22394	fn s_type(&self) -> vk::StructureType {
22395		self.s_type
22396	}
22397
22398	fn p_next(&self) -> *const std::ffi::c_void {
22399		self.p_next
22400	}
22401
22402	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22403		self.p_next = p_next.cast_const();
22404	}
22405
22406	fn address(&mut self) -> *mut std::ffi::c_void {
22407		std::ptr::from_mut(self).cast()
22408	}
22409}
22410
22411impl<'a, 'root> crate::Extends<vk::DataGraphPipelineCreateInfoARM<'root>>
22412	for vk::DataGraphPipelineNeuralStatisticsCreateInfoARM<'a>
22413{
22414}
22415
22416impl<'a> crate::construction::sealed::ChainNode
22417	for vk::DataGraphPipelineSessionNeuralStatisticsCreateInfoARM<'a>
22418{
22419	const S_TYPE: vk::StructureType =
22420		vk::StructureType::DATA_GRAPH_PIPELINE_SESSION_NEURAL_STATISTICS_CREATE_INFO_ARM;
22421
22422	fn s_type(&self) -> vk::StructureType {
22423		self.s_type
22424	}
22425
22426	fn p_next(&self) -> *const std::ffi::c_void {
22427		self.p_next
22428	}
22429
22430	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22431		self.p_next = p_next.cast_const();
22432	}
22433
22434	fn address(&mut self) -> *mut std::ffi::c_void {
22435		std::ptr::from_mut(self).cast()
22436	}
22437}
22438
22439impl<'a, 'root> crate::Extends<vk::DataGraphPipelineSessionCreateInfoARM<'root>>
22440	for vk::DataGraphPipelineSessionNeuralStatisticsCreateInfoARM<'a>
22441{
22442}
22443
22444impl<'a> crate::construction::sealed::ChainNode
22445	for vk::TensorExplicitTilingFormatPropertiesARM<'a>
22446{
22447	const S_TYPE: vk::StructureType = vk::StructureType::TENSOR_EXPLICIT_TILING_FORMAT_PROPERTIES_ARM;
22448
22449	fn s_type(&self) -> vk::StructureType {
22450		self.s_type
22451	}
22452
22453	fn p_next(&self) -> *const std::ffi::c_void {
22454		self.p_next.cast_const()
22455	}
22456
22457	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22458		self.p_next = p_next;
22459	}
22460
22461	fn address(&mut self) -> *mut std::ffi::c_void {
22462		std::ptr::from_mut(self).cast()
22463	}
22464}
22465
22466impl<'a, 'root> crate::Extends<vk::FormatProperties2<'root>>
22467	for vk::TensorExplicitTilingFormatPropertiesARM<'a>
22468{
22469}
22470
22471impl<'a> crate::construction::sealed::ChainNode for vk::TensorRollingBackingCreateInfoARM<'a> {
22472	const S_TYPE: vk::StructureType = vk::StructureType::TENSOR_ROLLING_BACKING_CREATE_INFO_ARM;
22473
22474	fn s_type(&self) -> vk::StructureType {
22475		self.s_type
22476	}
22477
22478	fn p_next(&self) -> *const std::ffi::c_void {
22479		self.p_next
22480	}
22481
22482	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22483		self.p_next = p_next.cast_const();
22484	}
22485
22486	fn address(&mut self) -> *mut std::ffi::c_void {
22487		std::ptr::from_mut(self).cast()
22488	}
22489}
22490
22491impl<'a, 'root> crate::Extends<vk::TensorCreateInfoARM<'root>>
22492	for vk::TensorRollingBackingCreateInfoARM<'a>
22493{
22494}
22495
22496impl<'a> crate::construction::sealed::ChainNode
22497	for vk::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE<'a>
22498{
22499	const S_TYPE: vk::StructureType =
22500		vk::StructureType::PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE;
22501
22502	fn s_type(&self) -> vk::StructureType {
22503		self.s_type
22504	}
22505
22506	fn p_next(&self) -> *const std::ffi::c_void {
22507		self.p_next.cast_const()
22508	}
22509
22510	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22511		self.p_next = p_next;
22512	}
22513
22514	fn address(&mut self) -> *mut std::ffi::c_void {
22515		std::ptr::from_mut(self).cast()
22516	}
22517}
22518
22519impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
22520	for vk::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE<'a>
22521{
22522}
22523
22524impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
22525	for vk::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE<'a>
22526{
22527}
22528
22529impl<'a> crate::construction::sealed::ChainNode for vk::DescriptorSetBindingReferenceVALVE<'a> {
22530	const S_TYPE: vk::StructureType = vk::StructureType::DESCRIPTOR_SET_BINDING_REFERENCE_VALVE;
22531
22532	fn s_type(&self) -> vk::StructureType {
22533		self.s_type
22534	}
22535
22536	fn p_next(&self) -> *const std::ffi::c_void {
22537		self.p_next
22538	}
22539
22540	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22541		self.p_next = p_next.cast_const();
22542	}
22543
22544	fn address(&mut self) -> *mut std::ffi::c_void {
22545		std::ptr::from_mut(self).cast()
22546	}
22547}
22548
22549impl<'a> crate::construction::sealed::ChainNode
22550	for vk::DescriptorSetLayoutHostMappingInfoVALVE<'a>
22551{
22552	const S_TYPE: vk::StructureType =
22553		vk::StructureType::DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE;
22554
22555	fn s_type(&self) -> vk::StructureType {
22556		self.s_type
22557	}
22558
22559	fn p_next(&self) -> *const std::ffi::c_void {
22560		self.p_next.cast_const()
22561	}
22562
22563	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22564		self.p_next = p_next;
22565	}
22566
22567	fn address(&mut self) -> *mut std::ffi::c_void {
22568		std::ptr::from_mut(self).cast()
22569	}
22570}
22571
22572impl<'a> crate::construction::sealed::ChainNode
22573	for vk::PhysicalDeviceNestedCommandBufferFeaturesEXT<'a>
22574{
22575	const S_TYPE: vk::StructureType =
22576		vk::StructureType::PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT;
22577
22578	fn s_type(&self) -> vk::StructureType {
22579		self.s_type
22580	}
22581
22582	fn p_next(&self) -> *const std::ffi::c_void {
22583		self.p_next.cast_const()
22584	}
22585
22586	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22587		self.p_next = p_next;
22588	}
22589
22590	fn address(&mut self) -> *mut std::ffi::c_void {
22591		std::ptr::from_mut(self).cast()
22592	}
22593}
22594
22595impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
22596	for vk::PhysicalDeviceNestedCommandBufferFeaturesEXT<'a>
22597{
22598}
22599
22600impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
22601	for vk::PhysicalDeviceNestedCommandBufferFeaturesEXT<'a>
22602{
22603}
22604
22605impl<'a> crate::construction::sealed::ChainNode
22606	for vk::PhysicalDeviceNestedCommandBufferPropertiesEXT<'a>
22607{
22608	const S_TYPE: vk::StructureType =
22609		vk::StructureType::PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT;
22610
22611	fn s_type(&self) -> vk::StructureType {
22612		self.s_type
22613	}
22614
22615	fn p_next(&self) -> *const std::ffi::c_void {
22616		self.p_next.cast_const()
22617	}
22618
22619	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22620		self.p_next = p_next;
22621	}
22622
22623	fn address(&mut self) -> *mut std::ffi::c_void {
22624		std::ptr::from_mut(self).cast()
22625	}
22626}
22627
22628impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
22629	for vk::PhysicalDeviceNestedCommandBufferPropertiesEXT<'a>
22630{
22631}
22632
22633impl<'a> crate::construction::sealed::ChainNode
22634	for vk::PhysicalDeviceShaderModuleIdentifierFeaturesEXT<'a>
22635{
22636	const S_TYPE: vk::StructureType =
22637		vk::StructureType::PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT;
22638
22639	fn s_type(&self) -> vk::StructureType {
22640		self.s_type
22641	}
22642
22643	fn p_next(&self) -> *const std::ffi::c_void {
22644		self.p_next.cast_const()
22645	}
22646
22647	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22648		self.p_next = p_next;
22649	}
22650
22651	fn address(&mut self) -> *mut std::ffi::c_void {
22652		std::ptr::from_mut(self).cast()
22653	}
22654}
22655
22656impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
22657	for vk::PhysicalDeviceShaderModuleIdentifierFeaturesEXT<'a>
22658{
22659}
22660
22661impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
22662	for vk::PhysicalDeviceShaderModuleIdentifierFeaturesEXT<'a>
22663{
22664}
22665
22666impl<'a> crate::construction::sealed::ChainNode
22667	for vk::PhysicalDeviceShaderModuleIdentifierPropertiesEXT<'a>
22668{
22669	const S_TYPE: vk::StructureType =
22670		vk::StructureType::PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT;
22671
22672	fn s_type(&self) -> vk::StructureType {
22673		self.s_type
22674	}
22675
22676	fn p_next(&self) -> *const std::ffi::c_void {
22677		self.p_next.cast_const()
22678	}
22679
22680	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22681		self.p_next = p_next;
22682	}
22683
22684	fn address(&mut self) -> *mut std::ffi::c_void {
22685		std::ptr::from_mut(self).cast()
22686	}
22687}
22688
22689impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
22690	for vk::PhysicalDeviceShaderModuleIdentifierPropertiesEXT<'a>
22691{
22692}
22693
22694impl<'a> crate::construction::sealed::ChainNode
22695	for vk::PipelineShaderStageModuleIdentifierCreateInfoEXT<'a>
22696{
22697	const S_TYPE: vk::StructureType =
22698		vk::StructureType::PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT;
22699
22700	fn s_type(&self) -> vk::StructureType {
22701		self.s_type
22702	}
22703
22704	fn p_next(&self) -> *const std::ffi::c_void {
22705		self.p_next
22706	}
22707
22708	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22709		self.p_next = p_next.cast_const();
22710	}
22711
22712	fn address(&mut self) -> *mut std::ffi::c_void {
22713		std::ptr::from_mut(self).cast()
22714	}
22715}
22716
22717impl<'a, 'root> crate::Extends<vk::PipelineShaderStageCreateInfo<'root>>
22718	for vk::PipelineShaderStageModuleIdentifierCreateInfoEXT<'a>
22719{
22720}
22721
22722impl<'a> crate::construction::sealed::ChainNode for vk::ShaderModuleIdentifierEXT<'a> {
22723	const S_TYPE: vk::StructureType = vk::StructureType::SHADER_MODULE_IDENTIFIER_EXT;
22724
22725	fn s_type(&self) -> vk::StructureType {
22726		self.s_type
22727	}
22728
22729	fn p_next(&self) -> *const std::ffi::c_void {
22730		self.p_next.cast_const()
22731	}
22732
22733	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22734		self.p_next = p_next;
22735	}
22736
22737	fn address(&mut self) -> *mut std::ffi::c_void {
22738		std::ptr::from_mut(self).cast()
22739	}
22740}
22741
22742impl<'a> crate::construction::sealed::ChainNode for vk::ImageCompressionControlEXT<'a> {
22743	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_COMPRESSION_CONTROL_EXT;
22744
22745	fn s_type(&self) -> vk::StructureType {
22746		self.s_type
22747	}
22748
22749	fn p_next(&self) -> *const std::ffi::c_void {
22750		self.p_next
22751	}
22752
22753	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22754		self.p_next = p_next.cast_const();
22755	}
22756
22757	fn address(&mut self) -> *mut std::ffi::c_void {
22758		std::ptr::from_mut(self).cast()
22759	}
22760}
22761
22762impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>> for vk::ImageCompressionControlEXT<'a> {}
22763
22764impl<'a, 'root> crate::Extends<vk::SwapchainCreateInfoKHR<'root>>
22765	for vk::ImageCompressionControlEXT<'a>
22766{
22767}
22768
22769impl<'a, 'root> crate::Extends<vk::PhysicalDeviceImageFormatInfo2<'root>>
22770	for vk::ImageCompressionControlEXT<'a>
22771{
22772}
22773
22774impl<'a> crate::construction::sealed::ChainNode
22775	for vk::PhysicalDeviceImageCompressionControlFeaturesEXT<'a>
22776{
22777	const S_TYPE: vk::StructureType =
22778		vk::StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT;
22779
22780	fn s_type(&self) -> vk::StructureType {
22781		self.s_type
22782	}
22783
22784	fn p_next(&self) -> *const std::ffi::c_void {
22785		self.p_next.cast_const()
22786	}
22787
22788	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22789		self.p_next = p_next;
22790	}
22791
22792	fn address(&mut self) -> *mut std::ffi::c_void {
22793		std::ptr::from_mut(self).cast()
22794	}
22795}
22796
22797impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
22798	for vk::PhysicalDeviceImageCompressionControlFeaturesEXT<'a>
22799{
22800}
22801
22802impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
22803	for vk::PhysicalDeviceImageCompressionControlFeaturesEXT<'a>
22804{
22805}
22806
22807impl<'a> crate::construction::sealed::ChainNode for vk::ImageCompressionPropertiesEXT<'a> {
22808	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_COMPRESSION_PROPERTIES_EXT;
22809
22810	fn s_type(&self) -> vk::StructureType {
22811		self.s_type
22812	}
22813
22814	fn p_next(&self) -> *const std::ffi::c_void {
22815		self.p_next.cast_const()
22816	}
22817
22818	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22819		self.p_next = p_next;
22820	}
22821
22822	fn address(&mut self) -> *mut std::ffi::c_void {
22823		std::ptr::from_mut(self).cast()
22824	}
22825}
22826
22827impl<'a, 'root> crate::Extends<vk::ImageFormatProperties2<'root>>
22828	for vk::ImageCompressionPropertiesEXT<'a>
22829{
22830}
22831
22832impl<'a, 'root> crate::Extends<vk::SurfaceFormat2KHR<'root>>
22833	for vk::ImageCompressionPropertiesEXT<'a>
22834{
22835}
22836
22837impl<'a, 'root> crate::Extends<vk::SubresourceLayout2<'root>>
22838	for vk::ImageCompressionPropertiesEXT<'a>
22839{
22840}
22841
22842impl<'a> crate::construction::sealed::ChainNode
22843	for vk::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT<'a>
22844{
22845	const S_TYPE: vk::StructureType =
22846		vk::StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT;
22847
22848	fn s_type(&self) -> vk::StructureType {
22849		self.s_type
22850	}
22851
22852	fn p_next(&self) -> *const std::ffi::c_void {
22853		self.p_next.cast_const()
22854	}
22855
22856	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22857		self.p_next = p_next;
22858	}
22859
22860	fn address(&mut self) -> *mut std::ffi::c_void {
22861		std::ptr::from_mut(self).cast()
22862	}
22863}
22864
22865impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
22866	for vk::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT<'a>
22867{
22868}
22869
22870impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
22871	for vk::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT<'a>
22872{
22873}
22874
22875impl<'a> crate::construction::sealed::ChainNode for vk::ImageSubresource2<'a> {
22876	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_SUBRESOURCE_2;
22877
22878	fn s_type(&self) -> vk::StructureType {
22879		self.s_type
22880	}
22881
22882	fn p_next(&self) -> *const std::ffi::c_void {
22883		self.p_next.cast_const()
22884	}
22885
22886	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22887		self.p_next = p_next;
22888	}
22889
22890	fn address(&mut self) -> *mut std::ffi::c_void {
22891		std::ptr::from_mut(self).cast()
22892	}
22893}
22894
22895impl<'a> crate::construction::sealed::ChainNode for vk::SubresourceLayout2<'a> {
22896	const S_TYPE: vk::StructureType = vk::StructureType::SUBRESOURCE_LAYOUT_2;
22897
22898	fn s_type(&self) -> vk::StructureType {
22899		self.s_type
22900	}
22901
22902	fn p_next(&self) -> *const std::ffi::c_void {
22903		self.p_next.cast_const()
22904	}
22905
22906	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22907		self.p_next = p_next;
22908	}
22909
22910	fn address(&mut self) -> *mut std::ffi::c_void {
22911		std::ptr::from_mut(self).cast()
22912	}
22913}
22914
22915impl<'a> crate::construction::sealed::ChainNode for vk::RenderPassCreationControlEXT<'a> {
22916	const S_TYPE: vk::StructureType = vk::StructureType::RENDER_PASS_CREATION_CONTROL_EXT;
22917
22918	fn s_type(&self) -> vk::StructureType {
22919		self.s_type
22920	}
22921
22922	fn p_next(&self) -> *const std::ffi::c_void {
22923		self.p_next
22924	}
22925
22926	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22927		self.p_next = p_next.cast_const();
22928	}
22929
22930	fn address(&mut self) -> *mut std::ffi::c_void {
22931		std::ptr::from_mut(self).cast()
22932	}
22933}
22934
22935impl<'a, 'root> crate::Extends<vk::RenderPassCreateInfo2<'root>>
22936	for vk::RenderPassCreationControlEXT<'a>
22937{
22938}
22939
22940impl<'a, 'root> crate::Extends<vk::SubpassDescription2<'root>>
22941	for vk::RenderPassCreationControlEXT<'a>
22942{
22943}
22944
22945impl<'a> crate::construction::sealed::ChainNode
22946	for vk::RenderPassCreationFeedbackCreateInfoEXT<'a>
22947{
22948	const S_TYPE: vk::StructureType =
22949		vk::StructureType::RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT;
22950
22951	fn s_type(&self) -> vk::StructureType {
22952		self.s_type
22953	}
22954
22955	fn p_next(&self) -> *const std::ffi::c_void {
22956		self.p_next
22957	}
22958
22959	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22960		self.p_next = p_next.cast_const();
22961	}
22962
22963	fn address(&mut self) -> *mut std::ffi::c_void {
22964		std::ptr::from_mut(self).cast()
22965	}
22966}
22967
22968impl<'a, 'root> crate::Extends<vk::RenderPassCreateInfo2<'root>>
22969	for vk::RenderPassCreationFeedbackCreateInfoEXT<'a>
22970{
22971}
22972
22973impl<'a> crate::construction::sealed::ChainNode for vk::RenderPassSubpassFeedbackCreateInfoEXT<'a> {
22974	const S_TYPE: vk::StructureType = vk::StructureType::RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT;
22975
22976	fn s_type(&self) -> vk::StructureType {
22977		self.s_type
22978	}
22979
22980	fn p_next(&self) -> *const std::ffi::c_void {
22981		self.p_next
22982	}
22983
22984	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
22985		self.p_next = p_next.cast_const();
22986	}
22987
22988	fn address(&mut self) -> *mut std::ffi::c_void {
22989		std::ptr::from_mut(self).cast()
22990	}
22991}
22992
22993impl<'a, 'root> crate::Extends<vk::SubpassDescription2<'root>>
22994	for vk::RenderPassSubpassFeedbackCreateInfoEXT<'a>
22995{
22996}
22997
22998impl<'a> crate::construction::sealed::ChainNode
22999	for vk::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT<'a>
23000{
23001	const S_TYPE: vk::StructureType =
23002		vk::StructureType::PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT;
23003
23004	fn s_type(&self) -> vk::StructureType {
23005		self.s_type
23006	}
23007
23008	fn p_next(&self) -> *const std::ffi::c_void {
23009		self.p_next.cast_const()
23010	}
23011
23012	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23013		self.p_next = p_next;
23014	}
23015
23016	fn address(&mut self) -> *mut std::ffi::c_void {
23017		std::ptr::from_mut(self).cast()
23018	}
23019}
23020
23021impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
23022	for vk::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT<'a>
23023{
23024}
23025
23026impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
23027	for vk::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT<'a>
23028{
23029}
23030
23031impl<'a> crate::construction::sealed::ChainNode for vk::MicromapBuildInfoEXT<'a> {
23032	const S_TYPE: vk::StructureType = vk::StructureType::MICROMAP_BUILD_INFO_EXT;
23033
23034	fn s_type(&self) -> vk::StructureType {
23035		self.s_type
23036	}
23037
23038	fn p_next(&self) -> *const std::ffi::c_void {
23039		self.p_next
23040	}
23041
23042	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23043		self.p_next = p_next.cast_const();
23044	}
23045
23046	fn address(&mut self) -> *mut std::ffi::c_void {
23047		std::ptr::from_mut(self).cast()
23048	}
23049}
23050
23051impl<'a> crate::construction::sealed::ChainNode
23052	for vk::AccelerationStructureGeometryMicromapDataKHR<'a>
23053{
23054	const S_TYPE: vk::StructureType =
23055		vk::StructureType::ACCELERATION_STRUCTURE_GEOMETRY_MICROMAP_DATA_KHR;
23056
23057	fn s_type(&self) -> vk::StructureType {
23058		self.s_type
23059	}
23060
23061	fn p_next(&self) -> *const std::ffi::c_void {
23062		self.p_next
23063	}
23064
23065	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23066		self.p_next = p_next.cast_const();
23067	}
23068
23069	fn address(&mut self) -> *mut std::ffi::c_void {
23070		std::ptr::from_mut(self).cast()
23071	}
23072}
23073
23074impl<'a, 'root> crate::Extends<vk::AccelerationStructureGeometryKHR<'root>>
23075	for vk::AccelerationStructureGeometryMicromapDataKHR<'a>
23076{
23077}
23078
23079impl<'a> crate::construction::sealed::ChainNode for vk::MicromapCreateInfoEXT<'a> {
23080	const S_TYPE: vk::StructureType = vk::StructureType::MICROMAP_CREATE_INFO_EXT;
23081
23082	fn s_type(&self) -> vk::StructureType {
23083		self.s_type
23084	}
23085
23086	fn p_next(&self) -> *const std::ffi::c_void {
23087		self.p_next
23088	}
23089
23090	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23091		self.p_next = p_next.cast_const();
23092	}
23093
23094	fn address(&mut self) -> *mut std::ffi::c_void {
23095		std::ptr::from_mut(self).cast()
23096	}
23097}
23098
23099impl<'a> crate::construction::sealed::ChainNode for vk::MicromapVersionInfoEXT<'a> {
23100	const S_TYPE: vk::StructureType = vk::StructureType::MICROMAP_VERSION_INFO_EXT;
23101
23102	fn s_type(&self) -> vk::StructureType {
23103		self.s_type
23104	}
23105
23106	fn p_next(&self) -> *const std::ffi::c_void {
23107		self.p_next
23108	}
23109
23110	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23111		self.p_next = p_next.cast_const();
23112	}
23113
23114	fn address(&mut self) -> *mut std::ffi::c_void {
23115		std::ptr::from_mut(self).cast()
23116	}
23117}
23118
23119impl<'a> crate::construction::sealed::ChainNode for vk::CopyMicromapInfoEXT<'a> {
23120	const S_TYPE: vk::StructureType = vk::StructureType::COPY_MICROMAP_INFO_EXT;
23121
23122	fn s_type(&self) -> vk::StructureType {
23123		self.s_type
23124	}
23125
23126	fn p_next(&self) -> *const std::ffi::c_void {
23127		self.p_next
23128	}
23129
23130	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23131		self.p_next = p_next.cast_const();
23132	}
23133
23134	fn address(&mut self) -> *mut std::ffi::c_void {
23135		std::ptr::from_mut(self).cast()
23136	}
23137}
23138
23139impl<'a> crate::construction::sealed::ChainNode for vk::CopyMicromapToMemoryInfoEXT<'a> {
23140	const S_TYPE: vk::StructureType = vk::StructureType::COPY_MICROMAP_TO_MEMORY_INFO_EXT;
23141
23142	fn s_type(&self) -> vk::StructureType {
23143		self.s_type
23144	}
23145
23146	fn p_next(&self) -> *const std::ffi::c_void {
23147		self.p_next
23148	}
23149
23150	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23151		self.p_next = p_next.cast_const();
23152	}
23153
23154	fn address(&mut self) -> *mut std::ffi::c_void {
23155		std::ptr::from_mut(self).cast()
23156	}
23157}
23158
23159impl<'a> crate::construction::sealed::ChainNode for vk::CopyMemoryToMicromapInfoEXT<'a> {
23160	const S_TYPE: vk::StructureType = vk::StructureType::COPY_MEMORY_TO_MICROMAP_INFO_EXT;
23161
23162	fn s_type(&self) -> vk::StructureType {
23163		self.s_type
23164	}
23165
23166	fn p_next(&self) -> *const std::ffi::c_void {
23167		self.p_next
23168	}
23169
23170	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23171		self.p_next = p_next.cast_const();
23172	}
23173
23174	fn address(&mut self) -> *mut std::ffi::c_void {
23175		std::ptr::from_mut(self).cast()
23176	}
23177}
23178
23179impl<'a> crate::construction::sealed::ChainNode for vk::MicromapBuildSizesInfoEXT<'a> {
23180	const S_TYPE: vk::StructureType = vk::StructureType::MICROMAP_BUILD_SIZES_INFO_EXT;
23181
23182	fn s_type(&self) -> vk::StructureType {
23183		self.s_type
23184	}
23185
23186	fn p_next(&self) -> *const std::ffi::c_void {
23187		self.p_next
23188	}
23189
23190	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23191		self.p_next = p_next.cast_const();
23192	}
23193
23194	fn address(&mut self) -> *mut std::ffi::c_void {
23195		std::ptr::from_mut(self).cast()
23196	}
23197}
23198
23199impl<'a> crate::construction::sealed::ChainNode
23200	for vk::PhysicalDeviceOpacityMicromapFeaturesKHR<'a>
23201{
23202	const S_TYPE: vk::StructureType =
23203		vk::StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_KHR;
23204
23205	fn s_type(&self) -> vk::StructureType {
23206		self.s_type
23207	}
23208
23209	fn p_next(&self) -> *const std::ffi::c_void {
23210		self.p_next.cast_const()
23211	}
23212
23213	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23214		self.p_next = p_next;
23215	}
23216
23217	fn address(&mut self) -> *mut std::ffi::c_void {
23218		std::ptr::from_mut(self).cast()
23219	}
23220}
23221
23222impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
23223	for vk::PhysicalDeviceOpacityMicromapFeaturesKHR<'a>
23224{
23225}
23226
23227impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
23228	for vk::PhysicalDeviceOpacityMicromapFeaturesKHR<'a>
23229{
23230}
23231
23232impl<'a> crate::construction::sealed::ChainNode
23233	for vk::PhysicalDeviceOpacityMicromapFeaturesEXT<'a>
23234{
23235	const S_TYPE: vk::StructureType =
23236		vk::StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT;
23237
23238	fn s_type(&self) -> vk::StructureType {
23239		self.s_type
23240	}
23241
23242	fn p_next(&self) -> *const std::ffi::c_void {
23243		self.p_next.cast_const()
23244	}
23245
23246	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23247		self.p_next = p_next;
23248	}
23249
23250	fn address(&mut self) -> *mut std::ffi::c_void {
23251		std::ptr::from_mut(self).cast()
23252	}
23253}
23254
23255impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
23256	for vk::PhysicalDeviceOpacityMicromapFeaturesEXT<'a>
23257{
23258}
23259
23260impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
23261	for vk::PhysicalDeviceOpacityMicromapFeaturesEXT<'a>
23262{
23263}
23264
23265impl<'a> crate::construction::sealed::ChainNode
23266	for vk::PhysicalDeviceOpacityMicromapPropertiesKHR<'a>
23267{
23268	const S_TYPE: vk::StructureType =
23269		vk::StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_KHR;
23270
23271	fn s_type(&self) -> vk::StructureType {
23272		self.s_type
23273	}
23274
23275	fn p_next(&self) -> *const std::ffi::c_void {
23276		self.p_next.cast_const()
23277	}
23278
23279	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23280		self.p_next = p_next;
23281	}
23282
23283	fn address(&mut self) -> *mut std::ffi::c_void {
23284		std::ptr::from_mut(self).cast()
23285	}
23286}
23287
23288impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
23289	for vk::PhysicalDeviceOpacityMicromapPropertiesKHR<'a>
23290{
23291}
23292
23293impl<'a> crate::construction::sealed::ChainNode
23294	for vk::PhysicalDeviceOpacityMicromapPropertiesEXT<'a>
23295{
23296	const S_TYPE: vk::StructureType =
23297		vk::StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT;
23298
23299	fn s_type(&self) -> vk::StructureType {
23300		self.s_type
23301	}
23302
23303	fn p_next(&self) -> *const std::ffi::c_void {
23304		self.p_next.cast_const()
23305	}
23306
23307	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23308		self.p_next = p_next;
23309	}
23310
23311	fn address(&mut self) -> *mut std::ffi::c_void {
23312		std::ptr::from_mut(self).cast()
23313	}
23314}
23315
23316impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
23317	for vk::PhysicalDeviceOpacityMicromapPropertiesEXT<'a>
23318{
23319}
23320
23321impl<'a> crate::construction::sealed::ChainNode
23322	for vk::AccelerationStructureTrianglesOpacityMicromapKHR<'a>
23323{
23324	const S_TYPE: vk::StructureType =
23325		vk::StructureType::ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_KHR;
23326
23327	fn s_type(&self) -> vk::StructureType {
23328		self.s_type
23329	}
23330
23331	fn p_next(&self) -> *const std::ffi::c_void {
23332		self.p_next.cast_const()
23333	}
23334
23335	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23336		self.p_next = p_next;
23337	}
23338
23339	fn address(&mut self) -> *mut std::ffi::c_void {
23340		std::ptr::from_mut(self).cast()
23341	}
23342}
23343
23344impl<'a, 'root> crate::Extends<vk::AccelerationStructureGeometryTrianglesDataKHR<'root>>
23345	for vk::AccelerationStructureTrianglesOpacityMicromapKHR<'a>
23346{
23347}
23348
23349#[cfg(feature = "provisional")]
23350impl<'a, 'root> crate::Extends<vk::AccelerationStructureDenseGeometryFormatTrianglesDataAMDX<'root>>
23351	for vk::AccelerationStructureTrianglesOpacityMicromapKHR<'a>
23352{
23353}
23354
23355impl<'a> crate::construction::sealed::ChainNode
23356	for vk::AccelerationStructureTrianglesOpacityMicromapEXT<'a>
23357{
23358	const S_TYPE: vk::StructureType =
23359		vk::StructureType::ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT;
23360
23361	fn s_type(&self) -> vk::StructureType {
23362		self.s_type
23363	}
23364
23365	fn p_next(&self) -> *const std::ffi::c_void {
23366		self.p_next.cast_const()
23367	}
23368
23369	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23370		self.p_next = p_next;
23371	}
23372
23373	fn address(&mut self) -> *mut std::ffi::c_void {
23374		std::ptr::from_mut(self).cast()
23375	}
23376}
23377
23378impl<'a, 'root> crate::Extends<vk::AccelerationStructureGeometryTrianglesDataKHR<'root>>
23379	for vk::AccelerationStructureTrianglesOpacityMicromapEXT<'a>
23380{
23381}
23382
23383#[cfg(feature = "provisional")]
23384impl<'a, 'root> crate::Extends<vk::AccelerationStructureDenseGeometryFormatTrianglesDataAMDX<'root>>
23385	for vk::AccelerationStructureTrianglesOpacityMicromapEXT<'a>
23386{
23387}
23388
23389#[cfg(feature = "provisional")]
23390impl<'a> crate::construction::sealed::ChainNode
23391	for vk::PhysicalDeviceDisplacementMicromapFeaturesNV<'a>
23392{
23393	const S_TYPE: vk::StructureType =
23394		vk::StructureType::PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV;
23395
23396	fn s_type(&self) -> vk::StructureType {
23397		self.s_type
23398	}
23399
23400	fn p_next(&self) -> *const std::ffi::c_void {
23401		self.p_next.cast_const()
23402	}
23403
23404	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23405		self.p_next = p_next;
23406	}
23407
23408	fn address(&mut self) -> *mut std::ffi::c_void {
23409		std::ptr::from_mut(self).cast()
23410	}
23411}
23412
23413#[cfg(feature = "provisional")]
23414impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
23415	for vk::PhysicalDeviceDisplacementMicromapFeaturesNV<'a>
23416{
23417}
23418
23419#[cfg(feature = "provisional")]
23420impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
23421	for vk::PhysicalDeviceDisplacementMicromapFeaturesNV<'a>
23422{
23423}
23424
23425#[cfg(feature = "provisional")]
23426impl<'a> crate::construction::sealed::ChainNode
23427	for vk::PhysicalDeviceDisplacementMicromapPropertiesNV<'a>
23428{
23429	const S_TYPE: vk::StructureType =
23430		vk::StructureType::PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV;
23431
23432	fn s_type(&self) -> vk::StructureType {
23433		self.s_type
23434	}
23435
23436	fn p_next(&self) -> *const std::ffi::c_void {
23437		self.p_next.cast_const()
23438	}
23439
23440	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23441		self.p_next = p_next;
23442	}
23443
23444	fn address(&mut self) -> *mut std::ffi::c_void {
23445		std::ptr::from_mut(self).cast()
23446	}
23447}
23448
23449#[cfg(feature = "provisional")]
23450impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
23451	for vk::PhysicalDeviceDisplacementMicromapPropertiesNV<'a>
23452{
23453}
23454
23455#[cfg(feature = "provisional")]
23456impl<'a> crate::construction::sealed::ChainNode
23457	for vk::AccelerationStructureTrianglesDisplacementMicromapNV<'a>
23458{
23459	const S_TYPE: vk::StructureType =
23460		vk::StructureType::ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV;
23461
23462	fn s_type(&self) -> vk::StructureType {
23463		self.s_type
23464	}
23465
23466	fn p_next(&self) -> *const std::ffi::c_void {
23467		self.p_next.cast_const()
23468	}
23469
23470	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23471		self.p_next = p_next;
23472	}
23473
23474	fn address(&mut self) -> *mut std::ffi::c_void {
23475		std::ptr::from_mut(self).cast()
23476	}
23477}
23478
23479#[cfg(feature = "provisional")]
23480impl<'a, 'root> crate::Extends<vk::AccelerationStructureGeometryTrianglesDataKHR<'root>>
23481	for vk::AccelerationStructureTrianglesDisplacementMicromapNV<'a>
23482{
23483}
23484
23485impl<'a> crate::construction::sealed::ChainNode for vk::PipelinePropertiesIdentifierEXT<'a> {
23486	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_PROPERTIES_IDENTIFIER_EXT;
23487
23488	fn s_type(&self) -> vk::StructureType {
23489		self.s_type
23490	}
23491
23492	fn p_next(&self) -> *const std::ffi::c_void {
23493		self.p_next.cast_const()
23494	}
23495
23496	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23497		self.p_next = p_next;
23498	}
23499
23500	fn address(&mut self) -> *mut std::ffi::c_void {
23501		std::ptr::from_mut(self).cast()
23502	}
23503}
23504
23505impl<'a> crate::construction::sealed::ChainNode
23506	for vk::PhysicalDevicePipelinePropertiesFeaturesEXT<'a>
23507{
23508	const S_TYPE: vk::StructureType =
23509		vk::StructureType::PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT;
23510
23511	fn s_type(&self) -> vk::StructureType {
23512		self.s_type
23513	}
23514
23515	fn p_next(&self) -> *const std::ffi::c_void {
23516		self.p_next.cast_const()
23517	}
23518
23519	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23520		self.p_next = p_next;
23521	}
23522
23523	fn address(&mut self) -> *mut std::ffi::c_void {
23524		std::ptr::from_mut(self).cast()
23525	}
23526}
23527
23528impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
23529	for vk::PhysicalDevicePipelinePropertiesFeaturesEXT<'a>
23530{
23531}
23532
23533impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
23534	for vk::PhysicalDevicePipelinePropertiesFeaturesEXT<'a>
23535{
23536}
23537
23538impl<'a> crate::construction::sealed::ChainNode
23539	for vk::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD<'a>
23540{
23541	const S_TYPE: vk::StructureType =
23542		vk::StructureType::PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD;
23543
23544	fn s_type(&self) -> vk::StructureType {
23545		self.s_type
23546	}
23547
23548	fn p_next(&self) -> *const std::ffi::c_void {
23549		self.p_next.cast_const()
23550	}
23551
23552	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23553		self.p_next = p_next;
23554	}
23555
23556	fn address(&mut self) -> *mut std::ffi::c_void {
23557		std::ptr::from_mut(self).cast()
23558	}
23559}
23560
23561impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
23562	for vk::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD<'a>
23563{
23564}
23565
23566impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
23567	for vk::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD<'a>
23568{
23569}
23570
23571impl<'a> crate::construction::sealed::ChainNode for vk::ExternalMemoryAcquireUnmodifiedEXT<'a> {
23572	const S_TYPE: vk::StructureType = vk::StructureType::EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT;
23573
23574	fn s_type(&self) -> vk::StructureType {
23575		self.s_type
23576	}
23577
23578	fn p_next(&self) -> *const std::ffi::c_void {
23579		self.p_next
23580	}
23581
23582	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23583		self.p_next = p_next.cast_const();
23584	}
23585
23586	fn address(&mut self) -> *mut std::ffi::c_void {
23587		std::ptr::from_mut(self).cast()
23588	}
23589}
23590
23591impl<'a, 'root> crate::Extends<vk::BufferMemoryBarrier<'root>>
23592	for vk::ExternalMemoryAcquireUnmodifiedEXT<'a>
23593{
23594}
23595
23596impl<'a, 'root> crate::Extends<vk::BufferMemoryBarrier2<'root>>
23597	for vk::ExternalMemoryAcquireUnmodifiedEXT<'a>
23598{
23599}
23600
23601impl<'a, 'root> crate::Extends<vk::ImageMemoryBarrier<'root>>
23602	for vk::ExternalMemoryAcquireUnmodifiedEXT<'a>
23603{
23604}
23605
23606impl<'a, 'root> crate::Extends<vk::ImageMemoryBarrier2<'root>>
23607	for vk::ExternalMemoryAcquireUnmodifiedEXT<'a>
23608{
23609}
23610
23611#[cfg(feature = "platform-metal")]
23612impl<'a> crate::construction::sealed::ChainNode for vk::ExportMetalObjectCreateInfoEXT<'a> {
23613	const S_TYPE: vk::StructureType = vk::StructureType::EXPORT_METAL_OBJECT_CREATE_INFO_EXT;
23614
23615	fn s_type(&self) -> vk::StructureType {
23616		self.s_type
23617	}
23618
23619	fn p_next(&self) -> *const std::ffi::c_void {
23620		self.p_next
23621	}
23622
23623	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23624		self.p_next = p_next.cast_const();
23625	}
23626
23627	fn address(&mut self) -> *mut std::ffi::c_void {
23628		std::ptr::from_mut(self).cast()
23629	}
23630}
23631
23632#[cfg(feature = "platform-metal")]
23633impl<'a, 'root> crate::Extends<vk::InstanceCreateInfo<'root>>
23634	for vk::ExportMetalObjectCreateInfoEXT<'a>
23635{
23636}
23637
23638#[cfg(feature = "platform-metal")]
23639impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>>
23640	for vk::ExportMetalObjectCreateInfoEXT<'a>
23641{
23642}
23643
23644#[cfg(feature = "platform-metal")]
23645impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>>
23646	for vk::ExportMetalObjectCreateInfoEXT<'a>
23647{
23648}
23649
23650#[cfg(feature = "platform-metal")]
23651impl<'a, 'root> crate::Extends<vk::ImageViewCreateInfo<'root>>
23652	for vk::ExportMetalObjectCreateInfoEXT<'a>
23653{
23654}
23655
23656#[cfg(feature = "platform-metal")]
23657impl<'a, 'root> crate::Extends<vk::BufferViewCreateInfo<'root>>
23658	for vk::ExportMetalObjectCreateInfoEXT<'a>
23659{
23660}
23661
23662#[cfg(feature = "platform-metal")]
23663impl<'a, 'root> crate::Extends<vk::SemaphoreCreateInfo<'root>>
23664	for vk::ExportMetalObjectCreateInfoEXT<'a>
23665{
23666}
23667
23668#[cfg(feature = "platform-metal")]
23669impl<'a, 'root> crate::Extends<vk::EventCreateInfo<'root>>
23670	for vk::ExportMetalObjectCreateInfoEXT<'a>
23671{
23672}
23673
23674#[cfg(feature = "platform-metal")]
23675impl<'a> crate::construction::sealed::ChainNode for vk::ExportMetalObjectsInfoEXT<'a> {
23676	const S_TYPE: vk::StructureType = vk::StructureType::EXPORT_METAL_OBJECTS_INFO_EXT;
23677
23678	fn s_type(&self) -> vk::StructureType {
23679		self.s_type
23680	}
23681
23682	fn p_next(&self) -> *const std::ffi::c_void {
23683		self.p_next
23684	}
23685
23686	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23687		self.p_next = p_next.cast_const();
23688	}
23689
23690	fn address(&mut self) -> *mut std::ffi::c_void {
23691		std::ptr::from_mut(self).cast()
23692	}
23693}
23694
23695#[cfg(feature = "platform-metal")]
23696impl<'a> crate::construction::sealed::ChainNode for vk::ExportMetalDeviceInfoEXT<'a> {
23697	const S_TYPE: vk::StructureType = vk::StructureType::EXPORT_METAL_DEVICE_INFO_EXT;
23698
23699	fn s_type(&self) -> vk::StructureType {
23700		self.s_type
23701	}
23702
23703	fn p_next(&self) -> *const std::ffi::c_void {
23704		self.p_next
23705	}
23706
23707	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23708		self.p_next = p_next.cast_const();
23709	}
23710
23711	fn address(&mut self) -> *mut std::ffi::c_void {
23712		std::ptr::from_mut(self).cast()
23713	}
23714}
23715
23716#[cfg(feature = "platform-metal")]
23717impl<'a, 'root> crate::Extends<vk::ExportMetalObjectsInfoEXT<'root>>
23718	for vk::ExportMetalDeviceInfoEXT<'a>
23719{
23720}
23721
23722#[cfg(feature = "platform-metal")]
23723impl<'a> crate::construction::sealed::ChainNode for vk::ExportMetalCommandQueueInfoEXT<'a> {
23724	const S_TYPE: vk::StructureType = vk::StructureType::EXPORT_METAL_COMMAND_QUEUE_INFO_EXT;
23725
23726	fn s_type(&self) -> vk::StructureType {
23727		self.s_type
23728	}
23729
23730	fn p_next(&self) -> *const std::ffi::c_void {
23731		self.p_next
23732	}
23733
23734	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23735		self.p_next = p_next.cast_const();
23736	}
23737
23738	fn address(&mut self) -> *mut std::ffi::c_void {
23739		std::ptr::from_mut(self).cast()
23740	}
23741}
23742
23743#[cfg(feature = "platform-metal")]
23744impl<'a, 'root> crate::Extends<vk::ExportMetalObjectsInfoEXT<'root>>
23745	for vk::ExportMetalCommandQueueInfoEXT<'a>
23746{
23747}
23748
23749#[cfg(feature = "platform-metal")]
23750impl<'a> crate::construction::sealed::ChainNode for vk::ExportMetalBufferInfoEXT<'a> {
23751	const S_TYPE: vk::StructureType = vk::StructureType::EXPORT_METAL_BUFFER_INFO_EXT;
23752
23753	fn s_type(&self) -> vk::StructureType {
23754		self.s_type
23755	}
23756
23757	fn p_next(&self) -> *const std::ffi::c_void {
23758		self.p_next
23759	}
23760
23761	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23762		self.p_next = p_next.cast_const();
23763	}
23764
23765	fn address(&mut self) -> *mut std::ffi::c_void {
23766		std::ptr::from_mut(self).cast()
23767	}
23768}
23769
23770#[cfg(feature = "platform-metal")]
23771impl<'a, 'root> crate::Extends<vk::ExportMetalObjectsInfoEXT<'root>>
23772	for vk::ExportMetalBufferInfoEXT<'a>
23773{
23774}
23775
23776#[cfg(feature = "platform-metal")]
23777impl<'a> crate::construction::sealed::ChainNode for vk::ImportMetalBufferInfoEXT<'a> {
23778	const S_TYPE: vk::StructureType = vk::StructureType::IMPORT_METAL_BUFFER_INFO_EXT;
23779
23780	fn s_type(&self) -> vk::StructureType {
23781		self.s_type
23782	}
23783
23784	fn p_next(&self) -> *const std::ffi::c_void {
23785		self.p_next
23786	}
23787
23788	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23789		self.p_next = p_next.cast_const();
23790	}
23791
23792	fn address(&mut self) -> *mut std::ffi::c_void {
23793		std::ptr::from_mut(self).cast()
23794	}
23795}
23796
23797#[cfg(feature = "platform-metal")]
23798impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>> for vk::ImportMetalBufferInfoEXT<'a> {}
23799
23800#[cfg(feature = "platform-metal")]
23801impl<'a> crate::construction::sealed::ChainNode for vk::ExportMetalTextureInfoEXT<'a> {
23802	const S_TYPE: vk::StructureType = vk::StructureType::EXPORT_METAL_TEXTURE_INFO_EXT;
23803
23804	fn s_type(&self) -> vk::StructureType {
23805		self.s_type
23806	}
23807
23808	fn p_next(&self) -> *const std::ffi::c_void {
23809		self.p_next
23810	}
23811
23812	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23813		self.p_next = p_next.cast_const();
23814	}
23815
23816	fn address(&mut self) -> *mut std::ffi::c_void {
23817		std::ptr::from_mut(self).cast()
23818	}
23819}
23820
23821#[cfg(feature = "platform-metal")]
23822impl<'a, 'root> crate::Extends<vk::ExportMetalObjectsInfoEXT<'root>>
23823	for vk::ExportMetalTextureInfoEXT<'a>
23824{
23825}
23826
23827#[cfg(feature = "platform-metal")]
23828impl<'a> crate::construction::sealed::ChainNode for vk::ImportMetalTextureInfoEXT<'a> {
23829	const S_TYPE: vk::StructureType = vk::StructureType::IMPORT_METAL_TEXTURE_INFO_EXT;
23830
23831	fn s_type(&self) -> vk::StructureType {
23832		self.s_type
23833	}
23834
23835	fn p_next(&self) -> *const std::ffi::c_void {
23836		self.p_next
23837	}
23838
23839	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23840		self.p_next = p_next.cast_const();
23841	}
23842
23843	fn address(&mut self) -> *mut std::ffi::c_void {
23844		std::ptr::from_mut(self).cast()
23845	}
23846}
23847
23848#[cfg(feature = "platform-metal")]
23849impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>> for vk::ImportMetalTextureInfoEXT<'a> {}
23850
23851#[cfg(feature = "platform-metal")]
23852impl<'a> crate::construction::sealed::ChainNode for vk::ExportMetalIOSurfaceInfoEXT<'a> {
23853	const S_TYPE: vk::StructureType = vk::StructureType::EXPORT_METAL_IO_SURFACE_INFO_EXT;
23854
23855	fn s_type(&self) -> vk::StructureType {
23856		self.s_type
23857	}
23858
23859	fn p_next(&self) -> *const std::ffi::c_void {
23860		self.p_next
23861	}
23862
23863	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23864		self.p_next = p_next.cast_const();
23865	}
23866
23867	fn address(&mut self) -> *mut std::ffi::c_void {
23868		std::ptr::from_mut(self).cast()
23869	}
23870}
23871
23872#[cfg(feature = "platform-metal")]
23873impl<'a, 'root> crate::Extends<vk::ExportMetalObjectsInfoEXT<'root>>
23874	for vk::ExportMetalIOSurfaceInfoEXT<'a>
23875{
23876}
23877
23878#[cfg(feature = "platform-metal")]
23879impl<'a> crate::construction::sealed::ChainNode for vk::ImportMetalIOSurfaceInfoEXT<'a> {
23880	const S_TYPE: vk::StructureType = vk::StructureType::IMPORT_METAL_IO_SURFACE_INFO_EXT;
23881
23882	fn s_type(&self) -> vk::StructureType {
23883		self.s_type
23884	}
23885
23886	fn p_next(&self) -> *const std::ffi::c_void {
23887		self.p_next
23888	}
23889
23890	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23891		self.p_next = p_next.cast_const();
23892	}
23893
23894	fn address(&mut self) -> *mut std::ffi::c_void {
23895		std::ptr::from_mut(self).cast()
23896	}
23897}
23898
23899#[cfg(feature = "platform-metal")]
23900impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>> for vk::ImportMetalIOSurfaceInfoEXT<'a> {}
23901
23902#[cfg(feature = "platform-metal")]
23903impl<'a> crate::construction::sealed::ChainNode for vk::ExportMetalSharedEventInfoEXT<'a> {
23904	const S_TYPE: vk::StructureType = vk::StructureType::EXPORT_METAL_SHARED_EVENT_INFO_EXT;
23905
23906	fn s_type(&self) -> vk::StructureType {
23907		self.s_type
23908	}
23909
23910	fn p_next(&self) -> *const std::ffi::c_void {
23911		self.p_next
23912	}
23913
23914	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23915		self.p_next = p_next.cast_const();
23916	}
23917
23918	fn address(&mut self) -> *mut std::ffi::c_void {
23919		std::ptr::from_mut(self).cast()
23920	}
23921}
23922
23923#[cfg(feature = "platform-metal")]
23924impl<'a, 'root> crate::Extends<vk::ExportMetalObjectsInfoEXT<'root>>
23925	for vk::ExportMetalSharedEventInfoEXT<'a>
23926{
23927}
23928
23929#[cfg(feature = "platform-metal")]
23930impl<'a> crate::construction::sealed::ChainNode for vk::ImportMetalSharedEventInfoEXT<'a> {
23931	const S_TYPE: vk::StructureType = vk::StructureType::IMPORT_METAL_SHARED_EVENT_INFO_EXT;
23932
23933	fn s_type(&self) -> vk::StructureType {
23934		self.s_type
23935	}
23936
23937	fn p_next(&self) -> *const std::ffi::c_void {
23938		self.p_next
23939	}
23940
23941	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23942		self.p_next = p_next.cast_const();
23943	}
23944
23945	fn address(&mut self) -> *mut std::ffi::c_void {
23946		std::ptr::from_mut(self).cast()
23947	}
23948}
23949
23950#[cfg(feature = "platform-metal")]
23951impl<'a, 'root> crate::Extends<vk::SemaphoreCreateInfo<'root>>
23952	for vk::ImportMetalSharedEventInfoEXT<'a>
23953{
23954}
23955
23956#[cfg(feature = "platform-metal")]
23957impl<'a, 'root> crate::Extends<vk::EventCreateInfo<'root>>
23958	for vk::ImportMetalSharedEventInfoEXT<'a>
23959{
23960}
23961
23962impl<'a> crate::construction::sealed::ChainNode
23963	for vk::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT<'a>
23964{
23965	const S_TYPE: vk::StructureType =
23966		vk::StructureType::PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT;
23967
23968	fn s_type(&self) -> vk::StructureType {
23969		self.s_type
23970	}
23971
23972	fn p_next(&self) -> *const std::ffi::c_void {
23973		self.p_next.cast_const()
23974	}
23975
23976	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
23977		self.p_next = p_next;
23978	}
23979
23980	fn address(&mut self) -> *mut std::ffi::c_void {
23981		std::ptr::from_mut(self).cast()
23982	}
23983}
23984
23985impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
23986	for vk::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT<'a>
23987{
23988}
23989
23990impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
23991	for vk::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT<'a>
23992{
23993}
23994
23995impl<'a> crate::construction::sealed::ChainNode
23996	for vk::PhysicalDevicePipelineRobustnessFeatures<'a>
23997{
23998	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES;
23999
24000	fn s_type(&self) -> vk::StructureType {
24001		self.s_type
24002	}
24003
24004	fn p_next(&self) -> *const std::ffi::c_void {
24005		self.p_next.cast_const()
24006	}
24007
24008	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24009		self.p_next = p_next;
24010	}
24011
24012	fn address(&mut self) -> *mut std::ffi::c_void {
24013		std::ptr::from_mut(self).cast()
24014	}
24015}
24016
24017impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
24018	for vk::PhysicalDevicePipelineRobustnessFeatures<'a>
24019{
24020}
24021
24022impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
24023	for vk::PhysicalDevicePipelineRobustnessFeatures<'a>
24024{
24025}
24026
24027impl<'a> crate::construction::sealed::ChainNode for vk::PipelineRobustnessCreateInfo<'a> {
24028	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_ROBUSTNESS_CREATE_INFO;
24029
24030	fn s_type(&self) -> vk::StructureType {
24031		self.s_type
24032	}
24033
24034	fn p_next(&self) -> *const std::ffi::c_void {
24035		self.p_next
24036	}
24037
24038	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24039		self.p_next = p_next.cast_const();
24040	}
24041
24042	fn address(&mut self) -> *mut std::ffi::c_void {
24043		std::ptr::from_mut(self).cast()
24044	}
24045}
24046
24047impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
24048	for vk::PipelineRobustnessCreateInfo<'a>
24049{
24050}
24051
24052impl<'a, 'root> crate::Extends<vk::ComputePipelineCreateInfo<'root>>
24053	for vk::PipelineRobustnessCreateInfo<'a>
24054{
24055}
24056
24057impl<'a, 'root> crate::Extends<vk::PipelineShaderStageCreateInfo<'root>>
24058	for vk::PipelineRobustnessCreateInfo<'a>
24059{
24060}
24061
24062impl<'a, 'root> crate::Extends<vk::RayTracingPipelineCreateInfoKHR<'root>>
24063	for vk::PipelineRobustnessCreateInfo<'a>
24064{
24065}
24066
24067impl<'a> crate::construction::sealed::ChainNode
24068	for vk::PhysicalDevicePipelineRobustnessProperties<'a>
24069{
24070	const S_TYPE: vk::StructureType =
24071		vk::StructureType::PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES;
24072
24073	fn s_type(&self) -> vk::StructureType {
24074		self.s_type
24075	}
24076
24077	fn p_next(&self) -> *const std::ffi::c_void {
24078		self.p_next.cast_const()
24079	}
24080
24081	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24082		self.p_next = p_next;
24083	}
24084
24085	fn address(&mut self) -> *mut std::ffi::c_void {
24086		std::ptr::from_mut(self).cast()
24087	}
24088}
24089
24090impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
24091	for vk::PhysicalDevicePipelineRobustnessProperties<'a>
24092{
24093}
24094
24095impl<'a> crate::construction::sealed::ChainNode for vk::ImageViewSampleWeightCreateInfoQCOM<'a> {
24096	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM;
24097
24098	fn s_type(&self) -> vk::StructureType {
24099		self.s_type
24100	}
24101
24102	fn p_next(&self) -> *const std::ffi::c_void {
24103		self.p_next
24104	}
24105
24106	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24107		self.p_next = p_next.cast_const();
24108	}
24109
24110	fn address(&mut self) -> *mut std::ffi::c_void {
24111		std::ptr::from_mut(self).cast()
24112	}
24113}
24114
24115impl<'a, 'root> crate::Extends<vk::ImageViewCreateInfo<'root>>
24116	for vk::ImageViewSampleWeightCreateInfoQCOM<'a>
24117{
24118}
24119
24120impl<'a> crate::construction::sealed::ChainNode
24121	for vk::PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM<'a>
24122{
24123	const S_TYPE: vk::StructureType =
24124		vk::StructureType::PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_FEATURES_QCOM;
24125
24126	fn s_type(&self) -> vk::StructureType {
24127		self.s_type
24128	}
24129
24130	fn p_next(&self) -> *const std::ffi::c_void {
24131		self.p_next.cast_const()
24132	}
24133
24134	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24135		self.p_next = p_next;
24136	}
24137
24138	fn address(&mut self) -> *mut std::ffi::c_void {
24139		std::ptr::from_mut(self).cast()
24140	}
24141}
24142
24143impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
24144	for vk::PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM<'a>
24145{
24146}
24147
24148impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
24149	for vk::PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM<'a>
24150{
24151}
24152
24153impl<'a> crate::construction::sealed::ChainNode
24154	for vk::PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM<'a>
24155{
24156	const S_TYPE: vk::StructureType =
24157		vk::StructureType::PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_PROPERTIES_QCOM;
24158
24159	fn s_type(&self) -> vk::StructureType {
24160		self.s_type
24161	}
24162
24163	fn p_next(&self) -> *const std::ffi::c_void {
24164		self.p_next.cast_const()
24165	}
24166
24167	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24168		self.p_next = p_next;
24169	}
24170
24171	fn address(&mut self) -> *mut std::ffi::c_void {
24172		std::ptr::from_mut(self).cast()
24173	}
24174}
24175
24176impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
24177	for vk::PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM<'a>
24178{
24179}
24180
24181impl<'a> crate::construction::sealed::ChainNode
24182	for vk::PhysicalDeviceImageProcessingFeaturesQCOM<'a>
24183{
24184	const S_TYPE: vk::StructureType =
24185		vk::StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM;
24186
24187	fn s_type(&self) -> vk::StructureType {
24188		self.s_type
24189	}
24190
24191	fn p_next(&self) -> *const std::ffi::c_void {
24192		self.p_next.cast_const()
24193	}
24194
24195	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24196		self.p_next = p_next;
24197	}
24198
24199	fn address(&mut self) -> *mut std::ffi::c_void {
24200		std::ptr::from_mut(self).cast()
24201	}
24202}
24203
24204impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
24205	for vk::PhysicalDeviceImageProcessingFeaturesQCOM<'a>
24206{
24207}
24208
24209impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
24210	for vk::PhysicalDeviceImageProcessingFeaturesQCOM<'a>
24211{
24212}
24213
24214impl<'a> crate::construction::sealed::ChainNode
24215	for vk::PhysicalDeviceImageProcessingPropertiesQCOM<'a>
24216{
24217	const S_TYPE: vk::StructureType =
24218		vk::StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM;
24219
24220	fn s_type(&self) -> vk::StructureType {
24221		self.s_type
24222	}
24223
24224	fn p_next(&self) -> *const std::ffi::c_void {
24225		self.p_next.cast_const()
24226	}
24227
24228	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24229		self.p_next = p_next;
24230	}
24231
24232	fn address(&mut self) -> *mut std::ffi::c_void {
24233		std::ptr::from_mut(self).cast()
24234	}
24235}
24236
24237impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
24238	for vk::PhysicalDeviceImageProcessingPropertiesQCOM<'a>
24239{
24240}
24241
24242impl<'a> crate::construction::sealed::ChainNode
24243	for vk::PhysicalDeviceTilePropertiesFeaturesQCOM<'a>
24244{
24245	const S_TYPE: vk::StructureType =
24246		vk::StructureType::PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM;
24247
24248	fn s_type(&self) -> vk::StructureType {
24249		self.s_type
24250	}
24251
24252	fn p_next(&self) -> *const std::ffi::c_void {
24253		self.p_next.cast_const()
24254	}
24255
24256	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24257		self.p_next = p_next;
24258	}
24259
24260	fn address(&mut self) -> *mut std::ffi::c_void {
24261		std::ptr::from_mut(self).cast()
24262	}
24263}
24264
24265impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
24266	for vk::PhysicalDeviceTilePropertiesFeaturesQCOM<'a>
24267{
24268}
24269
24270impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
24271	for vk::PhysicalDeviceTilePropertiesFeaturesQCOM<'a>
24272{
24273}
24274
24275impl<'a> crate::construction::sealed::ChainNode for vk::TilePropertiesQCOM<'a> {
24276	const S_TYPE: vk::StructureType = vk::StructureType::TILE_PROPERTIES_QCOM;
24277
24278	fn s_type(&self) -> vk::StructureType {
24279		self.s_type
24280	}
24281
24282	fn p_next(&self) -> *const std::ffi::c_void {
24283		self.p_next.cast_const()
24284	}
24285
24286	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24287		self.p_next = p_next;
24288	}
24289
24290	fn address(&mut self) -> *mut std::ffi::c_void {
24291		std::ptr::from_mut(self).cast()
24292	}
24293}
24294
24295impl<'a> crate::construction::sealed::ChainNode for vk::TileMemoryBindInfoQCOM<'a> {
24296	const S_TYPE: vk::StructureType = vk::StructureType::TILE_MEMORY_BIND_INFO_QCOM;
24297
24298	fn s_type(&self) -> vk::StructureType {
24299		self.s_type
24300	}
24301
24302	fn p_next(&self) -> *const std::ffi::c_void {
24303		self.p_next
24304	}
24305
24306	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24307		self.p_next = p_next.cast_const();
24308	}
24309
24310	fn address(&mut self) -> *mut std::ffi::c_void {
24311		std::ptr::from_mut(self).cast()
24312	}
24313}
24314
24315impl<'a, 'root> crate::Extends<vk::CommandBufferInheritanceInfo<'root>>
24316	for vk::TileMemoryBindInfoQCOM<'a>
24317{
24318}
24319
24320impl<'a> crate::construction::sealed::ChainNode
24321	for vk::PhysicalDeviceAmigoProfilingFeaturesSEC<'a>
24322{
24323	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC;
24324
24325	fn s_type(&self) -> vk::StructureType {
24326		self.s_type
24327	}
24328
24329	fn p_next(&self) -> *const std::ffi::c_void {
24330		self.p_next.cast_const()
24331	}
24332
24333	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24334		self.p_next = p_next;
24335	}
24336
24337	fn address(&mut self) -> *mut std::ffi::c_void {
24338		std::ptr::from_mut(self).cast()
24339	}
24340}
24341
24342impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
24343	for vk::PhysicalDeviceAmigoProfilingFeaturesSEC<'a>
24344{
24345}
24346
24347impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
24348	for vk::PhysicalDeviceAmigoProfilingFeaturesSEC<'a>
24349{
24350}
24351
24352impl<'a> crate::construction::sealed::ChainNode for vk::AmigoProfilingSubmitInfoSEC<'a> {
24353	const S_TYPE: vk::StructureType = vk::StructureType::AMIGO_PROFILING_SUBMIT_INFO_SEC;
24354
24355	fn s_type(&self) -> vk::StructureType {
24356		self.s_type
24357	}
24358
24359	fn p_next(&self) -> *const std::ffi::c_void {
24360		self.p_next
24361	}
24362
24363	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24364		self.p_next = p_next.cast_const();
24365	}
24366
24367	fn address(&mut self) -> *mut std::ffi::c_void {
24368		std::ptr::from_mut(self).cast()
24369	}
24370}
24371
24372impl<'a, 'root> crate::Extends<vk::SubmitInfo<'root>> for vk::AmigoProfilingSubmitInfoSEC<'a> {}
24373
24374impl<'a> crate::construction::sealed::ChainNode
24375	for vk::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT<'a>
24376{
24377	const S_TYPE: vk::StructureType =
24378		vk::StructureType::PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT;
24379
24380	fn s_type(&self) -> vk::StructureType {
24381		self.s_type
24382	}
24383
24384	fn p_next(&self) -> *const std::ffi::c_void {
24385		self.p_next.cast_const()
24386	}
24387
24388	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24389		self.p_next = p_next;
24390	}
24391
24392	fn address(&mut self) -> *mut std::ffi::c_void {
24393		std::ptr::from_mut(self).cast()
24394	}
24395}
24396
24397impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
24398	for vk::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT<'a>
24399{
24400}
24401
24402impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
24403	for vk::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT<'a>
24404{
24405}
24406
24407impl<'a> crate::construction::sealed::ChainNode for vk::AttachmentFeedbackLoopInfoEXT<'a> {
24408	const S_TYPE: vk::StructureType = vk::StructureType::ATTACHMENT_FEEDBACK_LOOP_INFO_EXT;
24409
24410	fn s_type(&self) -> vk::StructureType {
24411		self.s_type
24412	}
24413
24414	fn p_next(&self) -> *const std::ffi::c_void {
24415		self.p_next
24416	}
24417
24418	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24419		self.p_next = p_next.cast_const();
24420	}
24421
24422	fn address(&mut self) -> *mut std::ffi::c_void {
24423		std::ptr::from_mut(self).cast()
24424	}
24425}
24426
24427impl<'a, 'root> crate::Extends<vk::RenderingAttachmentInfo<'root>>
24428	for vk::AttachmentFeedbackLoopInfoEXT<'a>
24429{
24430}
24431
24432impl<'a> crate::construction::sealed::ChainNode
24433	for vk::PhysicalDeviceAddressBindingReportFeaturesEXT<'a>
24434{
24435	const S_TYPE: vk::StructureType =
24436		vk::StructureType::PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT;
24437
24438	fn s_type(&self) -> vk::StructureType {
24439		self.s_type
24440	}
24441
24442	fn p_next(&self) -> *const std::ffi::c_void {
24443		self.p_next.cast_const()
24444	}
24445
24446	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24447		self.p_next = p_next;
24448	}
24449
24450	fn address(&mut self) -> *mut std::ffi::c_void {
24451		std::ptr::from_mut(self).cast()
24452	}
24453}
24454
24455impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
24456	for vk::PhysicalDeviceAddressBindingReportFeaturesEXT<'a>
24457{
24458}
24459
24460impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
24461	for vk::PhysicalDeviceAddressBindingReportFeaturesEXT<'a>
24462{
24463}
24464
24465impl<'a> crate::construction::sealed::ChainNode for vk::RenderingAttachmentFlagsInfoKHR<'a> {
24466	const S_TYPE: vk::StructureType = vk::StructureType::RENDERING_ATTACHMENT_FLAGS_INFO_KHR;
24467
24468	fn s_type(&self) -> vk::StructureType {
24469		self.s_type
24470	}
24471
24472	fn p_next(&self) -> *const std::ffi::c_void {
24473		self.p_next
24474	}
24475
24476	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24477		self.p_next = p_next.cast_const();
24478	}
24479
24480	fn address(&mut self) -> *mut std::ffi::c_void {
24481		std::ptr::from_mut(self).cast()
24482	}
24483}
24484
24485impl<'a, 'root> crate::Extends<vk::RenderingAttachmentInfo<'root>>
24486	for vk::RenderingAttachmentFlagsInfoKHR<'a>
24487{
24488}
24489
24490impl<'a> crate::construction::sealed::ChainNode for vk::ResolveImageModeInfoKHR<'a> {
24491	const S_TYPE: vk::StructureType = vk::StructureType::RESOLVE_IMAGE_MODE_INFO_KHR;
24492
24493	fn s_type(&self) -> vk::StructureType {
24494		self.s_type
24495	}
24496
24497	fn p_next(&self) -> *const std::ffi::c_void {
24498		self.p_next
24499	}
24500
24501	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24502		self.p_next = p_next.cast_const();
24503	}
24504
24505	fn address(&mut self) -> *mut std::ffi::c_void {
24506		std::ptr::from_mut(self).cast()
24507	}
24508}
24509
24510impl<'a, 'root> crate::Extends<vk::ResolveImageInfo2<'root>> for vk::ResolveImageModeInfoKHR<'a> {}
24511
24512impl<'a> crate::construction::sealed::ChainNode for vk::DeviceAddressBindingCallbackDataEXT<'a> {
24513	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT;
24514
24515	fn s_type(&self) -> vk::StructureType {
24516		self.s_type
24517	}
24518
24519	fn p_next(&self) -> *const std::ffi::c_void {
24520		self.p_next.cast_const()
24521	}
24522
24523	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24524		self.p_next = p_next;
24525	}
24526
24527	fn address(&mut self) -> *mut std::ffi::c_void {
24528		std::ptr::from_mut(self).cast()
24529	}
24530}
24531
24532impl<'a, 'root> crate::Extends<vk::DebugUtilsMessengerCallbackDataEXT<'root>>
24533	for vk::DeviceAddressBindingCallbackDataEXT<'a>
24534{
24535}
24536
24537impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceOpticalFlowFeaturesNV<'a> {
24538	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV;
24539
24540	fn s_type(&self) -> vk::StructureType {
24541		self.s_type
24542	}
24543
24544	fn p_next(&self) -> *const std::ffi::c_void {
24545		self.p_next.cast_const()
24546	}
24547
24548	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24549		self.p_next = p_next;
24550	}
24551
24552	fn address(&mut self) -> *mut std::ffi::c_void {
24553		std::ptr::from_mut(self).cast()
24554	}
24555}
24556
24557impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
24558	for vk::PhysicalDeviceOpticalFlowFeaturesNV<'a>
24559{
24560}
24561
24562impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
24563	for vk::PhysicalDeviceOpticalFlowFeaturesNV<'a>
24564{
24565}
24566
24567impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceOpticalFlowPropertiesNV<'a> {
24568	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV;
24569
24570	fn s_type(&self) -> vk::StructureType {
24571		self.s_type
24572	}
24573
24574	fn p_next(&self) -> *const std::ffi::c_void {
24575		self.p_next.cast_const()
24576	}
24577
24578	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24579		self.p_next = p_next;
24580	}
24581
24582	fn address(&mut self) -> *mut std::ffi::c_void {
24583		std::ptr::from_mut(self).cast()
24584	}
24585}
24586
24587impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
24588	for vk::PhysicalDeviceOpticalFlowPropertiesNV<'a>
24589{
24590}
24591
24592impl<'a> crate::construction::sealed::ChainNode for vk::OpticalFlowImageFormatInfoNV<'a> {
24593	const S_TYPE: vk::StructureType = vk::StructureType::OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV;
24594
24595	fn s_type(&self) -> vk::StructureType {
24596		self.s_type
24597	}
24598
24599	fn p_next(&self) -> *const std::ffi::c_void {
24600		self.p_next
24601	}
24602
24603	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24604		self.p_next = p_next.cast_const();
24605	}
24606
24607	fn address(&mut self) -> *mut std::ffi::c_void {
24608		std::ptr::from_mut(self).cast()
24609	}
24610}
24611
24612impl<'a, 'root> crate::Extends<vk::PhysicalDeviceImageFormatInfo2<'root>>
24613	for vk::OpticalFlowImageFormatInfoNV<'a>
24614{
24615}
24616
24617impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>>
24618	for vk::OpticalFlowImageFormatInfoNV<'a>
24619{
24620}
24621
24622impl<'a> crate::construction::sealed::ChainNode for vk::OpticalFlowImageFormatPropertiesNV<'a> {
24623	const S_TYPE: vk::StructureType = vk::StructureType::OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV;
24624
24625	fn s_type(&self) -> vk::StructureType {
24626		self.s_type
24627	}
24628
24629	fn p_next(&self) -> *const std::ffi::c_void {
24630		self.p_next.cast_const()
24631	}
24632
24633	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24634		self.p_next = p_next;
24635	}
24636
24637	fn address(&mut self) -> *mut std::ffi::c_void {
24638		std::ptr::from_mut(self).cast()
24639	}
24640}
24641
24642impl<'a> crate::construction::sealed::ChainNode for vk::OpticalFlowSessionCreateInfoNV<'a> {
24643	const S_TYPE: vk::StructureType = vk::StructureType::OPTICAL_FLOW_SESSION_CREATE_INFO_NV;
24644
24645	fn s_type(&self) -> vk::StructureType {
24646		self.s_type
24647	}
24648
24649	fn p_next(&self) -> *const std::ffi::c_void {
24650		self.p_next.cast_const()
24651	}
24652
24653	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24654		self.p_next = p_next;
24655	}
24656
24657	fn address(&mut self) -> *mut std::ffi::c_void {
24658		std::ptr::from_mut(self).cast()
24659	}
24660}
24661
24662impl<'a> crate::construction::sealed::ChainNode
24663	for vk::OpticalFlowSessionCreatePrivateDataInfoNV<'a>
24664{
24665	const S_TYPE: vk::StructureType =
24666		vk::StructureType::OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV;
24667
24668	fn s_type(&self) -> vk::StructureType {
24669		self.s_type
24670	}
24671
24672	fn p_next(&self) -> *const std::ffi::c_void {
24673		self.p_next.cast_const()
24674	}
24675
24676	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24677		self.p_next = p_next;
24678	}
24679
24680	fn address(&mut self) -> *mut std::ffi::c_void {
24681		std::ptr::from_mut(self).cast()
24682	}
24683}
24684
24685impl<'a, 'root> crate::Extends<vk::OpticalFlowSessionCreateInfoNV<'root>>
24686	for vk::OpticalFlowSessionCreatePrivateDataInfoNV<'a>
24687{
24688}
24689
24690impl<'a> crate::construction::sealed::ChainNode for vk::OpticalFlowExecuteInfoNV<'a> {
24691	const S_TYPE: vk::StructureType = vk::StructureType::OPTICAL_FLOW_EXECUTE_INFO_NV;
24692
24693	fn s_type(&self) -> vk::StructureType {
24694		self.s_type
24695	}
24696
24697	fn p_next(&self) -> *const std::ffi::c_void {
24698		self.p_next.cast_const()
24699	}
24700
24701	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24702		self.p_next = p_next;
24703	}
24704
24705	fn address(&mut self) -> *mut std::ffi::c_void {
24706		std::ptr::from_mut(self).cast()
24707	}
24708}
24709
24710impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceFaultFeaturesEXT<'a> {
24711	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_FAULT_FEATURES_EXT;
24712
24713	fn s_type(&self) -> vk::StructureType {
24714		self.s_type
24715	}
24716
24717	fn p_next(&self) -> *const std::ffi::c_void {
24718		self.p_next.cast_const()
24719	}
24720
24721	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24722		self.p_next = p_next;
24723	}
24724
24725	fn address(&mut self) -> *mut std::ffi::c_void {
24726		std::ptr::from_mut(self).cast()
24727	}
24728}
24729
24730impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
24731	for vk::PhysicalDeviceFaultFeaturesEXT<'a>
24732{
24733}
24734
24735impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
24736	for vk::PhysicalDeviceFaultFeaturesEXT<'a>
24737{
24738}
24739
24740impl<'a> crate::construction::sealed::ChainNode for vk::DeviceFaultInfoKHR<'a> {
24741	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_FAULT_INFO_KHR;
24742
24743	fn s_type(&self) -> vk::StructureType {
24744		self.s_type
24745	}
24746
24747	fn p_next(&self) -> *const std::ffi::c_void {
24748		self.p_next.cast_const()
24749	}
24750
24751	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24752		self.p_next = p_next;
24753	}
24754
24755	fn address(&mut self) -> *mut std::ffi::c_void {
24756		std::ptr::from_mut(self).cast()
24757	}
24758}
24759
24760impl<'a> crate::construction::sealed::ChainNode for vk::DeviceFaultDebugInfoKHR<'a> {
24761	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_FAULT_DEBUG_INFO_KHR;
24762
24763	fn s_type(&self) -> vk::StructureType {
24764		self.s_type
24765	}
24766
24767	fn p_next(&self) -> *const std::ffi::c_void {
24768		self.p_next.cast_const()
24769	}
24770
24771	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24772		self.p_next = p_next;
24773	}
24774
24775	fn address(&mut self) -> *mut std::ffi::c_void {
24776		std::ptr::from_mut(self).cast()
24777	}
24778}
24779
24780impl<'a> crate::construction::sealed::ChainNode for vk::DeviceFaultCountsEXT<'a> {
24781	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_FAULT_COUNTS_EXT;
24782
24783	fn s_type(&self) -> vk::StructureType {
24784		self.s_type
24785	}
24786
24787	fn p_next(&self) -> *const std::ffi::c_void {
24788		self.p_next.cast_const()
24789	}
24790
24791	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24792		self.p_next = p_next;
24793	}
24794
24795	fn address(&mut self) -> *mut std::ffi::c_void {
24796		std::ptr::from_mut(self).cast()
24797	}
24798}
24799
24800impl<'a> crate::construction::sealed::ChainNode for vk::DeviceFaultInfoEXT<'a> {
24801	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_FAULT_INFO_EXT;
24802
24803	fn s_type(&self) -> vk::StructureType {
24804		self.s_type
24805	}
24806
24807	fn p_next(&self) -> *const std::ffi::c_void {
24808		self.p_next.cast_const()
24809	}
24810
24811	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24812		self.p_next = p_next;
24813	}
24814
24815	fn address(&mut self) -> *mut std::ffi::c_void {
24816		std::ptr::from_mut(self).cast()
24817	}
24818}
24819
24820impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceFaultFeaturesKHR<'a> {
24821	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_FAULT_FEATURES_KHR;
24822
24823	fn s_type(&self) -> vk::StructureType {
24824		self.s_type
24825	}
24826
24827	fn p_next(&self) -> *const std::ffi::c_void {
24828		self.p_next.cast_const()
24829	}
24830
24831	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24832		self.p_next = p_next;
24833	}
24834
24835	fn address(&mut self) -> *mut std::ffi::c_void {
24836		std::ptr::from_mut(self).cast()
24837	}
24838}
24839
24840impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
24841	for vk::PhysicalDeviceFaultFeaturesKHR<'a>
24842{
24843}
24844
24845impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
24846	for vk::PhysicalDeviceFaultFeaturesKHR<'a>
24847{
24848}
24849
24850impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceFaultPropertiesKHR<'a> {
24851	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_FAULT_PROPERTIES_KHR;
24852
24853	fn s_type(&self) -> vk::StructureType {
24854		self.s_type
24855	}
24856
24857	fn p_next(&self) -> *const std::ffi::c_void {
24858		self.p_next.cast_const()
24859	}
24860
24861	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24862		self.p_next = p_next;
24863	}
24864
24865	fn address(&mut self) -> *mut std::ffi::c_void {
24866		std::ptr::from_mut(self).cast()
24867	}
24868}
24869
24870impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
24871	for vk::PhysicalDeviceFaultPropertiesKHR<'a>
24872{
24873}
24874
24875impl<'a> crate::construction::sealed::ChainNode
24876	for vk::PhysicalDevicePipelineLibraryGroupHandlesFeaturesKHR<'a>
24877{
24878	const S_TYPE: vk::StructureType =
24879		vk::StructureType::PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_KHR;
24880
24881	fn s_type(&self) -> vk::StructureType {
24882		self.s_type
24883	}
24884
24885	fn p_next(&self) -> *const std::ffi::c_void {
24886		self.p_next.cast_const()
24887	}
24888
24889	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24890		self.p_next = p_next;
24891	}
24892
24893	fn address(&mut self) -> *mut std::ffi::c_void {
24894		std::ptr::from_mut(self).cast()
24895	}
24896}
24897
24898impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
24899	for vk::PhysicalDevicePipelineLibraryGroupHandlesFeaturesKHR<'a>
24900{
24901}
24902
24903impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
24904	for vk::PhysicalDevicePipelineLibraryGroupHandlesFeaturesKHR<'a>
24905{
24906}
24907
24908impl<'a> crate::construction::sealed::ChainNode for vk::DepthBiasInfoEXT<'a> {
24909	const S_TYPE: vk::StructureType = vk::StructureType::DEPTH_BIAS_INFO_EXT;
24910
24911	fn s_type(&self) -> vk::StructureType {
24912		self.s_type
24913	}
24914
24915	fn p_next(&self) -> *const std::ffi::c_void {
24916		self.p_next
24917	}
24918
24919	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24920		self.p_next = p_next.cast_const();
24921	}
24922
24923	fn address(&mut self) -> *mut std::ffi::c_void {
24924		std::ptr::from_mut(self).cast()
24925	}
24926}
24927
24928impl<'a> crate::construction::sealed::ChainNode for vk::DepthBiasRepresentationInfoEXT<'a> {
24929	const S_TYPE: vk::StructureType = vk::StructureType::DEPTH_BIAS_REPRESENTATION_INFO_EXT;
24930
24931	fn s_type(&self) -> vk::StructureType {
24932		self.s_type
24933	}
24934
24935	fn p_next(&self) -> *const std::ffi::c_void {
24936		self.p_next
24937	}
24938
24939	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24940		self.p_next = p_next.cast_const();
24941	}
24942
24943	fn address(&mut self) -> *mut std::ffi::c_void {
24944		std::ptr::from_mut(self).cast()
24945	}
24946}
24947
24948impl<'a, 'root> crate::Extends<vk::DepthBiasInfoEXT<'root>>
24949	for vk::DepthBiasRepresentationInfoEXT<'a>
24950{
24951}
24952
24953impl<'a, 'root> crate::Extends<vk::PipelineRasterizationStateCreateInfo<'root>>
24954	for vk::DepthBiasRepresentationInfoEXT<'a>
24955{
24956}
24957
24958impl<'a> crate::construction::sealed::ChainNode for vk::DecompressMemoryInfoEXT<'a> {
24959	const S_TYPE: vk::StructureType = vk::StructureType::DECOMPRESS_MEMORY_INFO_EXT;
24960
24961	fn s_type(&self) -> vk::StructureType {
24962		self.s_type
24963	}
24964
24965	fn p_next(&self) -> *const std::ffi::c_void {
24966		self.p_next
24967	}
24968
24969	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24970		self.p_next = p_next.cast_const();
24971	}
24972
24973	fn address(&mut self) -> *mut std::ffi::c_void {
24974		std::ptr::from_mut(self).cast()
24975	}
24976}
24977
24978impl<'a> crate::construction::sealed::ChainNode
24979	for vk::PhysicalDeviceShaderCoreBuiltinsPropertiesARM<'a>
24980{
24981	const S_TYPE: vk::StructureType =
24982		vk::StructureType::PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM;
24983
24984	fn s_type(&self) -> vk::StructureType {
24985		self.s_type
24986	}
24987
24988	fn p_next(&self) -> *const std::ffi::c_void {
24989		self.p_next.cast_const()
24990	}
24991
24992	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
24993		self.p_next = p_next;
24994	}
24995
24996	fn address(&mut self) -> *mut std::ffi::c_void {
24997		std::ptr::from_mut(self).cast()
24998	}
24999}
25000
25001impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
25002	for vk::PhysicalDeviceShaderCoreBuiltinsPropertiesARM<'a>
25003{
25004}
25005
25006impl<'a> crate::construction::sealed::ChainNode
25007	for vk::PhysicalDeviceShaderCoreBuiltinsFeaturesARM<'a>
25008{
25009	const S_TYPE: vk::StructureType =
25010		vk::StructureType::PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM;
25011
25012	fn s_type(&self) -> vk::StructureType {
25013		self.s_type
25014	}
25015
25016	fn p_next(&self) -> *const std::ffi::c_void {
25017		self.p_next.cast_const()
25018	}
25019
25020	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25021		self.p_next = p_next;
25022	}
25023
25024	fn address(&mut self) -> *mut std::ffi::c_void {
25025		std::ptr::from_mut(self).cast()
25026	}
25027}
25028
25029impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
25030	for vk::PhysicalDeviceShaderCoreBuiltinsFeaturesARM<'a>
25031{
25032}
25033
25034impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
25035	for vk::PhysicalDeviceShaderCoreBuiltinsFeaturesARM<'a>
25036{
25037}
25038
25039impl<'a> crate::construction::sealed::ChainNode for vk::FrameBoundaryEXT<'a> {
25040	const S_TYPE: vk::StructureType = vk::StructureType::FRAME_BOUNDARY_EXT;
25041
25042	fn s_type(&self) -> vk::StructureType {
25043		self.s_type
25044	}
25045
25046	fn p_next(&self) -> *const std::ffi::c_void {
25047		self.p_next
25048	}
25049
25050	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25051		self.p_next = p_next.cast_const();
25052	}
25053
25054	fn address(&mut self) -> *mut std::ffi::c_void {
25055		std::ptr::from_mut(self).cast()
25056	}
25057}
25058
25059impl<'a, 'root> crate::Extends<vk::SubmitInfo<'root>> for vk::FrameBoundaryEXT<'a> {}
25060
25061impl<'a, 'root> crate::Extends<vk::SubmitInfo2<'root>> for vk::FrameBoundaryEXT<'a> {}
25062
25063impl<'a, 'root> crate::Extends<vk::PresentInfoKHR<'root>> for vk::FrameBoundaryEXT<'a> {}
25064
25065impl<'a, 'root> crate::Extends<vk::BindSparseInfo<'root>> for vk::FrameBoundaryEXT<'a> {}
25066
25067impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceFrameBoundaryFeaturesEXT<'a> {
25068	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT;
25069
25070	fn s_type(&self) -> vk::StructureType {
25071		self.s_type
25072	}
25073
25074	fn p_next(&self) -> *const std::ffi::c_void {
25075		self.p_next.cast_const()
25076	}
25077
25078	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25079		self.p_next = p_next;
25080	}
25081
25082	fn address(&mut self) -> *mut std::ffi::c_void {
25083		std::ptr::from_mut(self).cast()
25084	}
25085}
25086
25087impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
25088	for vk::PhysicalDeviceFrameBoundaryFeaturesEXT<'a>
25089{
25090}
25091
25092impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
25093	for vk::PhysicalDeviceFrameBoundaryFeaturesEXT<'a>
25094{
25095}
25096
25097impl<'a> crate::construction::sealed::ChainNode
25098	for vk::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT<'a>
25099{
25100	const S_TYPE: vk::StructureType =
25101		vk::StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT;
25102
25103	fn s_type(&self) -> vk::StructureType {
25104		self.s_type
25105	}
25106
25107	fn p_next(&self) -> *const std::ffi::c_void {
25108		self.p_next.cast_const()
25109	}
25110
25111	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25112		self.p_next = p_next;
25113	}
25114
25115	fn address(&mut self) -> *mut std::ffi::c_void {
25116		std::ptr::from_mut(self).cast()
25117	}
25118}
25119
25120impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
25121	for vk::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT<'a>
25122{
25123}
25124
25125impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
25126	for vk::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT<'a>
25127{
25128}
25129
25130impl<'a> crate::construction::sealed::ChainNode
25131	for vk::PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR<'a>
25132{
25133	const S_TYPE: vk::StructureType =
25134		vk::StructureType::PHYSICAL_DEVICE_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR;
25135
25136	fn s_type(&self) -> vk::StructureType {
25137		self.s_type
25138	}
25139
25140	fn p_next(&self) -> *const std::ffi::c_void {
25141		self.p_next.cast_const()
25142	}
25143
25144	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25145		self.p_next = p_next;
25146	}
25147
25148	fn address(&mut self) -> *mut std::ffi::c_void {
25149		std::ptr::from_mut(self).cast()
25150	}
25151}
25152
25153impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
25154	for vk::PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR<'a>
25155{
25156}
25157
25158impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
25159	for vk::PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR<'a>
25160{
25161}
25162
25163impl<'a> crate::construction::sealed::ChainNode for vk::SurfacePresentModeKHR<'a> {
25164	const S_TYPE: vk::StructureType = vk::StructureType::SURFACE_PRESENT_MODE_KHR;
25165
25166	fn s_type(&self) -> vk::StructureType {
25167		self.s_type
25168	}
25169
25170	fn p_next(&self) -> *const std::ffi::c_void {
25171		self.p_next.cast_const()
25172	}
25173
25174	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25175		self.p_next = p_next;
25176	}
25177
25178	fn address(&mut self) -> *mut std::ffi::c_void {
25179		std::ptr::from_mut(self).cast()
25180	}
25181}
25182
25183impl<'a, 'root> crate::Extends<vk::PhysicalDeviceSurfaceInfo2KHR<'root>>
25184	for vk::SurfacePresentModeKHR<'a>
25185{
25186}
25187
25188impl<'a> crate::construction::sealed::ChainNode for vk::SurfacePresentScalingCapabilitiesKHR<'a> {
25189	const S_TYPE: vk::StructureType = vk::StructureType::SURFACE_PRESENT_SCALING_CAPABILITIES_KHR;
25190
25191	fn s_type(&self) -> vk::StructureType {
25192		self.s_type
25193	}
25194
25195	fn p_next(&self) -> *const std::ffi::c_void {
25196		self.p_next.cast_const()
25197	}
25198
25199	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25200		self.p_next = p_next;
25201	}
25202
25203	fn address(&mut self) -> *mut std::ffi::c_void {
25204		std::ptr::from_mut(self).cast()
25205	}
25206}
25207
25208impl<'a, 'root> crate::Extends<vk::SurfaceCapabilities2KHR<'root>>
25209	for vk::SurfacePresentScalingCapabilitiesKHR<'a>
25210{
25211}
25212
25213impl<'a> crate::construction::sealed::ChainNode for vk::SurfacePresentModeCompatibilityKHR<'a> {
25214	const S_TYPE: vk::StructureType = vk::StructureType::SURFACE_PRESENT_MODE_COMPATIBILITY_KHR;
25215
25216	fn s_type(&self) -> vk::StructureType {
25217		self.s_type
25218	}
25219
25220	fn p_next(&self) -> *const std::ffi::c_void {
25221		self.p_next.cast_const()
25222	}
25223
25224	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25225		self.p_next = p_next;
25226	}
25227
25228	fn address(&mut self) -> *mut std::ffi::c_void {
25229		std::ptr::from_mut(self).cast()
25230	}
25231}
25232
25233impl<'a, 'root> crate::Extends<vk::SurfaceCapabilities2KHR<'root>>
25234	for vk::SurfacePresentModeCompatibilityKHR<'a>
25235{
25236}
25237
25238impl<'a> crate::construction::sealed::ChainNode
25239	for vk::PhysicalDeviceSwapchainMaintenance1FeaturesKHR<'a>
25240{
25241	const S_TYPE: vk::StructureType =
25242		vk::StructureType::PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR;
25243
25244	fn s_type(&self) -> vk::StructureType {
25245		self.s_type
25246	}
25247
25248	fn p_next(&self) -> *const std::ffi::c_void {
25249		self.p_next.cast_const()
25250	}
25251
25252	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25253		self.p_next = p_next;
25254	}
25255
25256	fn address(&mut self) -> *mut std::ffi::c_void {
25257		std::ptr::from_mut(self).cast()
25258	}
25259}
25260
25261impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
25262	for vk::PhysicalDeviceSwapchainMaintenance1FeaturesKHR<'a>
25263{
25264}
25265
25266impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
25267	for vk::PhysicalDeviceSwapchainMaintenance1FeaturesKHR<'a>
25268{
25269}
25270
25271impl<'a> crate::construction::sealed::ChainNode for vk::SwapchainPresentFenceInfoKHR<'a> {
25272	const S_TYPE: vk::StructureType = vk::StructureType::SWAPCHAIN_PRESENT_FENCE_INFO_KHR;
25273
25274	fn s_type(&self) -> vk::StructureType {
25275		self.s_type
25276	}
25277
25278	fn p_next(&self) -> *const std::ffi::c_void {
25279		self.p_next
25280	}
25281
25282	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25283		self.p_next = p_next.cast_const();
25284	}
25285
25286	fn address(&mut self) -> *mut std::ffi::c_void {
25287		std::ptr::from_mut(self).cast()
25288	}
25289}
25290
25291impl<'a, 'root> crate::Extends<vk::PresentInfoKHR<'root>> for vk::SwapchainPresentFenceInfoKHR<'a> {}
25292
25293impl<'a> crate::construction::sealed::ChainNode for vk::SwapchainPresentModesCreateInfoKHR<'a> {
25294	const S_TYPE: vk::StructureType = vk::StructureType::SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR;
25295
25296	fn s_type(&self) -> vk::StructureType {
25297		self.s_type
25298	}
25299
25300	fn p_next(&self) -> *const std::ffi::c_void {
25301		self.p_next
25302	}
25303
25304	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25305		self.p_next = p_next.cast_const();
25306	}
25307
25308	fn address(&mut self) -> *mut std::ffi::c_void {
25309		std::ptr::from_mut(self).cast()
25310	}
25311}
25312
25313impl<'a, 'root> crate::Extends<vk::SwapchainCreateInfoKHR<'root>>
25314	for vk::SwapchainPresentModesCreateInfoKHR<'a>
25315{
25316}
25317
25318impl<'a> crate::construction::sealed::ChainNode for vk::SwapchainPresentModeInfoKHR<'a> {
25319	const S_TYPE: vk::StructureType = vk::StructureType::SWAPCHAIN_PRESENT_MODE_INFO_KHR;
25320
25321	fn s_type(&self) -> vk::StructureType {
25322		self.s_type
25323	}
25324
25325	fn p_next(&self) -> *const std::ffi::c_void {
25326		self.p_next
25327	}
25328
25329	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25330		self.p_next = p_next.cast_const();
25331	}
25332
25333	fn address(&mut self) -> *mut std::ffi::c_void {
25334		std::ptr::from_mut(self).cast()
25335	}
25336}
25337
25338impl<'a, 'root> crate::Extends<vk::PresentInfoKHR<'root>> for vk::SwapchainPresentModeInfoKHR<'a> {}
25339
25340impl<'a> crate::construction::sealed::ChainNode for vk::SwapchainPresentScalingCreateInfoKHR<'a> {
25341	const S_TYPE: vk::StructureType = vk::StructureType::SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR;
25342
25343	fn s_type(&self) -> vk::StructureType {
25344		self.s_type
25345	}
25346
25347	fn p_next(&self) -> *const std::ffi::c_void {
25348		self.p_next
25349	}
25350
25351	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25352		self.p_next = p_next.cast_const();
25353	}
25354
25355	fn address(&mut self) -> *mut std::ffi::c_void {
25356		std::ptr::from_mut(self).cast()
25357	}
25358}
25359
25360impl<'a, 'root> crate::Extends<vk::SwapchainCreateInfoKHR<'root>>
25361	for vk::SwapchainPresentScalingCreateInfoKHR<'a>
25362{
25363}
25364
25365impl<'a> crate::construction::sealed::ChainNode for vk::ReleaseSwapchainImagesInfoKHR<'a> {
25366	const S_TYPE: vk::StructureType = vk::StructureType::RELEASE_SWAPCHAIN_IMAGES_INFO_KHR;
25367
25368	fn s_type(&self) -> vk::StructureType {
25369		self.s_type
25370	}
25371
25372	fn p_next(&self) -> *const std::ffi::c_void {
25373		self.p_next
25374	}
25375
25376	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25377		self.p_next = p_next.cast_const();
25378	}
25379
25380	fn address(&mut self) -> *mut std::ffi::c_void {
25381		std::ptr::from_mut(self).cast()
25382	}
25383}
25384
25385impl<'a> crate::construction::sealed::ChainNode
25386	for vk::PhysicalDeviceDepthBiasControlFeaturesEXT<'a>
25387{
25388	const S_TYPE: vk::StructureType =
25389		vk::StructureType::PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT;
25390
25391	fn s_type(&self) -> vk::StructureType {
25392		self.s_type
25393	}
25394
25395	fn p_next(&self) -> *const std::ffi::c_void {
25396		self.p_next.cast_const()
25397	}
25398
25399	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25400		self.p_next = p_next;
25401	}
25402
25403	fn address(&mut self) -> *mut std::ffi::c_void {
25404		std::ptr::from_mut(self).cast()
25405	}
25406}
25407
25408impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
25409	for vk::PhysicalDeviceDepthBiasControlFeaturesEXT<'a>
25410{
25411}
25412
25413impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
25414	for vk::PhysicalDeviceDepthBiasControlFeaturesEXT<'a>
25415{
25416}
25417
25418impl<'a> crate::construction::sealed::ChainNode
25419	for vk::PhysicalDeviceRayTracingInvocationReorderFeaturesEXT<'a>
25420{
25421	const S_TYPE: vk::StructureType =
25422		vk::StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT;
25423
25424	fn s_type(&self) -> vk::StructureType {
25425		self.s_type
25426	}
25427
25428	fn p_next(&self) -> *const std::ffi::c_void {
25429		self.p_next.cast_const()
25430	}
25431
25432	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25433		self.p_next = p_next;
25434	}
25435
25436	fn address(&mut self) -> *mut std::ffi::c_void {
25437		std::ptr::from_mut(self).cast()
25438	}
25439}
25440
25441impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
25442	for vk::PhysicalDeviceRayTracingInvocationReorderFeaturesEXT<'a>
25443{
25444}
25445
25446impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
25447	for vk::PhysicalDeviceRayTracingInvocationReorderFeaturesEXT<'a>
25448{
25449}
25450
25451impl<'a> crate::construction::sealed::ChainNode
25452	for vk::PhysicalDeviceRayTracingInvocationReorderFeaturesNV<'a>
25453{
25454	const S_TYPE: vk::StructureType =
25455		vk::StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV;
25456
25457	fn s_type(&self) -> vk::StructureType {
25458		self.s_type
25459	}
25460
25461	fn p_next(&self) -> *const std::ffi::c_void {
25462		self.p_next.cast_const()
25463	}
25464
25465	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25466		self.p_next = p_next;
25467	}
25468
25469	fn address(&mut self) -> *mut std::ffi::c_void {
25470		std::ptr::from_mut(self).cast()
25471	}
25472}
25473
25474impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
25475	for vk::PhysicalDeviceRayTracingInvocationReorderFeaturesNV<'a>
25476{
25477}
25478
25479impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
25480	for vk::PhysicalDeviceRayTracingInvocationReorderFeaturesNV<'a>
25481{
25482}
25483
25484impl<'a> crate::construction::sealed::ChainNode
25485	for vk::PhysicalDeviceRayTracingInvocationReorderPropertiesEXT<'a>
25486{
25487	const S_TYPE: vk::StructureType =
25488		vk::StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT;
25489
25490	fn s_type(&self) -> vk::StructureType {
25491		self.s_type
25492	}
25493
25494	fn p_next(&self) -> *const std::ffi::c_void {
25495		self.p_next.cast_const()
25496	}
25497
25498	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25499		self.p_next = p_next;
25500	}
25501
25502	fn address(&mut self) -> *mut std::ffi::c_void {
25503		std::ptr::from_mut(self).cast()
25504	}
25505}
25506
25507impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
25508	for vk::PhysicalDeviceRayTracingInvocationReorderPropertiesEXT<'a>
25509{
25510}
25511
25512impl<'a> crate::construction::sealed::ChainNode
25513	for vk::PhysicalDeviceRayTracingInvocationReorderPropertiesNV<'a>
25514{
25515	const S_TYPE: vk::StructureType =
25516		vk::StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV;
25517
25518	fn s_type(&self) -> vk::StructureType {
25519		self.s_type
25520	}
25521
25522	fn p_next(&self) -> *const std::ffi::c_void {
25523		self.p_next.cast_const()
25524	}
25525
25526	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25527		self.p_next = p_next;
25528	}
25529
25530	fn address(&mut self) -> *mut std::ffi::c_void {
25531		std::ptr::from_mut(self).cast()
25532	}
25533}
25534
25535impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
25536	for vk::PhysicalDeviceRayTracingInvocationReorderPropertiesNV<'a>
25537{
25538}
25539
25540impl<'a> crate::construction::sealed::ChainNode
25541	for vk::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV<'a>
25542{
25543	const S_TYPE: vk::StructureType =
25544		vk::StructureType::PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV;
25545
25546	fn s_type(&self) -> vk::StructureType {
25547		self.s_type
25548	}
25549
25550	fn p_next(&self) -> *const std::ffi::c_void {
25551		self.p_next.cast_const()
25552	}
25553
25554	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25555		self.p_next = p_next;
25556	}
25557
25558	fn address(&mut self) -> *mut std::ffi::c_void {
25559		std::ptr::from_mut(self).cast()
25560	}
25561}
25562
25563impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
25564	for vk::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV<'a>
25565{
25566}
25567
25568impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
25569	for vk::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV<'a>
25570{
25571}
25572
25573impl<'a> crate::construction::sealed::ChainNode
25574	for vk::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV<'a>
25575{
25576	const S_TYPE: vk::StructureType =
25577		vk::StructureType::PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV;
25578
25579	fn s_type(&self) -> vk::StructureType {
25580		self.s_type
25581	}
25582
25583	fn p_next(&self) -> *const std::ffi::c_void {
25584		self.p_next.cast_const()
25585	}
25586
25587	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25588		self.p_next = p_next;
25589	}
25590
25591	fn address(&mut self) -> *mut std::ffi::c_void {
25592		std::ptr::from_mut(self).cast()
25593	}
25594}
25595
25596impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
25597	for vk::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV<'a>
25598{
25599}
25600
25601impl<'a> crate::construction::sealed::ChainNode for vk::DirectDriverLoadingInfoLUNARG<'a> {
25602	const S_TYPE: vk::StructureType = vk::StructureType::DIRECT_DRIVER_LOADING_INFO_LUNARG;
25603
25604	fn s_type(&self) -> vk::StructureType {
25605		self.s_type
25606	}
25607
25608	fn p_next(&self) -> *const std::ffi::c_void {
25609		self.p_next.cast_const()
25610	}
25611
25612	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25613		self.p_next = p_next;
25614	}
25615
25616	fn address(&mut self) -> *mut std::ffi::c_void {
25617		std::ptr::from_mut(self).cast()
25618	}
25619}
25620
25621impl<'a> crate::construction::sealed::ChainNode for vk::DirectDriverLoadingListLUNARG<'a> {
25622	const S_TYPE: vk::StructureType = vk::StructureType::DIRECT_DRIVER_LOADING_LIST_LUNARG;
25623
25624	fn s_type(&self) -> vk::StructureType {
25625		self.s_type
25626	}
25627
25628	fn p_next(&self) -> *const std::ffi::c_void {
25629		self.p_next
25630	}
25631
25632	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25633		self.p_next = p_next.cast_const();
25634	}
25635
25636	fn address(&mut self) -> *mut std::ffi::c_void {
25637		std::ptr::from_mut(self).cast()
25638	}
25639}
25640
25641impl<'a, 'root> crate::Extends<vk::InstanceCreateInfo<'root>>
25642	for vk::DirectDriverLoadingListLUNARG<'a>
25643{
25644}
25645
25646impl<'a> crate::construction::sealed::ChainNode
25647	for vk::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM<'a>
25648{
25649	const S_TYPE: vk::StructureType =
25650		vk::StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM;
25651
25652	fn s_type(&self) -> vk::StructureType {
25653		self.s_type
25654	}
25655
25656	fn p_next(&self) -> *const std::ffi::c_void {
25657		self.p_next.cast_const()
25658	}
25659
25660	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25661		self.p_next = p_next;
25662	}
25663
25664	fn address(&mut self) -> *mut std::ffi::c_void {
25665		std::ptr::from_mut(self).cast()
25666	}
25667}
25668
25669impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
25670	for vk::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM<'a>
25671{
25672}
25673
25674impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
25675	for vk::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM<'a>
25676{
25677}
25678
25679impl<'a> crate::construction::sealed::ChainNode
25680	for vk::PhysicalDeviceRayTracingPositionFetchFeaturesKHR<'a>
25681{
25682	const S_TYPE: vk::StructureType =
25683		vk::StructureType::PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR;
25684
25685	fn s_type(&self) -> vk::StructureType {
25686		self.s_type
25687	}
25688
25689	fn p_next(&self) -> *const std::ffi::c_void {
25690		self.p_next.cast_const()
25691	}
25692
25693	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25694		self.p_next = p_next;
25695	}
25696
25697	fn address(&mut self) -> *mut std::ffi::c_void {
25698		std::ptr::from_mut(self).cast()
25699	}
25700}
25701
25702impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
25703	for vk::PhysicalDeviceRayTracingPositionFetchFeaturesKHR<'a>
25704{
25705}
25706
25707impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
25708	for vk::PhysicalDeviceRayTracingPositionFetchFeaturesKHR<'a>
25709{
25710}
25711
25712impl<'a> crate::construction::sealed::ChainNode for vk::DeviceImageSubresourceInfo<'a> {
25713	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_IMAGE_SUBRESOURCE_INFO;
25714
25715	fn s_type(&self) -> vk::StructureType {
25716		self.s_type
25717	}
25718
25719	fn p_next(&self) -> *const std::ffi::c_void {
25720		self.p_next
25721	}
25722
25723	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25724		self.p_next = p_next.cast_const();
25725	}
25726
25727	fn address(&mut self) -> *mut std::ffi::c_void {
25728		std::ptr::from_mut(self).cast()
25729	}
25730}
25731
25732impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceShaderCorePropertiesARM<'a> {
25733	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM;
25734
25735	fn s_type(&self) -> vk::StructureType {
25736		self.s_type
25737	}
25738
25739	fn p_next(&self) -> *const std::ffi::c_void {
25740		self.p_next.cast_const()
25741	}
25742
25743	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25744		self.p_next = p_next;
25745	}
25746
25747	fn address(&mut self) -> *mut std::ffi::c_void {
25748		std::ptr::from_mut(self).cast()
25749	}
25750}
25751
25752impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
25753	for vk::PhysicalDeviceShaderCorePropertiesARM<'a>
25754{
25755}
25756
25757impl<'a> crate::construction::sealed::ChainNode
25758	for vk::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM<'a>
25759{
25760	const S_TYPE: vk::StructureType =
25761		vk::StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM;
25762
25763	fn s_type(&self) -> vk::StructureType {
25764		self.s_type
25765	}
25766
25767	fn p_next(&self) -> *const std::ffi::c_void {
25768		self.p_next.cast_const()
25769	}
25770
25771	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25772		self.p_next = p_next;
25773	}
25774
25775	fn address(&mut self) -> *mut std::ffi::c_void {
25776		std::ptr::from_mut(self).cast()
25777	}
25778}
25779
25780impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
25781	for vk::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM<'a>
25782{
25783}
25784
25785impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
25786	for vk::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM<'a>
25787{
25788}
25789
25790impl<'a> crate::construction::sealed::ChainNode
25791	for vk::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM<'a>
25792{
25793	const S_TYPE: vk::StructureType =
25794		vk::StructureType::MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM;
25795
25796	fn s_type(&self) -> vk::StructureType {
25797		self.s_type
25798	}
25799
25800	fn p_next(&self) -> *const std::ffi::c_void {
25801		self.p_next
25802	}
25803
25804	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25805		self.p_next = p_next.cast_const();
25806	}
25807
25808	fn address(&mut self) -> *mut std::ffi::c_void {
25809		std::ptr::from_mut(self).cast()
25810	}
25811}
25812
25813impl<'a, 'root> crate::Extends<vk::RenderPassBeginInfo<'root>>
25814	for vk::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM<'a>
25815{
25816}
25817
25818impl<'a, 'root> crate::Extends<vk::RenderingInfo<'root>>
25819	for vk::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM<'a>
25820{
25821}
25822
25823impl<'a> crate::construction::sealed::ChainNode for vk::QueryLowLatencySupportNV<'a> {
25824	const S_TYPE: vk::StructureType = vk::StructureType::QUERY_LOW_LATENCY_SUPPORT_NV;
25825
25826	fn s_type(&self) -> vk::StructureType {
25827		self.s_type
25828	}
25829
25830	fn p_next(&self) -> *const std::ffi::c_void {
25831		self.p_next
25832	}
25833
25834	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25835		self.p_next = p_next.cast_const();
25836	}
25837
25838	fn address(&mut self) -> *mut std::ffi::c_void {
25839		std::ptr::from_mut(self).cast()
25840	}
25841}
25842
25843impl<'a, 'root> crate::Extends<vk::SemaphoreCreateInfo<'root>>
25844	for vk::QueryLowLatencySupportNV<'a>
25845{
25846}
25847
25848impl<'a> crate::construction::sealed::ChainNode for vk::MemoryMapInfo<'a> {
25849	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_MAP_INFO;
25850
25851	fn s_type(&self) -> vk::StructureType {
25852		self.s_type
25853	}
25854
25855	fn p_next(&self) -> *const std::ffi::c_void {
25856		self.p_next
25857	}
25858
25859	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25860		self.p_next = p_next.cast_const();
25861	}
25862
25863	fn address(&mut self) -> *mut std::ffi::c_void {
25864		std::ptr::from_mut(self).cast()
25865	}
25866}
25867
25868impl<'a> crate::construction::sealed::ChainNode for vk::MemoryUnmapInfo<'a> {
25869	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_UNMAP_INFO;
25870
25871	fn s_type(&self) -> vk::StructureType {
25872		self.s_type
25873	}
25874
25875	fn p_next(&self) -> *const std::ffi::c_void {
25876		self.p_next
25877	}
25878
25879	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25880		self.p_next = p_next.cast_const();
25881	}
25882
25883	fn address(&mut self) -> *mut std::ffi::c_void {
25884		std::ptr::from_mut(self).cast()
25885	}
25886}
25887
25888impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceShaderObjectFeaturesEXT<'a> {
25889	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT;
25890
25891	fn s_type(&self) -> vk::StructureType {
25892		self.s_type
25893	}
25894
25895	fn p_next(&self) -> *const std::ffi::c_void {
25896		self.p_next.cast_const()
25897	}
25898
25899	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25900		self.p_next = p_next;
25901	}
25902
25903	fn address(&mut self) -> *mut std::ffi::c_void {
25904		std::ptr::from_mut(self).cast()
25905	}
25906}
25907
25908impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
25909	for vk::PhysicalDeviceShaderObjectFeaturesEXT<'a>
25910{
25911}
25912
25913impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
25914	for vk::PhysicalDeviceShaderObjectFeaturesEXT<'a>
25915{
25916}
25917
25918impl<'a> crate::construction::sealed::ChainNode
25919	for vk::PhysicalDeviceShaderObjectPropertiesEXT<'a>
25920{
25921	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT;
25922
25923	fn s_type(&self) -> vk::StructureType {
25924		self.s_type
25925	}
25926
25927	fn p_next(&self) -> *const std::ffi::c_void {
25928		self.p_next.cast_const()
25929	}
25930
25931	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25932		self.p_next = p_next;
25933	}
25934
25935	fn address(&mut self) -> *mut std::ffi::c_void {
25936		std::ptr::from_mut(self).cast()
25937	}
25938}
25939
25940impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
25941	for vk::PhysicalDeviceShaderObjectPropertiesEXT<'a>
25942{
25943}
25944
25945impl<'a> crate::construction::sealed::ChainNode for vk::ShaderCreateInfoEXT<'a> {
25946	const S_TYPE: vk::StructureType = vk::StructureType::SHADER_CREATE_INFO_EXT;
25947
25948	fn s_type(&self) -> vk::StructureType {
25949		self.s_type
25950	}
25951
25952	fn p_next(&self) -> *const std::ffi::c_void {
25953		self.p_next
25954	}
25955
25956	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25957		self.p_next = p_next.cast_const();
25958	}
25959
25960	fn address(&mut self) -> *mut std::ffi::c_void {
25961		std::ptr::from_mut(self).cast()
25962	}
25963}
25964
25965impl<'a> crate::construction::sealed::ChainNode
25966	for vk::PhysicalDeviceShaderTileImageFeaturesEXT<'a>
25967{
25968	const S_TYPE: vk::StructureType =
25969		vk::StructureType::PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT;
25970
25971	fn s_type(&self) -> vk::StructureType {
25972		self.s_type
25973	}
25974
25975	fn p_next(&self) -> *const std::ffi::c_void {
25976		self.p_next.cast_const()
25977	}
25978
25979	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
25980		self.p_next = p_next;
25981	}
25982
25983	fn address(&mut self) -> *mut std::ffi::c_void {
25984		std::ptr::from_mut(self).cast()
25985	}
25986}
25987
25988impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
25989	for vk::PhysicalDeviceShaderTileImageFeaturesEXT<'a>
25990{
25991}
25992
25993impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
25994	for vk::PhysicalDeviceShaderTileImageFeaturesEXT<'a>
25995{
25996}
25997
25998impl<'a> crate::construction::sealed::ChainNode
25999	for vk::PhysicalDeviceShaderTileImagePropertiesEXT<'a>
26000{
26001	const S_TYPE: vk::StructureType =
26002		vk::StructureType::PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT;
26003
26004	fn s_type(&self) -> vk::StructureType {
26005		self.s_type
26006	}
26007
26008	fn p_next(&self) -> *const std::ffi::c_void {
26009		self.p_next.cast_const()
26010	}
26011
26012	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26013		self.p_next = p_next;
26014	}
26015
26016	fn address(&mut self) -> *mut std::ffi::c_void {
26017		std::ptr::from_mut(self).cast()
26018	}
26019}
26020
26021impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
26022	for vk::PhysicalDeviceShaderTileImagePropertiesEXT<'a>
26023{
26024}
26025
26026#[cfg(feature = "platform-screen")]
26027impl<'a> crate::construction::sealed::ChainNode for vk::ImportScreenBufferInfoQNX<'a> {
26028	const S_TYPE: vk::StructureType = vk::StructureType::IMPORT_SCREEN_BUFFER_INFO_QNX;
26029
26030	fn s_type(&self) -> vk::StructureType {
26031		self.s_type
26032	}
26033
26034	fn p_next(&self) -> *const std::ffi::c_void {
26035		self.p_next
26036	}
26037
26038	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26039		self.p_next = p_next.cast_const();
26040	}
26041
26042	fn address(&mut self) -> *mut std::ffi::c_void {
26043		std::ptr::from_mut(self).cast()
26044	}
26045}
26046
26047#[cfg(feature = "platform-screen")]
26048impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>>
26049	for vk::ImportScreenBufferInfoQNX<'a>
26050{
26051}
26052
26053#[cfg(feature = "platform-screen")]
26054impl<'a> crate::construction::sealed::ChainNode for vk::ScreenBufferPropertiesQNX<'a> {
26055	const S_TYPE: vk::StructureType = vk::StructureType::SCREEN_BUFFER_PROPERTIES_QNX;
26056
26057	fn s_type(&self) -> vk::StructureType {
26058		self.s_type
26059	}
26060
26061	fn p_next(&self) -> *const std::ffi::c_void {
26062		self.p_next.cast_const()
26063	}
26064
26065	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26066		self.p_next = p_next;
26067	}
26068
26069	fn address(&mut self) -> *mut std::ffi::c_void {
26070		std::ptr::from_mut(self).cast()
26071	}
26072}
26073
26074#[cfg(feature = "platform-screen")]
26075impl<'a> crate::construction::sealed::ChainNode for vk::ScreenBufferFormatPropertiesQNX<'a> {
26076	const S_TYPE: vk::StructureType = vk::StructureType::SCREEN_BUFFER_FORMAT_PROPERTIES_QNX;
26077
26078	fn s_type(&self) -> vk::StructureType {
26079		self.s_type
26080	}
26081
26082	fn p_next(&self) -> *const std::ffi::c_void {
26083		self.p_next.cast_const()
26084	}
26085
26086	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26087		self.p_next = p_next;
26088	}
26089
26090	fn address(&mut self) -> *mut std::ffi::c_void {
26091		std::ptr::from_mut(self).cast()
26092	}
26093}
26094
26095#[cfg(feature = "platform-screen")]
26096impl<'a, 'root> crate::Extends<vk::ScreenBufferPropertiesQNX<'root>>
26097	for vk::ScreenBufferFormatPropertiesQNX<'a>
26098{
26099}
26100
26101#[cfg(feature = "platform-screen")]
26102impl<'a> crate::construction::sealed::ChainNode for vk::ExternalFormatQNX<'a> {
26103	const S_TYPE: vk::StructureType = vk::StructureType::EXTERNAL_FORMAT_QNX;
26104
26105	fn s_type(&self) -> vk::StructureType {
26106		self.s_type
26107	}
26108
26109	fn p_next(&self) -> *const std::ffi::c_void {
26110		self.p_next.cast_const()
26111	}
26112
26113	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26114		self.p_next = p_next;
26115	}
26116
26117	fn address(&mut self) -> *mut std::ffi::c_void {
26118		std::ptr::from_mut(self).cast()
26119	}
26120}
26121
26122#[cfg(feature = "platform-screen")]
26123impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>> for vk::ExternalFormatQNX<'a> {}
26124
26125#[cfg(feature = "platform-screen")]
26126impl<'a, 'root> crate::Extends<vk::SamplerYcbcrConversionCreateInfo<'root>>
26127	for vk::ExternalFormatQNX<'a>
26128{
26129}
26130
26131#[cfg(feature = "platform-screen")]
26132impl<'a> crate::construction::sealed::ChainNode
26133	for vk::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX<'a>
26134{
26135	const S_TYPE: vk::StructureType =
26136		vk::StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX;
26137
26138	fn s_type(&self) -> vk::StructureType {
26139		self.s_type
26140	}
26141
26142	fn p_next(&self) -> *const std::ffi::c_void {
26143		self.p_next.cast_const()
26144	}
26145
26146	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26147		self.p_next = p_next;
26148	}
26149
26150	fn address(&mut self) -> *mut std::ffi::c_void {
26151		std::ptr::from_mut(self).cast()
26152	}
26153}
26154
26155#[cfg(feature = "platform-screen")]
26156impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
26157	for vk::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX<'a>
26158{
26159}
26160
26161#[cfg(feature = "platform-screen")]
26162impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
26163	for vk::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX<'a>
26164{
26165}
26166
26167impl<'a> crate::construction::sealed::ChainNode
26168	for vk::PhysicalDeviceCooperativeMatrixFeaturesKHR<'a>
26169{
26170	const S_TYPE: vk::StructureType =
26171		vk::StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR;
26172
26173	fn s_type(&self) -> vk::StructureType {
26174		self.s_type
26175	}
26176
26177	fn p_next(&self) -> *const std::ffi::c_void {
26178		self.p_next.cast_const()
26179	}
26180
26181	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26182		self.p_next = p_next;
26183	}
26184
26185	fn address(&mut self) -> *mut std::ffi::c_void {
26186		std::ptr::from_mut(self).cast()
26187	}
26188}
26189
26190impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
26191	for vk::PhysicalDeviceCooperativeMatrixFeaturesKHR<'a>
26192{
26193}
26194
26195impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
26196	for vk::PhysicalDeviceCooperativeMatrixFeaturesKHR<'a>
26197{
26198}
26199
26200impl<'a> crate::construction::sealed::ChainNode for vk::CooperativeMatrixPropertiesKHR<'a> {
26201	const S_TYPE: vk::StructureType = vk::StructureType::COOPERATIVE_MATRIX_PROPERTIES_KHR;
26202
26203	fn s_type(&self) -> vk::StructureType {
26204		self.s_type
26205	}
26206
26207	fn p_next(&self) -> *const std::ffi::c_void {
26208		self.p_next.cast_const()
26209	}
26210
26211	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26212		self.p_next = p_next;
26213	}
26214
26215	fn address(&mut self) -> *mut std::ffi::c_void {
26216		std::ptr::from_mut(self).cast()
26217	}
26218}
26219
26220impl<'a> crate::construction::sealed::ChainNode
26221	for vk::PhysicalDeviceCooperativeMatrixInfo2EXT<'a>
26222{
26223	const S_TYPE: vk::StructureType =
26224		vk::StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_INFO_2_EXT;
26225
26226	fn s_type(&self) -> vk::StructureType {
26227		self.s_type
26228	}
26229
26230	fn p_next(&self) -> *const std::ffi::c_void {
26231		self.p_next
26232	}
26233
26234	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26235		self.p_next = p_next.cast_const();
26236	}
26237
26238	fn address(&mut self) -> *mut std::ffi::c_void {
26239		std::ptr::from_mut(self).cast()
26240	}
26241}
26242
26243impl<'a> crate::construction::sealed::ChainNode for vk::CooperativeMatrixProperties2EXT<'a> {
26244	const S_TYPE: vk::StructureType = vk::StructureType::COOPERATIVE_MATRIX_PROPERTIES_2_EXT;
26245
26246	fn s_type(&self) -> vk::StructureType {
26247		self.s_type
26248	}
26249
26250	fn p_next(&self) -> *const std::ffi::c_void {
26251		self.p_next.cast_const()
26252	}
26253
26254	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26255		self.p_next = p_next;
26256	}
26257
26258	fn address(&mut self) -> *mut std::ffi::c_void {
26259		std::ptr::from_mut(self).cast()
26260	}
26261}
26262
26263impl<'a> crate::construction::sealed::ChainNode
26264	for vk::PhysicalDeviceCooperativeMatrixPropertiesKHR<'a>
26265{
26266	const S_TYPE: vk::StructureType =
26267		vk::StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR;
26268
26269	fn s_type(&self) -> vk::StructureType {
26270		self.s_type
26271	}
26272
26273	fn p_next(&self) -> *const std::ffi::c_void {
26274		self.p_next.cast_const()
26275	}
26276
26277	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26278		self.p_next = p_next;
26279	}
26280
26281	fn address(&mut self) -> *mut std::ffi::c_void {
26282		std::ptr::from_mut(self).cast()
26283	}
26284}
26285
26286impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
26287	for vk::PhysicalDeviceCooperativeMatrixPropertiesKHR<'a>
26288{
26289}
26290
26291impl<'a> crate::construction::sealed::ChainNode
26292	for vk::PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM<'a>
26293{
26294	const S_TYPE: vk::StructureType =
26295		vk::StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM;
26296
26297	fn s_type(&self) -> vk::StructureType {
26298		self.s_type
26299	}
26300
26301	fn p_next(&self) -> *const std::ffi::c_void {
26302		self.p_next.cast_const()
26303	}
26304
26305	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26306		self.p_next = p_next;
26307	}
26308
26309	fn address(&mut self) -> *mut std::ffi::c_void {
26310		std::ptr::from_mut(self).cast()
26311	}
26312}
26313
26314impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
26315	for vk::PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM<'a>
26316{
26317}
26318
26319impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
26320	for vk::PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM<'a>
26321{
26322}
26323
26324#[cfg(feature = "provisional")]
26325impl<'a> crate::construction::sealed::ChainNode
26326	for vk::PhysicalDeviceShaderEnqueuePropertiesAMDX<'a>
26327{
26328	const S_TYPE: vk::StructureType =
26329		vk::StructureType::PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX;
26330
26331	fn s_type(&self) -> vk::StructureType {
26332		self.s_type
26333	}
26334
26335	fn p_next(&self) -> *const std::ffi::c_void {
26336		self.p_next.cast_const()
26337	}
26338
26339	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26340		self.p_next = p_next;
26341	}
26342
26343	fn address(&mut self) -> *mut std::ffi::c_void {
26344		std::ptr::from_mut(self).cast()
26345	}
26346}
26347
26348#[cfg(feature = "provisional")]
26349impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
26350	for vk::PhysicalDeviceShaderEnqueuePropertiesAMDX<'a>
26351{
26352}
26353
26354#[cfg(feature = "provisional")]
26355impl<'a> crate::construction::sealed::ChainNode
26356	for vk::PhysicalDeviceShaderEnqueueFeaturesAMDX<'a>
26357{
26358	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX;
26359
26360	fn s_type(&self) -> vk::StructureType {
26361		self.s_type
26362	}
26363
26364	fn p_next(&self) -> *const std::ffi::c_void {
26365		self.p_next.cast_const()
26366	}
26367
26368	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26369		self.p_next = p_next;
26370	}
26371
26372	fn address(&mut self) -> *mut std::ffi::c_void {
26373		std::ptr::from_mut(self).cast()
26374	}
26375}
26376
26377#[cfg(feature = "provisional")]
26378impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
26379	for vk::PhysicalDeviceShaderEnqueueFeaturesAMDX<'a>
26380{
26381}
26382
26383#[cfg(feature = "provisional")]
26384impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
26385	for vk::PhysicalDeviceShaderEnqueueFeaturesAMDX<'a>
26386{
26387}
26388
26389#[cfg(feature = "provisional")]
26390impl<'a> crate::construction::sealed::ChainNode for vk::ExecutionGraphPipelineCreateInfoAMDX<'a> {
26391	const S_TYPE: vk::StructureType = vk::StructureType::EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX;
26392
26393	fn s_type(&self) -> vk::StructureType {
26394		self.s_type
26395	}
26396
26397	fn p_next(&self) -> *const std::ffi::c_void {
26398		self.p_next
26399	}
26400
26401	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26402		self.p_next = p_next.cast_const();
26403	}
26404
26405	fn address(&mut self) -> *mut std::ffi::c_void {
26406		std::ptr::from_mut(self).cast()
26407	}
26408}
26409
26410#[cfg(feature = "provisional")]
26411impl<'a, 'root> crate::Extends<vk::PipelineCreateInfoKHR<'root>>
26412	for vk::ExecutionGraphPipelineCreateInfoAMDX<'a>
26413{
26414}
26415
26416#[cfg(feature = "provisional")]
26417impl<'a> crate::construction::sealed::ChainNode for vk::PipelineShaderStageNodeCreateInfoAMDX<'a> {
26418	const S_TYPE: vk::StructureType = vk::StructureType::PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX;
26419
26420	fn s_type(&self) -> vk::StructureType {
26421		self.s_type
26422	}
26423
26424	fn p_next(&self) -> *const std::ffi::c_void {
26425		self.p_next
26426	}
26427
26428	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26429		self.p_next = p_next.cast_const();
26430	}
26431
26432	fn address(&mut self) -> *mut std::ffi::c_void {
26433		std::ptr::from_mut(self).cast()
26434	}
26435}
26436
26437#[cfg(feature = "provisional")]
26438impl<'a, 'root> crate::Extends<vk::PipelineShaderStageCreateInfo<'root>>
26439	for vk::PipelineShaderStageNodeCreateInfoAMDX<'a>
26440{
26441}
26442
26443#[cfg(feature = "provisional")]
26444impl<'a> crate::construction::sealed::ChainNode for vk::ExecutionGraphPipelineScratchSizeAMDX<'a> {
26445	const S_TYPE: vk::StructureType = vk::StructureType::EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX;
26446
26447	fn s_type(&self) -> vk::StructureType {
26448		self.s_type
26449	}
26450
26451	fn p_next(&self) -> *const std::ffi::c_void {
26452		self.p_next.cast_const()
26453	}
26454
26455	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26456		self.p_next = p_next;
26457	}
26458
26459	fn address(&mut self) -> *mut std::ffi::c_void {
26460		std::ptr::from_mut(self).cast()
26461	}
26462}
26463
26464impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceAntiLagFeaturesAMD<'a> {
26465	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD;
26466
26467	fn s_type(&self) -> vk::StructureType {
26468		self.s_type
26469	}
26470
26471	fn p_next(&self) -> *const std::ffi::c_void {
26472		self.p_next.cast_const()
26473	}
26474
26475	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26476		self.p_next = p_next;
26477	}
26478
26479	fn address(&mut self) -> *mut std::ffi::c_void {
26480		std::ptr::from_mut(self).cast()
26481	}
26482}
26483
26484impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
26485	for vk::PhysicalDeviceAntiLagFeaturesAMD<'a>
26486{
26487}
26488
26489impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
26490	for vk::PhysicalDeviceAntiLagFeaturesAMD<'a>
26491{
26492}
26493
26494impl<'a> crate::construction::sealed::ChainNode for vk::AntiLagDataAMD<'a> {
26495	const S_TYPE: vk::StructureType = vk::StructureType::ANTI_LAG_DATA_AMD;
26496
26497	fn s_type(&self) -> vk::StructureType {
26498		self.s_type
26499	}
26500
26501	fn p_next(&self) -> *const std::ffi::c_void {
26502		self.p_next
26503	}
26504
26505	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26506		self.p_next = p_next.cast_const();
26507	}
26508
26509	fn address(&mut self) -> *mut std::ffi::c_void {
26510		std::ptr::from_mut(self).cast()
26511	}
26512}
26513
26514impl<'a> crate::construction::sealed::ChainNode for vk::AntiLagPresentationInfoAMD<'a> {
26515	const S_TYPE: vk::StructureType = vk::StructureType::ANTI_LAG_PRESENTATION_INFO_AMD;
26516
26517	fn s_type(&self) -> vk::StructureType {
26518		self.s_type
26519	}
26520
26521	fn p_next(&self) -> *const std::ffi::c_void {
26522		self.p_next.cast_const()
26523	}
26524
26525	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26526		self.p_next = p_next;
26527	}
26528
26529	fn address(&mut self) -> *mut std::ffi::c_void {
26530		std::ptr::from_mut(self).cast()
26531	}
26532}
26533
26534impl<'a> crate::construction::sealed::ChainNode for vk::BindMemoryStatus<'a> {
26535	const S_TYPE: vk::StructureType = vk::StructureType::BIND_MEMORY_STATUS;
26536
26537	fn s_type(&self) -> vk::StructureType {
26538		self.s_type
26539	}
26540
26541	fn p_next(&self) -> *const std::ffi::c_void {
26542		self.p_next
26543	}
26544
26545	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26546		self.p_next = p_next.cast_const();
26547	}
26548
26549	fn address(&mut self) -> *mut std::ffi::c_void {
26550		std::ptr::from_mut(self).cast()
26551	}
26552}
26553
26554impl<'a, 'root> crate::Extends<vk::BindBufferMemoryInfo<'root>> for vk::BindMemoryStatus<'a> {}
26555
26556impl<'a, 'root> crate::Extends<vk::BindImageMemoryInfo<'root>> for vk::BindMemoryStatus<'a> {}
26557
26558impl<'a> crate::construction::sealed::ChainNode
26559	for vk::PhysicalDeviceTileMemoryHeapFeaturesQCOM<'a>
26560{
26561	const S_TYPE: vk::StructureType =
26562		vk::StructureType::PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM;
26563
26564	fn s_type(&self) -> vk::StructureType {
26565		self.s_type
26566	}
26567
26568	fn p_next(&self) -> *const std::ffi::c_void {
26569		self.p_next.cast_const()
26570	}
26571
26572	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26573		self.p_next = p_next;
26574	}
26575
26576	fn address(&mut self) -> *mut std::ffi::c_void {
26577		std::ptr::from_mut(self).cast()
26578	}
26579}
26580
26581impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
26582	for vk::PhysicalDeviceTileMemoryHeapFeaturesQCOM<'a>
26583{
26584}
26585
26586impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
26587	for vk::PhysicalDeviceTileMemoryHeapFeaturesQCOM<'a>
26588{
26589}
26590
26591impl<'a> crate::construction::sealed::ChainNode
26592	for vk::PhysicalDeviceTileMemoryHeapPropertiesQCOM<'a>
26593{
26594	const S_TYPE: vk::StructureType =
26595		vk::StructureType::PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM;
26596
26597	fn s_type(&self) -> vk::StructureType {
26598		self.s_type
26599	}
26600
26601	fn p_next(&self) -> *const std::ffi::c_void {
26602		self.p_next.cast_const()
26603	}
26604
26605	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26606		self.p_next = p_next;
26607	}
26608
26609	fn address(&mut self) -> *mut std::ffi::c_void {
26610		std::ptr::from_mut(self).cast()
26611	}
26612}
26613
26614impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
26615	for vk::PhysicalDeviceTileMemoryHeapPropertiesQCOM<'a>
26616{
26617}
26618
26619impl<'a> crate::construction::sealed::ChainNode for vk::TileMemorySizeInfoQCOM<'a> {
26620	const S_TYPE: vk::StructureType = vk::StructureType::TILE_MEMORY_SIZE_INFO_QCOM;
26621
26622	fn s_type(&self) -> vk::StructureType {
26623		self.s_type
26624	}
26625
26626	fn p_next(&self) -> *const std::ffi::c_void {
26627		self.p_next
26628	}
26629
26630	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26631		self.p_next = p_next.cast_const();
26632	}
26633
26634	fn address(&mut self) -> *mut std::ffi::c_void {
26635		std::ptr::from_mut(self).cast()
26636	}
26637}
26638
26639impl<'a, 'root> crate::Extends<vk::RenderPassCreateInfo<'root>> for vk::TileMemorySizeInfoQCOM<'a> {}
26640
26641impl<'a, 'root> crate::Extends<vk::RenderPassCreateInfo2<'root>>
26642	for vk::TileMemorySizeInfoQCOM<'a>
26643{
26644}
26645
26646impl<'a, 'root> crate::Extends<vk::RenderingInfo<'root>> for vk::TileMemorySizeInfoQCOM<'a> {}
26647
26648impl<'a> crate::construction::sealed::ChainNode for vk::TileMemoryRequirementsQCOM<'a> {
26649	const S_TYPE: vk::StructureType = vk::StructureType::TILE_MEMORY_REQUIREMENTS_QCOM;
26650
26651	fn s_type(&self) -> vk::StructureType {
26652		self.s_type
26653	}
26654
26655	fn p_next(&self) -> *const std::ffi::c_void {
26656		self.p_next.cast_const()
26657	}
26658
26659	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26660		self.p_next = p_next;
26661	}
26662
26663	fn address(&mut self) -> *mut std::ffi::c_void {
26664		std::ptr::from_mut(self).cast()
26665	}
26666}
26667
26668impl<'a, 'root> crate::Extends<vk::MemoryRequirements2<'root>>
26669	for vk::TileMemoryRequirementsQCOM<'a>
26670{
26671}
26672
26673impl<'a> crate::construction::sealed::ChainNode for vk::BindDescriptorSetsInfo<'a> {
26674	const S_TYPE: vk::StructureType = vk::StructureType::BIND_DESCRIPTOR_SETS_INFO;
26675
26676	fn s_type(&self) -> vk::StructureType {
26677		self.s_type
26678	}
26679
26680	fn p_next(&self) -> *const std::ffi::c_void {
26681		self.p_next
26682	}
26683
26684	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26685		self.p_next = p_next.cast_const();
26686	}
26687
26688	fn address(&mut self) -> *mut std::ffi::c_void {
26689		std::ptr::from_mut(self).cast()
26690	}
26691}
26692
26693impl<'a> crate::construction::sealed::ChainNode for vk::PushConstantsInfo<'a> {
26694	const S_TYPE: vk::StructureType = vk::StructureType::PUSH_CONSTANTS_INFO;
26695
26696	fn s_type(&self) -> vk::StructureType {
26697		self.s_type
26698	}
26699
26700	fn p_next(&self) -> *const std::ffi::c_void {
26701		self.p_next
26702	}
26703
26704	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26705		self.p_next = p_next.cast_const();
26706	}
26707
26708	fn address(&mut self) -> *mut std::ffi::c_void {
26709		std::ptr::from_mut(self).cast()
26710	}
26711}
26712
26713impl<'a> crate::construction::sealed::ChainNode for vk::PushDescriptorSetInfo<'a> {
26714	const S_TYPE: vk::StructureType = vk::StructureType::PUSH_DESCRIPTOR_SET_INFO;
26715
26716	fn s_type(&self) -> vk::StructureType {
26717		self.s_type
26718	}
26719
26720	fn p_next(&self) -> *const std::ffi::c_void {
26721		self.p_next
26722	}
26723
26724	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26725		self.p_next = p_next.cast_const();
26726	}
26727
26728	fn address(&mut self) -> *mut std::ffi::c_void {
26729		std::ptr::from_mut(self).cast()
26730	}
26731}
26732
26733impl<'a> crate::construction::sealed::ChainNode for vk::PushDescriptorSetWithTemplateInfo<'a> {
26734	const S_TYPE: vk::StructureType = vk::StructureType::PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO;
26735
26736	fn s_type(&self) -> vk::StructureType {
26737		self.s_type
26738	}
26739
26740	fn p_next(&self) -> *const std::ffi::c_void {
26741		self.p_next
26742	}
26743
26744	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26745		self.p_next = p_next.cast_const();
26746	}
26747
26748	fn address(&mut self) -> *mut std::ffi::c_void {
26749		std::ptr::from_mut(self).cast()
26750	}
26751}
26752
26753impl<'a> crate::construction::sealed::ChainNode for vk::SetDescriptorBufferOffsetsInfoEXT<'a> {
26754	const S_TYPE: vk::StructureType = vk::StructureType::SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT;
26755
26756	fn s_type(&self) -> vk::StructureType {
26757		self.s_type
26758	}
26759
26760	fn p_next(&self) -> *const std::ffi::c_void {
26761		self.p_next
26762	}
26763
26764	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26765		self.p_next = p_next.cast_const();
26766	}
26767
26768	fn address(&mut self) -> *mut std::ffi::c_void {
26769		std::ptr::from_mut(self).cast()
26770	}
26771}
26772
26773impl<'a> crate::construction::sealed::ChainNode
26774	for vk::BindDescriptorBufferEmbeddedSamplersInfoEXT<'a>
26775{
26776	const S_TYPE: vk::StructureType =
26777		vk::StructureType::BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT;
26778
26779	fn s_type(&self) -> vk::StructureType {
26780		self.s_type
26781	}
26782
26783	fn p_next(&self) -> *const std::ffi::c_void {
26784		self.p_next
26785	}
26786
26787	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26788		self.p_next = p_next.cast_const();
26789	}
26790
26791	fn address(&mut self) -> *mut std::ffi::c_void {
26792		std::ptr::from_mut(self).cast()
26793	}
26794}
26795
26796impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceCubicClampFeaturesQCOM<'a> {
26797	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM;
26798
26799	fn s_type(&self) -> vk::StructureType {
26800		self.s_type
26801	}
26802
26803	fn p_next(&self) -> *const std::ffi::c_void {
26804		self.p_next.cast_const()
26805	}
26806
26807	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26808		self.p_next = p_next;
26809	}
26810
26811	fn address(&mut self) -> *mut std::ffi::c_void {
26812		std::ptr::from_mut(self).cast()
26813	}
26814}
26815
26816impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
26817	for vk::PhysicalDeviceCubicClampFeaturesQCOM<'a>
26818{
26819}
26820
26821impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
26822	for vk::PhysicalDeviceCubicClampFeaturesQCOM<'a>
26823{
26824}
26825
26826impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceYcbcrDegammaFeaturesQCOM<'a> {
26827	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM;
26828
26829	fn s_type(&self) -> vk::StructureType {
26830		self.s_type
26831	}
26832
26833	fn p_next(&self) -> *const std::ffi::c_void {
26834		self.p_next.cast_const()
26835	}
26836
26837	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26838		self.p_next = p_next;
26839	}
26840
26841	fn address(&mut self) -> *mut std::ffi::c_void {
26842		std::ptr::from_mut(self).cast()
26843	}
26844}
26845
26846impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
26847	for vk::PhysicalDeviceYcbcrDegammaFeaturesQCOM<'a>
26848{
26849}
26850
26851impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
26852	for vk::PhysicalDeviceYcbcrDegammaFeaturesQCOM<'a>
26853{
26854}
26855
26856impl<'a> crate::construction::sealed::ChainNode
26857	for vk::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM<'a>
26858{
26859	const S_TYPE: vk::StructureType =
26860		vk::StructureType::SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM;
26861
26862	fn s_type(&self) -> vk::StructureType {
26863		self.s_type
26864	}
26865
26866	fn p_next(&self) -> *const std::ffi::c_void {
26867		self.p_next.cast_const()
26868	}
26869
26870	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26871		self.p_next = p_next;
26872	}
26873
26874	fn address(&mut self) -> *mut std::ffi::c_void {
26875		std::ptr::from_mut(self).cast()
26876	}
26877}
26878
26879impl<'a, 'root> crate::Extends<vk::SamplerYcbcrConversionCreateInfo<'root>>
26880	for vk::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM<'a>
26881{
26882}
26883
26884impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceCubicWeightsFeaturesQCOM<'a> {
26885	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM;
26886
26887	fn s_type(&self) -> vk::StructureType {
26888		self.s_type
26889	}
26890
26891	fn p_next(&self) -> *const std::ffi::c_void {
26892		self.p_next.cast_const()
26893	}
26894
26895	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26896		self.p_next = p_next;
26897	}
26898
26899	fn address(&mut self) -> *mut std::ffi::c_void {
26900		std::ptr::from_mut(self).cast()
26901	}
26902}
26903
26904impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
26905	for vk::PhysicalDeviceCubicWeightsFeaturesQCOM<'a>
26906{
26907}
26908
26909impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
26910	for vk::PhysicalDeviceCubicWeightsFeaturesQCOM<'a>
26911{
26912}
26913
26914impl<'a> crate::construction::sealed::ChainNode for vk::SamplerCubicWeightsCreateInfoQCOM<'a> {
26915	const S_TYPE: vk::StructureType = vk::StructureType::SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM;
26916
26917	fn s_type(&self) -> vk::StructureType {
26918		self.s_type
26919	}
26920
26921	fn p_next(&self) -> *const std::ffi::c_void {
26922		self.p_next
26923	}
26924
26925	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26926		self.p_next = p_next.cast_const();
26927	}
26928
26929	fn address(&mut self) -> *mut std::ffi::c_void {
26930		std::ptr::from_mut(self).cast()
26931	}
26932}
26933
26934impl<'a, 'root> crate::Extends<vk::SamplerCreateInfo<'root>>
26935	for vk::SamplerCubicWeightsCreateInfoQCOM<'a>
26936{
26937}
26938
26939impl<'a> crate::construction::sealed::ChainNode for vk::BlitImageCubicWeightsInfoQCOM<'a> {
26940	const S_TYPE: vk::StructureType = vk::StructureType::BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM;
26941
26942	fn s_type(&self) -> vk::StructureType {
26943		self.s_type
26944	}
26945
26946	fn p_next(&self) -> *const std::ffi::c_void {
26947		self.p_next
26948	}
26949
26950	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26951		self.p_next = p_next.cast_const();
26952	}
26953
26954	fn address(&mut self) -> *mut std::ffi::c_void {
26955		std::ptr::from_mut(self).cast()
26956	}
26957}
26958
26959impl<'a, 'root> crate::Extends<vk::BlitImageInfo2<'root>>
26960	for vk::BlitImageCubicWeightsInfoQCOM<'a>
26961{
26962}
26963
26964impl<'a> crate::construction::sealed::ChainNode
26965	for vk::PhysicalDeviceImageProcessing2FeaturesQCOM<'a>
26966{
26967	const S_TYPE: vk::StructureType =
26968		vk::StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM;
26969
26970	fn s_type(&self) -> vk::StructureType {
26971		self.s_type
26972	}
26973
26974	fn p_next(&self) -> *const std::ffi::c_void {
26975		self.p_next.cast_const()
26976	}
26977
26978	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
26979		self.p_next = p_next;
26980	}
26981
26982	fn address(&mut self) -> *mut std::ffi::c_void {
26983		std::ptr::from_mut(self).cast()
26984	}
26985}
26986
26987impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
26988	for vk::PhysicalDeviceImageProcessing2FeaturesQCOM<'a>
26989{
26990}
26991
26992impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
26993	for vk::PhysicalDeviceImageProcessing2FeaturesQCOM<'a>
26994{
26995}
26996
26997impl<'a> crate::construction::sealed::ChainNode
26998	for vk::PhysicalDeviceImageProcessing2PropertiesQCOM<'a>
26999{
27000	const S_TYPE: vk::StructureType =
27001		vk::StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM;
27002
27003	fn s_type(&self) -> vk::StructureType {
27004		self.s_type
27005	}
27006
27007	fn p_next(&self) -> *const std::ffi::c_void {
27008		self.p_next.cast_const()
27009	}
27010
27011	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27012		self.p_next = p_next;
27013	}
27014
27015	fn address(&mut self) -> *mut std::ffi::c_void {
27016		std::ptr::from_mut(self).cast()
27017	}
27018}
27019
27020impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
27021	for vk::PhysicalDeviceImageProcessing2PropertiesQCOM<'a>
27022{
27023}
27024
27025impl<'a> crate::construction::sealed::ChainNode for vk::SamplerBlockMatchWindowCreateInfoQCOM<'a> {
27026	const S_TYPE: vk::StructureType = vk::StructureType::SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM;
27027
27028	fn s_type(&self) -> vk::StructureType {
27029		self.s_type
27030	}
27031
27032	fn p_next(&self) -> *const std::ffi::c_void {
27033		self.p_next
27034	}
27035
27036	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27037		self.p_next = p_next.cast_const();
27038	}
27039
27040	fn address(&mut self) -> *mut std::ffi::c_void {
27041		std::ptr::from_mut(self).cast()
27042	}
27043}
27044
27045impl<'a, 'root> crate::Extends<vk::SamplerCreateInfo<'root>>
27046	for vk::SamplerBlockMatchWindowCreateInfoQCOM<'a>
27047{
27048}
27049
27050impl<'a> crate::construction::sealed::ChainNode
27051	for vk::PhysicalDeviceImageProcessing3FeaturesQCOM<'a>
27052{
27053	const S_TYPE: vk::StructureType =
27054		vk::StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_3_FEATURES_QCOM;
27055
27056	fn s_type(&self) -> vk::StructureType {
27057		self.s_type
27058	}
27059
27060	fn p_next(&self) -> *const std::ffi::c_void {
27061		self.p_next.cast_const()
27062	}
27063
27064	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27065		self.p_next = p_next;
27066	}
27067
27068	fn address(&mut self) -> *mut std::ffi::c_void {
27069		std::ptr::from_mut(self).cast()
27070	}
27071}
27072
27073impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
27074	for vk::PhysicalDeviceImageProcessing3FeaturesQCOM<'a>
27075{
27076}
27077
27078impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
27079	for vk::PhysicalDeviceImageProcessing3FeaturesQCOM<'a>
27080{
27081}
27082
27083impl<'a> crate::construction::sealed::ChainNode
27084	for vk::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV<'a>
27085{
27086	const S_TYPE: vk::StructureType =
27087		vk::StructureType::PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV;
27088
27089	fn s_type(&self) -> vk::StructureType {
27090		self.s_type
27091	}
27092
27093	fn p_next(&self) -> *const std::ffi::c_void {
27094		self.p_next.cast_const()
27095	}
27096
27097	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27098		self.p_next = p_next;
27099	}
27100
27101	fn address(&mut self) -> *mut std::ffi::c_void {
27102		std::ptr::from_mut(self).cast()
27103	}
27104}
27105
27106impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
27107	for vk::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV<'a>
27108{
27109}
27110
27111impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
27112	for vk::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV<'a>
27113{
27114}
27115
27116impl<'a> crate::construction::sealed::ChainNode
27117	for vk::PhysicalDeviceLayeredDriverPropertiesMSFT<'a>
27118{
27119	const S_TYPE: vk::StructureType =
27120		vk::StructureType::PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT;
27121
27122	fn s_type(&self) -> vk::StructureType {
27123		self.s_type
27124	}
27125
27126	fn p_next(&self) -> *const std::ffi::c_void {
27127		self.p_next.cast_const()
27128	}
27129
27130	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27131		self.p_next = p_next;
27132	}
27133
27134	fn address(&mut self) -> *mut std::ffi::c_void {
27135		std::ptr::from_mut(self).cast()
27136	}
27137}
27138
27139impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
27140	for vk::PhysicalDeviceLayeredDriverPropertiesMSFT<'a>
27141{
27142}
27143
27144impl<'a> crate::construction::sealed::ChainNode
27145	for vk::PhysicalDevicePerStageDescriptorSetFeaturesNV<'a>
27146{
27147	const S_TYPE: vk::StructureType =
27148		vk::StructureType::PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV;
27149
27150	fn s_type(&self) -> vk::StructureType {
27151		self.s_type
27152	}
27153
27154	fn p_next(&self) -> *const std::ffi::c_void {
27155		self.p_next.cast_const()
27156	}
27157
27158	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27159		self.p_next = p_next;
27160	}
27161
27162	fn address(&mut self) -> *mut std::ffi::c_void {
27163		std::ptr::from_mut(self).cast()
27164	}
27165}
27166
27167impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
27168	for vk::PhysicalDevicePerStageDescriptorSetFeaturesNV<'a>
27169{
27170}
27171
27172impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
27173	for vk::PhysicalDevicePerStageDescriptorSetFeaturesNV<'a>
27174{
27175}
27176
27177#[cfg(feature = "platform-android")]
27178impl<'a> crate::construction::sealed::ChainNode
27179	for vk::PhysicalDeviceExternalFormatResolveFeaturesANDROID<'a>
27180{
27181	const S_TYPE: vk::StructureType =
27182		vk::StructureType::PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID;
27183
27184	fn s_type(&self) -> vk::StructureType {
27185		self.s_type
27186	}
27187
27188	fn p_next(&self) -> *const std::ffi::c_void {
27189		self.p_next.cast_const()
27190	}
27191
27192	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27193		self.p_next = p_next;
27194	}
27195
27196	fn address(&mut self) -> *mut std::ffi::c_void {
27197		std::ptr::from_mut(self).cast()
27198	}
27199}
27200
27201#[cfg(feature = "platform-android")]
27202impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
27203	for vk::PhysicalDeviceExternalFormatResolveFeaturesANDROID<'a>
27204{
27205}
27206
27207#[cfg(feature = "platform-android")]
27208impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
27209	for vk::PhysicalDeviceExternalFormatResolveFeaturesANDROID<'a>
27210{
27211}
27212
27213#[cfg(feature = "platform-android")]
27214impl<'a> crate::construction::sealed::ChainNode
27215	for vk::PhysicalDeviceExternalFormatResolvePropertiesANDROID<'a>
27216{
27217	const S_TYPE: vk::StructureType =
27218		vk::StructureType::PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID;
27219
27220	fn s_type(&self) -> vk::StructureType {
27221		self.s_type
27222	}
27223
27224	fn p_next(&self) -> *const std::ffi::c_void {
27225		self.p_next.cast_const()
27226	}
27227
27228	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27229		self.p_next = p_next;
27230	}
27231
27232	fn address(&mut self) -> *mut std::ffi::c_void {
27233		std::ptr::from_mut(self).cast()
27234	}
27235}
27236
27237#[cfg(feature = "platform-android")]
27238impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
27239	for vk::PhysicalDeviceExternalFormatResolvePropertiesANDROID<'a>
27240{
27241}
27242
27243#[cfg(feature = "platform-android")]
27244impl<'a> crate::construction::sealed::ChainNode
27245	for vk::AndroidHardwareBufferFormatResolvePropertiesANDROID<'a>
27246{
27247	const S_TYPE: vk::StructureType =
27248		vk::StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID;
27249
27250	fn s_type(&self) -> vk::StructureType {
27251		self.s_type
27252	}
27253
27254	fn p_next(&self) -> *const std::ffi::c_void {
27255		self.p_next.cast_const()
27256	}
27257
27258	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27259		self.p_next = p_next;
27260	}
27261
27262	fn address(&mut self) -> *mut std::ffi::c_void {
27263		std::ptr::from_mut(self).cast()
27264	}
27265}
27266
27267#[cfg(feature = "platform-android")]
27268impl<'a, 'root> crate::Extends<vk::AndroidHardwareBufferPropertiesANDROID<'root>>
27269	for vk::AndroidHardwareBufferFormatResolvePropertiesANDROID<'a>
27270{
27271}
27272
27273impl<'a> crate::construction::sealed::ChainNode for vk::LatencySleepModeInfoNV<'a> {
27274	const S_TYPE: vk::StructureType = vk::StructureType::LATENCY_SLEEP_MODE_INFO_NV;
27275
27276	fn s_type(&self) -> vk::StructureType {
27277		self.s_type
27278	}
27279
27280	fn p_next(&self) -> *const std::ffi::c_void {
27281		self.p_next
27282	}
27283
27284	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27285		self.p_next = p_next.cast_const();
27286	}
27287
27288	fn address(&mut self) -> *mut std::ffi::c_void {
27289		std::ptr::from_mut(self).cast()
27290	}
27291}
27292
27293impl<'a> crate::construction::sealed::ChainNode for vk::LatencySleepInfoNV<'a> {
27294	const S_TYPE: vk::StructureType = vk::StructureType::LATENCY_SLEEP_INFO_NV;
27295
27296	fn s_type(&self) -> vk::StructureType {
27297		self.s_type
27298	}
27299
27300	fn p_next(&self) -> *const std::ffi::c_void {
27301		self.p_next
27302	}
27303
27304	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27305		self.p_next = p_next.cast_const();
27306	}
27307
27308	fn address(&mut self) -> *mut std::ffi::c_void {
27309		std::ptr::from_mut(self).cast()
27310	}
27311}
27312
27313impl<'a> crate::construction::sealed::ChainNode for vk::SetLatencyMarkerInfoNV<'a> {
27314	const S_TYPE: vk::StructureType = vk::StructureType::SET_LATENCY_MARKER_INFO_NV;
27315
27316	fn s_type(&self) -> vk::StructureType {
27317		self.s_type
27318	}
27319
27320	fn p_next(&self) -> *const std::ffi::c_void {
27321		self.p_next
27322	}
27323
27324	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27325		self.p_next = p_next.cast_const();
27326	}
27327
27328	fn address(&mut self) -> *mut std::ffi::c_void {
27329		std::ptr::from_mut(self).cast()
27330	}
27331}
27332
27333impl<'a> crate::construction::sealed::ChainNode for vk::GetLatencyMarkerInfoNV<'a> {
27334	const S_TYPE: vk::StructureType = vk::StructureType::GET_LATENCY_MARKER_INFO_NV;
27335
27336	fn s_type(&self) -> vk::StructureType {
27337		self.s_type
27338	}
27339
27340	fn p_next(&self) -> *const std::ffi::c_void {
27341		self.p_next
27342	}
27343
27344	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27345		self.p_next = p_next.cast_const();
27346	}
27347
27348	fn address(&mut self) -> *mut std::ffi::c_void {
27349		std::ptr::from_mut(self).cast()
27350	}
27351}
27352
27353impl<'a> crate::construction::sealed::ChainNode for vk::LatencyTimingsFrameReportNV<'a> {
27354	const S_TYPE: vk::StructureType = vk::StructureType::LATENCY_TIMINGS_FRAME_REPORT_NV;
27355
27356	fn s_type(&self) -> vk::StructureType {
27357		self.s_type
27358	}
27359
27360	fn p_next(&self) -> *const std::ffi::c_void {
27361		self.p_next.cast_const()
27362	}
27363
27364	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27365		self.p_next = p_next;
27366	}
27367
27368	fn address(&mut self) -> *mut std::ffi::c_void {
27369		std::ptr::from_mut(self).cast()
27370	}
27371}
27372
27373impl<'a> crate::construction::sealed::ChainNode for vk::OutOfBandQueueTypeInfoNV<'a> {
27374	const S_TYPE: vk::StructureType = vk::StructureType::OUT_OF_BAND_QUEUE_TYPE_INFO_NV;
27375
27376	fn s_type(&self) -> vk::StructureType {
27377		self.s_type
27378	}
27379
27380	fn p_next(&self) -> *const std::ffi::c_void {
27381		self.p_next
27382	}
27383
27384	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27385		self.p_next = p_next.cast_const();
27386	}
27387
27388	fn address(&mut self) -> *mut std::ffi::c_void {
27389		std::ptr::from_mut(self).cast()
27390	}
27391}
27392
27393impl<'a> crate::construction::sealed::ChainNode for vk::LatencySubmissionPresentIdNV<'a> {
27394	const S_TYPE: vk::StructureType = vk::StructureType::LATENCY_SUBMISSION_PRESENT_ID_NV;
27395
27396	fn s_type(&self) -> vk::StructureType {
27397		self.s_type
27398	}
27399
27400	fn p_next(&self) -> *const std::ffi::c_void {
27401		self.p_next
27402	}
27403
27404	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27405		self.p_next = p_next.cast_const();
27406	}
27407
27408	fn address(&mut self) -> *mut std::ffi::c_void {
27409		std::ptr::from_mut(self).cast()
27410	}
27411}
27412
27413impl<'a, 'root> crate::Extends<vk::SubmitInfo<'root>> for vk::LatencySubmissionPresentIdNV<'a> {}
27414
27415impl<'a, 'root> crate::Extends<vk::SubmitInfo2<'root>> for vk::LatencySubmissionPresentIdNV<'a> {}
27416
27417impl<'a> crate::construction::sealed::ChainNode for vk::SwapchainLatencyCreateInfoNV<'a> {
27418	const S_TYPE: vk::StructureType = vk::StructureType::SWAPCHAIN_LATENCY_CREATE_INFO_NV;
27419
27420	fn s_type(&self) -> vk::StructureType {
27421		self.s_type
27422	}
27423
27424	fn p_next(&self) -> *const std::ffi::c_void {
27425		self.p_next
27426	}
27427
27428	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27429		self.p_next = p_next.cast_const();
27430	}
27431
27432	fn address(&mut self) -> *mut std::ffi::c_void {
27433		std::ptr::from_mut(self).cast()
27434	}
27435}
27436
27437impl<'a, 'root> crate::Extends<vk::SwapchainCreateInfoKHR<'root>>
27438	for vk::SwapchainLatencyCreateInfoNV<'a>
27439{
27440}
27441
27442impl<'a> crate::construction::sealed::ChainNode for vk::LatencySurfaceCapabilitiesNV<'a> {
27443	const S_TYPE: vk::StructureType = vk::StructureType::LATENCY_SURFACE_CAPABILITIES_NV;
27444
27445	fn s_type(&self) -> vk::StructureType {
27446		self.s_type
27447	}
27448
27449	fn p_next(&self) -> *const std::ffi::c_void {
27450		self.p_next
27451	}
27452
27453	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27454		self.p_next = p_next.cast_const();
27455	}
27456
27457	fn address(&mut self) -> *mut std::ffi::c_void {
27458		std::ptr::from_mut(self).cast()
27459	}
27460}
27461
27462impl<'a, 'root> crate::Extends<vk::SurfaceCapabilities2KHR<'root>>
27463	for vk::LatencySurfaceCapabilitiesNV<'a>
27464{
27465}
27466
27467#[cfg(feature = "provisional")]
27468impl<'a> crate::construction::sealed::ChainNode
27469	for vk::PhysicalDeviceCudaKernelLaunchFeaturesNV<'a>
27470{
27471	const S_TYPE: vk::StructureType =
27472		vk::StructureType::PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV;
27473
27474	fn s_type(&self) -> vk::StructureType {
27475		self.s_type
27476	}
27477
27478	fn p_next(&self) -> *const std::ffi::c_void {
27479		self.p_next.cast_const()
27480	}
27481
27482	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27483		self.p_next = p_next;
27484	}
27485
27486	fn address(&mut self) -> *mut std::ffi::c_void {
27487		std::ptr::from_mut(self).cast()
27488	}
27489}
27490
27491#[cfg(feature = "provisional")]
27492impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
27493	for vk::PhysicalDeviceCudaKernelLaunchFeaturesNV<'a>
27494{
27495}
27496
27497#[cfg(feature = "provisional")]
27498impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
27499	for vk::PhysicalDeviceCudaKernelLaunchFeaturesNV<'a>
27500{
27501}
27502
27503#[cfg(feature = "provisional")]
27504impl<'a> crate::construction::sealed::ChainNode
27505	for vk::PhysicalDeviceCudaKernelLaunchPropertiesNV<'a>
27506{
27507	const S_TYPE: vk::StructureType =
27508		vk::StructureType::PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV;
27509
27510	fn s_type(&self) -> vk::StructureType {
27511		self.s_type
27512	}
27513
27514	fn p_next(&self) -> *const std::ffi::c_void {
27515		self.p_next.cast_const()
27516	}
27517
27518	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27519		self.p_next = p_next;
27520	}
27521
27522	fn address(&mut self) -> *mut std::ffi::c_void {
27523		std::ptr::from_mut(self).cast()
27524	}
27525}
27526
27527#[cfg(feature = "provisional")]
27528impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
27529	for vk::PhysicalDeviceCudaKernelLaunchPropertiesNV<'a>
27530{
27531}
27532
27533impl<'a> crate::construction::sealed::ChainNode
27534	for vk::DeviceQueueShaderCoreControlCreateInfoARM<'a>
27535{
27536	const S_TYPE: vk::StructureType =
27537		vk::StructureType::DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM;
27538
27539	fn s_type(&self) -> vk::StructureType {
27540		self.s_type
27541	}
27542
27543	fn p_next(&self) -> *const std::ffi::c_void {
27544		self.p_next.cast_const()
27545	}
27546
27547	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27548		self.p_next = p_next;
27549	}
27550
27551	fn address(&mut self) -> *mut std::ffi::c_void {
27552		std::ptr::from_mut(self).cast()
27553	}
27554}
27555
27556impl<'a, 'root> crate::Extends<vk::DeviceQueueCreateInfo<'root>>
27557	for vk::DeviceQueueShaderCoreControlCreateInfoARM<'a>
27558{
27559}
27560
27561impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
27562	for vk::DeviceQueueShaderCoreControlCreateInfoARM<'a>
27563{
27564}
27565
27566impl<'a> crate::construction::sealed::ChainNode
27567	for vk::PhysicalDeviceSchedulingControlsFeaturesARM<'a>
27568{
27569	const S_TYPE: vk::StructureType =
27570		vk::StructureType::PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM;
27571
27572	fn s_type(&self) -> vk::StructureType {
27573		self.s_type
27574	}
27575
27576	fn p_next(&self) -> *const std::ffi::c_void {
27577		self.p_next.cast_const()
27578	}
27579
27580	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27581		self.p_next = p_next;
27582	}
27583
27584	fn address(&mut self) -> *mut std::ffi::c_void {
27585		std::ptr::from_mut(self).cast()
27586	}
27587}
27588
27589impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
27590	for vk::PhysicalDeviceSchedulingControlsFeaturesARM<'a>
27591{
27592}
27593
27594impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
27595	for vk::PhysicalDeviceSchedulingControlsFeaturesARM<'a>
27596{
27597}
27598
27599impl<'a> crate::construction::sealed::ChainNode
27600	for vk::PhysicalDeviceSchedulingControlsPropertiesARM<'a>
27601{
27602	const S_TYPE: vk::StructureType =
27603		vk::StructureType::PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM;
27604
27605	fn s_type(&self) -> vk::StructureType {
27606		self.s_type
27607	}
27608
27609	fn p_next(&self) -> *const std::ffi::c_void {
27610		self.p_next.cast_const()
27611	}
27612
27613	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27614		self.p_next = p_next;
27615	}
27616
27617	fn address(&mut self) -> *mut std::ffi::c_void {
27618		std::ptr::from_mut(self).cast()
27619	}
27620}
27621
27622impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
27623	for vk::PhysicalDeviceSchedulingControlsPropertiesARM<'a>
27624{
27625}
27626
27627impl<'a> crate::construction::sealed::ChainNode
27628	for vk::PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM<'a>
27629{
27630	const S_TYPE: vk::StructureType =
27631		vk::StructureType::PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_PROPERTIES_ARM;
27632
27633	fn s_type(&self) -> vk::StructureType {
27634		self.s_type
27635	}
27636
27637	fn p_next(&self) -> *const std::ffi::c_void {
27638		self.p_next.cast_const()
27639	}
27640
27641	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27642		self.p_next = p_next;
27643	}
27644
27645	fn address(&mut self) -> *mut std::ffi::c_void {
27646		std::ptr::from_mut(self).cast()
27647	}
27648}
27649
27650impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
27651	for vk::PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM<'a>
27652{
27653}
27654
27655impl<'a> crate::construction::sealed::ChainNode for vk::DispatchParametersARM<'a> {
27656	const S_TYPE: vk::StructureType = vk::StructureType::DISPATCH_PARAMETERS_ARM;
27657
27658	fn s_type(&self) -> vk::StructureType {
27659		self.s_type
27660	}
27661
27662	fn p_next(&self) -> *const std::ffi::c_void {
27663		self.p_next.cast_const()
27664	}
27665
27666	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27667		self.p_next = p_next;
27668	}
27669
27670	fn address(&mut self) -> *mut std::ffi::c_void {
27671		std::ptr::from_mut(self).cast()
27672	}
27673}
27674
27675impl<'a> crate::construction::sealed::ChainNode
27676	for vk::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG<'a>
27677{
27678	const S_TYPE: vk::StructureType =
27679		vk::StructureType::PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG;
27680
27681	fn s_type(&self) -> vk::StructureType {
27682		self.s_type
27683	}
27684
27685	fn p_next(&self) -> *const std::ffi::c_void {
27686		self.p_next.cast_const()
27687	}
27688
27689	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27690		self.p_next = p_next;
27691	}
27692
27693	fn address(&mut self) -> *mut std::ffi::c_void {
27694		std::ptr::from_mut(self).cast()
27695	}
27696}
27697
27698impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
27699	for vk::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG<'a>
27700{
27701}
27702
27703impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
27704	for vk::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG<'a>
27705{
27706}
27707
27708impl<'a> crate::construction::sealed::ChainNode
27709	for vk::PhysicalDeviceRenderPassStripedFeaturesARM<'a>
27710{
27711	const S_TYPE: vk::StructureType =
27712		vk::StructureType::PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM;
27713
27714	fn s_type(&self) -> vk::StructureType {
27715		self.s_type
27716	}
27717
27718	fn p_next(&self) -> *const std::ffi::c_void {
27719		self.p_next.cast_const()
27720	}
27721
27722	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27723		self.p_next = p_next;
27724	}
27725
27726	fn address(&mut self) -> *mut std::ffi::c_void {
27727		std::ptr::from_mut(self).cast()
27728	}
27729}
27730
27731impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
27732	for vk::PhysicalDeviceRenderPassStripedFeaturesARM<'a>
27733{
27734}
27735
27736impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
27737	for vk::PhysicalDeviceRenderPassStripedFeaturesARM<'a>
27738{
27739}
27740
27741impl<'a> crate::construction::sealed::ChainNode
27742	for vk::PhysicalDeviceRenderPassStripedPropertiesARM<'a>
27743{
27744	const S_TYPE: vk::StructureType =
27745		vk::StructureType::PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM;
27746
27747	fn s_type(&self) -> vk::StructureType {
27748		self.s_type
27749	}
27750
27751	fn p_next(&self) -> *const std::ffi::c_void {
27752		self.p_next.cast_const()
27753	}
27754
27755	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27756		self.p_next = p_next;
27757	}
27758
27759	fn address(&mut self) -> *mut std::ffi::c_void {
27760		std::ptr::from_mut(self).cast()
27761	}
27762}
27763
27764impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
27765	for vk::PhysicalDeviceRenderPassStripedPropertiesARM<'a>
27766{
27767}
27768
27769impl<'a> crate::construction::sealed::ChainNode for vk::RenderPassStripeInfoARM<'a> {
27770	const S_TYPE: vk::StructureType = vk::StructureType::RENDER_PASS_STRIPE_INFO_ARM;
27771
27772	fn s_type(&self) -> vk::StructureType {
27773		self.s_type
27774	}
27775
27776	fn p_next(&self) -> *const std::ffi::c_void {
27777		self.p_next
27778	}
27779
27780	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27781		self.p_next = p_next.cast_const();
27782	}
27783
27784	fn address(&mut self) -> *mut std::ffi::c_void {
27785		std::ptr::from_mut(self).cast()
27786	}
27787}
27788
27789impl<'a> crate::construction::sealed::ChainNode for vk::RenderPassStripeBeginInfoARM<'a> {
27790	const S_TYPE: vk::StructureType = vk::StructureType::RENDER_PASS_STRIPE_BEGIN_INFO_ARM;
27791
27792	fn s_type(&self) -> vk::StructureType {
27793		self.s_type
27794	}
27795
27796	fn p_next(&self) -> *const std::ffi::c_void {
27797		self.p_next
27798	}
27799
27800	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27801		self.p_next = p_next.cast_const();
27802	}
27803
27804	fn address(&mut self) -> *mut std::ffi::c_void {
27805		std::ptr::from_mut(self).cast()
27806	}
27807}
27808
27809impl<'a, 'root> crate::Extends<vk::RenderingInfo<'root>> for vk::RenderPassStripeBeginInfoARM<'a> {}
27810
27811impl<'a, 'root> crate::Extends<vk::RenderPassBeginInfo<'root>>
27812	for vk::RenderPassStripeBeginInfoARM<'a>
27813{
27814}
27815
27816impl<'a> crate::construction::sealed::ChainNode for vk::RenderPassStripeSubmitInfoARM<'a> {
27817	const S_TYPE: vk::StructureType = vk::StructureType::RENDER_PASS_STRIPE_SUBMIT_INFO_ARM;
27818
27819	fn s_type(&self) -> vk::StructureType {
27820		self.s_type
27821	}
27822
27823	fn p_next(&self) -> *const std::ffi::c_void {
27824		self.p_next
27825	}
27826
27827	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27828		self.p_next = p_next.cast_const();
27829	}
27830
27831	fn address(&mut self) -> *mut std::ffi::c_void {
27832		std::ptr::from_mut(self).cast()
27833	}
27834}
27835
27836impl<'a, 'root> crate::Extends<vk::CommandBufferSubmitInfo<'root>>
27837	for vk::RenderPassStripeSubmitInfoARM<'a>
27838{
27839}
27840
27841impl<'a> crate::construction::sealed::ChainNode
27842	for vk::PhysicalDevicePipelineOpacityMicromapFeaturesARM<'a>
27843{
27844	const S_TYPE: vk::StructureType =
27845		vk::StructureType::PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM;
27846
27847	fn s_type(&self) -> vk::StructureType {
27848		self.s_type
27849	}
27850
27851	fn p_next(&self) -> *const std::ffi::c_void {
27852		self.p_next.cast_const()
27853	}
27854
27855	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27856		self.p_next = p_next;
27857	}
27858
27859	fn address(&mut self) -> *mut std::ffi::c_void {
27860		std::ptr::from_mut(self).cast()
27861	}
27862}
27863
27864impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
27865	for vk::PhysicalDevicePipelineOpacityMicromapFeaturesARM<'a>
27866{
27867}
27868
27869impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
27870	for vk::PhysicalDevicePipelineOpacityMicromapFeaturesARM<'a>
27871{
27872}
27873
27874impl<'a> crate::construction::sealed::ChainNode
27875	for vk::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR<'a>
27876{
27877	const S_TYPE: vk::StructureType =
27878		vk::StructureType::PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR;
27879
27880	fn s_type(&self) -> vk::StructureType {
27881		self.s_type
27882	}
27883
27884	fn p_next(&self) -> *const std::ffi::c_void {
27885		self.p_next.cast_const()
27886	}
27887
27888	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27889		self.p_next = p_next;
27890	}
27891
27892	fn address(&mut self) -> *mut std::ffi::c_void {
27893		std::ptr::from_mut(self).cast()
27894	}
27895}
27896
27897impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
27898	for vk::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR<'a>
27899{
27900}
27901
27902impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
27903	for vk::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR<'a>
27904{
27905}
27906
27907impl<'a> crate::construction::sealed::ChainNode
27908	for vk::PhysicalDeviceShaderSubgroupRotateFeatures<'a>
27909{
27910	const S_TYPE: vk::StructureType =
27911		vk::StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES;
27912
27913	fn s_type(&self) -> vk::StructureType {
27914		self.s_type
27915	}
27916
27917	fn p_next(&self) -> *const std::ffi::c_void {
27918		self.p_next.cast_const()
27919	}
27920
27921	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27922		self.p_next = p_next;
27923	}
27924
27925	fn address(&mut self) -> *mut std::ffi::c_void {
27926		std::ptr::from_mut(self).cast()
27927	}
27928}
27929
27930impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
27931	for vk::PhysicalDeviceShaderSubgroupRotateFeatures<'a>
27932{
27933}
27934
27935impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
27936	for vk::PhysicalDeviceShaderSubgroupRotateFeatures<'a>
27937{
27938}
27939
27940impl<'a> crate::construction::sealed::ChainNode
27941	for vk::PhysicalDeviceShaderExpectAssumeFeatures<'a>
27942{
27943	const S_TYPE: vk::StructureType =
27944		vk::StructureType::PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES;
27945
27946	fn s_type(&self) -> vk::StructureType {
27947		self.s_type
27948	}
27949
27950	fn p_next(&self) -> *const std::ffi::c_void {
27951		self.p_next.cast_const()
27952	}
27953
27954	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27955		self.p_next = p_next;
27956	}
27957
27958	fn address(&mut self) -> *mut std::ffi::c_void {
27959		std::ptr::from_mut(self).cast()
27960	}
27961}
27962
27963impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
27964	for vk::PhysicalDeviceShaderExpectAssumeFeatures<'a>
27965{
27966}
27967
27968impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
27969	for vk::PhysicalDeviceShaderExpectAssumeFeatures<'a>
27970{
27971}
27972
27973impl<'a> crate::construction::sealed::ChainNode
27974	for vk::PhysicalDeviceShaderFloatControls2Features<'a>
27975{
27976	const S_TYPE: vk::StructureType =
27977		vk::StructureType::PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES;
27978
27979	fn s_type(&self) -> vk::StructureType {
27980		self.s_type
27981	}
27982
27983	fn p_next(&self) -> *const std::ffi::c_void {
27984		self.p_next.cast_const()
27985	}
27986
27987	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
27988		self.p_next = p_next;
27989	}
27990
27991	fn address(&mut self) -> *mut std::ffi::c_void {
27992		std::ptr::from_mut(self).cast()
27993	}
27994}
27995
27996impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
27997	for vk::PhysicalDeviceShaderFloatControls2Features<'a>
27998{
27999}
28000
28001impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
28002	for vk::PhysicalDeviceShaderFloatControls2Features<'a>
28003{
28004}
28005
28006impl<'a> crate::construction::sealed::ChainNode
28007	for vk::PhysicalDeviceDynamicRenderingLocalReadFeatures<'a>
28008{
28009	const S_TYPE: vk::StructureType =
28010		vk::StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES;
28011
28012	fn s_type(&self) -> vk::StructureType {
28013		self.s_type
28014	}
28015
28016	fn p_next(&self) -> *const std::ffi::c_void {
28017		self.p_next.cast_const()
28018	}
28019
28020	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28021		self.p_next = p_next;
28022	}
28023
28024	fn address(&mut self) -> *mut std::ffi::c_void {
28025		std::ptr::from_mut(self).cast()
28026	}
28027}
28028
28029impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
28030	for vk::PhysicalDeviceDynamicRenderingLocalReadFeatures<'a>
28031{
28032}
28033
28034impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
28035	for vk::PhysicalDeviceDynamicRenderingLocalReadFeatures<'a>
28036{
28037}
28038
28039impl<'a> crate::construction::sealed::ChainNode for vk::RenderingAttachmentLocationInfo<'a> {
28040	const S_TYPE: vk::StructureType = vk::StructureType::RENDERING_ATTACHMENT_LOCATION_INFO;
28041
28042	fn s_type(&self) -> vk::StructureType {
28043		self.s_type
28044	}
28045
28046	fn p_next(&self) -> *const std::ffi::c_void {
28047		self.p_next
28048	}
28049
28050	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28051		self.p_next = p_next.cast_const();
28052	}
28053
28054	fn address(&mut self) -> *mut std::ffi::c_void {
28055		std::ptr::from_mut(self).cast()
28056	}
28057}
28058
28059impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
28060	for vk::RenderingAttachmentLocationInfo<'a>
28061{
28062}
28063
28064impl<'a, 'root> crate::Extends<vk::CommandBufferInheritanceInfo<'root>>
28065	for vk::RenderingAttachmentLocationInfo<'a>
28066{
28067}
28068
28069impl<'a> crate::construction::sealed::ChainNode for vk::RenderingInputAttachmentIndexInfo<'a> {
28070	const S_TYPE: vk::StructureType = vk::StructureType::RENDERING_INPUT_ATTACHMENT_INDEX_INFO;
28071
28072	fn s_type(&self) -> vk::StructureType {
28073		self.s_type
28074	}
28075
28076	fn p_next(&self) -> *const std::ffi::c_void {
28077		self.p_next
28078	}
28079
28080	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28081		self.p_next = p_next.cast_const();
28082	}
28083
28084	fn address(&mut self) -> *mut std::ffi::c_void {
28085		std::ptr::from_mut(self).cast()
28086	}
28087}
28088
28089impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
28090	for vk::RenderingInputAttachmentIndexInfo<'a>
28091{
28092}
28093
28094impl<'a, 'root> crate::Extends<vk::CommandBufferInheritanceInfo<'root>>
28095	for vk::RenderingInputAttachmentIndexInfo<'a>
28096{
28097}
28098
28099impl<'a> crate::construction::sealed::ChainNode
28100	for vk::PhysicalDeviceShaderQuadControlFeaturesKHR<'a>
28101{
28102	const S_TYPE: vk::StructureType =
28103		vk::StructureType::PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR;
28104
28105	fn s_type(&self) -> vk::StructureType {
28106		self.s_type
28107	}
28108
28109	fn p_next(&self) -> *const std::ffi::c_void {
28110		self.p_next.cast_const()
28111	}
28112
28113	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28114		self.p_next = p_next;
28115	}
28116
28117	fn address(&mut self) -> *mut std::ffi::c_void {
28118		std::ptr::from_mut(self).cast()
28119	}
28120}
28121
28122impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
28123	for vk::PhysicalDeviceShaderQuadControlFeaturesKHR<'a>
28124{
28125}
28126
28127impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
28128	for vk::PhysicalDeviceShaderQuadControlFeaturesKHR<'a>
28129{
28130}
28131
28132impl<'a> crate::construction::sealed::ChainNode
28133	for vk::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV<'a>
28134{
28135	const S_TYPE: vk::StructureType =
28136		vk::StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV;
28137
28138	fn s_type(&self) -> vk::StructureType {
28139		self.s_type
28140	}
28141
28142	fn p_next(&self) -> *const std::ffi::c_void {
28143		self.p_next.cast_const()
28144	}
28145
28146	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28147		self.p_next = p_next;
28148	}
28149
28150	fn address(&mut self) -> *mut std::ffi::c_void {
28151		std::ptr::from_mut(self).cast()
28152	}
28153}
28154
28155impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
28156	for vk::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV<'a>
28157{
28158}
28159
28160impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
28161	for vk::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV<'a>
28162{
28163}
28164
28165impl<'a> crate::construction::sealed::ChainNode
28166	for vk::PhysicalDeviceMapMemoryPlacedFeaturesEXT<'a>
28167{
28168	const S_TYPE: vk::StructureType =
28169		vk::StructureType::PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT;
28170
28171	fn s_type(&self) -> vk::StructureType {
28172		self.s_type
28173	}
28174
28175	fn p_next(&self) -> *const std::ffi::c_void {
28176		self.p_next.cast_const()
28177	}
28178
28179	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28180		self.p_next = p_next;
28181	}
28182
28183	fn address(&mut self) -> *mut std::ffi::c_void {
28184		std::ptr::from_mut(self).cast()
28185	}
28186}
28187
28188impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
28189	for vk::PhysicalDeviceMapMemoryPlacedFeaturesEXT<'a>
28190{
28191}
28192
28193impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
28194	for vk::PhysicalDeviceMapMemoryPlacedFeaturesEXT<'a>
28195{
28196}
28197
28198impl<'a> crate::construction::sealed::ChainNode
28199	for vk::PhysicalDeviceMapMemoryPlacedPropertiesEXT<'a>
28200{
28201	const S_TYPE: vk::StructureType =
28202		vk::StructureType::PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT;
28203
28204	fn s_type(&self) -> vk::StructureType {
28205		self.s_type
28206	}
28207
28208	fn p_next(&self) -> *const std::ffi::c_void {
28209		self.p_next.cast_const()
28210	}
28211
28212	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28213		self.p_next = p_next;
28214	}
28215
28216	fn address(&mut self) -> *mut std::ffi::c_void {
28217		std::ptr::from_mut(self).cast()
28218	}
28219}
28220
28221impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
28222	for vk::PhysicalDeviceMapMemoryPlacedPropertiesEXT<'a>
28223{
28224}
28225
28226impl<'a> crate::construction::sealed::ChainNode for vk::MemoryMapPlacedInfoEXT<'a> {
28227	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_MAP_PLACED_INFO_EXT;
28228
28229	fn s_type(&self) -> vk::StructureType {
28230		self.s_type
28231	}
28232
28233	fn p_next(&self) -> *const std::ffi::c_void {
28234		self.p_next
28235	}
28236
28237	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28238		self.p_next = p_next.cast_const();
28239	}
28240
28241	fn address(&mut self) -> *mut std::ffi::c_void {
28242		std::ptr::from_mut(self).cast()
28243	}
28244}
28245
28246impl<'a, 'root> crate::Extends<vk::MemoryMapInfo<'root>> for vk::MemoryMapPlacedInfoEXT<'a> {}
28247
28248impl<'a> crate::construction::sealed::ChainNode
28249	for vk::PhysicalDeviceShaderBfloat16FeaturesKHR<'a>
28250{
28251	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR;
28252
28253	fn s_type(&self) -> vk::StructureType {
28254		self.s_type
28255	}
28256
28257	fn p_next(&self) -> *const std::ffi::c_void {
28258		self.p_next.cast_const()
28259	}
28260
28261	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28262		self.p_next = p_next;
28263	}
28264
28265	fn address(&mut self) -> *mut std::ffi::c_void {
28266		std::ptr::from_mut(self).cast()
28267	}
28268}
28269
28270impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
28271	for vk::PhysicalDeviceShaderBfloat16FeaturesKHR<'a>
28272{
28273}
28274
28275impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
28276	for vk::PhysicalDeviceShaderBfloat16FeaturesKHR<'a>
28277{
28278}
28279
28280impl<'a> crate::construction::sealed::ChainNode
28281	for vk::PhysicalDeviceRawAccessChainsFeaturesNV<'a>
28282{
28283	const S_TYPE: vk::StructureType =
28284		vk::StructureType::PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV;
28285
28286	fn s_type(&self) -> vk::StructureType {
28287		self.s_type
28288	}
28289
28290	fn p_next(&self) -> *const std::ffi::c_void {
28291		self.p_next.cast_const()
28292	}
28293
28294	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28295		self.p_next = p_next;
28296	}
28297
28298	fn address(&mut self) -> *mut std::ffi::c_void {
28299		std::ptr::from_mut(self).cast()
28300	}
28301}
28302
28303impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
28304	for vk::PhysicalDeviceRawAccessChainsFeaturesNV<'a>
28305{
28306}
28307
28308impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
28309	for vk::PhysicalDeviceRawAccessChainsFeaturesNV<'a>
28310{
28311}
28312
28313impl<'a> crate::construction::sealed::ChainNode
28314	for vk::PhysicalDeviceCommandBufferInheritanceFeaturesNV<'a>
28315{
28316	const S_TYPE: vk::StructureType =
28317		vk::StructureType::PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV;
28318
28319	fn s_type(&self) -> vk::StructureType {
28320		self.s_type
28321	}
28322
28323	fn p_next(&self) -> *const std::ffi::c_void {
28324		self.p_next.cast_const()
28325	}
28326
28327	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28328		self.p_next = p_next;
28329	}
28330
28331	fn address(&mut self) -> *mut std::ffi::c_void {
28332		std::ptr::from_mut(self).cast()
28333	}
28334}
28335
28336impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
28337	for vk::PhysicalDeviceCommandBufferInheritanceFeaturesNV<'a>
28338{
28339}
28340
28341impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
28342	for vk::PhysicalDeviceCommandBufferInheritanceFeaturesNV<'a>
28343{
28344}
28345
28346impl<'a> crate::construction::sealed::ChainNode
28347	for vk::PhysicalDeviceImageAlignmentControlFeaturesMESA<'a>
28348{
28349	const S_TYPE: vk::StructureType =
28350		vk::StructureType::PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA;
28351
28352	fn s_type(&self) -> vk::StructureType {
28353		self.s_type
28354	}
28355
28356	fn p_next(&self) -> *const std::ffi::c_void {
28357		self.p_next.cast_const()
28358	}
28359
28360	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28361		self.p_next = p_next;
28362	}
28363
28364	fn address(&mut self) -> *mut std::ffi::c_void {
28365		std::ptr::from_mut(self).cast()
28366	}
28367}
28368
28369impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
28370	for vk::PhysicalDeviceImageAlignmentControlFeaturesMESA<'a>
28371{
28372}
28373
28374impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
28375	for vk::PhysicalDeviceImageAlignmentControlFeaturesMESA<'a>
28376{
28377}
28378
28379impl<'a> crate::construction::sealed::ChainNode
28380	for vk::PhysicalDeviceImageAlignmentControlPropertiesMESA<'a>
28381{
28382	const S_TYPE: vk::StructureType =
28383		vk::StructureType::PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA;
28384
28385	fn s_type(&self) -> vk::StructureType {
28386		self.s_type
28387	}
28388
28389	fn p_next(&self) -> *const std::ffi::c_void {
28390		self.p_next.cast_const()
28391	}
28392
28393	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28394		self.p_next = p_next;
28395	}
28396
28397	fn address(&mut self) -> *mut std::ffi::c_void {
28398		std::ptr::from_mut(self).cast()
28399	}
28400}
28401
28402impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
28403	for vk::PhysicalDeviceImageAlignmentControlPropertiesMESA<'a>
28404{
28405}
28406
28407impl<'a> crate::construction::sealed::ChainNode for vk::ImageAlignmentControlCreateInfoMESA<'a> {
28408	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA;
28409
28410	fn s_type(&self) -> vk::StructureType {
28411		self.s_type
28412	}
28413
28414	fn p_next(&self) -> *const std::ffi::c_void {
28415		self.p_next
28416	}
28417
28418	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28419		self.p_next = p_next.cast_const();
28420	}
28421
28422	fn address(&mut self) -> *mut std::ffi::c_void {
28423		std::ptr::from_mut(self).cast()
28424	}
28425}
28426
28427impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>>
28428	for vk::ImageAlignmentControlCreateInfoMESA<'a>
28429{
28430}
28431
28432impl<'a> crate::construction::sealed::ChainNode
28433	for vk::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT<'a>
28434{
28435	const S_TYPE: vk::StructureType =
28436		vk::StructureType::PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT;
28437
28438	fn s_type(&self) -> vk::StructureType {
28439		self.s_type
28440	}
28441
28442	fn p_next(&self) -> *const std::ffi::c_void {
28443		self.p_next.cast_const()
28444	}
28445
28446	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28447		self.p_next = p_next;
28448	}
28449
28450	fn address(&mut self) -> *mut std::ffi::c_void {
28451		std::ptr::from_mut(self).cast()
28452	}
28453}
28454
28455impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
28456	for vk::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT<'a>
28457{
28458}
28459
28460impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
28461	for vk::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT<'a>
28462{
28463}
28464
28465impl<'a> crate::construction::sealed::ChainNode
28466	for vk::PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR<'a>
28467{
28468	const S_TYPE: vk::StructureType =
28469		vk::StructureType::PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR;
28470
28471	fn s_type(&self) -> vk::StructureType {
28472		self.s_type
28473	}
28474
28475	fn p_next(&self) -> *const std::ffi::c_void {
28476		self.p_next.cast_const()
28477	}
28478
28479	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28480		self.p_next = p_next;
28481	}
28482
28483	fn address(&mut self) -> *mut std::ffi::c_void {
28484		std::ptr::from_mut(self).cast()
28485	}
28486}
28487
28488impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
28489	for vk::PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR<'a>
28490{
28491}
28492
28493impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
28494	for vk::PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR<'a>
28495{
28496}
28497
28498impl<'a> crate::construction::sealed::ChainNode
28499	for vk::PhysicalDeviceCooperativeMatrix2FeaturesNV<'a>
28500{
28501	const S_TYPE: vk::StructureType =
28502		vk::StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV;
28503
28504	fn s_type(&self) -> vk::StructureType {
28505		self.s_type
28506	}
28507
28508	fn p_next(&self) -> *const std::ffi::c_void {
28509		self.p_next.cast_const()
28510	}
28511
28512	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28513		self.p_next = p_next;
28514	}
28515
28516	fn address(&mut self) -> *mut std::ffi::c_void {
28517		std::ptr::from_mut(self).cast()
28518	}
28519}
28520
28521impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
28522	for vk::PhysicalDeviceCooperativeMatrix2FeaturesNV<'a>
28523{
28524}
28525
28526impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
28527	for vk::PhysicalDeviceCooperativeMatrix2FeaturesNV<'a>
28528{
28529}
28530
28531impl<'a> crate::construction::sealed::ChainNode
28532	for vk::PhysicalDeviceCooperativeMatrix2PropertiesNV<'a>
28533{
28534	const S_TYPE: vk::StructureType =
28535		vk::StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV;
28536
28537	fn s_type(&self) -> vk::StructureType {
28538		self.s_type
28539	}
28540
28541	fn p_next(&self) -> *const std::ffi::c_void {
28542		self.p_next.cast_const()
28543	}
28544
28545	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28546		self.p_next = p_next;
28547	}
28548
28549	fn address(&mut self) -> *mut std::ffi::c_void {
28550		std::ptr::from_mut(self).cast()
28551	}
28552}
28553
28554impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
28555	for vk::PhysicalDeviceCooperativeMatrix2PropertiesNV<'a>
28556{
28557}
28558
28559impl<'a> crate::construction::sealed::ChainNode
28560	for vk::CooperativeMatrixFlexibleDimensionsPropertiesNV<'a>
28561{
28562	const S_TYPE: vk::StructureType =
28563		vk::StructureType::COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV;
28564
28565	fn s_type(&self) -> vk::StructureType {
28566		self.s_type
28567	}
28568
28569	fn p_next(&self) -> *const std::ffi::c_void {
28570		self.p_next.cast_const()
28571	}
28572
28573	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28574		self.p_next = p_next;
28575	}
28576
28577	fn address(&mut self) -> *mut std::ffi::c_void {
28578		std::ptr::from_mut(self).cast()
28579	}
28580}
28581
28582impl<'a> crate::construction::sealed::ChainNode
28583	for vk::PhysicalDeviceCooperativeMatrixDecodeVectorFeaturesNV<'a>
28584{
28585	const S_TYPE: vk::StructureType =
28586		vk::StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_DECODE_VECTOR_FEATURES_NV;
28587
28588	fn s_type(&self) -> vk::StructureType {
28589		self.s_type
28590	}
28591
28592	fn p_next(&self) -> *const std::ffi::c_void {
28593		self.p_next.cast_const()
28594	}
28595
28596	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28597		self.p_next = p_next;
28598	}
28599
28600	fn address(&mut self) -> *mut std::ffi::c_void {
28601		std::ptr::from_mut(self).cast()
28602	}
28603}
28604
28605impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
28606	for vk::PhysicalDeviceCooperativeMatrixDecodeVectorFeaturesNV<'a>
28607{
28608}
28609
28610impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
28611	for vk::PhysicalDeviceCooperativeMatrixDecodeVectorFeaturesNV<'a>
28612{
28613}
28614
28615impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceHdrVividFeaturesHUAWEI<'a> {
28616	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI;
28617
28618	fn s_type(&self) -> vk::StructureType {
28619		self.s_type
28620	}
28621
28622	fn p_next(&self) -> *const std::ffi::c_void {
28623		self.p_next.cast_const()
28624	}
28625
28626	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28627		self.p_next = p_next;
28628	}
28629
28630	fn address(&mut self) -> *mut std::ffi::c_void {
28631		std::ptr::from_mut(self).cast()
28632	}
28633}
28634
28635impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
28636	for vk::PhysicalDeviceHdrVividFeaturesHUAWEI<'a>
28637{
28638}
28639
28640impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
28641	for vk::PhysicalDeviceHdrVividFeaturesHUAWEI<'a>
28642{
28643}
28644
28645impl<'a> crate::construction::sealed::ChainNode
28646	for vk::PhysicalDeviceVertexAttributeRobustnessFeaturesEXT<'a>
28647{
28648	const S_TYPE: vk::StructureType =
28649		vk::StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT;
28650
28651	fn s_type(&self) -> vk::StructureType {
28652		self.s_type
28653	}
28654
28655	fn p_next(&self) -> *const std::ffi::c_void {
28656		self.p_next.cast_const()
28657	}
28658
28659	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28660		self.p_next = p_next;
28661	}
28662
28663	fn address(&mut self) -> *mut std::ffi::c_void {
28664		std::ptr::from_mut(self).cast()
28665	}
28666}
28667
28668impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
28669	for vk::PhysicalDeviceVertexAttributeRobustnessFeaturesEXT<'a>
28670{
28671}
28672
28673impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
28674	for vk::PhysicalDeviceVertexAttributeRobustnessFeaturesEXT<'a>
28675{
28676}
28677
28678#[cfg(feature = "provisional")]
28679impl<'a> crate::construction::sealed::ChainNode
28680	for vk::PhysicalDeviceDenseGeometryFormatFeaturesAMDX<'a>
28681{
28682	const S_TYPE: vk::StructureType =
28683		vk::StructureType::PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX;
28684
28685	fn s_type(&self) -> vk::StructureType {
28686		self.s_type
28687	}
28688
28689	fn p_next(&self) -> *const std::ffi::c_void {
28690		self.p_next.cast_const()
28691	}
28692
28693	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28694		self.p_next = p_next;
28695	}
28696
28697	fn address(&mut self) -> *mut std::ffi::c_void {
28698		std::ptr::from_mut(self).cast()
28699	}
28700}
28701
28702#[cfg(feature = "provisional")]
28703impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
28704	for vk::PhysicalDeviceDenseGeometryFormatFeaturesAMDX<'a>
28705{
28706}
28707
28708#[cfg(feature = "provisional")]
28709impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
28710	for vk::PhysicalDeviceDenseGeometryFormatFeaturesAMDX<'a>
28711{
28712}
28713
28714#[cfg(feature = "provisional")]
28715impl<'a> crate::construction::sealed::ChainNode
28716	for vk::AccelerationStructureDenseGeometryFormatTrianglesDataAMDX<'a>
28717{
28718	const S_TYPE: vk::StructureType =
28719		vk::StructureType::ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX;
28720
28721	fn s_type(&self) -> vk::StructureType {
28722		self.s_type
28723	}
28724
28725	fn p_next(&self) -> *const std::ffi::c_void {
28726		self.p_next
28727	}
28728
28729	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28730		self.p_next = p_next.cast_const();
28731	}
28732
28733	fn address(&mut self) -> *mut std::ffi::c_void {
28734		std::ptr::from_mut(self).cast()
28735	}
28736}
28737
28738#[cfg(feature = "provisional")]
28739impl<'a, 'root> crate::Extends<vk::AccelerationStructureGeometryKHR<'root>>
28740	for vk::AccelerationStructureDenseGeometryFormatTrianglesDataAMDX<'a>
28741{
28742}
28743
28744impl<'a> crate::construction::sealed::ChainNode
28745	for vk::PhysicalDeviceDepthClampZeroOneFeaturesKHR<'a>
28746{
28747	const S_TYPE: vk::StructureType =
28748		vk::StructureType::PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR;
28749
28750	fn s_type(&self) -> vk::StructureType {
28751		self.s_type
28752	}
28753
28754	fn p_next(&self) -> *const std::ffi::c_void {
28755		self.p_next.cast_const()
28756	}
28757
28758	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28759		self.p_next = p_next;
28760	}
28761
28762	fn address(&mut self) -> *mut std::ffi::c_void {
28763		std::ptr::from_mut(self).cast()
28764	}
28765}
28766
28767impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
28768	for vk::PhysicalDeviceDepthClampZeroOneFeaturesKHR<'a>
28769{
28770}
28771
28772impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
28773	for vk::PhysicalDeviceDepthClampZeroOneFeaturesKHR<'a>
28774{
28775}
28776
28777impl<'a> crate::construction::sealed::ChainNode
28778	for vk::PhysicalDeviceCooperativeVectorFeaturesNV<'a>
28779{
28780	const S_TYPE: vk::StructureType =
28781		vk::StructureType::PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV;
28782
28783	fn s_type(&self) -> vk::StructureType {
28784		self.s_type
28785	}
28786
28787	fn p_next(&self) -> *const std::ffi::c_void {
28788		self.p_next.cast_const()
28789	}
28790
28791	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28792		self.p_next = p_next;
28793	}
28794
28795	fn address(&mut self) -> *mut std::ffi::c_void {
28796		std::ptr::from_mut(self).cast()
28797	}
28798}
28799
28800impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
28801	for vk::PhysicalDeviceCooperativeVectorFeaturesNV<'a>
28802{
28803}
28804
28805impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
28806	for vk::PhysicalDeviceCooperativeVectorFeaturesNV<'a>
28807{
28808}
28809
28810impl<'a> crate::construction::sealed::ChainNode for vk::CooperativeVectorPropertiesNV<'a> {
28811	const S_TYPE: vk::StructureType = vk::StructureType::COOPERATIVE_VECTOR_PROPERTIES_NV;
28812
28813	fn s_type(&self) -> vk::StructureType {
28814		self.s_type
28815	}
28816
28817	fn p_next(&self) -> *const std::ffi::c_void {
28818		self.p_next.cast_const()
28819	}
28820
28821	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28822		self.p_next = p_next;
28823	}
28824
28825	fn address(&mut self) -> *mut std::ffi::c_void {
28826		std::ptr::from_mut(self).cast()
28827	}
28828}
28829
28830impl<'a> crate::construction::sealed::ChainNode
28831	for vk::PhysicalDeviceCooperativeVectorPropertiesNV<'a>
28832{
28833	const S_TYPE: vk::StructureType =
28834		vk::StructureType::PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV;
28835
28836	fn s_type(&self) -> vk::StructureType {
28837		self.s_type
28838	}
28839
28840	fn p_next(&self) -> *const std::ffi::c_void {
28841		self.p_next.cast_const()
28842	}
28843
28844	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28845		self.p_next = p_next;
28846	}
28847
28848	fn address(&mut self) -> *mut std::ffi::c_void {
28849		std::ptr::from_mut(self).cast()
28850	}
28851}
28852
28853impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
28854	for vk::PhysicalDeviceCooperativeVectorPropertiesNV<'a>
28855{
28856}
28857
28858impl<'a> crate::construction::sealed::ChainNode for vk::ConvertCooperativeVectorMatrixInfoNV<'a> {
28859	const S_TYPE: vk::StructureType = vk::StructureType::CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV;
28860
28861	fn s_type(&self) -> vk::StructureType {
28862		self.s_type
28863	}
28864
28865	fn p_next(&self) -> *const std::ffi::c_void {
28866		self.p_next
28867	}
28868
28869	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28870		self.p_next = p_next.cast_const();
28871	}
28872
28873	fn address(&mut self) -> *mut std::ffi::c_void {
28874		std::ptr::from_mut(self).cast()
28875	}
28876}
28877
28878impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceTileShadingFeaturesQCOM<'a> {
28879	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM;
28880
28881	fn s_type(&self) -> vk::StructureType {
28882		self.s_type
28883	}
28884
28885	fn p_next(&self) -> *const std::ffi::c_void {
28886		self.p_next.cast_const()
28887	}
28888
28889	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28890		self.p_next = p_next;
28891	}
28892
28893	fn address(&mut self) -> *mut std::ffi::c_void {
28894		std::ptr::from_mut(self).cast()
28895	}
28896}
28897
28898impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
28899	for vk::PhysicalDeviceTileShadingFeaturesQCOM<'a>
28900{
28901}
28902
28903impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
28904	for vk::PhysicalDeviceTileShadingFeaturesQCOM<'a>
28905{
28906}
28907
28908impl<'a> crate::construction::sealed::ChainNode
28909	for vk::PhysicalDeviceTileShadingPropertiesQCOM<'a>
28910{
28911	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM;
28912
28913	fn s_type(&self) -> vk::StructureType {
28914		self.s_type
28915	}
28916
28917	fn p_next(&self) -> *const std::ffi::c_void {
28918		self.p_next.cast_const()
28919	}
28920
28921	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28922		self.p_next = p_next;
28923	}
28924
28925	fn address(&mut self) -> *mut std::ffi::c_void {
28926		std::ptr::from_mut(self).cast()
28927	}
28928}
28929
28930impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
28931	for vk::PhysicalDeviceTileShadingPropertiesQCOM<'a>
28932{
28933}
28934
28935impl<'a> crate::construction::sealed::ChainNode for vk::RenderPassTileShadingCreateInfoQCOM<'a> {
28936	const S_TYPE: vk::StructureType = vk::StructureType::RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM;
28937
28938	fn s_type(&self) -> vk::StructureType {
28939		self.s_type
28940	}
28941
28942	fn p_next(&self) -> *const std::ffi::c_void {
28943		self.p_next
28944	}
28945
28946	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28947		self.p_next = p_next.cast_const();
28948	}
28949
28950	fn address(&mut self) -> *mut std::ffi::c_void {
28951		std::ptr::from_mut(self).cast()
28952	}
28953}
28954
28955impl<'a, 'root> crate::Extends<vk::RenderPassCreateInfo<'root>>
28956	for vk::RenderPassTileShadingCreateInfoQCOM<'a>
28957{
28958}
28959
28960impl<'a, 'root> crate::Extends<vk::RenderPassCreateInfo2<'root>>
28961	for vk::RenderPassTileShadingCreateInfoQCOM<'a>
28962{
28963}
28964
28965impl<'a, 'root> crate::Extends<vk::RenderingInfo<'root>>
28966	for vk::RenderPassTileShadingCreateInfoQCOM<'a>
28967{
28968}
28969
28970impl<'a, 'root> crate::Extends<vk::CommandBufferInheritanceInfo<'root>>
28971	for vk::RenderPassTileShadingCreateInfoQCOM<'a>
28972{
28973}
28974
28975impl<'a> crate::construction::sealed::ChainNode for vk::PerTileBeginInfoQCOM<'a> {
28976	const S_TYPE: vk::StructureType = vk::StructureType::PER_TILE_BEGIN_INFO_QCOM;
28977
28978	fn s_type(&self) -> vk::StructureType {
28979		self.s_type
28980	}
28981
28982	fn p_next(&self) -> *const std::ffi::c_void {
28983		self.p_next
28984	}
28985
28986	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
28987		self.p_next = p_next.cast_const();
28988	}
28989
28990	fn address(&mut self) -> *mut std::ffi::c_void {
28991		std::ptr::from_mut(self).cast()
28992	}
28993}
28994
28995impl<'a> crate::construction::sealed::ChainNode for vk::PerTileEndInfoQCOM<'a> {
28996	const S_TYPE: vk::StructureType = vk::StructureType::PER_TILE_END_INFO_QCOM;
28997
28998	fn s_type(&self) -> vk::StructureType {
28999		self.s_type
29000	}
29001
29002	fn p_next(&self) -> *const std::ffi::c_void {
29003		self.p_next
29004	}
29005
29006	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29007		self.p_next = p_next.cast_const();
29008	}
29009
29010	fn address(&mut self) -> *mut std::ffi::c_void {
29011		std::ptr::from_mut(self).cast()
29012	}
29013}
29014
29015impl<'a> crate::construction::sealed::ChainNode for vk::DispatchTileInfoQCOM<'a> {
29016	const S_TYPE: vk::StructureType = vk::StructureType::DISPATCH_TILE_INFO_QCOM;
29017
29018	fn s_type(&self) -> vk::StructureType {
29019		self.s_type
29020	}
29021
29022	fn p_next(&self) -> *const std::ffi::c_void {
29023		self.p_next
29024	}
29025
29026	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29027		self.p_next = p_next.cast_const();
29028	}
29029
29030	fn address(&mut self) -> *mut std::ffi::c_void {
29031		std::ptr::from_mut(self).cast()
29032	}
29033}
29034
29035impl<'a> crate::construction::sealed::ChainNode
29036	for vk::PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE<'a>
29037{
29038	const S_TYPE: vk::StructureType =
29039		vk::StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE;
29040
29041	fn s_type(&self) -> vk::StructureType {
29042		self.s_type
29043	}
29044
29045	fn p_next(&self) -> *const std::ffi::c_void {
29046		self.p_next.cast_const()
29047	}
29048
29049	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29050		self.p_next = p_next;
29051	}
29052
29053	fn address(&mut self) -> *mut std::ffi::c_void {
29054		std::ptr::from_mut(self).cast()
29055	}
29056}
29057
29058impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
29059	for vk::PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE<'a>
29060{
29061}
29062
29063impl<'a> crate::construction::sealed::ChainNode
29064	for vk::PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE<'a>
29065{
29066	const S_TYPE: vk::StructureType =
29067		vk::StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE;
29068
29069	fn s_type(&self) -> vk::StructureType {
29070		self.s_type
29071	}
29072
29073	fn p_next(&self) -> *const std::ffi::c_void {
29074		self.p_next.cast_const()
29075	}
29076
29077	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29078		self.p_next = p_next;
29079	}
29080
29081	fn address(&mut self) -> *mut std::ffi::c_void {
29082		std::ptr::from_mut(self).cast()
29083	}
29084}
29085
29086impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
29087	for vk::PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE<'a>
29088{
29089}
29090
29091impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
29092	for vk::PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE<'a>
29093{
29094}
29095
29096impl<'a> crate::construction::sealed::ChainNode
29097	for vk::PipelineFragmentDensityMapLayeredCreateInfoVALVE<'a>
29098{
29099	const S_TYPE: vk::StructureType =
29100		vk::StructureType::PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE;
29101
29102	fn s_type(&self) -> vk::StructureType {
29103		self.s_type
29104	}
29105
29106	fn p_next(&self) -> *const std::ffi::c_void {
29107		self.p_next
29108	}
29109
29110	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29111		self.p_next = p_next.cast_const();
29112	}
29113
29114	fn address(&mut self) -> *mut std::ffi::c_void {
29115		std::ptr::from_mut(self).cast()
29116	}
29117}
29118
29119impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
29120	for vk::PipelineFragmentDensityMapLayeredCreateInfoVALVE<'a>
29121{
29122}
29123
29124impl<'a> crate::construction::sealed::ChainNode for vk::SetPresentConfigNV<'a> {
29125	const S_TYPE: vk::StructureType = vk::StructureType::SET_PRESENT_CONFIG_NV;
29126
29127	fn s_type(&self) -> vk::StructureType {
29128		self.s_type
29129	}
29130
29131	fn p_next(&self) -> *const std::ffi::c_void {
29132		self.p_next
29133	}
29134
29135	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29136		self.p_next = p_next.cast_const();
29137	}
29138
29139	fn address(&mut self) -> *mut std::ffi::c_void {
29140		std::ptr::from_mut(self).cast()
29141	}
29142}
29143
29144impl<'a, 'root> crate::Extends<vk::PresentInfoKHR<'root>> for vk::SetPresentConfigNV<'a> {}
29145
29146impl<'a> crate::construction::sealed::ChainNode
29147	for vk::PhysicalDevicePresentMeteringFeaturesNV<'a>
29148{
29149	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV;
29150
29151	fn s_type(&self) -> vk::StructureType {
29152		self.s_type
29153	}
29154
29155	fn p_next(&self) -> *const std::ffi::c_void {
29156		self.p_next.cast_const()
29157	}
29158
29159	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29160		self.p_next = p_next;
29161	}
29162
29163	fn address(&mut self) -> *mut std::ffi::c_void {
29164		std::ptr::from_mut(self).cast()
29165	}
29166}
29167
29168impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
29169	for vk::PhysicalDevicePresentMeteringFeaturesNV<'a>
29170{
29171}
29172
29173impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
29174	for vk::PhysicalDevicePresentMeteringFeaturesNV<'a>
29175{
29176}
29177
29178impl<'a> crate::construction::sealed::ChainNode for vk::ExternalComputeQueueDeviceCreateInfoNV<'a> {
29179	const S_TYPE: vk::StructureType = vk::StructureType::EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV;
29180
29181	fn s_type(&self) -> vk::StructureType {
29182		self.s_type
29183	}
29184
29185	fn p_next(&self) -> *const std::ffi::c_void {
29186		self.p_next
29187	}
29188
29189	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29190		self.p_next = p_next.cast_const();
29191	}
29192
29193	fn address(&mut self) -> *mut std::ffi::c_void {
29194		std::ptr::from_mut(self).cast()
29195	}
29196}
29197
29198impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
29199	for vk::ExternalComputeQueueDeviceCreateInfoNV<'a>
29200{
29201}
29202
29203impl<'a> crate::construction::sealed::ChainNode for vk::ExternalComputeQueueCreateInfoNV<'a> {
29204	const S_TYPE: vk::StructureType = vk::StructureType::EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV;
29205
29206	fn s_type(&self) -> vk::StructureType {
29207		self.s_type
29208	}
29209
29210	fn p_next(&self) -> *const std::ffi::c_void {
29211		self.p_next
29212	}
29213
29214	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29215		self.p_next = p_next.cast_const();
29216	}
29217
29218	fn address(&mut self) -> *mut std::ffi::c_void {
29219		std::ptr::from_mut(self).cast()
29220	}
29221}
29222
29223impl<'a> crate::construction::sealed::ChainNode for vk::ExternalComputeQueueDataParamsNV<'a> {
29224	const S_TYPE: vk::StructureType = vk::StructureType::EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV;
29225
29226	fn s_type(&self) -> vk::StructureType {
29227		self.s_type
29228	}
29229
29230	fn p_next(&self) -> *const std::ffi::c_void {
29231		self.p_next
29232	}
29233
29234	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29235		self.p_next = p_next.cast_const();
29236	}
29237
29238	fn address(&mut self) -> *mut std::ffi::c_void {
29239		std::ptr::from_mut(self).cast()
29240	}
29241}
29242
29243impl<'a> crate::construction::sealed::ChainNode
29244	for vk::PhysicalDeviceExternalComputeQueuePropertiesNV<'a>
29245{
29246	const S_TYPE: vk::StructureType =
29247		vk::StructureType::PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV;
29248
29249	fn s_type(&self) -> vk::StructureType {
29250		self.s_type
29251	}
29252
29253	fn p_next(&self) -> *const std::ffi::c_void {
29254		self.p_next.cast_const()
29255	}
29256
29257	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29258		self.p_next = p_next;
29259	}
29260
29261	fn address(&mut self) -> *mut std::ffi::c_void {
29262		std::ptr::from_mut(self).cast()
29263	}
29264}
29265
29266impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
29267	for vk::PhysicalDeviceExternalComputeQueuePropertiesNV<'a>
29268{
29269}
29270
29271impl<'a> crate::construction::sealed::ChainNode
29272	for vk::PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT<'a>
29273{
29274	const S_TYPE: vk::StructureType =
29275		vk::StructureType::PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT;
29276
29277	fn s_type(&self) -> vk::StructureType {
29278		self.s_type
29279	}
29280
29281	fn p_next(&self) -> *const std::ffi::c_void {
29282		self.p_next.cast_const()
29283	}
29284
29285	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29286		self.p_next = p_next;
29287	}
29288
29289	fn address(&mut self) -> *mut std::ffi::c_void {
29290		std::ptr::from_mut(self).cast()
29291	}
29292}
29293
29294impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
29295	for vk::PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT<'a>
29296{
29297}
29298
29299impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
29300	for vk::PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT<'a>
29301{
29302}
29303
29304impl<'a> crate::construction::sealed::ChainNode
29305	for vk::PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE<'a>
29306{
29307	const S_TYPE: vk::StructureType =
29308		vk::StructureType::PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE;
29309
29310	fn s_type(&self) -> vk::StructureType {
29311		self.s_type
29312	}
29313
29314	fn p_next(&self) -> *const std::ffi::c_void {
29315		self.p_next.cast_const()
29316	}
29317
29318	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29319		self.p_next = p_next;
29320	}
29321
29322	fn address(&mut self) -> *mut std::ffi::c_void {
29323		std::ptr::from_mut(self).cast()
29324	}
29325}
29326
29327impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
29328	for vk::PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE<'a>
29329{
29330}
29331
29332impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
29333	for vk::PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE<'a>
29334{
29335}
29336
29337impl<'a> crate::construction::sealed::ChainNode
29338	for vk::PhysicalDevicePrimitiveRestartIndexFeaturesEXT<'a>
29339{
29340	const S_TYPE: vk::StructureType =
29341		vk::StructureType::PHYSICAL_DEVICE_PRIMITIVE_RESTART_INDEX_FEATURES_EXT;
29342
29343	fn s_type(&self) -> vk::StructureType {
29344		self.s_type
29345	}
29346
29347	fn p_next(&self) -> *const std::ffi::c_void {
29348		self.p_next.cast_const()
29349	}
29350
29351	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29352		self.p_next = p_next;
29353	}
29354
29355	fn address(&mut self) -> *mut std::ffi::c_void {
29356		std::ptr::from_mut(self).cast()
29357	}
29358}
29359
29360impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
29361	for vk::PhysicalDevicePrimitiveRestartIndexFeaturesEXT<'a>
29362{
29363}
29364
29365impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
29366	for vk::PhysicalDevicePrimitiveRestartIndexFeaturesEXT<'a>
29367{
29368}
29369
29370impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceFormatPackFeaturesARM<'a> {
29371	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM;
29372
29373	fn s_type(&self) -> vk::StructureType {
29374		self.s_type
29375	}
29376
29377	fn p_next(&self) -> *const std::ffi::c_void {
29378		self.p_next.cast_const()
29379	}
29380
29381	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29382		self.p_next = p_next;
29383	}
29384
29385	fn address(&mut self) -> *mut std::ffi::c_void {
29386		std::ptr::from_mut(self).cast()
29387	}
29388}
29389
29390impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
29391	for vk::PhysicalDeviceFormatPackFeaturesARM<'a>
29392{
29393}
29394
29395impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
29396	for vk::PhysicalDeviceFormatPackFeaturesARM<'a>
29397{
29398}
29399
29400impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceThrottleHintFeaturesSEC<'a> {
29401	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_THROTTLE_HINT_FEATURES_SEC;
29402
29403	fn s_type(&self) -> vk::StructureType {
29404		self.s_type
29405	}
29406
29407	fn p_next(&self) -> *const std::ffi::c_void {
29408		self.p_next.cast_const()
29409	}
29410
29411	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29412		self.p_next = p_next;
29413	}
29414
29415	fn address(&mut self) -> *mut std::ffi::c_void {
29416		std::ptr::from_mut(self).cast()
29417	}
29418}
29419
29420impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
29421	for vk::PhysicalDeviceThrottleHintFeaturesSEC<'a>
29422{
29423}
29424
29425impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
29426	for vk::PhysicalDeviceThrottleHintFeaturesSEC<'a>
29427{
29428}
29429
29430impl<'a> crate::construction::sealed::ChainNode for vk::ThrottleHintSubmitInfoSEC<'a> {
29431	const S_TYPE: vk::StructureType = vk::StructureType::THROTTLE_HINT_SUBMIT_INFO_SEC;
29432
29433	fn s_type(&self) -> vk::StructureType {
29434		self.s_type
29435	}
29436
29437	fn p_next(&self) -> *const std::ffi::c_void {
29438		self.p_next
29439	}
29440
29441	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29442		self.p_next = p_next.cast_const();
29443	}
29444
29445	fn address(&mut self) -> *mut std::ffi::c_void {
29446		std::ptr::from_mut(self).cast()
29447	}
29448}
29449
29450impl<'a, 'root> crate::Extends<vk::SubmitInfo<'root>> for vk::ThrottleHintSubmitInfoSEC<'a> {}
29451
29452impl<'a> crate::construction::sealed::ChainNode for vk::TensorDescriptionARM<'a> {
29453	const S_TYPE: vk::StructureType = vk::StructureType::TENSOR_DESCRIPTION_ARM;
29454
29455	fn s_type(&self) -> vk::StructureType {
29456		self.s_type
29457	}
29458
29459	fn p_next(&self) -> *const std::ffi::c_void {
29460		self.p_next
29461	}
29462
29463	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29464		self.p_next = p_next.cast_const();
29465	}
29466
29467	fn address(&mut self) -> *mut std::ffi::c_void {
29468		std::ptr::from_mut(self).cast()
29469	}
29470}
29471
29472impl<'a, 'root> crate::Extends<vk::DataGraphPipelineResourceInfoARM<'root>>
29473	for vk::TensorDescriptionARM<'a>
29474{
29475}
29476
29477impl<'a, 'root> crate::Extends<vk::DataGraphPipelineConstantARM<'root>>
29478	for vk::TensorDescriptionARM<'a>
29479{
29480}
29481
29482impl<'a> crate::construction::sealed::ChainNode for vk::TensorCreateInfoARM<'a> {
29483	const S_TYPE: vk::StructureType = vk::StructureType::TENSOR_CREATE_INFO_ARM;
29484
29485	fn s_type(&self) -> vk::StructureType {
29486		self.s_type
29487	}
29488
29489	fn p_next(&self) -> *const std::ffi::c_void {
29490		self.p_next
29491	}
29492
29493	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29494		self.p_next = p_next.cast_const();
29495	}
29496
29497	fn address(&mut self) -> *mut std::ffi::c_void {
29498		std::ptr::from_mut(self).cast()
29499	}
29500}
29501
29502impl<'a> crate::construction::sealed::ChainNode for vk::TensorViewCreateInfoARM<'a> {
29503	const S_TYPE: vk::StructureType = vk::StructureType::TENSOR_VIEW_CREATE_INFO_ARM;
29504
29505	fn s_type(&self) -> vk::StructureType {
29506		self.s_type
29507	}
29508
29509	fn p_next(&self) -> *const std::ffi::c_void {
29510		self.p_next
29511	}
29512
29513	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29514		self.p_next = p_next.cast_const();
29515	}
29516
29517	fn address(&mut self) -> *mut std::ffi::c_void {
29518		std::ptr::from_mut(self).cast()
29519	}
29520}
29521
29522impl<'a> crate::construction::sealed::ChainNode for vk::TensorMemoryRequirementsInfoARM<'a> {
29523	const S_TYPE: vk::StructureType = vk::StructureType::TENSOR_MEMORY_REQUIREMENTS_INFO_ARM;
29524
29525	fn s_type(&self) -> vk::StructureType {
29526		self.s_type
29527	}
29528
29529	fn p_next(&self) -> *const std::ffi::c_void {
29530		self.p_next
29531	}
29532
29533	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29534		self.p_next = p_next.cast_const();
29535	}
29536
29537	fn address(&mut self) -> *mut std::ffi::c_void {
29538		std::ptr::from_mut(self).cast()
29539	}
29540}
29541
29542impl<'a> crate::construction::sealed::ChainNode for vk::BindTensorMemoryInfoARM<'a> {
29543	const S_TYPE: vk::StructureType = vk::StructureType::BIND_TENSOR_MEMORY_INFO_ARM;
29544
29545	fn s_type(&self) -> vk::StructureType {
29546		self.s_type
29547	}
29548
29549	fn p_next(&self) -> *const std::ffi::c_void {
29550		self.p_next
29551	}
29552
29553	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29554		self.p_next = p_next.cast_const();
29555	}
29556
29557	fn address(&mut self) -> *mut std::ffi::c_void {
29558		std::ptr::from_mut(self).cast()
29559	}
29560}
29561
29562impl<'a> crate::construction::sealed::ChainNode for vk::WriteDescriptorSetTensorARM<'a> {
29563	const S_TYPE: vk::StructureType = vk::StructureType::WRITE_DESCRIPTOR_SET_TENSOR_ARM;
29564
29565	fn s_type(&self) -> vk::StructureType {
29566		self.s_type
29567	}
29568
29569	fn p_next(&self) -> *const std::ffi::c_void {
29570		self.p_next
29571	}
29572
29573	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29574		self.p_next = p_next.cast_const();
29575	}
29576
29577	fn address(&mut self) -> *mut std::ffi::c_void {
29578		std::ptr::from_mut(self).cast()
29579	}
29580}
29581
29582impl<'a, 'root> crate::Extends<vk::WriteDescriptorSet<'root>>
29583	for vk::WriteDescriptorSetTensorARM<'a>
29584{
29585}
29586
29587impl<'a> crate::construction::sealed::ChainNode for vk::TensorFormatPropertiesARM<'a> {
29588	const S_TYPE: vk::StructureType = vk::StructureType::TENSOR_FORMAT_PROPERTIES_ARM;
29589
29590	fn s_type(&self) -> vk::StructureType {
29591		self.s_type
29592	}
29593
29594	fn p_next(&self) -> *const std::ffi::c_void {
29595		self.p_next.cast_const()
29596	}
29597
29598	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29599		self.p_next = p_next;
29600	}
29601
29602	fn address(&mut self) -> *mut std::ffi::c_void {
29603		std::ptr::from_mut(self).cast()
29604	}
29605}
29606
29607impl<'a, 'root> crate::Extends<vk::FormatProperties2<'root>> for vk::TensorFormatPropertiesARM<'a> {}
29608
29609impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceTensorPropertiesARM<'a> {
29610	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM;
29611
29612	fn s_type(&self) -> vk::StructureType {
29613		self.s_type
29614	}
29615
29616	fn p_next(&self) -> *const std::ffi::c_void {
29617		self.p_next.cast_const()
29618	}
29619
29620	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29621		self.p_next = p_next;
29622	}
29623
29624	fn address(&mut self) -> *mut std::ffi::c_void {
29625		std::ptr::from_mut(self).cast()
29626	}
29627}
29628
29629impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
29630	for vk::PhysicalDeviceTensorPropertiesARM<'a>
29631{
29632}
29633
29634impl<'a> crate::construction::sealed::ChainNode for vk::TensorMemoryBarrierARM<'a> {
29635	const S_TYPE: vk::StructureType = vk::StructureType::TENSOR_MEMORY_BARRIER_ARM;
29636
29637	fn s_type(&self) -> vk::StructureType {
29638		self.s_type
29639	}
29640
29641	fn p_next(&self) -> *const std::ffi::c_void {
29642		self.p_next
29643	}
29644
29645	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29646		self.p_next = p_next.cast_const();
29647	}
29648
29649	fn address(&mut self) -> *mut std::ffi::c_void {
29650		std::ptr::from_mut(self).cast()
29651	}
29652}
29653
29654impl<'a, 'root> crate::Extends<vk::DependencyInfo<'root>> for vk::TensorMemoryBarrierARM<'a> {}
29655
29656impl<'a> crate::construction::sealed::ChainNode for vk::TensorDependencyInfoARM<'a> {
29657	const S_TYPE: vk::StructureType = vk::StructureType::TENSOR_DEPENDENCY_INFO_ARM;
29658
29659	fn s_type(&self) -> vk::StructureType {
29660		self.s_type
29661	}
29662
29663	fn p_next(&self) -> *const std::ffi::c_void {
29664		self.p_next
29665	}
29666
29667	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29668		self.p_next = p_next.cast_const();
29669	}
29670
29671	fn address(&mut self) -> *mut std::ffi::c_void {
29672		std::ptr::from_mut(self).cast()
29673	}
29674}
29675
29676impl<'a, 'root> crate::Extends<vk::DependencyInfo<'root>> for vk::TensorDependencyInfoARM<'a> {}
29677
29678impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceTensorFeaturesARM<'a> {
29679	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_TENSOR_FEATURES_ARM;
29680
29681	fn s_type(&self) -> vk::StructureType {
29682		self.s_type
29683	}
29684
29685	fn p_next(&self) -> *const std::ffi::c_void {
29686		self.p_next.cast_const()
29687	}
29688
29689	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29690		self.p_next = p_next;
29691	}
29692
29693	fn address(&mut self) -> *mut std::ffi::c_void {
29694		std::ptr::from_mut(self).cast()
29695	}
29696}
29697
29698impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
29699	for vk::PhysicalDeviceTensorFeaturesARM<'a>
29700{
29701}
29702
29703impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
29704	for vk::PhysicalDeviceTensorFeaturesARM<'a>
29705{
29706}
29707
29708impl<'a> crate::construction::sealed::ChainNode for vk::DeviceTensorMemoryRequirementsARM<'a> {
29709	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM;
29710
29711	fn s_type(&self) -> vk::StructureType {
29712		self.s_type
29713	}
29714
29715	fn p_next(&self) -> *const std::ffi::c_void {
29716		self.p_next
29717	}
29718
29719	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29720		self.p_next = p_next.cast_const();
29721	}
29722
29723	fn address(&mut self) -> *mut std::ffi::c_void {
29724		std::ptr::from_mut(self).cast()
29725	}
29726}
29727
29728impl<'a> crate::construction::sealed::ChainNode for vk::CopyTensorInfoARM<'a> {
29729	const S_TYPE: vk::StructureType = vk::StructureType::COPY_TENSOR_INFO_ARM;
29730
29731	fn s_type(&self) -> vk::StructureType {
29732		self.s_type
29733	}
29734
29735	fn p_next(&self) -> *const std::ffi::c_void {
29736		self.p_next
29737	}
29738
29739	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29740		self.p_next = p_next.cast_const();
29741	}
29742
29743	fn address(&mut self) -> *mut std::ffi::c_void {
29744		std::ptr::from_mut(self).cast()
29745	}
29746}
29747
29748impl<'a> crate::construction::sealed::ChainNode for vk::TensorCopyARM<'a> {
29749	const S_TYPE: vk::StructureType = vk::StructureType::TENSOR_COPY_ARM;
29750
29751	fn s_type(&self) -> vk::StructureType {
29752		self.s_type
29753	}
29754
29755	fn p_next(&self) -> *const std::ffi::c_void {
29756		self.p_next
29757	}
29758
29759	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29760		self.p_next = p_next.cast_const();
29761	}
29762
29763	fn address(&mut self) -> *mut std::ffi::c_void {
29764		std::ptr::from_mut(self).cast()
29765	}
29766}
29767
29768impl<'a> crate::construction::sealed::ChainNode for vk::MemoryDedicatedAllocateInfoTensorARM<'a> {
29769	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM;
29770
29771	fn s_type(&self) -> vk::StructureType {
29772		self.s_type
29773	}
29774
29775	fn p_next(&self) -> *const std::ffi::c_void {
29776		self.p_next
29777	}
29778
29779	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29780		self.p_next = p_next.cast_const();
29781	}
29782
29783	fn address(&mut self) -> *mut std::ffi::c_void {
29784		std::ptr::from_mut(self).cast()
29785	}
29786}
29787
29788impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>>
29789	for vk::MemoryDedicatedAllocateInfoTensorARM<'a>
29790{
29791}
29792
29793impl<'a> crate::construction::sealed::ChainNode
29794	for vk::PhysicalDeviceDescriptorBufferTensorPropertiesARM<'a>
29795{
29796	const S_TYPE: vk::StructureType =
29797		vk::StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM;
29798
29799	fn s_type(&self) -> vk::StructureType {
29800		self.s_type
29801	}
29802
29803	fn p_next(&self) -> *const std::ffi::c_void {
29804		self.p_next.cast_const()
29805	}
29806
29807	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29808		self.p_next = p_next;
29809	}
29810
29811	fn address(&mut self) -> *mut std::ffi::c_void {
29812		std::ptr::from_mut(self).cast()
29813	}
29814}
29815
29816impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
29817	for vk::PhysicalDeviceDescriptorBufferTensorPropertiesARM<'a>
29818{
29819}
29820
29821impl<'a> crate::construction::sealed::ChainNode
29822	for vk::PhysicalDeviceDescriptorBufferTensorFeaturesARM<'a>
29823{
29824	const S_TYPE: vk::StructureType =
29825		vk::StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM;
29826
29827	fn s_type(&self) -> vk::StructureType {
29828		self.s_type
29829	}
29830
29831	fn p_next(&self) -> *const std::ffi::c_void {
29832		self.p_next.cast_const()
29833	}
29834
29835	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29836		self.p_next = p_next;
29837	}
29838
29839	fn address(&mut self) -> *mut std::ffi::c_void {
29840		std::ptr::from_mut(self).cast()
29841	}
29842}
29843
29844impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
29845	for vk::PhysicalDeviceDescriptorBufferTensorFeaturesARM<'a>
29846{
29847}
29848
29849impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
29850	for vk::PhysicalDeviceDescriptorBufferTensorFeaturesARM<'a>
29851{
29852}
29853
29854impl<'a> crate::construction::sealed::ChainNode for vk::TensorCaptureDescriptorDataInfoARM<'a> {
29855	const S_TYPE: vk::StructureType = vk::StructureType::TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM;
29856
29857	fn s_type(&self) -> vk::StructureType {
29858		self.s_type
29859	}
29860
29861	fn p_next(&self) -> *const std::ffi::c_void {
29862		self.p_next
29863	}
29864
29865	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29866		self.p_next = p_next.cast_const();
29867	}
29868
29869	fn address(&mut self) -> *mut std::ffi::c_void {
29870		std::ptr::from_mut(self).cast()
29871	}
29872}
29873
29874impl<'a> crate::construction::sealed::ChainNode for vk::TensorViewCaptureDescriptorDataInfoARM<'a> {
29875	const S_TYPE: vk::StructureType = vk::StructureType::TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM;
29876
29877	fn s_type(&self) -> vk::StructureType {
29878		self.s_type
29879	}
29880
29881	fn p_next(&self) -> *const std::ffi::c_void {
29882		self.p_next
29883	}
29884
29885	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29886		self.p_next = p_next.cast_const();
29887	}
29888
29889	fn address(&mut self) -> *mut std::ffi::c_void {
29890		std::ptr::from_mut(self).cast()
29891	}
29892}
29893
29894impl<'a> crate::construction::sealed::ChainNode for vk::DescriptorGetTensorInfoARM<'a> {
29895	const S_TYPE: vk::StructureType = vk::StructureType::DESCRIPTOR_GET_TENSOR_INFO_ARM;
29896
29897	fn s_type(&self) -> vk::StructureType {
29898		self.s_type
29899	}
29900
29901	fn p_next(&self) -> *const std::ffi::c_void {
29902		self.p_next
29903	}
29904
29905	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29906		self.p_next = p_next.cast_const();
29907	}
29908
29909	fn address(&mut self) -> *mut std::ffi::c_void {
29910		std::ptr::from_mut(self).cast()
29911	}
29912}
29913
29914impl<'a, 'root> crate::Extends<vk::DescriptorGetInfoEXT<'root>>
29915	for vk::DescriptorGetTensorInfoARM<'a>
29916{
29917}
29918
29919impl<'a> crate::construction::sealed::ChainNode for vk::FrameBoundaryTensorsARM<'a> {
29920	const S_TYPE: vk::StructureType = vk::StructureType::FRAME_BOUNDARY_TENSORS_ARM;
29921
29922	fn s_type(&self) -> vk::StructureType {
29923		self.s_type
29924	}
29925
29926	fn p_next(&self) -> *const std::ffi::c_void {
29927		self.p_next
29928	}
29929
29930	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29931		self.p_next = p_next.cast_const();
29932	}
29933
29934	fn address(&mut self) -> *mut std::ffi::c_void {
29935		std::ptr::from_mut(self).cast()
29936	}
29937}
29938
29939impl<'a, 'root> crate::Extends<vk::SubmitInfo<'root>> for vk::FrameBoundaryTensorsARM<'a> {}
29940
29941impl<'a, 'root> crate::Extends<vk::SubmitInfo2<'root>> for vk::FrameBoundaryTensorsARM<'a> {}
29942
29943impl<'a, 'root> crate::Extends<vk::PresentInfoKHR<'root>> for vk::FrameBoundaryTensorsARM<'a> {}
29944
29945impl<'a, 'root> crate::Extends<vk::BindSparseInfo<'root>> for vk::FrameBoundaryTensorsARM<'a> {}
29946
29947impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceExternalTensorInfoARM<'a> {
29948	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM;
29949
29950	fn s_type(&self) -> vk::StructureType {
29951		self.s_type
29952	}
29953
29954	fn p_next(&self) -> *const std::ffi::c_void {
29955		self.p_next
29956	}
29957
29958	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29959		self.p_next = p_next.cast_const();
29960	}
29961
29962	fn address(&mut self) -> *mut std::ffi::c_void {
29963		std::ptr::from_mut(self).cast()
29964	}
29965}
29966
29967impl<'a> crate::construction::sealed::ChainNode for vk::ExternalTensorPropertiesARM<'a> {
29968	const S_TYPE: vk::StructureType = vk::StructureType::EXTERNAL_TENSOR_PROPERTIES_ARM;
29969
29970	fn s_type(&self) -> vk::StructureType {
29971		self.s_type
29972	}
29973
29974	fn p_next(&self) -> *const std::ffi::c_void {
29975		self.p_next
29976	}
29977
29978	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29979		self.p_next = p_next.cast_const();
29980	}
29981
29982	fn address(&mut self) -> *mut std::ffi::c_void {
29983		std::ptr::from_mut(self).cast()
29984	}
29985}
29986
29987impl<'a> crate::construction::sealed::ChainNode for vk::ExternalMemoryTensorCreateInfoARM<'a> {
29988	const S_TYPE: vk::StructureType = vk::StructureType::EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM;
29989
29990	fn s_type(&self) -> vk::StructureType {
29991		self.s_type
29992	}
29993
29994	fn p_next(&self) -> *const std::ffi::c_void {
29995		self.p_next
29996	}
29997
29998	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
29999		self.p_next = p_next.cast_const();
30000	}
30001
30002	fn address(&mut self) -> *mut std::ffi::c_void {
30003		std::ptr::from_mut(self).cast()
30004	}
30005}
30006
30007impl<'a, 'root> crate::Extends<vk::TensorCreateInfoARM<'root>>
30008	for vk::ExternalMemoryTensorCreateInfoARM<'a>
30009{
30010}
30011
30012impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceShaderFloat8FeaturesEXT<'a> {
30013	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT;
30014
30015	fn s_type(&self) -> vk::StructureType {
30016		self.s_type
30017	}
30018
30019	fn p_next(&self) -> *const std::ffi::c_void {
30020		self.p_next.cast_const()
30021	}
30022
30023	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30024		self.p_next = p_next;
30025	}
30026
30027	fn address(&mut self) -> *mut std::ffi::c_void {
30028		std::ptr::from_mut(self).cast()
30029	}
30030}
30031
30032impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
30033	for vk::PhysicalDeviceShaderFloat8FeaturesEXT<'a>
30034{
30035}
30036
30037impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
30038	for vk::PhysicalDeviceShaderFloat8FeaturesEXT<'a>
30039{
30040}
30041
30042#[cfg(feature = "platform-ohos")]
30043impl<'a> crate::construction::sealed::ChainNode for vk::SurfaceCreateInfoOHOS<'a> {
30044	const S_TYPE: vk::StructureType = vk::StructureType::SURFACE_CREATE_INFO_OHOS;
30045
30046	fn s_type(&self) -> vk::StructureType {
30047		self.s_type
30048	}
30049
30050	fn p_next(&self) -> *const std::ffi::c_void {
30051		self.p_next
30052	}
30053
30054	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30055		self.p_next = p_next.cast_const();
30056	}
30057
30058	fn address(&mut self) -> *mut std::ffi::c_void {
30059		std::ptr::from_mut(self).cast()
30060	}
30061}
30062
30063impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceDataGraphFeaturesARM<'a> {
30064	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM;
30065
30066	fn s_type(&self) -> vk::StructureType {
30067		self.s_type
30068	}
30069
30070	fn p_next(&self) -> *const std::ffi::c_void {
30071		self.p_next.cast_const()
30072	}
30073
30074	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30075		self.p_next = p_next;
30076	}
30077
30078	fn address(&mut self) -> *mut std::ffi::c_void {
30079		std::ptr::from_mut(self).cast()
30080	}
30081}
30082
30083impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
30084	for vk::PhysicalDeviceDataGraphFeaturesARM<'a>
30085{
30086}
30087
30088impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
30089	for vk::PhysicalDeviceDataGraphFeaturesARM<'a>
30090{
30091}
30092
30093impl<'a> crate::construction::sealed::ChainNode
30094	for vk::DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM<'a>
30095{
30096	const S_TYPE: vk::StructureType =
30097		vk::StructureType::DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM;
30098
30099	fn s_type(&self) -> vk::StructureType {
30100		self.s_type
30101	}
30102
30103	fn p_next(&self) -> *const std::ffi::c_void {
30104		self.p_next
30105	}
30106
30107	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30108		self.p_next = p_next.cast_const();
30109	}
30110
30111	fn address(&mut self) -> *mut std::ffi::c_void {
30112		std::ptr::from_mut(self).cast()
30113	}
30114}
30115
30116impl<'a, 'root> crate::Extends<vk::DataGraphPipelineConstantARM<'root>>
30117	for vk::DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM<'a>
30118{
30119}
30120
30121impl<'a> crate::construction::sealed::ChainNode for vk::DataGraphPipelineConstantARM<'a> {
30122	const S_TYPE: vk::StructureType = vk::StructureType::DATA_GRAPH_PIPELINE_CONSTANT_ARM;
30123
30124	fn s_type(&self) -> vk::StructureType {
30125		self.s_type
30126	}
30127
30128	fn p_next(&self) -> *const std::ffi::c_void {
30129		self.p_next
30130	}
30131
30132	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30133		self.p_next = p_next.cast_const();
30134	}
30135
30136	fn address(&mut self) -> *mut std::ffi::c_void {
30137		std::ptr::from_mut(self).cast()
30138	}
30139}
30140
30141impl<'a> crate::construction::sealed::ChainNode for vk::DataGraphPipelineResourceInfoARM<'a> {
30142	const S_TYPE: vk::StructureType = vk::StructureType::DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM;
30143
30144	fn s_type(&self) -> vk::StructureType {
30145		self.s_type
30146	}
30147
30148	fn p_next(&self) -> *const std::ffi::c_void {
30149		self.p_next
30150	}
30151
30152	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30153		self.p_next = p_next.cast_const();
30154	}
30155
30156	fn address(&mut self) -> *mut std::ffi::c_void {
30157		std::ptr::from_mut(self).cast()
30158	}
30159}
30160
30161impl<'a> crate::construction::sealed::ChainNode
30162	for vk::DataGraphPipelineResourceInfoImageLayoutARM<'a>
30163{
30164	const S_TYPE: vk::StructureType =
30165		vk::StructureType::DATA_GRAPH_PIPELINE_RESOURCE_INFO_IMAGE_LAYOUT_ARM;
30166
30167	fn s_type(&self) -> vk::StructureType {
30168		self.s_type
30169	}
30170
30171	fn p_next(&self) -> *const std::ffi::c_void {
30172		self.p_next
30173	}
30174
30175	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30176		self.p_next = p_next.cast_const();
30177	}
30178
30179	fn address(&mut self) -> *mut std::ffi::c_void {
30180		std::ptr::from_mut(self).cast()
30181	}
30182}
30183
30184impl<'a, 'root> crate::Extends<vk::DataGraphPipelineResourceInfoARM<'root>>
30185	for vk::DataGraphPipelineResourceInfoImageLayoutARM<'a>
30186{
30187}
30188
30189impl<'a> crate::construction::sealed::ChainNode
30190	for vk::DataGraphPipelineCompilerControlCreateInfoARM<'a>
30191{
30192	const S_TYPE: vk::StructureType =
30193		vk::StructureType::DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM;
30194
30195	fn s_type(&self) -> vk::StructureType {
30196		self.s_type
30197	}
30198
30199	fn p_next(&self) -> *const std::ffi::c_void {
30200		self.p_next
30201	}
30202
30203	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30204		self.p_next = p_next.cast_const();
30205	}
30206
30207	fn address(&mut self) -> *mut std::ffi::c_void {
30208		std::ptr::from_mut(self).cast()
30209	}
30210}
30211
30212impl<'a, 'root> crate::Extends<vk::DataGraphPipelineCreateInfoARM<'root>>
30213	for vk::DataGraphPipelineCompilerControlCreateInfoARM<'a>
30214{
30215}
30216
30217impl<'a> crate::construction::sealed::ChainNode for vk::DataGraphPipelineCreateInfoARM<'a> {
30218	const S_TYPE: vk::StructureType = vk::StructureType::DATA_GRAPH_PIPELINE_CREATE_INFO_ARM;
30219
30220	fn s_type(&self) -> vk::StructureType {
30221		self.s_type
30222	}
30223
30224	fn p_next(&self) -> *const std::ffi::c_void {
30225		self.p_next
30226	}
30227
30228	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30229		self.p_next = p_next.cast_const();
30230	}
30231
30232	fn address(&mut self) -> *mut std::ffi::c_void {
30233		std::ptr::from_mut(self).cast()
30234	}
30235}
30236
30237impl<'a> crate::construction::sealed::ChainNode
30238	for vk::DataGraphPipelineShaderModuleCreateInfoARM<'a>
30239{
30240	const S_TYPE: vk::StructureType =
30241		vk::StructureType::DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM;
30242
30243	fn s_type(&self) -> vk::StructureType {
30244		self.s_type
30245	}
30246
30247	fn p_next(&self) -> *const std::ffi::c_void {
30248		self.p_next
30249	}
30250
30251	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30252		self.p_next = p_next.cast_const();
30253	}
30254
30255	fn address(&mut self) -> *mut std::ffi::c_void {
30256		std::ptr::from_mut(self).cast()
30257	}
30258}
30259
30260impl<'a, 'root> crate::Extends<vk::DataGraphPipelineCreateInfoARM<'root>>
30261	for vk::DataGraphPipelineShaderModuleCreateInfoARM<'a>
30262{
30263}
30264
30265impl<'a> crate::construction::sealed::ChainNode for vk::DataGraphPipelineSessionCreateInfoARM<'a> {
30266	const S_TYPE: vk::StructureType = vk::StructureType::DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM;
30267
30268	fn s_type(&self) -> vk::StructureType {
30269		self.s_type
30270	}
30271
30272	fn p_next(&self) -> *const std::ffi::c_void {
30273		self.p_next
30274	}
30275
30276	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30277		self.p_next = p_next.cast_const();
30278	}
30279
30280	fn address(&mut self) -> *mut std::ffi::c_void {
30281		std::ptr::from_mut(self).cast()
30282	}
30283}
30284
30285impl<'a> crate::construction::sealed::ChainNode
30286	for vk::DataGraphPipelineSessionBindPointRequirementsInfoARM<'a>
30287{
30288	const S_TYPE: vk::StructureType =
30289		vk::StructureType::DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM;
30290
30291	fn s_type(&self) -> vk::StructureType {
30292		self.s_type
30293	}
30294
30295	fn p_next(&self) -> *const std::ffi::c_void {
30296		self.p_next
30297	}
30298
30299	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30300		self.p_next = p_next.cast_const();
30301	}
30302
30303	fn address(&mut self) -> *mut std::ffi::c_void {
30304		std::ptr::from_mut(self).cast()
30305	}
30306}
30307
30308impl<'a> crate::construction::sealed::ChainNode
30309	for vk::DataGraphPipelineSessionBindPointRequirementARM<'a>
30310{
30311	const S_TYPE: vk::StructureType =
30312		vk::StructureType::DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM;
30313
30314	fn s_type(&self) -> vk::StructureType {
30315		self.s_type
30316	}
30317
30318	fn p_next(&self) -> *const std::ffi::c_void {
30319		self.p_next.cast_const()
30320	}
30321
30322	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30323		self.p_next = p_next;
30324	}
30325
30326	fn address(&mut self) -> *mut std::ffi::c_void {
30327		std::ptr::from_mut(self).cast()
30328	}
30329}
30330
30331impl<'a> crate::construction::sealed::ChainNode
30332	for vk::DataGraphPipelineSessionMemoryRequirementsInfoARM<'a>
30333{
30334	const S_TYPE: vk::StructureType =
30335		vk::StructureType::DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM;
30336
30337	fn s_type(&self) -> vk::StructureType {
30338		self.s_type
30339	}
30340
30341	fn p_next(&self) -> *const std::ffi::c_void {
30342		self.p_next
30343	}
30344
30345	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30346		self.p_next = p_next.cast_const();
30347	}
30348
30349	fn address(&mut self) -> *mut std::ffi::c_void {
30350		std::ptr::from_mut(self).cast()
30351	}
30352}
30353
30354impl<'a> crate::construction::sealed::ChainNode
30355	for vk::BindDataGraphPipelineSessionMemoryInfoARM<'a>
30356{
30357	const S_TYPE: vk::StructureType =
30358		vk::StructureType::BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM;
30359
30360	fn s_type(&self) -> vk::StructureType {
30361		self.s_type
30362	}
30363
30364	fn p_next(&self) -> *const std::ffi::c_void {
30365		self.p_next
30366	}
30367
30368	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30369		self.p_next = p_next.cast_const();
30370	}
30371
30372	fn address(&mut self) -> *mut std::ffi::c_void {
30373		std::ptr::from_mut(self).cast()
30374	}
30375}
30376
30377impl<'a> crate::construction::sealed::ChainNode for vk::DataGraphPipelineInfoARM<'a> {
30378	const S_TYPE: vk::StructureType = vk::StructureType::DATA_GRAPH_PIPELINE_INFO_ARM;
30379
30380	fn s_type(&self) -> vk::StructureType {
30381		self.s_type
30382	}
30383
30384	fn p_next(&self) -> *const std::ffi::c_void {
30385		self.p_next
30386	}
30387
30388	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30389		self.p_next = p_next.cast_const();
30390	}
30391
30392	fn address(&mut self) -> *mut std::ffi::c_void {
30393		std::ptr::from_mut(self).cast()
30394	}
30395}
30396
30397impl<'a> crate::construction::sealed::ChainNode
30398	for vk::DataGraphPipelinePropertyQueryResultARM<'a>
30399{
30400	const S_TYPE: vk::StructureType =
30401		vk::StructureType::DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM;
30402
30403	fn s_type(&self) -> vk::StructureType {
30404		self.s_type
30405	}
30406
30407	fn p_next(&self) -> *const std::ffi::c_void {
30408		self.p_next.cast_const()
30409	}
30410
30411	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30412		self.p_next = p_next;
30413	}
30414
30415	fn address(&mut self) -> *mut std::ffi::c_void {
30416		std::ptr::from_mut(self).cast()
30417	}
30418}
30419
30420impl<'a> crate::construction::sealed::ChainNode
30421	for vk::DataGraphPipelineIdentifierCreateInfoARM<'a>
30422{
30423	const S_TYPE: vk::StructureType =
30424		vk::StructureType::DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM;
30425
30426	fn s_type(&self) -> vk::StructureType {
30427		self.s_type
30428	}
30429
30430	fn p_next(&self) -> *const std::ffi::c_void {
30431		self.p_next
30432	}
30433
30434	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30435		self.p_next = p_next.cast_const();
30436	}
30437
30438	fn address(&mut self) -> *mut std::ffi::c_void {
30439		std::ptr::from_mut(self).cast()
30440	}
30441}
30442
30443impl<'a, 'root> crate::Extends<vk::DataGraphPipelineCreateInfoARM<'root>>
30444	for vk::DataGraphPipelineIdentifierCreateInfoARM<'a>
30445{
30446}
30447
30448impl<'a> crate::construction::sealed::ChainNode for vk::DataGraphPipelineDispatchInfoARM<'a> {
30449	const S_TYPE: vk::StructureType = vk::StructureType::DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM;
30450
30451	fn s_type(&self) -> vk::StructureType {
30452		self.s_type
30453	}
30454
30455	fn p_next(&self) -> *const std::ffi::c_void {
30456		self.p_next.cast_const()
30457	}
30458
30459	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30460		self.p_next = p_next;
30461	}
30462
30463	fn address(&mut self) -> *mut std::ffi::c_void {
30464		std::ptr::from_mut(self).cast()
30465	}
30466}
30467
30468impl<'a> crate::construction::sealed::ChainNode for vk::QueueFamilyDataGraphPropertiesARM<'a> {
30469	const S_TYPE: vk::StructureType = vk::StructureType::QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM;
30470
30471	fn s_type(&self) -> vk::StructureType {
30472		self.s_type
30473	}
30474
30475	fn p_next(&self) -> *const std::ffi::c_void {
30476		self.p_next.cast_const()
30477	}
30478
30479	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30480		self.p_next = p_next;
30481	}
30482
30483	fn address(&mut self) -> *mut std::ffi::c_void {
30484		std::ptr::from_mut(self).cast()
30485	}
30486}
30487
30488impl<'a> crate::construction::sealed::ChainNode
30489	for vk::PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM<'a>
30490{
30491	const S_TYPE: vk::StructureType =
30492		vk::StructureType::PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM;
30493
30494	fn s_type(&self) -> vk::StructureType {
30495		self.s_type
30496	}
30497
30498	fn p_next(&self) -> *const std::ffi::c_void {
30499		self.p_next
30500	}
30501
30502	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30503		self.p_next = p_next.cast_const();
30504	}
30505
30506	fn address(&mut self) -> *mut std::ffi::c_void {
30507		std::ptr::from_mut(self).cast()
30508	}
30509}
30510
30511impl<'a> crate::construction::sealed::ChainNode
30512	for vk::QueueFamilyDataGraphProcessingEnginePropertiesARM<'a>
30513{
30514	const S_TYPE: vk::StructureType =
30515		vk::StructureType::QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM;
30516
30517	fn s_type(&self) -> vk::StructureType {
30518		self.s_type
30519	}
30520
30521	fn p_next(&self) -> *const std::ffi::c_void {
30522		self.p_next.cast_const()
30523	}
30524
30525	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30526		self.p_next = p_next;
30527	}
30528
30529	fn address(&mut self) -> *mut std::ffi::c_void {
30530		std::ptr::from_mut(self).cast()
30531	}
30532}
30533
30534impl<'a> crate::construction::sealed::ChainNode for vk::DataGraphProcessingEngineCreateInfoARM<'a> {
30535	const S_TYPE: vk::StructureType = vk::StructureType::DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM;
30536
30537	fn s_type(&self) -> vk::StructureType {
30538		self.s_type
30539	}
30540
30541	fn p_next(&self) -> *const std::ffi::c_void {
30542		self.p_next
30543	}
30544
30545	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30546		self.p_next = p_next.cast_const();
30547	}
30548
30549	fn address(&mut self) -> *mut std::ffi::c_void {
30550		std::ptr::from_mut(self).cast()
30551	}
30552}
30553
30554impl<'a, 'root> crate::Extends<vk::DataGraphPipelineCreateInfoARM<'root>>
30555	for vk::DataGraphProcessingEngineCreateInfoARM<'a>
30556{
30557}
30558
30559impl<'a, 'root> crate::Extends<vk::DescriptorPoolCreateInfo<'root>>
30560	for vk::DataGraphProcessingEngineCreateInfoARM<'a>
30561{
30562}
30563
30564impl<'a, 'root> crate::Extends<vk::CommandPoolCreateInfo<'root>>
30565	for vk::DataGraphProcessingEngineCreateInfoARM<'a>
30566{
30567}
30568
30569impl<'a> crate::construction::sealed::ChainNode
30570	for vk::PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC<'a>
30571{
30572	const S_TYPE: vk::StructureType =
30573		vk::StructureType::PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC;
30574
30575	fn s_type(&self) -> vk::StructureType {
30576		self.s_type
30577	}
30578
30579	fn p_next(&self) -> *const std::ffi::c_void {
30580		self.p_next.cast_const()
30581	}
30582
30583	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30584		self.p_next = p_next;
30585	}
30586
30587	fn address(&mut self) -> *mut std::ffi::c_void {
30588		std::ptr::from_mut(self).cast()
30589	}
30590}
30591
30592impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
30593	for vk::PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC<'a>
30594{
30595}
30596
30597impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
30598	for vk::PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC<'a>
30599{
30600}
30601
30602impl<'a> crate::construction::sealed::ChainNode
30603	for vk::DataGraphPipelineBuiltinModelCreateInfoQCOM<'a>
30604{
30605	const S_TYPE: vk::StructureType =
30606		vk::StructureType::DATA_GRAPH_PIPELINE_BUILTIN_MODEL_CREATE_INFO_QCOM;
30607
30608	fn s_type(&self) -> vk::StructureType {
30609		self.s_type
30610	}
30611
30612	fn p_next(&self) -> *const std::ffi::c_void {
30613		self.p_next
30614	}
30615
30616	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30617		self.p_next = p_next.cast_const();
30618	}
30619
30620	fn address(&mut self) -> *mut std::ffi::c_void {
30621		std::ptr::from_mut(self).cast()
30622	}
30623}
30624
30625impl<'a, 'root> crate::Extends<vk::DataGraphPipelineCreateInfoARM<'root>>
30626	for vk::DataGraphPipelineBuiltinModelCreateInfoQCOM<'a>
30627{
30628}
30629
30630impl<'a> crate::construction::sealed::ChainNode
30631	for vk::PhysicalDeviceDataGraphModelFeaturesQCOM<'a>
30632{
30633	const S_TYPE: vk::StructureType =
30634		vk::StructureType::PHYSICAL_DEVICE_DATA_GRAPH_MODEL_FEATURES_QCOM;
30635
30636	fn s_type(&self) -> vk::StructureType {
30637		self.s_type
30638	}
30639
30640	fn p_next(&self) -> *const std::ffi::c_void {
30641		self.p_next.cast_const()
30642	}
30643
30644	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30645		self.p_next = p_next;
30646	}
30647
30648	fn address(&mut self) -> *mut std::ffi::c_void {
30649		std::ptr::from_mut(self).cast()
30650	}
30651}
30652
30653impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
30654	for vk::PhysicalDeviceDataGraphModelFeaturesQCOM<'a>
30655{
30656}
30657
30658impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
30659	for vk::PhysicalDeviceDataGraphModelFeaturesQCOM<'a>
30660{
30661}
30662
30663impl<'a> crate::construction::sealed::ChainNode
30664	for vk::PhysicalDeviceShaderUntypedPointersFeaturesKHR<'a>
30665{
30666	const S_TYPE: vk::StructureType =
30667		vk::StructureType::PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR;
30668
30669	fn s_type(&self) -> vk::StructureType {
30670		self.s_type
30671	}
30672
30673	fn p_next(&self) -> *const std::ffi::c_void {
30674		self.p_next.cast_const()
30675	}
30676
30677	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30678		self.p_next = p_next;
30679	}
30680
30681	fn address(&mut self) -> *mut std::ffi::c_void {
30682		std::ptr::from_mut(self).cast()
30683	}
30684}
30685
30686impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
30687	for vk::PhysicalDeviceShaderUntypedPointersFeaturesKHR<'a>
30688{
30689}
30690
30691impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
30692	for vk::PhysicalDeviceShaderUntypedPointersFeaturesKHR<'a>
30693{
30694}
30695
30696impl<'a> crate::construction::sealed::ChainNode
30697	for vk::PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE<'a>
30698{
30699	const S_TYPE: vk::StructureType =
30700		vk::StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_RGB_CONVERSION_FEATURES_VALVE;
30701
30702	fn s_type(&self) -> vk::StructureType {
30703		self.s_type
30704	}
30705
30706	fn p_next(&self) -> *const std::ffi::c_void {
30707		self.p_next.cast_const()
30708	}
30709
30710	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30711		self.p_next = p_next;
30712	}
30713
30714	fn address(&mut self) -> *mut std::ffi::c_void {
30715		std::ptr::from_mut(self).cast()
30716	}
30717}
30718
30719impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
30720	for vk::PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE<'a>
30721{
30722}
30723
30724impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
30725	for vk::PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE<'a>
30726{
30727}
30728
30729impl<'a> crate::construction::sealed::ChainNode
30730	for vk::VideoEncodeRgbConversionCapabilitiesVALVE<'a>
30731{
30732	const S_TYPE: vk::StructureType =
30733		vk::StructureType::VIDEO_ENCODE_RGB_CONVERSION_CAPABILITIES_VALVE;
30734
30735	fn s_type(&self) -> vk::StructureType {
30736		self.s_type
30737	}
30738
30739	fn p_next(&self) -> *const std::ffi::c_void {
30740		self.p_next.cast_const()
30741	}
30742
30743	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30744		self.p_next = p_next;
30745	}
30746
30747	fn address(&mut self) -> *mut std::ffi::c_void {
30748		std::ptr::from_mut(self).cast()
30749	}
30750}
30751
30752impl<'a, 'root> crate::Extends<vk::VideoCapabilitiesKHR<'root>>
30753	for vk::VideoEncodeRgbConversionCapabilitiesVALVE<'a>
30754{
30755}
30756
30757impl<'a> crate::construction::sealed::ChainNode
30758	for vk::VideoEncodeProfileRgbConversionInfoVALVE<'a>
30759{
30760	const S_TYPE: vk::StructureType =
30761		vk::StructureType::VIDEO_ENCODE_PROFILE_RGB_CONVERSION_INFO_VALVE;
30762
30763	fn s_type(&self) -> vk::StructureType {
30764		self.s_type
30765	}
30766
30767	fn p_next(&self) -> *const std::ffi::c_void {
30768		self.p_next
30769	}
30770
30771	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30772		self.p_next = p_next.cast_const();
30773	}
30774
30775	fn address(&mut self) -> *mut std::ffi::c_void {
30776		std::ptr::from_mut(self).cast()
30777	}
30778}
30779
30780impl<'a, 'root> crate::Extends<vk::VideoProfileInfoKHR<'root>>
30781	for vk::VideoEncodeProfileRgbConversionInfoVALVE<'a>
30782{
30783}
30784
30785impl<'a> crate::construction::sealed::ChainNode
30786	for vk::VideoEncodeSessionRgbConversionCreateInfoVALVE<'a>
30787{
30788	const S_TYPE: vk::StructureType =
30789		vk::StructureType::VIDEO_ENCODE_SESSION_RGB_CONVERSION_CREATE_INFO_VALVE;
30790
30791	fn s_type(&self) -> vk::StructureType {
30792		self.s_type
30793	}
30794
30795	fn p_next(&self) -> *const std::ffi::c_void {
30796		self.p_next
30797	}
30798
30799	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30800		self.p_next = p_next.cast_const();
30801	}
30802
30803	fn address(&mut self) -> *mut std::ffi::c_void {
30804		std::ptr::from_mut(self).cast()
30805	}
30806}
30807
30808impl<'a, 'root> crate::Extends<vk::VideoSessionCreateInfoKHR<'root>>
30809	for vk::VideoEncodeSessionRgbConversionCreateInfoVALVE<'a>
30810{
30811}
30812
30813impl<'a> crate::construction::sealed::ChainNode
30814	for vk::PhysicalDeviceShader64BitIndexingFeaturesEXT<'a>
30815{
30816	const S_TYPE: vk::StructureType =
30817		vk::StructureType::PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT;
30818
30819	fn s_type(&self) -> vk::StructureType {
30820		self.s_type
30821	}
30822
30823	fn p_next(&self) -> *const std::ffi::c_void {
30824		self.p_next.cast_const()
30825	}
30826
30827	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30828		self.p_next = p_next;
30829	}
30830
30831	fn address(&mut self) -> *mut std::ffi::c_void {
30832		std::ptr::from_mut(self).cast()
30833	}
30834}
30835
30836impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
30837	for vk::PhysicalDeviceShader64BitIndexingFeaturesEXT<'a>
30838{
30839}
30840
30841impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
30842	for vk::PhysicalDeviceShader64BitIndexingFeaturesEXT<'a>
30843{
30844}
30845
30846#[cfg(feature = "platform-ohos")]
30847impl<'a> crate::construction::sealed::ChainNode for vk::NativeBufferUsageOHOS<'a> {
30848	const S_TYPE: vk::StructureType = vk::StructureType::NATIVE_BUFFER_USAGE_OHOS;
30849
30850	fn s_type(&self) -> vk::StructureType {
30851		self.s_type
30852	}
30853
30854	fn p_next(&self) -> *const std::ffi::c_void {
30855		self.p_next.cast_const()
30856	}
30857
30858	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30859		self.p_next = p_next;
30860	}
30861
30862	fn address(&mut self) -> *mut std::ffi::c_void {
30863		std::ptr::from_mut(self).cast()
30864	}
30865}
30866
30867#[cfg(feature = "platform-ohos")]
30868impl<'a, 'root> crate::Extends<vk::ImageFormatProperties2<'root>>
30869	for vk::NativeBufferUsageOHOS<'a>
30870{
30871}
30872
30873#[cfg(feature = "platform-ohos")]
30874impl<'a> crate::construction::sealed::ChainNode for vk::NativeBufferPropertiesOHOS<'a> {
30875	const S_TYPE: vk::StructureType = vk::StructureType::NATIVE_BUFFER_PROPERTIES_OHOS;
30876
30877	fn s_type(&self) -> vk::StructureType {
30878		self.s_type
30879	}
30880
30881	fn p_next(&self) -> *const std::ffi::c_void {
30882		self.p_next.cast_const()
30883	}
30884
30885	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30886		self.p_next = p_next;
30887	}
30888
30889	fn address(&mut self) -> *mut std::ffi::c_void {
30890		std::ptr::from_mut(self).cast()
30891	}
30892}
30893
30894#[cfg(feature = "platform-ohos")]
30895impl<'a> crate::construction::sealed::ChainNode for vk::NativeBufferFormatPropertiesOHOS<'a> {
30896	const S_TYPE: vk::StructureType = vk::StructureType::NATIVE_BUFFER_FORMAT_PROPERTIES_OHOS;
30897
30898	fn s_type(&self) -> vk::StructureType {
30899		self.s_type
30900	}
30901
30902	fn p_next(&self) -> *const std::ffi::c_void {
30903		self.p_next.cast_const()
30904	}
30905
30906	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30907		self.p_next = p_next;
30908	}
30909
30910	fn address(&mut self) -> *mut std::ffi::c_void {
30911		std::ptr::from_mut(self).cast()
30912	}
30913}
30914
30915#[cfg(feature = "platform-ohos")]
30916impl<'a, 'root> crate::Extends<vk::NativeBufferPropertiesOHOS<'root>>
30917	for vk::NativeBufferFormatPropertiesOHOS<'a>
30918{
30919}
30920
30921#[cfg(feature = "platform-ohos")]
30922impl<'a> crate::construction::sealed::ChainNode for vk::ImportNativeBufferInfoOHOS<'a> {
30923	const S_TYPE: vk::StructureType = vk::StructureType::IMPORT_NATIVE_BUFFER_INFO_OHOS;
30924
30925	fn s_type(&self) -> vk::StructureType {
30926		self.s_type
30927	}
30928
30929	fn p_next(&self) -> *const std::ffi::c_void {
30930		self.p_next
30931	}
30932
30933	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30934		self.p_next = p_next.cast_const();
30935	}
30936
30937	fn address(&mut self) -> *mut std::ffi::c_void {
30938		std::ptr::from_mut(self).cast()
30939	}
30940}
30941
30942#[cfg(feature = "platform-ohos")]
30943impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>>
30944	for vk::ImportNativeBufferInfoOHOS<'a>
30945{
30946}
30947
30948#[cfg(feature = "platform-ohos")]
30949impl<'a> crate::construction::sealed::ChainNode for vk::MemoryGetNativeBufferInfoOHOS<'a> {
30950	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_GET_NATIVE_BUFFER_INFO_OHOS;
30951
30952	fn s_type(&self) -> vk::StructureType {
30953		self.s_type
30954	}
30955
30956	fn p_next(&self) -> *const std::ffi::c_void {
30957		self.p_next
30958	}
30959
30960	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30961		self.p_next = p_next.cast_const();
30962	}
30963
30964	fn address(&mut self) -> *mut std::ffi::c_void {
30965		std::ptr::from_mut(self).cast()
30966	}
30967}
30968
30969#[cfg(feature = "platform-ohos")]
30970impl<'a> crate::construction::sealed::ChainNode for vk::ExternalFormatOHOS<'a> {
30971	const S_TYPE: vk::StructureType = vk::StructureType::EXTERNAL_FORMAT_OHOS;
30972
30973	fn s_type(&self) -> vk::StructureType {
30974		self.s_type
30975	}
30976
30977	fn p_next(&self) -> *const std::ffi::c_void {
30978		self.p_next.cast_const()
30979	}
30980
30981	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
30982		self.p_next = p_next;
30983	}
30984
30985	fn address(&mut self) -> *mut std::ffi::c_void {
30986		std::ptr::from_mut(self).cast()
30987	}
30988}
30989
30990#[cfg(feature = "platform-ohos")]
30991impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>> for vk::ExternalFormatOHOS<'a> {}
30992
30993#[cfg(feature = "platform-ohos")]
30994impl<'a, 'root> crate::Extends<vk::SamplerYcbcrConversionCreateInfo<'root>>
30995	for vk::ExternalFormatOHOS<'a>
30996{
30997}
30998
30999#[cfg(feature = "platform-ohos")]
31000impl<'a, 'root> crate::Extends<vk::AttachmentDescription2<'root>> for vk::ExternalFormatOHOS<'a> {}
31001
31002#[cfg(feature = "platform-ohos")]
31003impl<'a, 'root> crate::Extends<vk::GraphicsPipelineCreateInfo<'root>>
31004	for vk::ExternalFormatOHOS<'a>
31005{
31006}
31007
31008#[cfg(feature = "platform-ohos")]
31009impl<'a, 'root> crate::Extends<vk::CommandBufferInheritanceInfo<'root>>
31010	for vk::ExternalFormatOHOS<'a>
31011{
31012}
31013
31014impl<'a> crate::construction::sealed::ChainNode for vk::PerfHintInfoQCOM<'a> {
31015	const S_TYPE: vk::StructureType = vk::StructureType::PERF_HINT_INFO_QCOM;
31016
31017	fn s_type(&self) -> vk::StructureType {
31018		self.s_type
31019	}
31020
31021	fn p_next(&self) -> *const std::ffi::c_void {
31022		self.p_next.cast_const()
31023	}
31024
31025	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31026		self.p_next = p_next;
31027	}
31028
31029	fn address(&mut self) -> *mut std::ffi::c_void {
31030		std::ptr::from_mut(self).cast()
31031	}
31032}
31033
31034impl<'a> crate::construction::sealed::ChainNode
31035	for vk::PhysicalDeviceQueuePerfHintFeaturesQCOM<'a>
31036{
31037	const S_TYPE: vk::StructureType =
31038		vk::StructureType::PHYSICAL_DEVICE_QUEUE_PERF_HINT_FEATURES_QCOM;
31039
31040	fn s_type(&self) -> vk::StructureType {
31041		self.s_type
31042	}
31043
31044	fn p_next(&self) -> *const std::ffi::c_void {
31045		self.p_next.cast_const()
31046	}
31047
31048	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31049		self.p_next = p_next;
31050	}
31051
31052	fn address(&mut self) -> *mut std::ffi::c_void {
31053		std::ptr::from_mut(self).cast()
31054	}
31055}
31056
31057impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
31058	for vk::PhysicalDeviceQueuePerfHintFeaturesQCOM<'a>
31059{
31060}
31061
31062impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
31063	for vk::PhysicalDeviceQueuePerfHintFeaturesQCOM<'a>
31064{
31065}
31066
31067impl<'a> crate::construction::sealed::ChainNode
31068	for vk::PhysicalDeviceQueuePerfHintPropertiesQCOM<'a>
31069{
31070	const S_TYPE: vk::StructureType =
31071		vk::StructureType::PHYSICAL_DEVICE_QUEUE_PERF_HINT_PROPERTIES_QCOM;
31072
31073	fn s_type(&self) -> vk::StructureType {
31074		self.s_type
31075	}
31076
31077	fn p_next(&self) -> *const std::ffi::c_void {
31078		self.p_next.cast_const()
31079	}
31080
31081	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31082		self.p_next = p_next;
31083	}
31084
31085	fn address(&mut self) -> *mut std::ffi::c_void {
31086		std::ptr::from_mut(self).cast()
31087	}
31088}
31089
31090impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
31091	for vk::PhysicalDeviceQueuePerfHintPropertiesQCOM<'a>
31092{
31093}
31094
31095impl<'a> crate::construction::sealed::ChainNode
31096	for vk::PhysicalDevicePerformanceCountersByRegionFeaturesARM<'a>
31097{
31098	const S_TYPE: vk::StructureType =
31099		vk::StructureType::PHYSICAL_DEVICE_PERFORMANCE_COUNTERS_BY_REGION_FEATURES_ARM;
31100
31101	fn s_type(&self) -> vk::StructureType {
31102		self.s_type
31103	}
31104
31105	fn p_next(&self) -> *const std::ffi::c_void {
31106		self.p_next.cast_const()
31107	}
31108
31109	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31110		self.p_next = p_next;
31111	}
31112
31113	fn address(&mut self) -> *mut std::ffi::c_void {
31114		std::ptr::from_mut(self).cast()
31115	}
31116}
31117
31118impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
31119	for vk::PhysicalDevicePerformanceCountersByRegionFeaturesARM<'a>
31120{
31121}
31122
31123impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
31124	for vk::PhysicalDevicePerformanceCountersByRegionFeaturesARM<'a>
31125{
31126}
31127
31128impl<'a> crate::construction::sealed::ChainNode
31129	for vk::PhysicalDevicePerformanceCountersByRegionPropertiesARM<'a>
31130{
31131	const S_TYPE: vk::StructureType =
31132		vk::StructureType::PHYSICAL_DEVICE_PERFORMANCE_COUNTERS_BY_REGION_PROPERTIES_ARM;
31133
31134	fn s_type(&self) -> vk::StructureType {
31135		self.s_type
31136	}
31137
31138	fn p_next(&self) -> *const std::ffi::c_void {
31139		self.p_next.cast_const()
31140	}
31141
31142	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31143		self.p_next = p_next;
31144	}
31145
31146	fn address(&mut self) -> *mut std::ffi::c_void {
31147		std::ptr::from_mut(self).cast()
31148	}
31149}
31150
31151impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
31152	for vk::PhysicalDevicePerformanceCountersByRegionPropertiesARM<'a>
31153{
31154}
31155
31156impl<'a> crate::construction::sealed::ChainNode for vk::PerformanceCounterARM<'a> {
31157	const S_TYPE: vk::StructureType = vk::StructureType::PERFORMANCE_COUNTER_ARM;
31158
31159	fn s_type(&self) -> vk::StructureType {
31160		self.s_type
31161	}
31162
31163	fn p_next(&self) -> *const std::ffi::c_void {
31164		self.p_next.cast_const()
31165	}
31166
31167	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31168		self.p_next = p_next;
31169	}
31170
31171	fn address(&mut self) -> *mut std::ffi::c_void {
31172		std::ptr::from_mut(self).cast()
31173	}
31174}
31175
31176impl<'a> crate::construction::sealed::ChainNode for vk::PerformanceCounterDescriptionARM<'a> {
31177	const S_TYPE: vk::StructureType = vk::StructureType::PERFORMANCE_COUNTER_DESCRIPTION_ARM;
31178
31179	fn s_type(&self) -> vk::StructureType {
31180		self.s_type
31181	}
31182
31183	fn p_next(&self) -> *const std::ffi::c_void {
31184		self.p_next.cast_const()
31185	}
31186
31187	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31188		self.p_next = p_next;
31189	}
31190
31191	fn address(&mut self) -> *mut std::ffi::c_void {
31192		std::ptr::from_mut(self).cast()
31193	}
31194}
31195
31196impl<'a> crate::construction::sealed::ChainNode
31197	for vk::RenderPassPerformanceCountersByRegionBeginInfoARM<'a>
31198{
31199	const S_TYPE: vk::StructureType =
31200		vk::StructureType::RENDER_PASS_PERFORMANCE_COUNTERS_BY_REGION_BEGIN_INFO_ARM;
31201
31202	fn s_type(&self) -> vk::StructureType {
31203		self.s_type
31204	}
31205
31206	fn p_next(&self) -> *const std::ffi::c_void {
31207		self.p_next.cast_const()
31208	}
31209
31210	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31211		self.p_next = p_next;
31212	}
31213
31214	fn address(&mut self) -> *mut std::ffi::c_void {
31215		std::ptr::from_mut(self).cast()
31216	}
31217}
31218
31219impl<'a, 'root> crate::Extends<vk::RenderPassBeginInfo<'root>>
31220	for vk::RenderPassPerformanceCountersByRegionBeginInfoARM<'a>
31221{
31222}
31223
31224impl<'a, 'root> crate::Extends<vk::RenderingInfo<'root>>
31225	for vk::RenderPassPerformanceCountersByRegionBeginInfoARM<'a>
31226{
31227}
31228
31229impl<'a> crate::construction::sealed::ChainNode for vk::ComputeOccupancyPriorityParametersNV<'a> {
31230	const S_TYPE: vk::StructureType = vk::StructureType::COMPUTE_OCCUPANCY_PRIORITY_PARAMETERS_NV;
31231
31232	fn s_type(&self) -> vk::StructureType {
31233		self.s_type
31234	}
31235
31236	fn p_next(&self) -> *const std::ffi::c_void {
31237		self.p_next
31238	}
31239
31240	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31241		self.p_next = p_next.cast_const();
31242	}
31243
31244	fn address(&mut self) -> *mut std::ffi::c_void {
31245		std::ptr::from_mut(self).cast()
31246	}
31247}
31248
31249impl<'a> crate::construction::sealed::ChainNode
31250	for vk::PhysicalDeviceComputeOccupancyPriorityFeaturesNV<'a>
31251{
31252	const S_TYPE: vk::StructureType =
31253		vk::StructureType::PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV;
31254
31255	fn s_type(&self) -> vk::StructureType {
31256		self.s_type
31257	}
31258
31259	fn p_next(&self) -> *const std::ffi::c_void {
31260		self.p_next.cast_const()
31261	}
31262
31263	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31264		self.p_next = p_next;
31265	}
31266
31267	fn address(&mut self) -> *mut std::ffi::c_void {
31268		std::ptr::from_mut(self).cast()
31269	}
31270}
31271
31272impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
31273	for vk::PhysicalDeviceComputeOccupancyPriorityFeaturesNV<'a>
31274{
31275}
31276
31277impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
31278	for vk::PhysicalDeviceComputeOccupancyPriorityFeaturesNV<'a>
31279{
31280}
31281
31282impl<'a> crate::construction::sealed::ChainNode
31283	for vk::PhysicalDeviceShaderLongVectorFeaturesEXT<'a>
31284{
31285	const S_TYPE: vk::StructureType =
31286		vk::StructureType::PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT;
31287
31288	fn s_type(&self) -> vk::StructureType {
31289		self.s_type
31290	}
31291
31292	fn p_next(&self) -> *const std::ffi::c_void {
31293		self.p_next.cast_const()
31294	}
31295
31296	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31297		self.p_next = p_next;
31298	}
31299
31300	fn address(&mut self) -> *mut std::ffi::c_void {
31301		std::ptr::from_mut(self).cast()
31302	}
31303}
31304
31305impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
31306	for vk::PhysicalDeviceShaderLongVectorFeaturesEXT<'a>
31307{
31308}
31309
31310impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
31311	for vk::PhysicalDeviceShaderLongVectorFeaturesEXT<'a>
31312{
31313}
31314
31315impl<'a> crate::construction::sealed::ChainNode
31316	for vk::PhysicalDeviceShaderLongVectorPropertiesEXT<'a>
31317{
31318	const S_TYPE: vk::StructureType =
31319		vk::StructureType::PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT;
31320
31321	fn s_type(&self) -> vk::StructureType {
31322		self.s_type
31323	}
31324
31325	fn p_next(&self) -> *const std::ffi::c_void {
31326		self.p_next.cast_const()
31327	}
31328
31329	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31330		self.p_next = p_next;
31331	}
31332
31333	fn address(&mut self) -> *mut std::ffi::c_void {
31334		std::ptr::from_mut(self).cast()
31335	}
31336}
31337
31338impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
31339	for vk::PhysicalDeviceShaderLongVectorPropertiesEXT<'a>
31340{
31341}
31342
31343impl<'a> crate::construction::sealed::ChainNode
31344	for vk::PhysicalDeviceTextureCompressionASTC3DFeaturesEXT<'a>
31345{
31346	const S_TYPE: vk::StructureType =
31347		vk::StructureType::PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_3D_FEATURES_EXT;
31348
31349	fn s_type(&self) -> vk::StructureType {
31350		self.s_type
31351	}
31352
31353	fn p_next(&self) -> *const std::ffi::c_void {
31354		self.p_next.cast_const()
31355	}
31356
31357	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31358		self.p_next = p_next;
31359	}
31360
31361	fn address(&mut self) -> *mut std::ffi::c_void {
31362		std::ptr::from_mut(self).cast()
31363	}
31364}
31365
31366impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
31367	for vk::PhysicalDeviceTextureCompressionASTC3DFeaturesEXT<'a>
31368{
31369}
31370
31371impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
31372	for vk::PhysicalDeviceTextureCompressionASTC3DFeaturesEXT<'a>
31373{
31374}
31375
31376impl<'a> crate::construction::sealed::ChainNode
31377	for vk::PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT<'a>
31378{
31379	const S_TYPE: vk::StructureType =
31380		vk::StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT;
31381
31382	fn s_type(&self) -> vk::StructureType {
31383		self.s_type
31384	}
31385
31386	fn p_next(&self) -> *const std::ffi::c_void {
31387		self.p_next.cast_const()
31388	}
31389
31390	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31391		self.p_next = p_next;
31392	}
31393
31394	fn address(&mut self) -> *mut std::ffi::c_void {
31395		std::ptr::from_mut(self).cast()
31396	}
31397}
31398
31399impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
31400	for vk::PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT<'a>
31401{
31402}
31403
31404impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
31405	for vk::PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT<'a>
31406{
31407}
31408
31409impl<'a> crate::construction::sealed::ChainNode for vk::TexelBufferDescriptorInfoEXT<'a> {
31410	const S_TYPE: vk::StructureType = vk::StructureType::TEXEL_BUFFER_DESCRIPTOR_INFO_EXT;
31411
31412	fn s_type(&self) -> vk::StructureType {
31413		self.s_type
31414	}
31415
31416	fn p_next(&self) -> *const std::ffi::c_void {
31417		self.p_next
31418	}
31419
31420	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31421		self.p_next = p_next.cast_const();
31422	}
31423
31424	fn address(&mut self) -> *mut std::ffi::c_void {
31425		std::ptr::from_mut(self).cast()
31426	}
31427}
31428
31429impl<'a> crate::construction::sealed::ChainNode for vk::ImageDescriptorInfoEXT<'a> {
31430	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_DESCRIPTOR_INFO_EXT;
31431
31432	fn s_type(&self) -> vk::StructureType {
31433		self.s_type
31434	}
31435
31436	fn p_next(&self) -> *const std::ffi::c_void {
31437		self.p_next
31438	}
31439
31440	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31441		self.p_next = p_next.cast_const();
31442	}
31443
31444	fn address(&mut self) -> *mut std::ffi::c_void {
31445		std::ptr::from_mut(self).cast()
31446	}
31447}
31448
31449impl<'a> crate::construction::sealed::ChainNode for vk::ResourceDescriptorInfoEXT<'a> {
31450	const S_TYPE: vk::StructureType = vk::StructureType::RESOURCE_DESCRIPTOR_INFO_EXT;
31451
31452	fn s_type(&self) -> vk::StructureType {
31453		self.s_type
31454	}
31455
31456	fn p_next(&self) -> *const std::ffi::c_void {
31457		self.p_next
31458	}
31459
31460	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31461		self.p_next = p_next.cast_const();
31462	}
31463
31464	fn address(&mut self) -> *mut std::ffi::c_void {
31465		std::ptr::from_mut(self).cast()
31466	}
31467}
31468
31469impl<'a> crate::construction::sealed::ChainNode for vk::BindHeapInfoEXT<'a> {
31470	const S_TYPE: vk::StructureType = vk::StructureType::BIND_HEAP_INFO_EXT;
31471
31472	fn s_type(&self) -> vk::StructureType {
31473		self.s_type
31474	}
31475
31476	fn p_next(&self) -> *const std::ffi::c_void {
31477		self.p_next
31478	}
31479
31480	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31481		self.p_next = p_next.cast_const();
31482	}
31483
31484	fn address(&mut self) -> *mut std::ffi::c_void {
31485		std::ptr::from_mut(self).cast()
31486	}
31487}
31488
31489impl<'a> crate::construction::sealed::ChainNode for vk::PushDataInfoEXT<'a> {
31490	const S_TYPE: vk::StructureType = vk::StructureType::PUSH_DATA_INFO_EXT;
31491
31492	fn s_type(&self) -> vk::StructureType {
31493		self.s_type
31494	}
31495
31496	fn p_next(&self) -> *const std::ffi::c_void {
31497		self.p_next
31498	}
31499
31500	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31501		self.p_next = p_next.cast_const();
31502	}
31503
31504	fn address(&mut self) -> *mut std::ffi::c_void {
31505		std::ptr::from_mut(self).cast()
31506	}
31507}
31508
31509impl<'a> crate::construction::sealed::ChainNode for vk::DescriptorSetAndBindingMappingEXT<'a> {
31510	const S_TYPE: vk::StructureType = vk::StructureType::DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT;
31511
31512	fn s_type(&self) -> vk::StructureType {
31513		self.s_type
31514	}
31515
31516	fn p_next(&self) -> *const std::ffi::c_void {
31517		self.p_next
31518	}
31519
31520	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31521		self.p_next = p_next.cast_const();
31522	}
31523
31524	fn address(&mut self) -> *mut std::ffi::c_void {
31525		std::ptr::from_mut(self).cast()
31526	}
31527}
31528
31529impl<'a> crate::construction::sealed::ChainNode
31530	for vk::ShaderDescriptorSetAndBindingMappingInfoEXT<'a>
31531{
31532	const S_TYPE: vk::StructureType =
31533		vk::StructureType::SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT;
31534
31535	fn s_type(&self) -> vk::StructureType {
31536		self.s_type
31537	}
31538
31539	fn p_next(&self) -> *const std::ffi::c_void {
31540		self.p_next
31541	}
31542
31543	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31544		self.p_next = p_next.cast_const();
31545	}
31546
31547	fn address(&mut self) -> *mut std::ffi::c_void {
31548		std::ptr::from_mut(self).cast()
31549	}
31550}
31551
31552impl<'a, 'root> crate::Extends<vk::PipelineShaderStageCreateInfo<'root>>
31553	for vk::ShaderDescriptorSetAndBindingMappingInfoEXT<'a>
31554{
31555}
31556
31557impl<'a, 'root> crate::Extends<vk::ShaderCreateInfoEXT<'root>>
31558	for vk::ShaderDescriptorSetAndBindingMappingInfoEXT<'a>
31559{
31560}
31561
31562impl<'a> crate::construction::sealed::ChainNode
31563	for vk::SamplerCustomBorderColorIndexCreateInfoEXT<'a>
31564{
31565	const S_TYPE: vk::StructureType =
31566		vk::StructureType::SAMPLER_CUSTOM_BORDER_COLOR_INDEX_CREATE_INFO_EXT;
31567
31568	fn s_type(&self) -> vk::StructureType {
31569		self.s_type
31570	}
31571
31572	fn p_next(&self) -> *const std::ffi::c_void {
31573		self.p_next
31574	}
31575
31576	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31577		self.p_next = p_next.cast_const();
31578	}
31579
31580	fn address(&mut self) -> *mut std::ffi::c_void {
31581		std::ptr::from_mut(self).cast()
31582	}
31583}
31584
31585impl<'a, 'root> crate::Extends<vk::SamplerCreateInfo<'root>>
31586	for vk::SamplerCustomBorderColorIndexCreateInfoEXT<'a>
31587{
31588}
31589
31590impl<'a> crate::construction::sealed::ChainNode for vk::OpaqueCaptureDataCreateInfoEXT<'a> {
31591	const S_TYPE: vk::StructureType = vk::StructureType::OPAQUE_CAPTURE_DATA_CREATE_INFO_EXT;
31592
31593	fn s_type(&self) -> vk::StructureType {
31594		self.s_type
31595	}
31596
31597	fn p_next(&self) -> *const std::ffi::c_void {
31598		self.p_next
31599	}
31600
31601	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31602		self.p_next = p_next.cast_const();
31603	}
31604
31605	fn address(&mut self) -> *mut std::ffi::c_void {
31606		std::ptr::from_mut(self).cast()
31607	}
31608}
31609
31610impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>>
31611	for vk::OpaqueCaptureDataCreateInfoEXT<'a>
31612{
31613}
31614
31615impl<'a, 'root> crate::Extends<vk::TensorCreateInfoARM<'root>>
31616	for vk::OpaqueCaptureDataCreateInfoEXT<'a>
31617{
31618}
31619
31620impl<'a> crate::construction::sealed::ChainNode for vk::IndirectCommandsLayoutPushDataTokenNV<'a> {
31621	const S_TYPE: vk::StructureType = vk::StructureType::INDIRECT_COMMANDS_LAYOUT_PUSH_DATA_TOKEN_NV;
31622
31623	fn s_type(&self) -> vk::StructureType {
31624		self.s_type
31625	}
31626
31627	fn p_next(&self) -> *const std::ffi::c_void {
31628		self.p_next
31629	}
31630
31631	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31632		self.p_next = p_next.cast_const();
31633	}
31634
31635	fn address(&mut self) -> *mut std::ffi::c_void {
31636		std::ptr::from_mut(self).cast()
31637	}
31638}
31639
31640impl<'a, 'root> crate::Extends<vk::IndirectCommandsLayoutTokenNV<'root>>
31641	for vk::IndirectCommandsLayoutPushDataTokenNV<'a>
31642{
31643}
31644
31645impl<'a> crate::construction::sealed::ChainNode for vk::SubsampledImageFormatPropertiesEXT<'a> {
31646	const S_TYPE: vk::StructureType = vk::StructureType::SUBSAMPLED_IMAGE_FORMAT_PROPERTIES_EXT;
31647
31648	fn s_type(&self) -> vk::StructureType {
31649		self.s_type
31650	}
31651
31652	fn p_next(&self) -> *const std::ffi::c_void {
31653		self.p_next
31654	}
31655
31656	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31657		self.p_next = p_next.cast_const();
31658	}
31659
31660	fn address(&mut self) -> *mut std::ffi::c_void {
31661		std::ptr::from_mut(self).cast()
31662	}
31663}
31664
31665impl<'a, 'root> crate::Extends<vk::ImageFormatProperties2<'root>>
31666	for vk::SubsampledImageFormatPropertiesEXT<'a>
31667{
31668}
31669
31670impl<'a> crate::construction::sealed::ChainNode
31671	for vk::PhysicalDeviceShaderSplitBarrierFeaturesEXT<'a>
31672{
31673	const S_TYPE: vk::StructureType =
31674		vk::StructureType::PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_FEATURES_EXT;
31675
31676	fn s_type(&self) -> vk::StructureType {
31677		self.s_type
31678	}
31679
31680	fn p_next(&self) -> *const std::ffi::c_void {
31681		self.p_next.cast_const()
31682	}
31683
31684	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31685		self.p_next = p_next;
31686	}
31687
31688	fn address(&mut self) -> *mut std::ffi::c_void {
31689		std::ptr::from_mut(self).cast()
31690	}
31691}
31692
31693impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
31694	for vk::PhysicalDeviceShaderSplitBarrierFeaturesEXT<'a>
31695{
31696}
31697
31698impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
31699	for vk::PhysicalDeviceShaderSplitBarrierFeaturesEXT<'a>
31700{
31701}
31702
31703impl<'a> crate::construction::sealed::ChainNode
31704	for vk::PhysicalDeviceShaderSplitBarrierPropertiesEXT<'a>
31705{
31706	const S_TYPE: vk::StructureType =
31707		vk::StructureType::PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_PROPERTIES_EXT;
31708
31709	fn s_type(&self) -> vk::StructureType {
31710		self.s_type
31711	}
31712
31713	fn p_next(&self) -> *const std::ffi::c_void {
31714		self.p_next.cast_const()
31715	}
31716
31717	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31718		self.p_next = p_next;
31719	}
31720
31721	fn address(&mut self) -> *mut std::ffi::c_void {
31722		std::ptr::from_mut(self).cast()
31723	}
31724}
31725
31726impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
31727	for vk::PhysicalDeviceShaderSplitBarrierPropertiesEXT<'a>
31728{
31729}
31730
31731impl<'a> crate::construction::sealed::ChainNode
31732	for vk::PhysicalDeviceDescriptorHeapFeaturesEXT<'a>
31733{
31734	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_DESCRIPTOR_HEAP_FEATURES_EXT;
31735
31736	fn s_type(&self) -> vk::StructureType {
31737		self.s_type
31738	}
31739
31740	fn p_next(&self) -> *const std::ffi::c_void {
31741		self.p_next.cast_const()
31742	}
31743
31744	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31745		self.p_next = p_next;
31746	}
31747
31748	fn address(&mut self) -> *mut std::ffi::c_void {
31749		std::ptr::from_mut(self).cast()
31750	}
31751}
31752
31753impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
31754	for vk::PhysicalDeviceDescriptorHeapFeaturesEXT<'a>
31755{
31756}
31757
31758impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
31759	for vk::PhysicalDeviceDescriptorHeapFeaturesEXT<'a>
31760{
31761}
31762
31763impl<'a> crate::construction::sealed::ChainNode
31764	for vk::PhysicalDeviceDescriptorHeapPropertiesEXT<'a>
31765{
31766	const S_TYPE: vk::StructureType =
31767		vk::StructureType::PHYSICAL_DEVICE_DESCRIPTOR_HEAP_PROPERTIES_EXT;
31768
31769	fn s_type(&self) -> vk::StructureType {
31770		self.s_type
31771	}
31772
31773	fn p_next(&self) -> *const std::ffi::c_void {
31774		self.p_next.cast_const()
31775	}
31776
31777	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31778		self.p_next = p_next;
31779	}
31780
31781	fn address(&mut self) -> *mut std::ffi::c_void {
31782		std::ptr::from_mut(self).cast()
31783	}
31784}
31785
31786impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
31787	for vk::PhysicalDeviceDescriptorHeapPropertiesEXT<'a>
31788{
31789}
31790
31791impl<'a> crate::construction::sealed::ChainNode
31792	for vk::CommandBufferInheritanceDescriptorHeapInfoEXT<'a>
31793{
31794	const S_TYPE: vk::StructureType =
31795		vk::StructureType::COMMAND_BUFFER_INHERITANCE_DESCRIPTOR_HEAP_INFO_EXT;
31796
31797	fn s_type(&self) -> vk::StructureType {
31798		self.s_type
31799	}
31800
31801	fn p_next(&self) -> *const std::ffi::c_void {
31802		self.p_next
31803	}
31804
31805	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31806		self.p_next = p_next.cast_const();
31807	}
31808
31809	fn address(&mut self) -> *mut std::ffi::c_void {
31810		std::ptr::from_mut(self).cast()
31811	}
31812}
31813
31814impl<'a, 'root> crate::Extends<vk::CommandBufferInheritanceInfo<'root>>
31815	for vk::CommandBufferInheritanceDescriptorHeapInfoEXT<'a>
31816{
31817}
31818
31819impl<'a> crate::construction::sealed::ChainNode
31820	for vk::PhysicalDeviceDescriptorHeapTensorPropertiesARM<'a>
31821{
31822	const S_TYPE: vk::StructureType =
31823		vk::StructureType::PHYSICAL_DEVICE_DESCRIPTOR_HEAP_TENSOR_PROPERTIES_ARM;
31824
31825	fn s_type(&self) -> vk::StructureType {
31826		self.s_type
31827	}
31828
31829	fn p_next(&self) -> *const std::ffi::c_void {
31830		self.p_next.cast_const()
31831	}
31832
31833	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31834		self.p_next = p_next;
31835	}
31836
31837	fn address(&mut self) -> *mut std::ffi::c_void {
31838		std::ptr::from_mut(self).cast()
31839	}
31840}
31841
31842impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
31843	for vk::PhysicalDeviceDescriptorHeapTensorPropertiesARM<'a>
31844{
31845}
31846
31847impl<'a> crate::construction::sealed::ChainNode
31848	for vk::PhysicalDeviceShaderInstrumentationFeaturesARM<'a>
31849{
31850	const S_TYPE: vk::StructureType =
31851		vk::StructureType::PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM;
31852
31853	fn s_type(&self) -> vk::StructureType {
31854		self.s_type
31855	}
31856
31857	fn p_next(&self) -> *const std::ffi::c_void {
31858		self.p_next.cast_const()
31859	}
31860
31861	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31862		self.p_next = p_next;
31863	}
31864
31865	fn address(&mut self) -> *mut std::ffi::c_void {
31866		std::ptr::from_mut(self).cast()
31867	}
31868}
31869
31870impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
31871	for vk::PhysicalDeviceShaderInstrumentationFeaturesARM<'a>
31872{
31873}
31874
31875impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
31876	for vk::PhysicalDeviceShaderInstrumentationFeaturesARM<'a>
31877{
31878}
31879
31880impl<'a> crate::construction::sealed::ChainNode
31881	for vk::PhysicalDeviceShaderInstrumentationPropertiesARM<'a>
31882{
31883	const S_TYPE: vk::StructureType =
31884		vk::StructureType::PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_PROPERTIES_ARM;
31885
31886	fn s_type(&self) -> vk::StructureType {
31887		self.s_type
31888	}
31889
31890	fn p_next(&self) -> *const std::ffi::c_void {
31891		self.p_next.cast_const()
31892	}
31893
31894	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31895		self.p_next = p_next;
31896	}
31897
31898	fn address(&mut self) -> *mut std::ffi::c_void {
31899		std::ptr::from_mut(self).cast()
31900	}
31901}
31902
31903impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
31904	for vk::PhysicalDeviceShaderInstrumentationPropertiesARM<'a>
31905{
31906}
31907
31908impl<'a> crate::construction::sealed::ChainNode for vk::ShaderInstrumentationCreateInfoARM<'a> {
31909	const S_TYPE: vk::StructureType = vk::StructureType::SHADER_INSTRUMENTATION_CREATE_INFO_ARM;
31910
31911	fn s_type(&self) -> vk::StructureType {
31912		self.s_type
31913	}
31914
31915	fn p_next(&self) -> *const std::ffi::c_void {
31916		self.p_next.cast_const()
31917	}
31918
31919	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31920		self.p_next = p_next;
31921	}
31922
31923	fn address(&mut self) -> *mut std::ffi::c_void {
31924		std::ptr::from_mut(self).cast()
31925	}
31926}
31927
31928impl<'a> crate::construction::sealed::ChainNode
31929	for vk::ShaderInstrumentationMetricDescriptionARM<'a>
31930{
31931	const S_TYPE: vk::StructureType =
31932		vk::StructureType::SHADER_INSTRUMENTATION_METRIC_DESCRIPTION_ARM;
31933
31934	fn s_type(&self) -> vk::StructureType {
31935		self.s_type
31936	}
31937
31938	fn p_next(&self) -> *const std::ffi::c_void {
31939		self.p_next.cast_const()
31940	}
31941
31942	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31943		self.p_next = p_next;
31944	}
31945
31946	fn address(&mut self) -> *mut std::ffi::c_void {
31947		std::ptr::from_mut(self).cast()
31948	}
31949}
31950
31951impl<'a> crate::construction::sealed::ChainNode for vk::DeviceMemoryCopyKHR<'a> {
31952	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_MEMORY_COPY_KHR;
31953
31954	fn s_type(&self) -> vk::StructureType {
31955		self.s_type
31956	}
31957
31958	fn p_next(&self) -> *const std::ffi::c_void {
31959		self.p_next
31960	}
31961
31962	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31963		self.p_next = p_next.cast_const();
31964	}
31965
31966	fn address(&mut self) -> *mut std::ffi::c_void {
31967		std::ptr::from_mut(self).cast()
31968	}
31969}
31970
31971impl<'a> crate::construction::sealed::ChainNode for vk::CopyDeviceMemoryInfoKHR<'a> {
31972	const S_TYPE: vk::StructureType = vk::StructureType::COPY_DEVICE_MEMORY_INFO_KHR;
31973
31974	fn s_type(&self) -> vk::StructureType {
31975		self.s_type
31976	}
31977
31978	fn p_next(&self) -> *const std::ffi::c_void {
31979		self.p_next
31980	}
31981
31982	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
31983		self.p_next = p_next.cast_const();
31984	}
31985
31986	fn address(&mut self) -> *mut std::ffi::c_void {
31987		std::ptr::from_mut(self).cast()
31988	}
31989}
31990
31991impl<'a> crate::construction::sealed::ChainNode for vk::DeviceMemoryImageCopyKHR<'a> {
31992	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_MEMORY_IMAGE_COPY_KHR;
31993
31994	fn s_type(&self) -> vk::StructureType {
31995		self.s_type
31996	}
31997
31998	fn p_next(&self) -> *const std::ffi::c_void {
31999		self.p_next
32000	}
32001
32002	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32003		self.p_next = p_next.cast_const();
32004	}
32005
32006	fn address(&mut self) -> *mut std::ffi::c_void {
32007		std::ptr::from_mut(self).cast()
32008	}
32009}
32010
32011impl<'a> crate::construction::sealed::ChainNode for vk::CopyDeviceMemoryImageInfoKHR<'a> {
32012	const S_TYPE: vk::StructureType = vk::StructureType::COPY_DEVICE_MEMORY_IMAGE_INFO_KHR;
32013
32014	fn s_type(&self) -> vk::StructureType {
32015		self.s_type
32016	}
32017
32018	fn p_next(&self) -> *const std::ffi::c_void {
32019		self.p_next
32020	}
32021
32022	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32023		self.p_next = p_next.cast_const();
32024	}
32025
32026	fn address(&mut self) -> *mut std::ffi::c_void {
32027		std::ptr::from_mut(self).cast()
32028	}
32029}
32030
32031impl<'a> crate::construction::sealed::ChainNode for vk::MemoryRangeBarriersInfoKHR<'a> {
32032	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_RANGE_BARRIERS_INFO_KHR;
32033
32034	fn s_type(&self) -> vk::StructureType {
32035		self.s_type
32036	}
32037
32038	fn p_next(&self) -> *const std::ffi::c_void {
32039		self.p_next
32040	}
32041
32042	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32043		self.p_next = p_next.cast_const();
32044	}
32045
32046	fn address(&mut self) -> *mut std::ffi::c_void {
32047		std::ptr::from_mut(self).cast()
32048	}
32049}
32050
32051impl<'a, 'root> crate::Extends<vk::DependencyInfo<'root>> for vk::MemoryRangeBarriersInfoKHR<'a> {}
32052
32053impl<'a> crate::construction::sealed::ChainNode for vk::MemoryRangeBarrierKHR<'a> {
32054	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_RANGE_BARRIER_KHR;
32055
32056	fn s_type(&self) -> vk::StructureType {
32057		self.s_type
32058	}
32059
32060	fn p_next(&self) -> *const std::ffi::c_void {
32061		self.p_next
32062	}
32063
32064	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32065		self.p_next = p_next.cast_const();
32066	}
32067
32068	fn address(&mut self) -> *mut std::ffi::c_void {
32069		std::ptr::from_mut(self).cast()
32070	}
32071}
32072
32073impl<'a> crate::construction::sealed::ChainNode
32074	for vk::PhysicalDeviceDeviceAddressCommandsFeaturesKHR<'a>
32075{
32076	const S_TYPE: vk::StructureType =
32077		vk::StructureType::PHYSICAL_DEVICE_DEVICE_ADDRESS_COMMANDS_FEATURES_KHR;
32078
32079	fn s_type(&self) -> vk::StructureType {
32080		self.s_type
32081	}
32082
32083	fn p_next(&self) -> *const std::ffi::c_void {
32084		self.p_next.cast_const()
32085	}
32086
32087	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32088		self.p_next = p_next;
32089	}
32090
32091	fn address(&mut self) -> *mut std::ffi::c_void {
32092		std::ptr::from_mut(self).cast()
32093	}
32094}
32095
32096impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
32097	for vk::PhysicalDeviceDeviceAddressCommandsFeaturesKHR<'a>
32098{
32099}
32100
32101impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
32102	for vk::PhysicalDeviceDeviceAddressCommandsFeaturesKHR<'a>
32103{
32104}
32105
32106impl<'a> crate::construction::sealed::ChainNode for vk::ConditionalRenderingBeginInfo2EXT<'a> {
32107	const S_TYPE: vk::StructureType = vk::StructureType::CONDITIONAL_RENDERING_BEGIN_INFO_2_EXT;
32108
32109	fn s_type(&self) -> vk::StructureType {
32110		self.s_type
32111	}
32112
32113	fn p_next(&self) -> *const std::ffi::c_void {
32114		self.p_next
32115	}
32116
32117	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32118		self.p_next = p_next.cast_const();
32119	}
32120
32121	fn address(&mut self) -> *mut std::ffi::c_void {
32122		std::ptr::from_mut(self).cast()
32123	}
32124}
32125
32126impl<'a> crate::construction::sealed::ChainNode for vk::AccelerationStructureCreateInfo2KHR<'a> {
32127	const S_TYPE: vk::StructureType = vk::StructureType::ACCELERATION_STRUCTURE_CREATE_INFO_2_KHR;
32128
32129	fn s_type(&self) -> vk::StructureType {
32130		self.s_type
32131	}
32132
32133	fn p_next(&self) -> *const std::ffi::c_void {
32134		self.p_next
32135	}
32136
32137	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32138		self.p_next = p_next.cast_const();
32139	}
32140
32141	fn address(&mut self) -> *mut std::ffi::c_void {
32142		std::ptr::from_mut(self).cast()
32143	}
32144}
32145
32146impl<'a> crate::construction::sealed::ChainNode for vk::BindIndexBuffer3InfoKHR<'a> {
32147	const S_TYPE: vk::StructureType = vk::StructureType::BIND_INDEX_BUFFER_3_INFO_KHR;
32148
32149	fn s_type(&self) -> vk::StructureType {
32150		self.s_type
32151	}
32152
32153	fn p_next(&self) -> *const std::ffi::c_void {
32154		self.p_next
32155	}
32156
32157	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32158		self.p_next = p_next.cast_const();
32159	}
32160
32161	fn address(&mut self) -> *mut std::ffi::c_void {
32162		std::ptr::from_mut(self).cast()
32163	}
32164}
32165
32166impl<'a> crate::construction::sealed::ChainNode for vk::BindVertexBuffer3InfoKHR<'a> {
32167	const S_TYPE: vk::StructureType = vk::StructureType::BIND_VERTEX_BUFFER_3_INFO_KHR;
32168
32169	fn s_type(&self) -> vk::StructureType {
32170		self.s_type
32171	}
32172
32173	fn p_next(&self) -> *const std::ffi::c_void {
32174		self.p_next
32175	}
32176
32177	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32178		self.p_next = p_next.cast_const();
32179	}
32180
32181	fn address(&mut self) -> *mut std::ffi::c_void {
32182		std::ptr::from_mut(self).cast()
32183	}
32184}
32185
32186impl<'a> crate::construction::sealed::ChainNode for vk::DrawIndirect2InfoKHR<'a> {
32187	const S_TYPE: vk::StructureType = vk::StructureType::DRAW_INDIRECT_2_INFO_KHR;
32188
32189	fn s_type(&self) -> vk::StructureType {
32190		self.s_type
32191	}
32192
32193	fn p_next(&self) -> *const std::ffi::c_void {
32194		self.p_next
32195	}
32196
32197	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32198		self.p_next = p_next.cast_const();
32199	}
32200
32201	fn address(&mut self) -> *mut std::ffi::c_void {
32202		std::ptr::from_mut(self).cast()
32203	}
32204}
32205
32206impl<'a> crate::construction::sealed::ChainNode for vk::DrawIndirectCount2InfoKHR<'a> {
32207	const S_TYPE: vk::StructureType = vk::StructureType::DRAW_INDIRECT_COUNT_2_INFO_KHR;
32208
32209	fn s_type(&self) -> vk::StructureType {
32210		self.s_type
32211	}
32212
32213	fn p_next(&self) -> *const std::ffi::c_void {
32214		self.p_next
32215	}
32216
32217	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32218		self.p_next = p_next.cast_const();
32219	}
32220
32221	fn address(&mut self) -> *mut std::ffi::c_void {
32222		std::ptr::from_mut(self).cast()
32223	}
32224}
32225
32226impl<'a> crate::construction::sealed::ChainNode for vk::DispatchIndirect2InfoKHR<'a> {
32227	const S_TYPE: vk::StructureType = vk::StructureType::DISPATCH_INDIRECT_2_INFO_KHR;
32228
32229	fn s_type(&self) -> vk::StructureType {
32230		self.s_type
32231	}
32232
32233	fn p_next(&self) -> *const std::ffi::c_void {
32234		self.p_next
32235	}
32236
32237	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32238		self.p_next = p_next.cast_const();
32239	}
32240
32241	fn address(&mut self) -> *mut std::ffi::c_void {
32242		std::ptr::from_mut(self).cast()
32243	}
32244}
32245
32246impl<'a> crate::construction::sealed::ChainNode for vk::BindTransformFeedbackBuffer2InfoEXT<'a> {
32247	const S_TYPE: vk::StructureType = vk::StructureType::BIND_TRANSFORM_FEEDBACK_BUFFER_2_INFO_EXT;
32248
32249	fn s_type(&self) -> vk::StructureType {
32250		self.s_type
32251	}
32252
32253	fn p_next(&self) -> *const std::ffi::c_void {
32254		self.p_next
32255	}
32256
32257	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32258		self.p_next = p_next.cast_const();
32259	}
32260
32261	fn address(&mut self) -> *mut std::ffi::c_void {
32262		std::ptr::from_mut(self).cast()
32263	}
32264}
32265
32266impl<'a> crate::construction::sealed::ChainNode for vk::MemoryMarkerInfoAMD<'a> {
32267	const S_TYPE: vk::StructureType = vk::StructureType::MEMORY_MARKER_INFO_AMD;
32268
32269	fn s_type(&self) -> vk::StructureType {
32270		self.s_type
32271	}
32272
32273	fn p_next(&self) -> *const std::ffi::c_void {
32274		self.p_next
32275	}
32276
32277	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32278		self.p_next = p_next.cast_const();
32279	}
32280
32281	fn address(&mut self) -> *mut std::ffi::c_void {
32282		std::ptr::from_mut(self).cast()
32283	}
32284}
32285
32286impl<'a> crate::construction::sealed::ChainNode
32287	for vk::PhysicalDeviceShaderConstantDataFeaturesKHR<'a>
32288{
32289	const S_TYPE: vk::StructureType =
32290		vk::StructureType::PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR;
32291
32292	fn s_type(&self) -> vk::StructureType {
32293		self.s_type
32294	}
32295
32296	fn p_next(&self) -> *const std::ffi::c_void {
32297		self.p_next.cast_const()
32298	}
32299
32300	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32301		self.p_next = p_next;
32302	}
32303
32304	fn address(&mut self) -> *mut std::ffi::c_void {
32305		std::ptr::from_mut(self).cast()
32306	}
32307}
32308
32309impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
32310	for vk::PhysicalDeviceShaderConstantDataFeaturesKHR<'a>
32311{
32312}
32313
32314impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
32315	for vk::PhysicalDeviceShaderConstantDataFeaturesKHR<'a>
32316{
32317}
32318
32319impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceShaderAbortFeaturesKHR<'a> {
32320	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR;
32321
32322	fn s_type(&self) -> vk::StructureType {
32323		self.s_type
32324	}
32325
32326	fn p_next(&self) -> *const std::ffi::c_void {
32327		self.p_next.cast_const()
32328	}
32329
32330	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32331		self.p_next = p_next;
32332	}
32333
32334	fn address(&mut self) -> *mut std::ffi::c_void {
32335		std::ptr::from_mut(self).cast()
32336	}
32337}
32338
32339impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
32340	for vk::PhysicalDeviceShaderAbortFeaturesKHR<'a>
32341{
32342}
32343
32344impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
32345	for vk::PhysicalDeviceShaderAbortFeaturesKHR<'a>
32346{
32347}
32348
32349impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceShaderAbortPropertiesKHR<'a> {
32350	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR;
32351
32352	fn s_type(&self) -> vk::StructureType {
32353		self.s_type
32354	}
32355
32356	fn p_next(&self) -> *const std::ffi::c_void {
32357		self.p_next.cast_const()
32358	}
32359
32360	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32361		self.p_next = p_next;
32362	}
32363
32364	fn address(&mut self) -> *mut std::ffi::c_void {
32365		std::ptr::from_mut(self).cast()
32366	}
32367}
32368
32369impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
32370	for vk::PhysicalDeviceShaderAbortPropertiesKHR<'a>
32371{
32372}
32373
32374impl<'a> crate::construction::sealed::ChainNode for vk::DeviceFaultShaderAbortMessageInfoKHR<'a> {
32375	const S_TYPE: vk::StructureType = vk::StructureType::DEVICE_FAULT_SHADER_ABORT_MESSAGE_INFO_KHR;
32376
32377	fn s_type(&self) -> vk::StructureType {
32378		self.s_type
32379	}
32380
32381	fn p_next(&self) -> *const std::ffi::c_void {
32382		self.p_next.cast_const()
32383	}
32384
32385	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32386		self.p_next = p_next;
32387	}
32388
32389	fn address(&mut self) -> *mut std::ffi::c_void {
32390		std::ptr::from_mut(self).cast()
32391	}
32392}
32393
32394impl<'a, 'root> crate::Extends<vk::DeviceFaultDebugInfoKHR<'root>>
32395	for vk::DeviceFaultShaderAbortMessageInfoKHR<'a>
32396{
32397}
32398
32399impl<'a> crate::construction::sealed::ChainNode for vk::QueueFamilyDataGraphTOSAPropertiesARM<'a> {
32400	const S_TYPE: vk::StructureType = vk::StructureType::QUEUE_FAMILY_DATA_GRAPH_TOSA_PROPERTIES_ARM;
32401
32402	fn s_type(&self) -> vk::StructureType {
32403		self.s_type
32404	}
32405
32406	fn p_next(&self) -> *const std::ffi::c_void {
32407		self.p_next.cast_const()
32408	}
32409
32410	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32411		self.p_next = p_next;
32412	}
32413
32414	fn address(&mut self) -> *mut std::ffi::c_void {
32415		std::ptr::from_mut(self).cast()
32416	}
32417}
32418
32419impl<'a> crate::construction::sealed::ChainNode
32420	for vk::DataGraphPipelineSingleNodeConnectionARM<'a>
32421{
32422	const S_TYPE: vk::StructureType =
32423		vk::StructureType::DATA_GRAPH_PIPELINE_SINGLE_NODE_CONNECTION_ARM;
32424
32425	fn s_type(&self) -> vk::StructureType {
32426		self.s_type
32427	}
32428
32429	fn p_next(&self) -> *const std::ffi::c_void {
32430		self.p_next.cast_const()
32431	}
32432
32433	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32434		self.p_next = p_next;
32435	}
32436
32437	fn address(&mut self) -> *mut std::ffi::c_void {
32438		std::ptr::from_mut(self).cast()
32439	}
32440}
32441
32442impl<'a> crate::construction::sealed::ChainNode
32443	for vk::PhysicalDeviceDataGraphOpticalFlowFeaturesARM<'a>
32444{
32445	const S_TYPE: vk::StructureType =
32446		vk::StructureType::PHYSICAL_DEVICE_DATA_GRAPH_OPTICAL_FLOW_FEATURES_ARM;
32447
32448	fn s_type(&self) -> vk::StructureType {
32449		self.s_type
32450	}
32451
32452	fn p_next(&self) -> *const std::ffi::c_void {
32453		self.p_next.cast_const()
32454	}
32455
32456	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32457		self.p_next = p_next;
32458	}
32459
32460	fn address(&mut self) -> *mut std::ffi::c_void {
32461		std::ptr::from_mut(self).cast()
32462	}
32463}
32464
32465impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
32466	for vk::PhysicalDeviceDataGraphOpticalFlowFeaturesARM<'a>
32467{
32468}
32469
32470impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
32471	for vk::PhysicalDeviceDataGraphOpticalFlowFeaturesARM<'a>
32472{
32473}
32474
32475impl<'a> crate::construction::sealed::ChainNode
32476	for vk::QueueFamilyDataGraphOpticalFlowPropertiesARM<'a>
32477{
32478	const S_TYPE: vk::StructureType =
32479		vk::StructureType::QUEUE_FAMILY_DATA_GRAPH_OPTICAL_FLOW_PROPERTIES_ARM;
32480
32481	fn s_type(&self) -> vk::StructureType {
32482		self.s_type
32483	}
32484
32485	fn p_next(&self) -> *const std::ffi::c_void {
32486		self.p_next.cast_const()
32487	}
32488
32489	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32490		self.p_next = p_next;
32491	}
32492
32493	fn address(&mut self) -> *mut std::ffi::c_void {
32494		std::ptr::from_mut(self).cast()
32495	}
32496}
32497
32498impl<'a> crate::construction::sealed::ChainNode for vk::DataGraphOpticalFlowImageFormatInfoARM<'a> {
32499	const S_TYPE: vk::StructureType =
32500		vk::StructureType::DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_INFO_ARM;
32501
32502	fn s_type(&self) -> vk::StructureType {
32503		self.s_type
32504	}
32505
32506	fn p_next(&self) -> *const std::ffi::c_void {
32507		self.p_next
32508	}
32509
32510	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32511		self.p_next = p_next.cast_const();
32512	}
32513
32514	fn address(&mut self) -> *mut std::ffi::c_void {
32515		std::ptr::from_mut(self).cast()
32516	}
32517}
32518
32519impl<'a, 'root> crate::Extends<vk::PhysicalDeviceImageFormatInfo2<'root>>
32520	for vk::DataGraphOpticalFlowImageFormatInfoARM<'a>
32521{
32522}
32523
32524impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>>
32525	for vk::DataGraphOpticalFlowImageFormatInfoARM<'a>
32526{
32527}
32528
32529impl<'a> crate::construction::sealed::ChainNode
32530	for vk::DataGraphOpticalFlowImageFormatPropertiesARM<'a>
32531{
32532	const S_TYPE: vk::StructureType =
32533		vk::StructureType::DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_ARM;
32534
32535	fn s_type(&self) -> vk::StructureType {
32536		self.s_type
32537	}
32538
32539	fn p_next(&self) -> *const std::ffi::c_void {
32540		self.p_next.cast_const()
32541	}
32542
32543	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32544		self.p_next = p_next;
32545	}
32546
32547	fn address(&mut self) -> *mut std::ffi::c_void {
32548		std::ptr::from_mut(self).cast()
32549	}
32550}
32551
32552impl<'a> crate::construction::sealed::ChainNode
32553	for vk::DataGraphPipelineSingleNodeCreateInfoARM<'a>
32554{
32555	const S_TYPE: vk::StructureType =
32556		vk::StructureType::DATA_GRAPH_PIPELINE_SINGLE_NODE_CREATE_INFO_ARM;
32557
32558	fn s_type(&self) -> vk::StructureType {
32559		self.s_type
32560	}
32561
32562	fn p_next(&self) -> *const std::ffi::c_void {
32563		self.p_next.cast_const()
32564	}
32565
32566	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32567		self.p_next = p_next;
32568	}
32569
32570	fn address(&mut self) -> *mut std::ffi::c_void {
32571		std::ptr::from_mut(self).cast()
32572	}
32573}
32574
32575impl<'a, 'root> crate::Extends<vk::DataGraphPipelineCreateInfoARM<'root>>
32576	for vk::DataGraphPipelineSingleNodeCreateInfoARM<'a>
32577{
32578}
32579
32580impl<'a> crate::construction::sealed::ChainNode
32581	for vk::DataGraphPipelineOpticalFlowCreateInfoARM<'a>
32582{
32583	const S_TYPE: vk::StructureType =
32584		vk::StructureType::DATA_GRAPH_PIPELINE_OPTICAL_FLOW_CREATE_INFO_ARM;
32585
32586	fn s_type(&self) -> vk::StructureType {
32587		self.s_type
32588	}
32589
32590	fn p_next(&self) -> *const std::ffi::c_void {
32591		self.p_next.cast_const()
32592	}
32593
32594	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32595		self.p_next = p_next;
32596	}
32597
32598	fn address(&mut self) -> *mut std::ffi::c_void {
32599		std::ptr::from_mut(self).cast()
32600	}
32601}
32602
32603impl<'a, 'root> crate::Extends<vk::DataGraphPipelineCreateInfoARM<'root>>
32604	for vk::DataGraphPipelineOpticalFlowCreateInfoARM<'a>
32605{
32606}
32607
32608impl<'a> crate::construction::sealed::ChainNode
32609	for vk::DataGraphPipelineOpticalFlowDispatchInfoARM<'a>
32610{
32611	const S_TYPE: vk::StructureType =
32612		vk::StructureType::DATA_GRAPH_PIPELINE_OPTICAL_FLOW_DISPATCH_INFO_ARM;
32613
32614	fn s_type(&self) -> vk::StructureType {
32615		self.s_type
32616	}
32617
32618	fn p_next(&self) -> *const std::ffi::c_void {
32619		self.p_next.cast_const()
32620	}
32621
32622	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32623		self.p_next = p_next;
32624	}
32625
32626	fn address(&mut self) -> *mut std::ffi::c_void {
32627		std::ptr::from_mut(self).cast()
32628	}
32629}
32630
32631impl<'a, 'root> crate::Extends<vk::DataGraphPipelineDispatchInfoARM<'root>>
32632	for vk::DataGraphPipelineOpticalFlowDispatchInfoARM<'a>
32633{
32634}
32635
32636impl<'a> crate::construction::sealed::ChainNode
32637	for vk::PhysicalDeviceImageTilingControlFeaturesEXT<'a>
32638{
32639	const S_TYPE: vk::StructureType =
32640		vk::StructureType::PHYSICAL_DEVICE_IMAGE_TILING_CONTROL_FEATURES_EXT;
32641
32642	fn s_type(&self) -> vk::StructureType {
32643		self.s_type
32644	}
32645
32646	fn p_next(&self) -> *const std::ffi::c_void {
32647		self.p_next.cast_const()
32648	}
32649
32650	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32651		self.p_next = p_next;
32652	}
32653
32654	fn address(&mut self) -> *mut std::ffi::c_void {
32655		std::ptr::from_mut(self).cast()
32656	}
32657}
32658
32659impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
32660	for vk::PhysicalDeviceImageTilingControlFeaturesEXT<'a>
32661{
32662}
32663
32664impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
32665	for vk::PhysicalDeviceImageTilingControlFeaturesEXT<'a>
32666{
32667}
32668
32669impl<'a> crate::construction::sealed::ChainNode for vk::ImageTilingControlCreateInfoEXT<'a> {
32670	const S_TYPE: vk::StructureType = vk::StructureType::IMAGE_TILING_CONTROL_CREATE_INFO_EXT;
32671
32672	fn s_type(&self) -> vk::StructureType {
32673		self.s_type
32674	}
32675
32676	fn p_next(&self) -> *const std::ffi::c_void {
32677		self.p_next
32678	}
32679
32680	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32681		self.p_next = p_next.cast_const();
32682	}
32683
32684	fn address(&mut self) -> *mut std::ffi::c_void {
32685		std::ptr::from_mut(self).cast()
32686	}
32687}
32688
32689impl<'a, 'root> crate::Extends<vk::ImageCreateInfo<'root>>
32690	for vk::ImageTilingControlCreateInfoEXT<'a>
32691{
32692}
32693
32694impl<'a> crate::construction::sealed::ChainNode
32695	for vk::PhysicalDeviceShaderOCPMicroscalingTypesFeaturesEXT<'a>
32696{
32697	const S_TYPE: vk::StructureType =
32698		vk::StructureType::PHYSICAL_DEVICE_SHADER_OCP_MICROSCALING_TYPES_FEATURES_EXT;
32699
32700	fn s_type(&self) -> vk::StructureType {
32701		self.s_type
32702	}
32703
32704	fn p_next(&self) -> *const std::ffi::c_void {
32705		self.p_next.cast_const()
32706	}
32707
32708	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32709		self.p_next = p_next;
32710	}
32711
32712	fn address(&mut self) -> *mut std::ffi::c_void {
32713		std::ptr::from_mut(self).cast()
32714	}
32715}
32716
32717impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
32718	for vk::PhysicalDeviceShaderOCPMicroscalingTypesFeaturesEXT<'a>
32719{
32720}
32721
32722impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
32723	for vk::PhysicalDeviceShaderOCPMicroscalingTypesFeaturesEXT<'a>
32724{
32725}
32726
32727impl<'a> crate::construction::sealed::ChainNode
32728	for vk::PhysicalDeviceCooperativeMatrixMaintenance1FeaturesEXT<'a>
32729{
32730	const S_TYPE: vk::StructureType =
32731		vk::StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_MAINTENANCE_1_FEATURES_EXT;
32732
32733	fn s_type(&self) -> vk::StructureType {
32734		self.s_type
32735	}
32736
32737	fn p_next(&self) -> *const std::ffi::c_void {
32738		self.p_next.cast_const()
32739	}
32740
32741	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32742		self.p_next = p_next;
32743	}
32744
32745	fn address(&mut self) -> *mut std::ffi::c_void {
32746		std::ptr::from_mut(self).cast()
32747	}
32748}
32749
32750impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
32751	for vk::PhysicalDeviceCooperativeMatrixMaintenance1FeaturesEXT<'a>
32752{
32753}
32754
32755impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
32756	for vk::PhysicalDeviceCooperativeMatrixMaintenance1FeaturesEXT<'a>
32757{
32758}
32759
32760impl<'a> crate::construction::sealed::ChainNode
32761	for vk::PhysicalDeviceBufferDeviceAddressAllocationAlignmentFeaturesVALVE<'a>
32762{
32763	const S_TYPE: vk::StructureType =
32764		vk::StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_ALLOCATION_ALIGNMENT_FEATURES_VALVE;
32765
32766	fn s_type(&self) -> vk::StructureType {
32767		self.s_type
32768	}
32769
32770	fn p_next(&self) -> *const std::ffi::c_void {
32771		self.p_next.cast_const()
32772	}
32773
32774	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32775		self.p_next = p_next;
32776	}
32777
32778	fn address(&mut self) -> *mut std::ffi::c_void {
32779		std::ptr::from_mut(self).cast()
32780	}
32781}
32782
32783impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
32784	for vk::PhysicalDeviceBufferDeviceAddressAllocationAlignmentFeaturesVALVE<'a>
32785{
32786}
32787
32788impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
32789	for vk::PhysicalDeviceBufferDeviceAddressAllocationAlignmentFeaturesVALVE<'a>
32790{
32791}
32792
32793impl<'a> crate::construction::sealed::ChainNode
32794	for vk::PhysicalDeviceBufferDeviceAddressAllocationAlignmentPropertiesVALVE<'a>
32795{
32796	const S_TYPE: vk::StructureType =
32797		vk::StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_ALLOCATION_ALIGNMENT_PROPERTIES_VALVE;
32798
32799	fn s_type(&self) -> vk::StructureType {
32800		self.s_type
32801	}
32802
32803	fn p_next(&self) -> *const std::ffi::c_void {
32804		self.p_next.cast_const()
32805	}
32806
32807	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32808		self.p_next = p_next;
32809	}
32810
32811	fn address(&mut self) -> *mut std::ffi::c_void {
32812		std::ptr::from_mut(self).cast()
32813	}
32814}
32815
32816impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
32817	for vk::PhysicalDeviceBufferDeviceAddressAllocationAlignmentPropertiesVALVE<'a>
32818{
32819}
32820
32821impl<'a> crate::construction::sealed::ChainNode
32822	for vk::BufferDeviceAddressAlignmentAllocateInfoVALVE<'a>
32823{
32824	const S_TYPE: vk::StructureType =
32825		vk::StructureType::BUFFER_DEVICE_ADDRESS_ALIGNMENT_ALLOCATE_INFO_VALVE;
32826
32827	fn s_type(&self) -> vk::StructureType {
32828		self.s_type
32829	}
32830
32831	fn p_next(&self) -> *const std::ffi::c_void {
32832		self.p_next.cast_const()
32833	}
32834
32835	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32836		self.p_next = p_next;
32837	}
32838
32839	fn address(&mut self) -> *mut std::ffi::c_void {
32840		std::ptr::from_mut(self).cast()
32841	}
32842}
32843
32844impl<'a, 'root> crate::Extends<vk::BufferCreateInfo<'root>>
32845	for vk::BufferDeviceAddressAlignmentAllocateInfoVALVE<'a>
32846{
32847}
32848
32849impl<'a, 'root> crate::Extends<vk::MemoryAllocateInfo<'root>>
32850	for vk::BufferDeviceAddressAlignmentAllocateInfoVALVE<'a>
32851{
32852}
32853
32854impl<'a> crate::construction::sealed::ChainNode for vk::PhysicalDeviceInfoPropertiesINTEL<'a> {
32855	const S_TYPE: vk::StructureType = vk::StructureType::PHYSICAL_DEVICE_INFO_PROPERTIES_INTEL;
32856
32857	fn s_type(&self) -> vk::StructureType {
32858		self.s_type
32859	}
32860
32861	fn p_next(&self) -> *const std::ffi::c_void {
32862		self.p_next.cast_const()
32863	}
32864
32865	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32866		self.p_next = p_next;
32867	}
32868
32869	fn address(&mut self) -> *mut std::ffi::c_void {
32870		std::ptr::from_mut(self).cast()
32871	}
32872}
32873
32874impl<'a, 'root> crate::Extends<vk::PhysicalDeviceProperties2<'root>>
32875	for vk::PhysicalDeviceInfoPropertiesINTEL<'a>
32876{
32877}
32878
32879impl<'a> crate::construction::sealed::ChainNode
32880	for vk::PhysicalDeviceCooperativeMatrixLayoutsFeaturesARM<'a>
32881{
32882	const S_TYPE: vk::StructureType =
32883		vk::StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_LAYOUTS_FEATURES_ARM;
32884
32885	fn s_type(&self) -> vk::StructureType {
32886		self.s_type
32887	}
32888
32889	fn p_next(&self) -> *const std::ffi::c_void {
32890		self.p_next.cast_const()
32891	}
32892
32893	fn set_p_next(&mut self, p_next: *mut std::ffi::c_void) {
32894		self.p_next = p_next;
32895	}
32896
32897	fn address(&mut self) -> *mut std::ffi::c_void {
32898		std::ptr::from_mut(self).cast()
32899	}
32900}
32901
32902impl<'a, 'root> crate::Extends<vk::PhysicalDeviceFeatures2<'root>>
32903	for vk::PhysicalDeviceCooperativeMatrixLayoutsFeaturesARM<'a>
32904{
32905}
32906
32907impl<'a, 'root> crate::Extends<vk::DeviceCreateInfo<'root>>
32908	for vk::PhysicalDeviceCooperativeMatrixLayoutsFeaturesARM<'a>
32909{
32910}