diff --git a/Changelog.md b/Changelog.md index c299cbe1..f8da4ff5 100644 --- a/Changelog.md +++ b/Changelog.md @@ -26,6 +26,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `get_pipeline_executable_statistics()`. The expected length of this array can be queried with the respective `*_len()` variant of these functions. - `push_next()` has been renamed to `extend()` and marked as `unsafe`. Users are encouraged to call `push()` for singular structs instead. (#909) +- All `Extends{Root}` traits have been replaced with a single `Extends<Root>` trait using generics. (#971) ### Removed diff --git a/ash/Cargo.toml b/ash/Cargo.toml index f0400b0a..9dc5e620 100644 --- a/ash/Cargo.toml +++ b/ash/Cargo.toml @@ -24,6 +24,9 @@ rust-version = "1.69.0" [dependencies] libloading = { version = "0.8", optional = true } +[dev-dependencies] +trybuild = "1.0" + [features] default = ["loaded", "debug", "std"] # Link the Vulkan loader at compile time. diff --git a/ash/src/extensions/khr/acceleration_structure.rs b/ash/src/extensions/khr/acceleration_structure.rs index f257c0d7..bc8cb839 100644 --- a/ash/src/extensions/khr/acceleration_structure.rs +++ b/ash/src/extensions/khr/acceleration_structure.rs @@ -263,7 +263,10 @@ impl crate::khr::acceleration_structure::Device { max_primitive_counts: &[u32], size_info: &mut vk::AccelerationStructureBuildSizesInfoKHR<'_>, ) { - assert_eq!(max_primitive_counts.len(), build_info.geometry_count as _); + assert_eq!( + max_primitive_counts.len(), + build_info.geometry_count as usize + ); (self.fp.get_acceleration_structure_build_sizes_khr)( self.handle, diff --git a/ash/src/lib.rs b/ash/src/lib.rs index bbdc88e9..94513e36 100644 --- a/ash/src/lib.rs +++ b/ash/src/lib.rs @@ -255,3 +255,9 @@ where } } } + +#[test] +fn trybuild() { + let t = trybuild::TestCases::new(); + t.compile_fail("tests/fail/long_lived_root_struct_borrow.rs"); +} diff --git a/ash/src/vk.rs b/ash/src/vk.rs index 5a424171..bb575e0a 100644 --- a/ash/src/vk.rs +++ b/ash/src/vk.rs @@ -56,6 +56,15 @@ pub unsafe trait TaggedStructure { const STRUCTURE_TYPE: StructureType; } +/// Implemented for every structure that extends base structure `B`. Concretely that means struct +/// `B` is listed in its array of [`structextends` in the Vulkan registry][1]. +/// +/// Similar to [`TaggedStructure`] , all `unsafe` implementers of this trait must guarantee that +/// their structure is layout-compatible [`vk::BaseInStructure`] and [`vk::BaseOutStructure`]. +/// +/// [1]: https://registry.khronos.org/vulkan/specs/latest/styleguide.html#extensions-interactions +pub unsafe trait Extends<B> {} + /// Iterates through the pointer chain. Includes the item that is passed into the function. /// Stops at the last [`BaseOutStructure`] that has a null [`BaseOutStructure::p_next`] field. pub(crate) unsafe fn ptr_chain_iter<T: ?Sized>( @@ -222,6 +231,62 @@ mod tests { assert_eq!(chain, chain2); } + #[test] + #[should_panic] + fn disallow_nested_ptr_chains() { + let mut generated_commands = + vk::PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT::default(); + let mut private_data = vk::PhysicalDevicePrivateDataFeatures { + p_next: <*mut _>::cast(&mut generated_commands), + ..Default::default() + }; + let _device_create_info = vk::DeviceCreateInfo::default().push(&mut private_data); + } + + #[test] + fn test_nested_ptr_chains() { + let mut generated_commands = + vk::PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT::default(); + let mut private_data = vk::PhysicalDevicePrivateDataFeatures { + p_next: <*mut _>::cast(&mut generated_commands), + ..Default::default() + }; + let mut variable_pointers = vk::PhysicalDeviceVariablePointerFeatures::default(); + let mut corner = vk::PhysicalDeviceCornerSampledImageFeaturesNV::default(); + let chain = alloc::vec![ + <*mut _>::cast(&mut private_data), + <*mut _>::cast(&mut generated_commands), + <*mut _>::cast(&mut variable_pointers), + <*mut _>::cast(&mut corner), + ]; + let mut device_create_info = vk::DeviceCreateInfo::default() + .push(&mut corner) + .push(&mut variable_pointers); + // Insert private_data->generated_commands into the chain, such that generate_commands->variable_pointers->corner: + device_create_info = unsafe { device_create_info.extend(&mut private_data) }; + let chain2: Vec<*mut vk::BaseOutStructure<'_>> = unsafe { + vk::ptr_chain_iter(&mut device_create_info) + .skip(1) + .collect() + }; + assert_eq!(chain, chain2); + } + + #[test] + fn test_dynamic_add_to_ptr_chain() { + let mut variable_pointers = vk::PhysicalDeviceVariablePointerFeatures::default(); + let variable_pointers: &mut dyn vk::Extends<vk::DeviceCreateInfo<'_>> = + &mut variable_pointers; + let chain = alloc::vec![<*mut _>::cast(variable_pointers)]; + let mut device_create_info = vk::DeviceCreateInfo::default().push(variable_pointers); + let chain2: Vec<*mut vk::BaseOutStructure<'_>> = unsafe { + vk::ptr_chain_iter(&mut device_create_info) + .skip(1) + .collect() + }; + assert_eq!(chain, chain2); + } + #[test] fn test_debug_flags() { assert_eq!( diff --git a/ash/src/vk/definitions.rs b/ash/src/vk/definitions.rs index b0f3dbcd..e07ecef6 100644 --- a/ash/src/vk/definitions.rs +++ b/ash/src/vk/definitions.rs @@ -7,7 +7,7 @@ use super::native::*; use super::platform_types::*; use super::{ ptr_chain_iter, wrap_c_str_slice_until_nul, write_c_str_slice_with_nul, - CStrTooLargeForStaticArray, Handle, Packed24_8, TaggedStructure, + CStrTooLargeForStaticArray, Extends, Handle, Packed24_8, TaggedStructure, }; use core::ffi::*; use core::fmt; @@ -1262,7 +1262,6 @@ impl ::core::default::Default for DeviceQueueCreateInfo<'_> { unsafe impl<'a> TaggedStructure for DeviceQueueCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEVICE_QUEUE_CREATE_INFO; } -pub unsafe trait ExtendsDeviceQueueCreateInfo {} impl<'a> DeviceQueueCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: DeviceQueueCreateFlags) -> Self { @@ -1289,7 +1288,7 @@ impl<'a> DeviceQueueCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsDeviceQueueCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -1313,10 +1312,7 @@ impl<'a> DeviceQueueCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsDeviceQueueCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -1324,10 +1320,7 @@ impl<'a> DeviceQueueCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsDeviceQueueCreateInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -1375,7 +1368,6 @@ impl ::core::default::Default for DeviceCreateInfo<'_> { unsafe impl<'a> TaggedStructure for DeviceCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEVICE_CREATE_INFO; } -pub unsafe trait ExtendsDeviceCreateInfo {} impl<'a> DeviceCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: DeviceCreateFlags) -> Self { @@ -1419,7 +1411,7 @@ impl<'a> DeviceCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsDeviceCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -1443,7 +1435,7 @@ impl<'a> DeviceCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsDeviceCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -1451,7 +1443,7 @@ impl<'a> DeviceCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsDeviceCreateInfo + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -1492,7 +1484,6 @@ impl ::core::default::Default for InstanceCreateInfo<'_> { unsafe impl<'a> TaggedStructure for InstanceCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::INSTANCE_CREATE_INFO; } -pub unsafe trait ExtendsInstanceCreateInfo {} impl<'a> InstanceCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: InstanceCreateFlags) -> Self { @@ -1525,7 +1516,7 @@ impl<'a> InstanceCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsInstanceCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -1549,7 +1540,7 @@ impl<'a> InstanceCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsInstanceCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -1557,7 +1548,7 @@ impl<'a> InstanceCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsInstanceCreateInfo + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -1680,7 +1671,6 @@ impl ::core::default::Default for MemoryAllocateInfo<'_> { unsafe impl<'a> TaggedStructure for MemoryAllocateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::MEMORY_ALLOCATE_INFO; } -pub unsafe trait ExtendsMemoryAllocateInfo {} impl<'a> MemoryAllocateInfo<'a> { #[inline] pub fn allocation_size(mut self, allocation_size: DeviceSize) -> Self { @@ -1701,7 +1691,7 @@ impl<'a> MemoryAllocateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsMemoryAllocateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -1725,7 +1715,7 @@ impl<'a> MemoryAllocateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsMemoryAllocateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -1733,7 +1723,7 @@ impl<'a> MemoryAllocateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsMemoryAllocateInfo + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -2081,7 +2071,6 @@ impl ::core::default::Default for WriteDescriptorSet<'_> { unsafe impl<'a> TaggedStructure for WriteDescriptorSet<'a> { const STRUCTURE_TYPE: StructureType = StructureType::WRITE_DESCRIPTOR_SET; } -pub unsafe trait ExtendsWriteDescriptorSet {} impl<'a> WriteDescriptorSet<'a> { #[inline] pub fn dst_set(mut self, dst_set: DescriptorSet) -> Self { @@ -2135,7 +2124,7 @@ impl<'a> WriteDescriptorSet<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsWriteDescriptorSet + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -2159,7 +2148,7 @@ impl<'a> WriteDescriptorSet<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsWriteDescriptorSet + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -2167,7 +2156,7 @@ impl<'a> WriteDescriptorSet<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsWriteDescriptorSet + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -2274,10 +2263,22 @@ impl ::core::default::Default for BufferUsageFlags2CreateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for BufferUsageFlags2CreateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR; } -unsafe impl ExtendsBufferViewCreateInfo for BufferUsageFlags2CreateInfoKHR<'_> {} -unsafe impl ExtendsBufferCreateInfo for BufferUsageFlags2CreateInfoKHR<'_> {} -unsafe impl ExtendsPhysicalDeviceExternalBufferInfo for BufferUsageFlags2CreateInfoKHR<'_> {} -unsafe impl ExtendsDescriptorBufferBindingInfoEXT for BufferUsageFlags2CreateInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<BufferViewCreateInfo<'root>> + for BufferUsageFlags2CreateInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<BufferCreateInfo<'root>> + for BufferUsageFlags2CreateInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<PhysicalDeviceExternalBufferInfo<'root>> + for BufferUsageFlags2CreateInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DescriptorBufferBindingInfoEXT<'root>> + for BufferUsageFlags2CreateInfoKHR<'child> +{ +} impl<'a> BufferUsageFlags2CreateInfoKHR<'a> { #[inline] pub fn usage(mut self, usage: BufferUsageFlags2KHR) -> Self { @@ -2322,7 +2323,6 @@ impl ::core::default::Default for BufferCreateInfo<'_> { unsafe impl<'a> TaggedStructure for BufferCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BUFFER_CREATE_INFO; } -pub unsafe trait ExtendsBufferCreateInfo {} impl<'a> BufferCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: BufferCreateFlags) -> Self { @@ -2359,7 +2359,7 @@ impl<'a> BufferCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsBufferCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -2383,7 +2383,7 @@ impl<'a> BufferCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsBufferCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -2391,7 +2391,7 @@ impl<'a> BufferCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsBufferCreateInfo + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -2430,7 +2430,6 @@ impl ::core::default::Default for BufferViewCreateInfo<'_> { unsafe impl<'a> TaggedStructure for BufferViewCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BUFFER_VIEW_CREATE_INFO; } -pub unsafe trait ExtendsBufferViewCreateInfo {} impl<'a> BufferViewCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: BufferViewCreateFlags) -> Self { @@ -2466,7 +2465,7 @@ impl<'a> BufferViewCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsBufferViewCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -2490,10 +2489,7 @@ impl<'a> BufferViewCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsBufferViewCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -2501,10 +2497,7 @@ impl<'a> BufferViewCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsBufferViewCreateInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -2687,7 +2680,6 @@ impl ::core::default::Default for BufferMemoryBarrier<'_> { unsafe impl<'a> TaggedStructure for BufferMemoryBarrier<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BUFFER_MEMORY_BARRIER; } -pub unsafe trait ExtendsBufferMemoryBarrier {} impl<'a> BufferMemoryBarrier<'a> { #[inline] pub fn src_access_mask(mut self, src_access_mask: AccessFlags) -> Self { @@ -2733,7 +2725,7 @@ impl<'a> BufferMemoryBarrier<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsBufferMemoryBarrier + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -2757,10 +2749,7 @@ impl<'a> BufferMemoryBarrier<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsBufferMemoryBarrier + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -2768,7 +2757,7 @@ impl<'a> BufferMemoryBarrier<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsBufferMemoryBarrier + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -2813,7 +2802,6 @@ impl ::core::default::Default for ImageMemoryBarrier<'_> { unsafe impl<'a> TaggedStructure for ImageMemoryBarrier<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_MEMORY_BARRIER; } -pub unsafe trait ExtendsImageMemoryBarrier {} impl<'a> ImageMemoryBarrier<'a> { #[inline] pub fn src_access_mask(mut self, src_access_mask: AccessFlags) -> Self { @@ -2864,7 +2852,7 @@ impl<'a> ImageMemoryBarrier<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsImageMemoryBarrier + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -2888,7 +2876,7 @@ impl<'a> ImageMemoryBarrier<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsImageMemoryBarrier + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -2896,7 +2884,7 @@ impl<'a> ImageMemoryBarrier<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsImageMemoryBarrier + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -2951,7 +2939,6 @@ impl ::core::default::Default for ImageCreateInfo<'_> { unsafe impl<'a> TaggedStructure for ImageCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_CREATE_INFO; } -pub unsafe trait ExtendsImageCreateInfo {} impl<'a> ImageCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: ImageCreateFlags) -> Self { @@ -3023,7 +3010,7 @@ impl<'a> ImageCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsImageCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -3047,7 +3034,7 @@ impl<'a> ImageCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsImageCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -3055,7 +3042,7 @@ impl<'a> ImageCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsImageCreateInfo + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -3135,7 +3122,6 @@ impl ::core::default::Default for ImageViewCreateInfo<'_> { unsafe impl<'a> TaggedStructure for ImageViewCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_VIEW_CREATE_INFO; } -pub unsafe trait ExtendsImageViewCreateInfo {} impl<'a> ImageViewCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: ImageViewCreateFlags) -> Self { @@ -3176,7 +3162,7 @@ impl<'a> ImageViewCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsImageViewCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -3200,10 +3186,7 @@ impl<'a> ImageViewCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsImageViewCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -3211,7 +3194,7 @@ impl<'a> ImageViewCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsImageViewCreateInfo + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -3482,7 +3465,6 @@ impl ::core::default::Default for BindSparseInfo<'_> { unsafe impl<'a> TaggedStructure for BindSparseInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BIND_SPARSE_INFO; } -pub unsafe trait ExtendsBindSparseInfo {} impl<'a> BindSparseInfo<'a> { #[inline] pub fn wait_semaphores(mut self, wait_semaphores: &'a [Semaphore]) -> Self { @@ -3526,7 +3508,7 @@ impl<'a> BindSparseInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsBindSparseInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -3550,7 +3532,7 @@ impl<'a> BindSparseInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsBindSparseInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -3558,7 +3540,7 @@ impl<'a> BindSparseInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsBindSparseInfo + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -3832,8 +3814,10 @@ impl ::core::default::Default for ShaderModuleCreateInfo<'_> { unsafe impl<'a> TaggedStructure for ShaderModuleCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SHADER_MODULE_CREATE_INFO; } -unsafe impl ExtendsPipelineShaderStageCreateInfo for ShaderModuleCreateInfo<'_> {} -pub unsafe trait ExtendsShaderModuleCreateInfo {} +unsafe impl<'root, 'child> Extends<PipelineShaderStageCreateInfo<'root>> + for ShaderModuleCreateInfo<'child> +{ +} impl<'a> ShaderModuleCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: ShaderModuleCreateFlags) -> Self { @@ -3855,7 +3839,7 @@ impl<'a> ShaderModuleCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsShaderModuleCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -3879,10 +3863,7 @@ impl<'a> ShaderModuleCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsShaderModuleCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -3890,10 +3871,7 @@ impl<'a> ShaderModuleCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsShaderModuleCreateInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -3984,7 +3962,6 @@ impl ::core::default::Default for DescriptorSetLayoutCreateInfo<'_> { unsafe impl<'a> TaggedStructure for DescriptorSetLayoutCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DESCRIPTOR_SET_LAYOUT_CREATE_INFO; } -pub unsafe trait ExtendsDescriptorSetLayoutCreateInfo {} impl<'a> DescriptorSetLayoutCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: DescriptorSetLayoutCreateFlags) -> Self { @@ -4006,10 +3983,7 @@ impl<'a> DescriptorSetLayoutCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsDescriptorSetLayoutCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -4033,10 +4007,7 @@ impl<'a> DescriptorSetLayoutCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsDescriptorSetLayoutCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -4044,10 +4015,7 @@ impl<'a> DescriptorSetLayoutCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsDescriptorSetLayoutCreateInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -4105,7 +4073,6 @@ impl ::core::default::Default for DescriptorPoolCreateInfo<'_> { unsafe impl<'a> TaggedStructure for DescriptorPoolCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DESCRIPTOR_POOL_CREATE_INFO; } -pub unsafe trait ExtendsDescriptorPoolCreateInfo {} impl<'a> DescriptorPoolCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: DescriptorPoolCreateFlags) -> Self { @@ -4132,7 +4099,7 @@ impl<'a> DescriptorPoolCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsDescriptorPoolCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -4156,10 +4123,7 @@ impl<'a> DescriptorPoolCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsDescriptorPoolCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -4167,10 +4131,7 @@ impl<'a> DescriptorPoolCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsDescriptorPoolCreateInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -4205,7 +4166,6 @@ impl ::core::default::Default for DescriptorSetAllocateInfo<'_> { unsafe impl<'a> TaggedStructure for DescriptorSetAllocateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DESCRIPTOR_SET_ALLOCATE_INFO; } -pub unsafe trait ExtendsDescriptorSetAllocateInfo {} impl<'a> DescriptorSetAllocateInfo<'a> { #[inline] pub fn descriptor_pool(mut self, descriptor_pool: DescriptorPool) -> Self { @@ -4227,7 +4187,7 @@ impl<'a> DescriptorSetAllocateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsDescriptorSetAllocateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -4251,10 +4211,7 @@ impl<'a> DescriptorSetAllocateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsDescriptorSetAllocateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -4262,10 +4219,7 @@ impl<'a> DescriptorSetAllocateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsDescriptorSetAllocateInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -4371,7 +4325,6 @@ impl ::core::default::Default for PipelineShaderStageCreateInfo<'_> { unsafe impl<'a> TaggedStructure for PipelineShaderStageCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_SHADER_STAGE_CREATE_INFO; } -pub unsafe trait ExtendsPipelineShaderStageCreateInfo {} impl<'a> PipelineShaderStageCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: PipelineShaderStageCreateFlags) -> Self { @@ -4415,10 +4368,7 @@ impl<'a> PipelineShaderStageCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsPipelineShaderStageCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -4442,10 +4392,7 @@ impl<'a> PipelineShaderStageCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsPipelineShaderStageCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -4453,10 +4400,7 @@ impl<'a> PipelineShaderStageCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsPipelineShaderStageCreateInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -4495,7 +4439,6 @@ impl ::core::default::Default for ComputePipelineCreateInfo<'_> { unsafe impl<'a> TaggedStructure for ComputePipelineCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::COMPUTE_PIPELINE_CREATE_INFO; } -pub unsafe trait ExtendsComputePipelineCreateInfo {} impl<'a> ComputePipelineCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: PipelineCreateFlags) -> Self { @@ -4531,7 +4474,7 @@ impl<'a> ComputePipelineCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsComputePipelineCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -4555,10 +4498,7 @@ impl<'a> ComputePipelineCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsComputePipelineCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -4566,10 +4506,7 @@ impl<'a> ComputePipelineCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsComputePipelineCreateInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -4604,7 +4541,10 @@ impl ::core::default::Default for ComputePipelineIndirectBufferInfoNV<'_> { unsafe impl<'a> TaggedStructure for ComputePipelineIndirectBufferInfoNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV; } -unsafe impl ExtendsComputePipelineCreateInfo for ComputePipelineIndirectBufferInfoNV<'_> {} +unsafe impl<'root, 'child> Extends<ComputePipelineCreateInfo<'root>> + for ComputePipelineIndirectBufferInfoNV<'child> +{ +} impl<'a> ComputePipelineIndirectBufferInfoNV<'a> { #[inline] pub fn device_address(mut self, device_address: DeviceAddress) -> Self { @@ -4652,10 +4592,22 @@ impl ::core::default::Default for PipelineCreateFlags2CreateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for PipelineCreateFlags2CreateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR; } -unsafe impl ExtendsComputePipelineCreateInfo for PipelineCreateFlags2CreateInfoKHR<'_> {} -unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineCreateFlags2CreateInfoKHR<'_> {} -unsafe impl ExtendsRayTracingPipelineCreateInfoNV for PipelineCreateFlags2CreateInfoKHR<'_> {} -unsafe impl ExtendsRayTracingPipelineCreateInfoKHR for PipelineCreateFlags2CreateInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<ComputePipelineCreateInfo<'root>> + for PipelineCreateFlags2CreateInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<GraphicsPipelineCreateInfo<'root>> + for PipelineCreateFlags2CreateInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<RayTracingPipelineCreateInfoNV<'root>> + for PipelineCreateFlags2CreateInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<RayTracingPipelineCreateInfoKHR<'root>> + for PipelineCreateFlags2CreateInfoKHR<'child> +{ +} impl<'a> PipelineCreateFlags2CreateInfoKHR<'a> { #[inline] pub fn flags(mut self, flags: PipelineCreateFlags2KHR) -> Self { @@ -4758,7 +4710,6 @@ impl ::core::default::Default for PipelineVertexInputStateCreateInfo<'_> { unsafe impl<'a> TaggedStructure for PipelineVertexInputStateCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO; } -pub unsafe trait ExtendsPipelineVertexInputStateCreateInfo {} impl<'a> PipelineVertexInputStateCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: PipelineVertexInputStateCreateFlags) -> Self { @@ -4792,10 +4743,7 @@ impl<'a> PipelineVertexInputStateCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsPipelineVertexInputStateCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -4819,10 +4767,7 @@ impl<'a> PipelineVertexInputStateCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsPipelineVertexInputStateCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -4830,10 +4775,7 @@ impl<'a> PipelineVertexInputStateCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsPipelineVertexInputStateCreateInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -4914,7 +4856,6 @@ impl ::core::default::Default for PipelineTessellationStateCreateInfo<'_> { unsafe impl<'a> TaggedStructure for PipelineTessellationStateCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_TESSELLATION_STATE_CREATE_INFO; } -pub unsafe trait ExtendsPipelineTessellationStateCreateInfo {} impl<'a> PipelineTessellationStateCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: PipelineTessellationStateCreateFlags) -> Self { @@ -4935,10 +4876,7 @@ impl<'a> PipelineTessellationStateCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsPipelineTessellationStateCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -4962,10 +4900,7 @@ impl<'a> PipelineTessellationStateCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsPipelineTessellationStateCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -4973,10 +4908,7 @@ impl<'a> PipelineTessellationStateCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsPipelineTessellationStateCreateInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -5015,7 +4947,6 @@ impl ::core::default::Default for PipelineViewportStateCreateInfo<'_> { unsafe impl<'a> TaggedStructure for PipelineViewportStateCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_VIEWPORT_STATE_CREATE_INFO; } -pub unsafe trait ExtendsPipelineViewportStateCreateInfo {} impl<'a> PipelineViewportStateCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: PipelineViewportStateCreateFlags) -> Self { @@ -5053,10 +4984,7 @@ impl<'a> PipelineViewportStateCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsPipelineViewportStateCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -5080,10 +5008,7 @@ impl<'a> PipelineViewportStateCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsPipelineViewportStateCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -5091,10 +5016,7 @@ impl<'a> PipelineViewportStateCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsPipelineViewportStateCreateInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -5145,7 +5067,6 @@ impl ::core::default::Default for PipelineRasterizationStateCreateInfo<'_> { unsafe impl<'a> TaggedStructure for PipelineRasterizationStateCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_RASTERIZATION_STATE_CREATE_INFO; } -pub unsafe trait ExtendsPipelineRasterizationStateCreateInfo {} impl<'a> PipelineRasterizationStateCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: PipelineRasterizationStateCreateFlags) -> Self { @@ -5211,10 +5132,7 @@ impl<'a> PipelineRasterizationStateCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsPipelineRasterizationStateCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -5238,10 +5156,7 @@ impl<'a> PipelineRasterizationStateCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsPipelineRasterizationStateCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -5249,10 +5164,7 @@ impl<'a> PipelineRasterizationStateCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsPipelineRasterizationStateCreateInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -5295,7 +5207,6 @@ impl ::core::default::Default for PipelineMultisampleStateCreateInfo<'_> { unsafe impl<'a> TaggedStructure for PipelineMultisampleStateCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_MULTISAMPLE_STATE_CREATE_INFO; } -pub unsafe trait ExtendsPipelineMultisampleStateCreateInfo {} impl<'a> PipelineMultisampleStateCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: PipelineMultisampleStateCreateFlags) -> Self { @@ -5350,10 +5261,7 @@ impl<'a> PipelineMultisampleStateCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsPipelineMultisampleStateCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -5377,10 +5285,7 @@ impl<'a> PipelineMultisampleStateCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsPipelineMultisampleStateCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -5388,10 +5293,7 @@ impl<'a> PipelineMultisampleStateCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsPipelineMultisampleStateCreateInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -5489,7 +5391,6 @@ impl ::core::default::Default for PipelineColorBlendStateCreateInfo<'_> { unsafe impl<'a> TaggedStructure for PipelineColorBlendStateCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_COLOR_BLEND_STATE_CREATE_INFO; } -pub unsafe trait ExtendsPipelineColorBlendStateCreateInfo {} impl<'a> PipelineColorBlendStateCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: PipelineColorBlendStateCreateFlags) -> Self { @@ -5526,10 +5427,7 @@ impl<'a> PipelineColorBlendStateCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsPipelineColorBlendStateCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -5553,10 +5451,7 @@ impl<'a> PipelineColorBlendStateCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsPipelineColorBlendStateCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -5564,10 +5459,7 @@ impl<'a> PipelineColorBlendStateCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsPipelineColorBlendStateCreateInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -5822,7 +5714,6 @@ impl ::core::default::Default for GraphicsPipelineCreateInfo<'_> { unsafe impl<'a> TaggedStructure for GraphicsPipelineCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::GRAPHICS_PIPELINE_CREATE_INFO; } -pub unsafe trait ExtendsGraphicsPipelineCreateInfo {} impl<'a> GraphicsPipelineCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: PipelineCreateFlags) -> Self { @@ -5938,7 +5829,7 @@ impl<'a> GraphicsPipelineCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsGraphicsPipelineCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -5962,10 +5853,7 @@ impl<'a> GraphicsPipelineCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsGraphicsPipelineCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -5973,10 +5861,7 @@ impl<'a> GraphicsPipelineCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsGraphicsPipelineCreateInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -6337,9 +6222,18 @@ impl ::core::default::Default for PipelineBinaryInfoKHR<'_> { unsafe impl<'a> TaggedStructure for PipelineBinaryInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_BINARY_INFO_KHR; } -unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineBinaryInfoKHR<'_> {} -unsafe impl ExtendsComputePipelineCreateInfo for PipelineBinaryInfoKHR<'_> {} -unsafe impl ExtendsRayTracingPipelineCreateInfoKHR for PipelineBinaryInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<GraphicsPipelineCreateInfo<'root>> + for PipelineBinaryInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<ComputePipelineCreateInfo<'root>> + for PipelineBinaryInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<RayTracingPipelineCreateInfoKHR<'root>> + for PipelineBinaryInfoKHR<'child> +{ +} impl<'a> PipelineBinaryInfoKHR<'a> { #[inline] pub fn pipeline_binaries(mut self, pipeline_binaries: &'a [PipelineBinaryKHR]) -> Self { @@ -6477,13 +6371,34 @@ impl ::core::default::Default for PipelineLayoutCreateInfo<'_> { unsafe impl<'a> TaggedStructure for PipelineLayoutCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_LAYOUT_CREATE_INFO; } -unsafe impl ExtendsBindDescriptorSetsInfoKHR for PipelineLayoutCreateInfo<'_> {} -unsafe impl ExtendsPushConstantsInfoKHR for PipelineLayoutCreateInfo<'_> {} -unsafe impl ExtendsPushDescriptorSetInfoKHR for PipelineLayoutCreateInfo<'_> {} -unsafe impl ExtendsPushDescriptorSetWithTemplateInfoKHR for PipelineLayoutCreateInfo<'_> {} -unsafe impl ExtendsSetDescriptorBufferOffsetsInfoEXT for PipelineLayoutCreateInfo<'_> {} -unsafe impl ExtendsBindDescriptorBufferEmbeddedSamplersInfoEXT for PipelineLayoutCreateInfo<'_> {} -unsafe impl ExtendsIndirectCommandsLayoutCreateInfoEXT for PipelineLayoutCreateInfo<'_> {} +unsafe impl<'root, 'child> Extends<BindDescriptorSetsInfoKHR<'root>> + for PipelineLayoutCreateInfo<'child> +{ +} +unsafe impl<'root, 'child> Extends<PushConstantsInfoKHR<'root>> + for PipelineLayoutCreateInfo<'child> +{ +} +unsafe impl<'root, 'child> Extends<PushDescriptorSetInfoKHR<'root>> + for PipelineLayoutCreateInfo<'child> +{ +} +unsafe impl<'root, 'child> Extends<PushDescriptorSetWithTemplateInfoKHR<'root>> + for PipelineLayoutCreateInfo<'child> +{ +} +unsafe impl<'root, 'child> Extends<SetDescriptorBufferOffsetsInfoEXT<'root>> + for PipelineLayoutCreateInfo<'child> +{ +} +unsafe impl<'root, 'child> Extends<BindDescriptorBufferEmbeddedSamplersInfoEXT<'root>> + for PipelineLayoutCreateInfo<'child> +{ +} +unsafe impl<'root, 'child> Extends<IndirectCommandsLayoutCreateInfoEXT<'root>> + for PipelineLayoutCreateInfo<'child> +{ +} impl<'a> PipelineLayoutCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: PipelineLayoutCreateFlags) -> Self { @@ -6560,7 +6475,6 @@ impl ::core::default::Default for SamplerCreateInfo<'_> { unsafe impl<'a> TaggedStructure for SamplerCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SAMPLER_CREATE_INFO; } -pub unsafe trait ExtendsSamplerCreateInfo {} impl<'a> SamplerCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: SamplerCreateFlags) -> Self { @@ -6651,7 +6565,7 @@ impl<'a> SamplerCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsSamplerCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -6675,7 +6589,7 @@ impl<'a> SamplerCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsSamplerCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -6683,7 +6597,7 @@ impl<'a> SamplerCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsSamplerCreateInfo + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -6813,7 +6727,6 @@ impl ::core::default::Default for CommandBufferInheritanceInfo<'_> { unsafe impl<'a> TaggedStructure for CommandBufferInheritanceInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::COMMAND_BUFFER_INHERITANCE_INFO; } -pub unsafe trait ExtendsCommandBufferInheritanceInfo {} impl<'a> CommandBufferInheritanceInfo<'a> { #[inline] pub fn render_pass(mut self, render_pass: RenderPass) -> Self { @@ -6854,10 +6767,7 @@ impl<'a> CommandBufferInheritanceInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsCommandBufferInheritanceInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -6881,10 +6791,7 @@ impl<'a> CommandBufferInheritanceInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsCommandBufferInheritanceInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -6892,10 +6799,7 @@ impl<'a> CommandBufferInheritanceInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsCommandBufferInheritanceInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -6928,7 +6832,6 @@ impl ::core::default::Default for CommandBufferBeginInfo<'_> { unsafe impl<'a> TaggedStructure for CommandBufferBeginInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::COMMAND_BUFFER_BEGIN_INFO; } -pub unsafe trait ExtendsCommandBufferBeginInfo {} impl<'a> CommandBufferBeginInfo<'a> { #[inline] pub fn flags(mut self, flags: CommandBufferUsageFlags) -> Self { @@ -6952,7 +6855,7 @@ impl<'a> CommandBufferBeginInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsCommandBufferBeginInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -6976,10 +6879,7 @@ impl<'a> CommandBufferBeginInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsCommandBufferBeginInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -6987,10 +6887,7 @@ impl<'a> CommandBufferBeginInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsCommandBufferBeginInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -7042,7 +6939,6 @@ impl ::core::default::Default for RenderPassBeginInfo<'_> { unsafe impl<'a> TaggedStructure for RenderPassBeginInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RENDER_PASS_BEGIN_INFO; } -pub unsafe trait ExtendsRenderPassBeginInfo {} impl<'a> RenderPassBeginInfo<'a> { #[inline] pub fn render_pass(mut self, render_pass: RenderPass) -> Self { @@ -7074,7 +6970,7 @@ impl<'a> RenderPassBeginInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsRenderPassBeginInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -7098,10 +6994,7 @@ impl<'a> RenderPassBeginInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsRenderPassBeginInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -7109,7 +7002,7 @@ impl<'a> RenderPassBeginInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsRenderPassBeginInfo + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -7453,7 +7346,6 @@ impl ::core::default::Default for RenderPassCreateInfo<'_> { unsafe impl<'a> TaggedStructure for RenderPassCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RENDER_PASS_CREATE_INFO; } -pub unsafe trait ExtendsRenderPassCreateInfo {} impl<'a> RenderPassCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: RenderPassCreateFlags) -> Self { @@ -7487,7 +7379,7 @@ impl<'a> RenderPassCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsRenderPassCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -7511,10 +7403,7 @@ impl<'a> RenderPassCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsRenderPassCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -7522,10 +7411,7 @@ impl<'a> RenderPassCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsRenderPassCreateInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -7556,7 +7442,6 @@ impl ::core::default::Default for EventCreateInfo<'_> { unsafe impl<'a> TaggedStructure for EventCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EVENT_CREATE_INFO; } -pub unsafe trait ExtendsEventCreateInfo {} impl<'a> EventCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: EventCreateFlags) -> Self { @@ -7572,7 +7457,7 @@ impl<'a> EventCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsEventCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -7596,7 +7481,7 @@ impl<'a> EventCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsEventCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -7604,7 +7489,7 @@ impl<'a> EventCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsEventCreateInfo + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -7635,7 +7520,6 @@ impl ::core::default::Default for FenceCreateInfo<'_> { unsafe impl<'a> TaggedStructure for FenceCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::FENCE_CREATE_INFO; } -pub unsafe trait ExtendsFenceCreateInfo {} impl<'a> FenceCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: FenceCreateFlags) -> Self { @@ -7651,7 +7535,7 @@ impl<'a> FenceCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsFenceCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -7675,7 +7559,7 @@ impl<'a> FenceCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsFenceCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -7683,7 +7567,7 @@ impl<'a> FenceCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsFenceCreateInfo + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -9029,7 +8913,6 @@ impl ::core::default::Default for SemaphoreCreateInfo<'_> { unsafe impl<'a> TaggedStructure for SemaphoreCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SEMAPHORE_CREATE_INFO; } -pub unsafe trait ExtendsSemaphoreCreateInfo {} impl<'a> SemaphoreCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: SemaphoreCreateFlags) -> Self { @@ -9045,7 +8928,7 @@ impl<'a> SemaphoreCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsSemaphoreCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -9069,10 +8952,7 @@ impl<'a> SemaphoreCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsSemaphoreCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -9080,7 +8960,7 @@ impl<'a> SemaphoreCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsSemaphoreCreateInfo + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -9117,7 +8997,6 @@ impl ::core::default::Default for QueryPoolCreateInfo<'_> { unsafe impl<'a> TaggedStructure for QueryPoolCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::QUERY_POOL_CREATE_INFO; } -pub unsafe trait ExtendsQueryPoolCreateInfo {} impl<'a> QueryPoolCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: QueryPoolCreateFlags) -> Self { @@ -9148,7 +9027,7 @@ impl<'a> QueryPoolCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsQueryPoolCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -9172,10 +9051,7 @@ impl<'a> QueryPoolCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsQueryPoolCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -9183,7 +9059,7 @@ impl<'a> QueryPoolCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsQueryPoolCreateInfo + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -9226,7 +9102,6 @@ impl ::core::default::Default for FramebufferCreateInfo<'_> { unsafe impl<'a> TaggedStructure for FramebufferCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::FRAMEBUFFER_CREATE_INFO; } -pub unsafe trait ExtendsFramebufferCreateInfo {} impl<'a> FramebufferCreateInfo<'a> { #[inline] pub fn flags(mut self, flags: FramebufferCreateFlags) -> Self { @@ -9273,7 +9148,7 @@ impl<'a> FramebufferCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsFramebufferCreateInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -9297,10 +9172,7 @@ impl<'a> FramebufferCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsFramebufferCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -9308,10 +9180,7 @@ impl<'a> FramebufferCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsFramebufferCreateInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -9501,7 +9370,6 @@ impl ::core::default::Default for SubmitInfo<'_> { unsafe impl<'a> TaggedStructure for SubmitInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SUBMIT_INFO; } -pub unsafe trait ExtendsSubmitInfo {} impl<'a> SubmitInfo<'a> { #[inline] pub fn wait_semaphores(mut self, wait_semaphores: &'a [Semaphore]) -> Self { @@ -9536,7 +9404,7 @@ impl<'a> SubmitInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsSubmitInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -9560,7 +9428,7 @@ impl<'a> SubmitInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsSubmitInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -9568,7 +9436,7 @@ impl<'a> SubmitInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsSubmitInfo + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -9930,7 +9798,7 @@ impl ::core::default::Default for DisplayPresentInfoKHR<'_> { unsafe impl<'a> TaggedStructure for DisplayPresentInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DISPLAY_PRESENT_INFO_KHR; } -unsafe impl ExtendsPresentInfoKHR for DisplayPresentInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<PresentInfoKHR<'root>> for DisplayPresentInfoKHR<'child> {} impl<'a> DisplayPresentInfoKHR<'a> { #[inline] pub fn src_rect(mut self, src_rect: Rect2D) -> Self { @@ -10550,7 +10418,6 @@ impl ::core::default::Default for SwapchainCreateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for SwapchainCreateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SWAPCHAIN_CREATE_INFO_KHR; } -pub unsafe trait ExtendsSwapchainCreateInfoKHR {} impl<'a> SwapchainCreateInfoKHR<'a> { #[inline] pub fn flags(mut self, flags: SwapchainCreateFlagsKHR) -> Self { @@ -10637,7 +10504,7 @@ impl<'a> SwapchainCreateInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsSwapchainCreateInfoKHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -10661,10 +10528,7 @@ impl<'a> SwapchainCreateInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsSwapchainCreateInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -10672,10 +10536,7 @@ impl<'a> SwapchainCreateInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsSwapchainCreateInfoKHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -10716,7 +10577,6 @@ impl ::core::default::Default for PresentInfoKHR<'_> { unsafe impl<'a> TaggedStructure for PresentInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PRESENT_INFO_KHR; } -pub unsafe trait ExtendsPresentInfoKHR {} impl<'a> PresentInfoKHR<'a> { #[inline] pub fn wait_semaphores(mut self, wait_semaphores: &'a [Semaphore]) -> Self { @@ -10751,7 +10611,7 @@ impl<'a> PresentInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsPresentInfoKHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -10775,7 +10635,7 @@ impl<'a> PresentInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsPresentInfoKHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -10783,7 +10643,7 @@ impl<'a> PresentInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsPresentInfoKHR + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -10829,7 +10689,10 @@ impl ::core::default::Default for DebugReportCallbackCreateInfoEXT<'_> { unsafe impl<'a> TaggedStructure for DebugReportCallbackCreateInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT; } -unsafe impl ExtendsInstanceCreateInfo for DebugReportCallbackCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<InstanceCreateInfo<'root>> + for DebugReportCallbackCreateInfoEXT<'child> +{ +} impl<'a> DebugReportCallbackCreateInfoEXT<'a> { #[inline] pub fn flags(mut self, flags: DebugReportFlagsEXT) -> Self { @@ -10876,7 +10739,7 @@ impl ::core::default::Default for ValidationFlagsEXT<'_> { unsafe impl<'a> TaggedStructure for ValidationFlagsEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VALIDATION_FLAGS_EXT; } -unsafe impl ExtendsInstanceCreateInfo for ValidationFlagsEXT<'_> {} +unsafe impl<'root, 'child> Extends<InstanceCreateInfo<'root>> for ValidationFlagsEXT<'child> {} impl<'a> ValidationFlagsEXT<'a> { #[inline] pub fn disabled_validation_checks( @@ -10921,9 +10784,12 @@ impl ::core::default::Default for ValidationFeaturesEXT<'_> { unsafe impl<'a> TaggedStructure for ValidationFeaturesEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VALIDATION_FEATURES_EXT; } -unsafe impl ExtendsInstanceCreateInfo for ValidationFeaturesEXT<'_> {} -unsafe impl ExtendsShaderModuleCreateInfo for ValidationFeaturesEXT<'_> {} -unsafe impl ExtendsShaderCreateInfoEXT for ValidationFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<InstanceCreateInfo<'root>> for ValidationFeaturesEXT<'child> {} +unsafe impl<'root, 'child> Extends<ShaderModuleCreateInfo<'root>> + for ValidationFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<ShaderCreateInfoEXT<'root>> for ValidationFeaturesEXT<'child> {} impl<'a> ValidationFeaturesEXT<'a> { #[inline] pub fn enabled_validation_features( @@ -10973,7 +10839,10 @@ impl ::core::default::Default for LayerSettingsCreateInfoEXT<'_> { unsafe impl<'a> TaggedStructure for LayerSettingsCreateInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::LAYER_SETTINGS_CREATE_INFO_EXT; } -unsafe impl ExtendsInstanceCreateInfo for LayerSettingsCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<InstanceCreateInfo<'root>> + for LayerSettingsCreateInfoEXT<'child> +{ +} impl<'a> LayerSettingsCreateInfoEXT<'a> { #[inline] pub fn settings(mut self, settings: &'a [LayerSettingEXT<'a>]) -> Self { @@ -11077,8 +10946,8 @@ unsafe impl<'a> TaggedStructure for PipelineRasterizationStateRasterizationOrder const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD; } -unsafe impl ExtendsPipelineRasterizationStateCreateInfo - for PipelineRasterizationStateRasterizationOrderAMD<'_> +unsafe impl<'root, 'child> Extends<PipelineRasterizationStateCreateInfo<'root>> + for PipelineRasterizationStateRasterizationOrderAMD<'child> { } impl<'a> PipelineRasterizationStateRasterizationOrderAMD<'a> { @@ -11278,7 +11147,10 @@ impl ::core::default::Default for DedicatedAllocationImageCreateInfoNV<'_> { unsafe impl<'a> TaggedStructure for DedicatedAllocationImageCreateInfoNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV; } -unsafe impl ExtendsImageCreateInfo for DedicatedAllocationImageCreateInfoNV<'_> {} +unsafe impl<'root, 'child> Extends<ImageCreateInfo<'root>> + for DedicatedAllocationImageCreateInfoNV<'child> +{ +} impl<'a> DedicatedAllocationImageCreateInfoNV<'a> { #[inline] pub fn dedicated_allocation(mut self, dedicated_allocation: bool) -> Self { @@ -11313,7 +11185,10 @@ impl ::core::default::Default for DedicatedAllocationBufferCreateInfoNV<'_> { unsafe impl<'a> TaggedStructure for DedicatedAllocationBufferCreateInfoNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV; } -unsafe impl ExtendsBufferCreateInfo for DedicatedAllocationBufferCreateInfoNV<'_> {} +unsafe impl<'root, 'child> Extends<BufferCreateInfo<'root>> + for DedicatedAllocationBufferCreateInfoNV<'child> +{ +} impl<'a> DedicatedAllocationBufferCreateInfoNV<'a> { #[inline] pub fn dedicated_allocation(mut self, dedicated_allocation: bool) -> Self { @@ -11351,7 +11226,10 @@ unsafe impl<'a> TaggedStructure for DedicatedAllocationMemoryAllocateInfoNV<'a> const STRUCTURE_TYPE: StructureType = StructureType::DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV; } -unsafe impl ExtendsMemoryAllocateInfo for DedicatedAllocationMemoryAllocateInfoNV<'_> {} +unsafe impl<'root, 'child> Extends<MemoryAllocateInfo<'root>> + for DedicatedAllocationMemoryAllocateInfoNV<'child> +{ +} impl<'a> DedicatedAllocationMemoryAllocateInfoNV<'a> { #[inline] pub fn image(mut self, image: Image) -> Self { @@ -11436,7 +11314,10 @@ impl ::core::default::Default for ExternalMemoryImageCreateInfoNV<'_> { unsafe impl<'a> TaggedStructure for ExternalMemoryImageCreateInfoNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV; } -unsafe impl ExtendsImageCreateInfo for ExternalMemoryImageCreateInfoNV<'_> {} +unsafe impl<'root, 'child> Extends<ImageCreateInfo<'root>> + for ExternalMemoryImageCreateInfoNV<'child> +{ +} impl<'a> ExternalMemoryImageCreateInfoNV<'a> { #[inline] pub fn handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlagsNV) -> Self { @@ -11471,7 +11352,10 @@ impl ::core::default::Default for ExportMemoryAllocateInfoNV<'_> { unsafe impl<'a> TaggedStructure for ExportMemoryAllocateInfoNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXPORT_MEMORY_ALLOCATE_INFO_NV; } -unsafe impl ExtendsMemoryAllocateInfo for ExportMemoryAllocateInfoNV<'_> {} +unsafe impl<'root, 'child> Extends<MemoryAllocateInfo<'root>> + for ExportMemoryAllocateInfoNV<'child> +{ +} impl<'a> ExportMemoryAllocateInfoNV<'a> { #[inline] pub fn handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlagsNV) -> Self { @@ -11508,7 +11392,10 @@ impl ::core::default::Default for ImportMemoryWin32HandleInfoNV<'_> { unsafe impl<'a> TaggedStructure for ImportMemoryWin32HandleInfoNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_NV; } -unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryWin32HandleInfoNV<'_> {} +unsafe impl<'root, 'child> Extends<MemoryAllocateInfo<'root>> + for ImportMemoryWin32HandleInfoNV<'child> +{ +} impl<'a> ImportMemoryWin32HandleInfoNV<'a> { #[inline] pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlagsNV) -> Self { @@ -11550,7 +11437,10 @@ impl ::core::default::Default for ExportMemoryWin32HandleInfoNV<'_> { unsafe impl<'a> TaggedStructure for ExportMemoryWin32HandleInfoNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_NV; } -unsafe impl ExtendsMemoryAllocateInfo for ExportMemoryWin32HandleInfoNV<'_> {} +unsafe impl<'root, 'child> Extends<MemoryAllocateInfo<'root>> + for ExportMemoryWin32HandleInfoNV<'child> +{ +} impl<'a> ExportMemoryWin32HandleInfoNV<'a> { #[inline] pub fn attributes(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> Self { @@ -11602,8 +11492,14 @@ impl ::core::default::Default for Win32KeyedMutexAcquireReleaseInfoNV<'_> { unsafe impl<'a> TaggedStructure for Win32KeyedMutexAcquireReleaseInfoNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV; } -unsafe impl ExtendsSubmitInfo for Win32KeyedMutexAcquireReleaseInfoNV<'_> {} -unsafe impl ExtendsSubmitInfo2 for Win32KeyedMutexAcquireReleaseInfoNV<'_> {} +unsafe impl<'root, 'child> Extends<SubmitInfo<'root>> + for Win32KeyedMutexAcquireReleaseInfoNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<SubmitInfo2<'root>> + for Win32KeyedMutexAcquireReleaseInfoNV<'child> +{ +} impl<'a> Win32KeyedMutexAcquireReleaseInfoNV<'a> { #[inline] pub fn acquire_syncs(mut self, acquire_syncs: &'a [DeviceMemory]) -> Self { @@ -11664,8 +11560,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDeviceGeneratedCommandsFeature const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV<'child> +{ +} impl<'a> PhysicalDeviceDeviceGeneratedCommandsFeaturesNV<'a> { #[inline] pub fn device_generated_commands(mut self, device_generated_commands: bool) -> Self { @@ -11705,11 +11607,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDeviceGeneratedCommandsCompute const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV<'_> {} impl<'a> PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV<'a> { #[inline] pub fn device_generated_compute(mut self, device_generated_compute: bool) -> Self { @@ -11761,7 +11666,10 @@ impl ::core::default::Default for DevicePrivateDataCreateInfo<'_> { unsafe impl<'a> TaggedStructure for DevicePrivateDataCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEVICE_PRIVATE_DATA_CREATE_INFO; } -unsafe impl ExtendsDeviceCreateInfo for DevicePrivateDataCreateInfo<'_> {} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for DevicePrivateDataCreateInfo<'child> +{ +} impl<'a> DevicePrivateDataCreateInfo<'a> { #[inline] pub fn private_data_slot_request_count(mut self, private_data_slot_request_count: u32) -> Self { @@ -11830,8 +11738,14 @@ impl ::core::default::Default for PhysicalDevicePrivateDataFeatures<'_> { unsafe impl<'a> TaggedStructure for PhysicalDevicePrivateDataFeatures<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePrivateDataFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePrivateDataFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDevicePrivateDataFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDevicePrivateDataFeatures<'child> +{ +} impl<'a> PhysicalDevicePrivateDataFeatures<'a> { #[inline] pub fn private_data(mut self, private_data: bool) -> Self { @@ -11883,8 +11797,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDeviceGeneratedCommandsPropert const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV<'child> { } impl<'a> PhysicalDeviceDeviceGeneratedCommandsPropertiesNV<'a> { @@ -11985,7 +11899,10 @@ impl ::core::default::Default for PhysicalDeviceMultiDrawPropertiesEXT<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceMultiDrawPropertiesEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMultiDrawPropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceMultiDrawPropertiesEXT<'child> +{ +} impl<'a> PhysicalDeviceMultiDrawPropertiesEXT<'a> { #[inline] pub fn max_multi_draw_count(mut self, max_multi_draw_count: u32) -> Self { @@ -12084,7 +12001,10 @@ unsafe impl<'a> TaggedStructure for GraphicsPipelineShaderGroupsCreateInfoNV<'a> const STRUCTURE_TYPE: StructureType = StructureType::GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV; } -unsafe impl ExtendsGraphicsPipelineCreateInfo for GraphicsPipelineShaderGroupsCreateInfoNV<'_> {} +unsafe impl<'root, 'child> Extends<GraphicsPipelineCreateInfo<'root>> + for GraphicsPipelineShaderGroupsCreateInfoNV<'child> +{ +} impl<'a> GraphicsPipelineShaderGroupsCreateInfoNV<'a> { #[inline] pub fn groups(mut self, groups: &'a [GraphicsShaderGroupCreateInfoNV<'a>]) -> Self { @@ -12645,8 +12565,7 @@ impl ::core::default::Default for PhysicalDeviceFeatures2<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceFeatures2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FEATURES_2; } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFeatures2<'_> {} -pub unsafe trait ExtendsPhysicalDeviceFeatures2 {} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> for PhysicalDeviceFeatures2<'child> {} impl<'a> PhysicalDeviceFeatures2<'a> { #[inline] pub fn features(mut self, features: PhysicalDeviceFeatures) -> Self { @@ -12662,7 +12581,7 @@ impl<'a> PhysicalDeviceFeatures2<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsPhysicalDeviceFeatures2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -12686,10 +12605,7 @@ impl<'a> PhysicalDeviceFeatures2<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsPhysicalDeviceFeatures2 + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -12697,10 +12613,7 @@ impl<'a> PhysicalDeviceFeatures2<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsPhysicalDeviceFeatures2 + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -12731,7 +12644,6 @@ impl ::core::default::Default for PhysicalDeviceProperties2<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceProperties2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PROPERTIES_2; } -pub unsafe trait ExtendsPhysicalDeviceProperties2 {} impl<'a> PhysicalDeviceProperties2<'a> { #[inline] pub fn properties(mut self, properties: PhysicalDeviceProperties) -> Self { @@ -12747,7 +12659,7 @@ impl<'a> PhysicalDeviceProperties2<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsPhysicalDeviceProperties2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -12771,10 +12683,7 @@ impl<'a> PhysicalDeviceProperties2<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsPhysicalDeviceProperties2 + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -12782,10 +12691,7 @@ impl<'a> PhysicalDeviceProperties2<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsPhysicalDeviceProperties2 + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -12816,7 +12722,6 @@ impl ::core::default::Default for FormatProperties2<'_> { unsafe impl<'a> TaggedStructure for FormatProperties2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::FORMAT_PROPERTIES_2; } -pub unsafe trait ExtendsFormatProperties2 {} impl<'a> FormatProperties2<'a> { #[inline] pub fn format_properties(mut self, format_properties: FormatProperties) -> Self { @@ -12832,7 +12737,7 @@ impl<'a> FormatProperties2<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsFormatProperties2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -12856,7 +12761,7 @@ impl<'a> FormatProperties2<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsFormatProperties2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -12864,7 +12769,7 @@ impl<'a> FormatProperties2<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsFormatProperties2 + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -12895,7 +12800,6 @@ impl ::core::default::Default for ImageFormatProperties2<'_> { unsafe impl<'a> TaggedStructure for ImageFormatProperties2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_FORMAT_PROPERTIES_2; } -pub unsafe trait ExtendsImageFormatProperties2 {} impl<'a> ImageFormatProperties2<'a> { #[inline] pub fn image_format_properties( @@ -12914,7 +12818,7 @@ impl<'a> ImageFormatProperties2<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsImageFormatProperties2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -12938,10 +12842,7 @@ impl<'a> ImageFormatProperties2<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsImageFormatProperties2 + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -12949,10 +12850,7 @@ impl<'a> ImageFormatProperties2<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsImageFormatProperties2 + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -12991,7 +12889,6 @@ impl ::core::default::Default for PhysicalDeviceImageFormatInfo2<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceImageFormatInfo2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2; } -pub unsafe trait ExtendsPhysicalDeviceImageFormatInfo2 {} impl<'a> PhysicalDeviceImageFormatInfo2<'a> { #[inline] pub fn format(mut self, format: Format) -> Self { @@ -13027,10 +12924,7 @@ impl<'a> PhysicalDeviceImageFormatInfo2<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsPhysicalDeviceImageFormatInfo2 + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -13054,10 +12948,7 @@ impl<'a> PhysicalDeviceImageFormatInfo2<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsPhysicalDeviceImageFormatInfo2 + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -13065,10 +12956,7 @@ impl<'a> PhysicalDeviceImageFormatInfo2<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsPhysicalDeviceImageFormatInfo2 + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -13099,7 +12987,6 @@ impl ::core::default::Default for QueueFamilyProperties2<'_> { unsafe impl<'a> TaggedStructure for QueueFamilyProperties2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::QUEUE_FAMILY_PROPERTIES_2; } -pub unsafe trait ExtendsQueueFamilyProperties2 {} impl<'a> QueueFamilyProperties2<'a> { #[inline] pub fn queue_family_properties( @@ -13118,7 +13005,7 @@ impl<'a> QueueFamilyProperties2<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsQueueFamilyProperties2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -13142,10 +13029,7 @@ impl<'a> QueueFamilyProperties2<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsQueueFamilyProperties2 + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -13153,10 +13037,7 @@ impl<'a> QueueFamilyProperties2<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsQueueFamilyProperties2 + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -13187,7 +13068,6 @@ impl ::core::default::Default for PhysicalDeviceMemoryProperties2<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceMemoryProperties2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MEMORY_PROPERTIES_2; } -pub unsafe trait ExtendsPhysicalDeviceMemoryProperties2 {} impl<'a> PhysicalDeviceMemoryProperties2<'a> { #[inline] pub fn memory_properties(mut self, memory_properties: PhysicalDeviceMemoryProperties) -> Self { @@ -13203,10 +13083,7 @@ impl<'a> PhysicalDeviceMemoryProperties2<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsPhysicalDeviceMemoryProperties2 + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -13230,10 +13107,7 @@ impl<'a> PhysicalDeviceMemoryProperties2<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsPhysicalDeviceMemoryProperties2 + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -13241,10 +13115,7 @@ impl<'a> PhysicalDeviceMemoryProperties2<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsPhysicalDeviceMemoryProperties2 + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -13372,7 +13243,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDevicePushDescriptorPropertiesKHR<'a const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDevicePushDescriptorPropertiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDevicePushDescriptorPropertiesKHR<'child> +{ +} impl<'a> PhysicalDevicePushDescriptorPropertiesKHR<'a> { #[inline] pub fn max_push_descriptors(mut self, max_push_descriptors: u32) -> Self { @@ -13458,7 +13332,10 @@ impl ::core::default::Default for PhysicalDeviceDriverProperties<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceDriverProperties<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DRIVER_PROPERTIES; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDriverProperties<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceDriverProperties<'child> +{ +} impl<'a> PhysicalDeviceDriverProperties<'a> { #[inline] pub fn driver_id(mut self, driver_id: DriverId) -> Self { @@ -13522,7 +13399,7 @@ impl ::core::default::Default for PresentRegionsKHR<'_> { unsafe impl<'a> TaggedStructure for PresentRegionsKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PRESENT_REGIONS_KHR; } -unsafe impl ExtendsPresentInfoKHR for PresentRegionsKHR<'_> {} +unsafe impl<'root, 'child> Extends<PresentInfoKHR<'root>> for PresentRegionsKHR<'child> {} impl<'a> PresentRegionsKHR<'a> { #[inline] pub fn regions(mut self, regions: &'a [PresentRegionKHR<'a>]) -> Self { @@ -13617,8 +13494,14 @@ impl ::core::default::Default for PhysicalDeviceVariablePointersFeatures<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceVariablePointersFeatures<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVariablePointersFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVariablePointersFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceVariablePointersFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceVariablePointersFeatures<'child> +{ +} impl<'a> PhysicalDeviceVariablePointersFeatures<'a> { #[inline] pub fn variable_pointers_storage_buffer( @@ -13697,7 +13580,10 @@ impl ::core::default::Default for PhysicalDeviceExternalImageFormatInfo<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceExternalImageFormatInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO; } -unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 for PhysicalDeviceExternalImageFormatInfo<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceImageFormatInfo2<'root>> + for PhysicalDeviceExternalImageFormatInfo<'child> +{ +} impl<'a> PhysicalDeviceExternalImageFormatInfo<'a> { #[inline] pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self { @@ -13732,7 +13618,10 @@ impl ::core::default::Default for ExternalImageFormatProperties<'_> { unsafe impl<'a> TaggedStructure for ExternalImageFormatProperties<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXTERNAL_IMAGE_FORMAT_PROPERTIES; } -unsafe impl ExtendsImageFormatProperties2 for ExternalImageFormatProperties<'_> {} +unsafe impl<'root, 'child> Extends<ImageFormatProperties2<'root>> + for ExternalImageFormatProperties<'child> +{ +} impl<'a> ExternalImageFormatProperties<'a> { #[inline] pub fn external_memory_properties( @@ -13774,7 +13663,6 @@ impl ::core::default::Default for PhysicalDeviceExternalBufferInfo<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceExternalBufferInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO; } -pub unsafe trait ExtendsPhysicalDeviceExternalBufferInfo {} impl<'a> PhysicalDeviceExternalBufferInfo<'a> { #[inline] pub fn flags(mut self, flags: BufferCreateFlags) -> Self { @@ -13800,10 +13688,7 @@ impl<'a> PhysicalDeviceExternalBufferInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsPhysicalDeviceExternalBufferInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -13827,10 +13712,7 @@ impl<'a> PhysicalDeviceExternalBufferInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsPhysicalDeviceExternalBufferInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -13838,10 +13720,7 @@ impl<'a> PhysicalDeviceExternalBufferInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsPhysicalDeviceExternalBufferInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -13917,7 +13796,10 @@ impl ::core::default::Default for PhysicalDeviceIDProperties<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceIDProperties<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_ID_PROPERTIES; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceIDProperties<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceIDProperties<'child> +{ +} impl<'a> PhysicalDeviceIDProperties<'a> { #[inline] pub fn device_uuid(mut self, device_uuid: [u8; UUID_SIZE]) -> Self { @@ -13972,7 +13854,10 @@ impl ::core::default::Default for ExternalMemoryImageCreateInfo<'_> { unsafe impl<'a> TaggedStructure for ExternalMemoryImageCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO; } -unsafe impl ExtendsImageCreateInfo for ExternalMemoryImageCreateInfo<'_> {} +unsafe impl<'root, 'child> Extends<ImageCreateInfo<'root>> + for ExternalMemoryImageCreateInfo<'child> +{ +} impl<'a> ExternalMemoryImageCreateInfo<'a> { #[inline] pub fn handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlags) -> Self { @@ -14007,7 +13892,10 @@ impl ::core::default::Default for ExternalMemoryBufferCreateInfo<'_> { unsafe impl<'a> TaggedStructure for ExternalMemoryBufferCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXTERNAL_MEMORY_BUFFER_CREATE_INFO; } -unsafe impl ExtendsBufferCreateInfo for ExternalMemoryBufferCreateInfo<'_> {} +unsafe impl<'root, 'child> Extends<BufferCreateInfo<'root>> + for ExternalMemoryBufferCreateInfo<'child> +{ +} impl<'a> ExternalMemoryBufferCreateInfo<'a> { #[inline] pub fn handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlags) -> Self { @@ -14042,7 +13930,7 @@ impl ::core::default::Default for ExportMemoryAllocateInfo<'_> { unsafe impl<'a> TaggedStructure for ExportMemoryAllocateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXPORT_MEMORY_ALLOCATE_INFO; } -unsafe impl ExtendsMemoryAllocateInfo for ExportMemoryAllocateInfo<'_> {} +unsafe impl<'root, 'child> Extends<MemoryAllocateInfo<'root>> for ExportMemoryAllocateInfo<'child> {} impl<'a> ExportMemoryAllocateInfo<'a> { #[inline] pub fn handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlags) -> Self { @@ -14081,7 +13969,10 @@ impl ::core::default::Default for ImportMemoryWin32HandleInfoKHR<'_> { unsafe impl<'a> TaggedStructure for ImportMemoryWin32HandleInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR; } -unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryWin32HandleInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<MemoryAllocateInfo<'root>> + for ImportMemoryWin32HandleInfoKHR<'child> +{ +} impl<'a> ImportMemoryWin32HandleInfoKHR<'a> { #[inline] pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self { @@ -14130,7 +14021,10 @@ impl ::core::default::Default for ExportMemoryWin32HandleInfoKHR<'_> { unsafe impl<'a> TaggedStructure for ExportMemoryWin32HandleInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR; } -unsafe impl ExtendsMemoryAllocateInfo for ExportMemoryWin32HandleInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<MemoryAllocateInfo<'root>> + for ExportMemoryWin32HandleInfoKHR<'child> +{ +} impl<'a> ExportMemoryWin32HandleInfoKHR<'a> { #[inline] pub fn attributes(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> Self { @@ -14177,7 +14071,10 @@ impl ::core::default::Default for ImportMemoryZirconHandleInfoFUCHSIA<'_> { unsafe impl<'a> TaggedStructure for ImportMemoryZirconHandleInfoFUCHSIA<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA; } -unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryZirconHandleInfoFUCHSIA<'_> {} +unsafe impl<'root, 'child> Extends<MemoryAllocateInfo<'root>> + for ImportMemoryZirconHandleInfoFUCHSIA<'child> +{ +} impl<'a> ImportMemoryZirconHandleInfoFUCHSIA<'a> { #[inline] pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self { @@ -14369,7 +14266,7 @@ impl ::core::default::Default for ImportMemoryFdInfoKHR<'_> { unsafe impl<'a> TaggedStructure for ImportMemoryFdInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMPORT_MEMORY_FD_INFO_KHR; } -unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryFdInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<MemoryAllocateInfo<'root>> for ImportMemoryFdInfoKHR<'child> {} impl<'a> ImportMemoryFdInfoKHR<'a> { #[inline] pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self { @@ -14496,8 +14393,14 @@ impl ::core::default::Default for Win32KeyedMutexAcquireReleaseInfoKHR<'_> { unsafe impl<'a> TaggedStructure for Win32KeyedMutexAcquireReleaseInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR; } -unsafe impl ExtendsSubmitInfo for Win32KeyedMutexAcquireReleaseInfoKHR<'_> {} -unsafe impl ExtendsSubmitInfo2 for Win32KeyedMutexAcquireReleaseInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<SubmitInfo<'root>> + for Win32KeyedMutexAcquireReleaseInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<SubmitInfo2<'root>> + for Win32KeyedMutexAcquireReleaseInfoKHR<'child> +{ +} impl<'a> Win32KeyedMutexAcquireReleaseInfoKHR<'a> { #[inline] pub fn acquire_syncs(mut self, acquire_syncs: &'a [DeviceMemory]) -> Self { @@ -14557,7 +14460,6 @@ impl ::core::default::Default for PhysicalDeviceExternalSemaphoreInfo<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceExternalSemaphoreInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO; } -pub unsafe trait ExtendsPhysicalDeviceExternalSemaphoreInfo {} impl<'a> PhysicalDeviceExternalSemaphoreInfo<'a> { #[inline] pub fn handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self { @@ -14573,10 +14475,7 @@ impl<'a> PhysicalDeviceExternalSemaphoreInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsPhysicalDeviceExternalSemaphoreInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -14600,10 +14499,7 @@ impl<'a> PhysicalDeviceExternalSemaphoreInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsPhysicalDeviceExternalSemaphoreInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -14611,10 +14507,7 @@ impl<'a> PhysicalDeviceExternalSemaphoreInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsPhysicalDeviceExternalSemaphoreInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -14702,7 +14595,10 @@ impl ::core::default::Default for ExportSemaphoreCreateInfo<'_> { unsafe impl<'a> TaggedStructure for ExportSemaphoreCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXPORT_SEMAPHORE_CREATE_INFO; } -unsafe impl ExtendsSemaphoreCreateInfo for ExportSemaphoreCreateInfo<'_> {} +unsafe impl<'root, 'child> Extends<SemaphoreCreateInfo<'root>> + for ExportSemaphoreCreateInfo<'child> +{ +} impl<'a> ExportSemaphoreCreateInfo<'a> { #[inline] pub fn handle_types(mut self, handle_types: ExternalSemaphoreHandleTypeFlags) -> Self { @@ -14803,7 +14699,10 @@ impl ::core::default::Default for ExportSemaphoreWin32HandleInfoKHR<'_> { unsafe impl<'a> TaggedStructure for ExportSemaphoreWin32HandleInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR; } -unsafe impl ExtendsSemaphoreCreateInfo for ExportSemaphoreWin32HandleInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<SemaphoreCreateInfo<'root>> + for ExportSemaphoreWin32HandleInfoKHR<'child> +{ +} impl<'a> ExportSemaphoreWin32HandleInfoKHR<'a> { #[inline] pub fn attributes(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> Self { @@ -14854,7 +14753,7 @@ impl ::core::default::Default for D3D12FenceSubmitInfoKHR<'_> { unsafe impl<'a> TaggedStructure for D3D12FenceSubmitInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::D3D12_FENCE_SUBMIT_INFO_KHR; } -unsafe impl ExtendsSubmitInfo for D3D12FenceSubmitInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<SubmitInfo<'root>> for D3D12FenceSubmitInfoKHR<'child> {} impl<'a> D3D12FenceSubmitInfoKHR<'a> { #[inline] pub fn wait_semaphore_values(mut self, wait_semaphore_values: &'a [u64]) -> Self { @@ -15221,7 +15120,7 @@ impl ::core::default::Default for ExportFenceCreateInfo<'_> { unsafe impl<'a> TaggedStructure for ExportFenceCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXPORT_FENCE_CREATE_INFO; } -unsafe impl ExtendsFenceCreateInfo for ExportFenceCreateInfo<'_> {} +unsafe impl<'root, 'child> Extends<FenceCreateInfo<'root>> for ExportFenceCreateInfo<'child> {} impl<'a> ExportFenceCreateInfo<'a> { #[inline] pub fn handle_types(mut self, handle_types: ExternalFenceHandleTypeFlags) -> Self { @@ -15322,7 +15221,10 @@ impl ::core::default::Default for ExportFenceWin32HandleInfoKHR<'_> { unsafe impl<'a> TaggedStructure for ExportFenceWin32HandleInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXPORT_FENCE_WIN32_HANDLE_INFO_KHR; } -unsafe impl ExtendsFenceCreateInfo for ExportFenceWin32HandleInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<FenceCreateInfo<'root>> + for ExportFenceWin32HandleInfoKHR<'child> +{ +} impl<'a> ExportFenceWin32HandleInfoKHR<'a> { #[inline] pub fn attributes(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> Self { @@ -15508,8 +15410,14 @@ impl ::core::default::Default for PhysicalDeviceMultiviewFeatures<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceMultiviewFeatures<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MULTIVIEW_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMultiviewFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMultiviewFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceMultiviewFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceMultiviewFeatures<'child> +{ +} impl<'a> PhysicalDeviceMultiviewFeatures<'a> { #[inline] pub fn multiview(mut self, multiview: bool) -> Self { @@ -15556,7 +15464,10 @@ impl ::core::default::Default for PhysicalDeviceMultiviewProperties<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceMultiviewProperties<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMultiviewProperties<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceMultiviewProperties<'child> +{ +} impl<'a> PhysicalDeviceMultiviewProperties<'a> { #[inline] pub fn max_multiview_view_count(mut self, max_multiview_view_count: u32) -> Self { @@ -15606,7 +15517,10 @@ impl ::core::default::Default for RenderPassMultiviewCreateInfo<'_> { unsafe impl<'a> TaggedStructure for RenderPassMultiviewCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RENDER_PASS_MULTIVIEW_CREATE_INFO; } -unsafe impl ExtendsRenderPassCreateInfo for RenderPassMultiviewCreateInfo<'_> {} +unsafe impl<'root, 'child> Extends<RenderPassCreateInfo<'root>> + for RenderPassMultiviewCreateInfo<'child> +{ +} impl<'a> RenderPassMultiviewCreateInfo<'a> { #[inline] pub fn view_masks(mut self, view_masks: &'a [u32]) -> Self { @@ -15866,7 +15780,10 @@ impl ::core::default::Default for SwapchainCounterCreateInfoEXT<'_> { unsafe impl<'a> TaggedStructure for SwapchainCounterCreateInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SWAPCHAIN_COUNTER_CREATE_INFO_EXT; } -unsafe impl ExtendsSwapchainCreateInfoKHR for SwapchainCounterCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<SwapchainCreateInfoKHR<'root>> + for SwapchainCounterCreateInfoEXT<'child> +{ +} impl<'a> SwapchainCounterCreateInfoEXT<'a> { #[inline] pub fn surface_counters(mut self, surface_counters: SurfaceCounterFlagsEXT) -> Self { @@ -15962,7 +15879,7 @@ impl ::core::default::Default for MemoryAllocateFlagsInfo<'_> { unsafe impl<'a> TaggedStructure for MemoryAllocateFlagsInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::MEMORY_ALLOCATE_FLAGS_INFO; } -unsafe impl ExtendsMemoryAllocateInfo for MemoryAllocateFlagsInfo<'_> {} +unsafe impl<'root, 'child> Extends<MemoryAllocateInfo<'root>> for MemoryAllocateFlagsInfo<'child> {} impl<'a> MemoryAllocateFlagsInfo<'a> { #[inline] pub fn flags(mut self, flags: MemoryAllocateFlags) -> Self { @@ -16006,7 +15923,6 @@ impl ::core::default::Default for BindBufferMemoryInfo<'_> { unsafe impl<'a> TaggedStructure for BindBufferMemoryInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BIND_BUFFER_MEMORY_INFO; } -pub unsafe trait ExtendsBindBufferMemoryInfo {} impl<'a> BindBufferMemoryInfo<'a> { #[inline] pub fn buffer(mut self, buffer: Buffer) -> Self { @@ -16032,7 +15948,7 @@ impl<'a> BindBufferMemoryInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsBindBufferMemoryInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -16056,10 +15972,7 @@ impl<'a> BindBufferMemoryInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsBindBufferMemoryInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -16067,10 +15980,7 @@ impl<'a> BindBufferMemoryInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsBindBufferMemoryInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -16103,7 +16013,10 @@ impl ::core::default::Default for BindBufferMemoryDeviceGroupInfo<'_> { unsafe impl<'a> TaggedStructure for BindBufferMemoryDeviceGroupInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO; } -unsafe impl ExtendsBindBufferMemoryInfo for BindBufferMemoryDeviceGroupInfo<'_> {} +unsafe impl<'root, 'child> Extends<BindBufferMemoryInfo<'root>> + for BindBufferMemoryDeviceGroupInfo<'child> +{ +} impl<'a> BindBufferMemoryDeviceGroupInfo<'a> { #[inline] pub fn device_indices(mut self, device_indices: &'a [u32]) -> Self { @@ -16143,7 +16056,6 @@ impl ::core::default::Default for BindImageMemoryInfo<'_> { unsafe impl<'a> TaggedStructure for BindImageMemoryInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BIND_IMAGE_MEMORY_INFO; } -pub unsafe trait ExtendsBindImageMemoryInfo {} impl<'a> BindImageMemoryInfo<'a> { #[inline] pub fn image(mut self, image: Image) -> Self { @@ -16169,7 +16081,7 @@ impl<'a> BindImageMemoryInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsBindImageMemoryInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -16193,10 +16105,7 @@ impl<'a> BindImageMemoryInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsBindImageMemoryInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -16204,7 +16113,7 @@ impl<'a> BindImageMemoryInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsBindImageMemoryInfo + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -16241,7 +16150,10 @@ impl ::core::default::Default for BindImageMemoryDeviceGroupInfo<'_> { unsafe impl<'a> TaggedStructure for BindImageMemoryDeviceGroupInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO; } -unsafe impl ExtendsBindImageMemoryInfo for BindImageMemoryDeviceGroupInfo<'_> {} +unsafe impl<'root, 'child> Extends<BindImageMemoryInfo<'root>> + for BindImageMemoryDeviceGroupInfo<'child> +{ +} impl<'a> BindImageMemoryDeviceGroupInfo<'a> { #[inline] pub fn device_indices(mut self, device_indices: &'a [u32]) -> Self { @@ -16290,8 +16202,14 @@ impl ::core::default::Default for DeviceGroupRenderPassBeginInfo<'_> { unsafe impl<'a> TaggedStructure for DeviceGroupRenderPassBeginInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEVICE_GROUP_RENDER_PASS_BEGIN_INFO; } -unsafe impl ExtendsRenderPassBeginInfo for DeviceGroupRenderPassBeginInfo<'_> {} -unsafe impl ExtendsRenderingInfo for DeviceGroupRenderPassBeginInfo<'_> {} +unsafe impl<'root, 'child> Extends<RenderPassBeginInfo<'root>> + for DeviceGroupRenderPassBeginInfo<'child> +{ +} +unsafe impl<'root, 'child> Extends<RenderingInfo<'root>> + for DeviceGroupRenderPassBeginInfo<'child> +{ +} impl<'a> DeviceGroupRenderPassBeginInfo<'a> { #[inline] pub fn device_mask(mut self, device_mask: u32) -> Self { @@ -16332,7 +16250,10 @@ impl ::core::default::Default for DeviceGroupCommandBufferBeginInfo<'_> { unsafe impl<'a> TaggedStructure for DeviceGroupCommandBufferBeginInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO; } -unsafe impl ExtendsCommandBufferBeginInfo for DeviceGroupCommandBufferBeginInfo<'_> {} +unsafe impl<'root, 'child> Extends<CommandBufferBeginInfo<'root>> + for DeviceGroupCommandBufferBeginInfo<'child> +{ +} impl<'a> DeviceGroupCommandBufferBeginInfo<'a> { #[inline] pub fn device_mask(mut self, device_mask: u32) -> Self { @@ -16377,7 +16298,7 @@ impl ::core::default::Default for DeviceGroupSubmitInfo<'_> { unsafe impl<'a> TaggedStructure for DeviceGroupSubmitInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEVICE_GROUP_SUBMIT_INFO; } -unsafe impl ExtendsSubmitInfo for DeviceGroupSubmitInfo<'_> {} +unsafe impl<'root, 'child> Extends<SubmitInfo<'root>> for DeviceGroupSubmitInfo<'child> {} impl<'a> DeviceGroupSubmitInfo<'a> { #[inline] pub fn wait_semaphore_device_indices( @@ -16433,7 +16354,7 @@ impl ::core::default::Default for DeviceGroupBindSparseInfo<'_> { unsafe impl<'a> TaggedStructure for DeviceGroupBindSparseInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEVICE_GROUP_BIND_SPARSE_INFO; } -unsafe impl ExtendsBindSparseInfo for DeviceGroupBindSparseInfo<'_> {} +unsafe impl<'root, 'child> Extends<BindSparseInfo<'root>> for DeviceGroupBindSparseInfo<'child> {} impl<'a> DeviceGroupBindSparseInfo<'a> { #[inline] pub fn resource_device_index(mut self, resource_device_index: u32) -> Self { @@ -16514,7 +16435,7 @@ impl ::core::default::Default for ImageSwapchainCreateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for ImageSwapchainCreateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_SWAPCHAIN_CREATE_INFO_KHR; } -unsafe impl ExtendsImageCreateInfo for ImageSwapchainCreateInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<ImageCreateInfo<'root>> for ImageSwapchainCreateInfoKHR<'child> {} impl<'a> ImageSwapchainCreateInfoKHR<'a> { #[inline] pub fn swapchain(mut self, swapchain: SwapchainKHR) -> Self { @@ -16551,7 +16472,10 @@ impl ::core::default::Default for BindImageMemorySwapchainInfoKHR<'_> { unsafe impl<'a> TaggedStructure for BindImageMemorySwapchainInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR; } -unsafe impl ExtendsBindImageMemoryInfo for BindImageMemorySwapchainInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<BindImageMemoryInfo<'root>> + for BindImageMemorySwapchainInfoKHR<'child> +{ +} impl<'a> BindImageMemorySwapchainInfoKHR<'a> { #[inline] pub fn swapchain(mut self, swapchain: SwapchainKHR) -> Self { @@ -16657,7 +16581,7 @@ impl ::core::default::Default for DeviceGroupPresentInfoKHR<'_> { unsafe impl<'a> TaggedStructure for DeviceGroupPresentInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEVICE_GROUP_PRESENT_INFO_KHR; } -unsafe impl ExtendsPresentInfoKHR for DeviceGroupPresentInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<PresentInfoKHR<'root>> for DeviceGroupPresentInfoKHR<'child> {} impl<'a> DeviceGroupPresentInfoKHR<'a> { #[inline] pub fn device_masks(mut self, device_masks: &'a [u32]) -> Self { @@ -16700,7 +16624,10 @@ impl ::core::default::Default for DeviceGroupDeviceCreateInfo<'_> { unsafe impl<'a> TaggedStructure for DeviceGroupDeviceCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEVICE_GROUP_DEVICE_CREATE_INFO; } -unsafe impl ExtendsDeviceCreateInfo for DeviceGroupDeviceCreateInfo<'_> {} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for DeviceGroupDeviceCreateInfo<'child> +{ +} impl<'a> DeviceGroupDeviceCreateInfo<'a> { #[inline] pub fn physical_devices(mut self, physical_devices: &'a [PhysicalDevice]) -> Self { @@ -16736,7 +16663,10 @@ impl ::core::default::Default for DeviceGroupSwapchainCreateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for DeviceGroupSwapchainCreateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR; } -unsafe impl ExtendsSwapchainCreateInfoKHR for DeviceGroupSwapchainCreateInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<SwapchainCreateInfoKHR<'root>> + for DeviceGroupSwapchainCreateInfoKHR<'child> +{ +} impl<'a> DeviceGroupSwapchainCreateInfoKHR<'a> { #[inline] pub fn modes(mut self, modes: DeviceGroupPresentModeFlagsKHR) -> Self { @@ -16919,8 +16849,14 @@ impl ::core::default::Default for PhysicalDevicePresentIdFeaturesKHR<'_> { unsafe impl<'a> TaggedStructure for PhysicalDevicePresentIdFeaturesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePresentIdFeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePresentIdFeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDevicePresentIdFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDevicePresentIdFeaturesKHR<'child> +{ +} impl<'a> PhysicalDevicePresentIdFeaturesKHR<'a> { #[inline] pub fn present_id(mut self, present_id: bool) -> Self { @@ -16957,7 +16893,7 @@ impl ::core::default::Default for PresentIdKHR<'_> { unsafe impl<'a> TaggedStructure for PresentIdKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PRESENT_ID_KHR; } -unsafe impl ExtendsPresentInfoKHR for PresentIdKHR<'_> {} +unsafe impl<'root, 'child> Extends<PresentInfoKHR<'root>> for PresentIdKHR<'child> {} impl<'a> PresentIdKHR<'a> { #[inline] pub fn present_ids(mut self, present_ids: &'a [u64]) -> Self { @@ -16993,8 +16929,14 @@ impl ::core::default::Default for PhysicalDevicePresentWaitFeaturesKHR<'_> { unsafe impl<'a> TaggedStructure for PhysicalDevicePresentWaitFeaturesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePresentWaitFeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePresentWaitFeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDevicePresentWaitFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDevicePresentWaitFeaturesKHR<'child> +{ +} impl<'a> PhysicalDevicePresentWaitFeaturesKHR<'a> { #[inline] pub fn present_wait(mut self, present_wait: bool) -> Self { @@ -17113,7 +17055,10 @@ unsafe impl<'a> TaggedStructure for DisplayNativeHdrSurfaceCapabilitiesAMD<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD; } -unsafe impl ExtendsSurfaceCapabilities2KHR for DisplayNativeHdrSurfaceCapabilitiesAMD<'_> {} +unsafe impl<'root, 'child> Extends<SurfaceCapabilities2KHR<'root>> + for DisplayNativeHdrSurfaceCapabilitiesAMD<'child> +{ +} impl<'a> DisplayNativeHdrSurfaceCapabilitiesAMD<'a> { #[inline] pub fn local_dimming_support(mut self, local_dimming_support: bool) -> Self { @@ -17149,7 +17094,10 @@ unsafe impl<'a> TaggedStructure for SwapchainDisplayNativeHdrCreateInfoAMD<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD; } -unsafe impl ExtendsSwapchainCreateInfoKHR for SwapchainDisplayNativeHdrCreateInfoAMD<'_> {} +unsafe impl<'root, 'child> Extends<SwapchainCreateInfoKHR<'root>> + for SwapchainDisplayNativeHdrCreateInfoAMD<'child> +{ +} impl<'a> SwapchainDisplayNativeHdrCreateInfoAMD<'a> { #[inline] pub fn local_dimming_enable(mut self, local_dimming_enable: bool) -> Self { @@ -17240,7 +17188,7 @@ impl ::core::default::Default for PresentTimesInfoGOOGLE<'_> { unsafe impl<'a> TaggedStructure for PresentTimesInfoGOOGLE<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PRESENT_TIMES_INFO_GOOGLE; } -unsafe impl ExtendsPresentInfoKHR for PresentTimesInfoGOOGLE<'_> {} +unsafe impl<'root, 'child> Extends<PresentInfoKHR<'root>> for PresentTimesInfoGOOGLE<'child> {} impl<'a> PresentTimesInfoGOOGLE<'a> { #[inline] pub fn times(mut self, times: &'a [PresentTimeGOOGLE]) -> Self { @@ -17446,8 +17394,8 @@ unsafe impl<'a> TaggedStructure for PipelineViewportWScalingStateCreateInfoNV<'a const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV; } -unsafe impl ExtendsPipelineViewportStateCreateInfo - for PipelineViewportWScalingStateCreateInfoNV<'_> +unsafe impl<'root, 'child> Extends<PipelineViewportStateCreateInfo<'root>> + for PipelineViewportWScalingStateCreateInfoNV<'child> { } impl<'a> PipelineViewportWScalingStateCreateInfoNV<'a> { @@ -17528,8 +17476,8 @@ unsafe impl<'a> TaggedStructure for PipelineViewportSwizzleStateCreateInfoNV<'a> const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV; } -unsafe impl ExtendsPipelineViewportStateCreateInfo - for PipelineViewportSwizzleStateCreateInfoNV<'_> +unsafe impl<'root, 'child> Extends<PipelineViewportStateCreateInfo<'root>> + for PipelineViewportSwizzleStateCreateInfoNV<'child> { } impl<'a> PipelineViewportSwizzleStateCreateInfoNV<'a> { @@ -17573,7 +17521,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDiscardRectanglePropertiesEXT< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDiscardRectanglePropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceDiscardRectanglePropertiesEXT<'child> +{ +} impl<'a> PhysicalDeviceDiscardRectanglePropertiesEXT<'a> { #[inline] pub fn max_discard_rectangles(mut self, max_discard_rectangles: u32) -> Self { @@ -17615,7 +17566,10 @@ unsafe impl<'a> TaggedStructure for PipelineDiscardRectangleStateCreateInfoEXT<' const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT; } -unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineDiscardRectangleStateCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<GraphicsPipelineCreateInfo<'root>> + for PipelineDiscardRectangleStateCreateInfoEXT<'child> +{ +} impl<'a> PipelineDiscardRectangleStateCreateInfoEXT<'a> { #[inline] pub fn flags(mut self, flags: PipelineDiscardRectangleStateCreateFlagsEXT) -> Self { @@ -17665,8 +17619,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceMultiviewPerViewAttributesProp const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX<'child> { } impl<'a> PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX<'a> { @@ -17736,7 +17690,10 @@ unsafe impl<'a> TaggedStructure for RenderPassInputAttachmentAspectCreateInfo<'a const STRUCTURE_TYPE: StructureType = StructureType::RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO; } -unsafe impl ExtendsRenderPassCreateInfo for RenderPassInputAttachmentAspectCreateInfo<'_> {} +unsafe impl<'root, 'child> Extends<RenderPassCreateInfo<'root>> + for RenderPassInputAttachmentAspectCreateInfo<'child> +{ +} impl<'a> RenderPassInputAttachmentAspectCreateInfo<'a> { #[inline] pub fn aspect_references( @@ -17775,7 +17732,6 @@ impl ::core::default::Default for PhysicalDeviceSurfaceInfo2KHR<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceSurfaceInfo2KHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SURFACE_INFO_2_KHR; } -pub unsafe trait ExtendsPhysicalDeviceSurfaceInfo2KHR {} impl<'a> PhysicalDeviceSurfaceInfo2KHR<'a> { #[inline] pub fn surface(mut self, surface: SurfaceKHR) -> Self { @@ -17791,10 +17747,7 @@ impl<'a> PhysicalDeviceSurfaceInfo2KHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsPhysicalDeviceSurfaceInfo2KHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -17818,10 +17771,7 @@ impl<'a> PhysicalDeviceSurfaceInfo2KHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsPhysicalDeviceSurfaceInfo2KHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -17829,10 +17779,7 @@ impl<'a> PhysicalDeviceSurfaceInfo2KHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsPhysicalDeviceSurfaceInfo2KHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -17863,7 +17810,6 @@ impl ::core::default::Default for SurfaceCapabilities2KHR<'_> { unsafe impl<'a> TaggedStructure for SurfaceCapabilities2KHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SURFACE_CAPABILITIES_2_KHR; } -pub unsafe trait ExtendsSurfaceCapabilities2KHR {} impl<'a> SurfaceCapabilities2KHR<'a> { #[inline] pub fn surface_capabilities(mut self, surface_capabilities: SurfaceCapabilitiesKHR) -> Self { @@ -17879,7 +17825,7 @@ impl<'a> SurfaceCapabilities2KHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsSurfaceCapabilities2KHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -17903,10 +17849,7 @@ impl<'a> SurfaceCapabilities2KHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsSurfaceCapabilities2KHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -17914,10 +17857,7 @@ impl<'a> SurfaceCapabilities2KHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsSurfaceCapabilities2KHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -17948,7 +17888,6 @@ impl ::core::default::Default for SurfaceFormat2KHR<'_> { unsafe impl<'a> TaggedStructure for SurfaceFormat2KHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SURFACE_FORMAT_2_KHR; } -pub unsafe trait ExtendsSurfaceFormat2KHR {} impl<'a> SurfaceFormat2KHR<'a> { #[inline] pub fn surface_format(mut self, surface_format: SurfaceFormatKHR) -> Self { @@ -17964,7 +17903,7 @@ impl<'a> SurfaceFormat2KHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsSurfaceFormat2KHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -17988,7 +17927,7 @@ impl<'a> SurfaceFormat2KHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsSurfaceFormat2KHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -17996,7 +17935,7 @@ impl<'a> SurfaceFormat2KHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsSurfaceFormat2KHR + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -18210,7 +18149,10 @@ impl ::core::default::Default for SharedPresentSurfaceCapabilitiesKHR<'_> { unsafe impl<'a> TaggedStructure for SharedPresentSurfaceCapabilitiesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SHARED_PRESENT_SURFACE_CAPABILITIES_KHR; } -unsafe impl ExtendsSurfaceCapabilities2KHR for SharedPresentSurfaceCapabilitiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<SurfaceCapabilities2KHR<'root>> + for SharedPresentSurfaceCapabilitiesKHR<'child> +{ +} impl<'a> SharedPresentSurfaceCapabilitiesKHR<'a> { #[inline] pub fn shared_present_supported_usage_flags( @@ -18254,8 +18196,14 @@ impl ::core::default::Default for PhysicalDevice16BitStorageFeatures<'_> { unsafe impl<'a> TaggedStructure for PhysicalDevice16BitStorageFeatures<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevice16BitStorageFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDevice16BitStorageFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDevice16BitStorageFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDevice16BitStorageFeatures<'child> +{ +} impl<'a> PhysicalDevice16BitStorageFeatures<'a> { #[inline] pub fn storage_buffer16_bit_access(mut self, storage_buffer16_bit_access: bool) -> Self { @@ -18315,7 +18263,10 @@ impl ::core::default::Default for PhysicalDeviceSubgroupProperties<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceSubgroupProperties<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SUBGROUP_PROPERTIES; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceSubgroupProperties<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceSubgroupProperties<'child> +{ +} impl<'a> PhysicalDeviceSubgroupProperties<'a> { #[inline] pub fn subgroup_size(mut self, subgroup_size: u32) -> Self { @@ -18366,11 +18317,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderSubgroupExtendedTypesFea const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceShaderSubgroupExtendedTypesFeatures<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderSubgroupExtendedTypesFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderSubgroupExtendedTypesFeatures<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderSubgroupExtendedTypesFeatures<'_> {} impl<'a> PhysicalDeviceShaderSubgroupExtendedTypesFeatures<'a> { #[inline] pub fn shader_subgroup_extended_types(mut self, shader_subgroup_extended_types: bool) -> Self { @@ -18473,7 +18427,6 @@ impl ::core::default::Default for ImageMemoryRequirementsInfo2<'_> { unsafe impl<'a> TaggedStructure for ImageMemoryRequirementsInfo2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_MEMORY_REQUIREMENTS_INFO_2; } -pub unsafe trait ExtendsImageMemoryRequirementsInfo2 {} impl<'a> ImageMemoryRequirementsInfo2<'a> { #[inline] pub fn image(mut self, image: Image) -> Self { @@ -18489,10 +18442,7 @@ impl<'a> ImageMemoryRequirementsInfo2<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsImageMemoryRequirementsInfo2 + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -18516,10 +18466,7 @@ impl<'a> ImageMemoryRequirementsInfo2<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsImageMemoryRequirementsInfo2 + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -18527,10 +18474,7 @@ impl<'a> ImageMemoryRequirementsInfo2<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsImageMemoryRequirementsInfo2 + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -18636,7 +18580,6 @@ impl ::core::default::Default for MemoryRequirements2<'_> { unsafe impl<'a> TaggedStructure for MemoryRequirements2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::MEMORY_REQUIREMENTS_2; } -pub unsafe trait ExtendsMemoryRequirements2 {} impl<'a> MemoryRequirements2<'a> { #[inline] pub fn memory_requirements(mut self, memory_requirements: MemoryRequirements) -> Self { @@ -18652,7 +18595,7 @@ impl<'a> MemoryRequirements2<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsMemoryRequirements2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -18676,10 +18619,7 @@ impl<'a> MemoryRequirements2<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsMemoryRequirements2 + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -18687,7 +18627,7 @@ impl<'a> MemoryRequirements2<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsMemoryRequirements2 + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -18755,7 +18695,10 @@ impl ::core::default::Default for PhysicalDevicePointClippingProperties<'_> { unsafe impl<'a> TaggedStructure for PhysicalDevicePointClippingProperties<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDevicePointClippingProperties<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDevicePointClippingProperties<'child> +{ +} impl<'a> PhysicalDevicePointClippingProperties<'a> { #[inline] pub fn point_clipping_behavior( @@ -18795,7 +18738,10 @@ impl ::core::default::Default for MemoryDedicatedRequirements<'_> { unsafe impl<'a> TaggedStructure for MemoryDedicatedRequirements<'a> { const STRUCTURE_TYPE: StructureType = StructureType::MEMORY_DEDICATED_REQUIREMENTS; } -unsafe impl ExtendsMemoryRequirements2 for MemoryDedicatedRequirements<'_> {} +unsafe impl<'root, 'child> Extends<MemoryRequirements2<'root>> + for MemoryDedicatedRequirements<'child> +{ +} impl<'a> MemoryDedicatedRequirements<'a> { #[inline] pub fn prefers_dedicated_allocation(mut self, prefers_dedicated_allocation: bool) -> Self { @@ -18837,7 +18783,10 @@ impl ::core::default::Default for MemoryDedicatedAllocateInfo<'_> { unsafe impl<'a> TaggedStructure for MemoryDedicatedAllocateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::MEMORY_DEDICATED_ALLOCATE_INFO; } -unsafe impl ExtendsMemoryAllocateInfo for MemoryDedicatedAllocateInfo<'_> {} +unsafe impl<'root, 'child> Extends<MemoryAllocateInfo<'root>> + for MemoryDedicatedAllocateInfo<'child> +{ +} impl<'a> MemoryDedicatedAllocateInfo<'a> { #[inline] pub fn image(mut self, image: Image) -> Self { @@ -18877,7 +18826,10 @@ impl ::core::default::Default for ImageViewUsageCreateInfo<'_> { unsafe impl<'a> TaggedStructure for ImageViewUsageCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_VIEW_USAGE_CREATE_INFO; } -unsafe impl ExtendsImageViewCreateInfo for ImageViewUsageCreateInfo<'_> {} +unsafe impl<'root, 'child> Extends<ImageViewCreateInfo<'root>> + for ImageViewUsageCreateInfo<'child> +{ +} impl<'a> ImageViewUsageCreateInfo<'a> { #[inline] pub fn usage(mut self, usage: ImageUsageFlags) -> Self { @@ -18914,7 +18866,10 @@ impl ::core::default::Default for ImageViewSlicedCreateInfoEXT<'_> { unsafe impl<'a> TaggedStructure for ImageViewSlicedCreateInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_VIEW_SLICED_CREATE_INFO_EXT; } -unsafe impl ExtendsImageViewCreateInfo for ImageViewSlicedCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<ImageViewCreateInfo<'root>> + for ImageViewSlicedCreateInfoEXT<'child> +{ +} impl<'a> ImageViewSlicedCreateInfoEXT<'a> { #[inline] pub fn slice_offset(mut self, slice_offset: u32) -> Self { @@ -18955,8 +18910,8 @@ unsafe impl<'a> TaggedStructure for PipelineTessellationDomainOriginStateCreateI const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO; } -unsafe impl ExtendsPipelineTessellationStateCreateInfo - for PipelineTessellationDomainOriginStateCreateInfo<'_> +unsafe impl<'root, 'child> Extends<PipelineTessellationStateCreateInfo<'root>> + for PipelineTessellationDomainOriginStateCreateInfo<'child> { } impl<'a> PipelineTessellationDomainOriginStateCreateInfo<'a> { @@ -18993,8 +18948,14 @@ impl ::core::default::Default for SamplerYcbcrConversionInfo<'_> { unsafe impl<'a> TaggedStructure for SamplerYcbcrConversionInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SAMPLER_YCBCR_CONVERSION_INFO; } -unsafe impl ExtendsSamplerCreateInfo for SamplerYcbcrConversionInfo<'_> {} -unsafe impl ExtendsImageViewCreateInfo for SamplerYcbcrConversionInfo<'_> {} +unsafe impl<'root, 'child> Extends<SamplerCreateInfo<'root>> + for SamplerYcbcrConversionInfo<'child> +{ +} +unsafe impl<'root, 'child> Extends<ImageViewCreateInfo<'root>> + for SamplerYcbcrConversionInfo<'child> +{ +} impl<'a> SamplerYcbcrConversionInfo<'a> { #[inline] pub fn conversion(mut self, conversion: SamplerYcbcrConversion) -> Self { @@ -19043,7 +19004,6 @@ impl ::core::default::Default for SamplerYcbcrConversionCreateInfo<'_> { unsafe impl<'a> TaggedStructure for SamplerYcbcrConversionCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SAMPLER_YCBCR_CONVERSION_CREATE_INFO; } -pub unsafe trait ExtendsSamplerYcbcrConversionCreateInfo {} impl<'a> SamplerYcbcrConversionCreateInfo<'a> { #[inline] pub fn format(mut self, format: Format) -> Self { @@ -19094,10 +19054,7 @@ impl<'a> SamplerYcbcrConversionCreateInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsSamplerYcbcrConversionCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -19121,10 +19078,7 @@ impl<'a> SamplerYcbcrConversionCreateInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsSamplerYcbcrConversionCreateInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -19132,10 +19086,7 @@ impl<'a> SamplerYcbcrConversionCreateInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsSamplerYcbcrConversionCreateInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -19166,7 +19117,10 @@ impl ::core::default::Default for BindImagePlaneMemoryInfo<'_> { unsafe impl<'a> TaggedStructure for BindImagePlaneMemoryInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BIND_IMAGE_PLANE_MEMORY_INFO; } -unsafe impl ExtendsBindImageMemoryInfo for BindImagePlaneMemoryInfo<'_> {} +unsafe impl<'root, 'child> Extends<BindImageMemoryInfo<'root>> + for BindImagePlaneMemoryInfo<'child> +{ +} impl<'a> BindImagePlaneMemoryInfo<'a> { #[inline] pub fn plane_aspect(mut self, plane_aspect: ImageAspectFlags) -> Self { @@ -19201,7 +19155,10 @@ impl ::core::default::Default for ImagePlaneMemoryRequirementsInfo<'_> { unsafe impl<'a> TaggedStructure for ImagePlaneMemoryRequirementsInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO; } -unsafe impl ExtendsImageMemoryRequirementsInfo2 for ImagePlaneMemoryRequirementsInfo<'_> {} +unsafe impl<'root, 'child> Extends<ImageMemoryRequirementsInfo2<'root>> + for ImagePlaneMemoryRequirementsInfo<'child> +{ +} impl<'a> ImagePlaneMemoryRequirementsInfo<'a> { #[inline] pub fn plane_aspect(mut self, plane_aspect: ImageAspectFlags) -> Self { @@ -19237,8 +19194,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceSamplerYcbcrConversionFeatures const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceSamplerYcbcrConversionFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSamplerYcbcrConversionFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceSamplerYcbcrConversionFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceSamplerYcbcrConversionFeatures<'child> +{ +} impl<'a> PhysicalDeviceSamplerYcbcrConversionFeatures<'a> { #[inline] pub fn sampler_ycbcr_conversion(mut self, sampler_ycbcr_conversion: bool) -> Self { @@ -19274,7 +19237,10 @@ unsafe impl<'a> TaggedStructure for SamplerYcbcrConversionImageFormatProperties< const STRUCTURE_TYPE: StructureType = StructureType::SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES; } -unsafe impl ExtendsImageFormatProperties2 for SamplerYcbcrConversionImageFormatProperties<'_> {} +unsafe impl<'root, 'child> Extends<ImageFormatProperties2<'root>> + for SamplerYcbcrConversionImageFormatProperties<'child> +{ +} impl<'a> SamplerYcbcrConversionImageFormatProperties<'a> { #[inline] pub fn combined_image_sampler_descriptor_count( @@ -19312,7 +19278,10 @@ impl ::core::default::Default for TextureLODGatherFormatPropertiesAMD<'_> { unsafe impl<'a> TaggedStructure for TextureLODGatherFormatPropertiesAMD<'a> { const STRUCTURE_TYPE: StructureType = StructureType::TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD; } -unsafe impl ExtendsImageFormatProperties2 for TextureLODGatherFormatPropertiesAMD<'_> {} +unsafe impl<'root, 'child> Extends<ImageFormatProperties2<'root>> + for TextureLODGatherFormatPropertiesAMD<'child> +{ +} impl<'a> TextureLODGatherFormatPropertiesAMD<'a> { #[inline] pub fn supports_texture_gather_lod_bias_amd( @@ -19398,7 +19367,7 @@ impl ::core::default::Default for ProtectedSubmitInfo<'_> { unsafe impl<'a> TaggedStructure for ProtectedSubmitInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PROTECTED_SUBMIT_INFO; } -unsafe impl ExtendsSubmitInfo for ProtectedSubmitInfo<'_> {} +unsafe impl<'root, 'child> Extends<SubmitInfo<'root>> for ProtectedSubmitInfo<'child> {} impl<'a> ProtectedSubmitInfo<'a> { #[inline] pub fn protected_submit(mut self, protected_submit: bool) -> Self { @@ -19433,8 +19402,14 @@ impl ::core::default::Default for PhysicalDeviceProtectedMemoryFeatures<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceProtectedMemoryFeatures<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceProtectedMemoryFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceProtectedMemoryFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceProtectedMemoryFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceProtectedMemoryFeatures<'child> +{ +} impl<'a> PhysicalDeviceProtectedMemoryFeatures<'a> { #[inline] pub fn protected_memory(mut self, protected_memory: bool) -> Self { @@ -19470,7 +19445,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceProtectedMemoryProperties<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceProtectedMemoryProperties<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceProtectedMemoryProperties<'child> +{ +} impl<'a> PhysicalDeviceProtectedMemoryProperties<'a> { #[inline] pub fn protected_no_fault(mut self, protected_no_fault: bool) -> Self { @@ -19558,8 +19536,8 @@ unsafe impl<'a> TaggedStructure for PipelineCoverageToColorStateCreateInfoNV<'a> const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV; } -unsafe impl ExtendsPipelineMultisampleStateCreateInfo - for PipelineCoverageToColorStateCreateInfoNV<'_> +unsafe impl<'root, 'child> Extends<PipelineMultisampleStateCreateInfo<'root>> + for PipelineCoverageToColorStateCreateInfoNV<'child> { } impl<'a> PipelineCoverageToColorStateCreateInfoNV<'a> { @@ -19609,7 +19587,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceSamplerFilterMinmaxProperties< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceSamplerFilterMinmaxProperties<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceSamplerFilterMinmaxProperties<'child> +{ +} impl<'a> PhysicalDeviceSamplerFilterMinmaxProperties<'a> { #[inline] pub fn filter_minmax_single_component_formats( @@ -19682,8 +19663,8 @@ impl ::core::default::Default for SampleLocationsInfoEXT<'_> { unsafe impl<'a> TaggedStructure for SampleLocationsInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SAMPLE_LOCATIONS_INFO_EXT; } -unsafe impl ExtendsImageMemoryBarrier for SampleLocationsInfoEXT<'_> {} -unsafe impl ExtendsImageMemoryBarrier2 for SampleLocationsInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<ImageMemoryBarrier<'root>> for SampleLocationsInfoEXT<'child> {} +unsafe impl<'root, 'child> Extends<ImageMemoryBarrier2<'root>> for SampleLocationsInfoEXT<'child> {} impl<'a> SampleLocationsInfoEXT<'a> { #[inline] pub fn sample_locations_per_pixel( @@ -19789,7 +19770,10 @@ unsafe impl<'a> TaggedStructure for RenderPassSampleLocationsBeginInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT; } -unsafe impl ExtendsRenderPassBeginInfo for RenderPassSampleLocationsBeginInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<RenderPassBeginInfo<'root>> + for RenderPassSampleLocationsBeginInfoEXT<'child> +{ +} impl<'a> RenderPassSampleLocationsBeginInfoEXT<'a> { #[inline] pub fn attachment_initial_sample_locations( @@ -19841,8 +19825,8 @@ unsafe impl<'a> TaggedStructure for PipelineSampleLocationsStateCreateInfoEXT<'a const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT; } -unsafe impl ExtendsPipelineMultisampleStateCreateInfo - for PipelineSampleLocationsStateCreateInfoEXT<'_> +unsafe impl<'root, 'child> Extends<PipelineMultisampleStateCreateInfo<'root>> + for PipelineSampleLocationsStateCreateInfoEXT<'child> { } impl<'a> PipelineSampleLocationsStateCreateInfoEXT<'a> { @@ -19896,7 +19880,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceSampleLocationsPropertiesEXT<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceSampleLocationsPropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceSampleLocationsPropertiesEXT<'child> +{ +} impl<'a> PhysicalDeviceSampleLocationsPropertiesEXT<'a> { #[inline] pub fn sample_location_sample_counts( @@ -19997,7 +19984,10 @@ impl ::core::default::Default for SamplerReductionModeCreateInfo<'_> { unsafe impl<'a> TaggedStructure for SamplerReductionModeCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SAMPLER_REDUCTION_MODE_CREATE_INFO; } -unsafe impl ExtendsSamplerCreateInfo for SamplerReductionModeCreateInfo<'_> {} +unsafe impl<'root, 'child> Extends<SamplerCreateInfo<'root>> + for SamplerReductionModeCreateInfo<'child> +{ +} impl<'a> SamplerReductionModeCreateInfo<'a> { #[inline] pub fn reduction_mode(mut self, reduction_mode: SamplerReductionMode) -> Self { @@ -20033,8 +20023,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceBlendOperationAdvancedFeatures const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceBlendOperationAdvancedFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceBlendOperationAdvancedFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceBlendOperationAdvancedFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceBlendOperationAdvancedFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceBlendOperationAdvancedFeaturesEXT<'a> { #[inline] pub fn advanced_blend_coherent_operations( @@ -20072,8 +20068,14 @@ impl ::core::default::Default for PhysicalDeviceMultiDrawFeaturesEXT<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceMultiDrawFeaturesEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMultiDrawFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMultiDrawFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceMultiDrawFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceMultiDrawFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceMultiDrawFeaturesEXT<'a> { #[inline] pub fn multi_draw(mut self, multi_draw: bool) -> Self { @@ -20119,8 +20121,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceBlendOperationAdvancedProperti const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceBlendOperationAdvancedPropertiesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceBlendOperationAdvancedPropertiesEXT<'child> { } impl<'a> PhysicalDeviceBlendOperationAdvancedPropertiesEXT<'a> { @@ -20204,8 +20206,8 @@ unsafe impl<'a> TaggedStructure for PipelineColorBlendAdvancedStateCreateInfoEXT const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT; } -unsafe impl ExtendsPipelineColorBlendStateCreateInfo - for PipelineColorBlendAdvancedStateCreateInfoEXT<'_> +unsafe impl<'root, 'child> Extends<PipelineColorBlendStateCreateInfo<'root>> + for PipelineColorBlendAdvancedStateCreateInfoEXT<'child> { } impl<'a> PipelineColorBlendAdvancedStateCreateInfoEXT<'a> { @@ -20255,8 +20257,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceInlineUniformBlockFeatures<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceInlineUniformBlockFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceInlineUniformBlockFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceInlineUniformBlockFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceInlineUniformBlockFeatures<'child> +{ +} impl<'a> PhysicalDeviceInlineUniformBlockFeatures<'a> { #[inline] pub fn inline_uniform_block(mut self, inline_uniform_block: bool) -> Self { @@ -20309,7 +20317,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceInlineUniformBlockProperties<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceInlineUniformBlockProperties<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceInlineUniformBlockProperties<'child> +{ +} impl<'a> PhysicalDeviceInlineUniformBlockProperties<'a> { #[inline] pub fn max_inline_uniform_block_size(mut self, max_inline_uniform_block_size: u32) -> Self { @@ -20381,7 +20392,10 @@ impl ::core::default::Default for WriteDescriptorSetInlineUniformBlock<'_> { unsafe impl<'a> TaggedStructure for WriteDescriptorSetInlineUniformBlock<'a> { const STRUCTURE_TYPE: StructureType = StructureType::WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK; } -unsafe impl ExtendsWriteDescriptorSet for WriteDescriptorSetInlineUniformBlock<'_> {} +unsafe impl<'root, 'child> Extends<WriteDescriptorSet<'root>> + for WriteDescriptorSetInlineUniformBlock<'child> +{ +} impl<'a> WriteDescriptorSetInlineUniformBlock<'a> { #[inline] pub fn data(mut self, data: &'a [u8]) -> Self { @@ -20418,7 +20432,10 @@ unsafe impl<'a> TaggedStructure for DescriptorPoolInlineUniformBlockCreateInfo<' const STRUCTURE_TYPE: StructureType = StructureType::DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO; } -unsafe impl ExtendsDescriptorPoolCreateInfo for DescriptorPoolInlineUniformBlockCreateInfo<'_> {} +unsafe impl<'root, 'child> Extends<DescriptorPoolCreateInfo<'root>> + for DescriptorPoolInlineUniformBlockCreateInfo<'child> +{ +} impl<'a> DescriptorPoolInlineUniformBlockCreateInfo<'a> { #[inline] pub fn max_inline_uniform_block_bindings( @@ -20465,8 +20482,8 @@ unsafe impl<'a> TaggedStructure for PipelineCoverageModulationStateCreateInfoNV< const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV; } -unsafe impl ExtendsPipelineMultisampleStateCreateInfo - for PipelineCoverageModulationStateCreateInfoNV<'_> +unsafe impl<'root, 'child> Extends<PipelineMultisampleStateCreateInfo<'root>> + for PipelineCoverageModulationStateCreateInfoNV<'child> { } impl<'a> PipelineCoverageModulationStateCreateInfoNV<'a> { @@ -20527,9 +20544,15 @@ impl ::core::default::Default for ImageFormatListCreateInfo<'_> { unsafe impl<'a> TaggedStructure for ImageFormatListCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_FORMAT_LIST_CREATE_INFO; } -unsafe impl ExtendsImageCreateInfo for ImageFormatListCreateInfo<'_> {} -unsafe impl ExtendsSwapchainCreateInfoKHR for ImageFormatListCreateInfo<'_> {} -unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 for ImageFormatListCreateInfo<'_> {} +unsafe impl<'root, 'child> Extends<ImageCreateInfo<'root>> for ImageFormatListCreateInfo<'child> {} +unsafe impl<'root, 'child> Extends<SwapchainCreateInfoKHR<'root>> + for ImageFormatListCreateInfo<'child> +{ +} +unsafe impl<'root, 'child> Extends<PhysicalDeviceImageFormatInfo2<'root>> + for ImageFormatListCreateInfo<'child> +{ +} impl<'a> ImageFormatListCreateInfo<'a> { #[inline] pub fn view_formats(mut self, view_formats: &'a [Format]) -> Self { @@ -20610,8 +20633,14 @@ unsafe impl<'a> TaggedStructure for ShaderModuleValidationCacheCreateInfoEXT<'a> const STRUCTURE_TYPE: StructureType = StructureType::SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT; } -unsafe impl ExtendsShaderModuleCreateInfo for ShaderModuleValidationCacheCreateInfoEXT<'_> {} -unsafe impl ExtendsPipelineShaderStageCreateInfo for ShaderModuleValidationCacheCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<ShaderModuleCreateInfo<'root>> + for ShaderModuleValidationCacheCreateInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<PipelineShaderStageCreateInfo<'root>> + for ShaderModuleValidationCacheCreateInfoEXT<'child> +{ +} impl<'a> ShaderModuleValidationCacheCreateInfoEXT<'a> { #[inline] pub fn validation_cache(mut self, validation_cache: ValidationCacheEXT) -> Self { @@ -20648,7 +20677,10 @@ impl ::core::default::Default for PhysicalDeviceMaintenance3Properties<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceMaintenance3Properties<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMaintenance3Properties<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceMaintenance3Properties<'child> +{ +} impl<'a> PhysicalDeviceMaintenance3Properties<'a> { #[inline] pub fn max_per_set_descriptors(mut self, max_per_set_descriptors: u32) -> Self { @@ -20688,8 +20720,14 @@ impl ::core::default::Default for PhysicalDeviceMaintenance4Features<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceMaintenance4Features<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMaintenance4Features<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMaintenance4Features<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceMaintenance4Features<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceMaintenance4Features<'child> +{ +} impl<'a> PhysicalDeviceMaintenance4Features<'a> { #[inline] pub fn maintenance4(mut self, maintenance4: bool) -> Self { @@ -20724,7 +20762,10 @@ impl ::core::default::Default for PhysicalDeviceMaintenance4Properties<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceMaintenance4Properties<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMaintenance4Properties<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceMaintenance4Properties<'child> +{ +} impl<'a> PhysicalDeviceMaintenance4Properties<'a> { #[inline] pub fn max_buffer_size(mut self, max_buffer_size: DeviceSize) -> Self { @@ -20759,8 +20800,14 @@ impl ::core::default::Default for PhysicalDeviceMaintenance5FeaturesKHR<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceMaintenance5FeaturesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMaintenance5FeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMaintenance5FeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceMaintenance5FeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceMaintenance5FeaturesKHR<'child> +{ +} impl<'a> PhysicalDeviceMaintenance5FeaturesKHR<'a> { #[inline] pub fn maintenance5(mut self, maintenance5: bool) -> Self { @@ -20806,7 +20853,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceMaintenance5PropertiesKHR<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMaintenance5PropertiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceMaintenance5PropertiesKHR<'child> +{ +} impl<'a> PhysicalDeviceMaintenance5PropertiesKHR<'a> { #[inline] pub fn early_fragment_multisample_coverage_after_sample_counting( @@ -20885,8 +20935,14 @@ impl ::core::default::Default for PhysicalDeviceMaintenance6FeaturesKHR<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceMaintenance6FeaturesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMaintenance6FeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMaintenance6FeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceMaintenance6FeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceMaintenance6FeaturesKHR<'child> +{ +} impl<'a> PhysicalDeviceMaintenance6FeaturesKHR<'a> { #[inline] pub fn maintenance6(mut self, maintenance6: bool) -> Self { @@ -20926,7 +20982,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceMaintenance6PropertiesKHR<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMaintenance6PropertiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceMaintenance6PropertiesKHR<'child> +{ +} impl<'a> PhysicalDeviceMaintenance6PropertiesKHR<'a> { #[inline] pub fn block_texel_view_compatible_multiple_layers( @@ -20983,8 +21042,14 @@ impl ::core::default::Default for PhysicalDeviceMaintenance7FeaturesKHR<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceMaintenance7FeaturesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMaintenance7FeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMaintenance7FeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceMaintenance7FeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceMaintenance7FeaturesKHR<'child> +{ +} impl<'a> PhysicalDeviceMaintenance7FeaturesKHR<'a> { #[inline] pub fn maintenance7(mut self, maintenance7: bool) -> Self { @@ -21034,7 +21099,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceMaintenance7PropertiesKHR<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMaintenance7PropertiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceMaintenance7PropertiesKHR<'child> +{ +} impl<'a> PhysicalDeviceMaintenance7PropertiesKHR<'a> { #[inline] pub fn robust_fragment_shading_rate_attachment_access( @@ -21138,7 +21206,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceLayeredApiPropertiesListKHR<'a const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceLayeredApiPropertiesListKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceLayeredApiPropertiesListKHR<'child> +{ +} impl<'a> PhysicalDeviceLayeredApiPropertiesListKHR<'a> { #[inline] pub fn layered_apis( @@ -21195,7 +21266,6 @@ impl ::core::default::Default for PhysicalDeviceLayeredApiPropertiesKHR<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceLayeredApiPropertiesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR; } -pub unsafe trait ExtendsPhysicalDeviceLayeredApiPropertiesKHR {} impl<'a> PhysicalDeviceLayeredApiPropertiesKHR<'a> { #[inline] pub fn vendor_id(mut self, vendor_id: u32) -> Self { @@ -21232,10 +21302,7 @@ impl<'a> PhysicalDeviceLayeredApiPropertiesKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsPhysicalDeviceLayeredApiPropertiesKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -21259,10 +21326,7 @@ impl<'a> PhysicalDeviceLayeredApiPropertiesKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsPhysicalDeviceLayeredApiPropertiesKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -21270,10 +21334,7 @@ impl<'a> PhysicalDeviceLayeredApiPropertiesKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsPhysicalDeviceLayeredApiPropertiesKHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -21305,8 +21366,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceLayeredApiVulkanPropertiesKHR< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR; } -unsafe impl ExtendsPhysicalDeviceLayeredApiPropertiesKHR - for PhysicalDeviceLayeredApiVulkanPropertiesKHR<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceLayeredApiPropertiesKHR<'root>> + for PhysicalDeviceLayeredApiVulkanPropertiesKHR<'child> { } impl<'a> PhysicalDeviceLayeredApiVulkanPropertiesKHR<'a> { @@ -21401,7 +21462,6 @@ impl ::core::default::Default for DescriptorSetLayoutSupport<'_> { unsafe impl<'a> TaggedStructure for DescriptorSetLayoutSupport<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DESCRIPTOR_SET_LAYOUT_SUPPORT; } -pub unsafe trait ExtendsDescriptorSetLayoutSupport {} impl<'a> DescriptorSetLayoutSupport<'a> { #[inline] pub fn supported(mut self, supported: bool) -> Self { @@ -21417,7 +21477,7 @@ impl<'a> DescriptorSetLayoutSupport<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsDescriptorSetLayoutSupport + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -21441,10 +21501,7 @@ impl<'a> DescriptorSetLayoutSupport<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsDescriptorSetLayoutSupport + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -21452,10 +21509,7 @@ impl<'a> DescriptorSetLayoutSupport<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsDescriptorSetLayoutSupport + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -21487,8 +21541,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderDrawParametersFeatures<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderDrawParametersFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderDrawParametersFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderDrawParametersFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderDrawParametersFeatures<'child> +{ +} impl<'a> PhysicalDeviceShaderDrawParametersFeatures<'a> { #[inline] pub fn shader_draw_parameters(mut self, shader_draw_parameters: bool) -> Self { @@ -21526,8 +21586,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderFloat16Int8Features<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderFloat16Int8Features<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderFloat16Int8Features<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderFloat16Int8Features<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderFloat16Int8Features<'child> +{ +} impl<'a> PhysicalDeviceShaderFloat16Int8Features<'a> { #[inline] pub fn shader_float16(mut self, shader_float16: bool) -> Self { @@ -21599,7 +21665,10 @@ impl ::core::default::Default for PhysicalDeviceFloatControlsProperties<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceFloatControlsProperties<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceFloatControlsProperties<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceFloatControlsProperties<'child> +{ +} impl<'a> PhysicalDeviceFloatControlsProperties<'a> { #[inline] pub fn denorm_behavior_independence( @@ -21759,8 +21828,14 @@ impl ::core::default::Default for PhysicalDeviceHostQueryResetFeatures<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceHostQueryResetFeatures<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceHostQueryResetFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceHostQueryResetFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceHostQueryResetFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceHostQueryResetFeatures<'child> +{ +} impl<'a> PhysicalDeviceHostQueryResetFeatures<'a> { #[inline] pub fn host_query_reset(mut self, host_query_reset: bool) -> Self { @@ -22052,7 +22127,10 @@ unsafe impl<'a> TaggedStructure for DeviceQueueGlobalPriorityCreateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR; } -unsafe impl ExtendsDeviceQueueCreateInfo for DeviceQueueGlobalPriorityCreateInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<DeviceQueueCreateInfo<'root>> + for DeviceQueueGlobalPriorityCreateInfoKHR<'child> +{ +} impl<'a> DeviceQueueGlobalPriorityCreateInfoKHR<'a> { #[inline] pub fn global_priority(mut self, global_priority: QueueGlobalPriorityKHR) -> Self { @@ -22088,8 +22166,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceGlobalPriorityQueryFeaturesKHR const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceGlobalPriorityQueryFeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceGlobalPriorityQueryFeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceGlobalPriorityQueryFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceGlobalPriorityQueryFeaturesKHR<'child> +{ +} impl<'a> PhysicalDeviceGlobalPriorityQueryFeaturesKHR<'a> { #[inline] pub fn global_priority_query(mut self, global_priority_query: bool) -> Self { @@ -22137,7 +22221,10 @@ unsafe impl<'a> TaggedStructure for QueueFamilyGlobalPriorityPropertiesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR; } -unsafe impl ExtendsQueueFamilyProperties2 for QueueFamilyGlobalPriorityPropertiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<QueueFamilyProperties2<'root>> + for QueueFamilyGlobalPriorityPropertiesKHR<'child> +{ +} impl<'a> QueueFamilyGlobalPriorityPropertiesKHR<'a> { #[inline] pub fn priorities(mut self, priorities: &'_ [QueueGlobalPriorityKHR]) -> Self { @@ -22181,7 +22268,10 @@ impl ::core::default::Default for DebugUtilsObjectNameInfoEXT<'_> { unsafe impl<'a> TaggedStructure for DebugUtilsObjectNameInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEBUG_UTILS_OBJECT_NAME_INFO_EXT; } -unsafe impl ExtendsPipelineShaderStageCreateInfo for DebugUtilsObjectNameInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<PipelineShaderStageCreateInfo<'root>> + for DebugUtilsObjectNameInfoEXT<'child> +{ +} impl<'a> DebugUtilsObjectNameInfoEXT<'a> { #[inline] pub fn object_handle<T: Handle>(mut self, object_handle: T) -> Self { @@ -22357,7 +22447,10 @@ impl ::core::default::Default for DebugUtilsMessengerCreateInfoEXT<'_> { unsafe impl<'a> TaggedStructure for DebugUtilsMessengerCreateInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT; } -unsafe impl ExtendsInstanceCreateInfo for DebugUtilsMessengerCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<InstanceCreateInfo<'root>> + for DebugUtilsMessengerCreateInfoEXT<'child> +{ +} impl<'a> DebugUtilsMessengerCreateInfoEXT<'a> { #[inline] pub fn flags(mut self, flags: DebugUtilsMessengerCreateFlagsEXT) -> Self { @@ -22433,7 +22526,6 @@ impl ::core::default::Default for DebugUtilsMessengerCallbackDataEXT<'_> { unsafe impl<'a> TaggedStructure for DebugUtilsMessengerCallbackDataEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT; } -pub unsafe trait ExtendsDebugUtilsMessengerCallbackDataEXT {} impl<'a> DebugUtilsMessengerCallbackDataEXT<'a> { #[inline] pub fn flags(mut self, flags: DebugUtilsMessengerCallbackDataFlagsEXT) -> Self { @@ -22498,10 +22590,7 @@ impl<'a> DebugUtilsMessengerCallbackDataEXT<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsDebugUtilsMessengerCallbackDataEXT + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -22525,10 +22614,7 @@ impl<'a> DebugUtilsMessengerCallbackDataEXT<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsDebugUtilsMessengerCallbackDataEXT + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -22536,10 +22622,7 @@ impl<'a> DebugUtilsMessengerCallbackDataEXT<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsDebugUtilsMessengerCallbackDataEXT + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -22571,8 +22654,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDeviceMemoryReportFeaturesEXT< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDeviceMemoryReportFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDeviceMemoryReportFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceDeviceMemoryReportFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceDeviceMemoryReportFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceDeviceMemoryReportFeaturesEXT<'a> { #[inline] pub fn device_memory_report(mut self, device_memory_report: bool) -> Self { @@ -22626,7 +22715,10 @@ unsafe impl<'a> TaggedStructure for DeviceDeviceMemoryReportCreateInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT; } -unsafe impl ExtendsDeviceCreateInfo for DeviceDeviceMemoryReportCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for DeviceDeviceMemoryReportCreateInfoEXT<'child> +{ +} impl<'a> DeviceDeviceMemoryReportCreateInfoEXT<'a> { #[inline] pub fn flags(mut self, flags: DeviceMemoryReportFlagsEXT) -> Self { @@ -22748,7 +22840,10 @@ impl ::core::default::Default for ImportMemoryHostPointerInfoEXT<'_> { unsafe impl<'a> TaggedStructure for ImportMemoryHostPointerInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMPORT_MEMORY_HOST_POINTER_INFO_EXT; } -unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryHostPointerInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<MemoryAllocateInfo<'root>> + for ImportMemoryHostPointerInfoEXT<'child> +{ +} impl<'a> ImportMemoryHostPointerInfoEXT<'a> { #[inline] pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self { @@ -22823,7 +22918,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceExternalMemoryHostPropertiesEX const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceExternalMemoryHostPropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceExternalMemoryHostPropertiesEXT<'child> +{ +} impl<'a> PhysicalDeviceExternalMemoryHostPropertiesEXT<'a> { #[inline] pub fn min_imported_host_pointer_alignment( @@ -22878,8 +22976,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceConservativeRasterizationPrope const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceConservativeRasterizationPropertiesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceConservativeRasterizationPropertiesEXT<'child> { } impl<'a> PhysicalDeviceConservativeRasterizationPropertiesEXT<'a> { @@ -23038,7 +23136,10 @@ impl ::core::default::Default for PhysicalDeviceShaderCorePropertiesAMD<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderCorePropertiesAMD<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceShaderCorePropertiesAMD<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceShaderCorePropertiesAMD<'child> +{ +} impl<'a> PhysicalDeviceShaderCorePropertiesAMD<'a> { #[inline] pub fn shader_engine_count(mut self, shader_engine_count: u32) -> Self { @@ -23141,7 +23242,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderCoreProperties2AMD<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceShaderCoreProperties2AMD<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceShaderCoreProperties2AMD<'child> +{ +} impl<'a> PhysicalDeviceShaderCoreProperties2AMD<'a> { #[inline] pub fn shader_core_features( @@ -23189,8 +23293,8 @@ unsafe impl<'a> TaggedStructure for PipelineRasterizationConservativeStateCreate const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT; } -unsafe impl ExtendsPipelineRasterizationStateCreateInfo - for PipelineRasterizationConservativeStateCreateInfoEXT<'_> +unsafe impl<'root, 'child> Extends<PipelineRasterizationStateCreateInfo<'root>> + for PipelineRasterizationConservativeStateCreateInfoEXT<'child> { } impl<'a> PipelineRasterizationConservativeStateCreateInfoEXT<'a> { @@ -23282,8 +23386,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDescriptorIndexingFeatures<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDescriptorIndexingFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDescriptorIndexingFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceDescriptorIndexingFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceDescriptorIndexingFeatures<'child> +{ +} impl<'a> PhysicalDeviceDescriptorIndexingFeatures<'a> { #[inline] pub fn shader_input_attachment_array_dynamic_indexing( @@ -23533,7 +23643,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDescriptorIndexingProperties<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDescriptorIndexingProperties<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceDescriptorIndexingProperties<'child> +{ +} impl<'a> PhysicalDeviceDescriptorIndexingProperties<'a> { #[inline] pub fn max_update_after_bind_descriptors_in_all_pools( @@ -23767,7 +23880,10 @@ unsafe impl<'a> TaggedStructure for DescriptorSetLayoutBindingFlagsCreateInfo<'a const STRUCTURE_TYPE: StructureType = StructureType::DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO; } -unsafe impl ExtendsDescriptorSetLayoutCreateInfo for DescriptorSetLayoutBindingFlagsCreateInfo<'_> {} +unsafe impl<'root, 'child> Extends<DescriptorSetLayoutCreateInfo<'root>> + for DescriptorSetLayoutBindingFlagsCreateInfo<'child> +{ +} impl<'a> DescriptorSetLayoutBindingFlagsCreateInfo<'a> { #[inline] pub fn binding_flags(mut self, binding_flags: &'a [DescriptorBindingFlags]) -> Self { @@ -23806,8 +23922,8 @@ unsafe impl<'a> TaggedStructure for DescriptorSetVariableDescriptorCountAllocate const STRUCTURE_TYPE: StructureType = StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO; } -unsafe impl ExtendsDescriptorSetAllocateInfo - for DescriptorSetVariableDescriptorCountAllocateInfo<'_> +unsafe impl<'root, 'child> Extends<DescriptorSetAllocateInfo<'root>> + for DescriptorSetVariableDescriptorCountAllocateInfo<'child> { } impl<'a> DescriptorSetVariableDescriptorCountAllocateInfo<'a> { @@ -23846,8 +23962,8 @@ unsafe impl<'a> TaggedStructure for DescriptorSetVariableDescriptorCountLayoutSu const STRUCTURE_TYPE: StructureType = StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT; } -unsafe impl ExtendsDescriptorSetLayoutSupport - for DescriptorSetVariableDescriptorCountLayoutSupport<'_> +unsafe impl<'root, 'child> Extends<DescriptorSetLayoutSupport<'root>> + for DescriptorSetVariableDescriptorCountLayoutSupport<'child> { } impl<'a> DescriptorSetVariableDescriptorCountLayoutSupport<'a> { @@ -23900,7 +24016,6 @@ impl ::core::default::Default for AttachmentDescription2<'_> { unsafe impl<'a> TaggedStructure for AttachmentDescription2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::ATTACHMENT_DESCRIPTION_2; } -pub unsafe trait ExtendsAttachmentDescription2 {} impl<'a> AttachmentDescription2<'a> { #[inline] pub fn flags(mut self, flags: AttachmentDescriptionFlags) -> Self { @@ -23956,7 +24071,7 @@ impl<'a> AttachmentDescription2<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsAttachmentDescription2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -23980,10 +24095,7 @@ impl<'a> AttachmentDescription2<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsAttachmentDescription2 + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -23991,10 +24103,7 @@ impl<'a> AttachmentDescription2<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsAttachmentDescription2 + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -24029,7 +24138,6 @@ impl ::core::default::Default for AttachmentReference2<'_> { unsafe impl<'a> TaggedStructure for AttachmentReference2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::ATTACHMENT_REFERENCE_2; } -pub unsafe trait ExtendsAttachmentReference2 {} impl<'a> AttachmentReference2<'a> { #[inline] pub fn attachment(mut self, attachment: u32) -> Self { @@ -24055,7 +24163,7 @@ impl<'a> AttachmentReference2<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsAttachmentReference2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -24079,10 +24187,7 @@ impl<'a> AttachmentReference2<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsAttachmentReference2 + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -24090,10 +24195,7 @@ impl<'a> AttachmentReference2<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsAttachmentReference2 + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -24144,7 +24246,6 @@ impl ::core::default::Default for SubpassDescription2<'_> { unsafe impl<'a> TaggedStructure for SubpassDescription2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SUBPASS_DESCRIPTION_2; } -pub unsafe trait ExtendsSubpassDescription2 {} impl<'a> SubpassDescription2<'a> { #[inline] pub fn flags(mut self, flags: SubpassDescriptionFlags) -> Self { @@ -24205,7 +24306,7 @@ impl<'a> SubpassDescription2<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsSubpassDescription2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -24229,10 +24330,7 @@ impl<'a> SubpassDescription2<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsSubpassDescription2 + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -24240,7 +24338,7 @@ impl<'a> SubpassDescription2<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsSubpassDescription2 + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -24285,7 +24383,6 @@ impl ::core::default::Default for SubpassDependency2<'_> { unsafe impl<'a> TaggedStructure for SubpassDependency2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SUBPASS_DEPENDENCY_2; } -pub unsafe trait ExtendsSubpassDependency2 {} impl<'a> SubpassDependency2<'a> { #[inline] pub fn src_subpass(mut self, src_subpass: u32) -> Self { @@ -24336,7 +24433,7 @@ impl<'a> SubpassDependency2<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsSubpassDependency2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -24360,7 +24457,7 @@ impl<'a> SubpassDependency2<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsSubpassDependency2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -24368,7 +24465,7 @@ impl<'a> SubpassDependency2<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsSubpassDependency2 + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -24415,7 +24512,6 @@ impl ::core::default::Default for RenderPassCreateInfo2<'_> { unsafe impl<'a> TaggedStructure for RenderPassCreateInfo2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RENDER_PASS_CREATE_INFO_2; } -pub unsafe trait ExtendsRenderPassCreateInfo2 {} impl<'a> RenderPassCreateInfo2<'a> { #[inline] pub fn flags(mut self, flags: RenderPassCreateFlags) -> Self { @@ -24455,7 +24551,7 @@ impl<'a> RenderPassCreateInfo2<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsRenderPassCreateInfo2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -24479,10 +24575,7 @@ impl<'a> RenderPassCreateInfo2<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsRenderPassCreateInfo2 + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -24490,10 +24583,7 @@ impl<'a> RenderPassCreateInfo2<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsRenderPassCreateInfo2 + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -24556,7 +24646,6 @@ impl ::core::default::Default for SubpassEndInfo<'_> { unsafe impl<'a> TaggedStructure for SubpassEndInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SUBPASS_END_INFO; } -pub unsafe trait ExtendsSubpassEndInfo {} impl<'a> SubpassEndInfo<'a> { #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] #[doc = r" method only exists on structs that can be passed to a function directly. Only"] @@ -24567,7 +24656,7 @@ impl<'a> SubpassEndInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsSubpassEndInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -24591,7 +24680,7 @@ impl<'a> SubpassEndInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsSubpassEndInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -24599,7 +24688,7 @@ impl<'a> SubpassEndInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsSubpassEndInfo + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -24631,8 +24720,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceTimelineSemaphoreFeatures<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceTimelineSemaphoreFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceTimelineSemaphoreFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceTimelineSemaphoreFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceTimelineSemaphoreFeatures<'child> +{ +} impl<'a> PhysicalDeviceTimelineSemaphoreFeatures<'a> { #[inline] pub fn timeline_semaphore(mut self, timeline_semaphore: bool) -> Self { @@ -24668,7 +24763,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceTimelineSemaphoreProperties<'a const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceTimelineSemaphoreProperties<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceTimelineSemaphoreProperties<'child> +{ +} impl<'a> PhysicalDeviceTimelineSemaphoreProperties<'a> { #[inline] pub fn max_timeline_semaphore_value_difference( @@ -24708,8 +24806,11 @@ impl ::core::default::Default for SemaphoreTypeCreateInfo<'_> { unsafe impl<'a> TaggedStructure for SemaphoreTypeCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SEMAPHORE_TYPE_CREATE_INFO; } -unsafe impl ExtendsSemaphoreCreateInfo for SemaphoreTypeCreateInfo<'_> {} -unsafe impl ExtendsPhysicalDeviceExternalSemaphoreInfo for SemaphoreTypeCreateInfo<'_> {} +unsafe impl<'root, 'child> Extends<SemaphoreCreateInfo<'root>> for SemaphoreTypeCreateInfo<'child> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceExternalSemaphoreInfo<'root>> + for SemaphoreTypeCreateInfo<'child> +{ +} impl<'a> SemaphoreTypeCreateInfo<'a> { #[inline] pub fn semaphore_type(mut self, semaphore_type: SemaphoreType) -> Self { @@ -24755,8 +24856,8 @@ impl ::core::default::Default for TimelineSemaphoreSubmitInfo<'_> { unsafe impl<'a> TaggedStructure for TimelineSemaphoreSubmitInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::TIMELINE_SEMAPHORE_SUBMIT_INFO; } -unsafe impl ExtendsSubmitInfo for TimelineSemaphoreSubmitInfo<'_> {} -unsafe impl ExtendsBindSparseInfo for TimelineSemaphoreSubmitInfo<'_> {} +unsafe impl<'root, 'child> Extends<SubmitInfo<'root>> for TimelineSemaphoreSubmitInfo<'child> {} +unsafe impl<'root, 'child> Extends<BindSparseInfo<'root>> for TimelineSemaphoreSubmitInfo<'child> {} impl<'a> TimelineSemaphoreSubmitInfo<'a> { #[inline] pub fn wait_semaphore_values(mut self, wait_semaphore_values: &'a [u64]) -> Self { @@ -24915,8 +25016,8 @@ unsafe impl<'a> TaggedStructure for PipelineVertexInputDivisorStateCreateInfoKHR const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR; } -unsafe impl ExtendsPipelineVertexInputStateCreateInfo - for PipelineVertexInputDivisorStateCreateInfoKHR<'_> +unsafe impl<'root, 'child> Extends<PipelineVertexInputStateCreateInfo<'root>> + for PipelineVertexInputDivisorStateCreateInfoKHR<'child> { } impl<'a> PipelineVertexInputDivisorStateCreateInfoKHR<'a> { @@ -24958,8 +25059,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceVertexAttributeDivisorProperti const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceVertexAttributeDivisorPropertiesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceVertexAttributeDivisorPropertiesEXT<'child> { } impl<'a> PhysicalDeviceVertexAttributeDivisorPropertiesEXT<'a> { @@ -24999,8 +25100,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceVertexAttributeDivisorProperti const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceVertexAttributeDivisorPropertiesKHR<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceVertexAttributeDivisorPropertiesKHR<'child> { } impl<'a> PhysicalDeviceVertexAttributeDivisorPropertiesKHR<'a> { @@ -25052,7 +25153,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDevicePCIBusInfoPropertiesEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDevicePCIBusInfoPropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDevicePCIBusInfoPropertiesEXT<'child> +{ +} impl<'a> PhysicalDevicePCIBusInfoPropertiesEXT<'a> { #[inline] pub fn pci_domain(mut self, pci_domain: u32) -> Self { @@ -25103,7 +25207,10 @@ unsafe impl<'a> TaggedStructure for ImportAndroidHardwareBufferInfoANDROID<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID; } -unsafe impl ExtendsMemoryAllocateInfo for ImportAndroidHardwareBufferInfoANDROID<'_> {} +unsafe impl<'root, 'child> Extends<MemoryAllocateInfo<'root>> + for ImportAndroidHardwareBufferInfoANDROID<'child> +{ +} impl<'a> ImportAndroidHardwareBufferInfoANDROID<'a> { #[inline] pub fn buffer(mut self, buffer: *mut AHardwareBuffer) -> Self { @@ -25138,7 +25245,10 @@ impl ::core::default::Default for AndroidHardwareBufferUsageANDROID<'_> { unsafe impl<'a> TaggedStructure for AndroidHardwareBufferUsageANDROID<'a> { const STRUCTURE_TYPE: StructureType = StructureType::ANDROID_HARDWARE_BUFFER_USAGE_ANDROID; } -unsafe impl ExtendsImageFormatProperties2 for AndroidHardwareBufferUsageANDROID<'_> {} +unsafe impl<'root, 'child> Extends<ImageFormatProperties2<'root>> + for AndroidHardwareBufferUsageANDROID<'child> +{ +} impl<'a> AndroidHardwareBufferUsageANDROID<'a> { #[inline] pub fn android_hardware_buffer_usage(mut self, android_hardware_buffer_usage: u64) -> Self { @@ -25175,7 +25285,6 @@ impl ::core::default::Default for AndroidHardwareBufferPropertiesANDROID<'_> { unsafe impl<'a> TaggedStructure for AndroidHardwareBufferPropertiesANDROID<'a> { const STRUCTURE_TYPE: StructureType = StructureType::ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID; } -pub unsafe trait ExtendsAndroidHardwareBufferPropertiesANDROID {} impl<'a> AndroidHardwareBufferPropertiesANDROID<'a> { #[inline] pub fn allocation_size(mut self, allocation_size: DeviceSize) -> Self { @@ -25196,10 +25305,7 @@ impl<'a> AndroidHardwareBufferPropertiesANDROID<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsAndroidHardwareBufferPropertiesANDROID + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -25223,10 +25329,7 @@ impl<'a> AndroidHardwareBufferPropertiesANDROID<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsAndroidHardwareBufferPropertiesANDROID + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -25234,10 +25337,7 @@ impl<'a> AndroidHardwareBufferPropertiesANDROID<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsAndroidHardwareBufferPropertiesANDROID + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -25318,8 +25418,8 @@ unsafe impl<'a> TaggedStructure for AndroidHardwareBufferFormatPropertiesANDROID const STRUCTURE_TYPE: StructureType = StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID; } -unsafe impl ExtendsAndroidHardwareBufferPropertiesANDROID - for AndroidHardwareBufferFormatPropertiesANDROID<'_> +unsafe impl<'root, 'child> Extends<AndroidHardwareBufferPropertiesANDROID<'root>> + for AndroidHardwareBufferFormatPropertiesANDROID<'child> { } impl<'a> AndroidHardwareBufferFormatPropertiesANDROID<'a> { @@ -25398,8 +25498,8 @@ unsafe impl<'a> TaggedStructure for CommandBufferInheritanceConditionalRendering const STRUCTURE_TYPE: StructureType = StructureType::COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT; } -unsafe impl ExtendsCommandBufferInheritanceInfo - for CommandBufferInheritanceConditionalRenderingInfoEXT<'_> +unsafe impl<'root, 'child> Extends<CommandBufferInheritanceInfo<'root>> + for CommandBufferInheritanceConditionalRenderingInfoEXT<'child> { } impl<'a> CommandBufferInheritanceConditionalRenderingInfoEXT<'a> { @@ -25436,11 +25536,23 @@ impl ::core::default::Default for ExternalFormatANDROID<'_> { unsafe impl<'a> TaggedStructure for ExternalFormatANDROID<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXTERNAL_FORMAT_ANDROID; } -unsafe impl ExtendsImageCreateInfo for ExternalFormatANDROID<'_> {} -unsafe impl ExtendsSamplerYcbcrConversionCreateInfo for ExternalFormatANDROID<'_> {} -unsafe impl ExtendsAttachmentDescription2 for ExternalFormatANDROID<'_> {} -unsafe impl ExtendsGraphicsPipelineCreateInfo for ExternalFormatANDROID<'_> {} -unsafe impl ExtendsCommandBufferInheritanceInfo for ExternalFormatANDROID<'_> {} +unsafe impl<'root, 'child> Extends<ImageCreateInfo<'root>> for ExternalFormatANDROID<'child> {} +unsafe impl<'root, 'child> Extends<SamplerYcbcrConversionCreateInfo<'root>> + for ExternalFormatANDROID<'child> +{ +} +unsafe impl<'root, 'child> Extends<AttachmentDescription2<'root>> + for ExternalFormatANDROID<'child> +{ +} +unsafe impl<'root, 'child> Extends<GraphicsPipelineCreateInfo<'root>> + for ExternalFormatANDROID<'child> +{ +} +unsafe impl<'root, 'child> Extends<CommandBufferInheritanceInfo<'root>> + for ExternalFormatANDROID<'child> +{ +} impl<'a> ExternalFormatANDROID<'a> { #[inline] pub fn external_format(mut self, external_format: u64) -> Self { @@ -25479,8 +25591,14 @@ impl ::core::default::Default for PhysicalDevice8BitStorageFeatures<'_> { unsafe impl<'a> TaggedStructure for PhysicalDevice8BitStorageFeatures<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevice8BitStorageFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDevice8BitStorageFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDevice8BitStorageFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDevice8BitStorageFeatures<'child> +{ +} impl<'a> PhysicalDevice8BitStorageFeatures<'a> { #[inline] pub fn storage_buffer8_bit_access(mut self, storage_buffer8_bit_access: bool) -> Self { @@ -25531,8 +25649,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceConditionalRenderingFeaturesEX const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceConditionalRenderingFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceConditionalRenderingFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceConditionalRenderingFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceConditionalRenderingFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceConditionalRenderingFeaturesEXT<'a> { #[inline] pub fn conditional_rendering(mut self, conditional_rendering: bool) -> Self { @@ -25580,8 +25704,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceVulkanMemoryModelFeatures<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVulkanMemoryModelFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVulkanMemoryModelFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceVulkanMemoryModelFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceVulkanMemoryModelFeatures<'child> +{ +} impl<'a> PhysicalDeviceVulkanMemoryModelFeatures<'a> { #[inline] pub fn vulkan_memory_model(mut self, vulkan_memory_model: bool) -> Self { @@ -25636,8 +25766,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderAtomicInt64Features<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderAtomicInt64Features<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderAtomicInt64Features<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderAtomicInt64Features<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderAtomicInt64Features<'child> +{ +} impl<'a> PhysicalDeviceShaderAtomicInt64Features<'a> { #[inline] pub fn shader_buffer_int64_atomics(mut self, shader_buffer_int64_atomics: bool) -> Self { @@ -25700,8 +25836,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderAtomicFloatFeaturesEXT<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderAtomicFloatFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderAtomicFloatFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderAtomicFloatFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderAtomicFloatFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceShaderAtomicFloatFeaturesEXT<'a> { #[inline] pub fn shader_buffer_float32_atomics(mut self, shader_buffer_float32_atomics: bool) -> Self { @@ -25832,8 +25974,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderAtomicFloat2FeaturesEXT< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderAtomicFloat2FeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderAtomicFloat2FeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderAtomicFloat2FeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderAtomicFloat2FeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceShaderAtomicFloat2FeaturesEXT<'a> { #[inline] pub fn shader_buffer_float16_atomics(mut self, shader_buffer_float16_atomics: bool) -> Self { @@ -25956,8 +26104,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceVertexAttributeDivisorFeatures const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVertexAttributeDivisorFeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVertexAttributeDivisorFeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceVertexAttributeDivisorFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceVertexAttributeDivisorFeaturesKHR<'child> +{ +} impl<'a> PhysicalDeviceVertexAttributeDivisorFeaturesKHR<'a> { #[inline] pub fn vertex_attribute_instance_rate_divisor( @@ -26004,7 +26158,10 @@ impl ::core::default::Default for QueueFamilyCheckpointPropertiesNV<'_> { unsafe impl<'a> TaggedStructure for QueueFamilyCheckpointPropertiesNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV; } -unsafe impl ExtendsQueueFamilyProperties2 for QueueFamilyCheckpointPropertiesNV<'_> {} +unsafe impl<'root, 'child> Extends<QueueFamilyProperties2<'root>> + for QueueFamilyCheckpointPropertiesNV<'child> +{ +} impl<'a> QueueFamilyCheckpointPropertiesNV<'a> { #[inline] pub fn checkpoint_execution_stage_mask( @@ -26090,7 +26247,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDepthStencilResolveProperties< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDepthStencilResolveProperties<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceDepthStencilResolveProperties<'child> +{ +} impl<'a> PhysicalDeviceDepthStencilResolveProperties<'a> { #[inline] pub fn supported_depth_resolve_modes( @@ -26150,7 +26310,10 @@ impl ::core::default::Default for SubpassDescriptionDepthStencilResolve<'_> { unsafe impl<'a> TaggedStructure for SubpassDescriptionDepthStencilResolve<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE; } -unsafe impl ExtendsSubpassDescription2 for SubpassDescriptionDepthStencilResolve<'_> {} +unsafe impl<'root, 'child> Extends<SubpassDescription2<'root>> + for SubpassDescriptionDepthStencilResolve<'child> +{ +} impl<'a> SubpassDescriptionDepthStencilResolve<'a> { #[inline] pub fn depth_resolve_mode(mut self, depth_resolve_mode: ResolveModeFlags) -> Self { @@ -26198,7 +26361,10 @@ impl ::core::default::Default for ImageViewASTCDecodeModeEXT<'_> { unsafe impl<'a> TaggedStructure for ImageViewASTCDecodeModeEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_VIEW_ASTC_DECODE_MODE_EXT; } -unsafe impl ExtendsImageViewCreateInfo for ImageViewASTCDecodeModeEXT<'_> {} +unsafe impl<'root, 'child> Extends<ImageViewCreateInfo<'root>> + for ImageViewASTCDecodeModeEXT<'child> +{ +} impl<'a> ImageViewASTCDecodeModeEXT<'a> { #[inline] pub fn decode_mode(mut self, decode_mode: Format) -> Self { @@ -26233,8 +26399,14 @@ impl ::core::default::Default for PhysicalDeviceASTCDecodeFeaturesEXT<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceASTCDecodeFeaturesEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceASTCDecodeFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceASTCDecodeFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceASTCDecodeFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceASTCDecodeFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceASTCDecodeFeaturesEXT<'a> { #[inline] pub fn decode_mode_shared_exponent(mut self, decode_mode_shared_exponent: bool) -> Self { @@ -26272,8 +26444,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceTransformFeedbackFeaturesEXT<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceTransformFeedbackFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceTransformFeedbackFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceTransformFeedbackFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceTransformFeedbackFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceTransformFeedbackFeaturesEXT<'a> { #[inline] pub fn transform_feedback(mut self, transform_feedback: bool) -> Self { @@ -26332,7 +26510,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceTransformFeedbackPropertiesEXT const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceTransformFeedbackPropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceTransformFeedbackPropertiesEXT<'child> +{ +} impl<'a> PhysicalDeviceTransformFeedbackPropertiesEXT<'a> { #[inline] pub fn max_transform_feedback_streams(mut self, max_transform_feedback_streams: u32) -> Self { @@ -26435,8 +26616,8 @@ unsafe impl<'a> TaggedStructure for PipelineRasterizationStateStreamCreateInfoEX const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT; } -unsafe impl ExtendsPipelineRasterizationStateCreateInfo - for PipelineRasterizationStateStreamCreateInfoEXT<'_> +unsafe impl<'root, 'child> Extends<PipelineRasterizationStateCreateInfo<'root>> + for PipelineRasterizationStateStreamCreateInfoEXT<'child> { } impl<'a> PipelineRasterizationStateStreamCreateInfoEXT<'a> { @@ -26479,11 +26660,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceRepresentativeFragmentTestFeat const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceRepresentativeFragmentTestFeaturesNV<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceRepresentativeFragmentTestFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceRepresentativeFragmentTestFeaturesNV<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRepresentativeFragmentTestFeaturesNV<'_> {} impl<'a> PhysicalDeviceRepresentativeFragmentTestFeaturesNV<'a> { #[inline] pub fn representative_fragment_test(mut self, representative_fragment_test: bool) -> Self { @@ -26519,8 +26703,8 @@ unsafe impl<'a> TaggedStructure for PipelineRepresentativeFragmentTestStateCreat const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV; } -unsafe impl ExtendsGraphicsPipelineCreateInfo - for PipelineRepresentativeFragmentTestStateCreateInfoNV<'_> +unsafe impl<'root, 'child> Extends<GraphicsPipelineCreateInfo<'root>> + for PipelineRepresentativeFragmentTestStateCreateInfoNV<'child> { } impl<'a> PipelineRepresentativeFragmentTestStateCreateInfoNV<'a> { @@ -26561,8 +26745,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceExclusiveScissorFeaturesNV<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceExclusiveScissorFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExclusiveScissorFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceExclusiveScissorFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceExclusiveScissorFeaturesNV<'child> +{ +} impl<'a> PhysicalDeviceExclusiveScissorFeaturesNV<'a> { #[inline] pub fn exclusive_scissor(mut self, exclusive_scissor: bool) -> Self { @@ -26600,8 +26790,8 @@ unsafe impl<'a> TaggedStructure for PipelineViewportExclusiveScissorStateCreateI const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV; } -unsafe impl ExtendsPipelineViewportStateCreateInfo - for PipelineViewportExclusiveScissorStateCreateInfoNV<'_> +unsafe impl<'root, 'child> Extends<PipelineViewportStateCreateInfo<'root>> + for PipelineViewportExclusiveScissorStateCreateInfoNV<'child> { } impl<'a> PipelineViewportExclusiveScissorStateCreateInfoNV<'a> { @@ -26640,8 +26830,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceCornerSampledImageFeaturesNV<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCornerSampledImageFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCornerSampledImageFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceCornerSampledImageFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceCornerSampledImageFeaturesNV<'child> +{ +} impl<'a> PhysicalDeviceCornerSampledImageFeaturesNV<'a> { #[inline] pub fn corner_sampled_image(mut self, corner_sampled_image: bool) -> Self { @@ -26679,11 +26875,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceComputeShaderDerivativesFeatur const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceComputeShaderDerivativesFeaturesKHR<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceComputeShaderDerivativesFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceComputeShaderDerivativesFeaturesKHR<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceComputeShaderDerivativesFeaturesKHR<'_> {} impl<'a> PhysicalDeviceComputeShaderDerivativesFeaturesKHR<'a> { #[inline] pub fn compute_derivative_group_quads(mut self, compute_derivative_group_quads: bool) -> Self { @@ -26727,8 +26926,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceComputeShaderDerivativesProper const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceComputeShaderDerivativesPropertiesKHR<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceComputeShaderDerivativesPropertiesKHR<'child> { } impl<'a> PhysicalDeviceComputeShaderDerivativesPropertiesKHR<'a> { @@ -26769,8 +26968,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderImageFootprintFeaturesNV const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderImageFootprintFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderImageFootprintFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderImageFootprintFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderImageFootprintFeaturesNV<'child> +{ +} impl<'a> PhysicalDeviceShaderImageFootprintFeaturesNV<'a> { #[inline] pub fn image_footprint(mut self, image_footprint: bool) -> Self { @@ -26806,12 +27011,12 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDedicatedAllocationImageAliasi const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV<'child> { } -unsafe impl ExtendsDeviceCreateInfo - for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV<'_> +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV<'child> { } impl<'a> PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV<'a> { @@ -26852,8 +27057,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceCopyMemoryIndirectFeaturesNV<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCopyMemoryIndirectFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCopyMemoryIndirectFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceCopyMemoryIndirectFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceCopyMemoryIndirectFeaturesNV<'child> +{ +} impl<'a> PhysicalDeviceCopyMemoryIndirectFeaturesNV<'a> { #[inline] pub fn indirect_copy(mut self, indirect_copy: bool) -> Self { @@ -26889,7 +27100,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceCopyMemoryIndirectPropertiesNV const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceCopyMemoryIndirectPropertiesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceCopyMemoryIndirectPropertiesNV<'child> +{ +} impl<'a> PhysicalDeviceCopyMemoryIndirectPropertiesNV<'a> { #[inline] pub fn supported_queues(mut self, supported_queues: QueueFlags) -> Self { @@ -26925,8 +27139,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceMemoryDecompressionFeaturesNV< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMemoryDecompressionFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMemoryDecompressionFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceMemoryDecompressionFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceMemoryDecompressionFeaturesNV<'child> +{ +} impl<'a> PhysicalDeviceMemoryDecompressionFeaturesNV<'a> { #[inline] pub fn memory_decompression(mut self, memory_decompression: bool) -> Self { @@ -26964,7 +27184,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceMemoryDecompressionPropertiesN const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMemoryDecompressionPropertiesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceMemoryDecompressionPropertiesNV<'child> +{ +} impl<'a> PhysicalDeviceMemoryDecompressionPropertiesNV<'a> { #[inline] pub fn decompression_methods( @@ -27048,8 +27271,8 @@ unsafe impl<'a> TaggedStructure for PipelineViewportShadingRateImageStateCreateI const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV; } -unsafe impl ExtendsPipelineViewportStateCreateInfo - for PipelineViewportShadingRateImageStateCreateInfoNV<'_> +unsafe impl<'root, 'child> Extends<PipelineViewportStateCreateInfo<'root>> + for PipelineViewportShadingRateImageStateCreateInfoNV<'child> { } impl<'a> PipelineViewportShadingRateImageStateCreateInfoNV<'a> { @@ -27098,8 +27321,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShadingRateImageFeaturesNV<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShadingRateImageFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShadingRateImageFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShadingRateImageFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShadingRateImageFeaturesNV<'child> +{ +} impl<'a> PhysicalDeviceShadingRateImageFeaturesNV<'a> { #[inline] pub fn shading_rate_image(mut self, shading_rate_image: bool) -> Self { @@ -27147,7 +27376,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShadingRateImagePropertiesNV<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceShadingRateImagePropertiesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceShadingRateImagePropertiesNV<'child> +{ +} impl<'a> PhysicalDeviceShadingRateImagePropertiesNV<'a> { #[inline] pub fn shading_rate_texel_size(mut self, shading_rate_texel_size: Extent2D) -> Self { @@ -27193,8 +27425,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceInvocationMaskFeaturesHUAWEI<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceInvocationMaskFeaturesHUAWEI<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceInvocationMaskFeaturesHUAWEI<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceInvocationMaskFeaturesHUAWEI<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceInvocationMaskFeaturesHUAWEI<'child> +{ +} impl<'a> PhysicalDeviceInvocationMaskFeaturesHUAWEI<'a> { #[inline] pub fn invocation_mask(mut self, invocation_mask: bool) -> Self { @@ -27305,8 +27543,8 @@ unsafe impl<'a> TaggedStructure for PipelineViewportCoarseSampleOrderStateCreate const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV; } -unsafe impl ExtendsPipelineViewportStateCreateInfo - for PipelineViewportCoarseSampleOrderStateCreateInfoNV<'_> +unsafe impl<'root, 'child> Extends<PipelineViewportStateCreateInfo<'root>> + for PipelineViewportCoarseSampleOrderStateCreateInfoNV<'child> { } impl<'a> PipelineViewportCoarseSampleOrderStateCreateInfoNV<'a> { @@ -27354,8 +27592,14 @@ impl ::core::default::Default for PhysicalDeviceMeshShaderFeaturesNV<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceMeshShaderFeaturesNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMeshShaderFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMeshShaderFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceMeshShaderFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceMeshShaderFeaturesNV<'child> +{ +} impl<'a> PhysicalDeviceMeshShaderFeaturesNV<'a> { #[inline] pub fn task_shader(mut self, task_shader: bool) -> Self { @@ -27419,7 +27663,10 @@ impl ::core::default::Default for PhysicalDeviceMeshShaderPropertiesNV<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceMeshShaderPropertiesNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMeshShaderPropertiesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceMeshShaderPropertiesNV<'child> +{ +} impl<'a> PhysicalDeviceMeshShaderPropertiesNV<'a> { #[inline] pub fn max_draw_mesh_tasks_count(mut self, max_draw_mesh_tasks_count: u32) -> Self { @@ -27549,8 +27796,14 @@ impl ::core::default::Default for PhysicalDeviceMeshShaderFeaturesEXT<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceMeshShaderFeaturesEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMeshShaderFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMeshShaderFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceMeshShaderFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceMeshShaderFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceMeshShaderFeaturesEXT<'a> { #[inline] pub fn task_shader(mut self, task_shader: bool) -> Self { @@ -27663,7 +27916,10 @@ impl ::core::default::Default for PhysicalDeviceMeshShaderPropertiesEXT<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceMeshShaderPropertiesEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMeshShaderPropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceMeshShaderPropertiesEXT<'child> +{ +} impl<'a> PhysicalDeviceMeshShaderPropertiesEXT<'a> { #[inline] pub fn max_task_work_group_total_count(mut self, max_task_work_group_total_count: u32) -> Self { @@ -28041,7 +28297,6 @@ impl ::core::default::Default for RayTracingPipelineCreateInfoNV<'_> { unsafe impl<'a> TaggedStructure for RayTracingPipelineCreateInfoNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_NV; } -pub unsafe trait ExtendsRayTracingPipelineCreateInfoNV {} impl<'a> RayTracingPipelineCreateInfoNV<'a> { #[inline] pub fn flags(mut self, flags: PipelineCreateFlags) -> Self { @@ -28089,10 +28344,7 @@ impl<'a> RayTracingPipelineCreateInfoNV<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsRayTracingPipelineCreateInfoNV + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -28116,10 +28368,7 @@ impl<'a> RayTracingPipelineCreateInfoNV<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsRayTracingPipelineCreateInfoNV + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -28127,10 +28376,7 @@ impl<'a> RayTracingPipelineCreateInfoNV<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsRayTracingPipelineCreateInfoNV + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -28183,7 +28429,6 @@ impl ::core::default::Default for RayTracingPipelineCreateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for RayTracingPipelineCreateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_KHR; } -pub unsafe trait ExtendsRayTracingPipelineCreateInfoKHR {} impl<'a> RayTracingPipelineCreateInfoKHR<'a> { #[inline] pub fn flags(mut self, flags: PipelineCreateFlags) -> Self { @@ -28252,10 +28497,7 @@ impl<'a> RayTracingPipelineCreateInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsRayTracingPipelineCreateInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -28279,10 +28521,7 @@ impl<'a> RayTracingPipelineCreateInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsRayTracingPipelineCreateInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -28290,10 +28529,7 @@ impl<'a> RayTracingPipelineCreateInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsRayTracingPipelineCreateInfoKHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -28613,7 +28849,6 @@ impl ::core::default::Default for AccelerationStructureCreateInfoNV<'_> { unsafe impl<'a> TaggedStructure for AccelerationStructureCreateInfoNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_CREATE_INFO_NV; } -pub unsafe trait ExtendsAccelerationStructureCreateInfoNV {} impl<'a> AccelerationStructureCreateInfoNV<'a> { #[inline] pub fn compacted_size(mut self, compacted_size: DeviceSize) -> Self { @@ -28634,10 +28869,7 @@ impl<'a> AccelerationStructureCreateInfoNV<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsAccelerationStructureCreateInfoNV + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -28661,10 +28893,7 @@ impl<'a> AccelerationStructureCreateInfoNV<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsAccelerationStructureCreateInfoNV + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -28672,10 +28901,7 @@ impl<'a> AccelerationStructureCreateInfoNV<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsAccelerationStructureCreateInfoNV + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -28770,7 +28996,10 @@ unsafe impl<'a> TaggedStructure for WriteDescriptorSetAccelerationStructureKHR<' const STRUCTURE_TYPE: StructureType = StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR; } -unsafe impl ExtendsWriteDescriptorSet for WriteDescriptorSetAccelerationStructureKHR<'_> {} +unsafe impl<'root, 'child> Extends<WriteDescriptorSet<'root>> + for WriteDescriptorSetAccelerationStructureKHR<'child> +{ +} impl<'a> WriteDescriptorSetAccelerationStructureKHR<'a> { #[inline] pub fn acceleration_structures( @@ -28812,7 +29041,10 @@ unsafe impl<'a> TaggedStructure for WriteDescriptorSetAccelerationStructureNV<'a const STRUCTURE_TYPE: StructureType = StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV; } -unsafe impl ExtendsWriteDescriptorSet for WriteDescriptorSetAccelerationStructureNV<'_> {} +unsafe impl<'root, 'child> Extends<WriteDescriptorSet<'root>> + for WriteDescriptorSetAccelerationStructureNV<'child> +{ +} impl<'a> WriteDescriptorSetAccelerationStructureNV<'a> { #[inline] pub fn acceleration_structures( @@ -28905,8 +29137,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceAccelerationStructureFeaturesK const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceAccelerationStructureFeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceAccelerationStructureFeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceAccelerationStructureFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceAccelerationStructureFeaturesKHR<'child> +{ +} impl<'a> PhysicalDeviceAccelerationStructureFeaturesKHR<'a> { #[inline] pub fn acceleration_structure(mut self, acceleration_structure: bool) -> Self { @@ -28983,8 +29221,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceRayTracingPipelineFeaturesKHR< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRayTracingPipelineFeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRayTracingPipelineFeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceRayTracingPipelineFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceRayTracingPipelineFeaturesKHR<'child> +{ +} impl<'a> PhysicalDeviceRayTracingPipelineFeaturesKHR<'a> { #[inline] pub fn ray_tracing_pipeline(mut self, ray_tracing_pipeline: bool) -> Self { @@ -29054,8 +29298,14 @@ impl ::core::default::Default for PhysicalDeviceRayQueryFeaturesKHR<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceRayQueryFeaturesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRayQueryFeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRayQueryFeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceRayQueryFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceRayQueryFeaturesKHR<'child> +{ +} impl<'a> PhysicalDeviceRayQueryFeaturesKHR<'a> { #[inline] pub fn ray_query(mut self, ray_query: bool) -> Self { @@ -29105,8 +29355,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceAccelerationStructurePropertie const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceAccelerationStructurePropertiesKHR<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceAccelerationStructurePropertiesKHR<'child> { } impl<'a> PhysicalDeviceAccelerationStructurePropertiesKHR<'a> { @@ -29213,7 +29463,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceRayTracingPipelinePropertiesKH const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceRayTracingPipelinePropertiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceRayTracingPipelinePropertiesKHR<'child> +{ +} impl<'a> PhysicalDeviceRayTracingPipelinePropertiesKHR<'a> { #[inline] pub fn shader_group_handle_size(mut self, shader_group_handle_size: u32) -> Self { @@ -29303,7 +29556,10 @@ impl ::core::default::Default for PhysicalDeviceRayTracingPropertiesNV<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceRayTracingPropertiesNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceRayTracingPropertiesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceRayTracingPropertiesNV<'child> +{ +} impl<'a> PhysicalDeviceRayTracingPropertiesNV<'a> { #[inline] pub fn shader_group_handle_size(mut self, shader_group_handle_size: u32) -> Self { @@ -29557,8 +29813,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceRayTracingMaintenance1Features const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRayTracingMaintenance1FeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRayTracingMaintenance1FeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceRayTracingMaintenance1FeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceRayTracingMaintenance1FeaturesKHR<'child> +{ +} impl<'a> PhysicalDeviceRayTracingMaintenance1FeaturesKHR<'a> { #[inline] pub fn ray_tracing_maintenance1(mut self, ray_tracing_maintenance1: bool) -> Self { @@ -29604,7 +29866,10 @@ impl ::core::default::Default for DrmFormatModifierPropertiesListEXT<'_> { unsafe impl<'a> TaggedStructure for DrmFormatModifierPropertiesListEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT; } -unsafe impl ExtendsFormatProperties2 for DrmFormatModifierPropertiesListEXT<'_> {} +unsafe impl<'root, 'child> Extends<FormatProperties2<'root>> + for DrmFormatModifierPropertiesListEXT<'child> +{ +} impl<'a> DrmFormatModifierPropertiesListEXT<'a> { #[inline] pub fn drm_format_modifier_properties( @@ -29680,8 +29945,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceImageDrmFormatModifierInfoEXT< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT; } -unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 - for PhysicalDeviceImageDrmFormatModifierInfoEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceImageFormatInfo2<'root>> + for PhysicalDeviceImageDrmFormatModifierInfoEXT<'child> { } impl<'a> PhysicalDeviceImageDrmFormatModifierInfoEXT<'a> { @@ -29732,7 +29997,10 @@ unsafe impl<'a> TaggedStructure for ImageDrmFormatModifierListCreateInfoEXT<'a> const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT; } -unsafe impl ExtendsImageCreateInfo for ImageDrmFormatModifierListCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<ImageCreateInfo<'root>> + for ImageDrmFormatModifierListCreateInfoEXT<'child> +{ +} impl<'a> ImageDrmFormatModifierListCreateInfoEXT<'a> { #[inline] pub fn drm_format_modifiers(mut self, drm_format_modifiers: &'a [u64]) -> Self { @@ -29773,7 +30041,10 @@ unsafe impl<'a> TaggedStructure for ImageDrmFormatModifierExplicitCreateInfoEXT< const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT; } -unsafe impl ExtendsImageCreateInfo for ImageDrmFormatModifierExplicitCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<ImageCreateInfo<'root>> + for ImageDrmFormatModifierExplicitCreateInfoEXT<'child> +{ +} impl<'a> ImageDrmFormatModifierExplicitCreateInfoEXT<'a> { #[inline] pub fn drm_format_modifier(mut self, drm_format_modifier: u64) -> Self { @@ -29848,8 +30119,11 @@ impl ::core::default::Default for ImageStencilUsageCreateInfo<'_> { unsafe impl<'a> TaggedStructure for ImageStencilUsageCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_STENCIL_USAGE_CREATE_INFO; } -unsafe impl ExtendsImageCreateInfo for ImageStencilUsageCreateInfo<'_> {} -unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 for ImageStencilUsageCreateInfo<'_> {} +unsafe impl<'root, 'child> Extends<ImageCreateInfo<'root>> for ImageStencilUsageCreateInfo<'child> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceImageFormatInfo2<'root>> + for ImageStencilUsageCreateInfo<'child> +{ +} impl<'a> ImageStencilUsageCreateInfo<'a> { #[inline] pub fn stencil_usage(mut self, stencil_usage: ImageUsageFlags) -> Self { @@ -29885,7 +30159,10 @@ unsafe impl<'a> TaggedStructure for DeviceMemoryOverallocationCreateInfoAMD<'a> const STRUCTURE_TYPE: StructureType = StructureType::DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD; } -unsafe impl ExtendsDeviceCreateInfo for DeviceMemoryOverallocationCreateInfoAMD<'_> {} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for DeviceMemoryOverallocationCreateInfoAMD<'child> +{ +} impl<'a> DeviceMemoryOverallocationCreateInfoAMD<'a> { #[inline] pub fn overallocation_behavior( @@ -29928,8 +30205,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceFragmentDensityMapFeaturesEXT< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceFragmentDensityMapFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentDensityMapFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceFragmentDensityMapFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceFragmentDensityMapFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceFragmentDensityMapFeaturesEXT<'a> { #[inline] pub fn fragment_density_map(mut self, fragment_density_map: bool) -> Self { @@ -29979,8 +30262,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceFragmentDensityMap2FeaturesEXT const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceFragmentDensityMap2FeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentDensityMap2FeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceFragmentDensityMap2FeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceFragmentDensityMap2FeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceFragmentDensityMap2FeaturesEXT<'a> { #[inline] pub fn fragment_density_map_deferred(mut self, fragment_density_map_deferred: bool) -> Self { @@ -30016,11 +30305,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceFragmentDensityMapOffsetFeatur const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM<'_> {} impl<'a> PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM<'a> { #[inline] pub fn fragment_density_map_offset(mut self, fragment_density_map_offset: bool) -> Self { @@ -30060,7 +30352,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceFragmentDensityMapPropertiesEX const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceFragmentDensityMapPropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceFragmentDensityMapPropertiesEXT<'child> +{ +} impl<'a> PhysicalDeviceFragmentDensityMapPropertiesEXT<'a> { #[inline] pub fn min_fragment_density_texel_size( @@ -30118,8 +30413,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceFragmentDensityMap2PropertiesE const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceFragmentDensityMap2PropertiesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceFragmentDensityMap2PropertiesEXT<'child> { } impl<'a> PhysicalDeviceFragmentDensityMap2PropertiesEXT<'a> { @@ -30179,8 +30474,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceFragmentDensityMapOffsetProper const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM<'child> { } impl<'a> PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM<'a> { @@ -30221,8 +30516,14 @@ unsafe impl<'a> TaggedStructure for RenderPassFragmentDensityMapCreateInfoEXT<'a const STRUCTURE_TYPE: StructureType = StructureType::RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT; } -unsafe impl ExtendsRenderPassCreateInfo for RenderPassFragmentDensityMapCreateInfoEXT<'_> {} -unsafe impl ExtendsRenderPassCreateInfo2 for RenderPassFragmentDensityMapCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<RenderPassCreateInfo<'root>> + for RenderPassFragmentDensityMapCreateInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<RenderPassCreateInfo2<'root>> + for RenderPassFragmentDensityMapCreateInfoEXT<'child> +{ +} impl<'a> RenderPassFragmentDensityMapCreateInfoEXT<'a> { #[inline] pub fn fragment_density_map_attachment( @@ -30263,7 +30564,10 @@ unsafe impl<'a> TaggedStructure for SubpassFragmentDensityMapOffsetEndInfoQCOM<' const STRUCTURE_TYPE: StructureType = StructureType::SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM; } -unsafe impl ExtendsSubpassEndInfo for SubpassFragmentDensityMapOffsetEndInfoQCOM<'_> {} +unsafe impl<'root, 'child> Extends<SubpassEndInfo<'root>> + for SubpassFragmentDensityMapOffsetEndInfoQCOM<'child> +{ +} impl<'a> SubpassFragmentDensityMapOffsetEndInfoQCOM<'a> { #[inline] pub fn fragment_density_offsets(mut self, fragment_density_offsets: &'a [Offset2D]) -> Self { @@ -30300,8 +30604,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceScalarBlockLayoutFeatures<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceScalarBlockLayoutFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceScalarBlockLayoutFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceScalarBlockLayoutFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceScalarBlockLayoutFeatures<'child> +{ +} impl<'a> PhysicalDeviceScalarBlockLayoutFeatures<'a> { #[inline] pub fn scalar_block_layout(mut self, scalar_block_layout: bool) -> Self { @@ -30336,7 +30646,10 @@ impl ::core::default::Default for SurfaceProtectedCapabilitiesKHR<'_> { unsafe impl<'a> TaggedStructure for SurfaceProtectedCapabilitiesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SURFACE_PROTECTED_CAPABILITIES_KHR; } -unsafe impl ExtendsSurfaceCapabilities2KHR for SurfaceProtectedCapabilitiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<SurfaceCapabilities2KHR<'root>> + for SurfaceProtectedCapabilitiesKHR<'child> +{ +} impl<'a> SurfaceProtectedCapabilitiesKHR<'a> { #[inline] pub fn supports_protected(mut self, supports_protected: bool) -> Self { @@ -30372,11 +30685,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceUniformBufferStandardLayoutFea const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceUniformBufferStandardLayoutFeatures<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceUniformBufferStandardLayoutFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceUniformBufferStandardLayoutFeatures<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceUniformBufferStandardLayoutFeatures<'_> {} impl<'a> PhysicalDeviceUniformBufferStandardLayoutFeatures<'a> { #[inline] pub fn uniform_buffer_standard_layout(mut self, uniform_buffer_standard_layout: bool) -> Self { @@ -30412,8 +30728,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDepthClipEnableFeaturesEXT<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDepthClipEnableFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDepthClipEnableFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceDepthClipEnableFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceDepthClipEnableFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceDepthClipEnableFeaturesEXT<'a> { #[inline] pub fn depth_clip_enable(mut self, depth_clip_enable: bool) -> Self { @@ -30451,8 +30773,8 @@ unsafe impl<'a> TaggedStructure for PipelineRasterizationDepthClipStateCreateInf const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT; } -unsafe impl ExtendsPipelineRasterizationStateCreateInfo - for PipelineRasterizationDepthClipStateCreateInfoEXT<'_> +unsafe impl<'root, 'child> Extends<PipelineRasterizationStateCreateInfo<'root>> + for PipelineRasterizationDepthClipStateCreateInfoEXT<'child> { } impl<'a> PipelineRasterizationDepthClipStateCreateInfoEXT<'a> { @@ -30497,7 +30819,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceMemoryBudgetPropertiesEXT<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceMemoryProperties2 for PhysicalDeviceMemoryBudgetPropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceMemoryProperties2<'root>> + for PhysicalDeviceMemoryBudgetPropertiesEXT<'child> +{ +} impl<'a> PhysicalDeviceMemoryBudgetPropertiesEXT<'a> { #[inline] pub fn heap_budget(mut self, heap_budget: [DeviceSize; MAX_MEMORY_HEAPS]) -> Self { @@ -30538,8 +30863,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceMemoryPriorityFeaturesEXT<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMemoryPriorityFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMemoryPriorityFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceMemoryPriorityFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceMemoryPriorityFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceMemoryPriorityFeaturesEXT<'a> { #[inline] pub fn memory_priority(mut self, memory_priority: bool) -> Self { @@ -30574,7 +30905,10 @@ impl ::core::default::Default for MemoryPriorityAllocateInfoEXT<'_> { unsafe impl<'a> TaggedStructure for MemoryPriorityAllocateInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::MEMORY_PRIORITY_ALLOCATE_INFO_EXT; } -unsafe impl ExtendsMemoryAllocateInfo for MemoryPriorityAllocateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<MemoryAllocateInfo<'root>> + for MemoryPriorityAllocateInfoEXT<'child> +{ +} impl<'a> MemoryPriorityAllocateInfoEXT<'a> { #[inline] pub fn priority(mut self, priority: f32) -> Self { @@ -30610,11 +30944,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDevicePageableDeviceLocalMemoryFeatu const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT<'_> {} impl<'a> PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT<'a> { #[inline] pub fn pageable_device_local_memory(mut self, pageable_device_local_memory: bool) -> Self { @@ -30654,8 +30991,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceBufferDeviceAddressFeatures<'a const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceBufferDeviceAddressFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceBufferDeviceAddressFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceBufferDeviceAddressFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceBufferDeviceAddressFeatures<'child> +{ +} impl<'a> PhysicalDeviceBufferDeviceAddressFeatures<'a> { #[inline] pub fn buffer_device_address(mut self, buffer_device_address: bool) -> Self { @@ -30711,8 +31054,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceBufferDeviceAddressFeaturesEXT const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceBufferDeviceAddressFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceBufferDeviceAddressFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceBufferDeviceAddressFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceBufferDeviceAddressFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceBufferDeviceAddressFeaturesEXT<'a> { #[inline] pub fn buffer_device_address(mut self, buffer_device_address: bool) -> Self { @@ -30797,7 +31146,10 @@ impl ::core::default::Default for BufferOpaqueCaptureAddressCreateInfo<'_> { unsafe impl<'a> TaggedStructure for BufferOpaqueCaptureAddressCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO; } -unsafe impl ExtendsBufferCreateInfo for BufferOpaqueCaptureAddressCreateInfo<'_> {} +unsafe impl<'root, 'child> Extends<BufferCreateInfo<'root>> + for BufferOpaqueCaptureAddressCreateInfo<'child> +{ +} impl<'a> BufferOpaqueCaptureAddressCreateInfo<'a> { #[inline] pub fn opaque_capture_address(mut self, opaque_capture_address: u64) -> Self { @@ -30832,7 +31184,10 @@ impl ::core::default::Default for BufferDeviceAddressCreateInfoEXT<'_> { unsafe impl<'a> TaggedStructure for BufferDeviceAddressCreateInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT; } -unsafe impl ExtendsBufferCreateInfo for BufferDeviceAddressCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<BufferCreateInfo<'root>> + for BufferDeviceAddressCreateInfoEXT<'child> +{ +} impl<'a> BufferDeviceAddressCreateInfoEXT<'a> { #[inline] pub fn device_address(mut self, device_address: DeviceAddress) -> Self { @@ -30868,8 +31223,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceImageViewImageFormatInfoEXT<'a const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT; } -unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 - for PhysicalDeviceImageViewImageFormatInfoEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceImageFormatInfo2<'root>> + for PhysicalDeviceImageViewImageFormatInfoEXT<'child> { } impl<'a> PhysicalDeviceImageViewImageFormatInfoEXT<'a> { @@ -30909,7 +31264,10 @@ unsafe impl<'a> TaggedStructure for FilterCubicImageViewImageFormatPropertiesEXT const STRUCTURE_TYPE: StructureType = StructureType::FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT; } -unsafe impl ExtendsImageFormatProperties2 for FilterCubicImageViewImageFormatPropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<ImageFormatProperties2<'root>> + for FilterCubicImageViewImageFormatPropertiesEXT<'child> +{ +} impl<'a> FilterCubicImageViewImageFormatPropertiesEXT<'a> { #[inline] pub fn filter_cubic(mut self, filter_cubic: bool) -> Self { @@ -30950,8 +31308,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceImagelessFramebufferFeatures<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceImagelessFramebufferFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceImagelessFramebufferFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceImagelessFramebufferFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceImagelessFramebufferFeatures<'child> +{ +} impl<'a> PhysicalDeviceImagelessFramebufferFeatures<'a> { #[inline] pub fn imageless_framebuffer(mut self, imageless_framebuffer: bool) -> Self { @@ -30988,7 +31352,10 @@ impl ::core::default::Default for FramebufferAttachmentsCreateInfo<'_> { unsafe impl<'a> TaggedStructure for FramebufferAttachmentsCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::FRAMEBUFFER_ATTACHMENTS_CREATE_INFO; } -unsafe impl ExtendsFramebufferCreateInfo for FramebufferAttachmentsCreateInfo<'_> {} +unsafe impl<'root, 'child> Extends<FramebufferCreateInfo<'root>> + for FramebufferAttachmentsCreateInfo<'child> +{ +} impl<'a> FramebufferAttachmentsCreateInfo<'a> { #[inline] pub fn attachment_image_infos( @@ -31101,7 +31468,10 @@ impl ::core::default::Default for RenderPassAttachmentBeginInfo<'_> { unsafe impl<'a> TaggedStructure for RenderPassAttachmentBeginInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RENDER_PASS_ATTACHMENT_BEGIN_INFO; } -unsafe impl ExtendsRenderPassBeginInfo for RenderPassAttachmentBeginInfo<'_> {} +unsafe impl<'root, 'child> Extends<RenderPassBeginInfo<'root>> + for RenderPassAttachmentBeginInfo<'child> +{ +} impl<'a> RenderPassAttachmentBeginInfo<'a> { #[inline] pub fn attachments(mut self, attachments: &'a [ImageView]) -> Self { @@ -31138,8 +31508,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceTextureCompressionASTCHDRFeatu const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceTextureCompressionASTCHDRFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceTextureCompressionASTCHDRFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceTextureCompressionASTCHDRFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceTextureCompressionASTCHDRFeatures<'child> +{ +} impl<'a> PhysicalDeviceTextureCompressionASTCHDRFeatures<'a> { #[inline] pub fn texture_compression_astc_hdr(mut self, texture_compression_astc_hdr: bool) -> Self { @@ -31177,8 +31553,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceCooperativeMatrixFeaturesNV<'a const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCooperativeMatrixFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCooperativeMatrixFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceCooperativeMatrixFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceCooperativeMatrixFeaturesNV<'child> +{ +} impl<'a> PhysicalDeviceCooperativeMatrixFeaturesNV<'a> { #[inline] pub fn cooperative_matrix(mut self, cooperative_matrix: bool) -> Self { @@ -31223,7 +31605,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceCooperativeMatrixPropertiesNV< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceCooperativeMatrixPropertiesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceCooperativeMatrixPropertiesNV<'child> +{ +} impl<'a> PhysicalDeviceCooperativeMatrixPropertiesNV<'a> { #[inline] pub fn cooperative_matrix_supported_stages( @@ -31345,8 +31730,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceYcbcrImageArraysFeaturesEXT<'a const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceYcbcrImageArraysFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceYcbcrImageArraysFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceYcbcrImageArraysFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceYcbcrImageArraysFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceYcbcrImageArraysFeaturesEXT<'a> { #[inline] pub fn ycbcr_image_arrays(mut self, ycbcr_image_arrays: bool) -> Self { @@ -31470,7 +31861,7 @@ impl ::core::default::Default for PresentFrameTokenGGP<'_> { unsafe impl<'a> TaggedStructure for PresentFrameTokenGGP<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PRESENT_FRAME_TOKEN_GGP; } -unsafe impl ExtendsPresentInfoKHR for PresentFrameTokenGGP<'_> {} +unsafe impl<'root, 'child> Extends<PresentInfoKHR<'root>> for PresentFrameTokenGGP<'child> {} impl<'a> PresentFrameTokenGGP<'a> { #[inline] pub fn frame_token(mut self, frame_token: GgpFrameToken) -> Self { @@ -31530,11 +31921,26 @@ impl ::core::default::Default for PipelineCreationFeedbackCreateInfo<'_> { unsafe impl<'a> TaggedStructure for PipelineCreationFeedbackCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_CREATION_FEEDBACK_CREATE_INFO; } -unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineCreationFeedbackCreateInfo<'_> {} -unsafe impl ExtendsComputePipelineCreateInfo for PipelineCreationFeedbackCreateInfo<'_> {} -unsafe impl ExtendsRayTracingPipelineCreateInfoNV for PipelineCreationFeedbackCreateInfo<'_> {} -unsafe impl ExtendsRayTracingPipelineCreateInfoKHR for PipelineCreationFeedbackCreateInfo<'_> {} -unsafe impl ExtendsExecutionGraphPipelineCreateInfoAMDX for PipelineCreationFeedbackCreateInfo<'_> {} +unsafe impl<'root, 'child> Extends<GraphicsPipelineCreateInfo<'root>> + for PipelineCreationFeedbackCreateInfo<'child> +{ +} +unsafe impl<'root, 'child> Extends<ComputePipelineCreateInfo<'root>> + for PipelineCreationFeedbackCreateInfo<'child> +{ +} +unsafe impl<'root, 'child> Extends<RayTracingPipelineCreateInfoNV<'root>> + for PipelineCreationFeedbackCreateInfo<'child> +{ +} +unsafe impl<'root, 'child> Extends<RayTracingPipelineCreateInfoKHR<'root>> + for PipelineCreationFeedbackCreateInfo<'child> +{ +} +unsafe impl<'root, 'child> Extends<ExecutionGraphPipelineCreateInfoAMDX<'root>> + for PipelineCreationFeedbackCreateInfo<'child> +{ +} impl<'a> PipelineCreationFeedbackCreateInfo<'a> { #[inline] pub fn pipeline_creation_feedback( @@ -31581,8 +31987,14 @@ impl ::core::default::Default for SurfaceFullScreenExclusiveInfoEXT<'_> { unsafe impl<'a> TaggedStructure for SurfaceFullScreenExclusiveInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT; } -unsafe impl ExtendsPhysicalDeviceSurfaceInfo2KHR for SurfaceFullScreenExclusiveInfoEXT<'_> {} -unsafe impl ExtendsSwapchainCreateInfoKHR for SurfaceFullScreenExclusiveInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceSurfaceInfo2KHR<'root>> + for SurfaceFullScreenExclusiveInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<SwapchainCreateInfoKHR<'root>> + for SurfaceFullScreenExclusiveInfoEXT<'child> +{ +} impl<'a> SurfaceFullScreenExclusiveInfoEXT<'a> { #[inline] pub fn full_screen_exclusive(mut self, full_screen_exclusive: FullScreenExclusiveEXT) -> Self { @@ -31618,8 +32030,14 @@ unsafe impl<'a> TaggedStructure for SurfaceFullScreenExclusiveWin32InfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT; } -unsafe impl ExtendsPhysicalDeviceSurfaceInfo2KHR for SurfaceFullScreenExclusiveWin32InfoEXT<'_> {} -unsafe impl ExtendsSwapchainCreateInfoKHR for SurfaceFullScreenExclusiveWin32InfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceSurfaceInfo2KHR<'root>> + for SurfaceFullScreenExclusiveWin32InfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<SwapchainCreateInfoKHR<'root>> + for SurfaceFullScreenExclusiveWin32InfoEXT<'child> +{ +} impl<'a> SurfaceFullScreenExclusiveWin32InfoEXT<'a> { #[inline] pub fn hmonitor(mut self, hmonitor: HMONITOR) -> Self { @@ -31655,7 +32073,10 @@ unsafe impl<'a> TaggedStructure for SurfaceCapabilitiesFullScreenExclusiveEXT<'a const STRUCTURE_TYPE: StructureType = StructureType::SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT; } -unsafe impl ExtendsSurfaceCapabilities2KHR for SurfaceCapabilitiesFullScreenExclusiveEXT<'_> {} +unsafe impl<'root, 'child> Extends<SurfaceCapabilities2KHR<'root>> + for SurfaceCapabilitiesFullScreenExclusiveEXT<'child> +{ +} impl<'a> SurfaceCapabilitiesFullScreenExclusiveEXT<'a> { #[inline] pub fn full_screen_exclusive_supported( @@ -31694,8 +32115,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDevicePresentBarrierFeaturesNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePresentBarrierFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePresentBarrierFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDevicePresentBarrierFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDevicePresentBarrierFeaturesNV<'child> +{ +} impl<'a> PhysicalDevicePresentBarrierFeaturesNV<'a> { #[inline] pub fn present_barrier(mut self, present_barrier: bool) -> Self { @@ -31730,7 +32157,10 @@ impl ::core::default::Default for SurfaceCapabilitiesPresentBarrierNV<'_> { unsafe impl<'a> TaggedStructure for SurfaceCapabilitiesPresentBarrierNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SURFACE_CAPABILITIES_PRESENT_BARRIER_NV; } -unsafe impl ExtendsSurfaceCapabilities2KHR for SurfaceCapabilitiesPresentBarrierNV<'_> {} +unsafe impl<'root, 'child> Extends<SurfaceCapabilities2KHR<'root>> + for SurfaceCapabilitiesPresentBarrierNV<'child> +{ +} impl<'a> SurfaceCapabilitiesPresentBarrierNV<'a> { #[inline] pub fn present_barrier_supported(mut self, present_barrier_supported: bool) -> Self { @@ -31765,7 +32195,10 @@ impl ::core::default::Default for SwapchainPresentBarrierCreateInfoNV<'_> { unsafe impl<'a> TaggedStructure for SwapchainPresentBarrierCreateInfoNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV; } -unsafe impl ExtendsSwapchainCreateInfoKHR for SwapchainPresentBarrierCreateInfoNV<'_> {} +unsafe impl<'root, 'child> Extends<SwapchainCreateInfoKHR<'root>> + for SwapchainPresentBarrierCreateInfoNV<'child> +{ +} impl<'a> SwapchainPresentBarrierCreateInfoNV<'a> { #[inline] pub fn present_barrier_enable(mut self, present_barrier_enable: bool) -> Self { @@ -31803,8 +32236,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDevicePerformanceQueryFeaturesKHR<'a const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePerformanceQueryFeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePerformanceQueryFeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDevicePerformanceQueryFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDevicePerformanceQueryFeaturesKHR<'child> +{ +} impl<'a> PhysicalDevicePerformanceQueryFeaturesKHR<'a> { #[inline] pub fn performance_counter_query_pools( @@ -31852,7 +32291,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDevicePerformanceQueryPropertiesKHR< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDevicePerformanceQueryPropertiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDevicePerformanceQueryPropertiesKHR<'child> +{ +} impl<'a> PhysicalDevicePerformanceQueryPropertiesKHR<'a> { #[inline] pub fn allow_command_buffer_query_copies( @@ -32031,7 +32473,10 @@ impl ::core::default::Default for QueryPoolPerformanceCreateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for QueryPoolPerformanceCreateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR; } -unsafe impl ExtendsQueryPoolCreateInfo for QueryPoolPerformanceCreateInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<QueryPoolCreateInfo<'root>> + for QueryPoolPerformanceCreateInfoKHR<'child> +{ +} impl<'a> QueryPoolPerformanceCreateInfoKHR<'a> { #[inline] pub fn queue_family_index(mut self, queue_family_index: u32) -> Self { @@ -32130,8 +32575,8 @@ impl ::core::default::Default for PerformanceQuerySubmitInfoKHR<'_> { unsafe impl<'a> TaggedStructure for PerformanceQuerySubmitInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PERFORMANCE_QUERY_SUBMIT_INFO_KHR; } -unsafe impl ExtendsSubmitInfo for PerformanceQuerySubmitInfoKHR<'_> {} -unsafe impl ExtendsSubmitInfo2 for PerformanceQuerySubmitInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<SubmitInfo<'root>> for PerformanceQuerySubmitInfoKHR<'child> {} +unsafe impl<'root, 'child> Extends<SubmitInfo2<'root>> for PerformanceQuerySubmitInfoKHR<'child> {} impl<'a> PerformanceQuerySubmitInfoKHR<'a> { #[inline] pub fn counter_pass_index(mut self, counter_pass_index: u32) -> Self { @@ -32201,8 +32646,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceCoverageReductionModeFeaturesN const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCoverageReductionModeFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCoverageReductionModeFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceCoverageReductionModeFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceCoverageReductionModeFeaturesNV<'child> +{ +} impl<'a> PhysicalDeviceCoverageReductionModeFeaturesNV<'a> { #[inline] pub fn coverage_reduction_mode(mut self, coverage_reduction_mode: bool) -> Self { @@ -32240,8 +32691,8 @@ unsafe impl<'a> TaggedStructure for PipelineCoverageReductionStateCreateInfoNV<' const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV; } -unsafe impl ExtendsPipelineMultisampleStateCreateInfo - for PipelineCoverageReductionStateCreateInfoNV<'_> +unsafe impl<'root, 'child> Extends<PipelineMultisampleStateCreateInfo<'root>> + for PipelineCoverageReductionStateCreateInfoNV<'child> { } impl<'a> PipelineCoverageReductionStateCreateInfoNV<'a> { @@ -32345,11 +32796,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderIntegerFunctions2Feature const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL<'_> {} impl<'a> PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL<'a> { #[inline] pub fn shader_integer_functions2(mut self, shader_integer_functions2: bool) -> Self { @@ -32464,7 +32918,10 @@ unsafe impl<'a> TaggedStructure for QueryPoolPerformanceQueryCreateInfoINTEL<'a> const STRUCTURE_TYPE: StructureType = StructureType::QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL; } -unsafe impl ExtendsQueryPoolCreateInfo for QueryPoolPerformanceQueryCreateInfoINTEL<'_> {} +unsafe impl<'root, 'child> Extends<QueryPoolCreateInfo<'root>> + for QueryPoolPerformanceQueryCreateInfoINTEL<'child> +{ +} impl<'a> QueryPoolPerformanceQueryCreateInfoINTEL<'a> { #[inline] pub fn performance_counters_sampling( @@ -32655,8 +33112,14 @@ impl ::core::default::Default for PhysicalDeviceShaderClockFeaturesKHR<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderClockFeaturesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderClockFeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderClockFeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderClockFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderClockFeaturesKHR<'child> +{ +} impl<'a> PhysicalDeviceShaderClockFeaturesKHR<'a> { #[inline] pub fn shader_subgroup_clock(mut self, shader_subgroup_clock: bool) -> Self { @@ -32697,8 +33160,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceIndexTypeUint8FeaturesKHR<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceIndexTypeUint8FeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceIndexTypeUint8FeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceIndexTypeUint8FeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceIndexTypeUint8FeaturesKHR<'child> +{ +} impl<'a> PhysicalDeviceIndexTypeUint8FeaturesKHR<'a> { #[inline] pub fn index_type_uint8(mut self, index_type_uint8: bool) -> Self { @@ -32736,7 +33205,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderSMBuiltinsPropertiesNV<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceShaderSMBuiltinsPropertiesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceShaderSMBuiltinsPropertiesNV<'child> +{ +} impl<'a> PhysicalDeviceShaderSMBuiltinsPropertiesNV<'a> { #[inline] pub fn shader_sm_count(mut self, shader_sm_count: u32) -> Self { @@ -32777,8 +33249,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderSMBuiltinsFeaturesNV<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderSMBuiltinsFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderSMBuiltinsFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderSMBuiltinsFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderSMBuiltinsFeaturesNV<'child> +{ +} impl<'a> PhysicalDeviceShaderSMBuiltinsFeaturesNV<'a> { #[inline] pub fn shader_sm_builtins(mut self, shader_sm_builtins: bool) -> Self { @@ -32818,11 +33296,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceFragmentShaderInterlockFeature const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceFragmentShaderInterlockFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceFragmentShaderInterlockFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceFragmentShaderInterlockFeaturesEXT<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentShaderInterlockFeaturesEXT<'_> {} impl<'a> PhysicalDeviceFragmentShaderInterlockFeaturesEXT<'a> { #[inline] pub fn fragment_shader_sample_interlock( @@ -32877,11 +33358,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceSeparateDepthStencilLayoutsFea const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceSeparateDepthStencilLayoutsFeatures<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceSeparateDepthStencilLayoutsFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceSeparateDepthStencilLayoutsFeatures<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSeparateDepthStencilLayoutsFeatures<'_> {} impl<'a> PhysicalDeviceSeparateDepthStencilLayoutsFeatures<'a> { #[inline] pub fn separate_depth_stencil_layouts(mut self, separate_depth_stencil_layouts: bool) -> Self { @@ -32916,7 +33400,10 @@ impl ::core::default::Default for AttachmentReferenceStencilLayout<'_> { unsafe impl<'a> TaggedStructure for AttachmentReferenceStencilLayout<'a> { const STRUCTURE_TYPE: StructureType = StructureType::ATTACHMENT_REFERENCE_STENCIL_LAYOUT; } -unsafe impl ExtendsAttachmentReference2 for AttachmentReferenceStencilLayout<'_> {} +unsafe impl<'root, 'child> Extends<AttachmentReference2<'root>> + for AttachmentReferenceStencilLayout<'child> +{ +} impl<'a> AttachmentReferenceStencilLayout<'a> { #[inline] pub fn stencil_layout(mut self, stencil_layout: ImageLayout) -> Self { @@ -32954,11 +33441,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDevicePrimitiveTopologyListRestartFe const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT<'_> {} impl<'a> PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT<'a> { #[inline] pub fn primitive_topology_list_restart( @@ -33006,7 +33496,10 @@ impl ::core::default::Default for AttachmentDescriptionStencilLayout<'_> { unsafe impl<'a> TaggedStructure for AttachmentDescriptionStencilLayout<'a> { const STRUCTURE_TYPE: StructureType = StructureType::ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT; } -unsafe impl ExtendsAttachmentDescription2 for AttachmentDescriptionStencilLayout<'_> {} +unsafe impl<'root, 'child> Extends<AttachmentDescription2<'root>> + for AttachmentDescriptionStencilLayout<'child> +{ +} impl<'a> AttachmentDescriptionStencilLayout<'a> { #[inline] pub fn stencil_initial_layout(mut self, stencil_initial_layout: ImageLayout) -> Self { @@ -33047,11 +33540,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDevicePipelineExecutablePropertiesFe const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR<'_> {} impl<'a> PhysicalDevicePipelineExecutablePropertiesFeaturesKHR<'a> { #[inline] pub fn pipeline_executable_info(mut self, pipeline_executable_info: bool) -> Self { @@ -33410,11 +33906,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderDemoteToHelperInvocation const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceShaderDemoteToHelperInvocationFeatures<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderDemoteToHelperInvocationFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderDemoteToHelperInvocationFeatures<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderDemoteToHelperInvocationFeatures<'_> {} impl<'a> PhysicalDeviceShaderDemoteToHelperInvocationFeatures<'a> { #[inline] pub fn shader_demote_to_helper_invocation( @@ -33453,8 +33952,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceTexelBufferAlignmentFeaturesEX const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceTexelBufferAlignmentFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceTexelBufferAlignmentFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceTexelBufferAlignmentFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceTexelBufferAlignmentFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceTexelBufferAlignmentFeaturesEXT<'a> { #[inline] pub fn texel_buffer_alignment(mut self, texel_buffer_alignment: bool) -> Self { @@ -33496,7 +34001,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceTexelBufferAlignmentProperties const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceTexelBufferAlignmentProperties<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceTexelBufferAlignmentProperties<'child> +{ +} impl<'a> PhysicalDeviceTexelBufferAlignmentProperties<'a> { #[inline] pub fn storage_texel_buffer_offset_alignment_bytes( @@ -33565,8 +34073,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceSubgroupSizeControlFeatures<'a const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceSubgroupSizeControlFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSubgroupSizeControlFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceSubgroupSizeControlFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceSubgroupSizeControlFeatures<'child> +{ +} impl<'a> PhysicalDeviceSubgroupSizeControlFeatures<'a> { #[inline] pub fn subgroup_size_control(mut self, subgroup_size_control: bool) -> Self { @@ -33613,7 +34127,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceSubgroupSizeControlProperties< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceSubgroupSizeControlProperties<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceSubgroupSizeControlProperties<'child> +{ +} impl<'a> PhysicalDeviceSubgroupSizeControlProperties<'a> { #[inline] pub fn min_subgroup_size(mut self, min_subgroup_size: u32) -> Self { @@ -33667,11 +34184,14 @@ unsafe impl<'a> TaggedStructure for PipelineShaderStageRequiredSubgroupSizeCreat const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO; } -unsafe impl ExtendsPipelineShaderStageCreateInfo - for PipelineShaderStageRequiredSubgroupSizeCreateInfo<'_> +unsafe impl<'root, 'child> Extends<PipelineShaderStageCreateInfo<'root>> + for PipelineShaderStageRequiredSubgroupSizeCreateInfo<'child> +{ +} +unsafe impl<'root, 'child> Extends<ShaderCreateInfoEXT<'root>> + for PipelineShaderStageRequiredSubgroupSizeCreateInfo<'child> { } -unsafe impl ExtendsShaderCreateInfoEXT for PipelineShaderStageRequiredSubgroupSizeCreateInfo<'_> {} impl<'a> PipelineShaderStageRequiredSubgroupSizeCreateInfo<'a> { #[inline] pub fn required_subgroup_size(mut self, required_subgroup_size: u32) -> Self { @@ -33709,7 +34229,10 @@ unsafe impl<'a> TaggedStructure for SubpassShadingPipelineCreateInfoHUAWEI<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI; } -unsafe impl ExtendsComputePipelineCreateInfo for SubpassShadingPipelineCreateInfoHUAWEI<'_> {} +unsafe impl<'root, 'child> Extends<ComputePipelineCreateInfo<'root>> + for SubpassShadingPipelineCreateInfoHUAWEI<'child> +{ +} impl<'a> SubpassShadingPipelineCreateInfoHUAWEI<'a> { #[inline] pub fn render_pass(mut self, render_pass: RenderPass) -> Self { @@ -33750,7 +34273,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceSubpassShadingPropertiesHUAWEI const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceSubpassShadingPropertiesHUAWEI<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceSubpassShadingPropertiesHUAWEI<'child> +{ +} impl<'a> PhysicalDeviceSubpassShadingPropertiesHUAWEI<'a> { #[inline] pub fn max_subpass_shading_workgroup_size_aspect_ratio( @@ -33796,8 +34322,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceClusterCullingShaderProperties const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceClusterCullingShaderPropertiesHUAWEI<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceClusterCullingShaderPropertiesHUAWEI<'child> { } impl<'a> PhysicalDeviceClusterCullingShaderPropertiesHUAWEI<'a> { @@ -33853,7 +34379,10 @@ unsafe impl<'a> TaggedStructure for MemoryOpaqueCaptureAddressAllocateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO; } -unsafe impl ExtendsMemoryAllocateInfo for MemoryOpaqueCaptureAddressAllocateInfo<'_> {} +unsafe impl<'root, 'child> Extends<MemoryAllocateInfo<'root>> + for MemoryOpaqueCaptureAddressAllocateInfo<'child> +{ +} impl<'a> MemoryOpaqueCaptureAddressAllocateInfo<'a> { #[inline] pub fn opaque_capture_address(mut self, opaque_capture_address: u64) -> Self { @@ -33933,8 +34462,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceLineRasterizationFeaturesKHR<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceLineRasterizationFeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceLineRasterizationFeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceLineRasterizationFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceLineRasterizationFeaturesKHR<'child> +{ +} impl<'a> PhysicalDeviceLineRasterizationFeaturesKHR<'a> { #[inline] pub fn rectangular_lines(mut self, rectangular_lines: bool) -> Self { @@ -33995,7 +34530,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceLineRasterizationPropertiesKHR const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceLineRasterizationPropertiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceLineRasterizationPropertiesKHR<'child> +{ +} impl<'a> PhysicalDeviceLineRasterizationPropertiesKHR<'a> { #[inline] pub fn line_sub_pixel_precision_bits(mut self, line_sub_pixel_precision_bits: u32) -> Self { @@ -34037,8 +34575,8 @@ unsafe impl<'a> TaggedStructure for PipelineRasterizationLineStateCreateInfoKHR< const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR; } -unsafe impl ExtendsPipelineRasterizationStateCreateInfo - for PipelineRasterizationLineStateCreateInfoKHR<'_> +unsafe impl<'root, 'child> Extends<PipelineRasterizationStateCreateInfo<'root>> + for PipelineRasterizationLineStateCreateInfoKHR<'child> { } impl<'a> PipelineRasterizationLineStateCreateInfoKHR<'a> { @@ -34094,11 +34632,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDevicePipelineCreationCacheControlFe const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDevicePipelineCreationCacheControlFeatures<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDevicePipelineCreationCacheControlFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDevicePipelineCreationCacheControlFeatures<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePipelineCreationCacheControlFeatures<'_> {} impl<'a> PhysicalDevicePipelineCreationCacheControlFeatures<'a> { #[inline] pub fn pipeline_creation_cache_control( @@ -34158,8 +34699,14 @@ impl ::core::default::Default for PhysicalDeviceVulkan11Features<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceVulkan11Features<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VULKAN_1_1_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVulkan11Features<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVulkan11Features<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceVulkan11Features<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceVulkan11Features<'child> +{ +} impl<'a> PhysicalDeviceVulkan11Features<'a> { #[inline] pub fn storage_buffer16_bit_access(mut self, storage_buffer16_bit_access: bool) -> Self { @@ -34284,7 +34831,10 @@ impl ::core::default::Default for PhysicalDeviceVulkan11Properties<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceVulkan11Properties<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceVulkan11Properties<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceVulkan11Properties<'child> +{ +} impl<'a> PhysicalDeviceVulkan11Properties<'a> { #[inline] pub fn device_uuid(mut self, device_uuid: [u8; UUID_SIZE]) -> Self { @@ -34493,8 +35043,14 @@ impl ::core::default::Default for PhysicalDeviceVulkan12Features<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceVulkan12Features<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VULKAN_1_2_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVulkan12Features<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVulkan12Features<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceVulkan12Features<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceVulkan12Features<'child> +{ +} impl<'a> PhysicalDeviceVulkan12Features<'a> { #[inline] pub fn sampler_mirror_clamp_to_edge(mut self, sampler_mirror_clamp_to_edge: bool) -> Self { @@ -35150,7 +35706,10 @@ impl ::core::default::Default for PhysicalDeviceVulkan12Properties<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceVulkan12Properties<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceVulkan12Properties<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceVulkan12Properties<'child> +{ +} impl<'a> PhysicalDeviceVulkan12Properties<'a> { #[inline] pub fn driver_id(mut self, driver_id: DriverId) -> Self { @@ -35629,8 +36188,14 @@ impl ::core::default::Default for PhysicalDeviceVulkan13Features<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceVulkan13Features<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VULKAN_1_3_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVulkan13Features<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVulkan13Features<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceVulkan13Features<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceVulkan13Features<'child> +{ +} impl<'a> PhysicalDeviceVulkan13Features<'a> { #[inline] pub fn robust_image_access(mut self, robust_image_access: bool) -> Self { @@ -35789,7 +36354,10 @@ impl ::core::default::Default for PhysicalDeviceVulkan13Properties<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceVulkan13Properties<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceVulkan13Properties<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceVulkan13Properties<'child> +{ +} impl<'a> PhysicalDeviceVulkan13Properties<'a> { #[inline] pub fn min_subgroup_size(mut self, min_subgroup_size: u32) -> Self { @@ -36197,10 +36765,16 @@ impl ::core::default::Default for PipelineCompilerControlCreateInfoAMD<'_> { unsafe impl<'a> TaggedStructure for PipelineCompilerControlCreateInfoAMD<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD; } -unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineCompilerControlCreateInfoAMD<'_> {} -unsafe impl ExtendsComputePipelineCreateInfo for PipelineCompilerControlCreateInfoAMD<'_> {} -unsafe impl ExtendsExecutionGraphPipelineCreateInfoAMDX - for PipelineCompilerControlCreateInfoAMD<'_> +unsafe impl<'root, 'child> Extends<GraphicsPipelineCreateInfo<'root>> + for PipelineCompilerControlCreateInfoAMD<'child> +{ +} +unsafe impl<'root, 'child> Extends<ComputePipelineCreateInfo<'root>> + for PipelineCompilerControlCreateInfoAMD<'child> +{ +} +unsafe impl<'root, 'child> Extends<ExecutionGraphPipelineCreateInfoAMDX<'root>> + for PipelineCompilerControlCreateInfoAMD<'child> { } impl<'a> PipelineCompilerControlCreateInfoAMD<'a> { @@ -36241,8 +36815,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceCoherentMemoryFeaturesAMD<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCoherentMemoryFeaturesAMD<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCoherentMemoryFeaturesAMD<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceCoherentMemoryFeaturesAMD<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceCoherentMemoryFeaturesAMD<'child> +{ +} impl<'a> PhysicalDeviceCoherentMemoryFeaturesAMD<'a> { #[inline] pub fn device_coherent_memory(mut self, device_coherent_memory: bool) -> Self { @@ -36383,7 +36963,10 @@ unsafe impl<'a> TaggedStructure for SamplerCustomBorderColorCreateInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT; } -unsafe impl ExtendsSamplerCreateInfo for SamplerCustomBorderColorCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<SamplerCreateInfo<'root>> + for SamplerCustomBorderColorCreateInfoEXT<'child> +{ +} impl<'a> SamplerCustomBorderColorCreateInfoEXT<'a> { #[inline] pub fn custom_border_color(mut self, custom_border_color: ClearColorValue) -> Self { @@ -36424,7 +37007,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceCustomBorderColorPropertiesEXT const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceCustomBorderColorPropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceCustomBorderColorPropertiesEXT<'child> +{ +} impl<'a> PhysicalDeviceCustomBorderColorPropertiesEXT<'a> { #[inline] pub fn max_custom_border_color_samplers( @@ -36465,8 +37051,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceCustomBorderColorFeaturesEXT<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCustomBorderColorFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCustomBorderColorFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceCustomBorderColorFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceCustomBorderColorFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceCustomBorderColorFeaturesEXT<'a> { #[inline] pub fn custom_border_colors(mut self, custom_border_colors: bool) -> Self { @@ -36512,7 +37104,10 @@ unsafe impl<'a> TaggedStructure for SamplerBorderColorComponentMappingCreateInfo const STRUCTURE_TYPE: StructureType = StructureType::SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT; } -unsafe impl ExtendsSamplerCreateInfo for SamplerBorderColorComponentMappingCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<SamplerCreateInfo<'root>> + for SamplerBorderColorComponentMappingCreateInfoEXT<'child> +{ +} impl<'a> SamplerBorderColorComponentMappingCreateInfoEXT<'a> { #[inline] pub fn components(mut self, components: ComponentMapping) -> Self { @@ -36555,8 +37150,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceBorderColorSwizzleFeaturesEXT< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceBorderColorSwizzleFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceBorderColorSwizzleFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceBorderColorSwizzleFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceBorderColorSwizzleFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceBorderColorSwizzleFeaturesEXT<'a> { #[inline] pub fn border_color_swizzle(mut self, border_color_swizzle: bool) -> Self { @@ -36666,7 +37267,6 @@ unsafe impl<'a> TaggedStructure for AccelerationStructureGeometryTrianglesDataKH const STRUCTURE_TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR; } -pub unsafe trait ExtendsAccelerationStructureGeometryTrianglesDataKHR {} impl<'a> AccelerationStructureGeometryTrianglesDataKHR<'a> { #[inline] pub fn vertex_format(mut self, vertex_format: Format) -> Self { @@ -36712,10 +37312,7 @@ impl<'a> AccelerationStructureGeometryTrianglesDataKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsAccelerationStructureGeometryTrianglesDataKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -36739,10 +37336,7 @@ impl<'a> AccelerationStructureGeometryTrianglesDataKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsAccelerationStructureGeometryTrianglesDataKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -36750,10 +37344,7 @@ impl<'a> AccelerationStructureGeometryTrianglesDataKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsAccelerationStructureGeometryTrianglesDataKHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -37124,7 +37715,6 @@ impl ::core::default::Default for AccelerationStructureCreateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for AccelerationStructureCreateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_CREATE_INFO_KHR; } -pub unsafe trait ExtendsAccelerationStructureCreateInfoKHR {} impl<'a> AccelerationStructureCreateInfoKHR<'a> { #[inline] pub fn create_flags(mut self, create_flags: AccelerationStructureCreateFlagsKHR) -> Self { @@ -37165,10 +37755,7 @@ impl<'a> AccelerationStructureCreateInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsAccelerationStructureCreateInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -37192,10 +37779,7 @@ impl<'a> AccelerationStructureCreateInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsAccelerationStructureCreateInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -37203,10 +37787,7 @@ impl<'a> AccelerationStructureCreateInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsAccelerationStructureCreateInfoKHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -37591,7 +38172,10 @@ impl ::core::default::Default for PipelineLibraryCreateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for PipelineLibraryCreateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_LIBRARY_CREATE_INFO_KHR; } -unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineLibraryCreateInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<GraphicsPipelineCreateInfo<'root>> + for PipelineLibraryCreateInfoKHR<'child> +{ +} impl<'a> PipelineLibraryCreateInfoKHR<'a> { #[inline] pub fn libraries(mut self, libraries: &'a [Pipeline]) -> Self { @@ -37628,8 +38212,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceExtendedDynamicStateFeaturesEX const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceExtendedDynamicStateFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExtendedDynamicStateFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceExtendedDynamicStateFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceExtendedDynamicStateFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceExtendedDynamicStateFeaturesEXT<'a> { #[inline] pub fn extended_dynamic_state(mut self, extended_dynamic_state: bool) -> Self { @@ -37669,8 +38259,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceExtendedDynamicState2FeaturesE const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceExtendedDynamicState2FeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExtendedDynamicState2FeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceExtendedDynamicState2FeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceExtendedDynamicState2FeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceExtendedDynamicState2FeaturesEXT<'a> { #[inline] pub fn extended_dynamic_state2(mut self, extended_dynamic_state2: bool) -> Self { @@ -37783,8 +38379,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceExtendedDynamicState3FeaturesE const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceExtendedDynamicState3FeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExtendedDynamicState3FeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceExtendedDynamicState3FeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceExtendedDynamicState3FeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceExtendedDynamicState3FeaturesEXT<'a> { #[inline] pub fn extended_dynamic_state3_tessellation_domain_origin( @@ -38092,8 +38694,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceExtendedDynamicState3Propertie const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceExtendedDynamicState3PropertiesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceExtendedDynamicState3PropertiesEXT<'child> { } impl<'a> PhysicalDeviceExtendedDynamicState3PropertiesEXT<'a> { @@ -38218,7 +38820,10 @@ impl ::core::default::Default for RenderPassTransformBeginInfoQCOM<'_> { unsafe impl<'a> TaggedStructure for RenderPassTransformBeginInfoQCOM<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM; } -unsafe impl ExtendsRenderPassBeginInfo for RenderPassTransformBeginInfoQCOM<'_> {} +unsafe impl<'root, 'child> Extends<RenderPassBeginInfo<'root>> + for RenderPassTransformBeginInfoQCOM<'child> +{ +} impl<'a> RenderPassTransformBeginInfoQCOM<'a> { #[inline] pub fn transform(mut self, transform: SurfaceTransformFlagsKHR) -> Self { @@ -38253,8 +38858,11 @@ impl ::core::default::Default for CopyCommandTransformInfoQCOM<'_> { unsafe impl<'a> TaggedStructure for CopyCommandTransformInfoQCOM<'a> { const STRUCTURE_TYPE: StructureType = StructureType::COPY_COMMAND_TRANSFORM_INFO_QCOM; } -unsafe impl ExtendsBufferImageCopy2 for CopyCommandTransformInfoQCOM<'_> {} -unsafe impl ExtendsImageBlit2 for CopyCommandTransformInfoQCOM<'_> {} +unsafe impl<'root, 'child> Extends<BufferImageCopy2<'root>> + for CopyCommandTransformInfoQCOM<'child> +{ +} +unsafe impl<'root, 'child> Extends<ImageBlit2<'root>> for CopyCommandTransformInfoQCOM<'child> {} impl<'a> CopyCommandTransformInfoQCOM<'a> { #[inline] pub fn transform(mut self, transform: SurfaceTransformFlagsKHR) -> Self { @@ -38292,8 +38900,8 @@ unsafe impl<'a> TaggedStructure for CommandBufferInheritanceRenderPassTransformI const STRUCTURE_TYPE: StructureType = StructureType::COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM; } -unsafe impl ExtendsCommandBufferInheritanceInfo - for CommandBufferInheritanceRenderPassTransformInfoQCOM<'_> +unsafe impl<'root, 'child> Extends<CommandBufferInheritanceInfo<'root>> + for CommandBufferInheritanceRenderPassTransformInfoQCOM<'child> { } impl<'a> CommandBufferInheritanceRenderPassTransformInfoQCOM<'a> { @@ -38336,8 +38944,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDiagnosticsConfigFeaturesNV<'a const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDiagnosticsConfigFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDiagnosticsConfigFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceDiagnosticsConfigFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceDiagnosticsConfigFeaturesNV<'child> +{ +} impl<'a> PhysicalDeviceDiagnosticsConfigFeaturesNV<'a> { #[inline] pub fn diagnostics_config(mut self, diagnostics_config: bool) -> Self { @@ -38372,7 +38986,10 @@ impl ::core::default::Default for DeviceDiagnosticsConfigCreateInfoNV<'_> { unsafe impl<'a> TaggedStructure for DeviceDiagnosticsConfigCreateInfoNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV; } -unsafe impl ExtendsDeviceCreateInfo for DeviceDiagnosticsConfigCreateInfoNV<'_> {} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for DeviceDiagnosticsConfigCreateInfoNV<'child> +{ +} impl<'a> DeviceDiagnosticsConfigCreateInfoNV<'a> { #[inline] pub fn flags(mut self, flags: DeviceDiagnosticsConfigFlagsNV) -> Self { @@ -38408,11 +39025,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceZeroInitializeWorkgroupMemoryF const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures<'_> {} impl<'a> PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures<'a> { #[inline] pub fn shader_zero_initialize_workgroup_memory( @@ -38452,12 +39072,12 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderSubgroupUniformControlFl const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR<'child> { } -unsafe impl ExtendsDeviceCreateInfo - for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR<'_> +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR<'child> { } impl<'a> PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR<'a> { @@ -38501,8 +39121,14 @@ impl ::core::default::Default for PhysicalDeviceRobustness2FeaturesEXT<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceRobustness2FeaturesEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRobustness2FeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRobustness2FeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceRobustness2FeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceRobustness2FeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceRobustness2FeaturesEXT<'a> { #[inline] pub fn robust_buffer_access2(mut self, robust_buffer_access2: bool) -> Self { @@ -38550,7 +39176,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceRobustness2PropertiesEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceRobustness2PropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceRobustness2PropertiesEXT<'child> +{ +} impl<'a> PhysicalDeviceRobustness2PropertiesEXT<'a> { #[inline] pub fn robust_storage_buffer_access_size_alignment( @@ -38598,8 +39227,14 @@ impl ::core::default::Default for PhysicalDeviceImageRobustnessFeatures<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceImageRobustnessFeatures<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceImageRobustnessFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceImageRobustnessFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceImageRobustnessFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceImageRobustnessFeatures<'child> +{ +} impl<'a> PhysicalDeviceImageRobustnessFeatures<'a> { #[inline] pub fn robust_image_access(mut self, robust_image_access: bool) -> Self { @@ -38641,11 +39276,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceWorkgroupMemoryExplicitLayoutF const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR<'_> {} impl<'a> PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR<'a> { #[inline] pub fn workgroup_memory_explicit_layout( @@ -38739,8 +39377,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDevicePortabilitySubsetFeaturesKHR<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePortabilitySubsetFeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePortabilitySubsetFeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDevicePortabilitySubsetFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDevicePortabilitySubsetFeaturesKHR<'child> +{ +} impl<'a> PhysicalDevicePortabilitySubsetFeaturesKHR<'a> { #[inline] pub fn constant_alpha_color_blend_factors( @@ -38859,7 +39503,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDevicePortabilitySubsetPropertiesKHR const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDevicePortabilitySubsetPropertiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDevicePortabilitySubsetPropertiesKHR<'child> +{ +} impl<'a> PhysicalDevicePortabilitySubsetPropertiesKHR<'a> { #[inline] pub fn min_vertex_input_binding_stride_alignment( @@ -38899,8 +39546,14 @@ impl ::core::default::Default for PhysicalDevice4444FormatsFeaturesEXT<'_> { unsafe impl<'a> TaggedStructure for PhysicalDevice4444FormatsFeaturesEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevice4444FormatsFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDevice4444FormatsFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDevice4444FormatsFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDevice4444FormatsFeaturesEXT<'child> +{ +} impl<'a> PhysicalDevice4444FormatsFeaturesEXT<'a> { #[inline] pub fn format_a4r4g4b4(mut self, format_a4r4g4b4: bool) -> Self { @@ -38941,8 +39594,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceSubpassShadingFeaturesHUAWEI<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceSubpassShadingFeaturesHUAWEI<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSubpassShadingFeaturesHUAWEI<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceSubpassShadingFeaturesHUAWEI<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceSubpassShadingFeaturesHUAWEI<'child> +{ +} impl<'a> PhysicalDeviceSubpassShadingFeaturesHUAWEI<'a> { #[inline] pub fn subpass_shading(mut self, subpass_shading: bool) -> Self { @@ -38980,12 +39639,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceClusterCullingShaderFeaturesHU const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI<'_> {} -pub unsafe trait ExtendsPhysicalDeviceClusterCullingShaderFeaturesHUAWEI {} impl<'a> PhysicalDeviceClusterCullingShaderFeaturesHUAWEI<'a> { #[inline] pub fn clusterculling_shader(mut self, clusterculling_shader: bool) -> Self { @@ -39009,10 +39670,7 @@ impl<'a> PhysicalDeviceClusterCullingShaderFeaturesHUAWEI<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsPhysicalDeviceClusterCullingShaderFeaturesHUAWEI + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -39036,10 +39694,7 @@ impl<'a> PhysicalDeviceClusterCullingShaderFeaturesHUAWEI<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsPhysicalDeviceClusterCullingShaderFeaturesHUAWEI + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -39047,10 +39702,7 @@ impl<'a> PhysicalDeviceClusterCullingShaderFeaturesHUAWEI<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsPhysicalDeviceClusterCullingShaderFeaturesHUAWEI + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -39082,8 +39734,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceClusterCullingShaderVrsFeature const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI; } -unsafe impl ExtendsPhysicalDeviceClusterCullingShaderFeaturesHUAWEI - for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceClusterCullingShaderFeaturesHUAWEI<'root>> + for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI<'child> { } impl<'a> PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI<'a> { @@ -39236,7 +39888,6 @@ impl ::core::default::Default for ImageBlit2<'_> { unsafe impl<'a> TaggedStructure for ImageBlit2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_BLIT_2; } -pub unsafe trait ExtendsImageBlit2 {} impl<'a> ImageBlit2<'a> { #[inline] pub fn src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self { @@ -39267,7 +39918,7 @@ impl<'a> ImageBlit2<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsImageBlit2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -39291,7 +39942,7 @@ impl<'a> ImageBlit2<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsImageBlit2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -39299,7 +39950,7 @@ impl<'a> ImageBlit2<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsImageBlit2 + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -39340,7 +39991,6 @@ impl ::core::default::Default for BufferImageCopy2<'_> { unsafe impl<'a> TaggedStructure for BufferImageCopy2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BUFFER_IMAGE_COPY_2; } -pub unsafe trait ExtendsBufferImageCopy2 {} impl<'a> BufferImageCopy2<'a> { #[inline] pub fn buffer_offset(mut self, buffer_offset: DeviceSize) -> Self { @@ -39381,7 +40031,7 @@ impl<'a> BufferImageCopy2<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsBufferImageCopy2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -39405,7 +40055,7 @@ impl<'a> BufferImageCopy2<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsBufferImageCopy2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -39413,7 +40063,7 @@ impl<'a> BufferImageCopy2<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsBufferImageCopy2 + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -39634,7 +40284,6 @@ impl ::core::default::Default for BlitImageInfo2<'_> { unsafe impl<'a> TaggedStructure for BlitImageInfo2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BLIT_IMAGE_INFO_2; } -pub unsafe trait ExtendsBlitImageInfo2 {} impl<'a> BlitImageInfo2<'a> { #[inline] pub fn src_image(mut self, src_image: Image) -> Self { @@ -39676,7 +40325,7 @@ impl<'a> BlitImageInfo2<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsBlitImageInfo2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -39700,7 +40349,7 @@ impl<'a> BlitImageInfo2<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsBlitImageInfo2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -39708,7 +40357,7 @@ impl<'a> BlitImageInfo2<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsBlitImageInfo2 + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -39923,8 +40572,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderImageAtomicInt64Features const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceShaderImageAtomicInt64FeaturesEXT<'a> { #[inline] pub fn shader_image_int64_atomics(mut self, shader_image_int64_atomics: bool) -> Self { @@ -39966,7 +40621,10 @@ impl ::core::default::Default for FragmentShadingRateAttachmentInfoKHR<'_> { unsafe impl<'a> TaggedStructure for FragmentShadingRateAttachmentInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR; } -unsafe impl ExtendsSubpassDescription2 for FragmentShadingRateAttachmentInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<SubpassDescription2<'root>> + for FragmentShadingRateAttachmentInfoKHR<'child> +{ +} impl<'a> FragmentShadingRateAttachmentInfoKHR<'a> { #[inline] pub fn fragment_shading_rate_attachment( @@ -40015,8 +40673,8 @@ unsafe impl<'a> TaggedStructure for PipelineFragmentShadingRateStateCreateInfoKH const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR; } -unsafe impl ExtendsGraphicsPipelineCreateInfo - for PipelineFragmentShadingRateStateCreateInfoKHR<'_> +unsafe impl<'root, 'child> Extends<GraphicsPipelineCreateInfo<'root>> + for PipelineFragmentShadingRateStateCreateInfoKHR<'child> { } impl<'a> PipelineFragmentShadingRateStateCreateInfoKHR<'a> { @@ -40063,8 +40721,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceFragmentShadingRateFeaturesKHR const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceFragmentShadingRateFeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentShadingRateFeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceFragmentShadingRateFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceFragmentShadingRateFeaturesKHR<'child> +{ +} impl<'a> PhysicalDeviceFragmentShadingRateFeaturesKHR<'a> { #[inline] pub fn pipeline_fragment_shading_rate(mut self, pipeline_fragment_shading_rate: bool) -> Self { @@ -40148,8 +40812,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceFragmentShadingRatePropertiesK const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceFragmentShadingRatePropertiesKHR<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceFragmentShadingRatePropertiesKHR<'child> { } impl<'a> PhysicalDeviceFragmentShadingRatePropertiesKHR<'a> { @@ -40366,8 +41030,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderTerminateInvocationFeatu const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderTerminateInvocationFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderTerminateInvocationFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderTerminateInvocationFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderTerminateInvocationFeatures<'child> +{ +} impl<'a> PhysicalDeviceShaderTerminateInvocationFeatures<'a> { #[inline] pub fn shader_terminate_invocation(mut self, shader_terminate_invocation: bool) -> Self { @@ -40407,11 +41077,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceFragmentShadingRateEnumsFeatur const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV<'_> {} impl<'a> PhysicalDeviceFragmentShadingRateEnumsFeaturesNV<'a> { #[inline] pub fn fragment_shading_rate_enums(mut self, fragment_shading_rate_enums: bool) -> Self { @@ -40463,8 +41136,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceFragmentShadingRateEnumsProper const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV<'child> { } impl<'a> PhysicalDeviceFragmentShadingRateEnumsPropertiesNV<'a> { @@ -40510,8 +41183,8 @@ unsafe impl<'a> TaggedStructure for PipelineFragmentShadingRateEnumStateCreateIn const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV; } -unsafe impl ExtendsGraphicsPipelineCreateInfo - for PipelineFragmentShadingRateEnumStateCreateInfoNV<'_> +unsafe impl<'root, 'child> Extends<GraphicsPipelineCreateInfo<'root>> + for PipelineFragmentShadingRateEnumStateCreateInfoNV<'child> { } impl<'a> PipelineFragmentShadingRateEnumStateCreateInfoNV<'a> { @@ -40610,8 +41283,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceImage2DViewOf3DFeaturesEXT<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceImage2DViewOf3DFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceImage2DViewOf3DFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceImage2DViewOf3DFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceImage2DViewOf3DFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceImage2DViewOf3DFeaturesEXT<'a> { #[inline] pub fn image2_d_view_of3_d(mut self, image2_d_view_of3_d: bool) -> Self { @@ -40652,8 +41331,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceImageSlicedViewOf3DFeaturesEXT<'a> { #[inline] pub fn image_sliced_view_of3_d(mut self, image_sliced_view_of3_d: bool) -> Self { @@ -40691,12 +41376,12 @@ unsafe impl<'a> TaggedStructure const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT<'child> { } -unsafe impl ExtendsDeviceCreateInfo - for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT<'child> { } impl<'a> PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT<'a> { @@ -40737,8 +41422,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceLegacyVertexAttributesFeatures const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceLegacyVertexAttributesFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceLegacyVertexAttributesFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceLegacyVertexAttributesFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceLegacyVertexAttributesFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceLegacyVertexAttributesFeaturesEXT<'a> { #[inline] pub fn legacy_vertex_attributes(mut self, legacy_vertex_attributes: bool) -> Self { @@ -40774,8 +41465,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceLegacyVertexAttributesProperti const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceLegacyVertexAttributesPropertiesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceLegacyVertexAttributesPropertiesEXT<'child> { } impl<'a> PhysicalDeviceLegacyVertexAttributesPropertiesEXT<'a> { @@ -40813,8 +41504,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceMutableDescriptorTypeFeaturesE const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMutableDescriptorTypeFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMutableDescriptorTypeFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceMutableDescriptorTypeFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceMutableDescriptorTypeFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceMutableDescriptorTypeFeaturesEXT<'a> { #[inline] pub fn mutable_descriptor_type(mut self, mutable_descriptor_type: bool) -> Self { @@ -40881,8 +41578,14 @@ impl ::core::default::Default for MutableDescriptorTypeCreateInfoEXT<'_> { unsafe impl<'a> TaggedStructure for MutableDescriptorTypeCreateInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT; } -unsafe impl ExtendsDescriptorSetLayoutCreateInfo for MutableDescriptorTypeCreateInfoEXT<'_> {} -unsafe impl ExtendsDescriptorPoolCreateInfo for MutableDescriptorTypeCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<DescriptorSetLayoutCreateInfo<'root>> + for MutableDescriptorTypeCreateInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DescriptorPoolCreateInfo<'root>> + for MutableDescriptorTypeCreateInfoEXT<'child> +{ +} impl<'a> MutableDescriptorTypeCreateInfoEXT<'a> { #[inline] pub fn mutable_descriptor_type_lists( @@ -40922,8 +41625,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDepthClipControlFeaturesEXT<'a const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDepthClipControlFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDepthClipControlFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceDepthClipControlFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceDepthClipControlFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceDepthClipControlFeaturesEXT<'a> { #[inline] pub fn depth_clip_control(mut self, depth_clip_control: bool) -> Self { @@ -40961,11 +41670,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDeviceGeneratedCommandsFeature const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT<'_> {} impl<'a> PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT<'a> { #[inline] pub fn device_generated_commands(mut self, device_generated_commands: bool) -> Self { @@ -41031,8 +41743,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDeviceGeneratedCommandsPropert const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT<'child> { } impl<'a> PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT<'a> { @@ -41158,9 +41870,12 @@ impl ::core::default::Default for GeneratedCommandsPipelineInfoEXT<'_> { unsafe impl<'a> TaggedStructure for GeneratedCommandsPipelineInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::GENERATED_COMMANDS_PIPELINE_INFO_EXT; } -unsafe impl ExtendsGeneratedCommandsInfoEXT for GeneratedCommandsPipelineInfoEXT<'_> {} -unsafe impl ExtendsGeneratedCommandsMemoryRequirementsInfoEXT - for GeneratedCommandsPipelineInfoEXT<'_> +unsafe impl<'root, 'child> Extends<GeneratedCommandsInfoEXT<'root>> + for GeneratedCommandsPipelineInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<GeneratedCommandsMemoryRequirementsInfoEXT<'root>> + for GeneratedCommandsPipelineInfoEXT<'child> { } impl<'a> GeneratedCommandsPipelineInfoEXT<'a> { @@ -41199,9 +41914,12 @@ impl ::core::default::Default for GeneratedCommandsShaderInfoEXT<'_> { unsafe impl<'a> TaggedStructure for GeneratedCommandsShaderInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::GENERATED_COMMANDS_SHADER_INFO_EXT; } -unsafe impl ExtendsGeneratedCommandsInfoEXT for GeneratedCommandsShaderInfoEXT<'_> {} -unsafe impl ExtendsGeneratedCommandsMemoryRequirementsInfoEXT - for GeneratedCommandsShaderInfoEXT<'_> +unsafe impl<'root, 'child> Extends<GeneratedCommandsInfoEXT<'root>> + for GeneratedCommandsShaderInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<GeneratedCommandsMemoryRequirementsInfoEXT<'root>> + for GeneratedCommandsShaderInfoEXT<'child> { } impl<'a> GeneratedCommandsShaderInfoEXT<'a> { @@ -41246,7 +41964,6 @@ unsafe impl<'a> TaggedStructure for GeneratedCommandsMemoryRequirementsInfoEXT<' const STRUCTURE_TYPE: StructureType = StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT; } -pub unsafe trait ExtendsGeneratedCommandsMemoryRequirementsInfoEXT {} impl<'a> GeneratedCommandsMemoryRequirementsInfoEXT<'a> { #[inline] pub fn indirect_execution_set( @@ -41283,10 +42000,7 @@ impl<'a> GeneratedCommandsMemoryRequirementsInfoEXT<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsGeneratedCommandsMemoryRequirementsInfoEXT + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -41310,10 +42024,7 @@ impl<'a> GeneratedCommandsMemoryRequirementsInfoEXT<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsGeneratedCommandsMemoryRequirementsInfoEXT + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -41321,10 +42032,7 @@ impl<'a> GeneratedCommandsMemoryRequirementsInfoEXT<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsGeneratedCommandsMemoryRequirementsInfoEXT + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -41581,7 +42289,6 @@ impl ::core::default::Default for GeneratedCommandsInfoEXT<'_> { unsafe impl<'a> TaggedStructure for GeneratedCommandsInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::GENERATED_COMMANDS_INFO_EXT; } -pub unsafe trait ExtendsGeneratedCommandsInfoEXT {} impl<'a> GeneratedCommandsInfoEXT<'a> { #[inline] pub fn shader_stages(mut self, shader_stages: ShaderStageFlags) -> Self { @@ -41648,7 +42355,7 @@ impl<'a> GeneratedCommandsInfoEXT<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsGeneratedCommandsInfoEXT + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -41672,10 +42379,7 @@ impl<'a> GeneratedCommandsInfoEXT<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsGeneratedCommandsInfoEXT + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -41683,10 +42387,7 @@ impl<'a> GeneratedCommandsInfoEXT<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsGeneratedCommandsInfoEXT + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -41809,7 +42510,6 @@ impl ::core::default::Default for IndirectCommandsLayoutCreateInfoEXT<'_> { unsafe impl<'a> TaggedStructure for IndirectCommandsLayoutCreateInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT; } -pub unsafe trait ExtendsIndirectCommandsLayoutCreateInfoEXT {} impl<'a> IndirectCommandsLayoutCreateInfoEXT<'a> { #[inline] pub fn flags(mut self, flags: IndirectCommandsLayoutUsageFlagsEXT) -> Self { @@ -41846,10 +42546,7 @@ impl<'a> IndirectCommandsLayoutCreateInfoEXT<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsIndirectCommandsLayoutCreateInfoEXT + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -41873,10 +42570,7 @@ impl<'a> IndirectCommandsLayoutCreateInfoEXT<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsIndirectCommandsLayoutCreateInfoEXT + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -41884,10 +42578,7 @@ impl<'a> IndirectCommandsLayoutCreateInfoEXT<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsIndirectCommandsLayoutCreateInfoEXT + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -42140,8 +42831,8 @@ unsafe impl<'a> TaggedStructure for PipelineViewportDepthClipControlCreateInfoEX const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT; } -unsafe impl ExtendsPipelineViewportStateCreateInfo - for PipelineViewportDepthClipControlCreateInfoEXT<'_> +unsafe impl<'root, 'child> Extends<PipelineViewportStateCreateInfo<'root>> + for PipelineViewportDepthClipControlCreateInfoEXT<'child> { } impl<'a> PipelineViewportDepthClipControlCreateInfoEXT<'a> { @@ -42179,8 +42870,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDepthClampControlFeaturesEXT<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDepthClampControlFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDepthClampControlFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceDepthClampControlFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceDepthClampControlFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceDepthClampControlFeaturesEXT<'a> { #[inline] pub fn depth_clamp_control(mut self, depth_clamp_control: bool) -> Self { @@ -42218,8 +42915,8 @@ unsafe impl<'a> TaggedStructure for PipelineViewportDepthClampControlCreateInfoE const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT; } -unsafe impl ExtendsPipelineViewportStateCreateInfo - for PipelineViewportDepthClampControlCreateInfoEXT<'_> +unsafe impl<'root, 'child> Extends<PipelineViewportStateCreateInfo<'root>> + for PipelineViewportDepthClampControlCreateInfoEXT<'child> { } impl<'a> PipelineViewportDepthClampControlCreateInfoEXT<'a> { @@ -42262,11 +42959,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceVertexInputDynamicStateFeature const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceVertexInputDynamicStateFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceVertexInputDynamicStateFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceVertexInputDynamicStateFeaturesEXT<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVertexInputDynamicStateFeaturesEXT<'_> {} impl<'a> PhysicalDeviceVertexInputDynamicStateFeaturesEXT<'a> { #[inline] pub fn vertex_input_dynamic_state(mut self, vertex_input_dynamic_state: bool) -> Self { @@ -42302,8 +43002,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceExternalMemoryRDMAFeaturesNV<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceExternalMemoryRDMAFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExternalMemoryRDMAFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceExternalMemoryRDMAFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceExternalMemoryRDMAFeaturesNV<'child> +{ +} impl<'a> PhysicalDeviceExternalMemoryRDMAFeaturesNV<'a> { #[inline] pub fn external_memory_rdma(mut self, external_memory_rdma: bool) -> Self { @@ -42339,12 +43045,12 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderRelaxedExtendedInstructi const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR<'child> { } -unsafe impl ExtendsDeviceCreateInfo - for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR<'_> +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR<'child> { } impl<'a> PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR<'a> { @@ -42495,8 +43201,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceColorWriteEnableFeaturesEXT<'a const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceColorWriteEnableFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceColorWriteEnableFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceColorWriteEnableFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceColorWriteEnableFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceColorWriteEnableFeaturesEXT<'a> { #[inline] pub fn color_write_enable(mut self, color_write_enable: bool) -> Self { @@ -42533,7 +43245,10 @@ impl ::core::default::Default for PipelineColorWriteCreateInfoEXT<'_> { unsafe impl<'a> TaggedStructure for PipelineColorWriteCreateInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_COLOR_WRITE_CREATE_INFO_EXT; } -unsafe impl ExtendsPipelineColorBlendStateCreateInfo for PipelineColorWriteCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<PipelineColorBlendStateCreateInfo<'root>> + for PipelineColorWriteCreateInfoEXT<'child> +{ +} impl<'a> PipelineColorWriteCreateInfoEXT<'a> { #[inline] pub fn color_write_enables(mut self, color_write_enables: &'a [Bool32]) -> Self { @@ -42575,7 +43290,7 @@ impl ::core::default::Default for MemoryBarrier2<'_> { unsafe impl<'a> TaggedStructure for MemoryBarrier2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::MEMORY_BARRIER_2; } -unsafe impl ExtendsSubpassDependency2 for MemoryBarrier2<'_> {} +unsafe impl<'root, 'child> Extends<SubpassDependency2<'root>> for MemoryBarrier2<'child> {} impl<'a> MemoryBarrier2<'a> { #[inline] pub fn src_stage_mask(mut self, src_stage_mask: PipelineStageFlags2) -> Self { @@ -42643,7 +43358,6 @@ impl ::core::default::Default for ImageMemoryBarrier2<'_> { unsafe impl<'a> TaggedStructure for ImageMemoryBarrier2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_MEMORY_BARRIER_2; } -pub unsafe trait ExtendsImageMemoryBarrier2 {} impl<'a> ImageMemoryBarrier2<'a> { #[inline] pub fn src_stage_mask(mut self, src_stage_mask: PipelineStageFlags2) -> Self { @@ -42704,7 +43418,7 @@ impl<'a> ImageMemoryBarrier2<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsImageMemoryBarrier2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -42728,10 +43442,7 @@ impl<'a> ImageMemoryBarrier2<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsImageMemoryBarrier2 + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -42739,7 +43450,7 @@ impl<'a> ImageMemoryBarrier2<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsImageMemoryBarrier2 + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -42786,7 +43497,6 @@ impl ::core::default::Default for BufferMemoryBarrier2<'_> { unsafe impl<'a> TaggedStructure for BufferMemoryBarrier2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BUFFER_MEMORY_BARRIER_2; } -pub unsafe trait ExtendsBufferMemoryBarrier2 {} impl<'a> BufferMemoryBarrier2<'a> { #[inline] pub fn src_stage_mask(mut self, src_stage_mask: PipelineStageFlags2) -> Self { @@ -42842,7 +43552,7 @@ impl<'a> BufferMemoryBarrier2<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsBufferMemoryBarrier2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -42866,10 +43576,7 @@ impl<'a> BufferMemoryBarrier2<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsBufferMemoryBarrier2 + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -42877,10 +43584,7 @@ impl<'a> BufferMemoryBarrier2<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsBufferMemoryBarrier2 + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -43038,7 +43742,6 @@ impl ::core::default::Default for CommandBufferSubmitInfo<'_> { unsafe impl<'a> TaggedStructure for CommandBufferSubmitInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::COMMAND_BUFFER_SUBMIT_INFO; } -pub unsafe trait ExtendsCommandBufferSubmitInfo {} impl<'a> CommandBufferSubmitInfo<'a> { #[inline] pub fn command_buffer(mut self, command_buffer: CommandBuffer) -> Self { @@ -43059,7 +43762,7 @@ impl<'a> CommandBufferSubmitInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsCommandBufferSubmitInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -43083,10 +43786,7 @@ impl<'a> CommandBufferSubmitInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsCommandBufferSubmitInfo + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -43094,10 +43794,7 @@ impl<'a> CommandBufferSubmitInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsCommandBufferSubmitInfo + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -43140,7 +43837,6 @@ impl ::core::default::Default for SubmitInfo2<'_> { unsafe impl<'a> TaggedStructure for SubmitInfo2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SUBMIT_INFO_2; } -pub unsafe trait ExtendsSubmitInfo2 {} impl<'a> SubmitInfo2<'a> { #[inline] pub fn flags(mut self, flags: SubmitFlags) -> Self { @@ -43183,7 +43879,7 @@ impl<'a> SubmitInfo2<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsSubmitInfo2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -43207,7 +43903,7 @@ impl<'a> SubmitInfo2<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsSubmitInfo2 + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -43215,7 +43911,7 @@ impl<'a> SubmitInfo2<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsSubmitInfo2 + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -43246,7 +43942,10 @@ impl ::core::default::Default for QueueFamilyCheckpointProperties2NV<'_> { unsafe impl<'a> TaggedStructure for QueueFamilyCheckpointProperties2NV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV; } -unsafe impl ExtendsQueueFamilyProperties2 for QueueFamilyCheckpointProperties2NV<'_> {} +unsafe impl<'root, 'child> Extends<QueueFamilyProperties2<'root>> + for QueueFamilyCheckpointProperties2NV<'child> +{ +} impl<'a> QueueFamilyCheckpointProperties2NV<'a> { #[inline] pub fn checkpoint_execution_stage_mask( @@ -43325,8 +44024,14 @@ impl ::core::default::Default for PhysicalDeviceSynchronization2Features<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceSynchronization2Features<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceSynchronization2Features<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSynchronization2Features<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceSynchronization2Features<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceSynchronization2Features<'child> +{ +} impl<'a> PhysicalDeviceSynchronization2Features<'a> { #[inline] pub fn synchronization2(mut self, synchronization2: bool) -> Self { @@ -43362,8 +44067,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceHostImageCopyFeaturesEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceHostImageCopyFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceHostImageCopyFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceHostImageCopyFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceHostImageCopyFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceHostImageCopyFeaturesEXT<'a> { #[inline] pub fn host_image_copy(mut self, host_image_copy: bool) -> Self { @@ -43409,7 +44120,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceHostImageCopyPropertiesEXT<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceHostImageCopyPropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceHostImageCopyPropertiesEXT<'child> +{ +} impl<'a> PhysicalDeviceHostImageCopyPropertiesEXT<'a> { #[inline] pub fn copy_src_layouts(mut self, copy_src_layouts: &'a mut [ImageLayout]) -> Self { @@ -43848,7 +44562,10 @@ impl ::core::default::Default for SubresourceHostMemcpySizeEXT<'_> { unsafe impl<'a> TaggedStructure for SubresourceHostMemcpySizeEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SUBRESOURCE_HOST_MEMCPY_SIZE_EXT; } -unsafe impl ExtendsSubresourceLayout2KHR for SubresourceHostMemcpySizeEXT<'_> {} +unsafe impl<'root, 'child> Extends<SubresourceLayout2KHR<'root>> + for SubresourceHostMemcpySizeEXT<'child> +{ +} impl<'a> SubresourceHostMemcpySizeEXT<'a> { #[inline] pub fn size(mut self, size: DeviceSize) -> Self { @@ -43886,7 +44603,10 @@ unsafe impl<'a> TaggedStructure for HostImageCopyDevicePerformanceQueryEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT; } -unsafe impl ExtendsImageFormatProperties2 for HostImageCopyDevicePerformanceQueryEXT<'_> {} +unsafe impl<'root, 'child> Extends<ImageFormatProperties2<'root>> + for HostImageCopyDevicePerformanceQueryEXT<'child> +{ +} impl<'a> HostImageCopyDevicePerformanceQueryEXT<'a> { #[inline] pub fn optimal_device_access(mut self, optimal_device_access: bool) -> Self { @@ -43931,11 +44651,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDevicePrimitivesGeneratedQueryFeatur const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT<'_> {} impl<'a> PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT<'a> { #[inline] pub fn primitives_generated_query(mut self, primitives_generated_query: bool) -> Self { @@ -43989,8 +44712,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceLegacyDitheringFeaturesEXT<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceLegacyDitheringFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceLegacyDitheringFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceLegacyDitheringFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceLegacyDitheringFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceLegacyDitheringFeaturesEXT<'a> { #[inline] pub fn legacy_dithering(mut self, legacy_dithering: bool) -> Self { @@ -44026,12 +44755,12 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceMultisampledRenderToSingleSamp const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT<'child> { } -unsafe impl ExtendsDeviceCreateInfo - for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT<'child> { } impl<'a> PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT<'a> { @@ -44071,7 +44800,10 @@ impl ::core::default::Default for SubpassResolvePerformanceQueryEXT<'_> { unsafe impl<'a> TaggedStructure for SubpassResolvePerformanceQueryEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT; } -unsafe impl ExtendsFormatProperties2 for SubpassResolvePerformanceQueryEXT<'_> {} +unsafe impl<'root, 'child> Extends<FormatProperties2<'root>> + for SubpassResolvePerformanceQueryEXT<'child> +{ +} impl<'a> SubpassResolvePerformanceQueryEXT<'a> { #[inline] pub fn optimal(mut self, optimal: bool) -> Self { @@ -44109,8 +44841,14 @@ unsafe impl<'a> TaggedStructure for MultisampledRenderToSingleSampledInfoEXT<'a> const STRUCTURE_TYPE: StructureType = StructureType::MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT; } -unsafe impl ExtendsSubpassDescription2 for MultisampledRenderToSingleSampledInfoEXT<'_> {} -unsafe impl ExtendsRenderingInfo for MultisampledRenderToSingleSampledInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<SubpassDescription2<'root>> + for MultisampledRenderToSingleSampledInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<RenderingInfo<'root>> + for MultisampledRenderToSingleSampledInfoEXT<'child> +{ +} impl<'a> MultisampledRenderToSingleSampledInfoEXT<'a> { #[inline] pub fn multisampled_render_to_single_sampled_enable( @@ -44155,11 +44893,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDevicePipelineProtectedAccessFeature const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDevicePipelineProtectedAccessFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDevicePipelineProtectedAccessFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDevicePipelineProtectedAccessFeaturesEXT<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePipelineProtectedAccessFeaturesEXT<'_> {} impl<'a> PhysicalDevicePipelineProtectedAccessFeaturesEXT<'a> { #[inline] pub fn pipeline_protected_access(mut self, pipeline_protected_access: bool) -> Self { @@ -44194,7 +44935,10 @@ impl ::core::default::Default for QueueFamilyVideoPropertiesKHR<'_> { unsafe impl<'a> TaggedStructure for QueueFamilyVideoPropertiesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::QUEUE_FAMILY_VIDEO_PROPERTIES_KHR; } -unsafe impl ExtendsQueueFamilyProperties2 for QueueFamilyVideoPropertiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<QueueFamilyProperties2<'root>> + for QueueFamilyVideoPropertiesKHR<'child> +{ +} impl<'a> QueueFamilyVideoPropertiesKHR<'a> { #[inline] pub fn video_codec_operations( @@ -44233,7 +44977,10 @@ unsafe impl<'a> TaggedStructure for QueueFamilyQueryResultStatusPropertiesKHR<'a const STRUCTURE_TYPE: StructureType = StructureType::QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR; } -unsafe impl ExtendsQueueFamilyProperties2 for QueueFamilyQueryResultStatusPropertiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<QueueFamilyProperties2<'root>> + for QueueFamilyQueryResultStatusPropertiesKHR<'child> +{ +} impl<'a> QueueFamilyQueryResultStatusPropertiesKHR<'a> { #[inline] pub fn query_result_status_support(mut self, query_result_status_support: bool) -> Self { @@ -44270,10 +45017,16 @@ impl ::core::default::Default for VideoProfileListInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoProfileListInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_PROFILE_LIST_INFO_KHR; } -unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 for VideoProfileListInfoKHR<'_> {} -unsafe impl ExtendsPhysicalDeviceVideoFormatInfoKHR for VideoProfileListInfoKHR<'_> {} -unsafe impl ExtendsImageCreateInfo for VideoProfileListInfoKHR<'_> {} -unsafe impl ExtendsBufferCreateInfo for VideoProfileListInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceImageFormatInfo2<'root>> + for VideoProfileListInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<PhysicalDeviceVideoFormatInfoKHR<'root>> + for VideoProfileListInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<ImageCreateInfo<'root>> for VideoProfileListInfoKHR<'child> {} +unsafe impl<'root, 'child> Extends<BufferCreateInfo<'root>> for VideoProfileListInfoKHR<'child> {} impl<'a> VideoProfileListInfoKHR<'a> { #[inline] pub fn profiles(mut self, profiles: &'a [VideoProfileInfoKHR<'a>]) -> Self { @@ -44309,7 +45062,6 @@ impl ::core::default::Default for PhysicalDeviceVideoFormatInfoKHR<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceVideoFormatInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR; } -pub unsafe trait ExtendsPhysicalDeviceVideoFormatInfoKHR {} impl<'a> PhysicalDeviceVideoFormatInfoKHR<'a> { #[inline] pub fn image_usage(mut self, image_usage: ImageUsageFlags) -> Self { @@ -44325,10 +45077,7 @@ impl<'a> PhysicalDeviceVideoFormatInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsPhysicalDeviceVideoFormatInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -44352,10 +45101,7 @@ impl<'a> PhysicalDeviceVideoFormatInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsPhysicalDeviceVideoFormatInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -44363,10 +45109,7 @@ impl<'a> PhysicalDeviceVideoFormatInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsPhysicalDeviceVideoFormatInfoKHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -44472,8 +45215,7 @@ impl ::core::default::Default for VideoProfileInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoProfileInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_PROFILE_INFO_KHR; } -unsafe impl ExtendsQueryPoolCreateInfo for VideoProfileInfoKHR<'_> {} -pub unsafe trait ExtendsVideoProfileInfoKHR {} +unsafe impl<'root, 'child> Extends<QueryPoolCreateInfo<'root>> for VideoProfileInfoKHR<'child> {} impl<'a> VideoProfileInfoKHR<'a> { #[inline] pub fn video_codec_operation( @@ -44510,7 +45252,7 @@ impl<'a> VideoProfileInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsVideoProfileInfoKHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -44534,10 +45276,7 @@ impl<'a> VideoProfileInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsVideoProfileInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -44545,7 +45284,7 @@ impl<'a> VideoProfileInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsVideoProfileInfoKHR + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -44592,7 +45331,6 @@ impl ::core::default::Default for VideoCapabilitiesKHR<'_> { unsafe impl<'a> TaggedStructure for VideoCapabilitiesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_CAPABILITIES_KHR; } -pub unsafe trait ExtendsVideoCapabilitiesKHR {} impl<'a> VideoCapabilitiesKHR<'a> { #[inline] pub fn flags(mut self, flags: VideoCapabilityFlagsKHR) -> Self { @@ -44654,7 +45392,7 @@ impl<'a> VideoCapabilitiesKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsVideoCapabilitiesKHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -44678,10 +45416,7 @@ impl<'a> VideoCapabilitiesKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsVideoCapabilitiesKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -44689,10 +45424,7 @@ impl<'a> VideoCapabilitiesKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsVideoCapabilitiesKHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -44876,7 +45608,6 @@ impl ::core::default::Default for VideoReferenceSlotInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoReferenceSlotInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_REFERENCE_SLOT_INFO_KHR; } -pub unsafe trait ExtendsVideoReferenceSlotInfoKHR {} impl<'a> VideoReferenceSlotInfoKHR<'a> { #[inline] pub fn slot_index(mut self, slot_index: i32) -> Self { @@ -44900,7 +45631,7 @@ impl<'a> VideoReferenceSlotInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsVideoReferenceSlotInfoKHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -44924,10 +45655,7 @@ impl<'a> VideoReferenceSlotInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsVideoReferenceSlotInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -44935,10 +45663,7 @@ impl<'a> VideoReferenceSlotInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsVideoReferenceSlotInfoKHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -44969,7 +45694,10 @@ impl ::core::default::Default for VideoDecodeCapabilitiesKHR<'_> { unsafe impl<'a> TaggedStructure for VideoDecodeCapabilitiesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_DECODE_CAPABILITIES_KHR; } -unsafe impl ExtendsVideoCapabilitiesKHR for VideoDecodeCapabilitiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoCapabilitiesKHR<'root>> + for VideoDecodeCapabilitiesKHR<'child> +{ +} impl<'a> VideoDecodeCapabilitiesKHR<'a> { #[inline] pub fn flags(mut self, flags: VideoDecodeCapabilityFlagsKHR) -> Self { @@ -45004,8 +45732,8 @@ impl ::core::default::Default for VideoDecodeUsageInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoDecodeUsageInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_DECODE_USAGE_INFO_KHR; } -unsafe impl ExtendsVideoProfileInfoKHR for VideoDecodeUsageInfoKHR<'_> {} -unsafe impl ExtendsQueryPoolCreateInfo for VideoDecodeUsageInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoProfileInfoKHR<'root>> for VideoDecodeUsageInfoKHR<'child> {} +unsafe impl<'root, 'child> Extends<QueryPoolCreateInfo<'root>> for VideoDecodeUsageInfoKHR<'child> {} impl<'a> VideoDecodeUsageInfoKHR<'a> { #[inline] pub fn video_usage_hints(mut self, video_usage_hints: VideoDecodeUsageFlagsKHR) -> Self { @@ -45054,7 +45782,6 @@ impl ::core::default::Default for VideoDecodeInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoDecodeInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_DECODE_INFO_KHR; } -pub unsafe trait ExtendsVideoDecodeInfoKHR {} impl<'a> VideoDecodeInfoKHR<'a> { #[inline] pub fn flags(mut self, flags: VideoDecodeFlagsKHR) -> Self { @@ -45107,7 +45834,7 @@ impl<'a> VideoDecodeInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsVideoDecodeInfoKHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -45131,7 +45858,7 @@ impl<'a> VideoDecodeInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsVideoDecodeInfoKHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -45139,7 +45866,7 @@ impl<'a> VideoDecodeInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsVideoDecodeInfoKHR + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -45171,8 +45898,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceVideoMaintenance1FeaturesKHR<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVideoMaintenance1FeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVideoMaintenance1FeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceVideoMaintenance1FeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceVideoMaintenance1FeaturesKHR<'child> +{ +} impl<'a> PhysicalDeviceVideoMaintenance1FeaturesKHR<'a> { #[inline] pub fn video_maintenance1(mut self, video_maintenance1: bool) -> Self { @@ -45211,8 +45944,8 @@ impl ::core::default::Default for VideoInlineQueryInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoInlineQueryInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_INLINE_QUERY_INFO_KHR; } -unsafe impl ExtendsVideoDecodeInfoKHR for VideoInlineQueryInfoKHR<'_> {} -unsafe impl ExtendsVideoEncodeInfoKHR for VideoInlineQueryInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoDecodeInfoKHR<'root>> for VideoInlineQueryInfoKHR<'child> {} +unsafe impl<'root, 'child> Extends<VideoEncodeInfoKHR<'root>> for VideoInlineQueryInfoKHR<'child> {} impl<'a> VideoInlineQueryInfoKHR<'a> { #[inline] pub fn query_pool(mut self, query_pool: QueryPool) -> Self { @@ -45259,8 +45992,14 @@ impl ::core::default::Default for VideoDecodeH264ProfileInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoDecodeH264ProfileInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_DECODE_H264_PROFILE_INFO_KHR; } -unsafe impl ExtendsVideoProfileInfoKHR for VideoDecodeH264ProfileInfoKHR<'_> {} -unsafe impl ExtendsQueryPoolCreateInfo for VideoDecodeH264ProfileInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoProfileInfoKHR<'root>> + for VideoDecodeH264ProfileInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<QueryPoolCreateInfo<'root>> + for VideoDecodeH264ProfileInfoKHR<'child> +{ +} impl<'a> VideoDecodeH264ProfileInfoKHR<'a> { #[inline] pub fn std_profile_idc(mut self, std_profile_idc: StdVideoH264ProfileIdc) -> Self { @@ -45302,7 +46041,10 @@ impl ::core::default::Default for VideoDecodeH264CapabilitiesKHR<'_> { unsafe impl<'a> TaggedStructure for VideoDecodeH264CapabilitiesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_DECODE_H264_CAPABILITIES_KHR; } -unsafe impl ExtendsVideoCapabilitiesKHR for VideoDecodeH264CapabilitiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoCapabilitiesKHR<'root>> + for VideoDecodeH264CapabilitiesKHR<'child> +{ +} impl<'a> VideoDecodeH264CapabilitiesKHR<'a> { #[inline] pub fn max_level_idc(mut self, max_level_idc: StdVideoH264LevelIdc) -> Self { @@ -45349,8 +46091,8 @@ unsafe impl<'a> TaggedStructure for VideoDecodeH264SessionParametersAddInfoKHR<' const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR; } -unsafe impl ExtendsVideoSessionParametersUpdateInfoKHR - for VideoDecodeH264SessionParametersAddInfoKHR<'_> +unsafe impl<'root, 'child> Extends<VideoSessionParametersUpdateInfoKHR<'root>> + for VideoDecodeH264SessionParametersAddInfoKHR<'child> { } impl<'a> VideoDecodeH264SessionParametersAddInfoKHR<'a> { @@ -45399,8 +46141,8 @@ unsafe impl<'a> TaggedStructure for VideoDecodeH264SessionParametersCreateInfoKH const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR; } -unsafe impl ExtendsVideoSessionParametersCreateInfoKHR - for VideoDecodeH264SessionParametersCreateInfoKHR<'_> +unsafe impl<'root, 'child> Extends<VideoSessionParametersCreateInfoKHR<'root>> + for VideoDecodeH264SessionParametersCreateInfoKHR<'child> { } impl<'a> VideoDecodeH264SessionParametersCreateInfoKHR<'a> { @@ -45454,7 +46196,10 @@ impl ::core::default::Default for VideoDecodeH264PictureInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoDecodeH264PictureInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_DECODE_H264_PICTURE_INFO_KHR; } -unsafe impl ExtendsVideoDecodeInfoKHR for VideoDecodeH264PictureInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoDecodeInfoKHR<'root>> + for VideoDecodeH264PictureInfoKHR<'child> +{ +} impl<'a> VideoDecodeH264PictureInfoKHR<'a> { #[inline] pub fn std_picture_info(mut self, std_picture_info: &'a StdVideoDecodeH264PictureInfo) -> Self { @@ -45495,7 +46240,10 @@ impl ::core::default::Default for VideoDecodeH264DpbSlotInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoDecodeH264DpbSlotInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR; } -unsafe impl ExtendsVideoReferenceSlotInfoKHR for VideoDecodeH264DpbSlotInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoReferenceSlotInfoKHR<'root>> + for VideoDecodeH264DpbSlotInfoKHR<'child> +{ +} impl<'a> VideoDecodeH264DpbSlotInfoKHR<'a> { #[inline] pub fn std_reference_info( @@ -45533,8 +46281,14 @@ impl ::core::default::Default for VideoDecodeH265ProfileInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoDecodeH265ProfileInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_DECODE_H265_PROFILE_INFO_KHR; } -unsafe impl ExtendsVideoProfileInfoKHR for VideoDecodeH265ProfileInfoKHR<'_> {} -unsafe impl ExtendsQueryPoolCreateInfo for VideoDecodeH265ProfileInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoProfileInfoKHR<'root>> + for VideoDecodeH265ProfileInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<QueryPoolCreateInfo<'root>> + for VideoDecodeH265ProfileInfoKHR<'child> +{ +} impl<'a> VideoDecodeH265ProfileInfoKHR<'a> { #[inline] pub fn std_profile_idc(mut self, std_profile_idc: StdVideoH265ProfileIdc) -> Self { @@ -45569,7 +46323,10 @@ impl ::core::default::Default for VideoDecodeH265CapabilitiesKHR<'_> { unsafe impl<'a> TaggedStructure for VideoDecodeH265CapabilitiesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_DECODE_H265_CAPABILITIES_KHR; } -unsafe impl ExtendsVideoCapabilitiesKHR for VideoDecodeH265CapabilitiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoCapabilitiesKHR<'root>> + for VideoDecodeH265CapabilitiesKHR<'child> +{ +} impl<'a> VideoDecodeH265CapabilitiesKHR<'a> { #[inline] pub fn max_level_idc(mut self, max_level_idc: StdVideoH265LevelIdc) -> Self { @@ -45615,8 +46372,8 @@ unsafe impl<'a> TaggedStructure for VideoDecodeH265SessionParametersAddInfoKHR<' const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR; } -unsafe impl ExtendsVideoSessionParametersUpdateInfoKHR - for VideoDecodeH265SessionParametersAddInfoKHR<'_> +unsafe impl<'root, 'child> Extends<VideoSessionParametersUpdateInfoKHR<'root>> + for VideoDecodeH265SessionParametersAddInfoKHR<'child> { } impl<'a> VideoDecodeH265SessionParametersAddInfoKHR<'a> { @@ -45673,8 +46430,8 @@ unsafe impl<'a> TaggedStructure for VideoDecodeH265SessionParametersCreateInfoKH const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR; } -unsafe impl ExtendsVideoSessionParametersCreateInfoKHR - for VideoDecodeH265SessionParametersCreateInfoKHR<'_> +unsafe impl<'root, 'child> Extends<VideoSessionParametersCreateInfoKHR<'root>> + for VideoDecodeH265SessionParametersCreateInfoKHR<'child> { } impl<'a> VideoDecodeH265SessionParametersCreateInfoKHR<'a> { @@ -45733,7 +46490,10 @@ impl ::core::default::Default for VideoDecodeH265PictureInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoDecodeH265PictureInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_DECODE_H265_PICTURE_INFO_KHR; } -unsafe impl ExtendsVideoDecodeInfoKHR for VideoDecodeH265PictureInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoDecodeInfoKHR<'root>> + for VideoDecodeH265PictureInfoKHR<'child> +{ +} impl<'a> VideoDecodeH265PictureInfoKHR<'a> { #[inline] pub fn std_picture_info(mut self, std_picture_info: &'a StdVideoDecodeH265PictureInfo) -> Self { @@ -45774,7 +46534,10 @@ impl ::core::default::Default for VideoDecodeH265DpbSlotInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoDecodeH265DpbSlotInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR; } -unsafe impl ExtendsVideoReferenceSlotInfoKHR for VideoDecodeH265DpbSlotInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoReferenceSlotInfoKHR<'root>> + for VideoDecodeH265DpbSlotInfoKHR<'child> +{ +} impl<'a> VideoDecodeH265DpbSlotInfoKHR<'a> { #[inline] pub fn std_reference_info( @@ -45814,8 +46577,14 @@ impl ::core::default::Default for VideoDecodeAV1ProfileInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoDecodeAV1ProfileInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_DECODE_AV1_PROFILE_INFO_KHR; } -unsafe impl ExtendsVideoProfileInfoKHR for VideoDecodeAV1ProfileInfoKHR<'_> {} -unsafe impl ExtendsQueryPoolCreateInfo for VideoDecodeAV1ProfileInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoProfileInfoKHR<'root>> + for VideoDecodeAV1ProfileInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<QueryPoolCreateInfo<'root>> + for VideoDecodeAV1ProfileInfoKHR<'child> +{ +} impl<'a> VideoDecodeAV1ProfileInfoKHR<'a> { #[inline] pub fn std_profile(mut self, std_profile: StdVideoAV1Profile) -> Self { @@ -45855,7 +46624,10 @@ impl ::core::default::Default for VideoDecodeAV1CapabilitiesKHR<'_> { unsafe impl<'a> TaggedStructure for VideoDecodeAV1CapabilitiesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_DECODE_AV1_CAPABILITIES_KHR; } -unsafe impl ExtendsVideoCapabilitiesKHR for VideoDecodeAV1CapabilitiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoCapabilitiesKHR<'root>> + for VideoDecodeAV1CapabilitiesKHR<'child> +{ +} impl<'a> VideoDecodeAV1CapabilitiesKHR<'a> { #[inline] pub fn max_level(mut self, max_level: StdVideoAV1Level) -> Self { @@ -45891,8 +46663,8 @@ unsafe impl<'a> TaggedStructure for VideoDecodeAV1SessionParametersCreateInfoKHR const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR; } -unsafe impl ExtendsVideoSessionParametersCreateInfoKHR - for VideoDecodeAV1SessionParametersCreateInfoKHR<'_> +unsafe impl<'root, 'child> Extends<VideoSessionParametersCreateInfoKHR<'root>> + for VideoDecodeAV1SessionParametersCreateInfoKHR<'child> { } impl<'a> VideoDecodeAV1SessionParametersCreateInfoKHR<'a> { @@ -45942,7 +46714,10 @@ impl ::core::default::Default for VideoDecodeAV1PictureInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoDecodeAV1PictureInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_DECODE_AV1_PICTURE_INFO_KHR; } -unsafe impl ExtendsVideoDecodeInfoKHR for VideoDecodeAV1PictureInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoDecodeInfoKHR<'root>> + for VideoDecodeAV1PictureInfoKHR<'child> +{ +} impl<'a> VideoDecodeAV1PictureInfoKHR<'a> { #[inline] pub fn std_picture_info(mut self, std_picture_info: &'a StdVideoDecodeAV1PictureInfo) -> Self { @@ -46002,7 +46777,10 @@ impl ::core::default::Default for VideoDecodeAV1DpbSlotInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoDecodeAV1DpbSlotInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR; } -unsafe impl ExtendsVideoReferenceSlotInfoKHR for VideoDecodeAV1DpbSlotInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoReferenceSlotInfoKHR<'root>> + for VideoDecodeAV1DpbSlotInfoKHR<'child> +{ +} impl<'a> VideoDecodeAV1DpbSlotInfoKHR<'a> { #[inline] pub fn std_reference_info( @@ -46056,7 +46834,6 @@ impl ::core::default::Default for VideoSessionCreateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoSessionCreateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_SESSION_CREATE_INFO_KHR; } -pub unsafe trait ExtendsVideoSessionCreateInfoKHR {} impl<'a> VideoSessionCreateInfoKHR<'a> { #[inline] pub fn queue_family_index(mut self, queue_family_index: u32) -> Self { @@ -46112,7 +46889,7 @@ impl<'a> VideoSessionCreateInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsVideoSessionCreateInfoKHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -46136,10 +46913,7 @@ impl<'a> VideoSessionCreateInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsVideoSessionCreateInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -46147,10 +46921,7 @@ impl<'a> VideoSessionCreateInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsVideoSessionCreateInfoKHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -46185,7 +46956,6 @@ impl ::core::default::Default for VideoSessionParametersCreateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoSessionParametersCreateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR; } -pub unsafe trait ExtendsVideoSessionParametersCreateInfoKHR {} impl<'a> VideoSessionParametersCreateInfoKHR<'a> { #[inline] pub fn flags(mut self, flags: VideoSessionParametersCreateFlagsKHR) -> Self { @@ -46214,10 +46984,7 @@ impl<'a> VideoSessionParametersCreateInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsVideoSessionParametersCreateInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -46241,10 +47008,7 @@ impl<'a> VideoSessionParametersCreateInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsVideoSessionParametersCreateInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -46252,10 +47016,7 @@ impl<'a> VideoSessionParametersCreateInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsVideoSessionParametersCreateInfoKHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -46286,7 +47047,6 @@ impl ::core::default::Default for VideoSessionParametersUpdateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoSessionParametersUpdateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR; } -pub unsafe trait ExtendsVideoSessionParametersUpdateInfoKHR {} impl<'a> VideoSessionParametersUpdateInfoKHR<'a> { #[inline] pub fn update_sequence_count(mut self, update_sequence_count: u32) -> Self { @@ -46302,10 +47062,7 @@ impl<'a> VideoSessionParametersUpdateInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsVideoSessionParametersUpdateInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -46329,10 +47086,7 @@ impl<'a> VideoSessionParametersUpdateInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsVideoSessionParametersUpdateInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -46340,10 +47094,7 @@ impl<'a> VideoSessionParametersUpdateInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsVideoSessionParametersUpdateInfoKHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -46375,7 +47126,6 @@ unsafe impl<'a> TaggedStructure for VideoEncodeSessionParametersGetInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR; } -pub unsafe trait ExtendsVideoEncodeSessionParametersGetInfoKHR {} impl<'a> VideoEncodeSessionParametersGetInfoKHR<'a> { #[inline] pub fn video_session_parameters( @@ -46394,10 +47144,7 @@ impl<'a> VideoEncodeSessionParametersGetInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsVideoEncodeSessionParametersGetInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -46421,10 +47168,7 @@ impl<'a> VideoEncodeSessionParametersGetInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsVideoEncodeSessionParametersGetInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -46432,10 +47176,7 @@ impl<'a> VideoEncodeSessionParametersGetInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsVideoEncodeSessionParametersGetInfoKHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -46467,7 +47208,6 @@ unsafe impl<'a> TaggedStructure for VideoEncodeSessionParametersFeedbackInfoKHR< const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR; } -pub unsafe trait ExtendsVideoEncodeSessionParametersFeedbackInfoKHR {} impl<'a> VideoEncodeSessionParametersFeedbackInfoKHR<'a> { #[inline] pub fn has_overrides(mut self, has_overrides: bool) -> Self { @@ -46483,10 +47223,7 @@ impl<'a> VideoEncodeSessionParametersFeedbackInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsVideoEncodeSessionParametersFeedbackInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -46510,10 +47247,7 @@ impl<'a> VideoEncodeSessionParametersFeedbackInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsVideoEncodeSessionParametersFeedbackInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -46521,10 +47255,7 @@ impl<'a> VideoEncodeSessionParametersFeedbackInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsVideoEncodeSessionParametersFeedbackInfoKHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -46563,7 +47294,6 @@ impl ::core::default::Default for VideoBeginCodingInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoBeginCodingInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_BEGIN_CODING_INFO_KHR; } -pub unsafe trait ExtendsVideoBeginCodingInfoKHR {} impl<'a> VideoBeginCodingInfoKHR<'a> { #[inline] pub fn flags(mut self, flags: VideoBeginCodingFlagsKHR) -> Self { @@ -46598,7 +47328,7 @@ impl<'a> VideoBeginCodingInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsVideoBeginCodingInfoKHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -46622,10 +47352,7 @@ impl<'a> VideoBeginCodingInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsVideoBeginCodingInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -46633,10 +47360,7 @@ impl<'a> VideoBeginCodingInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsVideoBeginCodingInfoKHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -46701,7 +47425,6 @@ impl ::core::default::Default for VideoCodingControlInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoCodingControlInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_CODING_CONTROL_INFO_KHR; } -pub unsafe trait ExtendsVideoCodingControlInfoKHR {} impl<'a> VideoCodingControlInfoKHR<'a> { #[inline] pub fn flags(mut self, flags: VideoCodingControlFlagsKHR) -> Self { @@ -46717,7 +47440,7 @@ impl<'a> VideoCodingControlInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsVideoCodingControlInfoKHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -46741,10 +47464,7 @@ impl<'a> VideoCodingControlInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsVideoCodingControlInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -46752,10 +47472,7 @@ impl<'a> VideoCodingControlInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsVideoCodingControlInfoKHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -46790,8 +47507,8 @@ impl ::core::default::Default for VideoEncodeUsageInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeUsageInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_USAGE_INFO_KHR; } -unsafe impl ExtendsVideoProfileInfoKHR for VideoEncodeUsageInfoKHR<'_> {} -unsafe impl ExtendsQueryPoolCreateInfo for VideoEncodeUsageInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoProfileInfoKHR<'root>> for VideoEncodeUsageInfoKHR<'child> {} +unsafe impl<'root, 'child> Extends<QueryPoolCreateInfo<'root>> for VideoEncodeUsageInfoKHR<'child> {} impl<'a> VideoEncodeUsageInfoKHR<'a> { #[inline] pub fn video_usage_hints(mut self, video_usage_hints: VideoEncodeUsageFlagsKHR) -> Self { @@ -46852,7 +47569,6 @@ impl ::core::default::Default for VideoEncodeInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_INFO_KHR; } -pub unsafe trait ExtendsVideoEncodeInfoKHR {} impl<'a> VideoEncodeInfoKHR<'a> { #[inline] pub fn flags(mut self, flags: VideoEncodeFlagsKHR) -> Self { @@ -46913,7 +47629,7 @@ impl<'a> VideoEncodeInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsVideoEncodeInfoKHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -46937,7 +47653,7 @@ impl<'a> VideoEncodeInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsVideoEncodeInfoKHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -46945,7 +47661,7 @@ impl<'a> VideoEncodeInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsVideoEncodeInfoKHR + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -46977,7 +47693,10 @@ unsafe impl<'a> TaggedStructure for QueryPoolVideoEncodeFeedbackCreateInfoKHR<'a const STRUCTURE_TYPE: StructureType = StructureType::QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR; } -unsafe impl ExtendsQueryPoolCreateInfo for QueryPoolVideoEncodeFeedbackCreateInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<QueryPoolCreateInfo<'root>> + for QueryPoolVideoEncodeFeedbackCreateInfoKHR<'child> +{ +} impl<'a> QueryPoolVideoEncodeFeedbackCreateInfoKHR<'a> { #[inline] pub fn encode_feedback_flags( @@ -47015,8 +47734,14 @@ impl ::core::default::Default for VideoEncodeQualityLevelInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeQualityLevelInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR; } -unsafe impl ExtendsVideoCodingControlInfoKHR for VideoEncodeQualityLevelInfoKHR<'_> {} -unsafe impl ExtendsVideoSessionParametersCreateInfoKHR for VideoEncodeQualityLevelInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoCodingControlInfoKHR<'root>> + for VideoEncodeQualityLevelInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<VideoSessionParametersCreateInfoKHR<'root>> + for VideoEncodeQualityLevelInfoKHR<'child> +{ +} impl<'a> VideoEncodeQualityLevelInfoKHR<'a> { #[inline] pub fn quality_level(mut self, quality_level: u32) -> Self { @@ -47095,7 +47820,6 @@ impl ::core::default::Default for VideoEncodeQualityLevelPropertiesKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeQualityLevelPropertiesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR; } -pub unsafe trait ExtendsVideoEncodeQualityLevelPropertiesKHR {} impl<'a> VideoEncodeQualityLevelPropertiesKHR<'a> { #[inline] pub fn preferred_rate_control_mode( @@ -47122,10 +47846,7 @@ impl<'a> VideoEncodeQualityLevelPropertiesKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsVideoEncodeQualityLevelPropertiesKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -47149,10 +47870,7 @@ impl<'a> VideoEncodeQualityLevelPropertiesKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsVideoEncodeQualityLevelPropertiesKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -47160,10 +47878,7 @@ impl<'a> VideoEncodeQualityLevelPropertiesKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsVideoEncodeQualityLevelPropertiesKHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -47204,8 +47919,14 @@ impl ::core::default::Default for VideoEncodeRateControlInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeRateControlInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_RATE_CONTROL_INFO_KHR; } -unsafe impl ExtendsVideoCodingControlInfoKHR for VideoEncodeRateControlInfoKHR<'_> {} -unsafe impl ExtendsVideoBeginCodingInfoKHR for VideoEncodeRateControlInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoCodingControlInfoKHR<'root>> + for VideoEncodeRateControlInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<VideoBeginCodingInfoKHR<'root>> + for VideoEncodeRateControlInfoKHR<'child> +{ +} impl<'a> VideoEncodeRateControlInfoKHR<'a> { #[inline] pub fn flags(mut self, flags: VideoEncodeRateControlFlagsKHR) -> Self { @@ -47273,7 +47994,6 @@ impl ::core::default::Default for VideoEncodeRateControlLayerInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeRateControlLayerInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR; } -pub unsafe trait ExtendsVideoEncodeRateControlLayerInfoKHR {} impl<'a> VideoEncodeRateControlLayerInfoKHR<'a> { #[inline] pub fn average_bitrate(mut self, average_bitrate: u64) -> Self { @@ -47304,10 +48024,7 @@ impl<'a> VideoEncodeRateControlLayerInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsVideoEncodeRateControlLayerInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -47331,10 +48048,7 @@ impl<'a> VideoEncodeRateControlLayerInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsVideoEncodeRateControlLayerInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -47342,10 +48056,7 @@ impl<'a> VideoEncodeRateControlLayerInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsVideoEncodeRateControlLayerInfoKHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -47388,7 +48099,10 @@ impl ::core::default::Default for VideoEncodeCapabilitiesKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeCapabilitiesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_CAPABILITIES_KHR; } -unsafe impl ExtendsVideoCapabilitiesKHR for VideoEncodeCapabilitiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoCapabilitiesKHR<'root>> + for VideoEncodeCapabilitiesKHR<'child> +{ +} impl<'a> VideoEncodeCapabilitiesKHR<'a> { #[inline] pub fn flags(mut self, flags: VideoEncodeCapabilityFlagsKHR) -> Self { @@ -47486,7 +48200,10 @@ impl ::core::default::Default for VideoEncodeH264CapabilitiesKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeH264CapabilitiesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_CAPABILITIES_KHR; } -unsafe impl ExtendsVideoCapabilitiesKHR for VideoEncodeH264CapabilitiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoCapabilitiesKHR<'root>> + for VideoEncodeH264CapabilitiesKHR<'child> +{ +} impl<'a> VideoEncodeH264CapabilitiesKHR<'a> { #[inline] pub fn flags(mut self, flags: VideoEncodeH264CapabilityFlagsKHR) -> Self { @@ -47607,8 +48324,8 @@ unsafe impl<'a> TaggedStructure for VideoEncodeH264QualityLevelPropertiesKHR<'a> const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR; } -unsafe impl ExtendsVideoEncodeQualityLevelPropertiesKHR - for VideoEncodeH264QualityLevelPropertiesKHR<'_> +unsafe impl<'root, 'child> Extends<VideoEncodeQualityLevelPropertiesKHR<'root>> + for VideoEncodeH264QualityLevelPropertiesKHR<'child> { } impl<'a> VideoEncodeH264QualityLevelPropertiesKHR<'a> { @@ -47702,7 +48419,10 @@ impl ::core::default::Default for VideoEncodeH264SessionCreateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeH264SessionCreateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR; } -unsafe impl ExtendsVideoSessionCreateInfoKHR for VideoEncodeH264SessionCreateInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoSessionCreateInfoKHR<'root>> + for VideoEncodeH264SessionCreateInfoKHR<'child> +{ +} impl<'a> VideoEncodeH264SessionCreateInfoKHR<'a> { #[inline] pub fn use_max_level_idc(mut self, use_max_level_idc: bool) -> Self { @@ -47749,8 +48469,8 @@ unsafe impl<'a> TaggedStructure for VideoEncodeH264SessionParametersAddInfoKHR<' const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR; } -unsafe impl ExtendsVideoSessionParametersUpdateInfoKHR - for VideoEncodeH264SessionParametersAddInfoKHR<'_> +unsafe impl<'root, 'child> Extends<VideoSessionParametersUpdateInfoKHR<'root>> + for VideoEncodeH264SessionParametersAddInfoKHR<'child> { } impl<'a> VideoEncodeH264SessionParametersAddInfoKHR<'a> { @@ -47799,8 +48519,8 @@ unsafe impl<'a> TaggedStructure for VideoEncodeH264SessionParametersCreateInfoKH const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR; } -unsafe impl ExtendsVideoSessionParametersCreateInfoKHR - for VideoEncodeH264SessionParametersCreateInfoKHR<'_> +unsafe impl<'root, 'child> Extends<VideoSessionParametersCreateInfoKHR<'root>> + for VideoEncodeH264SessionParametersCreateInfoKHR<'child> { } impl<'a> VideoEncodeH264SessionParametersCreateInfoKHR<'a> { @@ -47857,8 +48577,8 @@ unsafe impl<'a> TaggedStructure for VideoEncodeH264SessionParametersGetInfoKHR<' const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR; } -unsafe impl ExtendsVideoEncodeSessionParametersGetInfoKHR - for VideoEncodeH264SessionParametersGetInfoKHR<'_> +unsafe impl<'root, 'child> Extends<VideoEncodeSessionParametersGetInfoKHR<'root>> + for VideoEncodeH264SessionParametersGetInfoKHR<'child> { } impl<'a> VideoEncodeH264SessionParametersGetInfoKHR<'a> { @@ -47913,8 +48633,8 @@ unsafe impl<'a> TaggedStructure for VideoEncodeH264SessionParametersFeedbackInfo const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR; } -unsafe impl ExtendsVideoEncodeSessionParametersFeedbackInfoKHR - for VideoEncodeH264SessionParametersFeedbackInfoKHR<'_> +unsafe impl<'root, 'child> Extends<VideoEncodeSessionParametersFeedbackInfoKHR<'root>> + for VideoEncodeH264SessionParametersFeedbackInfoKHR<'child> { } impl<'a> VideoEncodeH264SessionParametersFeedbackInfoKHR<'a> { @@ -47956,7 +48676,10 @@ impl ::core::default::Default for VideoEncodeH264DpbSlotInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeH264DpbSlotInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR; } -unsafe impl ExtendsVideoReferenceSlotInfoKHR for VideoEncodeH264DpbSlotInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoReferenceSlotInfoKHR<'root>> + for VideoEncodeH264DpbSlotInfoKHR<'child> +{ +} impl<'a> VideoEncodeH264DpbSlotInfoKHR<'a> { #[inline] pub fn std_reference_info( @@ -48000,7 +48723,10 @@ impl ::core::default::Default for VideoEncodeH264PictureInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeH264PictureInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_PICTURE_INFO_KHR; } -unsafe impl ExtendsVideoEncodeInfoKHR for VideoEncodeH264PictureInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoEncodeInfoKHR<'root>> + for VideoEncodeH264PictureInfoKHR<'child> +{ +} impl<'a> VideoEncodeH264PictureInfoKHR<'a> { #[inline] pub fn nalu_slice_entries( @@ -48049,8 +48775,14 @@ impl ::core::default::Default for VideoEncodeH264ProfileInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeH264ProfileInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_PROFILE_INFO_KHR; } -unsafe impl ExtendsVideoProfileInfoKHR for VideoEncodeH264ProfileInfoKHR<'_> {} -unsafe impl ExtendsQueryPoolCreateInfo for VideoEncodeH264ProfileInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoProfileInfoKHR<'root>> + for VideoEncodeH264ProfileInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<QueryPoolCreateInfo<'root>> + for VideoEncodeH264ProfileInfoKHR<'child> +{ +} impl<'a> VideoEncodeH264ProfileInfoKHR<'a> { #[inline] pub fn std_profile_idc(mut self, std_profile_idc: StdVideoH264ProfileIdc) -> Self { @@ -48134,8 +48866,14 @@ impl ::core::default::Default for VideoEncodeH264RateControlInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeH264RateControlInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR; } -unsafe impl ExtendsVideoCodingControlInfoKHR for VideoEncodeH264RateControlInfoKHR<'_> {} -unsafe impl ExtendsVideoBeginCodingInfoKHR for VideoEncodeH264RateControlInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoCodingControlInfoKHR<'root>> + for VideoEncodeH264RateControlInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<VideoBeginCodingInfoKHR<'root>> + for VideoEncodeH264RateControlInfoKHR<'child> +{ +} impl<'a> VideoEncodeH264RateControlInfoKHR<'a> { #[inline] pub fn flags(mut self, flags: VideoEncodeH264RateControlFlagsKHR) -> Self { @@ -48251,7 +48989,10 @@ unsafe impl<'a> TaggedStructure for VideoEncodeH264GopRemainingFrameInfoKHR<'a> const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR; } -unsafe impl ExtendsVideoBeginCodingInfoKHR for VideoEncodeH264GopRemainingFrameInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoBeginCodingInfoKHR<'root>> + for VideoEncodeH264GopRemainingFrameInfoKHR<'child> +{ +} impl<'a> VideoEncodeH264GopRemainingFrameInfoKHR<'a> { #[inline] pub fn use_gop_remaining_frames(mut self, use_gop_remaining_frames: bool) -> Self { @@ -48312,8 +49053,8 @@ unsafe impl<'a> TaggedStructure for VideoEncodeH264RateControlLayerInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR; } -unsafe impl ExtendsVideoEncodeRateControlLayerInfoKHR - for VideoEncodeH264RateControlLayerInfoKHR<'_> +unsafe impl<'root, 'child> Extends<VideoEncodeRateControlLayerInfoKHR<'root>> + for VideoEncodeH264RateControlLayerInfoKHR<'child> { } impl<'a> VideoEncodeH264RateControlLayerInfoKHR<'a> { @@ -48405,7 +49146,10 @@ impl ::core::default::Default for VideoEncodeH265CapabilitiesKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeH265CapabilitiesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_CAPABILITIES_KHR; } -unsafe impl ExtendsVideoCapabilitiesKHR for VideoEncodeH265CapabilitiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoCapabilitiesKHR<'root>> + for VideoEncodeH265CapabilitiesKHR<'child> +{ +} impl<'a> VideoEncodeH265CapabilitiesKHR<'a> { #[inline] pub fn flags(mut self, flags: VideoEncodeH265CapabilityFlagsKHR) -> Self { @@ -48543,8 +49287,8 @@ unsafe impl<'a> TaggedStructure for VideoEncodeH265QualityLevelPropertiesKHR<'a> const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR; } -unsafe impl ExtendsVideoEncodeQualityLevelPropertiesKHR - for VideoEncodeH265QualityLevelPropertiesKHR<'_> +unsafe impl<'root, 'child> Extends<VideoEncodeQualityLevelPropertiesKHR<'root>> + for VideoEncodeH265QualityLevelPropertiesKHR<'child> { } impl<'a> VideoEncodeH265QualityLevelPropertiesKHR<'a> { @@ -48630,7 +49374,10 @@ impl ::core::default::Default for VideoEncodeH265SessionCreateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeH265SessionCreateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR; } -unsafe impl ExtendsVideoSessionCreateInfoKHR for VideoEncodeH265SessionCreateInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoSessionCreateInfoKHR<'root>> + for VideoEncodeH265SessionCreateInfoKHR<'child> +{ +} impl<'a> VideoEncodeH265SessionCreateInfoKHR<'a> { #[inline] pub fn use_max_level_idc(mut self, use_max_level_idc: bool) -> Self { @@ -48681,8 +49428,8 @@ unsafe impl<'a> TaggedStructure for VideoEncodeH265SessionParametersAddInfoKHR<' const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR; } -unsafe impl ExtendsVideoSessionParametersUpdateInfoKHR - for VideoEncodeH265SessionParametersAddInfoKHR<'_> +unsafe impl<'root, 'child> Extends<VideoSessionParametersUpdateInfoKHR<'root>> + for VideoEncodeH265SessionParametersAddInfoKHR<'child> { } impl<'a> VideoEncodeH265SessionParametersAddInfoKHR<'a> { @@ -48739,8 +49486,8 @@ unsafe impl<'a> TaggedStructure for VideoEncodeH265SessionParametersCreateInfoKH const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR; } -unsafe impl ExtendsVideoSessionParametersCreateInfoKHR - for VideoEncodeH265SessionParametersCreateInfoKHR<'_> +unsafe impl<'root, 'child> Extends<VideoSessionParametersCreateInfoKHR<'root>> + for VideoEncodeH265SessionParametersCreateInfoKHR<'child> { } impl<'a> VideoEncodeH265SessionParametersCreateInfoKHR<'a> { @@ -48806,8 +49553,8 @@ unsafe impl<'a> TaggedStructure for VideoEncodeH265SessionParametersGetInfoKHR<' const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR; } -unsafe impl ExtendsVideoEncodeSessionParametersGetInfoKHR - for VideoEncodeH265SessionParametersGetInfoKHR<'_> +unsafe impl<'root, 'child> Extends<VideoEncodeSessionParametersGetInfoKHR<'root>> + for VideoEncodeH265SessionParametersGetInfoKHR<'child> { } impl<'a> VideoEncodeH265SessionParametersGetInfoKHR<'a> { @@ -48874,8 +49621,8 @@ unsafe impl<'a> TaggedStructure for VideoEncodeH265SessionParametersFeedbackInfo const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR; } -unsafe impl ExtendsVideoEncodeSessionParametersFeedbackInfoKHR - for VideoEncodeH265SessionParametersFeedbackInfoKHR<'_> +unsafe impl<'root, 'child> Extends<VideoEncodeSessionParametersFeedbackInfoKHR<'root>> + for VideoEncodeH265SessionParametersFeedbackInfoKHR<'child> { } impl<'a> VideoEncodeH265SessionParametersFeedbackInfoKHR<'a> { @@ -48926,7 +49673,10 @@ impl ::core::default::Default for VideoEncodeH265PictureInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeH265PictureInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_PICTURE_INFO_KHR; } -unsafe impl ExtendsVideoEncodeInfoKHR for VideoEncodeH265PictureInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoEncodeInfoKHR<'root>> + for VideoEncodeH265PictureInfoKHR<'child> +{ +} impl<'a> VideoEncodeH265PictureInfoKHR<'a> { #[inline] pub fn nalu_slice_segment_entries( @@ -49023,8 +49773,14 @@ impl ::core::default::Default for VideoEncodeH265RateControlInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeH265RateControlInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR; } -unsafe impl ExtendsVideoCodingControlInfoKHR for VideoEncodeH265RateControlInfoKHR<'_> {} -unsafe impl ExtendsVideoBeginCodingInfoKHR for VideoEncodeH265RateControlInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoCodingControlInfoKHR<'root>> + for VideoEncodeH265RateControlInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<VideoBeginCodingInfoKHR<'root>> + for VideoEncodeH265RateControlInfoKHR<'child> +{ +} impl<'a> VideoEncodeH265RateControlInfoKHR<'a> { #[inline] pub fn flags(mut self, flags: VideoEncodeH265RateControlFlagsKHR) -> Self { @@ -49140,7 +49896,10 @@ unsafe impl<'a> TaggedStructure for VideoEncodeH265GopRemainingFrameInfoKHR<'a> const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR; } -unsafe impl ExtendsVideoBeginCodingInfoKHR for VideoEncodeH265GopRemainingFrameInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoBeginCodingInfoKHR<'root>> + for VideoEncodeH265GopRemainingFrameInfoKHR<'child> +{ +} impl<'a> VideoEncodeH265GopRemainingFrameInfoKHR<'a> { #[inline] pub fn use_gop_remaining_frames(mut self, use_gop_remaining_frames: bool) -> Self { @@ -49201,8 +49960,8 @@ unsafe impl<'a> TaggedStructure for VideoEncodeH265RateControlLayerInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR; } -unsafe impl ExtendsVideoEncodeRateControlLayerInfoKHR - for VideoEncodeH265RateControlLayerInfoKHR<'_> +unsafe impl<'root, 'child> Extends<VideoEncodeRateControlLayerInfoKHR<'root>> + for VideoEncodeH265RateControlLayerInfoKHR<'child> { } impl<'a> VideoEncodeH265RateControlLayerInfoKHR<'a> { @@ -49264,8 +50023,14 @@ impl ::core::default::Default for VideoEncodeH265ProfileInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeH265ProfileInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_PROFILE_INFO_KHR; } -unsafe impl ExtendsVideoProfileInfoKHR for VideoEncodeH265ProfileInfoKHR<'_> {} -unsafe impl ExtendsQueryPoolCreateInfo for VideoEncodeH265ProfileInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoProfileInfoKHR<'root>> + for VideoEncodeH265ProfileInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<QueryPoolCreateInfo<'root>> + for VideoEncodeH265ProfileInfoKHR<'child> +{ +} impl<'a> VideoEncodeH265ProfileInfoKHR<'a> { #[inline] pub fn std_profile_idc(mut self, std_profile_idc: StdVideoH265ProfileIdc) -> Self { @@ -49300,7 +50065,10 @@ impl ::core::default::Default for VideoEncodeH265DpbSlotInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeH265DpbSlotInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR; } -unsafe impl ExtendsVideoReferenceSlotInfoKHR for VideoEncodeH265DpbSlotInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<VideoReferenceSlotInfoKHR<'root>> + for VideoEncodeH265DpbSlotInfoKHR<'child> +{ +} impl<'a> VideoEncodeH265DpbSlotInfoKHR<'a> { #[inline] pub fn std_reference_info( @@ -49339,11 +50107,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceInheritedViewportScissorFeatur const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceInheritedViewportScissorFeaturesNV<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceInheritedViewportScissorFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceInheritedViewportScissorFeaturesNV<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceInheritedViewportScissorFeaturesNV<'_> {} impl<'a> PhysicalDeviceInheritedViewportScissorFeaturesNV<'a> { #[inline] pub fn inherited_viewport_scissor2_d(mut self, inherited_viewport_scissor2_d: bool) -> Self { @@ -49383,8 +50154,8 @@ unsafe impl<'a> TaggedStructure for CommandBufferInheritanceViewportScissorInfoN const STRUCTURE_TYPE: StructureType = StructureType::COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV; } -unsafe impl ExtendsCommandBufferInheritanceInfo - for CommandBufferInheritanceViewportScissorInfoNV<'_> +unsafe impl<'root, 'child> Extends<CommandBufferInheritanceInfo<'root>> + for CommandBufferInheritanceViewportScissorInfoNV<'child> { } impl<'a> CommandBufferInheritanceViewportScissorInfoNV<'a> { @@ -49432,8 +50203,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceYcbcr2Plane444FormatsFeaturesE const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT<'a> { #[inline] pub fn ycbcr2plane444_formats(mut self, ycbcr2plane444_formats: bool) -> Self { @@ -49471,8 +50248,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceProvokingVertexFeaturesEXT<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceProvokingVertexFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceProvokingVertexFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceProvokingVertexFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceProvokingVertexFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceProvokingVertexFeaturesEXT<'a> { #[inline] pub fn provoking_vertex_last(mut self, provoking_vertex_last: bool) -> Self { @@ -49519,7 +50302,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceProvokingVertexPropertiesEXT<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceProvokingVertexPropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceProvokingVertexPropertiesEXT<'child> +{ +} impl<'a> PhysicalDeviceProvokingVertexPropertiesEXT<'a> { #[inline] pub fn provoking_vertex_mode_per_pipeline( @@ -49567,8 +50353,8 @@ unsafe impl<'a> TaggedStructure for PipelineRasterizationProvokingVertexStateCre const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT; } -unsafe impl ExtendsPipelineRasterizationStateCreateInfo - for PipelineRasterizationProvokingVertexStateCreateInfoEXT<'_> +unsafe impl<'root, 'child> Extends<PipelineRasterizationStateCreateInfo<'root>> + for PipelineRasterizationProvokingVertexStateCreateInfoEXT<'child> { } impl<'a> PipelineRasterizationProvokingVertexStateCreateInfoEXT<'a> { @@ -49801,8 +50587,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDescriptorBufferFeaturesEXT<'a const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDescriptorBufferFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDescriptorBufferFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceDescriptorBufferFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceDescriptorBufferFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceDescriptorBufferFeaturesEXT<'a> { #[inline] pub fn descriptor_buffer(mut self, descriptor_buffer: bool) -> Self { @@ -49926,7 +50718,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDescriptorBufferPropertiesEXT< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDescriptorBufferPropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceDescriptorBufferPropertiesEXT<'child> +{ +} impl<'a> PhysicalDeviceDescriptorBufferPropertiesEXT<'a> { #[inline] pub fn combined_image_sampler_descriptor_single_array( @@ -50207,8 +51002,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDescriptorBufferDensityMapProp const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT<'child> { } impl<'a> PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT<'a> { @@ -50299,7 +51094,6 @@ impl ::core::default::Default for DescriptorBufferBindingInfoEXT<'_> { unsafe impl<'a> TaggedStructure for DescriptorBufferBindingInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DESCRIPTOR_BUFFER_BINDING_INFO_EXT; } -pub unsafe trait ExtendsDescriptorBufferBindingInfoEXT {} impl<'a> DescriptorBufferBindingInfoEXT<'a> { #[inline] pub fn address(mut self, address: DeviceAddress) -> Self { @@ -50320,10 +51114,7 @@ impl<'a> DescriptorBufferBindingInfoEXT<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsDescriptorBufferBindingInfoEXT + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -50347,10 +51138,7 @@ impl<'a> DescriptorBufferBindingInfoEXT<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsDescriptorBufferBindingInfoEXT + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -50358,10 +51146,7 @@ impl<'a> DescriptorBufferBindingInfoEXT<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsDescriptorBufferBindingInfoEXT + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -50393,8 +51178,8 @@ unsafe impl<'a> TaggedStructure for DescriptorBufferBindingPushDescriptorBufferH const STRUCTURE_TYPE: StructureType = StructureType::DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT; } -unsafe impl ExtendsDescriptorBufferBindingInfoEXT - for DescriptorBufferBindingPushDescriptorBufferHandleEXT<'_> +unsafe impl<'root, 'child> Extends<DescriptorBufferBindingInfoEXT<'root>> + for DescriptorBufferBindingPushDescriptorBufferHandleEXT<'child> { } impl<'a> DescriptorBufferBindingPushDescriptorBufferHandleEXT<'a> { @@ -50689,16 +51474,28 @@ unsafe impl<'a> TaggedStructure for OpaqueCaptureDescriptorDataCreateInfoEXT<'a> const STRUCTURE_TYPE: StructureType = StructureType::OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT; } -unsafe impl ExtendsBufferCreateInfo for OpaqueCaptureDescriptorDataCreateInfoEXT<'_> {} -unsafe impl ExtendsImageCreateInfo for OpaqueCaptureDescriptorDataCreateInfoEXT<'_> {} -unsafe impl ExtendsImageViewCreateInfo for OpaqueCaptureDescriptorDataCreateInfoEXT<'_> {} -unsafe impl ExtendsSamplerCreateInfo for OpaqueCaptureDescriptorDataCreateInfoEXT<'_> {} -unsafe impl ExtendsAccelerationStructureCreateInfoKHR - for OpaqueCaptureDescriptorDataCreateInfoEXT<'_> +unsafe impl<'root, 'child> Extends<BufferCreateInfo<'root>> + for OpaqueCaptureDescriptorDataCreateInfoEXT<'child> { } -unsafe impl ExtendsAccelerationStructureCreateInfoNV - for OpaqueCaptureDescriptorDataCreateInfoEXT<'_> +unsafe impl<'root, 'child> Extends<ImageCreateInfo<'root>> + for OpaqueCaptureDescriptorDataCreateInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<ImageViewCreateInfo<'root>> + for OpaqueCaptureDescriptorDataCreateInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<SamplerCreateInfo<'root>> + for OpaqueCaptureDescriptorDataCreateInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<AccelerationStructureCreateInfoKHR<'root>> + for OpaqueCaptureDescriptorDataCreateInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<AccelerationStructureCreateInfoNV<'root>> + for OpaqueCaptureDescriptorDataCreateInfoEXT<'child> { } impl<'a> OpaqueCaptureDescriptorDataCreateInfoEXT<'a> { @@ -50739,8 +51536,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderIntegerDotProductFeature const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderIntegerDotProductFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderIntegerDotProductFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderIntegerDotProductFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderIntegerDotProductFeatures<'child> +{ +} impl<'a> PhysicalDeviceShaderIntegerDotProductFeatures<'a> { #[inline] pub fn shader_integer_dot_product(mut self, shader_integer_dot_product: bool) -> Self { @@ -50801,8 +51604,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderIntegerDotProductPropert const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceShaderIntegerDotProductProperties<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceShaderIntegerDotProductProperties<'child> { } impl<'a> PhysicalDeviceShaderIntegerDotProductProperties<'a> { @@ -51113,7 +51916,10 @@ impl ::core::default::Default for PhysicalDeviceDrmPropertiesEXT<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceDrmPropertiesEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DRM_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDrmPropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceDrmPropertiesEXT<'child> +{ +} impl<'a> PhysicalDeviceDrmPropertiesEXT<'a> { #[inline] pub fn has_primary(mut self, has_primary: bool) -> Self { @@ -51174,11 +51980,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceFragmentShaderBarycentricFeatu const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR<'_> {} impl<'a> PhysicalDeviceFragmentShaderBarycentricFeaturesKHR<'a> { #[inline] pub fn fragment_shader_barycentric(mut self, fragment_shader_barycentric: bool) -> Self { @@ -51214,8 +52023,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceFragmentShaderBarycentricPrope const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceFragmentShaderBarycentricPropertiesKHR<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceFragmentShaderBarycentricPropertiesKHR<'child> { } impl<'a> PhysicalDeviceFragmentShaderBarycentricPropertiesKHR<'a> { @@ -51259,8 +52068,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceRayTracingMotionBlurFeaturesNV const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRayTracingMotionBlurFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRayTracingMotionBlurFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceRayTracingMotionBlurFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceRayTracingMotionBlurFeaturesNV<'child> +{ +} impl<'a> PhysicalDeviceRayTracingMotionBlurFeaturesNV<'a> { #[inline] pub fn ray_tracing_motion_blur(mut self, ray_tracing_motion_blur: bool) -> Self { @@ -51305,8 +52120,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceRayTracingValidationFeaturesNV const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRayTracingValidationFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRayTracingValidationFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceRayTracingValidationFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceRayTracingValidationFeaturesNV<'child> +{ +} impl<'a> PhysicalDeviceRayTracingValidationFeaturesNV<'a> { #[inline] pub fn ray_tracing_validation(mut self, ray_tracing_validation: bool) -> Self { @@ -51351,8 +52172,8 @@ unsafe impl<'a> TaggedStructure for AccelerationStructureGeometryMotionTriangles const STRUCTURE_TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV; } -unsafe impl ExtendsAccelerationStructureGeometryTrianglesDataKHR - for AccelerationStructureGeometryMotionTrianglesDataNV<'_> +unsafe impl<'root, 'child> Extends<AccelerationStructureGeometryTrianglesDataKHR<'root>> + for AccelerationStructureGeometryMotionTrianglesDataNV<'child> { } impl<'a> AccelerationStructureGeometryMotionTrianglesDataNV<'a> { @@ -51391,7 +52212,10 @@ impl ::core::default::Default for AccelerationStructureMotionInfoNV<'_> { unsafe impl<'a> TaggedStructure for AccelerationStructureMotionInfoNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_MOTION_INFO_NV; } -unsafe impl ExtendsAccelerationStructureCreateInfoKHR for AccelerationStructureMotionInfoNV<'_> {} +unsafe impl<'root, 'child> Extends<AccelerationStructureCreateInfoKHR<'root>> + for AccelerationStructureMotionInfoNV<'child> +{ +} impl<'a> AccelerationStructureMotionInfoNV<'a> { #[inline] pub fn max_instances(mut self, max_instances: u32) -> Self { @@ -51655,7 +52479,10 @@ impl ::core::default::Default for ImportMemoryBufferCollectionFUCHSIA<'_> { unsafe impl<'a> TaggedStructure for ImportMemoryBufferCollectionFUCHSIA<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA; } -unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryBufferCollectionFUCHSIA<'_> {} +unsafe impl<'root, 'child> Extends<MemoryAllocateInfo<'root>> + for ImportMemoryBufferCollectionFUCHSIA<'child> +{ +} impl<'a> ImportMemoryBufferCollectionFUCHSIA<'a> { #[inline] pub fn collection(mut self, collection: BufferCollectionFUCHSIA) -> Self { @@ -51698,7 +52525,10 @@ unsafe impl<'a> TaggedStructure for BufferCollectionImageCreateInfoFUCHSIA<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA; } -unsafe impl ExtendsImageCreateInfo for BufferCollectionImageCreateInfoFUCHSIA<'_> {} +unsafe impl<'root, 'child> Extends<ImageCreateInfo<'root>> + for BufferCollectionImageCreateInfoFUCHSIA<'child> +{ +} impl<'a> BufferCollectionImageCreateInfoFUCHSIA<'a> { #[inline] pub fn collection(mut self, collection: BufferCollectionFUCHSIA) -> Self { @@ -51741,7 +52571,10 @@ unsafe impl<'a> TaggedStructure for BufferCollectionBufferCreateInfoFUCHSIA<'a> const STRUCTURE_TYPE: StructureType = StructureType::BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA; } -unsafe impl ExtendsBufferCreateInfo for BufferCollectionBufferCreateInfoFUCHSIA<'_> {} +unsafe impl<'root, 'child> Extends<BufferCreateInfo<'root>> + for BufferCollectionBufferCreateInfoFUCHSIA<'child> +{ +} impl<'a> BufferCollectionBufferCreateInfoFUCHSIA<'a> { #[inline] pub fn collection(mut self, collection: BufferCollectionFUCHSIA) -> Self { @@ -52410,8 +53243,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceRGBA10X6FormatsFeaturesEXT<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRGBA10X6FormatsFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRGBA10X6FormatsFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceRGBA10X6FormatsFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceRGBA10X6FormatsFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceRGBA10X6FormatsFeaturesEXT<'a> { #[inline] pub fn format_rgba10x6_without_y_cb_cr_sampler( @@ -52454,7 +53293,7 @@ impl ::core::default::Default for FormatProperties3<'_> { unsafe impl<'a> TaggedStructure for FormatProperties3<'a> { const STRUCTURE_TYPE: StructureType = StructureType::FORMAT_PROPERTIES_3; } -unsafe impl ExtendsFormatProperties2 for FormatProperties3<'_> {} +unsafe impl<'root, 'child> Extends<FormatProperties2<'root>> for FormatProperties3<'child> {} impl<'a> FormatProperties3<'a> { #[inline] pub fn linear_tiling_features(mut self, linear_tiling_features: FormatFeatureFlags2) -> Self { @@ -52501,7 +53340,10 @@ impl ::core::default::Default for DrmFormatModifierPropertiesList2EXT<'_> { unsafe impl<'a> TaggedStructure for DrmFormatModifierPropertiesList2EXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT; } -unsafe impl ExtendsFormatProperties2 for DrmFormatModifierPropertiesList2EXT<'_> {} +unsafe impl<'root, 'child> Extends<FormatProperties2<'root>> + for DrmFormatModifierPropertiesList2EXT<'child> +{ +} impl<'a> DrmFormatModifierPropertiesList2EXT<'a> { #[inline] pub fn drm_format_modifier_properties( @@ -52585,8 +53427,8 @@ unsafe impl<'a> TaggedStructure for AndroidHardwareBufferFormatProperties2ANDROI const STRUCTURE_TYPE: StructureType = StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID; } -unsafe impl ExtendsAndroidHardwareBufferPropertiesANDROID - for AndroidHardwareBufferFormatProperties2ANDROID<'_> +unsafe impl<'root, 'child> Extends<AndroidHardwareBufferPropertiesANDROID<'root>> + for AndroidHardwareBufferFormatProperties2ANDROID<'child> { } impl<'a> AndroidHardwareBufferFormatProperties2ANDROID<'a> { @@ -52672,7 +53514,10 @@ impl ::core::default::Default for PipelineRenderingCreateInfo<'_> { unsafe impl<'a> TaggedStructure for PipelineRenderingCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_RENDERING_CREATE_INFO; } -unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineRenderingCreateInfo<'_> {} +unsafe impl<'root, 'child> Extends<GraphicsPipelineCreateInfo<'root>> + for PipelineRenderingCreateInfo<'child> +{ +} impl<'a> PipelineRenderingCreateInfo<'a> { #[inline] pub fn view_mask(mut self, view_mask: u32) -> Self { @@ -52737,7 +53582,6 @@ impl ::core::default::Default for RenderingInfo<'_> { unsafe impl<'a> TaggedStructure for RenderingInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RENDERING_INFO; } -pub unsafe trait ExtendsRenderingInfo {} impl<'a> RenderingInfo<'a> { #[inline] pub fn flags(mut self, flags: RenderingFlags) -> Self { @@ -52790,7 +53634,7 @@ impl<'a> RenderingInfo<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsRenderingInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -52814,7 +53658,7 @@ impl<'a> RenderingInfo<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsRenderingInfo + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -52822,7 +53666,7 @@ impl<'a> RenderingInfo<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsRenderingInfo + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -52957,7 +53801,10 @@ unsafe impl<'a> TaggedStructure for RenderingFragmentShadingRateAttachmentInfoKH const STRUCTURE_TYPE: StructureType = StructureType::RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR; } -unsafe impl ExtendsRenderingInfo for RenderingFragmentShadingRateAttachmentInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<RenderingInfo<'root>> + for RenderingFragmentShadingRateAttachmentInfoKHR<'child> +{ +} impl<'a> RenderingFragmentShadingRateAttachmentInfoKHR<'a> { #[inline] pub fn image_view(mut self, image_view: ImageView) -> Self { @@ -53008,7 +53855,10 @@ unsafe impl<'a> TaggedStructure for RenderingFragmentDensityMapAttachmentInfoEXT const STRUCTURE_TYPE: StructureType = StructureType::RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT; } -unsafe impl ExtendsRenderingInfo for RenderingFragmentDensityMapAttachmentInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<RenderingInfo<'root>> + for RenderingFragmentDensityMapAttachmentInfoEXT<'child> +{ +} impl<'a> RenderingFragmentDensityMapAttachmentInfoEXT<'a> { #[inline] pub fn image_view(mut self, image_view: ImageView) -> Self { @@ -53048,8 +53898,14 @@ impl ::core::default::Default for PhysicalDeviceDynamicRenderingFeatures<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceDynamicRenderingFeatures<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDynamicRenderingFeatures<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDynamicRenderingFeatures<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceDynamicRenderingFeatures<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceDynamicRenderingFeatures<'child> +{ +} impl<'a> PhysicalDeviceDynamicRenderingFeatures<'a> { #[inline] pub fn dynamic_rendering(mut self, dynamic_rendering: bool) -> Self { @@ -53096,7 +53952,10 @@ impl ::core::default::Default for CommandBufferInheritanceRenderingInfo<'_> { unsafe impl<'a> TaggedStructure for CommandBufferInheritanceRenderingInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::COMMAND_BUFFER_INHERITANCE_RENDERING_INFO; } -unsafe impl ExtendsCommandBufferInheritanceInfo for CommandBufferInheritanceRenderingInfo<'_> {} +unsafe impl<'root, 'child> Extends<CommandBufferInheritanceInfo<'root>> + for CommandBufferInheritanceRenderingInfo<'child> +{ +} impl<'a> CommandBufferInheritanceRenderingInfo<'a> { #[inline] pub fn flags(mut self, flags: RenderingFlags) -> Self { @@ -53161,8 +54020,14 @@ impl ::core::default::Default for AttachmentSampleCountInfoAMD<'_> { unsafe impl<'a> TaggedStructure for AttachmentSampleCountInfoAMD<'a> { const STRUCTURE_TYPE: StructureType = StructureType::ATTACHMENT_SAMPLE_COUNT_INFO_AMD; } -unsafe impl ExtendsCommandBufferInheritanceInfo for AttachmentSampleCountInfoAMD<'_> {} -unsafe impl ExtendsGraphicsPipelineCreateInfo for AttachmentSampleCountInfoAMD<'_> {} +unsafe impl<'root, 'child> Extends<CommandBufferInheritanceInfo<'root>> + for AttachmentSampleCountInfoAMD<'child> +{ +} +unsafe impl<'root, 'child> Extends<GraphicsPipelineCreateInfo<'root>> + for AttachmentSampleCountInfoAMD<'child> +{ +} impl<'a> AttachmentSampleCountInfoAMD<'a> { #[inline] pub fn color_attachment_samples( @@ -53211,9 +54076,18 @@ impl ::core::default::Default for MultiviewPerViewAttributesInfoNVX<'_> { unsafe impl<'a> TaggedStructure for MultiviewPerViewAttributesInfoNVX<'a> { const STRUCTURE_TYPE: StructureType = StructureType::MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX; } -unsafe impl ExtendsCommandBufferInheritanceInfo for MultiviewPerViewAttributesInfoNVX<'_> {} -unsafe impl ExtendsGraphicsPipelineCreateInfo for MultiviewPerViewAttributesInfoNVX<'_> {} -unsafe impl ExtendsRenderingInfo for MultiviewPerViewAttributesInfoNVX<'_> {} +unsafe impl<'root, 'child> Extends<CommandBufferInheritanceInfo<'root>> + for MultiviewPerViewAttributesInfoNVX<'child> +{ +} +unsafe impl<'root, 'child> Extends<GraphicsPipelineCreateInfo<'root>> + for MultiviewPerViewAttributesInfoNVX<'child> +{ +} +unsafe impl<'root, 'child> Extends<RenderingInfo<'root>> + for MultiviewPerViewAttributesInfoNVX<'child> +{ +} impl<'a> MultiviewPerViewAttributesInfoNVX<'a> { #[inline] pub fn per_view_attributes(mut self, per_view_attributes: bool) -> Self { @@ -53257,8 +54131,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceImageViewMinLodFeaturesEXT<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceImageViewMinLodFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceImageViewMinLodFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceImageViewMinLodFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceImageViewMinLodFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceImageViewMinLodFeaturesEXT<'a> { #[inline] pub fn min_lod(mut self, min_lod: bool) -> Self { @@ -53293,7 +54173,10 @@ impl ::core::default::Default for ImageViewMinLodCreateInfoEXT<'_> { unsafe impl<'a> TaggedStructure for ImageViewMinLodCreateInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT; } -unsafe impl ExtendsImageViewCreateInfo for ImageViewMinLodCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<ImageViewCreateInfo<'root>> + for ImageViewMinLodCreateInfoEXT<'child> +{ +} impl<'a> ImageViewMinLodCreateInfoEXT<'a> { #[inline] pub fn min_lod(mut self, min_lod: f32) -> Self { @@ -53335,12 +54218,12 @@ unsafe impl<'a> TaggedStructure const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT<'child> { } -unsafe impl ExtendsDeviceCreateInfo - for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT<'child> { } impl<'a> PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT<'a> { @@ -53400,8 +54283,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceLinearColorAttachmentFeaturesN const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceLinearColorAttachmentFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceLinearColorAttachmentFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceLinearColorAttachmentFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceLinearColorAttachmentFeaturesNV<'child> +{ +} impl<'a> PhysicalDeviceLinearColorAttachmentFeaturesNV<'a> { #[inline] pub fn linear_color_attachment(mut self, linear_color_attachment: bool) -> Self { @@ -53437,11 +54326,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceGraphicsPipelineLibraryFeature const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT<'_> {} impl<'a> PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT<'a> { #[inline] pub fn graphics_pipeline_library(mut self, graphics_pipeline_library: bool) -> Self { @@ -53477,8 +54369,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDevicePipelineBinaryFeaturesKHR<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePipelineBinaryFeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePipelineBinaryFeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDevicePipelineBinaryFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDevicePipelineBinaryFeaturesKHR<'child> +{ +} impl<'a> PhysicalDevicePipelineBinaryFeaturesKHR<'a> { #[inline] pub fn pipeline_binaries(mut self, pipeline_binaries: bool) -> Self { @@ -53514,7 +54412,10 @@ unsafe impl<'a> TaggedStructure for DevicePipelineBinaryInternalCacheControlKHR< const STRUCTURE_TYPE: StructureType = StructureType::DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR; } -unsafe impl ExtendsDeviceCreateInfo for DevicePipelineBinaryInternalCacheControlKHR<'_> {} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for DevicePipelineBinaryInternalCacheControlKHR<'child> +{ +} impl<'a> DevicePipelineBinaryInternalCacheControlKHR<'a> { #[inline] pub fn disable_internal_cache(mut self, disable_internal_cache: bool) -> Self { @@ -53558,7 +54459,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDevicePipelineBinaryPropertiesKHR<'a const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDevicePipelineBinaryPropertiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDevicePipelineBinaryPropertiesKHR<'child> +{ +} impl<'a> PhysicalDevicePipelineBinaryPropertiesKHR<'a> { #[inline] pub fn pipeline_binary_internal_cache(mut self, pipeline_binary_internal_cache: bool) -> Self { @@ -53629,8 +54533,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceGraphicsPipelineLibraryPropert const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT<'child> { } impl<'a> PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT<'a> { @@ -53679,7 +54583,10 @@ impl ::core::default::Default for GraphicsPipelineLibraryCreateInfoEXT<'_> { unsafe impl<'a> TaggedStructure for GraphicsPipelineLibraryCreateInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT; } -unsafe impl ExtendsGraphicsPipelineCreateInfo for GraphicsPipelineLibraryCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<GraphicsPipelineCreateInfo<'root>> + for GraphicsPipelineLibraryCreateInfoEXT<'child> +{ +} impl<'a> GraphicsPipelineLibraryCreateInfoEXT<'a> { #[inline] pub fn flags(mut self, flags: GraphicsPipelineLibraryFlagsEXT) -> Self { @@ -53715,11 +54622,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDescriptorSetHostMappingFeatur const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE<'_> {} impl<'a> PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE<'a> { #[inline] pub fn descriptor_set_host_mapping(mut self, descriptor_set_host_mapping: bool) -> Self { @@ -53842,8 +54752,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceNestedCommandBufferFeaturesEXT const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceNestedCommandBufferFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceNestedCommandBufferFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceNestedCommandBufferFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceNestedCommandBufferFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceNestedCommandBufferFeaturesEXT<'a> { #[inline] pub fn nested_command_buffer(mut self, nested_command_buffer: bool) -> Self { @@ -53895,8 +54811,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceNestedCommandBufferPropertiesE const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceNestedCommandBufferPropertiesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceNestedCommandBufferPropertiesEXT<'child> { } impl<'a> PhysicalDeviceNestedCommandBufferPropertiesEXT<'a> { @@ -53937,8 +54853,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderModuleIdentifierFeatures const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderModuleIdentifierFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderModuleIdentifierFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderModuleIdentifierFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderModuleIdentifierFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceShaderModuleIdentifierFeaturesEXT<'a> { #[inline] pub fn shader_module_identifier(mut self, shader_module_identifier: bool) -> Self { @@ -53974,8 +54896,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderModuleIdentifierProperti const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceShaderModuleIdentifierPropertiesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceShaderModuleIdentifierPropertiesEXT<'child> { } impl<'a> PhysicalDeviceShaderModuleIdentifierPropertiesEXT<'a> { @@ -54018,8 +54940,8 @@ unsafe impl<'a> TaggedStructure for PipelineShaderStageModuleIdentifierCreateInf const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT; } -unsafe impl ExtendsPipelineShaderStageCreateInfo - for PipelineShaderStageModuleIdentifierCreateInfoEXT<'_> +unsafe impl<'root, 'child> Extends<PipelineShaderStageCreateInfo<'root>> + for PipelineShaderStageModuleIdentifierCreateInfoEXT<'child> { } impl<'a> PipelineShaderStageModuleIdentifierCreateInfoEXT<'a> { @@ -54112,9 +55034,15 @@ impl ::core::default::Default for ImageCompressionControlEXT<'_> { unsafe impl<'a> TaggedStructure for ImageCompressionControlEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_COMPRESSION_CONTROL_EXT; } -unsafe impl ExtendsImageCreateInfo for ImageCompressionControlEXT<'_> {} -unsafe impl ExtendsSwapchainCreateInfoKHR for ImageCompressionControlEXT<'_> {} -unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 for ImageCompressionControlEXT<'_> {} +unsafe impl<'root, 'child> Extends<ImageCreateInfo<'root>> for ImageCompressionControlEXT<'child> {} +unsafe impl<'root, 'child> Extends<SwapchainCreateInfoKHR<'root>> + for ImageCompressionControlEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<PhysicalDeviceImageFormatInfo2<'root>> + for ImageCompressionControlEXT<'child> +{ +} impl<'a> ImageCompressionControlEXT<'a> { #[inline] pub fn flags(mut self, flags: ImageCompressionFlagsEXT) -> Self { @@ -54159,11 +55087,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceImageCompressionControlFeature const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceImageCompressionControlFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceImageCompressionControlFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceImageCompressionControlFeaturesEXT<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceImageCompressionControlFeaturesEXT<'_> {} impl<'a> PhysicalDeviceImageCompressionControlFeaturesEXT<'a> { #[inline] pub fn image_compression_control(mut self, image_compression_control: bool) -> Self { @@ -54200,9 +55131,18 @@ impl ::core::default::Default for ImageCompressionPropertiesEXT<'_> { unsafe impl<'a> TaggedStructure for ImageCompressionPropertiesEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_COMPRESSION_PROPERTIES_EXT; } -unsafe impl ExtendsImageFormatProperties2 for ImageCompressionPropertiesEXT<'_> {} -unsafe impl ExtendsSurfaceFormat2KHR for ImageCompressionPropertiesEXT<'_> {} -unsafe impl ExtendsSubresourceLayout2KHR for ImageCompressionPropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<ImageFormatProperties2<'root>> + for ImageCompressionPropertiesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<SurfaceFormat2KHR<'root>> + for ImageCompressionPropertiesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<SubresourceLayout2KHR<'root>> + for ImageCompressionPropertiesEXT<'child> +{ +} impl<'a> ImageCompressionPropertiesEXT<'a> { #[inline] pub fn image_compression_flags( @@ -54249,12 +55189,12 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceImageCompressionControlSwapcha const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT<'child> { } -unsafe impl ExtendsDeviceCreateInfo - for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT<'child> { } impl<'a> PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT<'a> { @@ -54328,7 +55268,6 @@ impl ::core::default::Default for SubresourceLayout2KHR<'_> { unsafe impl<'a> TaggedStructure for SubresourceLayout2KHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SUBRESOURCE_LAYOUT_2_KHR; } -pub unsafe trait ExtendsSubresourceLayout2KHR {} impl<'a> SubresourceLayout2KHR<'a> { #[inline] pub fn subresource_layout(mut self, subresource_layout: SubresourceLayout) -> Self { @@ -54344,7 +55283,7 @@ impl<'a> SubresourceLayout2KHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsSubresourceLayout2KHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -54368,10 +55307,7 @@ impl<'a> SubresourceLayout2KHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsSubresourceLayout2KHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -54379,10 +55315,7 @@ impl<'a> SubresourceLayout2KHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsSubresourceLayout2KHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -54413,8 +55346,14 @@ impl ::core::default::Default for RenderPassCreationControlEXT<'_> { unsafe impl<'a> TaggedStructure for RenderPassCreationControlEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RENDER_PASS_CREATION_CONTROL_EXT; } -unsafe impl ExtendsRenderPassCreateInfo2 for RenderPassCreationControlEXT<'_> {} -unsafe impl ExtendsSubpassDescription2 for RenderPassCreationControlEXT<'_> {} +unsafe impl<'root, 'child> Extends<RenderPassCreateInfo2<'root>> + for RenderPassCreationControlEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<SubpassDescription2<'root>> + for RenderPassCreationControlEXT<'child> +{ +} impl<'a> RenderPassCreationControlEXT<'a> { #[inline] pub fn disallow_merging(mut self, disallow_merging: bool) -> Self { @@ -54465,7 +55404,10 @@ unsafe impl<'a> TaggedStructure for RenderPassCreationFeedbackCreateInfoEXT<'a> const STRUCTURE_TYPE: StructureType = StructureType::RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT; } -unsafe impl ExtendsRenderPassCreateInfo2 for RenderPassCreationFeedbackCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<RenderPassCreateInfo2<'root>> + for RenderPassCreationFeedbackCreateInfoEXT<'child> +{ +} impl<'a> RenderPassCreationFeedbackCreateInfoEXT<'a> { #[inline] pub fn render_pass_feedback( @@ -54556,7 +55498,10 @@ unsafe impl<'a> TaggedStructure for RenderPassSubpassFeedbackCreateInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT; } -unsafe impl ExtendsSubpassDescription2 for RenderPassSubpassFeedbackCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<SubpassDescription2<'root>> + for RenderPassSubpassFeedbackCreateInfoEXT<'child> +{ +} impl<'a> RenderPassSubpassFeedbackCreateInfoEXT<'a> { #[inline] pub fn subpass_feedback( @@ -54595,8 +55540,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceSubpassMergeFeedbackFeaturesEX const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceSubpassMergeFeedbackFeaturesEXT<'a> { #[inline] pub fn subpass_merge_feedback(mut self, subpass_merge_feedback: bool) -> Self { @@ -55127,8 +56078,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceOpacityMicromapFeaturesEXT<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceOpacityMicromapFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceOpacityMicromapFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceOpacityMicromapFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceOpacityMicromapFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceOpacityMicromapFeaturesEXT<'a> { #[inline] pub fn micromap(mut self, micromap: bool) -> Self { @@ -55176,7 +56133,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceOpacityMicromapPropertiesEXT<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceOpacityMicromapPropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceOpacityMicromapPropertiesEXT<'child> +{ +} impl<'a> PhysicalDeviceOpacityMicromapPropertiesEXT<'a> { #[inline] pub fn max_opacity2_state_subdivision_level( @@ -55253,8 +56213,8 @@ unsafe impl<'a> TaggedStructure for AccelerationStructureTrianglesOpacityMicroma const STRUCTURE_TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT; } -unsafe impl ExtendsAccelerationStructureGeometryTrianglesDataKHR - for AccelerationStructureTrianglesOpacityMicromapEXT<'_> +unsafe impl<'root, 'child> Extends<AccelerationStructureGeometryTrianglesDataKHR<'root>> + for AccelerationStructureTrianglesOpacityMicromapEXT<'child> { } impl<'a> AccelerationStructureTrianglesOpacityMicromapEXT<'a> { @@ -55324,8 +56284,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDisplacementMicromapFeaturesNV const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDisplacementMicromapFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDisplacementMicromapFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceDisplacementMicromapFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceDisplacementMicromapFeaturesNV<'child> +{ +} impl<'a> PhysicalDeviceDisplacementMicromapFeaturesNV<'a> { #[inline] pub fn displacement_micromap(mut self, displacement_micromap: bool) -> Self { @@ -55361,8 +56327,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDisplacementMicromapProperties const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceDisplacementMicromapPropertiesNV<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceDisplacementMicromapPropertiesNV<'child> { } impl<'a> PhysicalDeviceDisplacementMicromapPropertiesNV<'a> { @@ -55473,8 +56439,8 @@ unsafe impl<'a> TaggedStructure for AccelerationStructureTrianglesDisplacementMi const STRUCTURE_TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV; } -unsafe impl ExtendsAccelerationStructureGeometryTrianglesDataKHR - for AccelerationStructureTrianglesDisplacementMicromapNV<'_> +unsafe impl<'root, 'child> Extends<AccelerationStructureGeometryTrianglesDataKHR<'root>> + for AccelerationStructureTrianglesDisplacementMicromapNV<'child> { } impl<'a> AccelerationStructureTrianglesDisplacementMicromapNV<'a> { @@ -55636,8 +56602,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDevicePipelinePropertiesFeaturesEXT< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePipelinePropertiesFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePipelinePropertiesFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDevicePipelinePropertiesFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDevicePipelinePropertiesFeaturesEXT<'child> +{ +} impl<'a> PhysicalDevicePipelinePropertiesFeaturesEXT<'a> { #[inline] pub fn pipeline_properties_identifier(mut self, pipeline_properties_identifier: bool) -> Self { @@ -55673,12 +56645,12 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderEarlyAndLateFragmentTest const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD<'child> { } -unsafe impl ExtendsDeviceCreateInfo - for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD<'_> +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD<'child> { } impl<'a> PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD<'a> { @@ -55718,10 +56690,22 @@ impl ::core::default::Default for ExternalMemoryAcquireUnmodifiedEXT<'_> { unsafe impl<'a> TaggedStructure for ExternalMemoryAcquireUnmodifiedEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT; } -unsafe impl ExtendsBufferMemoryBarrier for ExternalMemoryAcquireUnmodifiedEXT<'_> {} -unsafe impl ExtendsBufferMemoryBarrier2 for ExternalMemoryAcquireUnmodifiedEXT<'_> {} -unsafe impl ExtendsImageMemoryBarrier for ExternalMemoryAcquireUnmodifiedEXT<'_> {} -unsafe impl ExtendsImageMemoryBarrier2 for ExternalMemoryAcquireUnmodifiedEXT<'_> {} +unsafe impl<'root, 'child> Extends<BufferMemoryBarrier<'root>> + for ExternalMemoryAcquireUnmodifiedEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<BufferMemoryBarrier2<'root>> + for ExternalMemoryAcquireUnmodifiedEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<ImageMemoryBarrier<'root>> + for ExternalMemoryAcquireUnmodifiedEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<ImageMemoryBarrier2<'root>> + for ExternalMemoryAcquireUnmodifiedEXT<'child> +{ +} impl<'a> ExternalMemoryAcquireUnmodifiedEXT<'a> { #[inline] pub fn acquire_unmodified_memory(mut self, acquire_unmodified_memory: bool) -> Self { @@ -55756,13 +56740,34 @@ impl ::core::default::Default for ExportMetalObjectCreateInfoEXT<'_> { unsafe impl<'a> TaggedStructure for ExportMetalObjectCreateInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXPORT_METAL_OBJECT_CREATE_INFO_EXT; } -unsafe impl ExtendsInstanceCreateInfo for ExportMetalObjectCreateInfoEXT<'_> {} -unsafe impl ExtendsMemoryAllocateInfo for ExportMetalObjectCreateInfoEXT<'_> {} -unsafe impl ExtendsImageCreateInfo for ExportMetalObjectCreateInfoEXT<'_> {} -unsafe impl ExtendsImageViewCreateInfo for ExportMetalObjectCreateInfoEXT<'_> {} -unsafe impl ExtendsBufferViewCreateInfo for ExportMetalObjectCreateInfoEXT<'_> {} -unsafe impl ExtendsSemaphoreCreateInfo for ExportMetalObjectCreateInfoEXT<'_> {} -unsafe impl ExtendsEventCreateInfo for ExportMetalObjectCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<InstanceCreateInfo<'root>> + for ExportMetalObjectCreateInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<MemoryAllocateInfo<'root>> + for ExportMetalObjectCreateInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<ImageCreateInfo<'root>> + for ExportMetalObjectCreateInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<ImageViewCreateInfo<'root>> + for ExportMetalObjectCreateInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<BufferViewCreateInfo<'root>> + for ExportMetalObjectCreateInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<SemaphoreCreateInfo<'root>> + for ExportMetalObjectCreateInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<EventCreateInfo<'root>> + for ExportMetalObjectCreateInfoEXT<'child> +{ +} impl<'a> ExportMetalObjectCreateInfoEXT<'a> { #[inline] pub fn export_object_type(mut self, export_object_type: ExportMetalObjectTypeFlagsEXT) -> Self { @@ -55795,7 +56800,6 @@ impl ::core::default::Default for ExportMetalObjectsInfoEXT<'_> { unsafe impl<'a> TaggedStructure for ExportMetalObjectsInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXPORT_METAL_OBJECTS_INFO_EXT; } -pub unsafe trait ExtendsExportMetalObjectsInfoEXT {} impl<'a> ExportMetalObjectsInfoEXT<'a> { #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] #[doc = r" method only exists on structs that can be passed to a function directly. Only"] @@ -55806,7 +56810,7 @@ impl<'a> ExportMetalObjectsInfoEXT<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsExportMetalObjectsInfoEXT + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -55830,10 +56834,7 @@ impl<'a> ExportMetalObjectsInfoEXT<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsExportMetalObjectsInfoEXT + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -55841,10 +56842,7 @@ impl<'a> ExportMetalObjectsInfoEXT<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsExportMetalObjectsInfoEXT + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -55875,7 +56873,10 @@ impl ::core::default::Default for ExportMetalDeviceInfoEXT<'_> { unsafe impl<'a> TaggedStructure for ExportMetalDeviceInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXPORT_METAL_DEVICE_INFO_EXT; } -unsafe impl ExtendsExportMetalObjectsInfoEXT for ExportMetalDeviceInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<ExportMetalObjectsInfoEXT<'root>> + for ExportMetalDeviceInfoEXT<'child> +{ +} impl<'a> ExportMetalDeviceInfoEXT<'a> { #[inline] pub fn mtl_device(mut self, mtl_device: MTLDevice_id) -> Self { @@ -55912,7 +56913,10 @@ impl ::core::default::Default for ExportMetalCommandQueueInfoEXT<'_> { unsafe impl<'a> TaggedStructure for ExportMetalCommandQueueInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXPORT_METAL_COMMAND_QUEUE_INFO_EXT; } -unsafe impl ExtendsExportMetalObjectsInfoEXT for ExportMetalCommandQueueInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<ExportMetalObjectsInfoEXT<'root>> + for ExportMetalCommandQueueInfoEXT<'child> +{ +} impl<'a> ExportMetalCommandQueueInfoEXT<'a> { #[inline] pub fn queue(mut self, queue: Queue) -> Self { @@ -55954,7 +56958,10 @@ impl ::core::default::Default for ExportMetalBufferInfoEXT<'_> { unsafe impl<'a> TaggedStructure for ExportMetalBufferInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXPORT_METAL_BUFFER_INFO_EXT; } -unsafe impl ExtendsExportMetalObjectsInfoEXT for ExportMetalBufferInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<ExportMetalObjectsInfoEXT<'root>> + for ExportMetalBufferInfoEXT<'child> +{ +} impl<'a> ExportMetalBufferInfoEXT<'a> { #[inline] pub fn memory(mut self, memory: DeviceMemory) -> Self { @@ -55994,7 +57001,7 @@ impl ::core::default::Default for ImportMetalBufferInfoEXT<'_> { unsafe impl<'a> TaggedStructure for ImportMetalBufferInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMPORT_METAL_BUFFER_INFO_EXT; } -unsafe impl ExtendsMemoryAllocateInfo for ImportMetalBufferInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<MemoryAllocateInfo<'root>> for ImportMetalBufferInfoEXT<'child> {} impl<'a> ImportMetalBufferInfoEXT<'a> { #[inline] pub fn mtl_buffer(mut self, mtl_buffer: MTLBuffer_id) -> Self { @@ -56037,7 +57044,10 @@ impl ::core::default::Default for ExportMetalTextureInfoEXT<'_> { unsafe impl<'a> TaggedStructure for ExportMetalTextureInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXPORT_METAL_TEXTURE_INFO_EXT; } -unsafe impl ExtendsExportMetalObjectsInfoEXT for ExportMetalTextureInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<ExportMetalObjectsInfoEXT<'root>> + for ExportMetalTextureInfoEXT<'child> +{ +} impl<'a> ExportMetalTextureInfoEXT<'a> { #[inline] pub fn image(mut self, image: Image) -> Self { @@ -56094,7 +57104,7 @@ impl ::core::default::Default for ImportMetalTextureInfoEXT<'_> { unsafe impl<'a> TaggedStructure for ImportMetalTextureInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMPORT_METAL_TEXTURE_INFO_EXT; } -unsafe impl ExtendsImageCreateInfo for ImportMetalTextureInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<ImageCreateInfo<'root>> for ImportMetalTextureInfoEXT<'child> {} impl<'a> ImportMetalTextureInfoEXT<'a> { #[inline] pub fn plane(mut self, plane: ImageAspectFlags) -> Self { @@ -56136,7 +57146,10 @@ impl ::core::default::Default for ExportMetalIOSurfaceInfoEXT<'_> { unsafe impl<'a> TaggedStructure for ExportMetalIOSurfaceInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXPORT_METAL_IO_SURFACE_INFO_EXT; } -unsafe impl ExtendsExportMetalObjectsInfoEXT for ExportMetalIOSurfaceInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<ExportMetalObjectsInfoEXT<'root>> + for ExportMetalIOSurfaceInfoEXT<'child> +{ +} impl<'a> ExportMetalIOSurfaceInfoEXT<'a> { #[inline] pub fn image(mut self, image: Image) -> Self { @@ -56176,7 +57189,7 @@ impl ::core::default::Default for ImportMetalIOSurfaceInfoEXT<'_> { unsafe impl<'a> TaggedStructure for ImportMetalIOSurfaceInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMPORT_METAL_IO_SURFACE_INFO_EXT; } -unsafe impl ExtendsImageCreateInfo for ImportMetalIOSurfaceInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<ImageCreateInfo<'root>> for ImportMetalIOSurfaceInfoEXT<'child> {} impl<'a> ImportMetalIOSurfaceInfoEXT<'a> { #[inline] pub fn io_surface(mut self, io_surface: IOSurfaceRef) -> Self { @@ -56215,7 +57228,10 @@ impl ::core::default::Default for ExportMetalSharedEventInfoEXT<'_> { unsafe impl<'a> TaggedStructure for ExportMetalSharedEventInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXPORT_METAL_SHARED_EVENT_INFO_EXT; } -unsafe impl ExtendsExportMetalObjectsInfoEXT for ExportMetalSharedEventInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<ExportMetalObjectsInfoEXT<'root>> + for ExportMetalSharedEventInfoEXT<'child> +{ +} impl<'a> ExportMetalSharedEventInfoEXT<'a> { #[inline] pub fn semaphore(mut self, semaphore: Semaphore) -> Self { @@ -56260,8 +57276,14 @@ impl ::core::default::Default for ImportMetalSharedEventInfoEXT<'_> { unsafe impl<'a> TaggedStructure for ImportMetalSharedEventInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMPORT_METAL_SHARED_EVENT_INFO_EXT; } -unsafe impl ExtendsSemaphoreCreateInfo for ImportMetalSharedEventInfoEXT<'_> {} -unsafe impl ExtendsEventCreateInfo for ImportMetalSharedEventInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<SemaphoreCreateInfo<'root>> + for ImportMetalSharedEventInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<EventCreateInfo<'root>> + for ImportMetalSharedEventInfoEXT<'child> +{ +} impl<'a> ImportMetalSharedEventInfoEXT<'a> { #[inline] pub fn mtl_shared_event(mut self, mtl_shared_event: MTLSharedEvent_id) -> Self { @@ -56297,8 +57319,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceNonSeamlessCubeMapFeaturesEXT<'a> { #[inline] pub fn non_seamless_cube_map(mut self, non_seamless_cube_map: bool) -> Self { @@ -56334,8 +57362,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDevicePipelineRobustnessFeaturesEXT< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePipelineRobustnessFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePipelineRobustnessFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDevicePipelineRobustnessFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDevicePipelineRobustnessFeaturesEXT<'child> +{ +} impl<'a> PhysicalDevicePipelineRobustnessFeaturesEXT<'a> { #[inline] pub fn pipeline_robustness(mut self, pipeline_robustness: bool) -> Self { @@ -56376,10 +57410,22 @@ impl ::core::default::Default for PipelineRobustnessCreateInfoEXT<'_> { unsafe impl<'a> TaggedStructure for PipelineRobustnessCreateInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_ROBUSTNESS_CREATE_INFO_EXT; } -unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineRobustnessCreateInfoEXT<'_> {} -unsafe impl ExtendsComputePipelineCreateInfo for PipelineRobustnessCreateInfoEXT<'_> {} -unsafe impl ExtendsPipelineShaderStageCreateInfo for PipelineRobustnessCreateInfoEXT<'_> {} -unsafe impl ExtendsRayTracingPipelineCreateInfoKHR for PipelineRobustnessCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<GraphicsPipelineCreateInfo<'root>> + for PipelineRobustnessCreateInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<ComputePipelineCreateInfo<'root>> + for PipelineRobustnessCreateInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<PipelineShaderStageCreateInfo<'root>> + for PipelineRobustnessCreateInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<RayTracingPipelineCreateInfoKHR<'root>> + for PipelineRobustnessCreateInfoEXT<'child> +{ +} impl<'a> PipelineRobustnessCreateInfoEXT<'a> { #[inline] pub fn storage_buffers(mut self, storage_buffers: PipelineRobustnessBufferBehaviorEXT) -> Self { @@ -56436,7 +57482,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDevicePipelineRobustnessPropertiesEX const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDevicePipelineRobustnessPropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDevicePipelineRobustnessPropertiesEXT<'child> +{ +} impl<'a> PhysicalDevicePipelineRobustnessPropertiesEXT<'a> { #[inline] pub fn default_robustness_storage_buffers( @@ -56502,7 +57551,10 @@ impl ::core::default::Default for ImageViewSampleWeightCreateInfoQCOM<'_> { unsafe impl<'a> TaggedStructure for ImageViewSampleWeightCreateInfoQCOM<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM; } -unsafe impl ExtendsImageViewCreateInfo for ImageViewSampleWeightCreateInfoQCOM<'_> {} +unsafe impl<'root, 'child> Extends<ImageViewCreateInfo<'root>> + for ImageViewSampleWeightCreateInfoQCOM<'child> +{ +} impl<'a> ImageViewSampleWeightCreateInfoQCOM<'a> { #[inline] pub fn filter_center(mut self, filter_center: Offset2D) -> Self { @@ -56552,8 +57604,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceImageProcessingFeaturesQCOM<'a const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceImageProcessingFeaturesQCOM<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceImageProcessingFeaturesQCOM<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceImageProcessingFeaturesQCOM<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceImageProcessingFeaturesQCOM<'child> +{ +} impl<'a> PhysicalDeviceImageProcessingFeaturesQCOM<'a> { #[inline] pub fn texture_sample_weighted(mut self, texture_sample_weighted: bool) -> Self { @@ -56605,7 +57663,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceImageProcessingPropertiesQCOM< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceImageProcessingPropertiesQCOM<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceImageProcessingPropertiesQCOM<'child> +{ +} impl<'a> PhysicalDeviceImageProcessingPropertiesQCOM<'a> { #[inline] pub fn max_weight_filter_phases(mut self, max_weight_filter_phases: u32) -> Self { @@ -56656,8 +57717,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceTilePropertiesFeaturesQCOM<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceTilePropertiesFeaturesQCOM<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceTilePropertiesFeaturesQCOM<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceTilePropertiesFeaturesQCOM<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceTilePropertiesFeaturesQCOM<'child> +{ +} impl<'a> PhysicalDeviceTilePropertiesFeaturesQCOM<'a> { #[inline] pub fn tile_properties(mut self, tile_properties: bool) -> Self { @@ -56741,8 +57808,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceAmigoProfilingFeaturesSEC<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceAmigoProfilingFeaturesSEC<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceAmigoProfilingFeaturesSEC<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceAmigoProfilingFeaturesSEC<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceAmigoProfilingFeaturesSEC<'child> +{ +} impl<'a> PhysicalDeviceAmigoProfilingFeaturesSEC<'a> { #[inline] pub fn amigo_profiling(mut self, amigo_profiling: bool) -> Self { @@ -56779,7 +57852,7 @@ impl ::core::default::Default for AmigoProfilingSubmitInfoSEC<'_> { unsafe impl<'a> TaggedStructure for AmigoProfilingSubmitInfoSEC<'a> { const STRUCTURE_TYPE: StructureType = StructureType::AMIGO_PROFILING_SUBMIT_INFO_SEC; } -unsafe impl ExtendsSubmitInfo for AmigoProfilingSubmitInfoSEC<'_> {} +unsafe impl<'root, 'child> Extends<SubmitInfo<'root>> for AmigoProfilingSubmitInfoSEC<'child> {} impl<'a> AmigoProfilingSubmitInfoSEC<'a> { #[inline] pub fn first_draw_timestamp(mut self, first_draw_timestamp: u64) -> Self { @@ -56820,11 +57893,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceAttachmentFeedbackLoopLayoutFe const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT<'_> {} impl<'a> PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT<'a> { #[inline] pub fn attachment_feedback_loop_layout( @@ -56863,8 +57939,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDepthClampZeroOneFeaturesEXT<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDepthClampZeroOneFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDepthClampZeroOneFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceDepthClampZeroOneFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceDepthClampZeroOneFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceDepthClampZeroOneFeaturesEXT<'a> { #[inline] pub fn depth_clamp_zero_one(mut self, depth_clamp_zero_one: bool) -> Self { @@ -56900,8 +57982,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceAddressBindingReportFeaturesEX const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceAddressBindingReportFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceAddressBindingReportFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceAddressBindingReportFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceAddressBindingReportFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceAddressBindingReportFeaturesEXT<'a> { #[inline] pub fn report_address_binding(mut self, report_address_binding: bool) -> Self { @@ -56942,7 +58030,10 @@ impl ::core::default::Default for DeviceAddressBindingCallbackDataEXT<'_> { unsafe impl<'a> TaggedStructure for DeviceAddressBindingCallbackDataEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT; } -unsafe impl ExtendsDebugUtilsMessengerCallbackDataEXT for DeviceAddressBindingCallbackDataEXT<'_> {} +unsafe impl<'root, 'child> Extends<DebugUtilsMessengerCallbackDataEXT<'root>> + for DeviceAddressBindingCallbackDataEXT<'child> +{ +} impl<'a> DeviceAddressBindingCallbackDataEXT<'a> { #[inline] pub fn flags(mut self, flags: DeviceAddressBindingFlagsEXT) -> Self { @@ -56992,8 +58083,14 @@ impl ::core::default::Default for PhysicalDeviceOpticalFlowFeaturesNV<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceOpticalFlowFeaturesNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceOpticalFlowFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceOpticalFlowFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceOpticalFlowFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceOpticalFlowFeaturesNV<'child> +{ +} impl<'a> PhysicalDeviceOpticalFlowFeaturesNV<'a> { #[inline] pub fn optical_flow(mut self, optical_flow: bool) -> Self { @@ -57048,7 +58145,10 @@ impl ::core::default::Default for PhysicalDeviceOpticalFlowPropertiesNV<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceOpticalFlowPropertiesNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceOpticalFlowPropertiesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceOpticalFlowPropertiesNV<'child> +{ +} impl<'a> PhysicalDeviceOpticalFlowPropertiesNV<'a> { #[inline] pub fn supported_output_grid_sizes( @@ -57139,8 +58239,14 @@ impl ::core::default::Default for OpticalFlowImageFormatInfoNV<'_> { unsafe impl<'a> TaggedStructure for OpticalFlowImageFormatInfoNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV; } -unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 for OpticalFlowImageFormatInfoNV<'_> {} -unsafe impl ExtendsImageCreateInfo for OpticalFlowImageFormatInfoNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceImageFormatInfo2<'root>> + for OpticalFlowImageFormatInfoNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<ImageCreateInfo<'root>> + for OpticalFlowImageFormatInfoNV<'child> +{ +} impl<'a> OpticalFlowImageFormatInfoNV<'a> { #[inline] pub fn usage(mut self, usage: OpticalFlowUsageFlagsNV) -> Self { @@ -57225,7 +58331,6 @@ impl ::core::default::Default for OpticalFlowSessionCreateInfoNV<'_> { unsafe impl<'a> TaggedStructure for OpticalFlowSessionCreateInfoNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::OPTICAL_FLOW_SESSION_CREATE_INFO_NV; } -pub unsafe trait ExtendsOpticalFlowSessionCreateInfoNV {} impl<'a> OpticalFlowSessionCreateInfoNV<'a> { #[inline] pub fn width(mut self, width: u32) -> Self { @@ -57281,10 +58386,7 @@ impl<'a> OpticalFlowSessionCreateInfoNV<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsOpticalFlowSessionCreateInfoNV + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -57308,10 +58410,7 @@ impl<'a> OpticalFlowSessionCreateInfoNV<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsOpticalFlowSessionCreateInfoNV + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -57319,10 +58418,7 @@ impl<'a> OpticalFlowSessionCreateInfoNV<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsOpticalFlowSessionCreateInfoNV + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -57358,8 +58454,8 @@ unsafe impl<'a> TaggedStructure for OpticalFlowSessionCreatePrivateDataInfoNV<'a const STRUCTURE_TYPE: StructureType = StructureType::OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV; } -unsafe impl ExtendsOpticalFlowSessionCreateInfoNV - for OpticalFlowSessionCreatePrivateDataInfoNV<'_> +unsafe impl<'root, 'child> Extends<OpticalFlowSessionCreateInfoNV<'root>> + for OpticalFlowSessionCreatePrivateDataInfoNV<'child> { } impl<'a> OpticalFlowSessionCreatePrivateDataInfoNV<'a> { @@ -57452,8 +58548,14 @@ impl ::core::default::Default for PhysicalDeviceFaultFeaturesEXT<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceFaultFeaturesEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FAULT_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceFaultFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFaultFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceFaultFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceFaultFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceFaultFeaturesEXT<'a> { #[inline] pub fn device_fault(mut self, device_fault: bool) -> Self { @@ -57790,11 +58892,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDevicePipelineLibraryGroupHandlesFea const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT<'_> {} impl<'a> PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT<'a> { #[inline] pub fn pipeline_library_group_handles(mut self, pipeline_library_group_handles: bool) -> Self { @@ -57833,7 +58938,6 @@ impl ::core::default::Default for DepthBiasInfoEXT<'_> { unsafe impl<'a> TaggedStructure for DepthBiasInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEPTH_BIAS_INFO_EXT; } -pub unsafe trait ExtendsDepthBiasInfoEXT {} impl<'a> DepthBiasInfoEXT<'a> { #[inline] pub fn depth_bias_constant_factor(mut self, depth_bias_constant_factor: f32) -> Self { @@ -57859,7 +58963,7 @@ impl<'a> DepthBiasInfoEXT<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsDepthBiasInfoEXT + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -57883,7 +58987,7 @@ impl<'a> DepthBiasInfoEXT<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsDepthBiasInfoEXT + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -57891,7 +58995,7 @@ impl<'a> DepthBiasInfoEXT<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsDepthBiasInfoEXT + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -57924,8 +59028,14 @@ impl ::core::default::Default for DepthBiasRepresentationInfoEXT<'_> { unsafe impl<'a> TaggedStructure for DepthBiasRepresentationInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEPTH_BIAS_REPRESENTATION_INFO_EXT; } -unsafe impl ExtendsDepthBiasInfoEXT for DepthBiasRepresentationInfoEXT<'_> {} -unsafe impl ExtendsPipelineRasterizationStateCreateInfo for DepthBiasRepresentationInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<DepthBiasInfoEXT<'root>> + for DepthBiasRepresentationInfoEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<PipelineRasterizationStateCreateInfo<'root>> + for DepthBiasRepresentationInfoEXT<'child> +{ +} impl<'a> DepthBiasRepresentationInfoEXT<'a> { #[inline] pub fn depth_bias_representation( @@ -58015,7 +59125,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderCoreBuiltinsPropertiesAR const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceShaderCoreBuiltinsPropertiesARM<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceShaderCoreBuiltinsPropertiesARM<'child> +{ +} impl<'a> PhysicalDeviceShaderCoreBuiltinsPropertiesARM<'a> { #[inline] pub fn shader_core_mask(mut self, shader_core_mask: u64) -> Self { @@ -58061,8 +59174,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderCoreBuiltinsFeaturesARM< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderCoreBuiltinsFeaturesARM<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderCoreBuiltinsFeaturesARM<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderCoreBuiltinsFeaturesARM<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderCoreBuiltinsFeaturesARM<'child> +{ +} impl<'a> PhysicalDeviceShaderCoreBuiltinsFeaturesARM<'a> { #[inline] pub fn shader_core_builtins(mut self, shader_core_builtins: bool) -> Self { @@ -58113,10 +59232,10 @@ impl ::core::default::Default for FrameBoundaryEXT<'_> { unsafe impl<'a> TaggedStructure for FrameBoundaryEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::FRAME_BOUNDARY_EXT; } -unsafe impl ExtendsSubmitInfo for FrameBoundaryEXT<'_> {} -unsafe impl ExtendsSubmitInfo2 for FrameBoundaryEXT<'_> {} -unsafe impl ExtendsPresentInfoKHR for FrameBoundaryEXT<'_> {} -unsafe impl ExtendsBindSparseInfo for FrameBoundaryEXT<'_> {} +unsafe impl<'root, 'child> Extends<SubmitInfo<'root>> for FrameBoundaryEXT<'child> {} +unsafe impl<'root, 'child> Extends<SubmitInfo2<'root>> for FrameBoundaryEXT<'child> {} +unsafe impl<'root, 'child> Extends<PresentInfoKHR<'root>> for FrameBoundaryEXT<'child> {} +unsafe impl<'root, 'child> Extends<BindSparseInfo<'root>> for FrameBoundaryEXT<'child> {} impl<'a> FrameBoundaryEXT<'a> { #[inline] pub fn flags(mut self, flags: FrameBoundaryFlagsEXT) -> Self { @@ -58180,8 +59299,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceFrameBoundaryFeaturesEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceFrameBoundaryFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFrameBoundaryFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceFrameBoundaryFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceFrameBoundaryFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceFrameBoundaryFeaturesEXT<'a> { #[inline] pub fn frame_boundary(mut self, frame_boundary: bool) -> Self { @@ -58217,12 +59342,12 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDynamicRenderingUnusedAttachme const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT<'child> { } -unsafe impl ExtendsDeviceCreateInfo - for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT<'child> { } impl<'a> PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT<'a> { @@ -58262,7 +59387,10 @@ impl ::core::default::Default for SurfacePresentModeEXT<'_> { unsafe impl<'a> TaggedStructure for SurfacePresentModeEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SURFACE_PRESENT_MODE_EXT; } -unsafe impl ExtendsPhysicalDeviceSurfaceInfo2KHR for SurfacePresentModeEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceSurfaceInfo2KHR<'root>> + for SurfacePresentModeEXT<'child> +{ +} impl<'a> SurfacePresentModeEXT<'a> { #[inline] pub fn present_mode(mut self, present_mode: PresentModeKHR) -> Self { @@ -58305,7 +59433,10 @@ impl ::core::default::Default for SurfacePresentScalingCapabilitiesEXT<'_> { unsafe impl<'a> TaggedStructure for SurfacePresentScalingCapabilitiesEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SURFACE_PRESENT_SCALING_CAPABILITIES_EXT; } -unsafe impl ExtendsSurfaceCapabilities2KHR for SurfacePresentScalingCapabilitiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<SurfaceCapabilities2KHR<'root>> + for SurfacePresentScalingCapabilitiesEXT<'child> +{ +} impl<'a> SurfacePresentScalingCapabilitiesEXT<'a> { #[inline] pub fn supported_present_scaling( @@ -58371,7 +59502,10 @@ impl ::core::default::Default for SurfacePresentModeCompatibilityEXT<'_> { unsafe impl<'a> TaggedStructure for SurfacePresentModeCompatibilityEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SURFACE_PRESENT_MODE_COMPATIBILITY_EXT; } -unsafe impl ExtendsSurfaceCapabilities2KHR for SurfacePresentModeCompatibilityEXT<'_> {} +unsafe impl<'root, 'child> Extends<SurfaceCapabilities2KHR<'root>> + for SurfacePresentModeCompatibilityEXT<'child> +{ +} impl<'a> SurfacePresentModeCompatibilityEXT<'a> { #[inline] pub fn present_modes(mut self, present_modes: &'a mut [PresentModeKHR]) -> Self { @@ -58408,8 +59542,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceSwapchainMaintenance1FeaturesE const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceSwapchainMaintenance1FeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSwapchainMaintenance1FeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceSwapchainMaintenance1FeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceSwapchainMaintenance1FeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceSwapchainMaintenance1FeaturesEXT<'a> { #[inline] pub fn swapchain_maintenance1(mut self, swapchain_maintenance1: bool) -> Self { @@ -58446,7 +59586,7 @@ impl ::core::default::Default for SwapchainPresentFenceInfoEXT<'_> { unsafe impl<'a> TaggedStructure for SwapchainPresentFenceInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SWAPCHAIN_PRESENT_FENCE_INFO_EXT; } -unsafe impl ExtendsPresentInfoKHR for SwapchainPresentFenceInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<PresentInfoKHR<'root>> for SwapchainPresentFenceInfoEXT<'child> {} impl<'a> SwapchainPresentFenceInfoEXT<'a> { #[inline] pub fn fences(mut self, fences: &'a [Fence]) -> Self { @@ -58484,7 +59624,10 @@ impl ::core::default::Default for SwapchainPresentModesCreateInfoEXT<'_> { unsafe impl<'a> TaggedStructure for SwapchainPresentModesCreateInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT; } -unsafe impl ExtendsSwapchainCreateInfoKHR for SwapchainPresentModesCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<SwapchainCreateInfoKHR<'root>> + for SwapchainPresentModesCreateInfoEXT<'child> +{ +} impl<'a> SwapchainPresentModesCreateInfoEXT<'a> { #[inline] pub fn present_modes(mut self, present_modes: &'a [PresentModeKHR]) -> Self { @@ -58522,7 +59665,7 @@ impl ::core::default::Default for SwapchainPresentModeInfoEXT<'_> { unsafe impl<'a> TaggedStructure for SwapchainPresentModeInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SWAPCHAIN_PRESENT_MODE_INFO_EXT; } -unsafe impl ExtendsPresentInfoKHR for SwapchainPresentModeInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<PresentInfoKHR<'root>> for SwapchainPresentModeInfoEXT<'child> {} impl<'a> SwapchainPresentModeInfoEXT<'a> { #[inline] pub fn present_modes(mut self, present_modes: &'a [PresentModeKHR]) -> Self { @@ -58562,7 +59705,10 @@ impl ::core::default::Default for SwapchainPresentScalingCreateInfoEXT<'_> { unsafe impl<'a> TaggedStructure for SwapchainPresentScalingCreateInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT; } -unsafe impl ExtendsSwapchainCreateInfoKHR for SwapchainPresentScalingCreateInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<SwapchainCreateInfoKHR<'root>> + for SwapchainPresentScalingCreateInfoEXT<'child> +{ +} impl<'a> SwapchainPresentScalingCreateInfoEXT<'a> { #[inline] pub fn scaling_behavior(mut self, scaling_behavior: PresentScalingFlagsEXT) -> Self { @@ -58658,8 +59804,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDepthBiasControlFeaturesEXT<'a const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDepthBiasControlFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDepthBiasControlFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceDepthBiasControlFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceDepthBiasControlFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceDepthBiasControlFeaturesEXT<'a> { #[inline] pub fn depth_bias_control(mut self, depth_bias_control: bool) -> Self { @@ -58714,11 +59866,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceRayTracingInvocationReorderFea const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceRayTracingInvocationReorderFeaturesNV<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceRayTracingInvocationReorderFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceRayTracingInvocationReorderFeaturesNV<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRayTracingInvocationReorderFeaturesNV<'_> {} impl<'a> PhysicalDeviceRayTracingInvocationReorderFeaturesNV<'a> { #[inline] pub fn ray_tracing_invocation_reorder(mut self, ray_tracing_invocation_reorder: bool) -> Self { @@ -58755,8 +59910,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceRayTracingInvocationReorderPro const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceRayTracingInvocationReorderPropertiesNV<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceRayTracingInvocationReorderPropertiesNV<'child> { } impl<'a> PhysicalDeviceRayTracingInvocationReorderPropertiesNV<'a> { @@ -58798,11 +59953,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceExtendedSparseAddressSpaceFeat const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV<'_> {} impl<'a> PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV<'a> { #[inline] pub fn extended_sparse_address_space(mut self, extended_sparse_address_space: bool) -> Self { @@ -58842,8 +60000,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceExtendedSparseAddressSpaceProp const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceExtendedSparseAddressSpacePropertiesNV<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceExtendedSparseAddressSpacePropertiesNV<'child> { } impl<'a> PhysicalDeviceExtendedSparseAddressSpacePropertiesNV<'a> { @@ -58960,7 +60118,10 @@ impl ::core::default::Default for DirectDriverLoadingListLUNARG<'_> { unsafe impl<'a> TaggedStructure for DirectDriverLoadingListLUNARG<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DIRECT_DRIVER_LOADING_LIST_LUNARG; } -unsafe impl ExtendsInstanceCreateInfo for DirectDriverLoadingListLUNARG<'_> {} +unsafe impl<'root, 'child> Extends<InstanceCreateInfo<'root>> + for DirectDriverLoadingListLUNARG<'child> +{ +} impl<'a> DirectDriverLoadingListLUNARG<'a> { #[inline] pub fn mode(mut self, mode: DirectDriverLoadingModeLUNARG) -> Self { @@ -59002,11 +60163,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceMultiviewPerViewViewportsFeatu const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM<'_> {} impl<'a> PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM<'a> { #[inline] pub fn multiview_per_view_viewports(mut self, multiview_per_view_viewports: bool) -> Self { @@ -59042,11 +60206,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceRayTracingPositionFetchFeature const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceRayTracingPositionFetchFeaturesKHR<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceRayTracingPositionFetchFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceRayTracingPositionFetchFeaturesKHR<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRayTracingPositionFetchFeaturesKHR<'_> {} impl<'a> PhysicalDeviceRayTracingPositionFetchFeaturesKHR<'a> { #[inline] pub fn ray_tracing_position_fetch(mut self, ray_tracing_position_fetch: bool) -> Self { @@ -59126,7 +60293,10 @@ impl ::core::default::Default for PhysicalDeviceShaderCorePropertiesARM<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderCorePropertiesARM<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceShaderCorePropertiesARM<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceShaderCorePropertiesARM<'child> +{ +} impl<'a> PhysicalDeviceShaderCorePropertiesARM<'a> { #[inline] pub fn pixel_rate(mut self, pixel_rate: u32) -> Self { @@ -59172,11 +60342,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceMultiviewPerViewRenderAreasFea const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM<'_> {} impl<'a> PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM<'a> { #[inline] pub fn multiview_per_view_render_areas( @@ -59217,8 +60390,14 @@ unsafe impl<'a> TaggedStructure for MultiviewPerViewRenderAreasRenderPassBeginIn const STRUCTURE_TYPE: StructureType = StructureType::MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM; } -unsafe impl ExtendsRenderPassBeginInfo for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM<'_> {} -unsafe impl ExtendsRenderingInfo for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM<'_> {} +unsafe impl<'root, 'child> Extends<RenderPassBeginInfo<'root>> + for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM<'child> +{ +} +unsafe impl<'root, 'child> Extends<RenderingInfo<'root>> + for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM<'child> +{ +} impl<'a> MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM<'a> { #[inline] pub fn per_view_render_areas(mut self, per_view_render_areas: &'a [Rect2D]) -> Self { @@ -59254,7 +60433,10 @@ impl ::core::default::Default for QueryLowLatencySupportNV<'_> { unsafe impl<'a> TaggedStructure for QueryLowLatencySupportNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::QUERY_LOW_LATENCY_SUPPORT_NV; } -unsafe impl ExtendsSemaphoreCreateInfo for QueryLowLatencySupportNV<'_> {} +unsafe impl<'root, 'child> Extends<SemaphoreCreateInfo<'root>> + for QueryLowLatencySupportNV<'child> +{ +} impl<'a> QueryLowLatencySupportNV<'a> { #[inline] pub fn queried_low_latency_data(mut self, queried_low_latency_data: *mut c_void) -> Self { @@ -59295,7 +60477,6 @@ impl ::core::default::Default for MemoryMapInfoKHR<'_> { unsafe impl<'a> TaggedStructure for MemoryMapInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::MEMORY_MAP_INFO_KHR; } -pub unsafe trait ExtendsMemoryMapInfoKHR {} impl<'a> MemoryMapInfoKHR<'a> { #[inline] pub fn flags(mut self, flags: MemoryMapFlags) -> Self { @@ -59326,7 +60507,7 @@ impl<'a> MemoryMapInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsMemoryMapInfoKHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -59350,7 +60531,7 @@ impl<'a> MemoryMapInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsMemoryMapInfoKHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -59358,7 +60539,7 @@ impl<'a> MemoryMapInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsMemoryMapInfoKHR + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -59430,8 +60611,14 @@ impl ::core::default::Default for PhysicalDeviceShaderObjectFeaturesEXT<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderObjectFeaturesEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderObjectFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderObjectFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderObjectFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderObjectFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceShaderObjectFeaturesEXT<'a> { #[inline] pub fn shader_object(mut self, shader_object: bool) -> Self { @@ -59469,7 +60656,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderObjectPropertiesEXT<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceShaderObjectPropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceShaderObjectPropertiesEXT<'child> +{ +} impl<'a> PhysicalDeviceShaderObjectPropertiesEXT<'a> { #[inline] pub fn shader_binary_uuid(mut self, shader_binary_uuid: [u8; UUID_SIZE]) -> Self { @@ -59531,7 +60721,6 @@ impl ::core::default::Default for ShaderCreateInfoEXT<'_> { unsafe impl<'a> TaggedStructure for ShaderCreateInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SHADER_CREATE_INFO_EXT; } -pub unsafe trait ExtendsShaderCreateInfoEXT {} impl<'a> ShaderCreateInfoEXT<'a> { #[inline] pub fn flags(mut self, flags: ShaderCreateFlagsEXT) -> Self { @@ -59598,7 +60787,7 @@ impl<'a> ShaderCreateInfoEXT<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsShaderCreateInfoEXT + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -59622,10 +60811,7 @@ impl<'a> ShaderCreateInfoEXT<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsShaderCreateInfoEXT + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -59633,7 +60819,7 @@ impl<'a> ShaderCreateInfoEXT<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsShaderCreateInfoEXT + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -59669,8 +60855,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderTileImageFeaturesEXT<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderTileImageFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderTileImageFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderTileImageFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderTileImageFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceShaderTileImageFeaturesEXT<'a> { #[inline] pub fn shader_tile_image_color_read_access( @@ -59729,7 +60921,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderTileImagePropertiesEXT<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceShaderTileImagePropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceShaderTileImagePropertiesEXT<'child> +{ +} impl<'a> PhysicalDeviceShaderTileImagePropertiesEXT<'a> { #[inline] pub fn shader_tile_image_coherent_read_accelerated( @@ -59786,7 +60981,10 @@ impl ::core::default::Default for ImportScreenBufferInfoQNX<'_> { unsafe impl<'a> TaggedStructure for ImportScreenBufferInfoQNX<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMPORT_SCREEN_BUFFER_INFO_QNX; } -unsafe impl ExtendsMemoryAllocateInfo for ImportScreenBufferInfoQNX<'_> {} +unsafe impl<'root, 'child> Extends<MemoryAllocateInfo<'root>> + for ImportScreenBufferInfoQNX<'child> +{ +} impl<'a> ImportScreenBufferInfoQNX<'a> { #[inline] pub fn buffer(mut self, buffer: &'a mut _screen_buffer) -> Self { @@ -59823,7 +61021,6 @@ impl ::core::default::Default for ScreenBufferPropertiesQNX<'_> { unsafe impl<'a> TaggedStructure for ScreenBufferPropertiesQNX<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SCREEN_BUFFER_PROPERTIES_QNX; } -pub unsafe trait ExtendsScreenBufferPropertiesQNX {} impl<'a> ScreenBufferPropertiesQNX<'a> { #[inline] pub fn allocation_size(mut self, allocation_size: DeviceSize) -> Self { @@ -59844,7 +61041,7 @@ impl<'a> ScreenBufferPropertiesQNX<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsScreenBufferPropertiesQNX + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -59868,10 +61065,7 @@ impl<'a> ScreenBufferPropertiesQNX<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsScreenBufferPropertiesQNX + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -59879,10 +61073,7 @@ impl<'a> ScreenBufferPropertiesQNX<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsScreenBufferPropertiesQNX + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -59929,7 +61120,10 @@ impl ::core::default::Default for ScreenBufferFormatPropertiesQNX<'_> { unsafe impl<'a> TaggedStructure for ScreenBufferFormatPropertiesQNX<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SCREEN_BUFFER_FORMAT_PROPERTIES_QNX; } -unsafe impl ExtendsScreenBufferPropertiesQNX for ScreenBufferFormatPropertiesQNX<'_> {} +unsafe impl<'root, 'child> Extends<ScreenBufferPropertiesQNX<'root>> + for ScreenBufferFormatPropertiesQNX<'child> +{ +} impl<'a> ScreenBufferFormatPropertiesQNX<'a> { #[inline] pub fn format(mut self, format: Format) -> Self { @@ -60010,8 +61204,11 @@ impl ::core::default::Default for ExternalFormatQNX<'_> { unsafe impl<'a> TaggedStructure for ExternalFormatQNX<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXTERNAL_FORMAT_QNX; } -unsafe impl ExtendsImageCreateInfo for ExternalFormatQNX<'_> {} -unsafe impl ExtendsSamplerYcbcrConversionCreateInfo for ExternalFormatQNX<'_> {} +unsafe impl<'root, 'child> Extends<ImageCreateInfo<'root>> for ExternalFormatQNX<'child> {} +unsafe impl<'root, 'child> Extends<SamplerYcbcrConversionCreateInfo<'root>> + for ExternalFormatQNX<'child> +{ +} impl<'a> ExternalFormatQNX<'a> { #[inline] pub fn external_format(mut self, external_format: u64) -> Self { @@ -60047,11 +61244,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceExternalMemoryScreenBufferFeat const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX<'_> {} impl<'a> PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX<'a> { #[inline] pub fn screen_buffer_import(mut self, screen_buffer_import: bool) -> Self { @@ -60089,8 +61289,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceCooperativeMatrixFeaturesKHR<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCooperativeMatrixFeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCooperativeMatrixFeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceCooperativeMatrixFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceCooperativeMatrixFeaturesKHR<'child> +{ +} impl<'a> PhysicalDeviceCooperativeMatrixFeaturesKHR<'a> { #[inline] pub fn cooperative_matrix(mut self, cooperative_matrix: bool) -> Self { @@ -60225,7 +61431,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceCooperativeMatrixPropertiesKHR const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceCooperativeMatrixPropertiesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceCooperativeMatrixPropertiesKHR<'child> +{ +} impl<'a> PhysicalDeviceCooperativeMatrixPropertiesKHR<'a> { #[inline] pub fn cooperative_matrix_supported_stages( @@ -60272,7 +61481,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderEnqueuePropertiesAMDX<'a const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceShaderEnqueuePropertiesAMDX<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceShaderEnqueuePropertiesAMDX<'child> +{ +} impl<'a> PhysicalDeviceShaderEnqueuePropertiesAMDX<'a> { #[inline] pub fn max_execution_graph_depth(mut self, max_execution_graph_depth: u32) -> Self { @@ -60341,8 +61553,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderEnqueueFeaturesAMDX<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderEnqueueFeaturesAMDX<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderEnqueueFeaturesAMDX<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderEnqueueFeaturesAMDX<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderEnqueueFeaturesAMDX<'child> +{ +} impl<'a> PhysicalDeviceShaderEnqueueFeaturesAMDX<'a> { #[inline] pub fn shader_enqueue(mut self, shader_enqueue: bool) -> Self { @@ -60389,7 +61607,6 @@ impl ::core::default::Default for ExecutionGraphPipelineCreateInfoAMDX<'_> { unsafe impl<'a> TaggedStructure for ExecutionGraphPipelineCreateInfoAMDX<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX; } -pub unsafe trait ExtendsExecutionGraphPipelineCreateInfoAMDX {} impl<'a> ExecutionGraphPipelineCreateInfoAMDX<'a> { #[inline] pub fn flags(mut self, flags: PipelineCreateFlags) -> Self { @@ -60431,10 +61648,7 @@ impl<'a> ExecutionGraphPipelineCreateInfoAMDX<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsExecutionGraphPipelineCreateInfoAMDX + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -60458,10 +61672,7 @@ impl<'a> ExecutionGraphPipelineCreateInfoAMDX<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsExecutionGraphPipelineCreateInfoAMDX + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -60469,10 +61680,7 @@ impl<'a> ExecutionGraphPipelineCreateInfoAMDX<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsExecutionGraphPipelineCreateInfoAMDX + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -60506,7 +61714,10 @@ unsafe impl<'a> TaggedStructure for PipelineShaderStageNodeCreateInfoAMDX<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX; } -unsafe impl ExtendsPipelineShaderStageCreateInfo for PipelineShaderStageNodeCreateInfoAMDX<'_> {} +unsafe impl<'root, 'child> Extends<PipelineShaderStageCreateInfo<'root>> + for PipelineShaderStageNodeCreateInfoAMDX<'child> +{ +} impl<'a> PipelineShaderStageNodeCreateInfoAMDX<'a> { #[inline] pub fn name(mut self, name: &'a CStr) -> Self { @@ -60667,8 +61878,14 @@ impl ::core::default::Default for PhysicalDeviceAntiLagFeaturesAMD<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceAntiLagFeaturesAMD<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceAntiLagFeaturesAMD<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceAntiLagFeaturesAMD<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceAntiLagFeaturesAMD<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceAntiLagFeaturesAMD<'child> +{ +} impl<'a> PhysicalDeviceAntiLagFeaturesAMD<'a> { #[inline] pub fn anti_lag(mut self, anti_lag: bool) -> Self { @@ -60795,8 +62012,8 @@ impl ::core::default::Default for BindMemoryStatusKHR<'_> { unsafe impl<'a> TaggedStructure for BindMemoryStatusKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BIND_MEMORY_STATUS_KHR; } -unsafe impl ExtendsBindBufferMemoryInfo for BindMemoryStatusKHR<'_> {} -unsafe impl ExtendsBindImageMemoryInfo for BindMemoryStatusKHR<'_> {} +unsafe impl<'root, 'child> Extends<BindBufferMemoryInfo<'root>> for BindMemoryStatusKHR<'child> {} +unsafe impl<'root, 'child> Extends<BindImageMemoryInfo<'root>> for BindMemoryStatusKHR<'child> {} impl<'a> BindMemoryStatusKHR<'a> { #[inline] pub fn result(mut self, result: &'a mut Result) -> Self { @@ -60843,7 +62060,6 @@ impl ::core::default::Default for BindDescriptorSetsInfoKHR<'_> { unsafe impl<'a> TaggedStructure for BindDescriptorSetsInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BIND_DESCRIPTOR_SETS_INFO_KHR; } -pub unsafe trait ExtendsBindDescriptorSetsInfoKHR {} impl<'a> BindDescriptorSetsInfoKHR<'a> { #[inline] pub fn stage_flags(mut self, stage_flags: ShaderStageFlags) -> Self { @@ -60881,7 +62097,7 @@ impl<'a> BindDescriptorSetsInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsBindDescriptorSetsInfoKHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -60905,10 +62121,7 @@ impl<'a> BindDescriptorSetsInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsBindDescriptorSetsInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -60916,10 +62129,7 @@ impl<'a> BindDescriptorSetsInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsBindDescriptorSetsInfoKHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -60958,7 +62168,6 @@ impl ::core::default::Default for PushConstantsInfoKHR<'_> { unsafe impl<'a> TaggedStructure for PushConstantsInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PUSH_CONSTANTS_INFO_KHR; } -pub unsafe trait ExtendsPushConstantsInfoKHR {} impl<'a> PushConstantsInfoKHR<'a> { #[inline] pub fn layout(mut self, layout: PipelineLayout) -> Self { @@ -60990,7 +62199,7 @@ impl<'a> PushConstantsInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsPushConstantsInfoKHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -61014,10 +62223,7 @@ impl<'a> PushConstantsInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsPushConstantsInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -61025,10 +62231,7 @@ impl<'a> PushConstantsInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsPushConstantsInfoKHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -61067,7 +62270,6 @@ impl ::core::default::Default for PushDescriptorSetInfoKHR<'_> { unsafe impl<'a> TaggedStructure for PushDescriptorSetInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PUSH_DESCRIPTOR_SET_INFO_KHR; } -pub unsafe trait ExtendsPushDescriptorSetInfoKHR {} impl<'a> PushDescriptorSetInfoKHR<'a> { #[inline] pub fn stage_flags(mut self, stage_flags: ShaderStageFlags) -> Self { @@ -61099,7 +62301,7 @@ impl<'a> PushDescriptorSetInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsPushDescriptorSetInfoKHR + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -61123,10 +62325,7 @@ impl<'a> PushDescriptorSetInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsPushDescriptorSetInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -61134,10 +62333,7 @@ impl<'a> PushDescriptorSetInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsPushDescriptorSetInfoKHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -61174,7 +62370,6 @@ impl ::core::default::Default for PushDescriptorSetWithTemplateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for PushDescriptorSetWithTemplateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR; } -pub unsafe trait ExtendsPushDescriptorSetWithTemplateInfoKHR {} impl<'a> PushDescriptorSetWithTemplateInfoKHR<'a> { #[inline] pub fn descriptor_update_template( @@ -61208,10 +62403,7 @@ impl<'a> PushDescriptorSetWithTemplateInfoKHR<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsPushDescriptorSetWithTemplateInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -61235,10 +62427,7 @@ impl<'a> PushDescriptorSetWithTemplateInfoKHR<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsPushDescriptorSetWithTemplateInfoKHR + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -61246,10 +62435,7 @@ impl<'a> PushDescriptorSetWithTemplateInfoKHR<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsPushDescriptorSetWithTemplateInfoKHR + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -61290,7 +62476,6 @@ impl ::core::default::Default for SetDescriptorBufferOffsetsInfoEXT<'_> { unsafe impl<'a> TaggedStructure for SetDescriptorBufferOffsetsInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT; } -pub unsafe trait ExtendsSetDescriptorBufferOffsetsInfoEXT {} impl<'a> SetDescriptorBufferOffsetsInfoEXT<'a> { #[inline] pub fn stage_flags(mut self, stage_flags: ShaderStageFlags) -> Self { @@ -61328,10 +62513,7 @@ impl<'a> SetDescriptorBufferOffsetsInfoEXT<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsSetDescriptorBufferOffsetsInfoEXT + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -61355,10 +62537,7 @@ impl<'a> SetDescriptorBufferOffsetsInfoEXT<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsSetDescriptorBufferOffsetsInfoEXT + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -61366,10 +62545,7 @@ impl<'a> SetDescriptorBufferOffsetsInfoEXT<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsSetDescriptorBufferOffsetsInfoEXT + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -61405,7 +62581,6 @@ unsafe impl<'a> TaggedStructure for BindDescriptorBufferEmbeddedSamplersInfoEXT< const STRUCTURE_TYPE: StructureType = StructureType::BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT; } -pub unsafe trait ExtendsBindDescriptorBufferEmbeddedSamplersInfoEXT {} impl<'a> BindDescriptorBufferEmbeddedSamplersInfoEXT<'a> { #[inline] pub fn stage_flags(mut self, stage_flags: ShaderStageFlags) -> Self { @@ -61431,10 +62606,7 @@ impl<'a> BindDescriptorBufferEmbeddedSamplersInfoEXT<'a> { #[doc = r" # Panics"] #[doc = r" If `next` contains a pointer chain of its own, this function will panic. Call"] #[doc = r" `unsafe` [`Self::extend()`] to insert this chain instead."] - pub fn push<T: ExtendsBindDescriptorBufferEmbeddedSamplersInfoEXT + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; assert!( next_base.p_next.is_null(), @@ -61458,10 +62630,7 @@ impl<'a> BindDescriptorBufferEmbeddedSamplersInfoEXT<'a> { #[doc = r" The last struct in this chain (i.e. the one where `p_next` is `NULL`) must"] #[doc = r" be writable memory, as its `p_next` field will be updated with the value of"] #[doc = r" `self.p_next`."] - pub unsafe fn extend<T: ExtendsBindDescriptorBufferEmbeddedSamplersInfoEXT + ?Sized>( - mut self, - next: &'a mut T, - ) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { let last_next = ptr_chain_iter(next).last().unwrap(); (*last_next).p_next = self.p_next as _; self.p_next = <*mut T>::cast(next); @@ -61469,10 +62638,7 @@ impl<'a> BindDescriptorBufferEmbeddedSamplersInfoEXT<'a> { } #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: ExtendsBindDescriptorBufferEmbeddedSamplersInfoEXT + ?Sized>( - self, - next: &'a mut T, - ) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -61503,8 +62669,14 @@ impl ::core::default::Default for PhysicalDeviceCubicClampFeaturesQCOM<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceCubicClampFeaturesQCOM<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCubicClampFeaturesQCOM<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCubicClampFeaturesQCOM<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceCubicClampFeaturesQCOM<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceCubicClampFeaturesQCOM<'child> +{ +} impl<'a> PhysicalDeviceCubicClampFeaturesQCOM<'a> { #[inline] pub fn cubic_range_clamp(mut self, cubic_range_clamp: bool) -> Self { @@ -61540,8 +62712,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceYcbcrDegammaFeaturesQCOM<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceYcbcrDegammaFeaturesQCOM<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceYcbcrDegammaFeaturesQCOM<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceYcbcrDegammaFeaturesQCOM<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceYcbcrDegammaFeaturesQCOM<'child> +{ +} impl<'a> PhysicalDeviceYcbcrDegammaFeaturesQCOM<'a> { #[inline] pub fn ycbcr_degamma(mut self, ycbcr_degamma: bool) -> Self { @@ -61579,8 +62757,8 @@ unsafe impl<'a> TaggedStructure for SamplerYcbcrConversionYcbcrDegammaCreateInfo const STRUCTURE_TYPE: StructureType = StructureType::SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM; } -unsafe impl ExtendsSamplerYcbcrConversionCreateInfo - for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM<'_> +unsafe impl<'root, 'child> Extends<SamplerYcbcrConversionCreateInfo<'root>> + for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM<'child> { } impl<'a> SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM<'a> { @@ -61623,8 +62801,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceCubicWeightsFeaturesQCOM<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCubicWeightsFeaturesQCOM<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCubicWeightsFeaturesQCOM<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceCubicWeightsFeaturesQCOM<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceCubicWeightsFeaturesQCOM<'child> +{ +} impl<'a> PhysicalDeviceCubicWeightsFeaturesQCOM<'a> { #[inline] pub fn selectable_cubic_weights(mut self, selectable_cubic_weights: bool) -> Self { @@ -61659,7 +62843,10 @@ impl ::core::default::Default for SamplerCubicWeightsCreateInfoQCOM<'_> { unsafe impl<'a> TaggedStructure for SamplerCubicWeightsCreateInfoQCOM<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM; } -unsafe impl ExtendsSamplerCreateInfo for SamplerCubicWeightsCreateInfoQCOM<'_> {} +unsafe impl<'root, 'child> Extends<SamplerCreateInfo<'root>> + for SamplerCubicWeightsCreateInfoQCOM<'child> +{ +} impl<'a> SamplerCubicWeightsCreateInfoQCOM<'a> { #[inline] pub fn cubic_weights(mut self, cubic_weights: CubicFilterWeightsQCOM) -> Self { @@ -61694,7 +62881,10 @@ impl ::core::default::Default for BlitImageCubicWeightsInfoQCOM<'_> { unsafe impl<'a> TaggedStructure for BlitImageCubicWeightsInfoQCOM<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM; } -unsafe impl ExtendsBlitImageInfo2 for BlitImageCubicWeightsInfoQCOM<'_> {} +unsafe impl<'root, 'child> Extends<BlitImageInfo2<'root>> + for BlitImageCubicWeightsInfoQCOM<'child> +{ +} impl<'a> BlitImageCubicWeightsInfoQCOM<'a> { #[inline] pub fn cubic_weights(mut self, cubic_weights: CubicFilterWeightsQCOM) -> Self { @@ -61730,8 +62920,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceImageProcessing2FeaturesQCOM<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceImageProcessing2FeaturesQCOM<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceImageProcessing2FeaturesQCOM<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceImageProcessing2FeaturesQCOM<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceImageProcessing2FeaturesQCOM<'child> +{ +} impl<'a> PhysicalDeviceImageProcessing2FeaturesQCOM<'a> { #[inline] pub fn texture_block_match2(mut self, texture_block_match2: bool) -> Self { @@ -61767,7 +62963,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceImageProcessing2PropertiesQCOM const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceImageProcessing2PropertiesQCOM<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceImageProcessing2PropertiesQCOM<'child> +{ +} impl<'a> PhysicalDeviceImageProcessing2PropertiesQCOM<'a> { #[inline] pub fn max_block_match_window(mut self, max_block_match_window: Extent2D) -> Self { @@ -61805,7 +63004,10 @@ unsafe impl<'a> TaggedStructure for SamplerBlockMatchWindowCreateInfoQCOM<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM; } -unsafe impl ExtendsSamplerCreateInfo for SamplerBlockMatchWindowCreateInfoQCOM<'_> {} +unsafe impl<'root, 'child> Extends<SamplerCreateInfo<'root>> + for SamplerBlockMatchWindowCreateInfoQCOM<'child> +{ +} impl<'a> SamplerBlockMatchWindowCreateInfoQCOM<'a> { #[inline] pub fn window_extent(mut self, window_extent: Extent2D) -> Self { @@ -61849,11 +63051,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDescriptorPoolOverallocationFe const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV<'_> {} impl<'a> PhysicalDeviceDescriptorPoolOverallocationFeaturesNV<'a> { #[inline] pub fn descriptor_pool_overallocation(mut self, descriptor_pool_overallocation: bool) -> Self { @@ -61889,7 +63094,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceLayeredDriverPropertiesMSFT<'a const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceLayeredDriverPropertiesMSFT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceLayeredDriverPropertiesMSFT<'child> +{ +} impl<'a> PhysicalDeviceLayeredDriverPropertiesMSFT<'a> { #[inline] pub fn underlying_api(mut self, underlying_api: LayeredDriverUnderlyingApiMSFT) -> Self { @@ -61927,8 +63135,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDevicePerStageDescriptorSetFeaturesN const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePerStageDescriptorSetFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePerStageDescriptorSetFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDevicePerStageDescriptorSetFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDevicePerStageDescriptorSetFeaturesNV<'child> +{ +} impl<'a> PhysicalDevicePerStageDescriptorSetFeaturesNV<'a> { #[inline] pub fn per_stage_descriptor_set(mut self, per_stage_descriptor_set: bool) -> Self { @@ -61969,11 +63183,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceExternalFormatResolveFeaturesA const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceExternalFormatResolveFeaturesANDROID<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceExternalFormatResolveFeaturesANDROID<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceExternalFormatResolveFeaturesANDROID<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExternalFormatResolveFeaturesANDROID<'_> {} impl<'a> PhysicalDeviceExternalFormatResolveFeaturesANDROID<'a> { #[inline] pub fn external_format_resolve(mut self, external_format_resolve: bool) -> Self { @@ -62013,8 +63230,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceExternalFormatResolvePropertie const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceExternalFormatResolvePropertiesANDROID<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceExternalFormatResolvePropertiesANDROID<'child> { } impl<'a> PhysicalDeviceExternalFormatResolvePropertiesANDROID<'a> { @@ -62072,8 +63289,8 @@ unsafe impl<'a> TaggedStructure for AndroidHardwareBufferFormatResolveProperties const STRUCTURE_TYPE: StructureType = StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID; } -unsafe impl ExtendsAndroidHardwareBufferPropertiesANDROID - for AndroidHardwareBufferFormatResolvePropertiesANDROID<'_> +unsafe impl<'root, 'child> Extends<AndroidHardwareBufferPropertiesANDROID<'root>> + for AndroidHardwareBufferFormatResolvePropertiesANDROID<'child> { } impl<'a> AndroidHardwareBufferFormatResolvePropertiesANDROID<'a> { @@ -62436,8 +63653,8 @@ impl ::core::default::Default for LatencySubmissionPresentIdNV<'_> { unsafe impl<'a> TaggedStructure for LatencySubmissionPresentIdNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::LATENCY_SUBMISSION_PRESENT_ID_NV; } -unsafe impl ExtendsSubmitInfo for LatencySubmissionPresentIdNV<'_> {} -unsafe impl ExtendsSubmitInfo2 for LatencySubmissionPresentIdNV<'_> {} +unsafe impl<'root, 'child> Extends<SubmitInfo<'root>> for LatencySubmissionPresentIdNV<'child> {} +unsafe impl<'root, 'child> Extends<SubmitInfo2<'root>> for LatencySubmissionPresentIdNV<'child> {} impl<'a> LatencySubmissionPresentIdNV<'a> { #[inline] pub fn present_id(mut self, present_id: u64) -> Self { @@ -62472,7 +63689,10 @@ impl ::core::default::Default for SwapchainLatencyCreateInfoNV<'_> { unsafe impl<'a> TaggedStructure for SwapchainLatencyCreateInfoNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SWAPCHAIN_LATENCY_CREATE_INFO_NV; } -unsafe impl ExtendsSwapchainCreateInfoKHR for SwapchainLatencyCreateInfoNV<'_> {} +unsafe impl<'root, 'child> Extends<SwapchainCreateInfoKHR<'root>> + for SwapchainLatencyCreateInfoNV<'child> +{ +} impl<'a> SwapchainLatencyCreateInfoNV<'a> { #[inline] pub fn latency_mode_enable(mut self, latency_mode_enable: bool) -> Self { @@ -62509,7 +63729,10 @@ impl ::core::default::Default for LatencySurfaceCapabilitiesNV<'_> { unsafe impl<'a> TaggedStructure for LatencySurfaceCapabilitiesNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::LATENCY_SURFACE_CAPABILITIES_NV; } -unsafe impl ExtendsSurfaceCapabilities2KHR for LatencySurfaceCapabilitiesNV<'_> {} +unsafe impl<'root, 'child> Extends<SurfaceCapabilities2KHR<'root>> + for LatencySurfaceCapabilitiesNV<'child> +{ +} impl<'a> LatencySurfaceCapabilitiesNV<'a> { #[inline] pub fn present_modes(mut self, present_modes: &'a mut [PresentModeKHR]) -> Self { @@ -62546,8 +63769,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceCudaKernelLaunchFeaturesNV<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCudaKernelLaunchFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCudaKernelLaunchFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceCudaKernelLaunchFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceCudaKernelLaunchFeaturesNV<'child> +{ +} impl<'a> PhysicalDeviceCudaKernelLaunchFeaturesNV<'a> { #[inline] pub fn cuda_kernel_launch_features(mut self, cuda_kernel_launch_features: bool) -> Self { @@ -62585,7 +63814,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceCudaKernelLaunchPropertiesNV<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceCudaKernelLaunchPropertiesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceCudaKernelLaunchPropertiesNV<'child> +{ +} impl<'a> PhysicalDeviceCudaKernelLaunchPropertiesNV<'a> { #[inline] pub fn compute_capability_minor(mut self, compute_capability_minor: u32) -> Self { @@ -62626,8 +63858,14 @@ unsafe impl<'a> TaggedStructure for DeviceQueueShaderCoreControlCreateInfoARM<'a const STRUCTURE_TYPE: StructureType = StructureType::DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM; } -unsafe impl ExtendsDeviceQueueCreateInfo for DeviceQueueShaderCoreControlCreateInfoARM<'_> {} -unsafe impl ExtendsDeviceCreateInfo for DeviceQueueShaderCoreControlCreateInfoARM<'_> {} +unsafe impl<'root, 'child> Extends<DeviceQueueCreateInfo<'root>> + for DeviceQueueShaderCoreControlCreateInfoARM<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for DeviceQueueShaderCoreControlCreateInfoARM<'child> +{ +} impl<'a> DeviceQueueShaderCoreControlCreateInfoARM<'a> { #[inline] pub fn shader_core_count(mut self, shader_core_count: u32) -> Self { @@ -62663,8 +63901,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceSchedulingControlsFeaturesARM< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceSchedulingControlsFeaturesARM<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSchedulingControlsFeaturesARM<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceSchedulingControlsFeaturesARM<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceSchedulingControlsFeaturesARM<'child> +{ +} impl<'a> PhysicalDeviceSchedulingControlsFeaturesARM<'a> { #[inline] pub fn scheduling_controls(mut self, scheduling_controls: bool) -> Self { @@ -62700,7 +63944,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceSchedulingControlsPropertiesAR const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceSchedulingControlsPropertiesARM<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceSchedulingControlsPropertiesARM<'child> +{ +} impl<'a> PhysicalDeviceSchedulingControlsPropertiesARM<'a> { #[inline] pub fn scheduling_controls_flags( @@ -62739,11 +63986,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceRelaxedLineRasterizationFeatur const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG<'_> {} impl<'a> PhysicalDeviceRelaxedLineRasterizationFeaturesIMG<'a> { #[inline] pub fn relaxed_line_rasterization(mut self, relaxed_line_rasterization: bool) -> Self { @@ -62779,8 +64029,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceRenderPassStripedFeaturesARM<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRenderPassStripedFeaturesARM<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRenderPassStripedFeaturesARM<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceRenderPassStripedFeaturesARM<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceRenderPassStripedFeaturesARM<'child> +{ +} impl<'a> PhysicalDeviceRenderPassStripedFeaturesARM<'a> { #[inline] pub fn render_pass_striped(mut self, render_pass_striped: bool) -> Self { @@ -62818,7 +64074,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceRenderPassStripedPropertiesARM const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceRenderPassStripedPropertiesARM<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceRenderPassStripedPropertiesARM<'child> +{ +} impl<'a> PhysicalDeviceRenderPassStripedPropertiesARM<'a> { #[inline] pub fn render_pass_stripe_granularity( @@ -62897,8 +64156,11 @@ impl ::core::default::Default for RenderPassStripeBeginInfoARM<'_> { unsafe impl<'a> TaggedStructure for RenderPassStripeBeginInfoARM<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RENDER_PASS_STRIPE_BEGIN_INFO_ARM; } -unsafe impl ExtendsRenderingInfo for RenderPassStripeBeginInfoARM<'_> {} -unsafe impl ExtendsRenderPassBeginInfo for RenderPassStripeBeginInfoARM<'_> {} +unsafe impl<'root, 'child> Extends<RenderingInfo<'root>> for RenderPassStripeBeginInfoARM<'child> {} +unsafe impl<'root, 'child> Extends<RenderPassBeginInfo<'root>> + for RenderPassStripeBeginInfoARM<'child> +{ +} impl<'a> RenderPassStripeBeginInfoARM<'a> { #[inline] pub fn stripe_infos(mut self, stripe_infos: &'a [RenderPassStripeInfoARM<'a>]) -> Self { @@ -62936,7 +64198,10 @@ impl ::core::default::Default for RenderPassStripeSubmitInfoARM<'_> { unsafe impl<'a> TaggedStructure for RenderPassStripeSubmitInfoARM<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RENDER_PASS_STRIPE_SUBMIT_INFO_ARM; } -unsafe impl ExtendsCommandBufferSubmitInfo for RenderPassStripeSubmitInfoARM<'_> {} +unsafe impl<'root, 'child> Extends<CommandBufferSubmitInfo<'root>> + for RenderPassStripeSubmitInfoARM<'child> +{ +} impl<'a> RenderPassStripeSubmitInfoARM<'a> { #[inline] pub fn stripe_semaphore_infos( @@ -62976,11 +64241,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderMaximalReconvergenceFeat const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR<'_> {} impl<'a> PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR<'a> { #[inline] pub fn shader_maximal_reconvergence(mut self, shader_maximal_reconvergence: bool) -> Self { @@ -63018,8 +64286,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderSubgroupRotateFeaturesKH const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderSubgroupRotateFeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderSubgroupRotateFeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderSubgroupRotateFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderSubgroupRotateFeaturesKHR<'child> +{ +} impl<'a> PhysicalDeviceShaderSubgroupRotateFeaturesKHR<'a> { #[inline] pub fn shader_subgroup_rotate(mut self, shader_subgroup_rotate: bool) -> Self { @@ -63063,8 +64337,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderExpectAssumeFeaturesKHR< const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderExpectAssumeFeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderExpectAssumeFeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderExpectAssumeFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderExpectAssumeFeaturesKHR<'child> +{ +} impl<'a> PhysicalDeviceShaderExpectAssumeFeaturesKHR<'a> { #[inline] pub fn shader_expect_assume(mut self, shader_expect_assume: bool) -> Self { @@ -63100,8 +64380,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderFloatControls2FeaturesKH const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderFloatControls2FeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderFloatControls2FeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderFloatControls2FeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderFloatControls2FeaturesKHR<'child> +{ +} impl<'a> PhysicalDeviceShaderFloatControls2FeaturesKHR<'a> { #[inline] pub fn shader_float_controls2(mut self, shader_float_controls2: bool) -> Self { @@ -63137,11 +64423,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceDynamicRenderingLocalReadFeatu const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR<'_> {} impl<'a> PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR<'a> { #[inline] pub fn dynamic_rendering_local_read(mut self, dynamic_rendering_local_read: bool) -> Self { @@ -63178,8 +64467,14 @@ impl ::core::default::Default for RenderingAttachmentLocationInfoKHR<'_> { unsafe impl<'a> TaggedStructure for RenderingAttachmentLocationInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RENDERING_ATTACHMENT_LOCATION_INFO_KHR; } -unsafe impl ExtendsGraphicsPipelineCreateInfo for RenderingAttachmentLocationInfoKHR<'_> {} -unsafe impl ExtendsCommandBufferInheritanceInfo for RenderingAttachmentLocationInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<GraphicsPipelineCreateInfo<'root>> + for RenderingAttachmentLocationInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<CommandBufferInheritanceInfo<'root>> + for RenderingAttachmentLocationInfoKHR<'child> +{ +} impl<'a> RenderingAttachmentLocationInfoKHR<'a> { #[inline] pub fn color_attachment_locations(mut self, color_attachment_locations: &'a [u32]) -> Self { @@ -63221,8 +64516,14 @@ impl ::core::default::Default for RenderingInputAttachmentIndexInfoKHR<'_> { unsafe impl<'a> TaggedStructure for RenderingInputAttachmentIndexInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR; } -unsafe impl ExtendsGraphicsPipelineCreateInfo for RenderingInputAttachmentIndexInfoKHR<'_> {} -unsafe impl ExtendsCommandBufferInheritanceInfo for RenderingInputAttachmentIndexInfoKHR<'_> {} +unsafe impl<'root, 'child> Extends<GraphicsPipelineCreateInfo<'root>> + for RenderingInputAttachmentIndexInfoKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<CommandBufferInheritanceInfo<'root>> + for RenderingInputAttachmentIndexInfoKHR<'child> +{ +} impl<'a> RenderingInputAttachmentIndexInfoKHR<'a> { #[inline] pub fn color_attachment_input_indices( @@ -63275,8 +64576,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderQuadControlFeaturesKHR<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderQuadControlFeaturesKHR<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderQuadControlFeaturesKHR<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderQuadControlFeaturesKHR<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderQuadControlFeaturesKHR<'child> +{ +} impl<'a> PhysicalDeviceShaderQuadControlFeaturesKHR<'a> { #[inline] pub fn shader_quad_control(mut self, shader_quad_control: bool) -> Self { @@ -63312,11 +64619,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderAtomicFloat16VectorFeatu const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV<'_> {} impl<'a> PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV<'a> { #[inline] pub fn shader_float16_vector_atomics(mut self, shader_float16_vector_atomics: bool) -> Self { @@ -63356,8 +64666,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceMapMemoryPlacedFeaturesEXT<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMapMemoryPlacedFeaturesEXT<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMapMemoryPlacedFeaturesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceMapMemoryPlacedFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceMapMemoryPlacedFeaturesEXT<'child> +{ +} impl<'a> PhysicalDeviceMapMemoryPlacedFeaturesEXT<'a> { #[inline] pub fn memory_map_placed(mut self, memory_map_placed: bool) -> Self { @@ -63403,7 +64719,10 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceMapMemoryPlacedPropertiesEXT<' const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT; } -unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMapMemoryPlacedPropertiesEXT<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceMapMemoryPlacedPropertiesEXT<'child> +{ +} impl<'a> PhysicalDeviceMapMemoryPlacedPropertiesEXT<'a> { #[inline] pub fn min_placed_memory_map_alignment( @@ -63441,7 +64760,7 @@ impl ::core::default::Default for MemoryMapPlacedInfoEXT<'_> { unsafe impl<'a> TaggedStructure for MemoryMapPlacedInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::MEMORY_MAP_PLACED_INFO_EXT; } -unsafe impl ExtendsMemoryMapInfoKHR for MemoryMapPlacedInfoEXT<'_> {} +unsafe impl<'root, 'child> Extends<MemoryMapInfoKHR<'root>> for MemoryMapPlacedInfoEXT<'child> {} impl<'a> MemoryMapPlacedInfoEXT<'a> { #[inline] pub fn placed_address(mut self, placed_address: *mut c_void) -> Self { @@ -63477,8 +64796,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceRawAccessChainsFeaturesNV<'a> const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRawAccessChainsFeaturesNV<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRawAccessChainsFeaturesNV<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceRawAccessChainsFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceRawAccessChainsFeaturesNV<'child> +{ +} impl<'a> PhysicalDeviceRawAccessChainsFeaturesNV<'a> { #[inline] pub fn shader_raw_access_chains(mut self, shader_raw_access_chains: bool) -> Self { @@ -63514,11 +64839,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceCommandBufferInheritanceFeatur const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceCommandBufferInheritanceFeaturesNV<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceCommandBufferInheritanceFeaturesNV<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceCommandBufferInheritanceFeaturesNV<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCommandBufferInheritanceFeaturesNV<'_> {} impl<'a> PhysicalDeviceCommandBufferInheritanceFeaturesNV<'a> { #[inline] pub fn command_buffer_inheritance(mut self, command_buffer_inheritance: bool) -> Self { @@ -63554,8 +64882,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceImageAlignmentControlFeaturesM const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA; } -unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceImageAlignmentControlFeaturesMESA<'_> {} -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceImageAlignmentControlFeaturesMESA<'_> {} +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceImageAlignmentControlFeaturesMESA<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceImageAlignmentControlFeaturesMESA<'child> +{ +} impl<'a> PhysicalDeviceImageAlignmentControlFeaturesMESA<'a> { #[inline] pub fn image_alignment_control(mut self, image_alignment_control: bool) -> Self { @@ -63591,8 +64925,8 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceImageAlignmentControlPropertie const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA; } -unsafe impl ExtendsPhysicalDeviceProperties2 - for PhysicalDeviceImageAlignmentControlPropertiesMESA<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceProperties2<'root>> + for PhysicalDeviceImageAlignmentControlPropertiesMESA<'child> { } impl<'a> PhysicalDeviceImageAlignmentControlPropertiesMESA<'a> { @@ -63629,7 +64963,10 @@ impl ::core::default::Default for ImageAlignmentControlCreateInfoMESA<'_> { unsafe impl<'a> TaggedStructure for ImageAlignmentControlCreateInfoMESA<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA; } -unsafe impl ExtendsImageCreateInfo for ImageAlignmentControlCreateInfoMESA<'_> {} +unsafe impl<'root, 'child> Extends<ImageCreateInfo<'root>> + for ImageAlignmentControlCreateInfoMESA<'child> +{ +} impl<'a> ImageAlignmentControlCreateInfoMESA<'a> { #[inline] pub fn maximum_requested_alignment(mut self, maximum_requested_alignment: u32) -> Self { @@ -63665,11 +65002,14 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceShaderReplicatedCompositesFeat const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT; } -unsafe impl ExtendsPhysicalDeviceFeatures2 - for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT<'_> +unsafe impl<'root, 'child> Extends<PhysicalDeviceFeatures2<'root>> + for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT<'child> +{ +} +unsafe impl<'root, 'child> Extends<DeviceCreateInfo<'root>> + for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT<'child> { } -unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT<'_> {} impl<'a> PhysicalDeviceShaderReplicatedCompositesFeaturesEXT<'a> { #[inline] pub fn shader_replicated_composites(mut self, shader_replicated_composites: bool) -> Self { diff --git a/ash/tests/fail/long_lived_root_struct_borrow.rs b/ash/tests/fail/long_lived_root_struct_borrow.rs new file mode 100644 index 00000000..958cdf75 --- /dev/null +++ b/ash/tests/fail/long_lived_root_struct_borrow.rs @@ -0,0 +1,14 @@ +use ash::vk; + +fn main() { + let mut layers = vec![]; + let mut api = + vk::PhysicalDeviceLayeredApiPropertiesListKHR::default().layered_apis(&mut layers); + let pdev_props = vk::PhysicalDeviceProperties2::default().push(&mut api); + + // Access to either variable is disallowed because both are mutably borrowed in pdev_props + dbg!(&api); + dbg!(&layers); + + dbg!(pdev_props); // Holds a borrow on api and layers +} diff --git a/ash/tests/fail/long_lived_root_struct_borrow.stderr b/ash/tests/fail/long_lived_root_struct_borrow.stderr new file mode 100644 index 00000000..19c89afa --- /dev/null +++ b/ash/tests/fail/long_lived_root_struct_borrow.stderr @@ -0,0 +1,23 @@ +error[E0502]: cannot borrow `api` as immutable because it is also borrowed as mutable + --> tests/fail/long_lived_root_struct_borrow.rs:10:10 + | +7 | let pdev_props = vk::PhysicalDeviceProperties2::default().push(&mut api); + | -------- mutable borrow occurs here +... +10 | dbg!(&api); + | ^^^^ immutable borrow occurs here +... +13 | dbg!(pdev_props); // Holds a borrow on api and layers + | ---------- mutable borrow later used here + +error[E0502]: cannot borrow `layers` as immutable because it is also borrowed as mutable + --> tests/fail/long_lived_root_struct_borrow.rs:11:10 + | +6 | vk::PhysicalDeviceLayeredApiPropertiesListKHR::default().layered_apis(&mut layers); + | ----------- mutable borrow occurs here +... +11 | dbg!(&layers); + | ^^^^^^^ immutable borrow occurs here +12 | +13 | dbg!(pdev_props); // Holds a borrow on api and layers + | ---------- mutable borrow later used here diff --git a/generator/src/lib.rs b/generator/src/lib.rs index b73692d0..ce545934 100644 --- a/generator/src/lib.rs +++ b/generator/src/lib.rs @@ -2312,8 +2312,6 @@ fn derive_getters_and_setters( }) }); - let extends_name = format_ident!("Extends{}", name); - // The `p_next` field should only be considered if this struct is also a root struct let root_struct_next_field = next_field.filter(|_| root_structs.contains(&name)); @@ -2331,7 +2329,7 @@ fn derive_getters_and_setters( /// # Panics /// If `next` contains a pointer chain of its own, this function will panic. Call /// `unsafe` [`Self::extend()`] to insert this chain instead. - pub fn push<T: #extends_name + ?Sized>(mut self, next: &'a mut T) -> Self { + pub fn push<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { // SAFETY: All implementors of T are required to have the `BaseOutStructure` layout let next_base = unsafe { &mut *<*mut T>::cast::<BaseOutStructure<'a>>(next) }; // `next` here can contain a pointer chain. This function refuses to insert the struct, @@ -2356,7 +2354,7 @@ fn derive_getters_and_setters( /// The last struct in this chain (i.e. the one where `p_next` is `NULL`) must /// be writable memory, as its `p_next` field will be updated with the value of /// `self.p_next`. - pub unsafe fn extend<T: #extends_name + ?Sized>(mut self, next: &'a mut T) -> Self { + pub unsafe fn extend<T: Extends<Self> + ?Sized>(mut self, next: &'a mut T) -> Self { // `next` here can contain a pointer chain. This means that we must correctly // attach he head to the root and the tail to the rest of the chain // For example: @@ -2374,7 +2372,7 @@ fn derive_getters_and_setters( #[doc(hidden)] #[deprecated = "Migrate to `push()` if `next` does not have an existing chain (i.e. `p_next` is `NULL`), `extend()` otherwise"] - pub unsafe fn push_next<T: #extends_name + ?Sized>(self, next: &'a mut T) -> Self { + pub unsafe fn push_next<T: Extends<Self> + ?Sized>(self, next: &'a mut T) -> Self { self.extend(next) } } @@ -2382,14 +2380,6 @@ fn derive_getters_and_setters( quote!() }; - // Root structs come with their own trait that structs that extend - // this struct will implement - let next_trait = if root_struct_next_field.is_some() { - quote!(pub unsafe trait #extends_name {}) - } else { - quote!() - }; - let lifetime = has_lifetimes.contains(&name).then(|| quote!(<'a>)); // If the struct extends something we need to implement the traits. @@ -2397,10 +2387,10 @@ fn derive_getters_and_setters( .extends .iter() .flat_map(|extends| extends.split(',')) - .map(|extends| format_ident!("Extends{}", name_to_tokens(extends))) .map(|extends| { + let base = name_to_tokens(extends); // Extension structs always have a pNext, and therefore always have a lifetime. - quote!(unsafe impl #extends for #name<'_> {}) + quote!(unsafe impl<'root, 'child> Extends<#base<'root>> for #name<'child> {}) }); let impl_structure_type_trait = structure_type_field.map(|member| { @@ -2423,7 +2413,6 @@ fn derive_getters_and_setters( let q = quote! { #impl_structure_type_trait #(#impl_extend_trait)* - #next_trait impl #lifetime #name #lifetime { #(#setters)* @@ -3432,7 +3421,7 @@ pub fn write_source_code<P: AsRef<Path>>(vk_headers_dir: &Path, src_dir: P) { use super::platform_types::*; use super::{ ptr_chain_iter, wrap_c_str_slice_until_nul, write_c_str_slice_with_nul, - CStrTooLargeForStaticArray, Handle, Packed24_8, TaggedStructure, + CStrTooLargeForStaticArray, Extends, Handle, Packed24_8, TaggedStructure, }; use core::ffi::*; use core::fmt;